public async Task <List <ContactResponse> > UpdateEpaOrganisationAddress(UpdateEpaOrganisationAddressRequest updateEpaOrganisationAddressRequest)
 {
     using (var request = new HttpRequestMessage(HttpMethod.Put, $"api/ao/assessment-organisations/update-address"))
     {
         return(await PostPutRequestWithResponse <UpdateEpaOrganisationAddressRequest, List <ContactResponse> >(request,
                                                                                                                updateEpaOrganisationAddressRequest));
     }
 }
Exemplo n.º 2
0
        public async Task <IActionResult> UpdateEpaOrganisationAddress([FromBody] UpdateEpaOrganisationAddressRequest request)
        {
            try
            {
                _logger.LogInformation($"Amending the Organisation [{request.OrganisationId} with Address {request.AddressLine1}, {request.AddressLine2}, {request.AddressLine3}, {request.AddressLine4}, {request.Postcode}]");
                var result = await _mediator.Send(request);

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

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

            updateEpaOrganisationRequest.Address1 = request.AddressLine1;
            updateEpaOrganisationRequest.Address2 = request.AddressLine2;
            updateEpaOrganisationRequest.Address3 = request.AddressLine3;
            updateEpaOrganisationRequest.Address4 = request.AddressLine4;
            updateEpaOrganisationRequest.Postcode = request.Postcode;

            await _mediator.Send(updateEpaOrganisationRequest);

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

            string valueAdded = string.Join(", ",
                                            (new List <string>
            {
                request.AddressLine1,
                request.AddressLine2,
                request.AddressLine3,
                request.AddressLine4,
                request.Postcode
            })
                                            .Where(p => !string.IsNullOrEmpty(p))
                                            .ToArray());

            return(await _mediator.Send(new SendOrganisationDetailsAmendedEmailRequest
            {
                OrganisationId = request.OrganisationId,
                PropertyChanged = "Contact address",
                ValueAdded = valueAdded,
                Editor = updatedBy?.DisplayName ?? "EFSA Staff"
            }));
        }
        public async Task <IActionResult> ChangeAddress(ChangeAddressViewModel 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")
                {
                    // regardless of whether the model is invalid, when the values have not been changed do not update
                    if (string.Equals(vm.AddressLine1, organisation.OrganisationData?.Address1) &&
                        string.Equals(vm.AddressLine2, organisation.OrganisationData?.Address2) &&
                        string.Equals(vm.AddressLine3, organisation.OrganisationData?.Address3) &&
                        string.Equals(vm.AddressLine4, organisation.OrganisationData?.Address4) &&
                        string.Equals(vm.Postcode, organisation.OrganisationData?.Postcode))
                    {
                        ModelState.Clear();
                        return(RedirectToAction(nameof(OrganisationDetails)));
                    }

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

                    vm = new ChangeAddressViewModel
                    {
                        AddressLine1 = vm.AddressLine1,
                        AddressLine2 = vm.AddressLine2,
                        AddressLine3 = vm.AddressLine3,
                        AddressLine4 = vm.AddressLine4,
                        Postcode     = vm.Postcode
                    };

                    return(View("ChangeAddressConfirm", vm));
                }
                else if (vm.ActionChoice == "Confirm")
                {
                    var userId  = _contextAccessor.HttpContext.User.FindFirst("UserId").Value;
                    var request = new UpdateEpaOrganisationAddressRequest
                    {
                        AddressLine1   = vm.AddressLine1,
                        AddressLine2   = vm.AddressLine2,
                        AddressLine3   = vm.AddressLine3,
                        AddressLine4   = vm.AddressLine4,
                        Postcode       = vm.Postcode,
                        OrganisationId = organisation.OrganisationId,
                        UpdatedBy      = Guid.Parse(userId)
                    };

                    var notifiedContacts = await _organisationsApiClient.UpdateEpaOrganisationAddress(request);

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

                    vm = new ChangeAddressViewModel
                    {
                        AddressLine1 = vm.AddressLine1,
                        AddressLine2 = vm.AddressLine2,
                        AddressLine3 = vm.AddressLine3,
                        AddressLine4 = vm.AddressLine4,
                        Postcode     = vm.Postcode,
                        Contacts     = notifiedContacts
                    };

                    return(View("ChangeAddressUpdated", vm));
                }
            }
            catch (Exception e)
            {
                _logger.LogError(e, "Failed to change address");
                ModelState.AddModelError(nameof(ChangeAddressViewModel.AddressLine1), "Unable to update the address at this time.");
                return(RedirectToAction(nameof(ChangeAddress)));
            }

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