Ejemplo n.º 1
0
        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();
            }
        }