public QuoteItem Accept(Guid quoteItemId) { if (!CurrentUser.HasRole(UserRole.Manager)) { throw new DomainValidationException(Messages.InsufficientSecurity, "CurrentUser"); } var quoteItem = _quoteItemRepository.GetById(quoteItemId); if (quoteItem == null) { throw new ArgumentException("An invalid quote item ID was supplied"); } if (quoteItem.Status.Type == ListItemType.StatusQuoteAccepted) { return(quoteItem); } var quoteAcceptedStatus = _listItemRepository.GetByType(ListItemType.StatusQuoteAccepted); quoteItem.Status = quoteAcceptedStatus; var jobItem = quoteItem.JobItem; jobItem.Status = quoteAcceptedStatus; _jobItemRepository.EmitItemHistory( CurrentUser, jobItem.Id, 0, 0, String.Format("Item accepted on quote {0}", quoteItem.Quote.QuoteNumber), ListItemType.StatusQuoteAccepted, ListItemType.WorkTypeAdministration); _jobItemRepository.Update(jobItem); _quoteItemRepository.Update(quoteItem); return(quoteItem); }