<?php

namespace App\Models\Presupuestos;

class TipoPresupuestoServiciosDefectoModel extends \App\Models\BaseModel
{
    protected $table = "tipos_presupuestos_servicios_defecto";

    /**
     * Whether primary key uses auto increment.
     *
     * @var bool
     */
    protected $useAutoIncrement = true;

    protected $allowedFields = [
        "tipo_presupuesto_id", 
        "tarifa_id", 
        "solapas", 
        "is_servicio_encuadernacion", 
        "is_servicio_acabado",  
        "is_servicio_manipulado",  
        "is_servicio_preimpresion", 
        "is_deleted"];
    protected $returnType = "App\Entities\Presupuestos\TipoPresupuestoServiciosDefecto";

    protected $useTimestamps = true;
    protected $useSoftDeletes = false;

    protected $createdField = "created_at";
    protected $updatedField = "updated_at";

    public static $labelField = "tipo_presupuesto_id";

    public function get_tarifas($tipo_presupuesto=-1, $solapas=0, $tipo=""){

        $builder = $this->db
            ->table($this->table . " t1")
            ->where("t1.tipo_presupuesto_id", $tipo_presupuesto);

        if(strcmp($tipo, "encuadernacion")==0){
            
            $builder->join("tarifa_encuadernacion t2", "t1.tarifa_id = t2.id", "left");
            $builder->where("t1.is_servicio_encuadernacion", 1);
            $builder->where("t1.is_servicio_acabado", 0);
            $builder->where("t1.is_servicio_manipulado", 0);
            $builder->where("t1.is_servicio_preimpresion", 0);
        }
        else if(strcmp($tipo, "acabado")==0){

            $builder->join("lg_tarifa_acabado t2", "t1.tarifa_id = t2.id", "left");
            $builder->where("t1.is_servicio_acabado", 1);
            $builder->where("t1.is_servicio_encuadernacion", 0);
            $builder->where("t1.is_servicio_manipulado", 0);
            $builder->where("t1.is_servicio_preimpresion", 0);
        }
        else if(strcmp($tipo, "manipulado")==0){
            
            $builder->join("lg_tarifa_manipulado t2", "t1.tarifa_id = t2.id", "left");
            $builder->where("t1.is_servicio_manipulado", 1);
            $builder->where("t1.is_servicio_encuadernacion", 0);
            $builder->where("t1.is_servicio_acabado", 0);
            $builder->where("t1.is_servicio_preimpresion", 0);
            
        }
        else if(strcmp($tipo, "preimpresion")==0){
            
            $builder->join("lg_tarifa_preimpresion t2", "t1.tarifa_id = t2.id", "left");
            $builder->where("t1.is_servicio_preimpresion", 1);
            $builder->where("t1.is_servicio_encuadernacion", 0);
            $builder->where("t1.is_servicio_acabado", 0);
            $builder->where("t1.is_servicio_manipulado", 0);
            
        }
        else{
            return [];
        }

        $where = "(t1.solapas IS NULL OR t1.solapas=" . $solapas . ")";
        $builder->where($where);

        $builder->where("t1.is_deleted", 0);
        $builder->where("t2.is_deleted", 0);
        $builder->select("t1.tarifa_id AS tarifa_id, t2.nombre AS tarifa_nombre");

        $data = $builder->get()->getResultArray();
        // DEBUG
        $query = $this->db->getLastQuery();
        return $data;
    }
}
