/// <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(); } }