1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172
| public class CCE_DOS_PlanningRessource {
public Date Today_180 = Date.today() - 180;
private final Astreinte__c Astreinte;
//Pour pouvoir prendre ce contrôleur comme extensions sur la page visualforce
public CCE_DOS_PlanningRessource (ApexPages.StandardController controller) {
this.Astreinte = (Astreinte__c)controller.getRecord();
}
ApexPages.StandardSetController controller;
public CCE_DOS_PlanningRessource(ApexPages.StandardSetController controller) {
this.controller= controller;
}
//Liste des évènements
public list<calEvent> events {get;set;}
//Le plugin calendrier a besoin d'un format de date. On utilise un string pour lui donner le bon format
String dtFormat = 'd MMM yyyy HH:mm:ss';
//Constructeur
public CCE_DOS_PlanningRessource() {
}
//Combobox avec les niveaux d'astreinte
public String NiveauNum ='Astreinte';
public String getNiveauNum() {return NiveauNum;}
public void setNiveauNum(String niv) {NiveauNum = niv;}
public List<SelectOption> getOptionNiveau()
{
List<SelectOption> options = new List<SelectOption>();
options.add(new SelectOption('Astreinte', 'Astreinte'));
options.add(new SelectOption('Absence', 'Absence'));
options.add(new SelectOption('Les deux', 'Les deux'));
return options;
}
public PageReference pageLoad() {
events = new list<calEvent>();
List<Planification_Astreinte__c> PA = new List<Planification_Astreinte__c>();
IF(NiveauNum == 'Astreinte'){
PA = [SELECT Prime_Euro__c, Ressource_INEO__c, Temps_recuperer__c, Ressource_INEO__r.Name, Ressource_INEO__r.prenom__c, Niveau__c, Date_debut__c, Date_fin__c, Astreinte__r.Id, Astreinte__r.Name, RecordType.Name
FROM Planification_Astreinte__c
WHERE (Date_fin__c >= :Today_180)
AND (Ressource_INEO__r.Id =:controller.getSelected())
AND (RecordType.Name != 'Absence')];
}
ELSE IF(NiveauNum == 'Absence'){
PA = [SELECT Prime_Euro__c, Ressource_INEO__c, Temps_recuperer__c, Ressource_INEO__r.Name, Demi_journee__c, Type__c, Ressource_INEO__r.prenom__c, Niveau__c, Date_debut__c, Date_fin__c, Astreinte__r.Id, Astreinte__r.Name, RecordType.Name
FROM Planification_Astreinte__c
WHERE (Date_fin__c >= :Today_180)
AND (Ressource_INEO__r.Id =:controller.getSelected())
AND (RecordType.Name='Absence') ];
}
ELSE IF(NiveauNum == 'Les deux'){
PA = [SELECT Prime_Euro__c, Ressource_INEO__c, Temps_recuperer__c, Demi_journee__c, Ressource_INEO__r.Name, Type__c, Ressource_INEO__r.prenom__c, Niveau__c, Date_debut__c, Date_fin__c, Astreinte__r.Id, Astreinte__r.Name, RecordType.Name
FROM Planification_Astreinte__c
WHERE (Date_fin__c >= :Today_180)
AND (Ressource_INEO__r.Id =:controller.getSelected())];
}
//Boucle pour chaque planification astreinte : ma requête
for(Planification_Astreinte__c Planif : PA){
IF (Planif.RecordType.Name != 'Absence')
{
//Définition de la date de début
DateTime startDT = Planif.Date_debut__c;
//Définition de la date de fin
DateTime endDT = Planif.Date_fin__c +1;
//Nouvel évènement
calEvent AstEvent = new calEvent();
//Définition du titre qui sera afficher dans les cases des jours sur le calendrier : Nom + Prénom
AstEvent.title = Planif.Ressource_INEO__r.Name + ' ' + Planif.Ressource_INEO__r.prenom__c + ' (' + Planif.Niveau__c + ' - ' + Planif.Astreinte__r.Name + ')';
//Définition des détails que l'on va utiliser avec un eventMouseover dans la page visualforce (s'affiche au passage de la souris)
AstEvent.detail = 'Prime : ' + Planif.Prime_Euro__c + ' Temps récup : ' + Planif.Temps_recuperer__c;
AstEvent.allDay = true;
//On met au bon format la date de début et la date de fin
AstEvent.startString = startDT.format(dtFormat);
AstEvent.endString = endDT.format(dtFormat);
//Url permet de faire le lien entre le calendrier et la page planification d'astreinte lorsque l'on clique
AstEvent.url ='/' + Planif.Id;
AstEvent.className = 'event-birthday';
events.add(AstEvent);
}
ELSE IF (Planif.RecordType.Name == 'Absence' )
{
//Définition de la date de début
DateTime startDT = Planif.Date_debut__c;
//Définition de la date de fin
DateTime endDT = Planif.Date_fin__c +1;
//Nouvel évènement
calEvent AstEvent = new calEvent();
//Définition du titre qui sera afficher dans les cases des jours sur le calendrier : Nom + Prénom
AstEvent.title = Planif.Ressource_INEO__r.Name + ' ' + Planif.Ressource_INEO__r.prenom__c + ' (' + Planif.Type__c + ')' ;
//Définition des détails que l'on va utiliser avec un eventMouseover dans la page visualforce (s'affiche au passage de la souris)
AstEvent.detail = 'Type absence : ' + Planif.Type__c + ' Journée : ' + Planif.Demi_journee__c;
AstEvent.allDay = true;
//On met au bon format la date de début et la date de fin
AstEvent.startString = startDT.format(dtFormat);
AstEvent.endString = endDT.format(dtFormat);
//Url permet de faire le lien entre le calendrier et la page planification d'astreinte lorsque l'on clique
AstEvent.url ='/' + Planif.Id;
AstEvent.className = 'event-absence';
events.add(AstEvent);
}
//Ajout de l'évènement à la liste d'évènements
}
return null;
}
//Classe des données que comporte un évènement
public class calEvent{
//Titre de l'évènement, dans le cas présent : Nom + Prénom
public String title {get;set;}
//Détail de l'évènement, dans le cas présent : Prime + Temps récup
public String detail {get;set;}
//Couleur de l'évènement, dans le cas présent : couleur aléatoire
public String color {get;set;}
public Boolean allDay {get;set;}
//Date de début de l'évènement
public String startString {get;private set;}
//Date de fin de l'évènement
public String endString {get;private set;}
//Lien de la planification astreinte
public String url{get;set;}
//C'était de base pour les trois couleurs
public String className {get;set;}
}
} |
Partager