/// <summary> /// Ajoute la tâche marquée à supprimer dans une liste de tâche qui seront supprimer lors de l'appel de la méthode Save. /// </summary> private void SuppTask() { if (CurrentTask != null && CurrentTask.TotalWorkingTime == 0) { if (ListEmployeeWithAddedTasks.Where(e => e.Login == SelectedEmployee.Login).FirstOrDefault().ListTask.Where(t => t.Id == CurrentTask.Id).Any()) { // Si la tâche à supprimé était déjà présente dans la liste (elle a été ajouté pendant la session courrante) alors on la supprime de la liste des tâches modifiées. ListEmployeeWithAddedTasks.Where(e => e.Login == SelectedEmployee.Login).FirstOrDefault(). ListTask.Remove(CurrentTask); } else { ListSuppTasks.Add(CurrentTask.Id); } ListEmployee.Where(e => e.Login == SelectedEmployee.Login).FirstOrDefault(). ListTask.Remove(CurrentTask); if (CurrentTask is TaskProd) { ListTaskProd.Remove((TaskProd)CurrentTask); } else { ListTaskAnnex.Remove(CurrentTask); } } }
/// <summary> /// Sauvegarde les ajout et suppression de tâche dans la base de donnée. /// </summary> private void Save() { // Si les listes de taches à modifier sont vides, informer l'utilisateur que rien n'est à faire. if (!ListSuppTasks.Any() && ListEmployeeWithAddedTasks.Sum(e => e.ListTask.Count) == 0) { MessageBox.Show("Aucune modification à sauvegarder."); return; } // Sinon demander confirmation pour l'enregistrement var res = MessageBox.Show("Souhaitez-vous sauvegarder les modifications?", "Enregistrer?", MessageBoxButton.YesNoCancel, MessageBoxImage.Question); if (res == MessageBoxResult.Yes) { try { DAL.UpdateDatabaseTaskListOfEmployee(ListEmployeeWithAddedTasks, ListSuppTasks); //foreach (var task in ListEmployeeWithAddedTasks.Where(e => e.Login == SelectedEmployee.Login).FirstOrDefault().ListTask) //{ // VMMain.CurrentEmployee.ListTask.Add(task); //} foreach (var id in ListSuppTasks) { VMMain.CurrentEmployee.ListTask.Remove(SelectedEmployee.ListTask.Where(t => t.Id == id).FirstOrDefault()); } MessageBox.Show("La sauvegarde a bien été effectuée."); ListEmployeeWithAddedTasks.ForEach(e => e.ListTask.Clear()); ListSuppTasks.Clear(); } catch (SqlException e) { MessageBox.Show("La sauvegarde a échoué.", "Echec", MessageBoxButton.OKCancel, MessageBoxImage.Exclamation); } } }
/// <summary> /// Ajoute les tâches créée dans la fenêtre de création de tâche dans une liste de tâche à créer qui seront ajouter lors de l'appel de la méthode Save. /// </summary> private void AddTask() { UpdatedEmployee = new Employee() { Login = SelectedEmployee.Login, ListTask = new ObservableCollection <Entity.Task>(), Job = SelectedEmployee.Job }; var inputBox = new View.AddTaskWindow(new VMAddTask(UpdatedEmployee, SelectedEmployee)); inputBox.ShowDialog(); if (ListEmployeeWithAddedTasks.Where(e => e.Login == UpdatedEmployee.Login).Count() == 0) { ListEmployeeWithAddedTasks.Add(UpdatedEmployee); } else { foreach (var task in UpdatedEmployee.ListTask) { ListEmployeeWithAddedTasks.Where(e => e.Login == UpdatedEmployee.Login).FirstOrDefault().ListTask.Add(task); ListEmployee.Where(e => e.Login == SelectedEmployee.Login).First().ListTask.Add(task); if (task is TaskProd) { ;// ListTaskProd.Add((TaskProd)task); } else { ListTaskAnnex.Add(task); } } } }