public static int DeleteMailDomain(int itemId) { // check account int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo); if (accountCheck < 0) return accountCheck; // load original meta item MailDomain origItem = (MailDomain)PackageController.GetPackageItem(itemId); if (origItem == null) return BusinessErrorCodes.ERROR_MAIL_DOMAIN_PACKAGE_ITEM_NOT_FOUND; // find if account exists under this mail domain List<ServiceProviderItem> accounts = PackageController.GetPackageItemsByName( origItem.PackageId, "%@" + origItem.Name); if (accounts.Count > 0) return BusinessErrorCodes.ERROR_MAIL_DOMAIN_IS_NOT_EMPTY; // mail domain is not empty // place log record TaskManager.StartTask("MAIL_DOMAIN", "DELETE", origItem.Name); TaskManager.ItemId = itemId; try { // get service MailServer mail = new MailServer(); ServiceProviderProxy.Init(mail, origItem.ServiceId); // delete service item mail.DeleteDomain(origItem.Name); // delete meta item PackageController.DeletePackageItem(origItem.Id); // update related domain with a new pointer DomainInfo domain = ServerController.GetDomain(origItem.Name); if (domain != null) { domain.MailDomainId = 0; ServerController.UpdateDomain(domain); } return 0; } catch (Exception ex) { throw TaskManager.WriteError(ex); } finally { TaskManager.CompleteTask(); } }