Ejemplo n.º 1
0
        public ICollection <PostfixMailAddressDto> GetMailboxAddress(string mailboxAddress)
        {
            const string domain_alias  = "msd";
            const string address_alias = "msa";
            var          addressQuery  = PostfixCommonQueries.GetAddressJoinedWithDomainQuery(address_alias, domain_alias)
                                         .Where(AliasTable.Columns.redirect.Prefix(address_alias), mailboxAddress)
                                         .Where(AliasTable.Columns.active.Prefix(address_alias), true)
                                         .Where(AliasTable.Columns.is_group.Prefix(address_alias), false);

            using (var db = _dbManager.GetAdminDb())
            {
                var result = db.ExecuteList(addressQuery);
                return(result.Select(r =>
                {
                    const int address_length = ToDtoConverters.MAIL_ADDRESS_COLUMNS_COUNT;

                    var address = r.SubArray(0, address_length).ToAddressDto();
                    var domainInfo = r.SubArray(address_length, r.Length - address_length).ToWebDomainDto();
                    address.Domain = domainInfo;

                    return address;
                }
                                     ).ToList());
            }
        }
        private ICollection <PostfixMailAddressDto> _GetMembers(IDbManager db)
        {
            var members = new List <PostfixMailAddressDto>();

            //Todo: Think about join this two queries
            var query_for_joined_group_address_selection = new SqlQuery(AliasTable.name)
                                                           .Select(AliasTable.Columns.redirect)
                                                           .Where(AliasTable.Columns.address, Address.ToString());

            var mail_group_addresses = db.ExecuteScalar <string>(query_for_joined_group_address_selection);

            if (null == mail_group_addresses)
            {
                return(members);
            }

            var          needed_group_addresses = mail_group_addresses.Split(',');
            const string address_alias          = "msa";
            var          group_addresses_query  = PostfixCommonQueries.GetAddressJoinedWithDomainQuery(address_alias, "msd")
// ReSharper disable CoVariantArrayConversion
                                                  .Where(Exp.In(AliasTable.Columns.address, needed_group_addresses));
// ReSharper restore CoVariantArrayConversion

            var adress_records = db.ExecuteList(group_addresses_query);

            foreach (var adress_record in adress_records)
            {
                var address = adress_record.SubArray(0, ToDtoConverters.mail_address_columns_count).ToAddressDto();
                var domain  = adress_record.SubArray(ToDtoConverters.mail_address_columns_count, ToDtoConverters.domain_columns_count).ToWebDomainDto();
                address.Domain = domain;
                members.Add(address);
            }

            return(members);
        }
Ejemplo n.º 3
0
        protected override ICollection <MailGroupBase> _GetMailGroups(ICollection <string> mail_groups_addresses)
        {
            const string address_alias    = "maa";
            var          mail_group_query = PostfixCommonQueries.GetAddressJoinedWithDomainQuery(address_alias, "mda")
                                            .Where(AliasTable.Columns.active.Prefix(address_alias), true)
                                            .Where(AliasTable.Columns.is_group.Prefix(address_alias), true)
// ReSharper disable CoVariantArrayConversion
                                            .Where(Exp.In(AliasTable.Columns.address.Prefix(address_alias), mail_groups_addresses.ToArray()));
// ReSharper restore CoVariantArrayConversion
            List <PostfixMailgroupDto> mailgroup_dto_list;

            using (var db = _dbManager.GetAdminDb())
            {
                mailgroup_dto_list = db.ExecuteList(mail_group_query).ConvertAll(r => r.ToMailgroupDto()).ToList();
            }

            return(mailgroup_dto_list
                   .Select(mailgroup_dto =>
                           new MailGroupBase(mailgroup_dto.address.ToPostfixAddress(), new List <MailAddressBase>()))
                   .ToList());
        }