public async Task <Result> Handle(CompleteImportJob request, CancellationToken cancellationToken)
 {
     return(await _importJobsRepository.GetImportJobStatus(request.JobId)
            .Ensure(job => job.Status == JobStatus.Finished,
                    "Cannot complete job. Job should have finished status.")
            .Bind(_ => _importedPollingStationsRepository.GetNumberOfImportedAddresses(request.JobId))
            .Ensure(count => count > 0, "There are no polling stations to import.")
            .Bind(_ => _importedPollingStationsRepository.GetNumberOfUnresolvedAddresses(request.JobId))
            .Ensure(numberOfUnresolvedAddresses => numberOfUnresolvedAddresses == 0,
                    "Cannot complete job with unresolved addresses.")
            .Tap(() => SwapPollingStations())
            .Tap(() => UpdateAddressBank())
            .Tap(() => _importJobsRepository.UpdateJobStatus(request.JobId, JobStatus.Imported))
            .Tap(() => _pollingStationSearchService.BustCache()));
 }