public ActionConfirmation <SupportTicket> Open(SupportTicketFormDto supportTicketFormDto) { if (supportTicketFormDto == null) { throw new ArgumentNullException("supportTicketFormDto is null"); } if (!DataAnnotationsValidator.TryValidate(supportTicketFormDto)) { throw new InvalidOperationException("supportTicketFormDto is in an invalid state"); } var supportTicketToSave = supportTicketFormDto.Id > 0 ? _supportTicketRepository.Get(supportTicketFormDto.Id) : CreateNewSupportTicket(supportTicketFormDto); TransferFormValuesTo(supportTicketToSave, supportTicketFormDto); var customerConfirmationMessage = HandleNewCustomer(supportTicketFormDto.NewCustomer, supportTicketToSave); var issueConfirmationMessage = HandleNewIssueType(supportTicketFormDto.NewIssueType, supportTicketToSave); _supportTicketRepository.SaveOrUpdate(supportTicketToSave); return(ActionConfirmation <SupportTicket> .CreateSuccessConfirmation("Support ticket #" + supportTicketToSave.Id + " has been opened." + customerConfirmationMessage + issueConfirmationMessage, supportTicketToSave)); }
private SupportTicket CreateNewSupportTicket(SupportTicketFormDto supportTicketFormDto) { var supportTicketToSave = new SupportTicket { OpenedBy = _contextRegistry.GetLoggedInStaffMember(), WhenOpened = DateTime.UtcNow }; supportTicketToSave.WhenResolved = supportTicketFormDto.Status == StatusType.Resolved ? supportTicketToSave.WhenOpened : new DateTime?(); return(supportTicketToSave); }
private void TransferFormValuesTo(SupportTicket supportTicketToSave, SupportTicketFormDto supportTicketFormDto) { // Note the WhenResolved time if going from not-resolved to resolved if (supportTicketToSave.Status != StatusType.Resolved && supportTicketFormDto.Status == StatusType.Resolved) { supportTicketToSave.WhenResolved = DateTime.UtcNow; } supportTicketToSave.IssueDescription = supportTicketFormDto.IssueDescription; supportTicketToSave.Resolution = supportTicketFormDto.Resolution; supportTicketToSave.Status = supportTicketFormDto.Status; supportTicketToSave.Customer = supportTicketFormDto.Customer; supportTicketToSave.IssueType = supportTicketFormDto.IssueType; }
public OpenSupportTicketViewModel CreateOpenSupportTicketViewModel(SupportTicketFormDto supportTicketFormDto) { var statusTypes = from StatusType statusType in Enum.GetValues(typeof(StatusType)) select new Pair <int, string>((int)statusType, EnumUtils.GetEnumDescription(statusType)); var viewModel = new OpenSupportTicketViewModel { SupportTicketFormDto = supportTicketFormDto, IssueTypes = _issueTypeRepository.GetAll() .OrderBy(x => x.Name), LoggedInStaffMember = _contextRegistry.GetLoggedInStaffMember(), StatusTypes = statusTypes }; return(viewModel); }
public ActionResult Edit(SupportTicketFormDto supportTicketFormDto) { if (ModelState.IsValid) { ActionConfirmation <SupportTicket> confirmation = _openSupportTicketTasks.Open(supportTicketFormDto); if (confirmation.WasSuccessful) { TempData["message"] = confirmation.Message; return(RedirectToAction("Index")); } ViewData["message"] = confirmation.Message; } return(View(_openSupportTicketTasks.CreateOpenSupportTicketViewModel(supportTicketFormDto))); }