public static void Create(ResellerObject reseller) { ADOrganizationalUnit org = new ADOrganizationalUnit(StaticSettings.Username, StaticSettings.Password, StaticSettings.PrimaryDC); try { } catch (Exception ex) { } }
/// <summary> /// Gets a specific reseller /// </summary> /// <param name="companyCode"></param> /// <returns></returns> public ResellerObject GetReseller(string companyCode) { CPDatabase database = null; try { database = new CPDatabase(); var reseller = (from r in database.Companies where r.IsReseller where r.CompanyCode == companyCode orderby r.CompanyName select r).FirstOrDefault(); ResellerObject tmp = new ResellerObject(); tmp.CompanyID = reseller.CompanyId; tmp.CompanyName = reseller.CompanyName; tmp.CompanyCode = reseller.CompanyCode; tmp.Street = reseller.Street; tmp.City = reseller.City; tmp.State = reseller.State; tmp.ZipCode = reseller.ZipCode; tmp.Country = reseller.Country; tmp.Telephone = reseller.PhoneNumber; tmp.Description = reseller.Description; tmp.AdminName = reseller.AdminName; tmp.AdminEmail = reseller.AdminEmail; tmp.DistinguishedName = reseller.DistinguishedName; tmp.Created = reseller.Created; return tmp; } catch (Exception ex) { ThrowEvent(AlertID.FAILED, ex.Message); return null; } finally { if (database != null) database.Dispose(); } }
/// <summary> /// Adds a new reseller to the environment /// </summary> private void AddNewReseller() { ResellerObject newReseller = new ResellerObject(); newReseller.CompanyName = txtName.Text; newReseller.AdminName = txtContactsName.Text; newReseller.AdminEmail = txtEmail.Text; newReseller.Telephone = txtTelephone.Text; newReseller.Street = txtStreetAddress.Text; newReseller.City = txtCity.Text; newReseller.State = txtState.Text; newReseller.ZipCode = txtZipCode.Text; if (ddlCountry.SelectedIndex > 0) newReseller.Country = ddlCountry.SelectedValue; else newReseller.Country = string.Empty; // Validate if (newReseller.CompanyName.Length < 3) alertmessage.SetMessage(Modules.Base.Enumerations.AlertID.WARNING, "The company name must be three characters or more"); else { // // Create new reseller // resellerModel.NewReseller(newReseller, StaticSettings.HostingOU); } PopulateResellers(); }
public ResellerModule() { this.RequiresAuthentication(); Get["/Resellers"] = _ => { List<ResellerObject> resellers = null; // Get all resellers return View["Admin/ResellerList.cshtml", resellers]; }; Get["/Resellers/Add"] = parameters => { ResellerObject newReseller = new ResellerObject(); return View["Admin/ResellerEdit.cshtml", newReseller]; }; Get["/Resellers/{ResellerCode}/Edit"] = parameters => { ResellerObject reseller = new ResellerObject(); reseller.CompanyID = 0; reseller.CompanyCode = parameters.ResellerCode; reseller.CompanyName = "Reseller"; reseller.Street = "300 Simpson Rd"; reseller.City = "Vilonia"; reseller.State = "AR"; reseller.ZipCode = "72173"; reseller.Created = DateTime.Now.ToString(); reseller.AdminName = ""; reseller.AdminEmail = ""; reseller.Telephone = ""; return View["Admin/ResellerEdit.cshtml", reseller]; }; Get["/Resellers/{CompanyCode}/Companies"] = parameters => { if (this.Context.CurrentUser != null) { var user = this.Context.CurrentUser as AuthenticatedUser; user.SelectedResellerCode = parameters.CompanyCode; } return View["Admin/CompanyList", parameters.CompanyCode]; }; Post["/Resellers/Edit"] = parameters => { ViewBag.Testing = "NEW RESELLER"; var test = this.Bind<ResellerObject>(); // Gather data from form return View["Admin/ResellerEdit", test]; }; Post["/Resellers/Edit/{ResellerCode}"] = parameters => { ViewBag.Testing = "EDIT RESELLER"; var test = this.Bind<ResellerObject>(); // Gather data from form return View["Admin/ResellerEdit", test]; }; }
/// <summary> /// Gets a list of resellers from the database /// </summary> /// <returns></returns> public List<ResellerObject> GetResellers() { CPDatabase database = null; try { database = new CPDatabase(); var resellersDb = from r in database.Companies where r.IsReseller orderby r.CompanyName select r; List<ResellerObject> resellers = new List<ResellerObject>(); if (resellersDb != null) { foreach (var reseller in resellersDb) { ResellerObject tmp = new ResellerObject(); tmp.CompanyID = reseller.CompanyId; tmp.CompanyName = reseller.CompanyName; tmp.CompanyCode = reseller.CompanyCode; tmp.Street = reseller.Street; tmp.City = reseller.City; tmp.State = reseller.State; tmp.ZipCode = reseller.ZipCode; tmp.Country = reseller.Country; tmp.Telephone = reseller.PhoneNumber; tmp.Description = reseller.Description; tmp.AdminName = reseller.AdminName; tmp.AdminEmail = reseller.AdminEmail; tmp.DistinguishedName = reseller.DistinguishedName; tmp.Created = reseller.Created; resellers.Add(tmp); } } return resellers; } catch (Exception ex) { ThrowEvent(AlertID.FAILED, ex.Message); return null; } finally { if (database != null) database.Dispose(); } }
/// <summary> /// Updates a reseller /// </summary> /// <param name="reseller"></param> public void UpdateReseller(ResellerObject reseller) { CPDatabase database = null; try { database = new CPDatabase(); var dbObj = (from r in database.Companies where r.CompanyCode == reseller.CompanyCode where r.IsReseller select r).First(); dbObj.CompanyName = reseller.CompanyName; dbObj.AdminName = reseller.AdminName; dbObj.AdminEmail = reseller.AdminEmail; dbObj.PhoneNumber = reseller.Telephone; dbObj.Street = reseller.Street; dbObj.City = reseller.City; dbObj.State = reseller.State; dbObj.ZipCode = reseller.ZipCode; dbObj.Country = reseller.Country; database.SaveChanges(); } catch (Exception ex) { ThrowEvent(AlertID.FAILED, ex.Message); } finally { if (database != null) database.Dispose(); } }
/// <summary> /// Creates a new reseller /// </summary> /// <param name="reseller"></param> /// <param name="baseOrganizationalUnit"></param> public void NewReseller(ResellerObject reseller, string baseOrganizationalUnit) { CPDatabase database = null; // Rollback class in case something goes wrong we can undo changes CloudPanelTransaction events = new CloudPanelTransaction(); try { database = new CPDatabase(); // Generate the company code string companyCode = ResellerObject.GenerateCompanyCode(reseller.CompanyName); // Loop and make sure one does exist or find one that does int count = 0; for (int i = 0; i < 1000; i++) { if (Validation.DoesCompanyCodeExist(companyCode)) { this.logger.Info("Tried to create a new reseller with company code " + companyCode + " but it already existed... trying another code"); companyCode = companyCode + count.ToString(); count++; } else { reseller.CompanyCode = companyCode; // Assign company code to object break; } } // Create the reseller in Active Directory ADOrganizationalUnit adOrg = new ADOrganizationalUnit(StaticSettings.Username, StaticSettings.DecryptedPassword, StaticSettings.PrimaryDC); string distinguishedName = adOrg.CreateReseller(StaticSettings.HostingOU, reseller); events.NewOrganizationalUnitEvent(distinguishedName); // Create the security group ADGroup adGroup = new ADGroup(StaticSettings.Username, StaticSettings.DecryptedPassword, StaticSettings.PrimaryDC); adGroup.Create(distinguishedName, "GPOAccess@" + companyCode, "", true, false); events.NewSecurityGroup("GPOAccess@" + companyCode); // Add the new group to the GPOAccess@Hosting group for group policy permissions adGroup.AddMember("GPOAccess@Hosting", "GPOAccess@" + companyCode, "name"); // Add access rights adOrg.AddAccessRights(distinguishedName, "GPOAccess@" + companyCode); // Insert into database Company company = new Company(); company.IsReseller = true; company.CompanyName = reseller.CompanyName; company.CompanyCode = companyCode; company.Street = reseller.Street; company.City = reseller.City; company.State = reseller.State; company.ZipCode = reseller.ZipCode; company.Country = reseller.Country; company.PhoneNumber = reseller.Telephone; company.AdminName = reseller.AdminName; company.AdminEmail = reseller.AdminEmail; company.Created = DateTime.Now; company.DistinguishedName = distinguishedName; database.Companies.Add(company); database.SaveChanges(); // Notify success ThrowEvent(AlertID.SUCCESS, "Successfully created new reseller " + reseller.CompanyName); } catch (Exception ex) { ThrowEvent(AlertID.FAILED, ex.Message); // Rollback on error events.RollBack(); } finally { if (database != null) database.Dispose(); } }
/// <summary> /// Creates a new reseller organizational unit /// </summary> /// <param name="hostingOrganizationalUnit"></param> /// <param name="reseller"></param> /// <returns></returns> public string CreateReseller(string hostingOrganizationalUnit, ResellerObject reseller) { DirectoryEntry de = null; DirectoryEntry newOrg = null; try { this.logger.Debug("Attempting to create new organizational unit for reseller " + reseller.CompanyName); de = new DirectoryEntry("LDAP://" + this.domainController + "/" + hostingOrganizationalUnit, this.username, this.password); // Add organizational unit newOrg = de.Children.Add("OU=" + reseller.CompanyCode, "OrganizationalUnit"); // Set additional information newOrg.Properties["description"].Add(reseller.CompanyName); newOrg.Properties["displayName"].Add(reseller.CompanyName); // These values may not be set so only set if they are valid if (!string.IsNullOrEmpty(reseller.Street)) newOrg.Properties["street"].Add(reseller.Street); if (!string.IsNullOrEmpty(reseller.City)) newOrg.Properties["l"].Add(reseller.City); if (!string.IsNullOrEmpty(reseller.State)) newOrg.Properties["st"].Add(reseller.State); if (!string.IsNullOrEmpty(reseller.ZipCode)) newOrg.Properties["postalCode"].Add(reseller.ZipCode); if (!string.IsNullOrEmpty(reseller.Telephone)) newOrg.Properties["telephoneNumber"].Add(reseller.Telephone); if (!string.IsNullOrEmpty(reseller.AdminName)) newOrg.Properties["adminDisplayName"].Add(reseller.AdminName); if (!string.IsNullOrEmpty(reseller.AdminEmail)) newOrg.Properties["adminDescription"].Add(reseller.AdminEmail); // Commit all the changes to the new OU newOrg.CommitChanges(); this.logger.Debug("Committed changes to new organizational unit for reseller " + reseller.CompanyName); // Commit the changes to the parent OU de.CommitChanges(); this.logger.Info("Finished creating new organizational unit for reseller " + reseller.CompanyName); // Return the distinguished name return newOrg.Properties["distinguishedName"][0].ToString(); } catch (Exception ex) { this.logger.Error("There was an error creating a new organizational unit for reseller " + reseller.CompanyName, ex); throw; } finally { if (newOrg != null) newOrg.Dispose(); if (de != null) de.Dispose(); } }