public ActionResult Cancelled(int id)
        {
            var slip = SlippingRepository.GetSummaries(MPID, SlippingUser.ID).FirstOrDefault(s => s.ID == id);

            if (slip != null)
            {
                return(View(slip));
            }
            else
            {
                return(RedirectToAction("NotFound", "Home"));
            }
        }
 private int SubmitSlippingRequest(SlippingRequest slippingRequest)
 {
     return(SlippingRepository.SubmitSlippingRequest(slippingRequest, SlippingUser.ID));
 }
 private int CreateOrUpdate(SlippingRequest slippingRequest)
 {
     return(SlippingRepository.CreateOrUpdate(slippingRequest, MPID, SlippingUser.ID));
 }
 private SlippingRequest Get(int requestId)
 {
     return(SlippingRepository.Get(requestId, SlippingUser.ID));
 }
        public ActionResult Review(int id, SlipSummary model)
        {
            var slip = SlippingRepository.GetSummaries(MPID, SlippingUser.ID).FirstOrDefault(s => s.ID == id);

            if (slip != null && slip.Status != "Refused" && slip.Status != "Revoked" && slip.Status != "Cancelled")
            {
                string displayDate = GetDateForEmail(slip.FromDate, slip.ToDate);

                if (CancelSlip(slip, SlippingUser.ID))
                {
                    Dictionary <string, dynamic> parameters = new Dictionary <string, dynamic>()
                    {
                        { "absence_date", displayDate },
                        { "name", string.Format("{0} {1}", SlippingUser.Forenames, SlippingUser.Surname) },
                        { "reference", slip.ID }
                    };

                    if (!string.IsNullOrEmpty(NotifyTemplateId_SlippingRequestCancelledUser))
                    {
                        if (!SlippingUser.IsMP)
                        {
                            SendNotification(NotifyTemplateId_SlippingRequestCancelledUser, SlippingUser.EmailAddress, new Dictionary <string, dynamic>()
                            {
                                { "absence_date", displayDate },
                                { "name", string.Format("{0} {1}", SlippingUser.Forenames, SlippingUser.Surname) },
                                { "reference", slip.ID }
                            });
                        }

                        MP mp = this.MPRepository.Get(slip.MPID, SlippingUser.ID);

                        if (mp != null)
                        {
                            SendNotification(NotifyTemplateId_SlippingRequestCancelledUser, GetMPEmailAddress(slip.MPID, SlippingUser.ID), new Dictionary <string, dynamic>()
                            {
                                { "absence_date", displayDate },
                                { "name", mp.Name },
                                { "reference", slip.ID }
                            });
                        }
                        else
                        {
                            throw new Exception(string.Format("Cannot find MP for Slip {0}.", slip.ID));
                        }
                    }
                    else
                    {
                        throw new Exception("NotifyTemplateId_SlippingRequestCancelledUser in web.config missing or invalid");
                    }

                    if (!string.IsNullOrEmpty(NotifyTemplateId_SlippingRequestCancelledAdmin) && !string.IsNullOrEmpty(SlippingRequestReviewersEmailAddress))
                    {
                        SendNotification(NotifyTemplateId_SlippingRequestCancelledAdmin, SlippingRequestReviewersEmailAddress, new Dictionary <string, dynamic>()
                        {
                            { "absence_date", displayDate },
                            { "name", string.Format("{0} {1}", SlippingUser.Forenames, SlippingUser.Surname) },
                            { "reference", slip.ID }
                        });
                    }
                    else
                    {
                        throw new Exception("NotifyTemplateId_SlippingRequestCancelledAdmin and/or SlippingRequestReviewersEmailAddress in web.config missing or invalid");
                    }
                    return(RedirectToAction("Cancelled"));
                }
                else
                {
                    ModelState.AddModelError("ID", "Error cancelling slip. Please try again later or contact the Whips Office.");
                    return(View(slip));
                }
            }
            else
            {
                return(RedirectToAction("NotFound", "Home"));
            }
        }
 private bool DatesOverlapExistingSlip(int MPID, DateTime fromDate, DateTime toDate)
 {
     return(SlippingRepository.DatesOverlapExistingSlip(MPID, fromDate, toDate));
 }
 private bool CancelSlip(SlipSummary slip, int userId)
 {
     return(SlippingRepository.CancelSlip(userId, slip));
 }