<?php

namespace App\View\Components;

use Illuminate\View\Component;
use Illuminate\Support\Facades\DB;
use App\Danoral\Condominios\Recibo as ReciboCondominio;

class Recibo extends Component
{
    public $codEE;
    public $nameEE;
    public $direccionEE;
    public $rifEE;

    public $idE;
    public $statusEP;
    public $codClienteEP;
    public $codEP;
    public $nameEP;
    public $alicuotaEP;
    public $alicuotaEP_str;

    public $tc_valor;
    public $tc_date;
    public $cond_venceTC;

    public $periodoR;
    public $periodoR_YM;
    public $montoR_USD;
    public $montoR_VES;

    public $cuotasPendientes;
    public $iInfoMontos         = [];

    public $iComunVES           = [];
    public $iComunUSD           = [];
    public $iAptoVES            = [];
    public $iAptoUSD            = [];
    public $iFondoVES           = [];
    public $iFondoUSD           = [];

    public $sumComunVES;
    public $sumComunUSD;
    public $sumAptoVES;
    public $sumAptoUSD;
    public $sumFondoVES;
    public $sumFondoUSD;
    public $sumComunVES_alicuota;
    public $sumComunUSD_alicuota;

    public $iCuotaPD_comun_VES;
    public $iCuotaPD_comun_USD;
    public $iCuotaPD_apto_VES;
    public $iCuotaPD_apto_USD;

    public $sumaCuota_VES;
    public $totalCuota_VES;
    public $totalCuota_USD;
    public $montoTotalVES;
    public $montoRef_USD;

    public $recibo;
    public $nameRecibo;

    public $isMensaje_dolarizacion;

    public $mensaje;

    public $colorYellow = '#F5DF4D';
   

    /**
     * Create a new component instance.
     *
     * @return void
     */
    public function __construct(ReciboCondominio $recibo)
    {
        $this->recibo = $recibo;
        $this->load();
    }

    /**
     * Get the view / contents that represent the component.
     *
     * @return \Illuminate\View\View|string
     */
    public function render()
    {
        return view('components.recibo');
    }


    private function load()
    {
        $this->codEE                = $this->recibo->edifE->codE;;
        $this->nameEE               = $this->recibo->edifE->nameE;
        $this->direccionEE          = $this->recibo->edifE->direccionE;
        $this->rifEE                = $this->recibo->edifE->RIF_nro;

        $this->idE                  = $this->recibo->aptoE->idE;
        $this->statusEP             = $this->recibo->aptoE->statusEA;
        $this->codClienteEP         = $this->recibo->aptoE->codCliente;
        $this->codEP                = trim($this->recibo->aptoE->codE);
        $this->nameEP               = $this->recibo->aptoE->nameE;
        $this->alicuotaEP           = $this->recibo->aptoE->alicuota;
        $this->alicuotaEP_str       = number_format($this->alicuotaEP, 8, ',', '.');

        $this->periodoR             = $this->recibo->getPeriodo();
        $this->periodoR_YM          = $this->recibo->getPeriodo(true);

        $this->cuotasPendientes     = $this->recibo->cuotasPendientes;
        $this->iInfoMontos          = is_null($this->recibo->infoMontos)?[]:$this->recibo->infoMontos;
        
        $this->iComunVES            = $this->recibo->rg['iComunVES'];
        $this->iComunUSD            = $this->recibo->rg['iComunUSD'];
        $this->iAptoVES             = $this->recibo->rg['iAptoVES'];
        $this->iAptoUSD             = $this->recibo->rg['iAptoUSD'];
        $this->iFondoVES            = $this->recibo->rg['iFondoVES'];
        $this->iFondoUSD            = $this->recibo->rg['iFondoUSD'];

        $this->sumComunVES          = number_format($this->recibo->rg['sumComunVES'], 2, ',', '.');
        $this->sumComunUSD          = number_format($this->recibo->rg['sumComunUSD'], 2, ',', '.').'$';
        $this->sumAptoVES           = number_format($this->recibo->rg['sumAptoVES'], 2, ',', '.');
        $this->sumAptoUSD           = number_format($this->recibo->rg['sumAptoUSD'], 2, ',', '.').'';
        $this->sumFondoVES          = number_format($this->recibo->rg['sumFondoVES'], 2, ',', '.');
        $this->sumFondoUSD          = number_format($this->recibo->rg['sumFondoUSD'], 2, ',', '.').'$';
        $this->sumComunVES_alicuota = number_format($this->recibo->rg['sumComunVES_alicuota'], 2, ',', '.');
        $this->sumComunUSD_alicuota = number_format($this->recibo->rg['sumComunUSD_alicuota'], 2, ',', '.').'';

        $this->tc_valor             = number_format($this->recibo->rg['tc_valor'], 4, ',', '.');
        $this->tc_date              = date('d/m/Y', strtotime($this->recibo->rg['tc_date']));
        $this->cond_venceTC         = date('d/m/Y', strtotime($this->recibo->rg['cond_venceTC']));

        $this->iCuotaPD_comun_VES   = $this->recibo->rg['iCuotaPD_comun_VES'];
        $this->iCuotaPD_comun_USD   = $this->recibo->rg['iCuotaPD_comun_USD'];
        $this->iCuotaPD_apto_VES    = $this->recibo->rg['iCuotaPD_apto_VES'];
        $this->iCuotaPD_apto_USD    = $this->recibo->rg['iCuotaPD_apto_USD'];

        $this->sumaCuota_VES        = number_format($this->recibo->rg['sumaCuota_VES'], 2, ',', '.').'';
        $this->totalCuota_VES       = number_format($this->recibo->rg['totalCuota_VES'], 2, ',', '.').'';
        $this->totalCuota_USD       = number_format($this->recibo->rg['totalCuota_USD'], 2, ',', '.').'';
        $this->montoTotalVES        = number_format($this->recibo->rg['montoTotalVES'], 2, ',', '.').'';

        $this->montoR_USD           = number_format($this->recibo->rg['montoCuotaUSD'], 2, ',', '.');

        $this->montoRef_USD         = number_format($this->recibo->rg['montoRefUSD'], 2, ',', '.');

        if($this->recibo->rg['montoCuotaVES']<=0.01 && $this->recibo->rg['montoCuotaVES']>=(-0.01)){
            $this->montoR_VES       = '';
        }else{
            $this->montoR_VES       = number_format($this->recibo->rg['montoCuotaVES'], 2, ',', '.').'';
        }

        $this->isMensaje_dolarizacion = $this->recibo->rg['isMensaje_dolarizacion'];

        $this->nameRecibo           = 'recibo-'.$this->codClienteEP.'-'.$this->periodoR_YM;



        // NO FUNCIONA -- CODIGO EN PRUEBA
        $mensaje01 = '
            <span style="font-size: 12px;">Total, condominio a pagar del mes <span style="font-weight: bold;">'. $this->periodoR .'</span> es de <span style="font-weight: bold;">Bs. '. $this->montoTotalVES .'</span>, el cual deberá ser cancelado antes del día <span style="font-weight: bold;">'. $this->cond_venceTC .'</span></span>.<br>
            Relación de gastos, emitida conforme a la consulta aprobada por la comunidad de copropietarios y en función de los Art. 12 y 23 de la LPH, Art.8 del Convenio cambiario No. - 1 y el art. 128 del Decreto con Rango, Valor y Fuerza de Ley del Banco Central de Venezuela.<br>

            La tasa BCV aplicada para el momento de la emisión del recibo '. $this->tc_date .' de los gastos pagados en dólares fue de <span style="font-weight: bold; font-size: 12px;">Bs. '. $this->tc_valor .'.</span><br>

            Si realiza el pago fuera de la fecha indicada, su contribución será cancelada de los fondos que pudiera tener la comunidad, por efectos de la recaudación oportuna en función a la divisa como moneda de cambio y de pago, y por ende queda obligado a efectuar  el pago a la tasa vigente del BCV, para el día en que lo realice.<br>

            Podrá visualizar el estado de cuenta y monto total a pagar en el portal www.danoral.com
        ';

        $mensaje02 = '
            <p style="padding-right: 40px; padding-left: 30px; font-size: 11px; line-height : 1rem;">
            <span style="font-size: 12px;">El condominio del mes <span style="font-weight: bold;">'. $this->periodoR .'</span>, deberá ser cancelado antes del día <span style="font-weight: bold;">'. $this->cond_venceTC .'</span></span>.<br>

            La tasa BCV aplicada para el momento de la emisión del recibo '. $this->tc_date .' fue de <span style="font-weight: bold; font-size: 12px;">Bs. '. $this->tc_valor .'.</span><br>

            Si realiza el pago fuera de la fecha indicada, queda obligado a efectuar  el pago a la tasa vigente del BCV, para el día en que lo realice.<br>

            Podrá visualizar el estado de cuenta y monto total a pagar en el portal www.danoral.com

            </p>
        ';

        if($this->isMensaje_dolarizacion){
            $this->mensaje = $mensaje01;
        }elseif ($this->codEE == '3345'){
            $this->mensaje = '';
        }else{
            $this->mensaje = $mensaje02;
        }
    }

    private function loadRecibo(){
        $this->codEE            = $this->recibo->edifE->codE;
        $this->nameEE           = $this->recibo->edifE->nameE;
        $this->direccionEE      = $this->recibo->edifE->direccionE;
        $this->rifEE            = $this->recibo->edifE->RIF_nro;

        $this->codClienteEP     = $this->recibo->aptoE->codCliente;
        $this->codEP            = trim($this->recibo->aptoE->codE);
        $this->nameEP           = $this->recibo->aptoE->nameE;
        $this->alicuotaEP       = $this->recibo->aptoE->alicuota;
        $this->alicuotaEP_str   = number_format($this->alicuotaEP, 8, ',', '.');

        $this->periodoR         = $this->recibo->cond->mesCond . '/' . $this->recibo->cond->anoCond;

        $this->itemsC           = $this->recibo->rg['items_comunes'];
        $this->itemsNC          = $this->recibo->rg['items_no_comunes'];
        $this->items230         = $this->recibo->rg['items_230'];
        $this->items230_USD     = $this->recibo->rg['items_230_USD'];

        $this->monto_tasa_dolarizado        = number_format($this->recibo->rg['tasa_cambio'], 2, ',', '.');
        $this->sum_monto_comunes            = number_format($this->recibo->rg['sum_monto_comunes'], 2, ',', '.');
        $this->sum_monto_no_comunes         = number_format($this->recibo->rg['sum_monto_no_comunes'], 2, ',', '.');
        $this->total_gastos                 = number_format($this->recibo->rg['total_gastos'], 2, ',', '.');
        $this->total_monto_comunes_alicuota = number_format($this->recibo->rg['total_monto_comunes_alicuota'], 2, ',', '.');

        //$this->montoR                     = number_format($this->recibo->rg['monto_recibo_USD'], 2, ',', '.');
        $this->montoR                       = number_format($this->recibo->rg['monto_cuota'], 2, ',', '.');

        /*
        $this->monto_fondo_dolarizado       = number_format($r['monto_fondo_dolarizado'], 2, ',', '.');
        $this->monto_cuota_dolarizado       = number_format($r['monto_cuota_dolarizado'], 2, ',', '.');
        $this->montoR                       = number_format($r['montoR'], 2, ',', '.');
        $this->monto_tasa_dolarizado        = number_format($r['monto_tasa_dolarizado'], 2, ',', '');
        */
    }

    private function loadItems(){
        $item_cond = DB::connection('mysql_danoral')
            ->table('itemsdt')
            ->leftJoin('itemsdt_des', 'itemsdt.idDT', '=', 'itemsdt_des.idDT')
            ->where([
                ['id_Cond', 200005062],
                ['id_Entidad', 102000783],
            ])
            ->orderBy('ctaDT', 'asc')
            ->get();

        $i_items_cond = 0;
        $items = [];
        $i = [];
        $sum_monto_comunes = 0;

        foreach( $item_cond as $ic){

            if($ic->mesDT==0 || $ic->anoDT==0){
                $periodo = "";
            }else{
                $periodo = $ic->mesDT . '/' . $ic->anoDT;
            }

            $i = [
                'cta'               => $ic->ctaDT,
                'descripcion'       => $ic->descripcion_itemsdt_des,
                'ref'               => '',
                'periodo'           => $periodo,
                'monto_comunes'     => number_format($ic->montoDT, 2, ',', '.'),
                'monto_alicuota'    => number_format(($ic->montoDT * $this->alicuotaEP)/100, 2, ',', '.')

            ];

            array_push($items, $i);

            $sum_monto_comunes += $ic->montoDT;

        }

        $monto_tasa_dolarizado = 358855.38;
        $monto_fondo_dolarizado = $sum_monto_comunes * -1;
        $monto_cuota_dolarizado = $sum_monto_comunes / $monto_tasa_dolarizado;
        $montoR = ($monto_cuota_dolarizado * $this->alicuotaEP)/100;

        $this->sum_monto_comunes = number_format($sum_monto_comunes, 2, ',', '.');
        $this->monto_fondo_dolarizado = number_format($monto_fondo_dolarizado, 2, ',', '.');
        $this->monto_cuota_dolarizado = number_format($monto_cuota_dolarizado, 2, ',', '.');
        $this->montoR = number_format($montoR, 2, ',', '.');
        $this->monto_tasa_dolarizado = number_format($monto_tasa_dolarizado, 2, ',', '');

        return $items;
    }

}
