public static FieldError[] ValidateOrganisationParameters(RegisterOrganisationParameters parameters) { var errors = new List <FieldError>(); if (string.IsNullOrWhiteSpace(parameters.organisation_name)) { errors.Add(new FieldError("organisation_name", "Organisation name is required.")); } if (string.IsNullOrWhiteSpace(parameters.organisation_type)) { errors.Add(new FieldError("organisation_type", "Organisation type is required.")); } if (string.IsNullOrWhiteSpace(parameters.adoptation_stage)) { errors.Add(new FieldError("adoptation_stage", "Adoptation stage is required.")); } if (!EmailPassesSanityCheck(parameters.private_email_address)) { errors.Add(new FieldError("private_email_address", "A valid private email address is required.")); } return(errors.ToArray()); }
public JsonResult RegisterOrganisation(RegisterOrganisationParameters parameters) { var connectionString = configuration.GetConnectionString("oruk_validation"); var db = new Db(connectionString); var errors = ValidateOrganisationParameters(parameters); if (errors.Length > 0) { return(Json(new { success = false, errors })); } var existingOrganisation = db.GetRegisteredOrganisation(parameters.private_email_address); if (existingOrganisation != null) { return(Json(new { success = false, error = "Already registered.", existingOrganisation })); } db.RegisterOrganisation(parameters.organisation_name, parameters.organisation_type, parameters.adoptation_stage, parameters.url, parameters.private_email_address, parameters.public_email_address); var organisation = db.GetRegisteredOrganisation(parameters.private_email_address); if (organisation == null) { return(Json(new { success = false, error = "Unknown problem." })); } SendRegisteredOrganisationEmail(parameters); return(Json(new { success = true, organisation })); }
private void SendRegisteredOrganisationEmail(RegisterOrganisationParameters parameters) { var subject = $"{parameters.organisation_name} registered for ORUK"; var body = $"{parameters.organisation_name} ({parameters.private_email_address}) registered for ORUK.<br />See the full list at <a href=\"{Settings.RegisteredOrganisationsUrl}\">{Settings.RegisteredOrganisationsUrl}</a>."; try { EmailUtility.Send(Smtp, Settings.DefaultSupportEmail, Settings.RegisterAlertEmail, subject, body); } catch (Exception e) { Console.Error.Write(e.Message); } }