public ActionResult Delete(int id, SlotRange range) { SlotRange sr = SlotRangeModel.GetSlotRange(id); if (IsAuthorized(SlotRangeModel.GetSlotRange(id))) { try { SlotRangeModel.DeleteSlotRange(id, range); return(RedirectToAction("CourseRanges", new { id = sr.IdCourse })); } catch (GrException gex) { ModelState.AddModelError("", gex.UserMessage); // get updated data SlotRange range_ = SlotRangeModel.GetSlotRange(id); // update timestamp in case user really wants to delete this ModelState.SetModelValue("Timestamp", new ValueProviderResult(range_.Timestamp, "", CultureInfo.InvariantCulture)); // show new values before user decided to really delete them return(View(range_)); //ViewBag.ErrorMode = "la suppression"; //return View("Error", exx); } } else { SessionManager.RedirectAccessDenied(HttpContext.Request.RequestContext); return(null); } }
public ActionResult Script(int id) { SlotRange range = SlotRangeModel.GetSlotRange(id); string script = range.GenerateScript(); return(File(Encoding.UTF8.GetBytes(script), "text/plain", string.Format("scripts_cours_{0}.sh", id))); }
public ActionResult Edit(int id, SlotRange range) { if (IsAuthorized(range)) { if (ModelState.IsValid) { try { SlotRangeModel.UpdateSlotRange(range); // schedule linux script to be sent to resource manager by email ScheduleEmail(range); ViewBag.Mode = "mise a jour"; return(View("Complete", range)); } catch (GrException gex) { ModelState.AddModelError("", gex.UserMessage); return(View(range)); } } InitViewbag(range.IdCourse); ModelState.AddModelError("", Messages.invalidData); return(View(range)); } else { SessionManager.RedirectAccessDenied(HttpContext.Request.RequestContext); return(null); } }
public ActionResult Create(SlotRange range) { InitViewbag(range.IdCourse); if (ModelState.IsValid) { try { SlotRangeModel.CreateSlotRange(range); ViewBag.Mode = "créée"; // schedule linux script to be sent to resource manager by email ScheduleEmail(range); return(View("Complete", range)); } catch (GrException gex) { ModelState.AddModelError("", gex.UserMessage); ViewBag.Error = gex.UserMessage; System.Diagnostics.Debug.WriteLine(gex.UserMessage); System.Diagnostics.Debug.WriteLine(gex.StackTrace); return(View(range)); } } ModelState.AddModelError("", Messages.invalidData); return(View(range)); }
public ActionResult ReserveSlotRange(int id) { InitViewbag(id); ReserveSlotRangeViewModel viewModel = new ReserveSlotRangeViewModel(); Course course = CourseModel.GetCourse(id); viewModel.Course = course; viewModel.SlotRanges = course.GetValidSlotRangesForCourse(); int?id_person = SessionManager.GetCurrentUserId(HttpContext.User.Identity.Name); viewModel.Reservations = SlotRangeModel.getReservations(id, id_person); return(View(viewModel)); }
public ActionResult Duplicate(Course course) { if (IsAuthorized(course.ID)) { if (ModelState.IsValid) { try { course.Responsible = (int)SessionManager.GetCurrentUserId(HttpContext.User.Identity.Name); int id_course = CourseModel.CreateCourse(course); List <SlotRange> slotRanges = course.GetSlotRangesForCourse(); int days = 0; foreach (SlotRange sr in slotRanges) { if (days == 0) { TimeSpan span = course.DuplDestDate - sr.StartRes; days = (int)span.TotalDays; } SlotRangeModel.DuplicateSlotRange(sr, days, id_course); } return(RedirectToAction("Index")); } catch (GrException gex) { System.Diagnostics.Debug.WriteLine(gex.UserMessage); System.Diagnostics.Debug.WriteLine(gex.StackTrace); ModelState.AddModelError("", gex.UserMessage); return(View(course)); } } else { // addinge extra error message here in case JS is deactivated on client. ModelState.AddModelError("", "vous avez envoyé des données invalides"); return(View(course)); } } else { SessionManager.RedirectAccessDenied(HttpContext.Request.RequestContext); return(null); } }
public ActionResult Delete(int id) { SlotRange range = SlotRangeModel.GetSlotRange(id); if (range == null) { return(View("NoSuchRange")); } int?rId = range.GetResponsible(); if (IsAuthorized(range)) { return(View(range)); } else { SessionManager.RedirectAccessDenied(HttpContext.Request.RequestContext); return(null); } }
// this method uses host-based authentication /// <summary> /// GET: /SlotRange/EmailScript/3 /// </summary> /// <param name="id"></param> /// <returns></returns> public ActionResult EmailScript(int id) { if (Request.Url.Host != "localhost" && Request.UserHostAddress != "127.0.0.1") { throw new Exception("access denied"); } SlotRange range = SlotRangeModel.GetSlotRange(id); if (range == null) { throw new Exception("invalid id"); } string script = range.GenerateScript(); // get email address of resource manager List <Person> persons = PersonModel.GetResourceManagers(); string resMgrs = PersonModel.GetEmailCSV(persons); // send script to resourceManager(s) via E-Mail System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage(); //message.From = new System.Net.Mail.MailAddress("*****@*****.**"); message.To.Add(resMgrs); message.IsBodyHtml = false; message.Subject = "Script Linux pour le SlotRange '" + range.id_slotRange + "'"; message.BodyEncoding = System.Text.Encoding.GetEncoding("utf-8"); message.From = new System.Net.Mail.MailAddress("*****@*****.**"); message.Body = script; System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient(); client.Send(message); // for demo backup, also write to a file return(View(range)); // can be implemented for testing purposes }
public JsonResult Reserve(int id, bool reserve) { try { if (reserve) { SlotRangeModel.ReserveSlot(id, (int)SessionManager.GetCurrentUserId(HttpContext.User.Identity.Name)); } else { SlotRangeModel.UnReserveSlot(id, SessionManager.GetCurrentUserId(HttpContext.User.Identity.Name)); } return(new JsonResult { Data = new { Success = true, Message = "Bravo" }, JsonRequestBehavior = JsonRequestBehavior.AllowGet }); } catch (GrException gex) { return(new JsonResult { Data = new { Success = false, Message = gex.UserMessage }, JsonRequestBehavior = JsonRequestBehavior.AllowGet }); } }
public ActionResult Duplicate(int id, SlotRange target) { SlotRange source = SlotRangeModel.GetSlotRange(id); if (source == null) { return(View("NoSuchRange")); } int?rId = source.GetResponsible(); if (IsAuthorized(source)) { TimeSpan span = target.StartRes - source.StartRes; int days = (int)span.TotalDays; SlotRangeModel.DuplicateSlotRange(source, days, source.IdCourse); return(RedirectToAction("CourseRanges", new { id = source.IdCourse })); } else { SessionManager.RedirectAccessDenied(HttpContext.Request.RequestContext); return(null); } }