fix bug where new cities are added

This commit is contained in:
Fox 2026-06-24 12:14:19 +01:00
parent 70a5eb9103
commit d79a82adee

View File

@ -66,9 +66,9 @@ internal class SolicitorsRepository(IRepoSetupService setup)
cancellationToken: cancellationToken); cancellationToken: cancellationToken);
if (matchingSolicitor is null) if (matchingSolicitor is null)
await AddNewSolicitor(solicitor, cancellationToken); await AddNewSolicitorAsync(solicitor, cancellationToken);
else else
UpdateExistingSolicitor(solicitor, matchingSolicitor); await UpdateExistingSolicitorAsync(solicitor, matchingSolicitor, cancellationToken);
try try
{ {
@ -94,7 +94,7 @@ internal class SolicitorsRepository(IRepoSetupService setup)
return SaveChangesAsync(cancellationToken); return SaveChangesAsync(cancellationToken);
} }
private async Task AddNewSolicitor( private async Task AddNewSolicitorAsync(
SolicitorData solicitor, SolicitorData solicitor,
CancellationToken cancellationToken) CancellationToken cancellationToken)
{ {
@ -192,19 +192,22 @@ internal class SolicitorsRepository(IRepoSetupService setup)
location.LocationRatings.Add(newLocRating); location.LocationRatings.Add(newLocRating);
} }
private void UpdateExistingSolicitor( private Task UpdateExistingSolicitorAsync(
SolicitorData solicitor, SolicitorData solicitor,
Solicitor matchingSolicitor) Solicitor matchingSolicitor,
CancellationToken cancellationToken)
{ {
UpdateSolicitorRootData(matchingSolicitor, solicitor); UpdateSolicitorRootData(matchingSolicitor, solicitor);
UpdateExistingCities(solicitor, matchingSolicitor); var citiesUpdate = UpdateExistingCitiesAsync(solicitor, matchingSolicitor, cancellationToken);
UpdateExistingRatings(solicitor, matchingSolicitor); UpdateExistingRatings(solicitor, matchingSolicitor);
UpdateExistingLocations(solicitor, matchingSolicitor); UpdateExistingLocations(solicitor, matchingSolicitor);
return citiesUpdate;
} }
private void UpdateExistingCities( private async Task UpdateExistingCitiesAsync(
SolicitorData solicitor, SolicitorData solicitor,
Solicitor matchingSolicitor) Solicitor matchingSolicitor,
CancellationToken cancellationToken)
{ {
var lostCities = matchingSolicitor.Cities var lostCities = matchingSolicitor.Cities
.Where(city => solicitor.Cities.All(cityName => cityName != city.Name)) .Where(city => solicitor.Cities.All(cityName => cityName != city.Name))
@ -220,6 +223,8 @@ internal class SolicitorsRepository(IRepoSetupService setup)
var matchingCity = matchingSolicitor.Cities var matchingCity = matchingSolicitor.Cities
.FirstOrDefault(city => cityName == city.Name); .FirstOrDefault(city => cityName == city.Name);
matchingCity ??= await GetCityByNameAsync(cityName, cancellationToken);
if (matchingCity is null) if (matchingCity is null)
AddNewCityToSolicitor(cityName, matchingSolicitor); AddNewCityToSolicitor(cityName, matchingSolicitor);
else else