public async Task Handle(AddNewContractorCommand command, IMessageHandlerContext messageContext) { try { var contractorDto = command.Contractor; ContractorStatus status = ContractorStatus.Open; var contractDuration = new DateTimeRange(contractorDto.ContractStartDate, contractorDto.ContractEndDate); var contact = new Contact(new Name(contractorDto.ContactFirstName, contractorDto.ContactLastName), contractorDto.ContactPhoneNumber, contractorDto.ContactAlternatePhoneNumber, contractorDto.ContactEmail); var contractrorAddress = new VO.Address(contractorDto.AddressLine1, contractorDto.AddressLine2, contractorDto.City, contractorDto.StateCode, contractorDto.ZipCode); ContractorType type = contractorDto.Type; var contractorSuffix = _contractorSuffixGenerator.GetContractorSuffixForNewContractor(contractorDto.EinNumber, type); //TODO: User should be sending the GUIDs, leaving it for testing to do auto generated guid var contractor = new Entities.Contractor(contractorDto.EinNumber + contractorSuffix, contractorDto.ContractorName, contractorDto.DoingBusinessAs, status, type, contractDuration, contractorDto.PhoneNumber, contact, contractrorAddress, contractorDto.Email); _contractorRepository.AddContractor(contractor); await _contractorRepository.SaveAsync(); await Task.WhenAll(messageContext.Publish(new CommandCompletedEvent(command.Id, DateTime.UtcNow)), messageContext.Publish(new ContractorAdded(DateTime.Now, contractor.Id, contractor.EinNumber) { ContractorEin = contractor.EinNumber })); } catch (Exception ex) { //TODO: Global Exception logging await messageContext.Publish(new CommandFailedEvent(command.Id, ex, DateTime.UtcNow)); throw; } }
public void AddContractor(Entities.Contractor contractor) { contractor.DbState.FirstInsertedBy = "TODO"; contractor.DbState.FirstInsertedDateTime = DateTime.UtcNow; contractor.DbState.LastSavedBy = "TODO"; contractor.DbState.LastSavedDateTime = DateTime.UtcNow; _dbContext.Add(contractor.DbState); _eventBus.Publish(new ContractorAdded(DateTime.UtcNow, contractor.Id, contractor.EinNumber)); }
private void UpdateContractor(Entities.Contractor contractor, UpdateContractorModel updatedModel) { contractor.UpdateName(updatedModel.ContractorName); contractor.UpdateDointBusinessAsName(updatedModel.DoingBusinessAs); contractor.UpdateContactDetails(updatedModel.ContactFirstName, updatedModel.ContactLastName, updatedModel.Email, updatedModel.PhoneNumber, updatedModel.AlternatePhoneNumber); contractor.UpdateAddress(updatedModel.AddressLine1, updatedModel.AddressLine2, updatedModel.City, updatedModel.StateCode, updatedModel.ZipCode); contractor.UpdatePhoneDetails(updatedModel.PhoneNumber, updatedModel.AlternatePhoneNumber); contractor.UpdateEmail(updatedModel.Email); contractor.RenewContract(updatedModel.ContractStartDate, updatedModel.ContractEndDate); }