6.1

fct.meta.tournee = {
    "id": {
        "lib": "(en dur) CHAMP_id_TourneeModeleR",
        "aide": "",
        "aff": "1",
        "rangAff": -1,
        "typeHTML": "number",
        "unite": "",
        "isTri": "1",
        "isFiltre": "1"
    },
    "code_TourneeModeleR": {
        "lib": "(en dur) CHAMP_code_TourneeModeleR",
        "aide": "",
        "aff": "1",
        "rangAff": 1,
        "typeHTML": "text",
        "unite": "",
        "isTri": "1",
        "isFiltre": "1"
    }
};

var i, j, dateDeb = "2018-01-17", dateFin = "2018-02-02", tournee2 = [], tournee3 = [], tournee4 = [], tasks;
RoulementDateService.get(dateDeb, dateFin).then(function (result) {
    if (result && (result.status === 200)) {
        fct.data.ficheposte = result.data.data;
        fct.meta.ficheposte = result.data.meta;

    
        /*tournee2 = [{
            "id_TourneeModeleR": 4,
            "code_TourneeModeleR": "t123",
            "dateDebut_TourneeModeleR": null,
            "dateFin_TourneeModeleR": null,
            "libelle_TourneeModeleR": "tournee2"
        }];
        tournee3 = [{
            "id_TourneeModeleR": 6,
            "code_TourneeModeleR": "t145",
            "dateDebut_TourneeModeleR": null,
            "dateFin_TourneeModeleR": null,
            "libelle_TourneeModeleR": "tournee3"
        }];
        tournee4 = [{
            "id_TourneeModeleR": 7,
            "code_TourneeModeleR": "t526",
            "dateDebut_TourneeModeleR": null,
            "dateFin_TourneeModeleR": null,
            "libelle_TourneeModeleR": "tournee4"
        }];

        for (i = 0; i < fct.data.ficheposte.length; i++) {
            tasks = fct.data.ficheposte[i].tasks;
            for (j = 0; j < tasks.length; j++) {
                switch (tasks[j].name) {
                case "t145":
                    tasks[j].tournee = tournee3;
                    break;
                case "t123":
                    tasks[j].tournee = tournee2;
                    break;
                case "t526":
                    tasks[j].tournee = tournee4;
                    break;
                default:
                    break;
                }
            }
        }*/
        /*fct.data.ficheposte = [
            {
                "name": "SPIDER Man",
                "id": 16,
                "tasks": [
                    {
                        "name": "t145",
                        "id": 122
                    },
                    {
                        "name": "t123",
                        "id": 123
                    }
                ]
            }, {
                "name": "Cloak Dagger",
                "id": 16,
                "tasks": [
                    {
                        "name": "t145",
                        "id": 122
                    },
                    {
                        "name": "t123",
                        "id": 123
                    }
                ]
            }
        ];*/

    fct.actions.run.PRO_AFFECTER_FICHE_POSTE = function(data) {
    if (data.parentGanttItem) {
        MsModalService.showModalWithId('app/views/gestionsite/planningroulement/popup/ficheposte/ficheposte.html', 'FichePosteCtl', true, data.parentGanttItem.id, fct.closePopup, true, {itemName: data.parentGanttItem.name, taskId: data.ganttItem.id, dateDeb: fct.data.gantt.dateDeb, dateFin: fct.data.gantt.dateFin, selectedDate: fct.data.selectedDate});
    } else {
        MsModalService.showModalWithId('app/views/gestionsite/planningroulement/popup/ficheposte/ficheposte.html', 'FichePosteCtl', false, undefined, fct.closePopup, true, {itemId: data.ganttItem.id});
    }

    
};
fct.closePopup = la fonction après fermeture de la popup (fct.closePopup =  function(result, modal) {
                                                                              if (!result) {
                                                                                  return;
                                                                              } else {
                                                                                  [...]
                                                                              }
                                                                            };
                                                      )

6.2

fct.data.tournee = [{
    "id_TourneeModeleR": 4,
    "code_TourneeModeleR": "t123",
    "dateDebut_TourneeModeleR": null,
    "dateFin_TourneeModeleR": null,
    "libelle_TourneeModeleR": "tournee2"
}, {
    "id_TourneeModeleR": 6,
    "code_TourneeModeleR": "t145",
    "dateDebut_TourneeModeleR": null,
    "dateFin_TourneeModeleR": null,
    "libelle_TourneeModeleR": "tournee3"
}, {
    "id_TourneeModeleR": 7,
    "code_TourneeModeleR": "t526",
    "dateDebut_TourneeModeleR": null,
    "dateFin_TourneeModeleR": null,
    "libelle_TourneeModeleR": "tournee4"
}];

fct.meta.tournee = {
    "id": {
        "lib": "(en dur) CHAMP_id_TourneeModeleR",
        "aide": "",
        "aff": "1",
        "rangAff": -1,
        "typeHTML": "number",
        "unite": "",
        "isTri": "1",
        "isFiltre": "1"
    },
    "code_TourneeModeleR": {
        "lib": "(en dur) CHAMP_code_TourneeModeleR",
        "aide": "",
        "aff": "1",
        "rangAff": 1,
        "typeHTML": "text",
        "unite": "",
        "isTri": "1",
        "isFiltre": "1"
    },
    "dateDebut_TourneeModeleR": {
        "lib": "(en dur) CHAMP_dateDebut_TourneeModeleR",
        "aide": "",
        "aff": "1",
        "typeHTML": "date",
        "isTri": "1",
        "isFiltre": "1"
    },
    "dateFin_TourneeModeleR": {
        "lib": "(en dur) CHAMP_dateFin_TourneeModeleR",
        "aide": "",
        "aff": "1",
        "typeHTML": "date",
        "isTri": "1",
        "isFiltre": "1"
    }
};

fct.data.pro = [
    {
        "id_VueProRessourceR": 15,
        "login_VueProRessourceR": "480293",
        "nom_VueProRessourceR": "BAT",
        "libProfilMetier_VueProRessourceR": "ProClient",
        "refProfilMetier_VueProRessourceR": 3,
        "prenom_VueProRessourceR": "Man",
        "actif_VueProRessourceR": "1"
    },
    {
        "id_VueProRessourceR": 16,
        "login_VueProRessourceR": "018665",
        "nom_VueProRessourceR": "SPIDER",
        "libProfilMetier_VueProRessourceR": "ProClient",
        "refProfilMetier_VueProRessourceR": 3,
        "prenom_VueProRessourceR": "Man",
        "actif_VueProRessourceR": "1"
    },
    {
        "id_VueProRessourceR": 25,
        "login_VueProRessourceR": "074804",
        "nom_VueProRessourceR": "WONDER",
        "libProfilMetier_VueProRessourceR": "ProClient",
        "refProfilMetier_VueProRessourceR": 3,
        "prenom_VueProRessourceR": "Woman",
        "actif_VueProRessourceR": "1"
    },
    {
        "id_VueProRessourceR": 27,
        "login_VueProRessourceR": "903671",
        "nom_VueProRessourceR": "SUPER",
        "libProfilMetier_VueProRessourceR": "ProClient",
        "refProfilMetier_VueProRessourceR": 3,
        "prenom_VueProRessourceR": "MAN",
        "actif_VueProRessourceR": "1"
    }
];

fct.meta.pro = {
    "id": {
        "lib": "(en dur) CHAMP_id_VueProRessourceR",
        "aide": "",
        "aff": "1",
        "rangAff": -1,
        "typeHTML": "number",
        "unite": "",
        "isTri": "1",
        "isFiltre": "1"
    }
};

6.3

result de modal.controller planningroulement (popup ficheposte) ficheposte: (5) [{…}, {…}, {…}, {…}, {…}] pro: (5) [{…}, {…}, {…}, {…}, {…}, id_VueProRessourceR: 15] tournee: {dateDebut_TourneeModeleR: "2018-02-02", dateFin_TourneeModeleR: "2018-02-02"}

6.4

// affectation de fiche de poste
div(ng-if='::!fichePosteCtl.fct.msUpdating')
  .row(ng-switch='fichePosteCtl.fct.msPopupParams.parentItem')
      .col-md-12
          ms-input(ng-switch-default, ms-id='nom_agent', ms-meta='::(fichePosteCtl.fct.meta.roulement.libelle_professionnel_PersonneR)', ms-value='fichePosteCtl.fct.msPopupParams.parentItem.name')
          ms-input(ng-switch-when='undefined', ms-id='nom_agent', ms-meta='::(fichePosteCtl.fct.meta.roulement.libelle_professionnel_PersonneR)', ms-value='fichePosteCtl.fct.msPopupParams.item.name')
  .row(ng-if='fichePosteCtl.fct.msPopupParams.item.data')
      .col-md-12
          ms-input.col-md-6(ms-id='dureeContrat', ms-meta='::(fichePosteCtl.fct.meta.proDispo.dureeContrat_ProfessionnelR)', ms-value='fichePosteCtl.fct.msPopupParams.item.data.cumul.dureeContrat')
          ms-input.col-md-6(ms-id='dureeTheorique', ms-meta='::(fichePosteCtl.fct.meta.proDispo.dureeTheorique_ProfessionnelR)', ms-value='fichePosteCtl.fct.msPopupParams.item.data.cumul.dureeTheorique')
  .row(ng-if='!fichePosteCtl.fct.msPopupParams.item.data')
      .col-md-12
          ms-input.col-md-6(ms-id='dureeContrat', ms-meta='::(fichePosteCtl.fct.meta.proDispo.dureeContrat_ProfessionnelR)', ms-value='fichePosteCtl.fct.data.proDispo.dureeContrat_ProfessionnelR')
          ms-input.col-md-6(ms-id='dureeTheorique', ms-meta='::(fichePosteCtl.fct.meta.proDispo.dureeTheorique_ProfessionnelR)', ms-value='fichePosteCtl.fct.data.proDispo.dureeTheorique_ProfessionnelR')
  .row
      .col-md-12
          ms-select(ms-id='id_roulement', ms-meta='::(fichePosteCtl.fct.meta.ficheposte.id)', ms-value='fichePosteCtl.fct.data.roulement.id_RoulementDateR', ms-items='fichePosteCtl.fct.data.roulement', ms-item-id='id_RoulementDateR', ms-item-display='code_RoulementDateR', ms-search-enabled='true')
          //ms-select(ms-id='id_tache', ms-meta='::(fichePosteCtl.fct.meta.ficheposte.id)', ms-value='fichePosteCtl.fct.data.ficheposte.tasks.id', ms-items='fichePosteCtl.fct.roulementTabSorted', ms-item-id='id', ms-item-display='name', ms-search-enabled='true')
// modification
div(ng-if='::fichePosteCtl.fct.msUpdating')
  // si action = action_pro_reaffecter_fiche_poste | action sur une fiche de poste
  .row(ng-if='!(::fichePosteCtl.fct.msPopupParams.rowItems)')
      .col-md-12
          //ms-input.col-md-6(ms-id='id_tache', ms-meta='::(fichePosteCtl.fct.meta.ficheposte.id)', ms-value='fichePosteCtl.fct.data.roulement.code_RoulementDateR')
          ms-input.col-md-6(ms-id='id_roulement', ms-meta='::(fichePosteCtl.fct.meta.ficheposte.name)', ms-value='fichePosteCtl.fct.msPopupParams.item.name')
          
          ms-input.col-md-6(ms-id='oldRessource', ms-meta='::(fichePosteCtl.fct.meta.ficheposte.name)', ms-value='fichePosteCtl.fct.msPopupParams.parentItem.name')
  // si action = action_pro_reaffecter_fiches_poste | action sur la ligne
  .row(ng-if='::fichePosteCtl.fct.msPopupParams.rowItems')
      .col-md-12
          // il faudra utiliser les données d'un getUpdate par rapport au pro
          ms-select.col-md-6(ms-id='id_roulement', ms-meta='::(fichePosteCtl.fct.meta.ficheposte.id)', ms-value='fichePosteCtl.fct.data.roulement.id_RoulementDateR', ms-items='fichePosteCtl.fct.data.roulement', ms-item-id='id_RoulementDateR', ms-item-display='code_RoulementDateR', ms-search-enabled='true')
          ms-input.col-md-6(ms-id='oldRessource', ms-meta='::(fichePosteCtl.fct.meta.ficheposte.name)', ms-value='fichePosteCtl.fct.msPopupParams.rowItems.name')
  .row
      .col-md-12
          ms-select(ms-id='newRessource', ms-meta='::(fichePosteCtl.fct.meta.pro.id)', ms-value='fichePosteCtl.fct.data.pro.idProContrat', ms-items='fichePosteCtl.fct.data.pro', ms-item-id='idProContrat', ms-item-display='nom_VueProRessourceR', ms-search-enabled='true')
          //ms-on-change='fichePosteCtl.fct.getData()')
  .row
      .col-md-12
          ms-date-picker.col-md-6(ms-id='dateDebutTournee', ms-meta='::(fichePosteCtl.fct.meta.tournee.dateDebut_TourneeModeleR)', ms-value='fichePosteCtl.fct.data.tournee.dateDebut_TourneeModeleR')

          ms-date-picker.col-md-6(ms-id='dateFinTournee', ms-meta='::(fichePosteCtl.fct.meta.tournee.dateFin_TourneeModeleR)', ms-value='fichePosteCtl.fct.data.tournee.dateFin_TourneeModeleR')

6.5

RoulementDateService.reaffecterDate(newDateDeb, newDateFin, idProContratOld, idProContratNew).then(function (result) {
      if (result && (result.status === 200)) {
          ToastService.success(fct.sucessLib, fct.msgLib);
          fct.data.ficheposte.reaffectationDate = true;
          console.log("REAFFECTATION DATE");
          console.log("newDateDeb : " + newDateDeb);
          console.log("newDateFin : " + newDateFin);
          fct.confOnSubmit = false;
          fct.closeModalWithResult();
      }
  });

6.6 indications

/*C'est pas possible, pour la simple et bonne raison que tu peux déjà avoir une tournée sur la journée. IL faut donc bien récupérer toutes les données du jour pour le salarié (cf mon mail du 22/01). Virer les données du jour pour le salarié.

Remplacer par celles retournées par l'API. Réaffectation de date a date : on récupère les données du mois pour les deux salariés et on écrase, Remplacement fiche de poste ou récupère les données du jour pour les deux salariés et on écrase Affectation et désaffectation on récupére les données du jour pour le salarié et on écrase.

Cf mail du 22/01. (liste api) Le front ne doit pas s'amuser a calculer la largeur des tournées dans le gantt, ni le taux de remplissage, c'est le taf du bak. On ne gère que l'affichage.*/

6.7

// reaffectation d'une fiche
// fct.data.prodispo
code_RoulementDateR:"t526",
dateDebut:"2018-02-12",
dateFin:"2018-02-28",
dureeContrat_ProfessionnelR:null,
dureeTheorique_ProfessionnelR:null,
duree_RoulementDateR:9000,
idPro:16,
idProContrat_Old:24,
idProContrat_ProfessionnelR:17,
id_RoulementDateR:1235,
libelle_PersonneR:"SPIDER Man ",
libelle_RoulementDateR:"test4"

// result de la popup
ficheposte:Array(6)
0:{name: "Brown James ", id: 9, tasks: Array(10), idProContrat: 17}
1:{name: "BAT Man ", id: 15, tasks: Array(4), idProContrat: 23}
2:{name: "SPIDER Man ", id: 16, tasks: Array(18), idProContrat: 24}
3:{name: "WONDER Woman ", id: 25, tasks: Array(14), idProContrat: 33}
4:{name: "SUPER MAN ", id: 27, tasks: Array(9), idProContrat: 35}
5:{name: "CHAMALLOW Tagada ", id: 29, tasks: Array(35), idProContrat: 37}

ficheposteCourant:Array(1)
0:{name: "SPIDER Man ", id: 16, tasks: Array(1), idProContrat: 24}

proDispo:
code_RoulementDateR:"t526"
dateDebut:"2018-02-12"
dateFin:"2018-02-28"
dureeContrat_ProfessionnelR:null
dureeTheorique_ProfessionnelR:null
duree_RoulementDateR:9000
idPro:16
idProContrat_Old:24
idProContrat_ProfessionnelR:17
id_RoulementDateR:1235
libelle_PersonneR:"SPIDER Man "
libelle_RoulementDateR:"test4"

roulement:
code_RoulementDateR:null, 
duree_RoulementDateR:null, 
id_RoulementDateR:null, 
libelle_RoulementDateR:null,
proContratList_RoulementDateR:Array(1)
0:{id_proContratList_ProContratR: null, idProfessionnel_professionnel_ProfessionnelR: null, libelle_professionnel_PersonneR: null}

//resultat.data.data
0: 
id: 16
idProContrat: 24
name: "SPIDER Man "
tasks: Array(10)
0: {name: "t145", id: 1266, data: {…}, progress: {…}, color: "#eeaa19", …}
1: {name: "t123", id: 1206, data: {…}, progress: {…}, color: "#eeaa19", …}
2: {name: "t123", id: 1203, data: {…}, progress: {…}, color: "#eeaa19", …}
3: {name: "t526", id: 1289, data: {…}, progress: {…}, color: "#f06b19", …}
4: {name: "t145", id: 1262, data: {…}, progress: {…}, color: "#eeaa19", …}
5: {name: "t145", id: 1245, data: {…}, progress: {…}, color: "#eeaa19", …}
6: {name: "t526", id: 1229, data: {…}, progress: {…}, color: "#f06b19", …}
7: {name: "t145", id: 1201, data: {…}, progress: {…}, color: "#eeaa19", …}
8: {name: "t145", id: 1249, data: {…}, progress: {…}, color: "#eeaa19", …}
9: {name: "t526", id: 1254, data: {…}, progress: {…}, color: "#eeaa19", …}

// fct.data.roulement
0: {name: "Brown James ", id: 9, tasks: Array(10), idProContrat: 17}
1: {name: "BAT Man ", id: 15, tasks: Array(4), idProContrat: 23}
2: {name: "SPIDER Man ", id: 16, tasks: Array(19), idProContrat: 24}
3: {name: "WONDER Woman ", id: 25, tasks: Array(14), idProContrat: 33}
4: {name: "SUPER MAN ", id: 27, tasks: Array(9), idProContrat: 35}
5: {name: "CHAMALLOW Tagada ", id: 29, tasks: Array(35), idProContrat: 37}

// 6.8_PLANNING refresh tournee, loadDetails(panel)
// on rafraîchit la tournée
fct.refreshTrn(params.tournee.id);
// rafraichir plusieurs tournées
fct.refreshTrns(fct.selectedItems);
// on met à jour les détails de la tournée
params.tournee.loadDetails();