public bool CoursCompetence([FromBody][Bind("NomCours,CodeCompetence, Complete")] CompetenceCoursVM coursCompetencesVM) { List <CoursCompetences> listecoursCompetence = this._context.CoursCompetences.ToList(); CoursCompetences coursCompetences = new CoursCompetences { NoCours = this._context.Cours.ToList().Find(x => x.NomCours == coursCompetencesVM.NomCours).NoCours, CodeCompetence = coursCompetencesVM.CodeCompetence, Complete = coursCompetencesVM.Complete }; if (listecoursCompetence.Any(x => x.NoCours == coursCompetences.NoCours && x.CodeCompetence == coursCompetences.CodeCompetence)) { return(true); } else { return(false); } }
public async Task <IActionResult> AjouterNbHeures([FromBody][Bind("NomCours,CodeCompetence,NbHCoursCompetence")] List <CompetenceCoursVM> ListecoursComp) { try { if (ModelState.IsValid) { //Obtenir tout els cours et competences differents List <string> listeNomCours = new List <string>(); List <string> listeCodeCompetence = new List <string>(); foreach (CompetenceCoursVM coursComp in ListecoursComp) { string nomCours = coursComp.NomCours; if (!listeNomCours.Contains(nomCours)) { listeNomCours.Add(nomCours); } string codeCompetence = coursComp.CodeCompetence; if (!listeCodeCompetence.Contains(codeCompetence)) { listeCodeCompetence.Add(codeCompetence); } } foreach (string cours in listeNomCours) { int compteurCours = 0; int totalCours = CalculerHeuresCours(this._context.Cours.ToList().Find(x => x.NomCours == cours).PonderationCours); foreach (CompetenceCoursVM coursComp in ListecoursComp) { //Ne faire que le cours sélectionné if (coursComp.NomCours == cours) { Cours coursSelection = _context.Cours.ToList().Find(x => x.NomCours == coursComp.NomCours); string noCours = coursSelection.NoCours; string codeCompetence = coursComp.CodeCompetence; int nbHeure = coursComp.NbHCoursCompetence; //Ajouter au grand compteur compteurCours += nbHeure; //Envoyer un erreur imédiatement si le nombre d'heure totale est dépassé if (compteurCours > totalCours) { return(Ok("Trop d'heures pour le cours")); } //Effectuer les validations pour respecter la pondération du cours et le nombre d'heure de la compétence dans la session //Trouver le bon cours/compétence CoursCompetences upDateCoursComp = this._context.CoursCompetences.ToList().Find(x => x.NoCours == noCours && x.CodeCompetence == codeCompetence); //Ajouter le nombre d'heure upDateCoursComp.NbHcoursCompetence = nbHeure; } } //S'assurer le le nombre d'heure corresponde exactement au total if (compteurCours != totalCours) { return(Ok("Il manque d'heures pour le cours")); } } foreach (string competence in listeCodeCompetence) { int compteurTotalCompetence = 0; string coursQuelquonque = ListecoursComp.First().NomCours; string session = this._context.Cours.ToList().Find(x => x.NomCours == coursQuelquonque).NomSession; int totalCompetence = this._context.RepartitionHeuresession.ToList().Find(x => x.CodeCompetence == competence && x.NomSession == session).NbhCompetenceSession; foreach (CompetenceCoursVM coursComp in ListecoursComp) { if (coursComp.CodeCompetence == competence) { List <RepartirHeureCompetence> listRepartirCompetence = new List <RepartirHeureCompetence>(); //Liste des compétences contenues dans ce cours //Trouver le noCours string numCours = this._context.Cours.ToList().Find(x => x.NomCours == coursComp.NomCours).NoCours; List <CoursCompetences> listeCoursCompetence = this._context.CoursCompetences.ToList().FindAll(x => x.NoCours == numCours); //Faire un foreach de chaque compétence pour s'assurer que le nombre d'heures de ceux-ci soit respecté int nbHeures = coursComp.NbHCoursCompetence; compteurTotalCompetence += nbHeures; if (compteurTotalCompetence > totalCompetence) { return(Ok("Trop d'heure pour la compétence")); } } } if (compteurTotalCompetence != totalCompetence) { return(Ok("Il manque d'heures pour la compétence")); } } //Sauvegarder await _context.SaveChangesAsync(); return(Ok("Nombre d'heures ajouté avec succès")); } return(BadRequest("error")); } catch (Exception e) { return(View("\\Views\\Shared\\page_erreur.cshtml")); } }