public async Task <bool> Handle(AddSubcontractorDeclarationFileUploadRequest request, CancellationToken cancellationToken)
        {
            if (string.IsNullOrEmpty(request.FileName))
            {
                return(false);
            }
            _logger.LogInformation($"Adding subcontractor declaration clarification file [{request.FileName}] for application ID {request.ApplicationId}");

            var application = await _applyRepository.GetApplication(request.ApplicationId);

            var gatewayReviewDetails = application.ApplyData.GatewayReviewDetails;

            gatewayReviewDetails.GatewaySubcontractorDeclarationClarificationUpload = request.FileName;
            application.ApplyData.GatewayReviewDetails = gatewayReviewDetails;

            return(await _gatewayRepository.UpdateGatewayApplyData(request.ApplicationId, application.ApplyData, request.UserId, request.UserName));
        }
        public async Task <bool> Handle(RemoveSubcontractorDeclarationFileRequest request, CancellationToken cancellationToken)
        {
            _logger.LogInformation($"Removing subcontractor declaration clarification file [{request.FileName}] for application ID {request.ApplicationId}");
            var application = await _applyRepository.GetApplication(request.ApplicationId);

            var gatewayReviewDetails = application.ApplyData.GatewayReviewDetails;

            if (gatewayReviewDetails.GatewaySubcontractorDeclarationClarificationUpload == request.FileName)
            {
                gatewayReviewDetails.GatewaySubcontractorDeclarationClarificationUpload = null;

                application.ApplyData.GatewayReviewDetails = gatewayReviewDetails;
                return(await _gatewayRepository.UpdateGatewayApplyData(request.ApplicationId, application.ApplyData, request.UserId, request.UserName));
            }
            else
            {
                _logger.LogError($"Removing subcontractor declaration clarification file [{request.FileName}] for application ID {request.ApplicationId} failed as filename could not be matched");
                return(false);
            }
        }
        public async Task <bool> Handle(UpdateExternalApiCheckDetailsRequest request, CancellationToken cancellationToken)
        {
            var application = await _applyRepository.GetApplication(request.ApplicationId);

            if (application is null || request.ApplyGatewayDetails is null)
            {
                return(false);
            }

            if (application.ApplyData.GatewayReviewDetails is null)
            {
                application.ApplyData.GatewayReviewDetails = new ApplyGatewayDetails();
            }

            application.ApplyData.GatewayReviewDetails.UkrlpDetails             = request.ApplyGatewayDetails.UkrlpDetails;
            application.ApplyData.GatewayReviewDetails.RoatpRegisterDetails     = request.ApplyGatewayDetails.RoatpRegisterDetails;
            application.ApplyData.GatewayReviewDetails.CompaniesHouseDetails    = request.ApplyGatewayDetails.CompaniesHouseDetails;
            application.ApplyData.GatewayReviewDetails.CharityCommissionDetails = request.ApplyGatewayDetails.CharityCommissionDetails;
            application.ApplyData.GatewayReviewDetails.SourcesCheckedOn         = request.ApplyGatewayDetails.SourcesCheckedOn;

            return(await _gatewayRepository.UpdateGatewayApplyData(request.ApplicationId, application.ApplyData, request.UserId, request.UserName));
        }