public async Task <ActionResult> CreatePhsaParty(PhsaChangeModel changeModel) { if (changeModel == null) { ModelState.AddModelError("Party", "Could not create the Party, the passed in model cannot be null."); return(BadRequest(ApiResponse.BadRequest(ModelState))); } var validPartyTypes = await _partyService.GetPreApprovedRegistrationsAsync(firstName : User.GetFirstName(), lastName : User.GetLastName(), email : changeModel.Email); if (!changeModel.Validate(validPartyTypes)) { ModelState.AddModelError("Party", "Validation failed: Email and Phone Number are required, and at least one Pre-Approved PHSA Party Type must be specified."); return(BadRequest(ApiResponse.BadRequest(ModelState))); } if (await _partyService.CreateOrUpdatePartyAsync(changeModel, User) == -1) { return(StatusCode(StatusCodes.Status500InternalServerError, new { message = "Error when saving the Party." })); } if (!await _keycloakClient.UpdatePhsaUserInfo(User.GetPrimeUserId(), changeModel)) { return(StatusCode(StatusCodes.Status500InternalServerError, new { message = "Error when updating Keycloak." })); } return(Ok()); }
public async Task <int> CreateOrganizationAsync(SigningAuthorityChangeModel signingAuthority, ClaimsPrincipal user) { signingAuthority.ThrowIfNull(nameof(signingAuthority)); var partyId = await _partyService.CreateOrUpdatePartyAsync(signingAuthority, user); if (partyId == -1) { throw new InvalidOperationException("Could not create Organization. Error when updating Signing Authority"); } var organizations = await GetOrganizationsByPartyIdAsync(partyId); if (organizations.Count() != 0) { throw new InvalidOperationException("Could not create Organization. Only one organization can exist for a party."); } var organization = new Organization { SigningAuthorityId = partyId }; _context.Organizations.Add(organization); var created = await _context.SaveChangesAsync(); if (created < 1) { throw new InvalidOperationException("Could not create Organization."); } await _businessEventService.CreateOrganizationEventAsync(organization.Id, partyId, "Organization Created"); return(organization.Id); }