コード例 #1
0
        public override ICollection <IMailGroup> GetMailGroups(IMailServerFactory factory)
        {
            if (factory == null)
            {
                throw new ArgumentNullException("factory");
            }

            var tlGroups = TeamlabMailGroupDal.GetMailGroups();

            var serverGroups = _GetMailGroups(tlGroups.Select(g => g.address.ToString()).ToList());

            return((serverGroups.Select(
                        serverGroup => tlGroups.First(g => g.address.ToString() == serverGroup.Address.ToString()))
                    .Select(tlGroup => new
            {
                tlGroup,
                domain =
                    factory.CreateWebDomain(tlGroup.address.domain.id,
                                            tlGroup.address.domain.tenant,
                                            tlGroup.address.domain.name,
                                            tlGroup.address.domain.is_virified, this)
            }).Select(@t => new
            {
                @t,
                address =
                    factory.CreateMailAddress(@t.tlGroup.address.id,
                                              @t.tlGroup.address.tenant,
                                              @t.tlGroup.address.name,
                                              @t.domain)
            }).Select(@t => new
            {
                @t,
                groupInAddresses =
                    @[email protected](
                        a =>
                        factory.CreateMailAddress(a.id, a.tenant, a.name,
                                                  @[email protected]))
                    .ToList()
            })
                    .Select(
                        @t =>
                        factory.CreateMailGroup(@t.@[email protected], @t.@[email protected]_tenant,
                                                @[email protected], @t.groupInAddresses.ToList(), this)))
                   .ToList());
        }
コード例 #2
0
        public override IMailGroup GetMailGroup(int mailgroupId, IMailServerFactory factory)
        {
            if (mailgroupId < 0)
            {
                throw new ArgumentException("mailgroup_id has negative value");
            }

            if (factory == null)
            {
                throw new ArgumentNullException("factory");
            }

            var mailgroupDto = TeamlabMailGroupDal.GetMailGroup(mailgroupId);

            if (mailgroupDto == null)
            {
                return(null);
            }

            var mailgroupBase = _GetMailGroup(mailgroupDto.address.ToString());

            if (mailgroupBase == null)
            {
                throw new Exception("Mailgroup is missing on server");
            }

            var mailgroupDomain = factory.CreateWebDomain(mailgroupDto.address.domain.id, mailgroupDto.address.domain.tenant, mailgroupDto.address.domain.name, mailgroupDto.address.domain.is_virified, this);

            var mailgroupAddress = factory.CreateMailAddress(mailgroupDto.address.id, mailgroupDto.address.tenant, mailgroupDto.address.name, mailgroupDomain);

            var mailgroupAddresses =
                mailgroupDto.addresses
                .Select(alias =>
                        factory.CreateMailAddress(alias.id, alias.tenant, alias.name, mailgroupDomain))
                .ToList();

            var mailgroup = factory.CreateMailGroup(mailgroupDto.id, mailgroupDto.id_tenant,
                                                    mailgroupAddress, mailgroupAddresses.ToList(), this);

            return(mailgroup);
        }
コード例 #3
0
        public override ICollection <IMailGroup> GetMailGroups(IMailServerFactory factory)
        {
            if (factory == null)
            {
                throw new ArgumentNullException("factory");
            }

            var tl_groups = TeamlabMailGroupDal.GetMailGroups();

            var server_groups = _GetMailGroups(tl_groups.Select(g => g.address.ToString()).ToList());

            var list_mail_groups = new List <IMailGroup>();

            foreach (var server_group in server_groups)
            {
                var tl_group = tl_groups.First(g => g.address.ToString() == server_group.Address.ToString());

                var domain =
                    factory.CreateWebDomain(tl_group.address.domain.id, tl_group.address.domain.tenant, tl_group.address.domain.name, tl_group.address.domain.is_virified, this);

                var address =
                    factory.CreateMailAddress(tl_group.address.id, tl_group.address.tenant, tl_group.address.name, domain);

                var group_in_addresses =
                    tl_group.addresses
                    .Select(a => factory.CreateMailAddress(a.id, a.tenant, a.name, domain))
                    .ToList();

                var mailgroup = factory.CreateMailGroup(tl_group.id, tl_group.id_tenant,
                                                        address, group_in_addresses.ToList(), this);

                list_mail_groups.Add(mailgroup);
            }

            return(list_mail_groups);
        }
コード例 #4
0
        public override IMailGroup CreateMailGroup(string groupName, IWebDomain domain, List <int> addressIds, IMailServerFactory factory)
        {
            if (string.IsNullOrEmpty(groupName))
            {
                throw new ArgumentNullException("groupName", "ServerModel::CreateMailGroup");
            }

            if (domain == null)
            {
                throw new ArgumentNullException("domain");
            }

            if (addressIds == null)
            {
                throw new ArgumentNullException("addressIds");
            }

            if (!addressIds.Any())
            {
                throw new ArgumentException("Empty address_ids list");
            }

            if (factory == null)
            {
                throw new ArgumentNullException("factory");
            }

            MailGroupDto mailgroupDto;

            using (var dbContextWithTran = TeamlabMailGroupDal.CreateMailDbContext(true))
            {
                var addressDtoList = TeamlabMailAddressDal.GetMailAddresses(addressIds, dbContextWithTran.DbManager);

                var addressBaseList =
                    addressDtoList
                    .Select(dto =>
                            new MailAddressBase(dto.name,
                                                new WebDomainBase(dto.domain.name)))
                    .ToList();

                var mailgroupBase = new MailGroupBase(new MailAddressBase(groupName, new WebDomainBase(domain)),
                                                      addressBaseList)
                {
                    Address = { DateCreated = DateTime.UtcNow }
                };

                mailgroupDto = TeamlabMailGroupDal.SaveMailGroup(mailgroupBase.Address.LocalPart,
                                                                 mailgroupBase.Address.DateCreated,
                                                                 domain.Id,
                                                                 domain.Name,
                                                                 domain.IsVerified,
                                                                 addressDtoList, dbContextWithTran.DbManager);
                _CreateMailGroup(mailgroupBase.Address, addressBaseList);

                dbContextWithTran.CommitTransaction();
            }

            var mailgroupAddress = factory.CreateMailAddress(mailgroupDto.address.id, mailgroupDto.address.tenant, mailgroupDto.address.name, domain);

            var inAddresses =
                mailgroupDto.addresses.Select(
                    addressDto => factory.CreateMailAddress(addressDto.id, addressDto.tenant, addressDto.name, domain))
                .ToList();

            var mailgroup = factory.CreateMailGroup(mailgroupDto.id, mailgroupDto.id_tenant,
                                                    mailgroupAddress, inAddresses.ToList(), this);

            return(mailgroup);
        }
コード例 #5
0
ファイル: ServerModel.cs プロジェクト: vipwan/CommunityServer
        public override IMailGroup GetMailGroup(int mailgroupId, IMailServerFactory factory)
        {
            if (mailgroupId < 0)
                throw new ArgumentException("mailgroup_id has negative value");

            if (factory == null)
                throw new ArgumentNullException("factory");

            var mailgroupDto = TeamlabMailGroupDal.GetMailGroup(mailgroupId);

            if (mailgroupDto == null)
                return null;

            var mailgroupBase = _GetMailGroup(mailgroupDto.address.ToString());

            if (mailgroupBase == null)
                throw new Exception("Mailgroup is missing on server");

            var mailgroupDomain = factory.CreateWebDomain(mailgroupDto.address.domain.id, mailgroupDto.address.domain.tenant, mailgroupDto.address.domain.name, mailgroupDto.address.domain.is_virified, this);

            var mailgroupAddress = factory.CreateMailAddress(mailgroupDto.address.id, mailgroupDto.address.tenant, mailgroupDto.address.name, mailgroupDomain);

            var mailgroupAddresses =
                mailgroupDto.addresses
                             .Select(alias =>
                                     factory.CreateMailAddress(alias.id, alias.tenant, alias.name, mailgroupDomain))
                             .ToList();

            var mailgroup = factory.CreateMailGroup(mailgroupDto.id, mailgroupDto.id_tenant, 
                mailgroupAddress, mailgroupAddresses.ToList(), this);

            return mailgroup;
        }
コード例 #6
0
ファイル: ServerModel.cs プロジェクト: vipwan/CommunityServer
        public override ICollection<IMailGroup> GetMailGroups(IMailServerFactory factory)
        {
            if (factory == null)
                throw new ArgumentNullException("factory");

            var tlGroups = TeamlabMailGroupDal.GetMailGroups();

            var serverGroups = _GetMailGroups(tlGroups.Select(g => g.address.ToString()).ToList());

            return (serverGroups.Select(
                serverGroup => tlGroups.First(g => g.address.ToString() == serverGroup.Address.ToString()))
                                .Select(tlGroup => new
                                    {
                                        tlGroup,
                                        domain =
                                                       factory.CreateWebDomain(tlGroup.address.domain.id,
                                                                               tlGroup.address.domain.tenant,
                                                                               tlGroup.address.domain.name,
                                                                               tlGroup.address.domain.is_virified, this)
                                    }).Select(@t => new
                                        {
                                            @t,
                                            address =
                                                        factory.CreateMailAddress(@t.tlGroup.address.id,
                                                                                  @t.tlGroup.address.tenant,
                                                                                  @t.tlGroup.address.name,
                                                                                  @t.domain)
                                        }).Select(@t => new
                                            {
                                                @t,
                                                groupInAddresses =
                                                            @[email protected](
                                                                a =>
                                                                factory.CreateMailAddress(a.id, a.tenant, a.name,
                                                                                          @[email protected]))
                                                              .ToList()
                                            })
                                .Select(
                                    @t =>
                                    factory.CreateMailGroup(@t.@[email protected], @t.@[email protected]_tenant,
                                                            @[email protected], @t.groupInAddresses.ToList(), this)))
                .ToList();
        }
コード例 #7
0
ファイル: ServerModel.cs プロジェクト: vipwan/CommunityServer
        public override IMailGroup CreateMailGroup(string groupName, IWebDomain domain, List<int> addressIds, IMailServerFactory factory)
        {
            if (string.IsNullOrEmpty(groupName))
                throw new ArgumentNullException("groupName", "ServerModel::CreateMailGroup");

            if (domain == null)
                throw new ArgumentNullException("domain");

            if (addressIds == null)
                throw new ArgumentNullException("addressIds");

            if(!addressIds.Any())
                throw new ArgumentException("Empty address_ids list");

            if (factory == null)
                throw new ArgumentNullException("factory");

            MailGroupDto mailgroupDto;

            using (var dbContextWithTran = TeamlabMailGroupDal.CreateMailDbContext(true))
            {
                var addressDtoList = TeamlabMailAddressDal.GetMailAddresses(addressIds, dbContextWithTran.DbManager);

                var addressBaseList =
                    addressDtoList
                        .Select(dto =>
                                new MailAddressBase(dto.name,
                                                    new WebDomainBase(dto.domain.name)))
                        .ToList();

                var mailgroupBase = new MailGroupBase(new MailAddressBase(groupName, new WebDomainBase(domain)),
                                                       addressBaseList);
                mailgroupDto = TeamlabMailGroupDal.SaveMailGroup(mailgroupBase.Address.LocalPart,
                                                                  mailgroupBase.Address.DateCreated,
                                                                  domain.Id,
                                                                  domain.Name,
                                                                  domain.IsVerified,
                                                                  addressDtoList, dbContextWithTran.DbManager);
                _CreateMailGroup(mailgroupBase.Address, addressBaseList);

                dbContextWithTran.CommitTransaction();
            }

            var mailgroupAddress = factory.CreateMailAddress(mailgroupDto.address.id, mailgroupDto.address.tenant, mailgroupDto.address.name, domain);

            var inAddresses =
                mailgroupDto.addresses.Select(
                    addressDto => factory.CreateMailAddress(addressDto.id, addressDto.tenant, addressDto.name, domain))
                               .ToList();

            var mailgroup = factory.CreateMailGroup(mailgroupDto.id, mailgroupDto.id_tenant, 
                mailgroupAddress, inAddresses.ToList(), this);

            return mailgroup;
        }