<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use \App\Models\{Incidencia, Oti, OtiLog};

class IncidenciasController extends Controller
{
    public function index()
    {
        $data = Incidencia::all();
        return $data;
    }

    public function create()
    {        
    }

    public function store(Request $request)
    {
        $oti = (new Oti)->find($request->order['id']);
        if (! $oti) {
            return ['status' => 'error', 'message' => 'Orden No Encontrada!'];
        }
        $incidencia = new Incidencia();        
        $incidencia->oti_id = $request->order['id'];
        $incidencia->user_id = $request->order['current_operator'];
        $incidencia->incidencia_tipo_id = $request->incidencia_tipo_id;
        $incidencia->descripcion = $request->descripcion;
        $incidencia->status = 'PENDIENTE';
        $incidencia->save();

        $oti->time = $request->order['time'];
        $oti->status = 2;
        $oti->save();

        $log = new OtiLog();
        $log->oti_id = $oti->id;
        $log->time = $oti->time;
        $log->incidencia_id = $incidencia->id;
        $log->status = 2;
        $log->save();

        return ['status' => 'success', 'data' => $oti];
    }

    public function approveIncidence(Request $request)
    {
        /*
        $incidencia = (new Incidencia)->find($request->id);
        if (! $incidencia) {
            return ['status' => 'error', 'message' => 'Incidencia No Encontrada!'];
        }
        
        $oti = (new Oti)->find($incidencia->oti_id);
        
        $incidencia->status = 'RECHAZADA';
        $incidencia->save();

        $oti->status = 1;
        $oti->save();

        $log = new OtiLog();
        $log->oti_id = $oti->id;
        $log->time = $oti->time;
        $log->incidencia_id = $incidencia->id;
        $log->observations = 'Incidencia Rechazada';
        $log->status = 1;
        $log->save();

        return ['status' => 'success', 'data' => $oti];
        */
    }

    public function rejectIncidence(Request $request)
    {
        $incidencia = (new Incidencia)->find($request->id);
        if (! $incidencia) {
            return ['status' => 'error', 'message' => 'Incidencia No Encontrada!'];
        }
        
        $oti = (new Oti)->find($incidencia->oti_id);
        
        $incidencia->status = 'RECHAZADA';
        $incidencia->save();

        $oti->status = 1;
        $oti->save();

        $log = new OtiLog();
        $log->oti_id = $oti->id;
        $log->time = $oti->time;
        $log->incidencia_id = $incidencia->id;
        $log->observations = 'Incidencia Rechazada';
        $log->status = 1;
        $log->save();

        return ['status' => 'success', 'data' => $oti];
    }

    public function show($id)
    {
        $data = Incidencia::find($id);
        return $data;
    }

    public function edit($id)
    {
    }

    public function update(Request $request, $id)
    {
        $incidencia = (new Incidencia)->find($id);
        if (!$incidencia) {
            return;
        }
        $incidencia->oti_id = $request->order['id'];
        $incidencia->user_id = $request->order['current_operator'];
        $incidencia->incidencia_tipo_id = $request->incidencia_tipo_id;
        $incidencia->descripcion = $request->descripcion;
        $incidencia->save();

        return ['status' => 'success', 'data' => $incidencia];
    }

    public function destroy($id)
    {
        $delete = Incidencia::find($id);
        $delete->delete();

        $data = Incidencia::all();
        return $data;
    }
    
}
