コード例 #1
0
        public static ExtraTicketPetition ExtraTicketPetition(int count)
        {
            var rtValue = new ExtraTicketPetition();
            rtValue.NumberTicketsRequested = 1;
            rtValue.Reason = "Reason" + count;
            //rtValue.SetIdTo(count);

            return rtValue;
        }
コード例 #2
0
        public ActionResult ExtraTicketPetition(int id, List<ExtraTicketPetitionPostModel> extraTicketPetitions)
        {
            var registration = Repository.OfType<Registration>().GetNullableById(id);
            if (registration == null                                        // requires registration
                || registration.Student.Login != CurrentUser.Identity.Name  // validate the user
                )
            {
                return this.RedirectToAction<StudentController>(a => a.Index());
            }

            var ceremonyParticipations = new List<RegistrationParticipation>();

            foreach (var a in extraTicketPetitions.Where(b=>b.NumberTickets > 0 || b.NumberStreamingTickets > 0))
            {
                var tickets = a.Ceremony.HasStreamingTickets ? a.NumberTickets + a.NumberStreamingTickets : a.NumberTickets;

                if (tickets > a.Ceremony.ExtraTicketPerStudent)
                {
                    ModelState.AddModelError("# Tickets", string.Format("Petition for {0} has too many tickets selected.  The max is {1} for this ceremony.", a.Ceremony.CeremonyName, a.Ceremony.ExtraTicketPerStudent));
                }
                else if (DateTime.UtcNow.ToPacificTime() > a.Ceremony.ExtraTicketDeadline.AddDays(1))
                {
                    ModelState.AddModelError("Deadline", string.Format("Petition for {0} has past the deadline.", a.Ceremony.CeremonyName));
                }
                else if (a.RegistrationParticipation.ExtraTicketPetition != null)
                {
                    ModelState.AddModelError("ExtraTicketPetition", string.Format("Our records indicate that you have already submitted a petition for {0}", a.Ceremony.CeremonyName));
                }
                else if (string.IsNullOrWhiteSpace(a.Reason))
                {
                    ModelState.AddModelError(string.Format("Reason{0}", a.Ceremony.Id), string.Format("Reason cannot be blank for petition {0}", a.Ceremony.CeremonyName));
                }
                else if (a.Reason.Length > 100)
                {
                    ModelState.AddModelError(string.Format("Reason{0}", a.Ceremony.Id), string.Format("Reason must be 100 characters or less for petition {0}", a.Ceremony.CeremonyName));
                }
                // validate the deadline before creating valid request, and no previous
                else
                {
                    var etp = new ExtraTicketPetition(a.NumberTickets, a.Reason, a.Ceremony.HasStreamingTickets ? a.NumberStreamingTickets : 0);
                    a.RegistrationParticipation.ExtraTicketPetition = etp;
                    ceremonyParticipations.Add(a.RegistrationParticipation);
                }

            }

            if (ModelState.IsValid)
            {
                foreach (var registrationParticipation in ceremonyParticipations)
                {
                    Repository.OfType<RegistrationParticipation>().EnsurePersistent(registrationParticipation);

                    try
                    {
                        _emailService.QueueExtraTicketPetition(registrationParticipation);
                    }
                    catch (Exception ex)
                    {
                        _errorService.ReportError(ex);
                        Message += StaticValues.Student_Email_Problem;
                    }
                }

                Message = "Successfully submitted extra ticket petition(s).";
                return this.RedirectToAction<StudentController>(a => a.DisplayRegistration());
            }

            var viewModel = ExtraTicketPetitionModel.Create(Repository, registration);
            viewModel.ExtraTicketPetitionPostModels = extraTicketPetitions;
            return View(viewModel);
        }
コード例 #3
0
        public string GenerateExtraTicketRequestPetitionConfirmation(RegistrationParticipation registrationParticipation, Template template)
        {
            Check.Require(registrationParticipation != null, "registrationParticipation is required.");
            Check.Require(registrationParticipation.Registration.Student != null, "registrationParticipation.Registration.Student is required.");
            Check.Require(template != null, "template is required.");
            Check.Require(template.TemplateType.Name == StaticValues.Template_TicketPetition, "Template mismatch.");
            Check.Require(registrationParticipation.Registration != null, "registrationParticipation.Registration is required.");
            Check.Require(registrationParticipation.ExtraTicketPetition != null, "registrationParticipation.ExtraTicketPetition is required.");

            _ceremony = registrationParticipation.Ceremony;
            _student = registrationParticipation.Registration.Student;
            _registrationParticipation = registrationParticipation;
            _registration = registrationParticipation.Registration;
            _template = template;
            _extraTicketPetition = registrationParticipation.ExtraTicketPetition;

            return HandleBody(template.BodyText);
        }
コード例 #4
0
        public string GenerateExtraTicketRequestPetitionDecision(RegistrationParticipation registrationParticipation, Template template, Attachment attachment, HttpRequestBase request, UrlHelper url, string body = null)
        {
            Check.Require(registrationParticipation != null, "registrationParticipation is required.");
            Check.Require(registrationParticipation.Registration.Student != null, "registrationParticipation.Registration.Student is required.");
            Check.Require(template != null, "template is required.");
            Check.Require(template.TemplateType.Name == StaticValues.Template_TicketPetition_Decision, "Template mismatch.");
            Check.Require(registrationParticipation.Registration != null, "registrationParticipation.Registration is required.");
            Check.Require(registrationParticipation.ExtraTicketPetition != null, "registrationParticipation.ExtraTicketPetition is required.");

            _ceremony = registrationParticipation.Ceremony;
            _student = registrationParticipation.Registration.Student;
            _registrationParticipation = registrationParticipation;
            _registration = registrationParticipation.Registration;
            _template = template;
            _attachment = attachment;
            _request = request;
            _url = url;

            _extraTicketPetition = registrationParticipation.ExtraTicketPetition;
            if(string.IsNullOrWhiteSpace(body))
            {
                return HandleBody(template.BodyText);
            }
            else
            {
                return HandleBody(body);
            }
        }