public override IMailbox GetMailbox(int mailboxId, IMailServerFactory factory) { if (mailboxId < 0) { throw new ArgumentException("mailbox_id has negative value"); } if (factory == null) { throw new ArgumentNullException("factory"); } MailboxWithAddressDto mailboxDto; List <MailAddressDto> aliasesDtoList; using (var dbContext = TeamlabMailboxDal.CreateMailDbContext()) { mailboxDto = TeamlabMailboxDal.GetMailbox(mailboxId, dbContext.DbManager); aliasesDtoList = TeamlabMailAddressDal.GetMailboxAliases(mailboxId, dbContext.DbManager); } if (mailboxDto == null) { return(null); } var mailboxBase = _GetMailbox(mailboxDto.mailbox_address.ToString()); if (mailboxBase == null) { throw new Exception("Mailbox is missing on server"); } var mailboxDomain = factory.CreateWebDomain(mailboxDto.mailbox_address.domain.id, mailboxDto.mailbox_address.domain.tenant, mailboxDto.mailbox_address.domain.name, mailboxDto.mailbox_address.domain.is_virified, this); var mailboxAddress = factory.CreateMailAddress(mailboxDto.mailbox_address.id, mailboxDto.mailbox_address.tenant, mailboxDto.mailbox_address.name, mailboxDomain); var account = CoreContext.Authentication.GetAccountByID(new Guid(mailboxDto.mailbox.user)); var mailboxAccount = factory.CreateMailAccount(account, mailboxBase.Account.Login); var mailboxAliases = aliasesDtoList .Select(alias => factory.CreateMailAddress(alias.id, alias.tenant, alias.name, mailboxDomain)) .ToList(); var mailbox = factory.CreateMailbox(mailboxDto.mailbox.id, mailboxDto.mailbox.tenant, mailboxAddress, mailboxDto.mailbox.name, mailboxAccount, mailboxAliases.ToList(), this); return(mailbox); }
public override IMailbox CreateMailbox(string name, string localpart, string password, IWebDomain domain, IMailAccount account, IMailServerFactory factory) { if (string.IsNullOrEmpty(localpart)) { throw new ArgumentNullException("localpart"); } if (domain == null) { throw new ArgumentNullException("domain"); } if (account == null) { throw new ArgumentNullException("account"); } if (localpart.Length + domain.Name.Length > 318) // 318 because of @ sign { throw new ArgumentException("Address of mailbox exceed limitation of 319 characters.", "localpart"); } var mailboxBase = new MailboxBase(new MailAccountBase(account.Login), new MailAddressBase(localpart, new WebDomainBase(domain)), name, new List <MailAddressBase>()) { Address = { DateCreated = DateTime.UtcNow } }; MailboxWithAddressDto mailboxWithAddressDto; using (var dbContextWithTran = TeamlabMailboxDal.CreateMailDbContext(true)) { mailboxWithAddressDto = TeamlabMailboxDal.CreateMailbox(account.TeamlabAccount, mailboxBase.Name, mailboxBase.Address.ToString(), password, mailboxBase.Address.LocalPart, mailboxBase.Address.DateCreated, domain.Id, domain.Name, domain.IsVerified, dbContextWithTran.DbManager); _CreateMailbox(account.Login, password, localpart, domain.Name, name); dbContextWithTran.CommitTransaction(); } var mailboxAddress = factory.CreateMailAddress(mailboxWithAddressDto.mailbox_address.id, mailboxWithAddressDto.mailbox_address.tenant, mailboxWithAddressDto.mailbox_address.name, domain); var mailbox = factory.CreateMailbox(mailboxWithAddressDto.mailbox.id, mailboxWithAddressDto.mailbox.tenant, mailboxAddress, mailboxWithAddressDto.mailbox.name, account, new List <IMailAddress>(), this); return(mailbox); }
public override void UpdateMailbox(IMailbox mailbox, string name, IMailServerFactory factory) { var newMailbox = factory.CreateMailbox(mailbox.Id, mailbox.Tenant, mailbox.Address, name, mailbox.Account, mailbox.Aliases.ToList(), this); using (var dbContextWithTran = TeamlabMailboxDal.CreateMailDbContext(true)) { TeamlabMailboxDal.UpdateMailbox(newMailbox.Account.TeamlabAccount, newMailbox.Id, newMailbox.Name, dbContextWithTran.DbManager); _UpdateMailbox(new MailboxBase(newMailbox)); dbContextWithTran.CommitTransaction(); } }
public override ICollection <IMailbox> GetMailboxes(IMailServerFactory factory) { if (factory == null) { throw new ArgumentNullException("factory"); } var mailboxList = new List <IMailbox>(); using (var dbContext = TeamlabMailboxDal.CreateMailDbContext()) { var mailboxDtoList = TeamlabMailboxDal.GetMailboxes(dbContext.DbManager); var mailboxBaseList = _GetMailboxes(mailboxDtoList.ConvertAll(d => d.mailbox.address)); mailboxList.AddRange(from serverMailbox in mailboxBaseList let mailboxDto = mailboxDtoList.Find(d => d.mailbox.address == serverMailbox.Address.ToString()) let domain = factory.CreateWebDomain(mailboxDto.mailbox_address.domain.id, mailboxDto.mailbox_address.domain.tenant, mailboxDto.mailbox_address.domain.name, mailboxDto.mailbox_address.domain.is_virified, this) let mailboxAddress = factory.CreateMailAddress(mailboxDto.mailbox_address.id, mailboxDto.mailbox_address.tenant, mailboxDto.mailbox_address.name, domain) let aliasesDtoList = TeamlabMailAddressDal.GetMailboxAliases(mailboxDto.mailbox.id, dbContext.DbManager) let aliases = aliasesDtoList.Select(a => factory.CreateMailAddress(a.id, a.tenant, a.name, domain)).ToList() let teamlabAccount = CoreContext.Authentication.GetAccountByID(new Guid(mailboxDto.mailbox.user)) let account = factory.CreateMailAccount(teamlabAccount, serverMailbox.Account.Login) select factory.CreateMailbox(mailboxDto.mailbox.id, mailboxDto.mailbox.tenant, mailboxAddress, mailboxDto.mailbox.name, account, aliases.ToList(), this)); } return(mailboxList); }
public override IMailbox GetMailbox(int mailboxId, IMailServerFactory factory) { if (mailboxId < 0) throw new ArgumentException("mailbox_id has negative value"); if(factory == null) throw new ArgumentNullException("factory"); MailboxWithAddressDto mailboxDto; List<MailAddressDto> aliasesDtoList; using (var dbContext = TeamlabMailboxDal.CreateMailDbContext()) { mailboxDto = TeamlabMailboxDal.GetMailbox(mailboxId, dbContext.DbManager); aliasesDtoList = TeamlabMailAddressDal.GetMailboxAliases(mailboxId, dbContext.DbManager); } if (mailboxDto == null) return null; var mailboxBase = _GetMailbox(mailboxDto.mailbox_address.ToString()); if (mailboxBase == null) throw new Exception("Mailbox is missing on server"); var mailboxDomain = factory.CreateWebDomain(mailboxDto.mailbox_address.domain.id, mailboxDto.mailbox_address.domain.tenant, mailboxDto.mailbox_address.domain.name, mailboxDto.mailbox_address.domain.is_virified, this); var mailboxAddress = factory.CreateMailAddress(mailboxDto.mailbox_address.id, mailboxDto.mailbox_address.tenant, mailboxDto.mailbox_address.name, mailboxDomain); var account = CoreContext.Authentication.GetAccountByID(new Guid(mailboxDto.mailbox.user)); var mailboxAccount = factory.CreateMailAccount(account, mailboxBase.Account.Login); var mailboxAliases = aliasesDtoList .Select(alias => factory.CreateMailAddress(alias.id, alias.tenant, alias.name, mailboxDomain)) .ToList(); var mailbox = factory.CreateMailbox(mailboxDto.mailbox.id, mailboxDto.mailbox.tenant, mailboxAddress, mailboxAccount, mailboxAliases.ToList(), this); return mailbox; }
public override ICollection<IMailbox> GetMailboxes(IMailServerFactory factory) { if (factory == null) throw new ArgumentNullException("factory"); var mailboxList = new List<IMailbox>(); using (var dbContext = TeamlabMailboxDal.CreateMailDbContext()) { var mailboxDtoList = TeamlabMailboxDal.GetMailboxes(dbContext.DbManager); var mailboxBaseList = _GetMailboxes(mailboxDtoList.ConvertAll(d => d.mailbox.address)); mailboxList.AddRange(from serverMailbox in mailboxBaseList let mailboxDto = mailboxDtoList.Find(d => d.mailbox.address == serverMailbox.Address.ToString()) let domain = factory.CreateWebDomain(mailboxDto.mailbox_address.domain.id, mailboxDto.mailbox_address.domain.tenant, mailboxDto.mailbox_address.domain.name, mailboxDto.mailbox_address.domain.is_virified, this) let mailboxAddress = factory.CreateMailAddress(mailboxDto.mailbox_address.id, mailboxDto.mailbox_address.tenant, mailboxDto.mailbox_address.name, domain) let aliasesDtoList = TeamlabMailAddressDal.GetMailboxAliases(mailboxDto.mailbox.id, dbContext.DbManager) let aliases = aliasesDtoList.Select(a => factory.CreateMailAddress(a.id, a.tenant, a.name, domain)).ToList() let teamlabAccount = CoreContext.Authentication.GetAccountByID(new Guid(mailboxDto.mailbox.user)) let account = factory.CreateMailAccount(teamlabAccount, serverMailbox.Account.Login) select factory.CreateMailbox(mailboxDto.mailbox.id, mailboxDto.mailbox.tenant, mailboxAddress, account, aliases.ToList(), this)); } return mailboxList; }
public override IMailbox CreateMailbox(string localpart, string password, IWebDomain domain, IMailAccount account, IMailServerFactory factory) { if (string.IsNullOrEmpty(localpart)) throw new ArgumentNullException("localpart"); if(domain == null) throw new ArgumentNullException("domain"); if (account == null) throw new ArgumentNullException("account"); if (localpart.Length + domain.Name.Length > 318) // 318 because of @ sign throw new ArgumentException("Address of mailbox exceed limitation of 319 characters.", "localpart"); var mailboxBase = new MailboxBase(new MailAccountBase(account.Login), new MailAddressBase(localpart, new WebDomainBase(domain)), new List<MailAddressBase>()) { DateCreated = DateTime.UtcNow }; MailboxWithAddressDto mailboxWithAddressDto; using (var dbContextWithTran = TeamlabMailboxDal.CreateMailDbContext(true)) { mailboxWithAddressDto = TeamlabMailboxDal.CreateMailbox(account.TeamlabAccount, mailboxBase.Address.ToString(), password, mailboxBase.Address.LocalPart, mailboxBase.Address.DateCreated, domain.Id, domain.Name, domain.IsVerified, dbContextWithTran.DbManager); _CreateMailbox(account.Login, password, localpart, domain.Name); dbContextWithTran.CommitTransaction(); } var mailboxAddress = factory.CreateMailAddress(mailboxWithAddressDto.mailbox_address.id, mailboxWithAddressDto.mailbox_address.tenant, mailboxWithAddressDto.mailbox_address.name, domain) ; var mailbox = factory.CreateMailbox(mailboxWithAddressDto.mailbox.id, mailboxWithAddressDto.mailbox.tenant, mailboxAddress, account, new List<IMailAddress>(), this); return mailbox; }