public override void DeleteMailGroup(int mailgroupId, IMailServerFactory factory) { if (mailgroupId < 0) { throw new ArgumentException("mailgroup_id has negative value"); } if (factory == null) { throw new ArgumentNullException("factory"); } var mailgroup = GetMailGroup(mailgroupId, factory); if (mailgroup == null) { throw new ArgumentException("Mailgroup is missing"); } using (var dbContextWithTran = TeamlabMailGroupDal.CreateMailDbContext(true)) { TeamlabMailGroupDal.DeleteMailGroup(mailgroup.Id, dbContextWithTran.DbManager); _DeleteMailGroup(new MailGroupBase(mailgroup)); dbContextWithTran.CommitTransaction(); } }
public void AddMember(int mailboxAddressId, IMailServerFactory factory) { if (mailboxAddressId < 0) { throw new ArgumentException("Negative parameter value", "mailboxAddressId"); } if (factory == null) { throw new ArgumentNullException("factory"); } MailAddressDto addressDto; using (var dbContextWithTran = TeamlabMailGroupDal.CreateMailDbContext(true)) { addressDto = TeamlabAddressDal.GetMailAddress(mailboxAddressId, dbContextWithTran.DbManager); if (addressDto == null) { throw new ArgumentException("Address not exists"); } if (Address.Domain.Tenant != addressDto.domain.tenant) { throw new ArgumentException("Address not belongs to this domain"); } if (InAddresses.Any(addr => addr.Id == mailboxAddressId)) { throw new ArgumentException("Address already exists"); } var mailboxAddress = new MailAddressBase(addressDto.name, new WebDomainBase(addressDto.domain.name)); TeamlabMailGroupDal.AddAddressToMailGroup(Id, mailboxAddressId, dbContextWithTran.DbManager); _AddMember(mailboxAddress); dbContextWithTran.CommitTransaction(); } InAddresses.Add(factory.CreateMailAddress(addressDto.id, addressDto.tenant, addressDto.name, factory.CreateWebDomain(addressDto.domain.id, addressDto.domain.tenant, addressDto.domain.name, addressDto.domain.is_virified, Server))); }
public void RemoveMember(int mailbox_address_id) { if (mailbox_address_id < 0) { throw new ArgumentException("Negative parameter value", "mailbox_address_id"); } using (var db_context_with_tran = TeamlabMailGroupDal.CreateMailDbContext(true)) { var address_dto = TeamlabAddressDal.GetMailAddress(mailbox_address_id, db_context_with_tran.DbManager); if (address_dto == null) { throw new ArgumentException("Address not exists"); } var mailbox_address = new MailAddressBase(address_dto.name, new WebDomainBase(address_dto.domain.name)); TeamlabMailGroupDal.DeleteAddressFromMailGroup(Id, mailbox_address_id, db_context_with_tran.DbManager); _RemoveMember(mailbox_address); db_context_with_tran.CommitTransaction(); } }
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); }