public async Task <List <ContactResponse> > UpdateEpaOrganisationWebsiteLink(UpdateEpaOrganisationWebsiteLinkRequest updateEpaOrganisationWebsiteLinkRequest)
 {
     using (var request = new HttpRequestMessage(HttpMethod.Put, $"api/ao/assessment-organisations/update-website-link"))
     {
         return(await PostPutRequestWithResponse <UpdateEpaOrganisationWebsiteLinkRequest, List <ContactResponse> >(request,
                                                                                                                    updateEpaOrganisationWebsiteLinkRequest));
     }
 }
Beispiel #2
0
        public async Task <IActionResult> UpdateEpaOrganisationWebsiteLink([FromBody] UpdateEpaOrganisationWebsiteLinkRequest request)
        {
            try
            {
                _logger.LogInformation($"Amending the Organisation [{request.OrganisationId} with Website Link {request.WebsiteLink}]");
                var result = await _mediator.Send(request);

                return(Ok(result));
            }
            catch (Exception ex)
            {
                _logger.LogError($@"Bad request, Message: [{ex.Message}]");
                return(BadRequest());
            }
        }
        public async Task <List <ContactResponse> > Handle(UpdateEpaOrganisationWebsiteLinkRequest request, CancellationToken cancellationToken)
        {
            var organisation = await _mediator.Send(new GetAssessmentOrganisationRequest { OrganisationId = request.OrganisationId });

            var updateEpaOrganisationRequest = Mapper.Map <UpdateEpaOrganisationRequest>(organisation);

            updateEpaOrganisationRequest.WebsiteLink = request.WebsiteLink;

            await _mediator.Send(updateEpaOrganisationRequest);

            var updatedBy = request.UpdatedBy.HasValue
                ? await _contactQueryRepository.GetContactById(request.UpdatedBy.Value)
                : null;

            return(await _mediator.Send(new SendOrganisationDetailsAmendedEmailRequest
            {
                OrganisationId = request.OrganisationId,
                PropertyChanged = "Website address",
                ValueAdded = request.WebsiteLink,
                Editor = updatedBy?.DisplayName ?? "EFSA Staff"
            }));
        }
        public async Task <IActionResult> ChangeWebsite(ChangeWebsiteViewModel vm)
        {
            var epaoid = _contextAccessor.HttpContext.User.FindFirst("http://schemas.portal.com/epaoid")?.Value;

            try
            {
                var organisation = await GetEpaOrganisation(epaoid);

                if (organisation == null)
                {
                    return(RedirectToAction(nameof(HomeController.NotRegistered), nameof(HomeController).RemoveController()));
                }

                if (vm.ActionChoice == "Save")
                {
                    if (ModelState.IsValid)
                    {
                        if (string.Equals(vm.WebsiteLink, organisation.OrganisationData?.WebsiteLink))
                        {
                            return(RedirectToAction(nameof(OrganisationDetails)));
                        }

                        // only check if an web site link has been entered - model has required validator

                        var encodedWebsiteUrl = HttpUtility.UrlEncode(vm.WebsiteLink);
                        _logger.LogInformation($"VALIDATEWEBSITELINK - OrganisationController.ChangeWebsite: {vm.WebsiteLink}, {encodedWebsiteUrl}");
                        if (await _validationApiClient.ValidateWebsiteLink(encodedWebsiteUrl) == false)
                        {
                            ModelState.AddModelError(nameof(ChangeWebsiteViewModel.WebsiteLink), "Enter a valid website address");
                        }
                    }

                    if (!ModelState.IsValid)
                    {
                        return(RedirectToAction(nameof(ChangeWebsite)));
                    }

                    vm = new ChangeWebsiteViewModel
                    {
                        WebsiteLink = vm.WebsiteLink
                    };

                    return(View("ChangeWebsiteConfirm", vm));
                }
                else if (vm.ActionChoice == "Confirm")
                {
                    var userId  = _contextAccessor.HttpContext.User.FindFirst("UserId").Value;
                    var request = new UpdateEpaOrganisationWebsiteLinkRequest
                    {
                        WebsiteLink    = vm.WebsiteLink,
                        OrganisationId = organisation.OrganisationId,
                        UpdatedBy      = Guid.Parse(userId)
                    };

                    var notifiedContacts = await _organisationsApiClient.UpdateEpaOrganisationWebsiteLink(request);

                    if (notifiedContacts == null)
                    {
                        throw new Exception("Unable to update the website address.");
                    }

                    vm = new ChangeWebsiteViewModel
                    {
                        WebsiteLink = vm.WebsiteLink,
                        Contacts    = notifiedContacts
                    };

                    return(View("ChangeWebsiteUpdated", vm));
                }
            }
            catch (Exception e)
            {
                _logger.LogError(e, "Failed to change website link");
                ModelState.AddModelError(nameof(ChangeWebsiteViewModel.WebsiteLink), "Unable to update the website address at this time.");
                return(RedirectToAction(nameof(ChangeWebsite)));
            }

            return(RedirectToAction(nameof(OrganisationDetails)));
        }