private bool AddAgencyDetails(AgencyRequest agency, S4Identity account) { var _query = $@" UPDATE agency_account SET contact_email = @email, contact_first_name = @first, contact_last_name = @last, s4_id = @s4_id WHERE agency = @agency"; var _params = new { agency = agency.agency, email = agency.email, first = agency.first_name, last = agency.last_name, s4_id = account.s4_id, }; using (var conn = new NpgsqlConnection(_conn)) { var result = conn.Execute(_query, _params); return(result == 1); } }
// Agency Registration Process public async Task <IdentityResult> ClaimAgencyAsync(AgencyRequest dhsmv) { if (AlreadyOnboard(dhsmv.agency)) // check that agency has an active account { // Account is active already send to login var msg = "This agency has already completed the onboarding process"; IdentityError error = BuildError(msg); return(IdentityResult.Failed(error)); } if (IsInProgress(dhsmv.agency, dhsmv.email)) // check that agency has an active account { // agency has registered s4sales identity // but not clicked the onboarded with stripe button and NOW is attempting to re-register with // a different email address var msg = "This agency has already begun onboarding with a different email"; IdentityError error = BuildError(msg); return(IdentityResult.Failed(error)); } int agencyId = await GetAgencyId(dhsmv.agency); S4LookupNormalizer normalizer = new S4LookupNormalizer(); S4Identity agency = new S4Identity(agencyId.ToString()) { email = dhsmv.email, normalized_user_name = normalizer.Normalize(agencyId.ToString()), normalized_email = normalizer.Normalize(dhsmv.email) }; IdentityResult creating = await _user_manager.CreateAsync(agency, dhsmv.password); if (creating != IdentityResult.Success) { var msg = "Error claiming agency"; IdentityError error = BuildError(msg); return(IdentityResult.Failed(error)); } IList <string> roles = new List <string>(); // add roles to account roles.Add("agency"); foreach (var role in roles) // in case accounts ever need multiple roles { await _user_manager.AddToRoleAsync(agency, role); } if (!AddAgencyDetails(dhsmv, agency)) // writes details to agency table { var msg = "Error adding the agency details"; IdentityError error = BuildError(msg); return(IdentityResult.Failed(error)); } return(IdentityResult.Success); }