<?php

namespace App\Http\Controllers\Front;

use App\Http\Controllers\Controller;
use App\Http\Requests\PostulantesRequest;
use App\Mail\postulantes\PostulanteAdminMail;
use App\Mail\postulantes\PostulanteClienteMail;
use App\Models\Files;
use App\Models\Postulante;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Mail;
use Symfony\Component\Mailer\Exception\TransportException;

class PostulantesController extends Controller
{
    public function store(PostulantesRequest $request)
{
    $file = $request->file('archivo', null);
    $admin_email = config('parametros.general.testing') == 1 ? config('parametros.email.correoTalentos') : config('parametros.email.correoDesarrollo');

    DB::beginTransaction();
    try {
        // Crear el postulante
        $result = Postulante::create(request()->all());

        $model = new Files();
        $filePath = $model->upload($file, Postulante::class, $result->id);

        $fileRecord = $result->filePost;

        if ($fileRecord) {
            $archivoRuta = $fileRecord->ruta;
        } else {
            $archivoRuta = null;
        }

        DB::commit();

        // Enviar correos
        Mail::to($admin_email)->send(new PostulanteAdminMail($request->all(), $archivoRuta)); 
        Mail::to(request('email', ''))->send(new PostulanteClienteMail($request->all()));

    } catch (TransportException $e) {
        // Error al enviar el correo electrónico
        $errorMessage = $e->getMessage();
        return response()->json([
            'mensaje' => 'Tuvimos un inconveniente temporal.',
            'code' => $errorMessage
        ], 422);
    }

    return $result;
}

    
}