<?php

namespace App\Http\Controllers\Perfil;

use App\Model\ExperienciaLaboral;
use Carbon\Carbon;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Input;

class ExperienciaController extends Controller
{
    public function Index(){
        try {
            $experiencias = ExperienciaLaboral::where('id_usuario',\Auth::user()->id)->orderBy('fecha_inicio', 'asc')->get();
            return view('pages.perfil.experiencia.index', compact('experiencias'))->render();
        } catch (\Exception $e) {
            Alert()->error(config('constants.ALERT.ERROR.MENSAJE'), config('constants.ALERT.ERROR.TITULO'))->persistent('Ok');
            return Redirect('/');
        }
    }
    public function registrarForm(){
    try {
        return view('pages.perfil.experiencia.registrar');
    } catch (\Exception $e) {
        Alert()->error(config('constants.ALERT.ERROR.MENSAJE'), config('constants.ALERT.ERROR.TITULO'))->persistent('Ok');
        return Redirect('perfil');
    }
}
    public function registrarSubmit(Request $request){
        $this->validate($request,[
            'empresa' => 'required',
            'cargo' => 'required',
            'funciones' => 'required',
            'actual' => 'required',
            'fecha_inicio' => 'required',
            'fecha_fin' => 'nullable',
        ]);
        try{
            $experiencia = [
                'id_usuario' => \Auth::user()->id,
                'nombre_empresa' => Input::get('empresa'),
                'cargo' => Input::get('cargo'),
                'tareas_desarrolladas' => Input::get('funciones'),
                'trabajo_actual' => Input::get('actual'),
                'fecha_inicio' => Carbon::createFromFormat('d-m-Y',Input::get('fecha_inicio'))->setTime(0,0,0),
                'fecha_fin' => (!empty(Input::get('fecha_fin'))) ? Carbon::createFromFormat('d-m-Y',Input::get('fecha_fin'))->setTime(0,0,0) : null,
            ];
            ExperienciaLaboral::create($experiencia);
            Alert()->success('Se ha guardado la experiencia laboral con éxito', config('constants.ALERT.SUCCESS.TITULO'))->persistent('Ok');
            return Redirect('perfil#tab_3');
        } catch (\Exception $e) {
            Alert()->error(config('constants.ALERT.ERROR.MENSAJE'), config('constants.ALERT.ERROR.TITULO'))->persistent('Ok');
            return Redirect('perfil#tab_3');
        }
    }

    public function editarForm($id){
        try {
            $experiencia = ExperienciaLaboral::find($id);

            if (\Auth::user()->id != $experiencia->id_usuario)
            {
                return Redirect('perfil');
            }

            return view('pages.perfil.experiencia.editar', compact('experiencia'));
        } catch (\Exception $e) {
            Alert()->error(config('constants.ALERT.ERROR.MENSAJE'), config('constants.ALERT.ERROR.TITULO'))->persistent('Ok');
            return Redirect('perfil');
        }
    }
    public function editarSubmit(Request $request){
        $this->validate($request,[
            'nombre_empresa' => 'required',
            'cargo' => 'required',
            'tareas_desarrolladas' => 'required',
            'trabajo_actual' => 'required',
            'fecha_inicio' => 'required',
            'fecha_fin' => 'nullable',
        ]);
        try{
            $experiencia = ExperienciaLaboral::find($request->id);
            if (\Auth::user()->id != $experiencia->id_usuario)
            {
                return Redirect('perfil');
            }
            $experiencia->nombre_empresa = Input::get('nombre_empresa');
            $experiencia->cargo = Input::get('cargo');
            $experiencia->tareas_desarrolladas = Input::get('tareas_desarrolladas');
            $experiencia->trabajo_actual = Input::get('trabajo_actual');
            $experiencia->fecha_inicio = Carbon::createFromFormat('d-m-Y',Input::get('fecha_inicio'))->setTime(0,0,0);
            $experiencia->fecha_fin = (!empty(Input::get('fecha_fin'))) ? Carbon::createFromFormat('d-m-Y',Input::get('fecha_fin'))->setTime(0,0,0) : null;
            $experiencia->save();

            Alert()->success('Se ha actualizado la experiencia laboral con éxito', config('constants.ALERT.SUCCESS.TITULO'))->persistent('Ok');
            return Redirect('perfil#tab_3');
        } catch (\Exception $e) {
            Alert()->error(config('constants.ALERT.ERROR.MENSAJE'), config('constants.ALERT.ERROR.TITULO'))->persistent('Ok');
            return Redirect('perfil#tab_3');
        }
    }

    public function eliminarSubmit(Request $request)
    {
        try {
            $result = ExperienciaLaboral::find($request->id);
            if ($result->id_usuario != \Auth::user()->id) {
                return false;
            }
            $result->delete();
            Alert()->success(config('constants.ALERT.SUCCESS.MENSAJE'), config('constants.ALERT.SUCCESS.TITULO'))->persistent('Ok');
            return 'true';
        } catch (\Exception $e) {
            Alert()->error(config('constants.ALERT.ERROR.MENSAJE'), config('constants.ALERT.ERROR.TITULO'))->persistent('Ok');
            return 'false';
        }
    }
}
