Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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)));
        }
Ejemplo n.º 3
0
        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);
            }
        }
Ejemplo n.º 4
0
        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));
        }
Ejemplo n.º 5
0
        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));
        }
Ejemplo n.º 6
0
        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);
            }
        }
Ejemplo n.º 7
0
        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);
            }
        }
Ejemplo n.º 8
0
        // 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
        }
Ejemplo n.º 9
0
 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
         });
     }
 }
Ejemplo n.º 10
0
        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);
            }
        }