<?php

namespace App\Http\Livewire;

use App\Exports\PedidosExport;
use App\Models\Pedido;
use Carbon\Carbon;
use Livewire\Component;
use Livewire\WithPagination;
use Maatwebsite\Excel\Facades\Excel;

class ReportePedidoController extends Component
{
    use WithPagination;
    public $fecha_inicio, $fecha_final;
    public $fn_inicio, $fn_final;
    public $is_venta_cerrada = "", $is_venta_entregada ="";

    public function render()
    {
        if(is_null($this->fecha_inicio) && is_null($this->fecha_final))
        {
            $this->fecha_inicio = Carbon::now()->format('Y-m-d');
            $this->fecha_final = Carbon::now()->format('Y-m-d');
            $this->fn_inicio= Carbon::parse($this->fecha_inicio)->startOfDay();
            $this->fn_final= Carbon::parse($this->fecha_final)->endOfDay();

        }
        $query = Pedido::query();
        
        $query->when($this->is_venta_entregada, function ($query) {
            return $query->where('is_venta_entregada',"=",$this->is_venta_entregada);
        });
        $query->when($this->is_venta_cerrada, function ($query) {
            return $query->where('is_venta_cerrada',"=",$this->is_venta_cerrada);
        });

        $query->when(($this->fn_inicio && $this->fn_final), function ($query) {
            return $query->whereBetween('created_at', [$this->fn_inicio, $this->fn_final]);
        });
        return view('pedido.reporte-pedido',[
            'pedidos' => $query->paginate(10),
        ]);
    }

    public function updatedFechaInicio()
    {
        $this->fn_inicio= Carbon::parse($this->fecha_inicio)->startOfDay();
    }

    public function updatedFechaFinal()
    {
        $this->fn_final= Carbon::parse($this->fecha_final)->endOfDay();
    }

    public function export()
    {
        $query = Pedido::query();
        
        $query->when($this->is_venta_entregada, function ($query) {
            return $query->where('is_venta_entregada',"=",$this->is_venta_entregada);
        });
        $query->when($this->is_venta_cerrada, function ($query) {
            return $query->where('is_venta_cerrada',"=",$this->is_venta_cerrada);
        });

        $query->when(($this->fn_inicio && $this->fn_final), function ($query) {
            return $query->whereBetween('created_at', [$this->fn_inicio, $this->fn_final]);
        });
        $this->resetPage();

        return Excel::download(new PedidosExport($this->fn_inicio, $this->fn_final,$this->is_venta_cerrada,$this->is_venta_entregada),'pedido-'.Carbon::now()->format('Y-m-d').'.xlsx');
    }
}
