<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use App\Models\Area;
use App\Models\Equipo;
use App\Models\OrdenTrabajo;
use App\Models\PlanMantenimiento;
use Illuminate\Http\Request;

class ApiController extends Controller
{
    public function areas() { return response()->json(Area::where('activo',1)->get()); }
    public function equipos() { return response()->json(Equipo::with('area')->where('activo',1)->get()); }
    public function planes() { return response()->json(PlanMantenimiento::with('items')->where('activo',1)->get()); }

    public function ordenes(Request $r)
    {
        $q = OrdenTrabajo::with(['equipo:id,codigo,nombre','area:id,codigo,nombre','estado:id,codigo,nombre','responsable:id,usuario,nombres,apellidos']);
        if ($r->filled('clase')) $q->where('clase',$r->clase);
        if ($r->filled('estado')) $q->whereHas('estado', fn($e) => $e->where('codigo', $r->estado));
        if ($r->filled('desde')) $q->whereDate('fecha_programada','>=', $r->desde);
        if ($r->filled('hasta')) $q->whereDate('fecha_programada','<=', $r->hasta);
        return response()->json($q->orderByDesc('fecha_programada')->paginate(50));
    }

    public function ordenShow(OrdenTrabajo $orden)
    {
        $orden->load(['equipo','estado','prioridad','responsable','items','fotos','costos']);
        return response()->json($orden);
    }

    public function ping() { return response()->json(['ok' => true, 'time' => now()->toIso8601String()]); }
}
