예제 #1
0
        /// <summary>
        /// Adds a new domain
        /// </summary>
        /// <param name="companyCode"></param>
        /// <param name="domainName"></param>
        public void AddDomain(string companyCode, string domainName)
        {
            if (string.IsNullOrEmpty(companyCode))
                throw new MissingFieldException("Companies", "companyCode");

            if (string.IsNullOrEmpty(domainName))
                throw new MissingFieldException("Companies", "domainName");

            // Get company
            var company = (from c in db.Companies
                           where !c.IsReseller
                           where c.CompanyCode == companyCode
                           select c).First();

            // Check if domain exists
            var domain = (from d in db.Domains
                          where d.Domain1 == domainName
                          select d).Count();

            if (domain > 0)
                throw new Exception("Domain already exists in the system.");

            // Check for company limits
            // TODO

            OrganizationalUnits organizationalUnits = null;
            ReverseActions reverse = new ReverseActions();
            try
            {
                organizationalUnits = new OrganizationalUnits(Settings.Username, Settings.DecryptedPassword, Settings.PrimaryDC);
                organizationalUnits.AddDomains(company.DistinguishedName, new[] { domainName });
                reverse.AddAction(Actions.AddDomains, new object[] {
                    company.DistinguishedName,
                    domainName
                });

                // Add domain to the system
                Domain newDomain = new Domain();
                newDomain.Domain1 = domainName;
                newDomain.CompanyCode = companyCode;
                newDomain.IsAcceptedDomain = false;
                newDomain.IsLyncDomain = false;
                newDomain.IsDefault = false;

                db.Domains.Add(newDomain);
                db.SaveChanges();
            }
            catch (Exception ex)
            {
                log.ErrorFormat("Error adding domain {0} to {1}. Error {2}", domainName, companyCode, ex.ToString());
                throw;
            }
            finally
            {
                if (organizationalUnits != null)
                    organizationalUnits.Dispose();
            }
        }