<?php

namespace App\Danoral\Entidades;

use App\Danoral\ModelBase;
use App\Danoral\Entidades\Entidad;

class EDatoView extends ModelBase
{
    protected $table = 'admin.entidades_datos_view';
    protected $primaryKey = 'idED';
    protected $keyType = 'bigint';
    public $incrementing = false;
    public $timestamps = false;

    /** devuelve las entidades de un grupo de datos especificos */
    public static function getEntidades($EDatosView){
        $edatosview = [];
        $entidades = [];

        foreach($EDatosView as $i=>$edv){
            $idE = $edv->idE;

            $edatosview[$edv->typeED] = $edv;

            $isEntidadNext = false;
            //no es ultimo elemento
            if ($edv != $EDatosView->last()) {
                if($idE != $EDatosView->get($i+1)->idE || is_null($idE)){
                    $isEntidadNext = true;
                }
            //ultimo elemto
            }else{
                $isEntidadNext = true;
            }

            if($isEntidadNext){
                $entidad = new Entidad;
                $entidad->idE       = $edv->idE;
                $entidad->typeE     = $edv->typeE;
                $entidad->enableE   = $edv->enableE;
                $entidad->idESuper  = $edv->idESuper;
                $entidad->loadDatos($edatosview);

                //ordena por codigo de edif
                if(empty($entidades)){
                    $entidades[] = $entidad;
                }else{
                    $esort = [];
                    $isI = true;
                    foreach($entidades as $e){
                        if($isI){
                            if(trim($entidad->codE) < trim($e->codE)){
                                $esort[] = $entidad;
                                $isI = false;
                            }
                        }
                        $esort[] = $e;
                    }
                    if($isI){
                        $esort[] = $entidad;
                    }
                    $entidades = $esort;
                }

                $edatosview = [];
            };
        }

        return $entidades;
    }
}
