Exemplo n.º 1
0
        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);
        }