<?php

namespace App\Http\Controllers;

use App\Model\Ejemplar;
use App\Model\Perdida;
use Carbon\Carbon;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Providers\SweetAlertServiceProvider;
use Illuminate\Support\Facades\DB;


class PerdidasController extends Controller
{
    public function perdidasIndex()
    {

        $perdidas = DB::table('perdida')
            ->join('usuario', 'perdida.id_usuario', '=', 'usuario.id')
            ->join('ejemplar', 'perdida.id_ejemplar', '=', 'ejemplar.id')
            ->join('bibliografia', 'ejemplar.id_bibliografia', '=', 'bibliografia.id')
            ->select('perdida.id','perdida.estado','perdida.fecha_perdida', 'usuario.dni', 'usuario.nombres', 'usuario.apellido_materno', 'usuario.apellido_paterno', 'ejemplar.codigo_CS', 'bibliografia.nombre')
            ->get();

        return view('pages.perdidas.perdidasindex', compact('perdidas'));

    }

    public function getCodLibro($CodLibro)
    {
        $codsLibros = Ejemplar::where('codigo_CS', 'LIKE', "%{$CodLibro}%")->get();

        return Response()->json(['data' => $codsLibros]);
    }

    public function crearPerdida(Request $request)
    {

        $this->validate($request, [
            'codigo_CS' => 'required',
            'dni' => 'required|regex:/^[+]?\d+([.]\d+)?$/',
            'motivo' => 'required',
            'fecha_perdida' => 'required',
        ]);

        $usuario = DB::table('usuario')
            ->where('usuario.dni', '=', $request["dni"])
            ->select('id')->get();

        if ($usuario->isEmpty()){
            Alert()->error('No se encontró al usuario con el dni ingresado. Inténtalo nuevamente.', 'Ups..')->persistent('Cerrar');
            return redirect('perdidas');
        }
        $ejemplar = DB::table('ejemplar')
            ->where('codigo_CS','=', $request["codigo_CS"])
            ->select('id')->get();

        if ($ejemplar->isEmpty()){
            Alert()->error('No se encontró el libro con dicho código. Inténtalo nuevamente.', 'Ups..')->persistent('Cerrar');
            return redirect('perdidas');
        }

        $result = Ejemplar::find($ejemplar[0]->id);
        $result->estado = 0;
        $result->save();

        $objPerdida = [
            "estado" => 1,
            "fecha_perdida" => $request["fecha_perdida"],
            "motivo" => $request["motivo"],
            "created_at" => Carbon::now('America/Lima'),
            "updated_at" => Carbon::now('America/Lima'),
            "id_usuario" => $usuario[0]->id,
            "id_ejemplar" => $ejemplar[0]->id
        ];

        Perdida::create($objPerdida);

        Alert()->success('Se registro la perdida correctamente!', 'Registro realizado!')->persistent('Cerrar');
        return redirect('perdidas');
    }

    public function cambiarEstado($perdidaID){

        $perdida = Perdida::find($perdidaID);
        if ($perdida->estado == 1){

            $perdida->estado = 0;
            $perdida->save();

            $ejemplar = Ejemplar::find($perdida->id_ejemplar);
            if ($ejemplar->estado == 1){
                $ejemplar->estado = 0;
                $ejemplar->save();
            }else{
                $ejemplar->estado = 1;
                $ejemplar->save();
            }

        }else{

            $perdida->estado = 1;
            $perdida->save();

            $ejemplar = Ejemplar::find($perdida->id_ejemplar);

            if ($ejemplar->estado == 0){
                $ejemplar->estado = 1;
                $ejemplar->save();
            }else{
                $ejemplar->estado = 0;
                $ejemplar->save();
            }

        }

        return "true";

    }

}
