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;
        }
        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 string HandleNewIssueType(IssueType newIssueType, SupportTicket supportTicket) {
            if (newIssueType != null && newIssueType.IsTransient()) {
                // Validation should already have been enforced
                if (!DataAnnotationsValidator.TryValidate(newIssueType))
                    throw new InvalidOperationException("newIssueType is in an invalid state");

                _issueTypeRepository.SaveOrUpdate(newIssueType);
                supportTicket.IssueType = newIssueType;

                return " The issue type '" + newIssueType.Name + "' has been added.";
            }

            return null;
        }
        private string HandleNewCustomer(Customer newCustomer, SupportTicket supportTicket) {
            if (newCustomer != null && newCustomer.IsTransient()) {
                // Validation should already have been enforced
                if (!DataAnnotationsValidator.TryValidate(newCustomer))
                    throw new InvalidOperationException("newCustomer is in an invalid state");

                _customerRepository.SaveOrUpdate(newCustomer);
                supportTicket.Customer = newCustomer;

                return " The newCustomer with account number " + 
                    newCustomer.AccountNumber + " has been added.";
            }

            return null;
        }