Esempio n. 1
0
        public async Task <IActionResult> New(int id)
        {
            try
            {
                var drawing = new Drawing()
                {
                    DrawingCriterionId = id,
                    DrawingCriterion   = await _drawingService.GetCriterionDetailsAsync(id),
                    WinnerCount        = 1
                };
                drawing.DrawingCriterion.EligibleCount = await _drawingService.GetEligibleCountAsync(id);

                DrawingNewViewModel viewModel = new DrawingNewViewModel()
                {
                    Drawing     = drawing,
                    CanSendMail = UserHasPermission(Permission.MailParticipants)
                };

                return(View(viewModel));
            }
            catch (GraException gex)
            {
                ShowAlertWarning("Unable to view new drawing: ", gex);
                return(RedirectToAction("Criteria"));
            }
        }
Esempio n. 2
0
        public async Task <IActionResult> New(DrawingNewViewModel model)
        {
            if (string.IsNullOrWhiteSpace(model.Drawing.NotificationSubject) &&
                !string.IsNullOrWhiteSpace(model.Drawing.NotificationMessage))
            {
                ModelState.AddModelError("NotificationSubject",
                                         "A subject is required to accompany the message");
            }

            if (!string.IsNullOrWhiteSpace(model.Drawing.NotificationSubject) &&
                string.IsNullOrWhiteSpace(model.Drawing.NotificationMessage))
            {
                ModelState.AddModelError("NotificationMessage",
                                         "A message is required to accompany the subject");
            }

            if (model.Drawing.WinnerCount > model.Drawing.DrawingCriterion.EligibleCount)
            {
                ModelState.AddModelError("WinnerCount", "Cannot have more Winners than Eligible Participants");
            }

            if (ModelState.IsValid)
            {
                try
                {
                    var drawing = await _drawingService.PerformDrawingAsync(model.Drawing);

                    return(RedirectToAction("Detail", new { id = drawing.Id }));
                }
                catch (GraException gex)
                {
                    AlertInfo = gex.Message;
                    ModelState["DrawingCriterion.EligibleCount"].RawValue =
                        await _drawingService.GetEligibleCountAsync(model.Drawing.DrawingCriterionId);

                    return(View(model));
                }
            }
            else
            {
                return(View(model));
            }
        }