PNG  IHDR* pHYs+ IDATx]n#; cdLb Ǚ[at¤_:uP}>!Usă cag޿ ֵNu`ݼTâabO7uL&y^wFٝA"l[|ŲHLN밪4*sG3|Dv}?+y߉{OuOAt4Jj.u]Gz*҉sP'VQKbA1u\`& Af;HWj hsO;ogTu uj7S3/QzUr&wS`M$X_L7r2;aE+ώ%vikDA:dR+%KzƉo>eOth$z%: :{WwaQ:wz%4foɹE[9<]#ERINƻv溂E%P1i01 |Jvҗ&{b?9g=^wζXn/lK::90KwrюO\!ջ3uzuGv^;騢wq<Iatv09:tt~hEG`v;3@MNZD.1]L:{ծI3`L(÷ba")Y.iljCɄae#I"1 `3*Bdz>j<fU40⨬%O$3cGt]j%Fߠ_twJ;ABU8vP3uEԑwQ V:h%))LfraqX-ۿX]v-\9I gl8tzX ]ecm)-cgʒ#Uw=Wlێn(0hPP/ӨtQ“&J35 $=]r1{tLuǮ*i0_;NƝ8;-vݏr8+U-kruȕYr0RnC]*ެ(M:]gE;{]tg(#ZJ9y>utRDRMdr9㪩̞zֹb<ģ&wzJM"iI( .ꮅX)Qw:9,i좜\Ԛi7&N0:asϓc];=ΗOӣ APqz93 y $)A*kVHZwBƺnWNaby>XMN*45~ղM6Nvm;A=jֲ.~1}(9`KJ/V F9[=`~[;sRuk]rєT!)iQO)Y$V ی ۤmzWz5IM Zb )ˆC`6 rRa}qNmUfDsWuˤV{ Pݝ'=Kֳbg,UҘVz2ﴻnjNgBb{? ߮tcsͻQuxVCIY۠:(V뺕 ٥2;t`@Fo{Z9`;]wMzU~%UA蛚dI vGq\r82iu +St`cR.6U/M9IENDB`apiKey = defined('BREVO_API_KEY') ? BREVO_API_KEY : ''; $this->adminEmail = defined('CONTACT_EMAIL') ? CONTACT_EMAIL : 'servis@ankaservis.com'; } /** * Send professional service request notification */ public function sendServiceNotification($formData) { try { // Takip numarası oluştur $trackingNumber = 'ST' . str_pad(rand(100000, 999999), 6, '0', STR_PAD_LEFT); $formData['tracking_number'] = $trackingNumber; // Müşteriye onay e-postası gönder (e-posta varsa) if (!empty($formData['email'])) { $this->sendCustomerServiceConfirmation($formData); } $subject = $this->generateEmailSubject($formData); $htmlContent = $this->generateProfessionalEmailTemplate($formData); // Alıcı listesini config'den al $toEmails = []; if (defined('FORM_NOTIFICATION_EMAILS') && is_array(FORM_NOTIFICATION_EMAILS)) { foreach (FORM_NOTIFICATION_EMAILS as $email) { $toEmails[] = [ 'email' => $email, 'name' => 'Servis Bildirimi' ]; } } else { // Fallback $toEmails[] = [ 'email' => $this->adminEmail, 'name' => 'Admin' ]; } $emailData = [ 'sender' => [ 'email' => defined('NOREPLY_EMAIL') ? NOREPLY_EMAIL : 'noreply@ankaservis.com', 'name' => defined('COMPANY_NAME') ? COMPANY_NAME : 'Anka Servis' ], 'to' => $toEmails, 'subject' => $subject, 'htmlContent' => $htmlContent, 'textContent' => strip_tags($htmlContent) ]; $result = $this->sendTransactionalEmail($emailData); return $result; } catch (Exception $e) { if (defined('DEBUG_MODE') && DEBUG_MODE) { error_log('BrevoService Error: ' . $e->getMessage()); } return false; } } /** * Generate professional email subject */ private function generateEmailSubject($formData) { date_default_timezone_set('Europe/Istanbul'); $deviceType = $formData['device_type'] ?? 'Genel'; $city = $formData['city'] ?? ''; $priority = '🚨 DİKKAT'; $cityText = $city ? " - {$city}" : ''; return "{$priority} ACİL SERVİS TALEBİ: {$deviceType}{$cityText} | " . date('d.m.Y H:i'); } /** * Generate professional HTML email template */ private function generateProfessionalEmailTemplate($formData) { date_default_timezone_set('Europe/Istanbul'); $deviceType = $formData['device_type'] ?? 'Genel'; $urgentBadge = $this->getUrgencyBadge(); $html = '

🚨 YENİ SERVİS TALEBİ

' . htmlspecialchars($deviceType) . ' • ' . date('d.m.Y H:i') . '

📞 Hemen Arayın

' . htmlspecialchars($formData['phone'] ?? '') . '

🔍 Takip Numarası

' . htmlspecialchars($formData['tracking_number'] ?? 'ST000000') . '

Bu numarayı saklayın, takip için kullanabilirsiniz

' . $this->generateCallTimeAlert($formData) . '

👤 Müşteri Bilgileri

Ad Soyad: ' . htmlspecialchars($formData['name'] ?? '') . '
Telefon: ' . htmlspecialchars($formData['phone'] ?? '') . '
E-posta: ' . htmlspecialchars($formData['email'] ?? 'Belirtilmemiş') . '

📍 Konum Bilgileri

Adres: ' . htmlspecialchars($formData['address'] ?? 'Adres belirtilmemiş') . '

🔧 Cihaz Bilgileri

' . (!empty($formData['device_brand']) ? '' : '') . ' ' . (!empty($formData['device_model']) ? '' : '') . '
Cihaz Tipi: ' . htmlspecialchars($formData['device_type'] ?? 'Belirtilmemiş') . '
Marka: ' . htmlspecialchars($formData['device_brand']) . '
Model: ' . htmlspecialchars($formData['device_model']) . '
' . (!empty($formData['problem_description']) ? '

📝 Arıza Detayı

' . nl2br(htmlspecialchars($formData['problem_description'])) . '
' : '') . '

Bu email otomatik olarak ' . (defined('COMPANY_NAME') ? COMPANY_NAME : 'Anka Servis') . ' sistemi tarafından gönderilmiştir.

© ' . date('Y') . ' ' . (defined('COMPANY_NAME') ? COMPANY_NAME : 'Anka Servis') . '

'; return $html; } /** * Send contact form notification */ public function sendContactFormNotification($formData) { try { date_default_timezone_set('Europe/Istanbul'); $subject = '📧 Yeni İletişim Formu Mesajı - ' . date('d.m.Y H:i'); $htmlContent = $this->generateContactFormEmailTemplate($formData); $toEmails = []; if (defined('FORM_NOTIFICATION_EMAILS') && is_array(FORM_NOTIFICATION_EMAILS)) { foreach (FORM_NOTIFICATION_EMAILS as $email) { $toEmails[] = [ 'email' => $email, 'name' => 'İletişim Bildirimi' ]; } } else { $toEmails[] = [ 'email' => $this->adminEmail, 'name' => 'Admin' ]; } $emailData = [ 'sender' => [ 'email' => defined('NOREPLY_EMAIL') ? NOREPLY_EMAIL : 'noreply@ankaservis.com', 'name' => defined('COMPANY_NAME') ? COMPANY_NAME : 'Anka Servis' ], 'to' => $toEmails, 'subject' => $subject, 'htmlContent' => $htmlContent, 'textContent' => strip_tags($htmlContent) ]; return $this->sendTransactionalEmail($emailData); } catch (Exception $e) { if (defined('DEBUG_MODE') && DEBUG_MODE) { error_log('BrevoService Contact Form Error: ' . $e->getMessage()); } return false; } } /** * Generate contact form email template */ private function generateContactFormEmailTemplate($formData) { $html = '

📧 YENİ İLETİŞİM MESAJI

' . date('d.m.Y H:i') . '

👤 Gönderen Bilgileri

' . (!empty($formData['subject']) ? '' : '') . '
Ad Soyad: ' . htmlspecialchars($formData['name'] ?? '') . '
E-posta: ' . htmlspecialchars($formData['email'] ?? '') . '
Telefon: ' . htmlspecialchars($formData['phone'] ?? '') . '
Konu: ' . htmlspecialchars($formData['subject']) . '

📝 Mesaj

' . nl2br(htmlspecialchars($formData['message'] ?? '')) . '

Bu email otomatik olarak ' . (defined('COMPANY_NAME') ? COMPANY_NAME : 'Anka Servis') . ' sistemi tarafından gönderilmiştir.

'; return $html; } /** * Send price quote request notification */ public function sendPriceQuoteNotification($formData) { try { date_default_timezone_set('Europe/Istanbul'); $subject = '💰 Yeni Fiyat Teklifi Talebi - ' . date('d.m.Y H:i'); $htmlContent = $this->generatePriceQuoteEmailTemplate($formData); $toEmails = []; if (defined('FORM_NOTIFICATION_EMAILS') && is_array(FORM_NOTIFICATION_EMAILS)) { foreach (FORM_NOTIFICATION_EMAILS as $email) { $toEmails[] = [ 'email' => $email, 'name' => 'Fiyat Teklifi Bildirimi' ]; } } else { $toEmails[] = [ 'email' => $this->adminEmail, 'name' => 'Admin' ]; } $emailData = [ 'sender' => [ 'email' => defined('NOREPLY_EMAIL') ? NOREPLY_EMAIL : 'noreply@ankaservis.com', 'name' => defined('COMPANY_NAME') ? COMPANY_NAME : 'Anka Servis' ], 'to' => $toEmails, 'subject' => $subject, 'htmlContent' => $htmlContent, 'textContent' => strip_tags($htmlContent) ]; return $this->sendTransactionalEmail($emailData); } catch (Exception $e) { if (defined('DEBUG_MODE') && DEBUG_MODE) { error_log('BrevoService Price Quote Error: ' . $e->getMessage()); } return false; } } /** * Generate price quote email template */ private function generatePriceQuoteEmailTemplate($formData) { $html = '

💰 YENİ FİYAT TEKLİFİ TALEBİ

' . date('d.m.Y H:i') . '

👤 Müşteri Bilgileri

Ad Soyad: ' . htmlspecialchars($formData['name'] ?? '') . '
E-posta: ' . htmlspecialchars($formData['email'] ?? '') . '
Telefon: ' . htmlspecialchars($formData['phone'] ?? '') . '

🔧 Cihaz Bilgileri

' . (!empty($formData['device_brand']) ? '' : '') . ' ' . (!empty($formData['device_model']) ? '' : '') . '
Cihaz Tipi: ' . htmlspecialchars($formData['device_type'] ?? 'Belirtilmemiş') . '
Marka: ' . htmlspecialchars($formData['device_brand']) . '
Model: ' . htmlspecialchars($formData['device_model']) . '
' . (!empty($formData['problem_description']) ? '

📝 Arıza Açıklaması

' . nl2br(htmlspecialchars($formData['problem_description'])) . '
' : '') . '

Bu email otomatik olarak ' . (defined('COMPANY_NAME') ? COMPANY_NAME : 'Anka Servis') . ' sistemi tarafından gönderilmiştir.

'; return $html; } /** * Send transactional email via Brevo API */ private function sendTransactionalEmail($emailData) { try { if (empty($this->apiKey)) { return false; } $ch = curl_init(); if (!$ch) { return false; } curl_setopt_array($ch, [ CURLOPT_URL => $this->apiUrl . 'smtp/email', CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => json_encode($emailData), CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'api-key: ' . $this->apiKey, 'Accept: application/json' ], CURLOPT_TIMEOUT => 30, CURLOPT_SSL_VERIFYPEER => true ]); $response = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); $error = curl_error($ch); curl_close($ch); if ($error) { if (defined('DEBUG_MODE') && DEBUG_MODE) { error_log('BrevoService cURL Error: ' . $error); } return false; } if ($httpCode >= 200 && $httpCode < 300) { $decodedResponse = json_decode($response, true); return $decodedResponse ?: ['success' => true]; } else { if (defined('DEBUG_MODE') && DEBUG_MODE) { error_log('BrevoService HTTP Error: ' . $httpCode . ' - ' . $response); } return false; } } catch (Exception $e) { if (defined('DEBUG_MODE') && DEBUG_MODE) { error_log('BrevoService Exception: ' . $e->getMessage()); } return false; } } /** * Generate call time alert for staff */ private function generateCallTimeAlert($formData) { date_default_timezone_set('Europe/Istanbul'); $currentHour = (int)date('H'); $currentMinute = (int)date('i'); $currentTime = $currentHour + ($currentMinute / 60); $brandPhone = defined('CONTACT_PHONE') ? CONTACT_PHONE : '0312 466 0 667'; // Mesai saatleri: 08:30 - 20:00 $workStart = 8.5; // 08:30 $workEnd = 20.0; // 20:00 if ($currentTime >= $workStart && $currentTime < $workEnd) { // Mesai saatleri içinde $timeDisplay = date('H:i') . ' - ' . date('H:i', strtotime('+30 minutes')); $alertText = '⏰ DİKKAT: Müşteriyi ' . $timeDisplay . ' saatleri arasında MUTLAKA arayın!'; $subText = 'Mesai saatleri içinde - 30 dakika içinde arama yapılmalı'; $alertColor = '#28a745'; } else { // Mesai saatleri dışında if ($currentTime >= $workEnd) { $nextWorkDay = date('Y-m-d', strtotime('+1 day')) . ' 08:30:00'; } else { $nextWorkDay = date('Y-m-d') . ' 08:30:00'; } $timeDisplay = date('d.m.Y H:i', strtotime($nextWorkDay)); $alertText = '🕐 DİKKAT: Müşteriyi ' . $timeDisplay . ' saatinde MUTLAKA arayın!'; $subText = 'Mesai dışı talep - İlk mesai saatinde arama yapılmalı'; $alertColor = '#ffc107'; } return '

' . $alertText . '

' . $subText . '

👨‍💼 Sorumlu: Çağrı Merkezi Personeli

📱 ' . $brandPhone . '

⚠️ Müşteriyi bu numaradan aramayı unutmayın!

'; } /** * Get urgency badge */ private function getUrgencyBadge() { $hour = (int)date('H'); if ($hour >= 8 && $hour <= 20) { return '🔥 URGENT - WORKING HOURS'; } else { return '🌙 AFTER HOURS REQUEST'; } } /** * Müşteriye servis talebi onay e-postası gönder */ public function sendCustomerServiceConfirmation($formData) { try { if (empty($formData['email'])) { return false; } date_default_timezone_set('Europe/Istanbul'); $trackingNumber = $formData['tracking_number'] ?? 'ST000000'; $subject = '✅ Servis Talebiniz Alındı - Takip No: ' . $trackingNumber; $htmlContent = $this->generateCustomerServiceConfirmationTemplate($formData); $emailData = [ 'sender' => [ 'email' => defined('CONTACT_EMAIL') ? CONTACT_EMAIL : 'servis@ankaservis.com', 'name' => defined('COMPANY_NAME') ? COMPANY_NAME : 'Anka Servis' ], 'to' => [[ 'email' => $formData['email'], 'name' => $formData['name'] ?? 'Müşteri' ]], 'subject' => $subject, 'htmlContent' => $htmlContent, 'textContent' => strip_tags($htmlContent) ]; return $this->sendTransactionalEmail($emailData); } catch (Exception $e) { if (defined('DEBUG_MODE') && DEBUG_MODE) { error_log('BrevoService Customer Confirmation Error: ' . $e->getMessage()); } return false; } } /** * Müşteriye iletişim formu onay e-postası gönder */ public function sendCustomerContactConfirmation($formData) { try { if (empty($formData['email'])) { return false; } date_default_timezone_set('Europe/Istanbul'); $subject = '✅ Mesajınız Alındı - ' . (defined('COMPANY_NAME') ? COMPANY_NAME : 'Anka Servis'); $htmlContent = $this->generateCustomerContactConfirmationTemplate($formData); $emailData = [ 'sender' => [ 'email' => defined('CONTACT_EMAIL') ? CONTACT_EMAIL : 'servis@ankaservis.com', 'name' => defined('COMPANY_NAME') ? COMPANY_NAME : 'Anka Servis' ], 'to' => [[ 'email' => $formData['email'], 'name' => $formData['name'] ?? 'Müşteri' ]], 'subject' => $subject, 'htmlContent' => $htmlContent, 'textContent' => strip_tags($htmlContent) ]; return $this->sendTransactionalEmail($emailData); } catch (Exception $e) { if (defined('DEBUG_MODE') && DEBUG_MODE) { error_log('BrevoService Customer Contact Confirmation Error: ' . $e->getMessage()); } return false; } } /** * Müşteriye fiyat teklifi onay e-postası gönder */ public function sendCustomerPriceQuoteConfirmation($formData) { try { if (empty($formData['email'])) { return false; } date_default_timezone_set('Europe/Istanbul'); $subject = '✅ Fiyat Teklifi Talebiniz Alındı - ' . (defined('COMPANY_NAME') ? COMPANY_NAME : 'Anka Servis'); $htmlContent = $this->generateCustomerPriceQuoteConfirmationTemplate($formData); $emailData = [ 'sender' => [ 'email' => defined('CONTACT_EMAIL') ? CONTACT_EMAIL : 'servis@ankaservis.com', 'name' => defined('COMPANY_NAME') ? COMPANY_NAME : 'Anka Servis' ], 'to' => [[ 'email' => $formData['email'], 'name' => $formData['name'] ?? 'Müşteri' ]], 'subject' => $subject, 'htmlContent' => $htmlContent, 'textContent' => strip_tags($htmlContent) ]; return $this->sendTransactionalEmail($emailData); } catch (Exception $e) { if (defined('DEBUG_MODE') && DEBUG_MODE) { error_log('BrevoService Customer Price Quote Confirmation Error: ' . $e->getMessage()); } return false; } } /** * Müşteri servis onay e-posta şablonu */ private function generateCustomerServiceConfirmationTemplate($formData) { $trackingNumber = $formData['tracking_number'] ?? 'ST000000'; $contactPhone = defined('CONTACT_PHONE') ? CONTACT_PHONE : '0312 466 0 667'; $companyName = defined('COMPANY_NAME') ? COMPANY_NAME : 'Anka Servis'; $html = '

✅ Talebiniz Alındı!

En kısa sürede size dönüş yapacağız

Sayın ' . htmlspecialchars($formData['name'] ?? '') . ',

Servis talebiniz başarıyla alınmıştır. Ekibimiz en kısa sürede sizinle iletişime geçecektir.

🔍 Takip Numarası

' . htmlspecialchars($trackingNumber) . '

Bu numarayı saklayın, takip için kullanabilirsiniz

📋 Talep Detayları

' . (!empty($formData['device_brand']) ? '' : '') . ' ' . (!empty($formData['device_model']) ? '' : '') . '
Cihaz Tipi: ' . htmlspecialchars($formData['device_type'] ?? 'Belirtilmemiş') . '
Marka: ' . htmlspecialchars($formData['device_brand']) . '
Model: ' . htmlspecialchars($formData['device_model']) . '

📞 Acil Durumda Bize Ulaşın

' . htmlspecialchars($contactPhone) . '

Not: Bu e-posta otomatik olarak gönderilmiştir. Lütfen bu e-postaya yanıt vermeyin. Sorularınız için yukarıdaki telefon numarasını kullanabilirsiniz.

' . htmlspecialchars($companyName) . '

© ' . date('Y') . ' Tüm hakları saklıdır.

'; return $html; } /** * Müşteri iletişim formu onay e-posta şablonu */ private function generateCustomerContactConfirmationTemplate($formData) { $contactPhone = defined('CONTACT_PHONE') ? CONTACT_PHONE : '0312 466 0 667'; $companyName = defined('COMPANY_NAME') ? COMPANY_NAME : 'Anka Servis'; $html = '

✅ Mesajınız Alındı!

En kısa sürede size dönüş yapacağız

Sayın ' . htmlspecialchars($formData['name'] ?? '') . ',

İletişim formunuzdan gönderdiğiniz mesaj başarıyla alınmıştır. Ekibimiz en kısa sürede size dönüş yapacaktır.

📞 Acil Durumda Bize Ulaşın

' . htmlspecialchars($contactPhone) . '

Not: Bu e-posta otomatik olarak gönderilmiştir. Lütfen bu e-postaya yanıt vermeyin. Sorularınız için yukarıdaki telefon numarasını kullanabilirsiniz.

' . htmlspecialchars($companyName) . '

© ' . date('Y') . ' Tüm hakları saklıdır.

'; return $html; } /** * Müşteri fiyat teklifi onay e-posta şablonu */ private function generateCustomerPriceQuoteConfirmationTemplate($formData) { $contactPhone = defined('CONTACT_PHONE') ? CONTACT_PHONE : '0312 466 0 667'; $companyName = defined('COMPANY_NAME') ? COMPANY_NAME : 'Anka Servis'; $html = '

✅ Fiyat Teklifi Talebiniz Alındı!

En kısa sürede size dönüş yapacağız

Sayın ' . htmlspecialchars($formData['name'] ?? '') . ',

Fiyat teklifi talebiniz başarıyla alınmıştır. Ekibimiz en kısa sürede size özel fiyat teklifi hazırlayacak ve sizinle iletişime geçecektir.

📋 Talep Detayları

' . (!empty($formData['device_brand']) ? '' : '') . ' ' . (!empty($formData['device_model']) ? '' : '') . '
Cihaz Tipi: ' . htmlspecialchars($formData['device_type'] ?? 'Belirtilmemiş') . '
Marka: ' . htmlspecialchars($formData['device_brand']) . '
Model: ' . htmlspecialchars($formData['device_model']) . '

📞 Acil Durumda Bize Ulaşın

' . htmlspecialchars($contactPhone) . '

Not: Bu e-posta otomatik olarak gönderilmiştir. Lütfen bu e-postaya yanıt vermeyin. Sorularınız için yukarıdaki telefon numarasını kullanabilirsiniz.

' . htmlspecialchars($companyName) . '

© ' . date('Y') . ' Tüm hakları saklıdır.

'; return $html; } }