public void Actualiser() { _service = null; _service = new Service(); LstVTaskTime = _service.VTaskTimeChargerLstDuProjectTaskUser(_vProjectTaskUserSelectinE); //IL FAUT AUSSI VIDER LES CHAMPS POUR LES MODIFICATIONS //pour cela, on point TaskUserTime vers un nouveau qui est totalement vide TaskUserTime = new TaskUserTime(); Selection = LstVTaskTime[_indiceSelection]; _codeDErreur = CodeDErreur.PasDerreur; IsUnSelectionnE = true; }
public UserTimeViewModel() { _service = new Service(); RetourAvecVerificationCommand = new RelayCommand(RetourAvecVerification); SauverCommand = new RelayCommand(SauverAjouter); AfficherHistoryCommand = new RelayCommand(AfficherHistory); ActualiserCommand = new RelayCommand(Actualiser); Messenger.Default.Register <VProjectTaskUser>(this, LectureDuMessageEtInitialisation); //pour la lecture du "ProjectTaskUser" envoyer Messenger.Default.Register <string>(this, LectureDuMessage); //pour la fermeture de History _codeDErreur = CodeDErreur.PasDerreur; }
public void SauverAjouter()//cette methode modifi le "TaskUserTime" actuel, et ajoute l'encie dans le table "TaskUserTimeHistory" { if (Selection != null) { //il faut extraire les heures de "TaskUserTime.startDate" et "TaskUserTime.EndDate" var dd = new DateTime(); dd = new DateTime(); if (TaskUserTime.startDate != null) { dd = (DateTime)TaskUserTime.startDate; } var startDate = dd.ToString("MM/dd/yyyy"); string srtDateDebut = startDate + " " + StartHeure?.ToString("T"); //on atrribut la nouvelle "TaskUserTime.startDate" TaskUserTime.startDate = DateTime.ParseExact(srtDateDebut, "MM/dd/yyyy HH:mm:ss", CultureInfo.InvariantCulture); if (EndHeure != null)//si la date de fin existe { dd = new DateTime(); if (TaskUserTime.EndDate != null) { dd = (DateTime)TaskUserTime.EndDate; } var endDate = dd.ToString("MM/dd/yyyy"); var srtDateFin = endDate + " " + EndHeure?.ToString("T"); //on réconstitue la date de fin //on attribut le nouveau date de fin TaskUserTime.EndDate = DateTime.ParseExact(srtDateFin, "MM/dd/yyyy HH:mm:ss", CultureInfo.InvariantCulture); } //VERIFICATION SI IL Y A EU MODIF if (Selection.EndDate != TaskUserTime.EndDate || Selection.startDate != TaskUserTime.startDate) { //VERIFICATION DE LA COHERENCE DES DATES if (TaskUserTime.EndDate != null) { if (TaskUserTime.EndDate <= TaskUserTime.startDate) // && TaskUserTime.EndDate <= DateTime.Now) { _codeDErreur = CodeDErreur.DateFinPlusPetitQueDateDebut; } else if (TaskUserTime.EndDate > DateTime.Now) { _codeDErreur = CodeDErreur.DateFinDepasse; } else if (TaskUserTime.startDate > DateTime.Now) { _codeDErreur = CodeDErreur.DateDebutDepasse; } else { _codeDErreur = CodeDErreur.PasDerreur; } if (_indiceSelection > 0) { //MessageBox.Show(TaskUserTime.startDate + " et " + LstVTaskTime[_indiceSelection - 1].EndDate); if (TaskUserTime.startDate < LstVTaskTime[_indiceSelection - 1].EndDate) { _codeDErreur = CodeDErreur.DateDebutAvantDateFinPrecedent; } // MessageBox.Show("date debut avant date fin precedent"); } if (_indiceSelection < LstVTaskTime.Count - 1) { //MessageBox.Show(TaskUserTime.EndDate + " et " + LstVTaskTime[_indiceSelection + 1].startDate); if (TaskUserTime.EndDate > LstVTaskTime[_indiceSelection + 1].startDate) { _codeDErreur = CodeDErreur.DateFinApresDateDebutSuivant; } //MessageBox.Show("date fin apres date debut suivant"); } } else { _codeDErreur = TaskUserTime.startDate > DateTime.Now ? CodeDErreur.DateDebutDepasse : CodeDErreur.PasDerreur; } switch (_codeDErreur) { case CodeDErreur.DateFinDepasse: Utils.MaterialMessageBox.ShowError("Erreur: La date de fin depasse la date actuéle"); Actualiser(); break; case CodeDErreur.DateDebutDepasse: Utils.MaterialMessageBox.ShowError("Erreur: La date de début depasse la date actuéle"); Actualiser(); break; case CodeDErreur.DateFinPlusPetitQueDateDebut: Utils.MaterialMessageBox.ShowError("Erreur: la date de debut est appres à la date de fin"); Actualiser(); break; case CodeDErreur.DateDebutAvantDateFinPrecedent: Utils.MaterialMessageBox.ShowError("Erreur: la date de debut est avant la date de fin du précedent"); Actualiser(); break; case CodeDErreur.DateFinApresDateDebutSuivant: Utils.MaterialMessageBox.ShowError("Erreur: la date de fin est apres la date de debut du suivant"); Actualiser(); break; case CodeDErreur.PasDerreur: //AJOUT TaskUserTime taskUserTimeEncien = _service.TaskUserTimeCharger(Selection); _service.TaskUserTimeHistoryAjouterUnTaskUserTime(taskUserTimeEncien); //MODIF if (_service.TaskUserTimeModifier(TaskUserTime)) { Utils.MaterialMessageBox.Show("Modification bien éffectuer"); } //IL FAUT CALCULER L'EXECUTIONTIME DU "PROJECTTASK" Utils.Outils.ModificationDeExecutionTimeEtRecaluleDesTemps(TaskUserTime); Actualiser(); break; default: throw new ArgumentOutOfRangeException(); } } else { Actualiser(); } } else { Utils.MaterialMessageBox.ShowError("Sélection un champs !!"); } }