public static int AddMailDomain(MailDomain item) { // check package items if (PackageController.GetPackageItemByName(item.PackageId, item.Name, typeof(MailDomain)) != null) return 0; // OK, domain already exists // place log record TaskManager.StartTask("MAIL_DOMAIN", "ADD", item.Name); // create domain try { // check service items MailServer mail = new MailServer(); ServiceProviderProxy.Init(mail, item.ServiceId); if (mail.DomainExists(item.Name)) return BusinessErrorCodes.ERROR_MAIL_DOMAIN_EXISTS; item.Enabled = true; // add service item mail.CreateDomain(item); // save domain item int itemId = PackageController.AddPackageItem(item); // update related domain with a new pointer DomainInfo domain = ServerController.GetDomain(item.Name); if (domain != null) { domain.MailDomainId = itemId; ServerController.UpdateDomain(domain); } // check if instant alias must be added if (!String.IsNullOrEmpty(domain.InstantAliasName)) { // load instant alias DomainInfo instantAlias = ServerController.GetDomainItem(domain.InstantAliasName); if(instantAlias != null) { AddMailDomainPointer(itemId, instantAlias.DomainId); } } TaskManager.ItemId = itemId; return itemId; } catch (Exception ex) { throw TaskManager.WriteError(ex); } finally { TaskManager.CompleteTask(); } }