public async Task <bool> Handle(UpdateOrganisationUkprnRequest request, CancellationToken cancellationToken) { if (!_validator.IsValidUKPRN(request.Ukprn)) { var invalidUkprnError = $@"Invalid Organisation Ukprn '{request.Ukprn}'"; _logger.LogInformation(invalidUkprnError); throw new BadRequestException(invalidUkprnError); } var duplicateUkprnDetails = _validator.DuplicateUkprnInAnotherOrganisation(request.Ukprn, request.OrganisationId); if (duplicateUkprnDetails.DuplicateFound) { var invalidUkprnError = $@"Ukprn '{request.Ukprn}' already used against organisation '{duplicateUkprnDetails.DuplicateOrganisationName}'"; _logger.LogInformation(invalidUkprnError); throw new BadRequestException(invalidUkprnError); } _logger.LogInformation($@"Handling Update '{FieldChanged}' for Organisation ID [{request.OrganisationId}]"); var auditRecord = _auditLogService.AuditUkprn(request.OrganisationId, request.UpdatedBy, request.Ukprn); if (!auditRecord.ChangesMade) { return(await Task.FromResult(false)); } var success = await _updateOrganisationRepository.UpdateUkprn(request.OrganisationId, request.Ukprn, request.UpdatedBy); if (!success) { return(await Task.FromResult(false)); } return(await _updateOrganisationRepository.WriteFieldChangesToAuditLog(auditRecord)); }