public void Handle(EmailReceivedMessage emailMessage) { Data.EmailReceivedMessage = emailMessage; var requestersDtoToCreate = new List <RequesterDTO>(); var fromAddress = new MailAddressLite { Address = emailMessage.Mail.FromAddress, DisplayName = emailMessage.Mail.FromDisplayName }; ProcessAddress(fromAddress, requestersDtoToCreate); if (emailMessage.Mail.CC != null) { foreach (var ccAddress in emailMessage.Mail.CC) { ProcessAddress(ccAddress, requestersDtoToCreate); } } if (requestersDtoToCreate.Empty()) { var fromRequester = GetRequesterByAddress(fromAddress.Address); InvokeRules(fromRequester.Id); } else { SendLocal(new CreateRequestersForMessageCommandInternal { RequestersDto = requestersDtoToCreate.ToArray(), OuterSagaId = Data.Id }); } }
private static RequesterDTO CreateRequesterDtoFromAddress(MailAddressLite address) { var requesterDto = new RequesterDTO { Email = address.Address, SourceType = RequesterSourceTypeEnum.Mail }; if (string.IsNullOrEmpty(address.DisplayName)) { return(requesterDto); } var name = address.DisplayName.Split(new[] { ' ' }, 2); switch (name.Length) { case 1: requesterDto.FirstName = string.IsNullOrEmpty(name[0]) ? address.Address : name[0]; break; case 2: requesterDto.FirstName = name[0]; requesterDto.LastName = name[1]; break; } return(requesterDto); }
private void ProcessAddress(MailAddressLite address, List <RequesterDTO> requestersDtoToCreate) { var requester = GetRequesterByAddress(address.Address); if (requester != null) { RestoreDeletedRequester(requester); } else { var requesterDto = CreateRequesterDtoFromAddress(address); requestersDtoToCreate.Add(requesterDto); } }