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")); } }
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)); } }