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); }
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()); }