private void DeleteSpecifiedFieldVisits() { if (!IsFieldVisitDeletionEnabled()) { return; } if (Is3X()) { throw new ExpectedException($"Field visit deletion is not supported for AQTS {Client.ServerVersion}"); } if (!ResolvedLocations.Any()) { // Delete field visits from all locations Context.LocationsToDelete = new List <string> { "*" }; ResolvedLocations = GetResolvedLocations(); } var timeRange = new List <string>(); if (Context.VisitsBefore.HasValue) { timeRange.Add($"before {Context.VisitsBefore.Value:O}"); } if (Context.VisitsAfter.HasValue) { timeRange.Add($"after {Context.VisitsAfter.Value:O}"); } var locationQuantity = "location".ToQuantity(ResolvedLocations.Count); Log.Info($"Inspecting {locationQuantity} for field visits {string.Join(" and ", timeRange)} ..."); var deletedVisitCount = 0; foreach (var locationInfo in ResolvedLocations) { deletedVisitCount += DeleteVisitsAtLocation(locationInfo); } if (Context.DryRun) { Log.Info($"Dry run completed. {"field visit".ToQuantity(InspectedFieldVisits)} would have been deleted from {locationQuantity}."); } else { Log.Info($"Deleted {"field visit".ToQuantity(deletedVisitCount)} from {locationQuantity}."); } }
private void ChangeFieldVisitApprovals() { if (!ResolvedLocations.Any()) { // Change field visits from all locations Context.Locations = new List <string> { "*" }; ResolvedLocations = GetResolvedLocations() .OrderBy(l => l.Identifier) .ToList(); } var timeRange = new List <string>(); if (Context.VisitsBefore.HasValue) { timeRange.Add($"before {Context.VisitsBefore.Value:O}"); } if (Context.VisitsAfter.HasValue) { timeRange.Add($"after {Context.VisitsAfter.Value:O}"); } var locationQuantity = "location".ToQuantity(ResolvedLocations.Count); Log.Info($"Inspecting {locationQuantity} for field visits {string.Join(" and ", timeRange)} ..."); var changedVisitCount = 0; foreach (var locationInfo in ResolvedLocations) { changedVisitCount += ChangeVisitsAtLocation(locationInfo); } if (Context.DryRun) { Log.Info($"Dry run completed. {"field visit".ToQuantity(InspectedFieldVisits)} would have been changed from {locationQuantity}."); } else { Log.Info($"Changed {"field visit".ToQuantity(changedVisitCount)} from {locationQuantity}."); } }
private void DeleteSpecifiedFieldVisits() { if (!IsFieldVisitDeletionEnabled()) { return; } if (Is3X()) { throw new ExpectedException($"Field visit deletion is not supported for AQTS {Client.ServerVersion}"); } if (!ResolvedLocations.Any()) { // Delete field visits from all locations Context.LocationsToDelete = new List <string> { "*" }; ResolveLocationsFromSpecificVisits(); ResolvedLocations = GetResolvedLocations(); } var timeRange = new List <string>(); if (Context.VisitsToDelete.Any()) { timeRange.Add($"with {"specific visit".ToQuantity(Context.VisitsToDelete.Count)}"); } if (Context.VisitsBefore.HasValue) { timeRange.Add($"before {Context.VisitsBefore.Value:O}"); } if (Context.VisitsAfter.HasValue) { timeRange.Add($"after {Context.VisitsAfter.Value:O}"); } var locationQuantity = "location".ToQuantity(ResolvedLocations.Count); Log.Info($"Inspecting {locationQuantity} for field visits {string.Join(" and ", timeRange)} ..."); var visitIdentifiers = Context .VisitsToDelete .Select(VisitIdentifierParser.ParseIdentifier) .OrderBy(v => v.StartDateTime) .ToList(); LockedVisitCount = 0; var deletedVisitCount = 0; foreach (var locationInfo in ResolvedLocations) { var locationSpecificVisits = visitIdentifiers .Where(v => v.Location.Equals(locationInfo.Identifier, StringComparison.InvariantCultureIgnoreCase)) .ToList(); deletedVisitCount += DeleteVisitsAtLocation(locationInfo, locationSpecificVisits); } var lockedVisitSummary = string.Empty; if (LockedVisitCount > 0) { lockedVisitSummary = $", skipping {"locked field visit".ToQuantity(LockedVisitCount)}"; } if (Context.DryRun) { Log.Info($"Dry run completed. {"field visit".ToQuantity(InspectedFieldVisits)} would have been deleted from {locationQuantity}{lockedVisitSummary}."); } else { Log.Info($"Deleted {"field visit".ToQuantity(deletedVisitCount)} from {locationQuantity}{lockedVisitSummary}."); } }