public object CreateOrg(string name, string url, string email, string firstname, string lastname, string password, string password_confirm, string how, string note , string external_id, bool sendHubSpot , bool is_force_registration, bool is_force_redirect) { bool isSalesforceProviderRequest = false; if (!string.IsNullOrEmpty(how)) { isSalesforceProviderRequest = (how.IndexOf("Salesforce", StringComparison.OrdinalIgnoreCase) > -1); } //validation if (string.IsNullOrWhiteSpace(name)) { return(new HttpResult("Name is required.", HttpStatusCode.Forbidden)); } if (!Utils.IsValidEmail(email)) { return(new HttpResult("Email is required.", HttpStatusCode.Forbidden)); } /*if (OrganizationProvider.GetOrganizationIdByName(name) != Guid.Empty) * { * return new HttpResult("Name is already exists.", HttpStatusCode.Forbidden); * } */ if (!string.IsNullOrWhiteSpace(url)) { if (url.Length < 3 || url.Length > 20) { return(new HttpResult("Url should be between 3 and 20 characters and can contains alphanumeric characters and hyphens", HttpStatusCode.Forbidden)); } if (!CustomUrlProvider.ValidateCustomUrl(url)) { return(new HttpResult("Url: " + url + " is already exists.", HttpStatusCode.Forbidden)); } } else { url = null; } bool isAlreadyRegistered = false; LoginProvider lp = new LoginProvider(); if (isSalesforceProviderRequest) { if (!string.IsNullOrEmpty(external_id)) { if (SalesforceSettingProvider.ExternalOrganizationIdExists(external_id)) { return(new HttpResult("The organization is already registered.", HttpStatusCode.Conflict)); } } } else { isAlreadyRegistered = lp.ValidateLogin(email, null); if (isAlreadyRegistered && !is_force_registration) { return(new HttpResult("User already have one registered organization. Please login OR set is_force_registration=true to continue.", HttpStatusCode.Conflict)); } } if (string.IsNullOrWhiteSpace(firstname)) { firstname = "Organization"; } if (string.IsNullOrWhiteSpace(lastname)) { lastname = "Administrator"; } //if (string.IsNullOrWhiteSpace(lastname)) // return new HttpResult("LastName is required.", HttpStatusCode.Forbidden); //if (string.IsNullOrWhiteSpace(password)) // return new HttpResult("Password is required.", HttpStatusCode.Forbidden); if (!string.IsNullOrWhiteSpace(password)) { if (!Utils.IsValidPassword(password)) { return(new HttpResult("Password is too weak. It must be at least 5 characters.", HttpStatusCode.Forbidden)); } if (!password.Equals(password_confirm)) { return(new HttpResult("Passwords not match.", HttpStatusCode.Forbidden)); } } else { password = password_confirm = null; } /* * Future * * string ip = base.RequestContext.Get<IHttpRequest>().UserHostAddress; * if (!Micajah.Common.Bll.Support.ValidateInviteToken(invite_code, ip)) * { * throw new HttpError(HttpStatusCode.Forbidden, "Invite code is not correct or expired. Please get new one."); * } */ Guid organizationId = Guid.Empty; Micajah.Common.Bll.Instance inst = null; if (!isAlreadyRegistered || is_force_registration) { Micajah.Common.Bll.Instance templateInstance = null; Micajah.Common.Bll.InstanceCollection insts = InstanceProvider.GetTemplateInstances(); if (insts.Count == 0) { return(new HttpResult("No Active Template Instances", HttpStatusCode.NotFound)); } else { templateInstance = insts[0]; } string howYouHearAboutUs = how; NameValueCollection parameters = new NameValueCollection(); if (isSalesforceProviderRequest) { if (!string.IsNullOrEmpty(external_id)) { SalesforceSettingProvider.AddExternalOrganizationId(external_id, parameters); } } organizationId = OrganizationProvider.InsertOrganization(name, null, null , null, null, null, null, null, null, string.Empty, howYouHearAboutUs, note , templateInstance.TimeZoneId, templateInstance.InstanceId , email, password, firstname, lastname, null, null, null , url, parameters , true, true, sendHubSpot); inst = InstanceProvider.GetFirstInstance(organizationId); } if (!is_force_redirect) { string api_token = LoginTokenProvider.GetApiToken(email); ApiUser hdUser = new ApiUser(api_token); if (string.IsNullOrWhiteSpace(api_token)) { return(new HttpResult("User is not correct or inactive.", HttpStatusCode.Forbidden)); } return(new HttpResult(GetOrganizations(api_token, inst.PseudoId), organizationId != Guid.Empty ? HttpStatusCode.Created : HttpStatusCode.Found)); } //return new HttpResult(HttpStatusCode.OK, "Already registered"); url = lp.GetLoginUrl(email, true, organizationId, inst.InstanceId, null); //added redirect url = url.Replace("mc/login.aspx?", "login/?ReturnUrl=%2Fhome%2Fdefault.aspx%3Ffx%3Demlstp%26org%3D" + organizationId.ToString("N") + "&"); //Headers ["Location"] = url; return("{\"url\" : \"" + url + "\"}"); }