public void SetScopeStatuses() { DateTime lastSnapshotDate = DateTime.MinValue; long lastOrganisationId = -1; int index = -1; IOrderedQueryable <OrganisationScope> scopes = DataRepository.GetAll <OrganisationScope>() .OrderBy(os => os.SnapshotDate) .ThenBy(os => os.OrganisationId) .ThenByDescending(os => os.ScopeStatusDate); foreach (OrganisationScope scope in scopes) { if (lastSnapshotDate != scope.SnapshotDate || lastOrganisationId != scope.OrganisationId) { index = 0; } else { index++; } //Set the status ScopeRowStatuses newStatus = index == 0 ? ScopeRowStatuses.Active : ScopeRowStatuses.Retired; if (scope.Status != newStatus) { scope.Status = newStatus; } lastSnapshotDate = scope.SnapshotDate; lastOrganisationId = scope.OrganisationId; } DataRepository.SaveChanges(); }
public OrganisationScopeBuilder WithStatus(ScopeRowStatuses status) { this.status = status; return(this); }