public async Task <Result> UpdateImportedPollingStation(Guid jobId, ImportedPollingStationModel importedPollingStation)
        {
            var result = await Result.Try(async() =>
            {
                var pollingStation = await _context.ImportedPollingStations
                                     .Where(x => x.Id == importedPollingStation.Id)
                                     .Where(x => x.JobId == jobId.ToString())
                                     .FirstAsync();

                pollingStation.County                = importedPollingStation.County;
                pollingStation.Locality              = importedPollingStation.Locality;
                pollingStation.PollingStationNumber  = importedPollingStation.PollingStationNumber;
                pollingStation.Address               = importedPollingStation.Address;
                pollingStation.Institution           = importedPollingStation.Institution;
                pollingStation.Latitude              = importedPollingStation.Latitude;
                pollingStation.Longitude             = importedPollingStation.Longitude;
                pollingStation.ResolvedAddressStatus = importedPollingStation.ResolvedAddressStatus;
                pollingStation.FailMessage           = importedPollingStation.FailMessage;
                pollingStation.JobId = jobId.ToString();

                if (importedPollingStation.AssignedAddresses != null)
                {
                    if (pollingStation.AssignedAddresses != null)
                    {
                        _context.ImportedPollingStationAddresses.RemoveRange(pollingStation.AssignedAddresses);
                    }

                    pollingStation.AssignedAddresses = importedPollingStation.AssignedAddresses.Select(x => MapToAssignedAddresses(pollingStation, x)).ToList();
                }

                await _context.SaveChangesAsync();
            });

            return(result);
        }
        public async Task <Result <int> > AddPollingStation(Guid jobId, ImportedPollingStationModel pollingStation)
        {
            var result = await Result.Try(async() =>
            {
                var entity = new ImportedPollingStationEntity
                {
                    Address               = pollingStation.Address,
                    County                = pollingStation.County,
                    Institution           = pollingStation.Institution,
                    Locality              = pollingStation.Locality,
                    PollingStationNumber  = pollingStation.PollingStationNumber,
                    ResolvedAddressStatus = pollingStation.ResolvedAddressStatus,
                    FailMessage           = pollingStation.FailMessage,
                    Latitude              = pollingStation.Latitude,
                    Longitude             = pollingStation.Longitude,
                    JobId = jobId.ToString(),
                };
                entity.AssignedAddresses = pollingStation.AssignedAddresses
                                           .Select(x => MapToAssignedAddresses(entity, x)).ToList();

                await _context.ImportedPollingStations.AddAsync(entity);
                await _context.SaveChangesAsync();

                return(entity.Id);
            }, exception => LogException(exception));

            return(result);
        }
        public async Task <Result <int> > Handle(AddImportedPollingStation request, CancellationToken cancellationToken)
        {
            var pollingStation = new ImportedPollingStationModel
            {
                County                = request.PollingStation.County,
                Locality              = request.PollingStation.Locality,
                PollingStationNumber  = request.PollingStation.PollingStationNumber,
                Address               = request.PollingStation.Address,
                Institution           = request.PollingStation.Institution,
                ResolvedAddressStatus = request.PollingStation.ResolvedAddressStatus ?? ResolvedAddressStatusType.NotProcessed,
                Latitude              = request.PollingStation.Latitude,
                Longitude             = request.PollingStation.Longitude,
                JobId             = request.JobId.ToString(),
                AssignedAddresses = request.PollingStation.AssignedAddresses
            };

            return(await _repository.AddPollingStation(request.JobId, pollingStation));
        }