<?php

namespace App\Model;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Facades\DB;

class TramiteUsuario extends Model
{
    use SoftDeletes;
    protected $table = 'tramite_usuario';

    protected $dates = ['created_at','deleted_at','updated_at'];

    protected $fillable = [
        'codigo',
        'deuda',
        'folio',
        'monto_descuento',
        'monto_pagado',
        'monto_pagar',
        'monto_total',
        'sustento',
        'id_dependencia',
        'id_recibo',
        'id_tramite_procedimiento',
        'id_tramite_usuario_accion',
        'id_tramite_usuario_estado',
        'id_usuario'
    ];

    public function tramite_usuario()
    {
        return TramiteUsuario::leftJoin('dependencia', 'dependencia.id', '=', 'tramite_usuario.id_dependencia')
            ->leftJoin('tramite_procedimiento', 'tramite_procedimiento.id', '=', 'tramite_usuario.id_tramite_procedimiento')
            //->leftJoin('tramite_usuario_deuda', 'tramite_usuario_deuda.id', '=', 'tramite_usuario.id_tramite_usuario_deuda')
            //->leftJoin('tramite_usuario_estado', 'tramite_usuario_estado.id', '=', 'tramite_usuario.id_tramite_usuario_estado')
            ->leftJoin('usuario', 'usuario.id', '=', 'tramite_usuario.id_usuario')
            //->leftJoin('dependencia as area_fin', 'area_fin.id', '=', 'tramite_procedimiento.id_area_fin')
            ->leftJoin('dependencia as area_inicio', 'area_inicio.id', '=', 'tramite_procedimiento.id_area_inicio')
            ->leftJoin('dependencia as autoridad_competente', 'autoridad_competente.id', '=', 'tramite_procedimiento.id_autoridad_competente')
            ->leftJoin('tramite_categoria', 'tramite_categoria.id', '=', 'tramite_procedimiento.id_tramite_categoria')
            ->select(
                'tramite_usuario.id as id',
                'tramite_usuario.codigo as codigo',
                'tramite_usuario.deuda as deuda',
                'tramite_usuario.folio as folio',
                'tramite_usuario.monto_descuento as monto_descuento',
                'tramite_usuario.monto_pagado as monto_pagado',
                'tramite_usuario.monto_pagar as monto_pagar',
                'tramite_usuario.monto_total as monto_total',
                'tramite_usuario.sustento as sustento',
                'tramite_usuario.created_at as created_at',
                'tramite_usuario.updated_at as updated_at',
                'tramite_usuario.deleted_at as deleted_at',
                'tramite_usuario.id_dependencia as id_dependencia',
                'tramite_usuario.id_recibo as id_recibo',
                'tramite_usuario.id_tramite_procedimiento as id_tramite_procedimiento',
                'tramite_usuario.id_tramite_usuario_accion as id_tramite_usuario_accion',
                'tramite_usuario.id_tramite_usuario_estado as id_tramite_usuario_estado',
                'tramite_usuario.id_usuario as id_usuario',
                'dependencia.id as dependencia_id',
                'dependencia.nombre as dependencia_nombre',
                'tramite_procedimiento.id as tramite_procedimiento_id',
                'tramite_procedimiento.codigo as tramite_procedimiento_codigo',
                'tramite_procedimiento.cuenta_contable as tramite_procedimiento_cuenta_contable',
                'tramite_procedimiento.nombre as tramite_procedimiento_nombre',
                'tramite_procedimiento.base_legal as tramite_procedimiento_base_legal',
                'tramite_procedimiento.plazo_resolucion as tramite_procedimiento_plazo_resolucion',
                //'tramite_procedimiento.activo as tramite_procedimiento_activo',
                //'tramite_procedimiento.id_area_fin as tramite_procedimiento_id_area_fin',
                'tramite_procedimiento.id_area_inicio as tramite_procedimiento_id_area_inicio',
                'tramite_procedimiento.id_autoridad_competente as tramite_procedimiento_id_autoridad_competente',
                'tramite_procedimiento.id_tramite_calificacion as tramite_procedimiento_id_tramite_calificacion',
                'tramite_procedimiento.id_tramite_categoria as tramite_procedimiento_id_tramite_categoria',
                'tramite_procedimiento.id_tramite_estado as tramite_procedimiento_id_tramite_estado',
                'tramite_procedimiento.id_tramite_tipo as tramite_procedimiento_id_tramite_tipo',
                //'area_fin.nombre as area_fin',
                'area_inicio.id as area_inicio_id',
                'area_inicio.nombre as area_inicio_nombre',
                'autoridad_competente.id as autoridad_competente_id',
                'autoridad_competente.nombre as autoridad_competente_nombre',
                'tramite_categoria.id as tramite_categoria_id',
                'tramite_categoria.nombre as tramite_categoria_nombre',
                /*'tramite_usuario_deuda.costo_soles as tramite_usuario_deuda_costo_soles',
                'tramite_usuario_deuda.pagado as tramite_usuario_deuda_pagado',
                'tramite_usuario_estado.nombre as tramite_usuario_estado',*/
                'usuario.id as usuario_id',
                DB::raw('CONCAT(usuario.apellido_paterno, " ", usuario.apellido_materno, ", ", usuario.nombres) as usuario_nombres'),
                'usuario.email as usuario_email');
    }
    
    public function tramite_usuario2()
    {
        return TramiteUsuario::leftJoin('dependencia', 'dependencia.id', '=', 'tramite_usuario.id_dependencia')
            ->leftJoin('tramite_procedimiento', 'tramite_procedimiento.id', '=', 'tramite_usuario.id_tramite_procedimiento')
            //->leftJoin('tramite_usuario_deuda', 'tramite_usuario_deuda.id', '=', 'tramite_usuario.id_tramite_usuario_deuda')
            //->leftJoin('tramite_usuario_estado', 'tramite_usuario_estado.id', '=', 'tramite_usuario.id_tramite_usuario_estado')
            ->leftJoin('usuario', 'usuario.id', '=', 'tramite_usuario.id_usuario')
            //->leftJoin('dependencia as area_fin', 'area_fin.id', '=', 'tramite_procedimiento.id_area_fin')
            ->leftJoin('dependencia as area_inicio', 'area_inicio.id', '=', 'tramite_procedimiento.id_area_inicio')
            ->leftJoin('dependencia as autoridad_competente', 'autoridad_competente.id', '=', 'tramite_procedimiento.id_autoridad_competente')
            ->leftJoin('tramite_categoria', 'tramite_categoria.id', '=', 'tramite_procedimiento.id_tramite_categoria')
            ->leftJoin('alumno', 'alumno.id_usuario', '=', 'usuario.id')
            ->leftJoin('especialidad', 'especialidad.id', '=', 'alumno.id_especialidad')
            ->leftJoin('grupo', 'grupo.id', '=', 'alumno.id_grupo')
            ->leftJoin('turno', 'turno.id', '=', 'grupo.id_turno')
            ->select(
                'tramite_usuario.id as id',
                'tramite_usuario.deuda as deuda',
                'tramite_usuario.folio as folio',
                'tramite_usuario.monto_pagado as monto_pagado',
                'tramite_usuario.monto_pagar as monto_pagar',
                'tramite_usuario.sustento as sustento',
                'tramite_usuario.created_at as created_at',
                'tramite_usuario.updated_at as updated_at',
                'tramite_usuario.deleted_at as deleted_at',
                'tramite_usuario.id_dependencia as id_dependencia',
                'tramite_usuario.id_recibo as id_recibo',
                'tramite_usuario.id_tramite_procedimiento as id_tramite_procedimiento',
                'tramite_usuario.id_tramite_usuario_accion as id_tramite_usuario_accion',
                'tramite_usuario.id_tramite_usuario_estado as id_tramite_usuario_estado',
                'tramite_usuario.id_usuario as id_usuario',
                'dependencia.nombre as dependencia',
                'tramite_procedimiento.codigo as tramite_procedimiento_codigo',
                'tramite_procedimiento.cuenta_contable as tramite_procedimiento_cuenta_contable',
                'tramite_procedimiento.nombre as tramite_procedimiento_nombre',
                'tramite_procedimiento.base_legal as tramite_procedimiento_base_legal',
                'tramite_procedimiento.plazo_resolucion as tramite_procedimiento_plazo_resolucion',
                //'tramite_procedimiento.activo as tramite_procedimiento_activo',
                //'tramite_procedimiento.id_area_fin as tramite_procedimiento_id_area_fin',
                'tramite_procedimiento.id_area_inicio as tramite_procedimiento_id_area_inicio',
                'tramite_procedimiento.id_autoridad_competente as tramite_procedimiento_id_autoridad_competente',
                'tramite_procedimiento.id_tramite_calificacion as tramite_procedimiento_id_tramite_calificacion',
                'tramite_procedimiento.id_tramite_categoria as tramite_procedimiento_id_tramite_categoria',
                'tramite_procedimiento.id_tramite_estado as tramite_procedimiento_id_tramite_estado',
                'tramite_procedimiento.id_tramite_tipo as tramite_procedimiento_id_tramite_tipo',
                //'area_fin.nombre as area_fin',
                'area_inicio.id as area_inicio_id',
                'area_inicio.nombre as area_inicio_nombre',
                'autoridad_competente.id as autoridad_competente_id',
                'autoridad_competente.nombre as autoridad_competente_nombre',
                'tramite_categoria.id as tramite_categoria_id',
                'tramite_categoria.nombre as tramite_categoria_nombre',
                /*'tramite_usuario_deuda.costo_soles as tramite_usuario_deuda_costo_soles',
                'tramite_usuario_deuda.pagado as tramite_usuario_deuda_pagado',
                'tramite_usuario_estado.nombre as tramite_usuario_estado',*/
                'usuario.id as usuario_id',
                DB::raw('CONCAT(usuario.apellido_paterno, " ", usuario.apellido_materno, ", ", usuario.nombres) as usuario_nombres'),
                'usuario.email as usuario_email',
                'usuario.genero as usuario_genero',
                'especialidad.id as especialidad_id',
                'especialidad.nombre as especialidad_nombre',
                'grupo.id as grupo_id',
                'grupo.nombre as grupo_nombre',
                'turno.nombre as turno');
    }
}
