コード例 #1
0
        public IActionResult CreateOrganisation(OrganisationRequest organisationRequest)
        {
            //add validation
            try
            {
                if (string.IsNullOrEmpty(AccessToken))
                {
                    return(BadRequest("no access_token cookie found in the request"));
                }
                var response = _organisationsUseCase.ExecuteCreate(AccessToken, organisationRequest);
                if (response != null)
                {
                    return(Created(new Uri($"/{response.Id}", UriKind.Relative), response));
                }
            }
            catch (UseCaseException e)
            {
                return(BadRequest(e));
            }

            // Validations
            return(BadRequest(
                       new ErrorResponse($"Invalid request. ")
            {
                Status = "Bad request", Errors = new List <string> {
                    "Unable to create organisation."
                }
            }));
        }
コード例 #2
0
        public async Task PatchOrganisationUpdatesOrganisation()
        {
            var session = EntityHelpers.CreateSession("Admin");

            DatabaseContext.Sessions.Add(session);
            Client.DefaultRequestHeaders.Add("Cookie", $"access_token={session.Payload}");
            var organisation = EntityHelpers.CreateOrganisation();

            DatabaseContext.Organisations.Add(organisation);
            DatabaseContext.SaveChanges();
            var updOrganisation = new OrganisationRequest();

            updOrganisation.Name            = Randomm.Text();
            updOrganisation.ReviewerMessage = null; // we are assuming null means no change to the record
            var         organisationString = JsonConvert.SerializeObject(updOrganisation);
            HttpContent patchContent       = new StringContent(organisationString, Encoding.UTF8, "application/json");
            var         requestUri         = new Uri($"api/v1/organisations/{organisation.Id}", UriKind.Relative);
            var         response           = await Client.PatchAsync(requestUri, patchContent).ConfigureAwait(false);

            patchContent.Dispose();
            response.StatusCode.Should().Be(200);
            var content        = response.Content;
            var stringResponse = await content.ReadAsStringAsync().ConfigureAwait(true);

            var deserializedBody = JsonConvert.DeserializeObject <OrganisationResponse>(stringResponse);
            var organisationId   = deserializedBody.Id;
            var dbOrganisation   = DatabaseContext.Organisations.Find(organisationId);

            dbOrganisation.Should().NotBeNull();
            dbOrganisation.Name.Should().Be(organisation.Name);
            dbOrganisation.ReviewerMessage.Should().Be(organisation.ReviewerMessage);  //should not be set to null if not changed
        }
コード例 #3
0
        public OrganisationResponse ExecuteCreate(string accessToken, OrganisationRequest requestParams)
        {
            var gatewayResponse = _organisationsGateway.CreateOrganisation(requestParams.ToEntity());

            if (gatewayResponse != null)
            {
                var session        = _sessionsGateway.GetSessionByToken(accessToken);
                var userQueryParam = new UserQueryParam {
                    Sort = "Name", Direction = "asc"
                };
                var adminUsers = _usersGateway.GetAllUsers(userQueryParam).Result
                                 .Where(u => u.UserRoles.Any(ur => ur.Role.Name == "Admin"));
                var adminEmails = adminUsers.Select(au => au.Email).ToArray();
                _notifyGateway.SendMessage(NotifyMessageTypes.AdminNotification, adminEmails, requestParams.StatusMessage);
            }
            return(gatewayResponse == null ? new OrganisationResponse() : gatewayResponse.ToResponse());
        }
コード例 #4
0
        public IActionResult PatchOrganisation([FromRoute] int id, OrganisationRequest organisationRequest)
        {
            //add validation
            var response = _organisationsUseCase.ExecutePatch(id, organisationRequest);

            if (response != null)
            {
                return(Ok(response));
            }

            // Validations
            return(BadRequest(
                       new ErrorResponse($"Invalid request. ")
            {
                Status = "Bad request", Errors = new List <string> {
                    "Unable to create organisation."
                }
            }));
        }
コード例 #5
0
 public static OrganisationDomain ToDomain(this OrganisationRequest request)
 {
     return(new OrganisationDomain()
     {
         Name = request.Name,
         CreatedAt = request.CreatedAt,
         UpdatedAt = request.UpdatedAt,
         SubmittedAt = request.SubmittedAt,
         ReviewedAt = request.ReviewedAt,
         ReviewerMessage = request.ReviewerMessage,
         Status = request.Status,
         IsRegisteredCharity = request.IsRegisteredCharity,
         CharityNumber = request.CharityNumber,
         IsRegisteredCommunityInterestCompany = request.IsRegisteredCommunityInterestCompany,
         CommunityInterestCompanyNumber = request.CommunityInterestCompanyNumber,
         HasHcOrColGrant = request.HasHcOrColGrant,
         HasHcvsOrHgOrAelGrant = request.HasHcvsOrHgOrAelGrant,
         IsTraRegistered = request.IsTraRegistered,
         IsHackneyBased = request.IsHackneyBased,
         RslOrHaAssociation = request.RslOrHaAssociation,
         IsLotteryFunded = request.IsLotteryFunded,
         LotteryFundedProject = request.LotteryFundedProject,
         FundingOther = request.FundingOther,
         HasChildSupport = request.HasChildSupport,
         HasChildSafeguardingLead = request.HasChildSafeguardingLead,
         ChildSafeguardingLeadFirstName = request.ChildSafeguardingLeadFirstName,
         ChildSafeguardingLeadLastName = request.ChildSafeguardingLeadLastName,
         ChildSafeguardingLeadTrainingMonth = request.ChildSafeguardingLeadTrainingMonth,
         ChildSafeguardingLeadTrainingYear = request.ChildSafeguardingLeadTrainingYear,
         HasAdultSupport = request.HasAdultSupport,
         HasAdultSafeguardingLead = request.HasAdultSafeguardingLead,
         AdultSafeguardingLeadFirstName = request.AdultSafeguardingLeadFirstName,
         AdultSafeguardingLeadLastName = request.AdultSafeguardingLeadLastName,
         AdultSafeguardingLeadTrainingMonth = request.AdultSafeguardingLeadTrainingMonth,
         AdultSafeguardingLeadTrainingYear = request.AdultSafeguardingLeadTrainingYear,
         HasEnhancedSupport = request.HasEnhancedSupport,
         IsLocalOfferListed = request.IsLocalOfferListed,
         ReviewerUid = request.ReviewerId
     });
 }
コード例 #6
0
        public OrganisationResponse ExecutePatch(int id, OrganisationRequest request)
        {
            var organisationDomain = _organisationsGateway.GetOrganisation(id);

            if (organisationDomain == null)
            {
                return(null);
            }
            organisationDomain.Name                = request.Name ?? organisationDomain.Name;
            organisationDomain.CreatedAt           = request.CreatedAt ?? organisationDomain.CreatedAt;
            organisationDomain.Status              = request.Status ?? organisationDomain.Status;
            organisationDomain.UpdatedAt           = request.UpdatedAt ?? organisationDomain.UpdatedAt;
            organisationDomain.SubmittedAt         = request.SubmittedAt ?? organisationDomain.SubmittedAt;
            organisationDomain.ReviewedAt          = request.ReviewedAt ?? organisationDomain.ReviewedAt;
            organisationDomain.ReviewerMessage     = request.ReviewerMessage ?? organisationDomain.ReviewerMessage;
            organisationDomain.Status              = request.Status ?? organisationDomain.Status;
            organisationDomain.IsRegisteredCharity = request.IsRegisteredCharity ?? organisationDomain.IsRegisteredCharity;
            organisationDomain.IsRegisteredCommunityInterestCompany = request.IsRegisteredCommunityInterestCompany ?? organisationDomain.IsRegisteredCommunityInterestCompany;
            organisationDomain.IsHackneyBased = request.IsHackneyBased ?? organisationDomain.IsRegisteredCharity;
            organisationDomain.CharityNumber  = request.CharityNumber ?? organisationDomain.CharityNumber;
            organisationDomain.CommunityInterestCompanyNumber = request.CommunityInterestCompanyNumber ?? organisationDomain.CommunityInterestCompanyNumber;
            organisationDomain.HasHcOrColGrant                    = request.HasHcOrColGrant ?? organisationDomain.HasHcOrColGrant;
            organisationDomain.HasHcvsOrHgOrAelGrant              = request.HasHcvsOrHgOrAelGrant ?? organisationDomain.HasHcvsOrHgOrAelGrant;
            organisationDomain.IsTraRegistered                    = request.IsTraRegistered ?? organisationDomain.IsTraRegistered;
            organisationDomain.RslOrHaAssociation                 = request.RslOrHaAssociation ?? organisationDomain.RslOrHaAssociation;
            organisationDomain.IsLotteryFunded                    = request.IsLotteryFunded ?? organisationDomain.IsLotteryFunded;
            organisationDomain.LotteryFundedProject               = request.LotteryFundedProject ?? organisationDomain.LotteryFundedProject;
            organisationDomain.FundingOther                       = request.FundingOther ?? organisationDomain.FundingOther;
            organisationDomain.HasChildSupport                    = request.HasChildSupport ?? organisationDomain.HasChildSupport;
            organisationDomain.HasChildSafeguardingLead           = request.HasChildSafeguardingLead ?? organisationDomain.HasChildSafeguardingLead;
            organisationDomain.ChildSafeguardingLeadFirstName     = request.ChildSafeguardingLeadFirstName ?? organisationDomain.ChildSafeguardingLeadFirstName;
            organisationDomain.ChildSafeguardingLeadLastName      = request.ChildSafeguardingLeadLastName ?? organisationDomain.ChildSafeguardingLeadLastName;
            organisationDomain.ChildSafeguardingLeadTrainingMonth = request.ChildSafeguardingLeadTrainingMonth ?? organisationDomain.ChildSafeguardingLeadTrainingMonth;
            organisationDomain.ChildSafeguardingLeadTrainingYear  = request.ChildSafeguardingLeadTrainingYear ?? organisationDomain.ChildSafeguardingLeadTrainingYear;
            organisationDomain.HasAdultSupport                    = request.HasAdultSupport ?? organisationDomain.HasAdultSupport;
            organisationDomain.HasAdultSafeguardingLead           = request.HasAdultSafeguardingLead ?? organisationDomain.HasAdultSafeguardingLead;
            organisationDomain.AdultSafeguardingLeadFirstName     = request.AdultSafeguardingLeadFirstName ?? organisationDomain.AdultSafeguardingLeadFirstName;
            organisationDomain.AdultSafeguardingLeadLastName      = request.AdultSafeguardingLeadLastName ?? organisationDomain.AdultSafeguardingLeadLastName;
            organisationDomain.AdultSafeguardingLeadTrainingMonth = request.AdultSafeguardingLeadTrainingMonth ?? organisationDomain.AdultSafeguardingLeadTrainingMonth;
            organisationDomain.AdultSafeguardingLeadTrainingYear  = request.AdultSafeguardingLeadTrainingYear ?? organisationDomain.AdultSafeguardingLeadTrainingYear;
            organisationDomain.HasEnhancedSupport                 = request.HasEnhancedSupport ?? organisationDomain.HasEnhancedSupport;
            organisationDomain.IsLocalOfferListed                 = request.IsLocalOfferListed ?? organisationDomain.IsLocalOfferListed;
            organisationDomain.ReviewerUid = request.ReviewerId ?? organisationDomain.ReviewerUid;
            var gatewayResponse = _organisationsGateway.PatchOrganisation(organisationDomain);

            if (gatewayResponse != null && gatewayResponse.Status.ToLower() == "published")
            {
                var orgUserEmails = gatewayResponse.UserOrganisations
                                    .Select(uo => uo.User.Email).ToArray();
                _notifyGateway.SendMessage(NotifyMessageTypes.StatusUpdate, orgUserEmails, request.ReviewerMessage);
            }
            if (gatewayResponse != null && gatewayResponse.Status.ToLower() == "rejected")
            {
                var orgUserEmails = gatewayResponse.UserOrganisations
                                    .Select(uo => uo.User.Email).ToArray();
                _notifyGateway.SendMessage(NotifyMessageTypes.NotApproved, orgUserEmails, request.ReviewerMessage);
            }
            if (gatewayResponse != null && gatewayResponse.Status.ToLower() == "awaiting review")
            {
                var userQueryParam = new UserQueryParam {
                    Sort = "Name", Direction = "asc"
                };
                var adminUsers = _usersGateway.GetAllUsers(userQueryParam).Result
                                 .Where(u => u.UserRoles.Any(ur => ur.Role.Name == "Admin"));
                var adminEmails = adminUsers.Select(au => au.Email).ToArray();
                _notifyGateway.SendMessage(NotifyMessageTypes.AdminNotification, adminEmails, request.StatusMessage);
            }
            return(gatewayResponse.ToResponse());
        }