<?php
namespace App\Model;


class PresupuestoItem extends GenericObject
{

    static $table_name = 'presitem';

    static $primary_key = 'pit_numero';


    public function cargar($data){
        $this->pit_canti = $data->cantidad;
        $this->pit_precio = $data->precio;
        $this->pit_codart = $data->articulo->id;
        $this->pit_nropsp = $data->presupuesto->id;

        if($data->presentacion){
            $this->pit_codpre = $data->presentacion;
            $this->pit_canpre = $data->cantidadPresentecion;
            $this->pit_unipre = $data->unidadesPorPresentacion;
        }
    }

    private static function getProductoBorrado()
    {
        return json_encode([
            "id" => "099999",
            "descripcion" => "Articulo Forzado Borrado",
            "precio" => 0,
            "precioCosto" => 0,
            "precioMinimo" => 0,
            "canal1" => 0,
            "canal2" => 0,
            "canal3" => 0,
            "tipoImpuesto" => 'I',
            "impuesto" => 10
        ]);
    }

    public static function toJSON($result)
    {
        if ($result === null) return $result;
        $temp = array();
        if(!isset($result->psp_numero)){
            foreach($result as $item){
                $articulo = null;
                try {
                    $articulo = Articulo::toJSON(Articulo::find($item->pit_codart));
                } catch (\Throwable $th) {
                    $articulo = PresupuestoItem::getProductoBorrado();
                }
                
                $object = array(
                    "cantidad" => $item->pit_canti,
                    "precio" => $item->pit_precio,
                    "presentacion" => $item->pit_codpre,
                    "cantidadPresentecion" => $item->pit_canpre,
                    "unidadesPorPresentacion" => $item->pit_unipre,
                    "articulo" => json_decode($articulo)
                );
                $temp[] = $object;
            }
        }else{
            $articulo = null;
            try {
                $articulo = Articulo::toJSON(Articulo::find($result->pit_codart));
            } catch (\Throwable $th) {
                $articulo = PresupuestoItem::getProductoBorrado();
            }
            $temp = array(
                "cantidad" => $result->pit_canti,
                "precio" => $result->pit_precio,
                "presentacion" => $result->pit_codpre,
                "cantidadPresentecion" => $result->pit_canpre,
                "unidadesPorPresentacion" => $result->pit_unipre,
                "articulo" => json_decode($articulo)
            );
        }
        return json_encode($temp);
    }
}