public ActionResult Edit(TrajetsViewModels vm) { vm.Trajet = db.Trajets.Find(vm.Trajet.Id); vm.listeEmplacements = vm.Trajet.Conducteur.EmplacementsFavoris.ToList(); vm.listeEmplacements.Add(vm.Trajet.Conducteur.Ecole.Emplacement); if (ModelState.IsValid) { vm.Trajet.Depart = db.Emplacements.Find(vm.selectedDepart); vm.Trajet.Arrive = db.Emplacements.Find(vm.selectedArrivee); vm.Trajet.Date = new DateTime(vm.selectedDate.Year, vm.selectedDate.Month, vm.selectedDate.Day, vm.selectedHeureDepart.Hour, vm.selectedHeureDepart.Minute, 0); // Verifier que l'utilisateur courant n'ai pas déjà des trajets sur ce jour if (db.Trajets.Where(t => t.Conducteur.Id == currentUser.Id && t.Id != vm.Trajet.Id).Where(t => t.Date.Equals(vm.Trajet.Date)).Any()) { ModelState.AddModelError("", $"Vous avez déja des Trajets de prévu sur cette période"); return(View(vm)); } // Remove Holidays and week-ends // https://stackoverflow.com/questions/3709584/business-holiday-date-handling/38366429 //db.Entry(vm.Trajet).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } return(View(vm)); }
public ActionResult Create(TrajetsViewModels vm) { vm.Conducteur = db.Users.Find(currentUser.Id); vm.listeEmplacements = vm.Conducteur.EmplacementsFavoris.ToList(); vm.listeEmplacements.Add(vm.Conducteur.Ecole.Emplacement); if (ModelState.IsValid) { if (vm.selectedDepart == vm.selectedArrivee) { ModelState.AddModelError("", $"Départ et Arrivée ne peuvent pas être identiques"); return(View(vm)); } if (vm.selectedDateDebut > vm.selectedDateFin) { ModelState.AddModelError("", $"La date de Début doit être avant la date de Fin"); return(View(vm)); } if (vm.selectedDateDebut.Date < DateTime.Now.Date) { ModelState.AddModelError("", $"Impossible de choisir une date passé pour la date de début"); return(View(vm)); } // Create listDate vm.selectedDateDebut = new DateTime(vm.selectedDateDebut.Year, vm.selectedDateDebut.Month, vm.selectedDateDebut.Day, vm.selectedHeureDepart.Hour, vm.selectedHeureDepart.Minute, 0); vm.selectedDateFin = new DateTime(vm.selectedDateFin.Year, vm.selectedDateFin.Month, vm.selectedDateFin.Day, vm.selectedHeureDepart.Hour, vm.selectedHeureDepart.Minute, 0); var listeDates = Enumerable.Range(0, 1 + vm.selectedDateFin.Subtract(vm.selectedDateDebut).Days) .Select(offset => vm.selectedDateDebut.AddDays(offset)) .ToArray(); // Verifier que l'utilisateur courant n'ai pas déjà des trajets sur cette date if (db.Trajets.Where(t => t.Conducteur.Id == currentUser.Id).Where(t => listeDates.Contains(t.Date)).Any()) { ModelState.AddModelError("", $"Vous avez déja des Trajets de prévu sur cette période"); return(View(vm)); } // Remove Holidays and week-ends // https://stackoverflow.com/questions/3709584/business-holiday-date-handling/38366429 // Create list of Trajets foreach (DateTime date in listeDates) { vm.Trajet = new Trajet() { Depart = db.Emplacements.SingleOrDefault(e => e.Id == vm.selectedDepart), Arrive = db.Emplacements.SingleOrDefault(e => e.Id == vm.selectedArrivee), Conducteur = db.Users.SingleOrDefault(u => u.Id == currentUser.Id), Date = new DateTime(date.Year, date.Month, date.Day, vm.selectedHeureDepart.Hour, vm.selectedHeureDepart.Minute, 0) }; db.Trajets.Add(vm.Trajet); } db.SaveChanges(); return(RedirectToAction("Index")); } return(View(vm)); }
public ActionResult Index() { var vm = new TrajetsViewModels(); vm.currentUser = currentUser; vm.listeTrajets = new List <Trajet>(); if (User.IsInRole("Admin") || User.IsInRole("SuperAdmin")) { vm.listeTrajets = db.Trajets.ToList(); } else { // vm.listeTrajets = db.Trajets.Where(t => t.Arrive.Id == currentUser.Ecole.Emplacement.Id || t.Depart.Id == currentUser.Ecole.Emplacement.Id).ToList(); vm.listeTrajets = db.Trajets.ToList(); } return(View(vm)); }
public ActionResult Create() { var vm = new TrajetsViewModels(); vm.Conducteur = db.Users.Find(currentUser.Id); vm.listeEmplacements = vm.Conducteur.EmplacementsFavoris.ToList(); vm.listeEmplacements.Add(vm.Conducteur.Ecole.Emplacement); if (vm.Conducteur.EmplacementsFavoris.Any()) { vm.selectedDepart = vm.Conducteur.EmplacementsFavoris[0].Id; } else { vm.selectedDepart = vm.Conducteur.Ecole.Emplacement.Id; } vm.selectedArrivee = vm.Conducteur.Ecole.Emplacement.Id; vm.selectedHeureDepart = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 8, 30, 0); vm.selectedDateDebut = DateTime.Now; return(View(vm)); }
public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } var vm = new TrajetsViewModels(); vm.Trajet = db.Trajets.Find(id); vm.listeEmplacements = vm.Trajet.Conducteur.EmplacementsFavoris.ToList(); vm.listeEmplacements.Add(vm.Trajet.Conducteur.Ecole.Emplacement); vm.selectedDepart = vm.Trajet.Depart.Id; vm.selectedArrivee = vm.Trajet.Arrive.Id; vm.selectedHeureDepart = vm.Trajet.Date; vm.selectedDate = vm.Trajet.Date; if (vm.Trajet == null) { return(HttpNotFound()); } return(View(vm)); }