<?php

namespace App\Http\Controllers\Site;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Models\Admin\Page;
use App\Models\Admin\Banner;
use Illuminate\Support\Facades\Mail;

class HomeController extends Controller
{
    public function index()
    {
        $pageWithContent = function ($id) {
            return Page::with([
                'images' => fn ($query) => $query->orderBy('ordernum'),
                'children' => fn ($query) => $query->orderBy('ordernum'),
                'children.images' => fn ($query) => $query->orderBy('ordernum'),
            ])->where('id', $id)->first();
        };

        $data['banner'] = Banner::first();
        $data['bugunuduzenleyenakil'] = $pageWithContent(1);
        $data['kurucumesaji'] = $pageWithContent(2);
        $data['markalarimiz'] = $pageWithContent(3);
        $data['ekibimiz'] = $pageWithContent(9);
        $data['ekol'] = $pageWithContent(14);
        $data['katilin'] = $pageWithContent(15);
        $data['kurumsalgundem'] = $pageWithContent(16);
        $data['iletisim'] = $pageWithContent(22);
        
        return view('site.home.index')->with($data);
    }

    public function contact_form_send(Request $request)
    {
        $request->validate(
            [
                'name' => 'required|string|max:255',
                'email' => 'required|email',
                'phone' => 'required|string|max:50',
                'subject' => 'required|string|max:255',
                'message' => 'nullable|string|max:5000',
            ],
            [
                'name.required' => 'Lütfen adınızı giriniz.',
                'name.string' => 'Adınız geçerli bir metin olmalıdır.',
                'name.max' => 'Adınız en fazla 255 karakter olabilir.',

                'email.required' => 'Lütfen e-posta adresinizi giriniz.',
                'email.email' => 'Lütfen geçerli bir e-posta adresi giriniz.',

                'phone.required' => 'Lütfen telefon numaranızı giriniz.',
                'phone.string' => 'Telefon numaranız geçerli bir metin olmalıdır.',
                'phone.max' => 'Telefon numaranız en fazla 50 karakter olabilir.',

                'subject.required' => 'Lütfen konu başlığını giriniz.',
                'subject.string' => 'Konu geçerli bir metin olmalıdır.',
                'subject.max' => 'Konu en fazla 255 karakter olabilir.',
                'message.string' => 'Mesaj geçerli bir metin olmalıdır.',
                'message.max' => 'Mesaj en fazla 5000 karakter olabilir.',
            ],
        );

        $contact_form_email = 'furkan@tigonproject.com';
        $messageText = nl2br(e($request->message));

        Mail::send([], [], function ($message) use ($request, $contact_form_email, $messageText) {
            $html = "
                <div style='font-family:Arial, sans-serif; font-size:15px; color:#333;'>
                    <h2 style='margin-bottom:15px;'>Yeni İletişim Formu Mesajı</h2>

                    <p><strong>Ad Soyad:</strong> " . e($request->name) . "</p>
                    <p><strong>E-posta:</strong> " . e($request->email) . "</p>
                    <p><strong>Telefon:</strong> " . e($request->phone) . "</p>
                    <p><strong>Konu:</strong> " . e($request->subject) . "</p>

                    <hr style='margin:20px 0;'>

                    <p><strong>Mesaj:</strong></p>
                    <p>{$messageText}</p>
                </div>
            ";

            $message->to($contact_form_email)->subject('İletişim Formu Bildirimi')->replyTo($request->email, $request->name)->html($html);
        });

        return response()->json(['message' => 'Mesajınız başarıyla gönderildi.']);
    }

    public function career_form_send(Request $request)
    {
        $request->validate(
            [
                'full_name' => 'required|string|max:255',
                'email' => 'required|email',
                'phone' => 'required|string|max:50',
                'company' => 'required|string|max:255',
                'message' => 'nullable|string|max:5000',
                'cv' => 'nullable|file|mimes:pdf,doc,docx|max:10240',
            ],
            [
                'full_name.required' => 'Lütfen adınızı ve soyadınızı giriniz.',
                'full_name.string' => 'Ad soyad geçerli bir metin olmalıdır.',
                'full_name.max' => 'Ad soyad en fazla 255 karakter olabilir.',

                'email.required' => 'Lütfen e-posta adresinizi giriniz.',
                'email.email' => 'Lütfen geçerli bir e-posta adresi giriniz.',

                'phone.required' => 'Lütfen telefon numaranızı giriniz.',
                'phone.string' => 'Telefon numaranız geçerli bir metin olmalıdır.',
                'phone.max' => 'Telefon numaranız en fazla 50 karakter olabilir.',

                'company.required' => 'Lütfen firma seçiniz.',
                'company.string' => 'Firma geçerli bir metin olmalıdır.',
                'company.max' => 'Firma en fazla 255 karakter olabilir.',

                'message.string' => 'Mesaj geçerli bir metin olmalıdır.',
                'message.max' => 'Mesaj en fazla 5000 karakter olabilir.',

                'cv.file' => 'CV dosyası geçerli bir dosya olmalıdır.',
                'cv.mimes' => 'CV yalnızca PDF, DOC veya DOCX formatında olmalıdır.',
                'cv.max' => 'CV dosyası en fazla 10 MB olabilir.',
            ],
        );

        $contact_form_email = 'furkan@tigonproject.com';
        $messageText = nl2br(e($request->message));

        Mail::send([], [], function ($message) use ($request, $contact_form_email, $messageText) {
            $html = "
                <div style='font-family:Arial, sans-serif; font-size:15px; color:#333;'>
                    <h2 style='margin-bottom:15px;'>Yeni Kariyer Formu Başvurusu</h2>

                    <p><strong>Ad Soyad:</strong> " . e($request->full_name) . "</p>
                    <p><strong>E-posta:</strong> " . e($request->email) . "</p>
                    <p><strong>Telefon:</strong> " . e($request->phone) . "</p>
                    <p><strong>Firma:</strong> " . e($request->company) . "</p>

                    <hr style='margin:20px 0;'>

                    <p><strong>Mesaj:</strong></p>
                    <p>{$messageText}</p>
                </div>
            ";

            $message->to($contact_form_email)
                ->subject('Kariyer Formu Bildirimi')
                ->replyTo($request->email, $request->full_name)
                ->html($html);

            if ($request->hasFile('cv')) {
                $cv = $request->file('cv');

                $message->attach($cv->getRealPath(), [
                    'as' => $cv->getClientOriginalName(),
                    'mime' => $cv->getMimeType(),
                ]);
            }
        });

        return response()->json(['message' => 'Başvurunuz başarıyla gönderildi.']);
    }

}
