<?php

namespace App\Danoral\Entidades;

class SyncEntidades
{

    public static function SyncEntidadesEdif()
    {
        echo '<h1> Migracion de Edificios/Apartamentos </h1><br /><br />';

        //Delete
/*         echo '<h2> Borrado de datos </h2> <br />';
        $res = DB::table('admin.entidades_datos')
            ->where('idE', '<', 100100040000000000)
            ->delete();
        echo 'admin.entidades_datos:delete : ';
        print_r($res);
        echo '<br /><br />';
 */
        //Edificios
        $e_edif = DB::connection('mysql_danoral')
            ->table('entidades')
            ->leftJoin('entidadesedif', 'entidades.id_Entidad', '=', 'entidadesedif.id_Entidad')
            ->where([
                ['id_TipoEntidad', 2],
                ['cod_Entidad', '<>', ''],
                ['activo_Entidad', true],
            ])
            ->orderBy('cod_Entidad', 'asc')
            ->get();

        $i_edif = 0;
        foreach ($e_edif as $e) {
            $i_edif += 1;
            echo '<h2> ' . $i_edif . " -> " . $e->cod_Entidad . ' - ' . $e->nombre_Entidad . ' </h2><br />';

//            print_r($e);
            echo '<br /><br />';

            $idE = SyncEntidades::cambioID_edif($e->id_Entidad);

            $res = DB::table('admin.entidades')
                ->updateOrInsert(
                    [
                        'idE' => $idE
                    ],
                    [
                        'idE' => $idE,
                        'typeE' => 2,
                        'codE' => trim($e->cod_Entidad),
                        'nameE' => $e->nombre_Entidad,
                        'enableE' => $e->activo_Entidad,
                        'idESuper' => SyncEntidades::cambioID_edif($e->id_EntidadPadre),
                    ]
                );

            echo 'admin.entidades:updateOrInsert : ';
            print_r($res);
            echo '<br /><br />';

/*             DB::table('admin.entidades')->insert([
                'idE' => $idE,
                'typeE' => 2,
                'codE' => trim($e->cod_Entidad),
                'nameE' => $e->nombre_Entidad,
                'enableE' => $e->activo_Entidad,
                'idESuper' => $this->cambioID($e->id_EntidadPadre),
                ]
            );
 */

            $datose = [
                ['idE' => $idE, 'typeED' => 1100, 'valueED' => trim($e->nombre_Entidad)],
                ['idE' => $idE, 'typeED' => 1006, 'valueED' => trim($e->RIF_Entidad)],
                ['idE' => $idE, 'typeED' => 1007, 'valueED' => trim($e->nombreRIF_EE)],
                ['idE' => $idE, 'typeED' => 1036, 'valueED' => $e->RIF_valido_Entidad],
                ['idE' => $idE, 'typeED' => 1029, 'valueED' => trim($e->direccion_EE)],
                ['idE' => $idE, 'typeED' => 1041, 'valueED' => $e->montoFijo_EE],
                ['idE' => $idE, 'typeED' => 1042, 'valueED' => $e->Intereses_EE],
                ['idE' => $idE, 'typeED' => 1043, 'valueED' => $e->PorcInt_Edif_EE],
                ['idE' => $idE, 'typeED' => 1044, 'valueED' => $e->PorcInt_Admni_EE],
                ['idE' => $idE, 'typeED' => 1045, 'valueED' => $e->MesesDesdeInt_EE],
                ['idE' => $idE, 'typeED' => 1046, 'valueED' => $e->formatoRecibo_EE],
                ['idE' => $idE, 'typeED' => 1047, 'valueED' => $e->porc6_EE],
                ['idE' => $idE, 'typeED' => 1048, 'valueED' => $e->comboProvincial_EE],
                ['idE' => $idE, 'typeED' => 1050, 'valueED' => $e->fechaIngreso_EE],
                ['idE' => $idE, 'typeED' => 1051, 'valueED' => $e->alicuota_EE],
                ['idE' => $idE, 'typeED' => 1052, 'valueED' => $e->NIT_EE],
            ];

            foreach ($datose as $dE) {
                print_r($dE);
//                echo '<br />';
                $typeED = $dE['typeED'];
                $valueED = $dE['valueED'];

                if (!empty($valueED)) {
                    $res = DB::table('admin.entidades_datos')
                    ->updateOrInsert(
                        ['idE' => $idE, 'typeED' => $typeED],
                        ['idE' => $idE, 'typeED' => $typeED, 'valueED' => $valueED]
                    );

                    echo ': admin.entidades_datos:updateOrInsert : ';
                    print_r($res);
                }
                echo '<br />';
            }


        }
    }

    public static function migEntidadesApto()
    {
        //Apartamentos
        $e_apto = DB::connection('mysql_danoral')
        ->table('entidades')
        ->leftJoin('entidadesapto', 'entidades.id_Entidad', '=', 'entidadesapto.id_Entidad')
        ->where([
            ['id_TipoEntidad', 3],
            ['cod_Entidad', '<>', ''],
            ['activo_Entidad', true],
        ])
        ->orderBy('cod_Entidad', 'asc')
        ->get();

        $i_apto = 0;
        $datosAptos = [];
        foreach ($e_apto as $a) {
            $i_apto += 1;
            echo '<h3>('.$i_apto.') '.$a->cod_Entidad.' : '.$a->nombre_Entidad.' ';

            $idE = SyncEntidades::cambioID_edif($a->id_EntidadPadre);
            $idE_a = SyncEntidades::cambioID_apto($a->id_Entidad);

            $res = DB::table('admin.entidades')
            ->updateOrInsert(
                [
                    'idE' => $idE_a
                ],
                [
                    'idE' => $idE_a,
                    'typeE' => 3,
                    'codE' => trim($a->cod_Entidad),
                    'nameE' => trim($a->nombre_Entidad),
                    'enableE' => $a->activo_Entidad,
                    'idESuper' => $idE,
                ]
            );

            echo ' : admin.entidades:updateOrInsert : ';
            print_r($res);
            echo '<h3 />';
        }

    }

    public static function migEntidadesAptoDatos()
    {
        //Apartamentos
        $e_apto = DB::connection('mysql_danoral')
        ->table('entidades')
        ->leftJoin('entidadesapto', 'entidades.id_Entidad', '=', 'entidadesapto.id_Entidad')
        ->where([
            ['id_TipoEntidad', 3],
            ['cod_Entidad', '<>', ''],
            ['activo_Entidad', true],
        ])
        ->orderBy('id_EntidadPadre', 'asc')
        ->get();

        $i_apto = 0;
        $datosAptos = [];
        foreach ($e_apto as $a) {
            $i_apto += 1;
            echo '<h3>('.$i_apto.') '.$a->cod_Entidad.' : '.$a->nombre_Entidad.'</h3>';

            $idE = SyncEntidades::cambioID_edif($a->id_EntidadPadre);
            $idE_a = SyncEntidades::cambioID_apto($a->id_Entidad);

            $datosA = [
                ['idE' => $idE_a, 'typeED' => 1100, 'valueED' => trim($a->nombre_Entidad)],
                ['idE' => $idE_a, 'typeED' => 1006, 'valueED' => trim($a->RIF_Entidad)],
                ['idE' => $idE_a, 'typeED' => 1036, 'valueED' => $a->RIF_valido_Entidad],
                ['idE' => $idE_a, 'typeED' => 1012, 'valueED' => $a->email_EA],
                ['idE' => $idE_a, 'typeED' => 1013, 'valueED' => trim($a->telefonos_EA)],
                ['idE' => $idE_a, 'typeED' => 1051, 'valueED' => $a->alicuota_EA],
                ['idE' => $idE_a, 'typeED' => 1061, 'valueED' => $a->status_EA],
                ['idE' => $idE_a, 'typeED' => 1062, 'valueED' => $a->statusUbicacion_EA],
                ['idE' => $idE_a, 'typeED' => 1063, 'valueED' => trim($a->codVal_EA)],
                ['idE' => $idE_a, 'typeED' => 1064, 'valueED' => trim($a->codCliente_EA)],
                ['idE' => $idE_a, 'typeED' => 1065, 'valueED' => $a->cobroIntereses_EA],
            ];

//            $datosAptos = array_merge ($datosAptos, $datosA);

            foreach ($datosA as $dA) {
//                print_r($dA);
                $idE_ED =  $dA['idE'];
                $typeED =  $dA['typeED'];
                $valueED = $dA['valueED'];

                if (!empty($valueED)) {
                    $res = DB::table('admin.entidades_datos')
                    ->updateOrInsert(
                        ['idE' => $idE_ED, 'typeED' => $typeED],
                        ['idE' => $idE_ED, 'typeED' => $typeED, 'valueED' => $valueED]
                    );

//                    echo ': admin.entidades_datos:updateOrInsert : ';
//                    print_r($res);
                }
//                echo '<br />';
            }

        }

    }

    public static function cambioID_edif ($id)
    {
        $idNew = $id;
        if($idNew < 1000){
            return $idNew;
        }

        if($idNew > 200000000){
            $idNew -= 202000000;
            $idNew += 2000;
        } else {
            $idNew -= 102000000;
        }
        $idNew += 100100020000000000;

        return $idNew;
    }

    public static function cambioID_edif_R ($id)
    {
        $idNew = $id - 100100020000000000;

        if($idNew < 2000){
            $idNew += 102000000;
        }else{
            $idNew -= 2000;
            $idNew += 202000000;
        }

        return $idNew;
    }

    public static function cambioID_apto ($id)
    {
        $idNew = $id;

        if($idNew > 200000000){
            $idNew -= 203000000;
            $idNew += 70000;
        } else {
            $idNew -= 103000000;
        }
        $idNew += 100100030000000000;

        return $idNew;
    }

    public static function cambioID_apto_R ($id)
    {
        $idNew = $id - 100100030000000000;

        if($idNew < 70000){
            $idNew += 103000000;
        }else{
            $idNew -= 70000;
            $idNew += 203000000;
        }

        return $idNew;
    }

}
