<?php
$connPostgre->beginTransaction();

$idVersion = 0;
$idSecteur = 0;
$insertSectorisationVersion = "INSERT INTO sav.sectorisation_version(id, idsite, date_debut, date_fin, date_modification, idutilisateur, commentaire, en_prod) VALUES ";
$insertSecteur = "INSERT INTO sav.secteur(id, numero, idsectorisation_version, nom, idsecteur_zone, idsecteur_taux_retour, idsecteur_activite, coordonnees) VALUES ";
$insertAgentSecteur = "INSERT INTO sav.agent_secteur(idsecteur_version, idutilisateur_agent, rang_tri) VALUES ";
$insertSecteurEquipement = "INSERT INTO sav.secteur_equipement(idsecteur, idequipement) VALUES ";
$updateEquipement = [];
foreach($sites as $cle => $site) {
    $select = "SELECT * FROM historique WHERE site = '".$site['nom']."' ORDER BY date_mep DESC";
    $historique = $connMySql->query($select)->fetch();
    $idVersion++;
    $insertSectorisationVersion .= "('".$idVersion."','".$site['id']."','".$historique['date_mep']."',null,'".$historique['date_modif']."',null,'Initialisation ".ucfirst(mb_strtolower($site['nom']))."','1'),";

    $select = "SELECT id_histo, id_secteur, ST_AsGeoJSON(secteur) AS secteur_json, nom_secteur, code_agent, suppleant_1, suppleant_2, suppleant_3, suppleant_4, site FROM histo_secteurs WHERE id_histo = '".$historique['id']."'";
    $histoSecteur = $connMySql->query($select)->fetchAll();
    foreach ($histoSecteur as $secteur){
        $idSecteur++;
//        $insertSecteur .= "('".$idSecteur."','".$idSecteur."','".$idVersion."','".$secteur['nom_secteur']."','1',null,null,'".$secteur['secteur_json']."',ST_GeomFromGeoJson('".$secteur['secteur_json']."')),";
        $insertSecteur .= "('".$idSecteur."','".$idSecteur."','".$idVersion."','".$secteur['nom_secteur']."','1',null,null,'".$secteur['secteur_json']."'),";
        $tab = array('code_agent', 'suppleant_1', 'suppleant_2', 'suppleant_3', 'suppleant_4');
        foreach ($tab as $cle => $value) {
            if(isset($secteur[$value]) && $secteur[$value] != '0') {
                $selectUser = "SELECT * FROM sav.tmp_correspondance_agent WHERE code_agent_oracle = '" . $secteur[$value] . "' AND idsite = '" . $site['id'] . "'";
                if($connPostgre->query($selectUser)!=false && $connPostgre->query($selectUser)->fetch()!=false){
                    $idUser = $connPostgre->query($selectUser)->fetch()['idutilisateur'];
                    $insertAgentSecteur .= "('" . $idSecteur . "'," . $idUser . ",'".($cle+1)."'),";
                }
            }
        }
        $selectEquipement = "SELECT e.id  FROM sav.equipement e LEFT JOIN sav.adresse a ON e.idadresse = a.id WHERE e.idsite = '".$site['id']."' AND ST_CONTAINS(ST_GeomFromGeoJson('" . $secteur['secteur_json'] . "'), ST_Point(a.longitude, a.latitude, 4326))";
        $equipements = $connPostgre->query($selectEquipement)->fetchAll();
        foreach ($equipements as $equipement){
            $insertSecteurEquipement .= "('" . $idSecteur . "'," . $equipement['id'] . "),";
        }

        $updateEquipement[] = "UPDATE sav.equipement e SET idsecteur='" . $idSecteur . "' WHERE e.id IN (".$selectEquipement.");";

    }
}

$insertSectorisationVersion = substr($insertSectorisationVersion, 0, -1);
$connPostgre->exec($insertSectorisationVersion);
$insertSecteur = substr($insertSecteur, 0, -1);
$connPostgre->exec($insertSecteur);
$insertAgentSecteur = substr($insertAgentSecteur, 0, -1);
$connPostgre->exec($insertAgentSecteur);
$insertSecteurEquipement = substr($insertSecteurEquipement, 0, -1);
$connPostgre->exec($insertSecteurEquipement);
foreach($updateEquipement as $update){
    $connPostgre->exec($update);
}
$connPostgre->commit();
//file_put_contents('log/log_'.date("j.n.Y").'_sectorisation_version.log', $insertSectorisationVersion, FILE_APPEND);
//file_put_contents('log/log_'.date("j.n.Y").'_secteur.log', $insertSecteur, FILE_APPEND);
//file_put_contents('log/log_'.date("j.n.Y").'_agent_secteur.log', $insertAgentSecteur, FILE_APPEND);
//file_put_contents('log/log_'.date("j.n.Y").'_secteur_equipement.log', $insertSecteurEquipement, FILE_APPEND);
//file_put_contents('log/log_'.date("j.n.Y").'_update_equipement.log', $updateEquipement, FILE_APPEND);
