示例#1
0
        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());
        }
示例#2
0
        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);
                }
            }
        }