<?php

namespace App\Http\Controllers;

use App\Models\PaCatalogo;
use App\Models\PaItemCatalogo;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;

class MarcasController extends Controller
{

    public function MantenimientoMarcas()
    {
        return view('Mantenimiento.Vehiculos.marcas');
    }

    public function listarMarcas()
    {
        try {
            //return datatables()->eloquent(CtVehiculos::where('estado', 'A'))->toJson();
            return datatables(
                DB::table('pa_item_catalogo')
                    ->join('pa_catalogo', 'pa_item_catalogo.IdCatalogo', '=', 'pa_catalogo.IdCatalogo')
                    ->where('pa_catalogo.NombreCatalogo', 'CO_MARCAS')
                    ->where('pa_catalogo.Estado', 'A')
                    ->select('pa_item_catalogo.*')
                    ->get()
            )->toJson();
        } catch (\Throwable $th) {
            Log::info($th);
        }
    }

    public function CargarMarcas()
    {
        $items = DB::table('pa_catalogo')
            ->join('pa_item_catalogo', 'pa_item_catalogo.IdCatalogo', '=', 'pa_catalogo.IdCatalogo')
            ->where('pa_catalogo.NombreCatalogo', 'CO_MARCAS')
            ->where('pa_catalogo.Estado','A')
            ->get();

            return response()->json([
                'status' => 'ok',
                'success' => true,
                'object' => $items
            ]);
    }
    

    public function crearMarcas(Request $r)
    {
        Log::info('marcas');
        Log::info($r);
        try {
            $r->validate([
                'IdDetcatalogo' => 'required',
                'descricion' => 'required',
                'estado' => 'required',
                'CodigoCatalogo' => 'required',
            ]);
        } catch (\Throwable $th) {
            return response()->json([
                'status' => 'error',
                'success' => false,
                'message' => 'Debe llenar todos los campos son obligatorio.!!',
            ]);
        }

        try {
            $dameFecha = Carbon::now()->subHour(5);
            //verifiica que la marca no este registrada
            if ($r->IdDetcatalogo <= 0) {
                $contDataUsers = PaItemCatalogo::join('pa_catalogo', 'pa_item_catalogo.IdCatalogo', '=', 'pa_catalogo.IdCatalogo')
                    ->where('Descricion', trim($r->descricion))
                    ->where('pa_catalogo.NombreCatalogo', 'CO_MARCAS')
                    ->where('pa_catalogo.Estado', 'A')
                    ->count();
                if ($contDataUsers > 0) {
                    return response()->json([
                        'status' => 'error',
                        'success' => false,
                        'message' => 'la Marca ' . $r->descricion . ' ya se encuentra registrada.!',
                    ]);
                }
            }

            //Guardar Vehiculo
            $dataMarca = new PaItemCatalogo();

            if ($r->IdDetcatalogo > 0) {
                $dataMarca = PaItemCatalogo::join('pa_catalogo', 'pa_item_catalogo.IdCatalogo', '=', 'pa_catalogo.IdCatalogo')
                    ->where('pa_catalogo.NombreCatalogo', 'CO_MARCAS')
                    ->where('pa_catalogo.Estado', 'A')
                    ->where('pa_item_catalogo.IdDetcatalogo', $r->IdDetcatalogo)
                    ->Select('pa_item_catalogo.*')
                    ->first();

                if ($dataMarca == null) {
                    return response()->json([
                        'status' => 'error',
                        'success' => true,
                        'message' => 'No se encuentra la Marca' . $r->descricion
                    ]);
                }
            }
 
            // $n_secuencial = PaItemCatalogo::max('pa_item_catalogo.CodigoCatalogo')
            //     ->join('pa_catalogo', 'pa_catalogo.IdCatalogo', '=', 'pa_item_catalogo.IdCatalogo')
            //     ->where('pa_catalogo.NombreCatalogo', 'CO_MARCAS')
            //     ->first();

            $n_secuencial = DB::table('pa_item_catalogo')
                ->join('pa_catalogo', 'pa_catalogo.IdCatalogo', '=', 'pa_item_catalogo.IdCatalogo')
                ->where('pa_catalogo.NombreCatalogo', 'CO_MARCAS')
                ->max('pa_item_catalogo.CodigoCatalogo');
            
            Log::info('paso');
            Log::info($r->estado);
            $dataMarca->IdCatalogo = 1;
            $dataMarca->CodigoCatalogo = ($r->IdDetcatalogo > 0 ? $r->CodigoCatalogo : $n_secuencial+1 );
            $dataMarca->Descricion = strtoupper($r->descricion);
            $dataMarca->Estado = $r->estado;
            $dataMarca->IdPadre = null;
             

            DB::beginTransaction();
            $dataMarca->save();
            
            DB::commit();

            //fin de la instruccion
            return response()->json([
                'status' => 'ok',
                'success' => true,
                'message' => 'La Marca fue ' . ($r->IdDetcatalogo > 0 ? 'Modificado' : 'Creado') . ' con exito.!!'
            ]);

        } catch (\Throwable $th) {
            Log::info($th->getMessage());
            return response()->json([
                'status' => 'error',
                'success' => false,
                'message' => 'No se pudo guardar la marca ingresada!!',
            ]);
        }
    }
}
