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." } })); }
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 }
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()); }
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." } })); }
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 }); }
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()); }