public async Task <List <ContactResponse> > UpdateEpaOrganisationEmail(UpdateEpaOrganisationEmailRequest updateEpaOrganisationEmailRequest)
 {
     using (var request = new HttpRequestMessage(HttpMethod.Put, $"api/ao/assessment-organisations/update-email"))
     {
         return(await PostPutRequestWithResponse <UpdateEpaOrganisationEmailRequest, List <ContactResponse> >(request,
                                                                                                              updateEpaOrganisationEmailRequest));
     }
 }
Exemple #2
0
        public async Task <IActionResult> UpdateEpaOrganisationEmail([FromBody] UpdateEpaOrganisationEmailRequest request)
        {
            try
            {
                _logger.LogInformation($"Amending the Organisation [{request.OrganisationId} with Email {request.Email}]");
                var result = await _mediator.Send(request);

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

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

            updateEpaOrganisationRequest.Email = request.Email;

            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 = "Email address",
                ValueAdded = request.Email,
                Editor = updatedBy?.DisplayName ?? "EFSA Staff"
            }));
        }
        public async Task <IActionResult> ChangeEmail(ChangeEmailViewModel 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.Email, organisation.OrganisationData?.Email))
                        {
                            return(RedirectToAction(nameof(OrganisationDetails)));
                        }

                        // only check if an email address has been entered - model has required validator
                        if (await _validationApiClient.ValidateEmailAddress(vm.Email) == false)
                        {
                            ModelState.AddModelError(nameof(ChangeEmailViewModel.Email), "Enter a valid email address");
                        }
                    }

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

                    vm = new ChangeEmailViewModel
                    {
                        Email = vm.Email
                    };

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

                    var notifiedContacts = await _organisationsApiClient.UpdateEpaOrganisationEmail(request);

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

                    vm = new ChangeEmailViewModel
                    {
                        Email    = vm.Email,
                        Contacts = notifiedContacts
                    };

                    return(View("ChangeEmailUpdated", vm));
                }
            }
            catch (Exception e)
            {
                _logger.LogError(e, "Failed to change email address");
                ModelState.AddModelError(nameof(ChangeEmailViewModel.Email), "Unable to update the email address at this time.");
                return(RedirectToAction(nameof(ChangeEmail)));
            }

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