public void Test_AwbRepository_GetClientEmails() { var data1 = CreateApplicationData(TestConstants.TestClientId1); var data2 = CreateApplicationData(TestConstants.TestClientId2); var id = _awbs.Add(CreateAirWaybillData(), TestConstants.DefaultStateId, TestConstants.TestAdminUserId); var a1 = _applicationEditor.Add(data1); var a2 = _applicationEditor.Add(data2); _applicationEditor.SetAirWaybill(a1, id); _applicationEditor.SetAirWaybill(a2, id); var emails = _awbs.GetClientEmails(id).Select(x => x.Email).ToArray(); var clientRepository = new ClientRepository(_executor); var client1 = clientRepository.Get(TestConstants.TestClientId1); var client2 = clientRepository.Get(TestConstants.TestClientId2); var clients = new[] { client1, client2 }; emails.ShouldAllBeEquivalentTo(clients.Select(x => x.Emails).ToArray()); }
private IEnumerable <RecipientData> GetRecipients(IEnumerable <RoleType> roles, EventDataForEntity data) { foreach (var role in roles) { switch (role) { case RoleType.Admin: { var recipients = _admins.GetAll() .Select(user => new RecipientData(user.Email, user.Language, RoleType.Admin)); foreach (var recipient in recipients) { yield return(recipient); } } break; case RoleType.Manager: { var recipients = _managers.GetAll() .Select(user => new RecipientData(user.Email, user.Language, RoleType.Manager)); foreach (var recipient in recipients) { yield return(recipient); } } break; case RoleType.Broker: var brokerId = _awbs.Get(data.EntityId).Single().BrokerId; if (brokerId.HasValue) { var broker = _brokers.Get(brokerId.Value); yield return(new RecipientData(broker.Email, broker.Language, role)); } break; case RoleType.Sender: foreach (var email in _awbs.GetSenderEmails(data.EntityId)) { yield return(new RecipientData(email.Email, email.Language, RoleType.Client)); } break; case RoleType.Client: foreach (var emailData in _awbs.GetClientEmails(data.EntityId)) { foreach (var email in EmailsHelper.SplitAndTrimEmails(emailData.Email)) { yield return(new RecipientData(email, emailData.Language, RoleType.Client)); } } break; case RoleType.Forwarder: foreach (var email in _awbs.GetForwarderEmails(data.EntityId)) { yield return(new RecipientData(email.Email, email.Language, RoleType.Client)); } break; case RoleType.Carrier: foreach (var email in _awbs.GetCarrierEmails(data.EntityId)) { yield return(new RecipientData(email.Email, email.Language, RoleType.Client)); } break; default: throw new InvalidOperationException("Unknown role " + role); } } }