|  | @@ -2,6 +2,7 @@
 | 
	
		
			
				|  |  |  using Comal.Stores;
 | 
	
		
			
				|  |  |  using InABox.Core;
 | 
	
		
			
				|  |  |  using InABox.Database;
 | 
	
		
			
				|  |  | +using PRS.Shared.Database_Update_Scripts.Utils;
 | 
	
		
			
				|  |  |  using PRSStores;
 | 
	
		
			
				|  |  |  using System.Collections.Generic;
 | 
	
		
			
				|  |  |  using System.Linq;
 | 
	
	
		
			
				|  | @@ -135,60 +136,12 @@ public class Update_7_52 : DatabaseUpdateScript
 | 
	
		
			
				|  |  |          DbFactory.Provider.Save(jobRequiItems);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    private void RefreshStatuses()
 | 
	
		
			
				|  |  | -    {
 | 
	
		
			
				|  |  | -        Logger.Send(LogType.Information, "", $"Refreshing JobRequisitionItem statuses");
 | 
	
		
			
				|  |  | -        var jobRequiItems = DbFactory.Provider.Query(
 | 
	
		
			
				|  |  | -            null,
 | 
	
		
			
				|  |  | -            JobRequisitionItemStore.StatusRequiredColumns().Add(x => x.Status))
 | 
	
		
			
				|  |  | -            .ToObjects<JobRequisitionItem>()
 | 
	
		
			
				|  |  | -            .ToList();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        var statusUpdates = new Dictionary<Tuple<JobRequisitionItemStatus, JobRequisitionItemStatus>, List<Guid>>();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        var i = 0;
 | 
	
		
			
				|  |  | -        foreach(var item in jobRequiItems)
 | 
	
		
			
				|  |  | -        {
 | 
	
		
			
				|  |  | -            if(i % 50 == 0)
 | 
	
		
			
				|  |  | -            {
 | 
	
		
			
				|  |  | -                Logger.Send(LogType.Information, "", $"Refreshing statuses: {(((double)i) / (double)jobRequiItems.Count * 100):F0}%");
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            if (JobRequisitionItemStore.CalculateStatus(Store, item))
 | 
	
		
			
				|  |  | -            {
 | 
	
		
			
				|  |  | -                var key = new Tuple<JobRequisitionItemStatus, JobRequisitionItemStatus>(item.GetOriginalValue(x=>x.Status), item.Status);
 | 
	
		
			
				|  |  | -                if(!statusUpdates.TryGetValue(key, out var list))
 | 
	
		
			
				|  |  | -                {
 | 
	
		
			
				|  |  | -                    list = new List<Guid>();
 | 
	
		
			
				|  |  | -                    statusUpdates.Add(key, list);
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -                list.Add(item.ID);
 | 
	
		
			
				|  |  | -                item.Issues += $"Updated status from {item.GetOriginalValue(x=>x.Status)} to {item.Status}";
 | 
	
		
			
				|  |  | -                
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            ++i;
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        foreach(var ((from, to), list) in statusUpdates)
 | 
	
		
			
				|  |  | -        {
 | 
	
		
			
				|  |  | -            Logger.Send(LogType.Information, "", $"{from} -> {to}: {list.Count} entries");
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        new BaseStore<JobRequisitionItem>
 | 
	
		
			
				|  |  | -        {
 | 
	
		
			
				|  |  | -            UserGuid = Guid.Empty,
 | 
	
		
			
				|  |  | -            UserID = "",
 | 
	
		
			
				|  |  | -            Platform = Platform.Server,
 | 
	
		
			
				|  |  | -            Version = CoreUtils.GetVersion(),
 | 
	
		
			
				|  |  | -            Provider = DbFactory.Provider
 | 
	
		
			
				|  |  | -        }.Save(jobRequiItems, "");
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |      public override bool Update()
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  |          UpdateStockMovements();
 | 
	
		
			
				|  |  |          UpdateOrderStatus();
 | 
	
		
			
				|  |  |          CreateJobRequisitionItemPurchaseOrderItems();
 | 
	
		
			
				|  |  | -        RefreshStatuses();
 | 
	
		
			
				|  |  | +        JobRequisitionItemUtils.RefreshStatuses(Store);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          return true;
 | 
	
		
			
				|  |  |      }
 |