Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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;
        }
Ejemplo n.º 4
0
        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)));
        }