<?php

namespace App\Danoral\Cuotas;

use App\Danoral\Entidades\Entidad;

/** cuota entidad */
class CuotaE
{
    public $entidad;
    public $sumBS_cobro = 0;
    public $sumBS = 0;
    public $sumUSD = 0;
    public $cuotasCond = [];
    public $cuotasE = [];

    /** asigna cuotasCond y calcula los totales */
    public function setCuotasCond($cuotasCond){
        $this->cuotasCond = $cuotasCond;

        $this->sumBS_cobro = 0;
        $this->sumBS = 0;
        $this->sumUSD = 0;

        foreach($cuotasCond as $cc){

            $this->sumBS_cobro += $cc->sumBS_cobro;
            $this->sumBS += $cc->sumBS;
            $this->sumUSD += $cc->sumUSD;

        /*
            $sumBS_cobro = 0;
            $sumBS = 0;
            $sumUSD = 0;

            foreach($cc->cuotas as $c){
                $mCuota = floatval($c->montoDT);
                switch($c->idMoneda){
                    case 1001: //VES
                        $sumBS += $mCuota;
                        break;
                    case 1002: //USD
                        $sumUSD += $mCuota;
                        
                        $cc->descripcion =
                            number_format($c->tcCobro_montoCuota, 2, ',', '.').'@'.
                            number_format($c->tcCobro_valor, 4, ',', '.').
                            '['.date("d-m-Y",strtotime($c->tcCobro_date)).'] $';
                        
                        break;
                }
                $sumBS_cobro += $c->tcCobro_montoCuota;
            }
            $cc->sumBS_cobro = $sumBS_cobro;
            $cc->sumBS = $sumBS;
            $cc->sumUSD = $sumUSD;

            $this->sumBS_cobro += $sumBS_cobro;
            $this->sumBS += $sumBS;
            $this->sumUSD += $sumUSD;

        */
        }
    }

    /** devuelve las cuotas de una entidad */
    public static function getCuotaE($filter){
        $idE = $filter['idE'];
        $dateTasa = isset($filter['dateCalculoTasa'])?$filter['dateCalculoTasa']:null;
        $cuotasPendientes = isset($filter['cuotasPendientes'])?$filter['cuotasPendientes']:true;

        try {
            $e = Entidad::find($idE);        
            if($e){
                $cc = CuotaCond::getCuotasCond($idE, null, $cuotasPendientes, $dateTasa);
                $e->subE = $e->getSubEntidades();

                //obtener codigo ESuper
                $eSuper = Entidad::find($e->idESuper);  
                if($eSuper){
                    $datose = json_decode($eSuper->datose); 
                    $e->codESuper = isset($datose->cod->value)?$datose->cod->value:'...';
                }

                $cuotaE = new CuotaE();
                $cuotaE->entidad = $e;
                $cuotaE->setCuotasCond($cc);

                self::getCuotasSubE($cuotaE, $cuotasPendientes, $dateTasa);

                return $cuotaE;
            }
        } catch(\Exception $e) {
            Log::debug("myERROR : idE: ".$idE." | ".$e->getMessage());
        }
        return null;
    }

    /** Recursivo */
    private static function getCuotasSubE($cuotaEP, $cuotasPendientes, $dateTasa){
        $cuotasE = [];

        foreach($cuotaEP->entidad->subE as $e){
            $cc = CuotaCond::getCuotasCond($e->idE, null, $cuotasPendientes, $dateTasa);

            $cuotaE = new CuotaE($cc);
            $cuotaE->entidad = $e;
            $cuotaE->setCuotasCond($cc);

            self::getCuotasSubE($cuotaE, $cuotasPendientes, $dateTasa);

            $cuotaEP->sumBS_cobro += $cuotaE->sumBS_cobro;
            $cuotaEP->sumBS += $cuotaE->sumBS;
            $cuotaEP->sumUSD += $cuotaE->sumUSD;

            $cuotasE[] = $cuotaE;
        }
        $cuotaEP->cuotasE = $cuotasE;
    }
}
