|  | @@ -0,0 +1,51 @@
 | 
	
		
			
				|  |  | +using Comal.Classes;
 | 
	
		
			
				|  |  | +using InABox.Core;
 | 
	
		
			
				|  |  | +using InABox.Database;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +namespace PRS.Shared;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +public class Update_7_40 : DatabaseUpdateScript
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +    public override VersionNumber Version => new VersionNumber(7, 40);
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  | +    public override bool Update()
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        UpdateRequitionItemJobLinks();
 | 
	
		
			
				|  |  | +        return true;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    private void UpdateRequitionItemJobLinks()
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        var requijobs = DbFactory.Provider
 | 
	
		
			
				|  |  | +            .Query<Requisition>(null, new Columns<Requisition>(x => x.ID, x => x.JobLink.ID))
 | 
	
		
			
				|  |  | +            .ToDictionary<Requisition, Guid, Guid>(x => x.ID, x => x.JobLink.ID);
 | 
	
		
			
				|  |  | +        
 | 
	
		
			
				|  |  | +        var filter = new Filter<RequisitionItem>(x => x.JobLink.ID)
 | 
	
		
			
				|  |  | +            .IsEqualTo(Guid.Empty);
 | 
	
		
			
				|  |  | +        
 | 
	
		
			
				|  |  | +        var columns = new Columns<RequisitionItem>()
 | 
	
		
			
				|  |  | +            .Add(x => x.ID)
 | 
	
		
			
				|  |  | +            .Add(x=>x.RequisitionLink.ID)
 | 
	
		
			
				|  |  | +            .Add(x=>x.RequisitionLink.Filled)
 | 
	
		
			
				|  |  | +            .Add(x=>x.RequisitionLink.Archived)
 | 
	
		
			
				|  |  | +            .Add(x => x.JobLink.ID)
 | 
	
		
			
				|  |  | +            .Add("Job.ID");
 | 
	
		
			
				|  |  | +        
 | 
	
		
			
				|  |  | +        var items = DbFactory.Provider.Query(typeof(RequisitionItem), filter, columns)
 | 
	
		
			
				|  |  | +            .Rows
 | 
	
		
			
				|  |  | +            .Select(r => r.ToObject<RequisitionItem>())
 | 
	
		
			
				|  |  | +            .ToArray();
 | 
	
		
			
				|  |  | +        
 | 
	
		
			
				|  |  | +        foreach (var item in items)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            requijobs.TryGetValue(item.RequisitionLink.ID, out Guid jobid);
 | 
	
		
			
				|  |  | +            item.JobLink.ID = jobid;
 | 
	
		
			
				|  |  | +            CoreUtils.SetPropertyValue(item,"Job.ID", jobid);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        
 | 
	
		
			
				|  |  | +        DbFactory.Provider.Save<RequisitionItem>(items);
 | 
	
		
			
				|  |  | +        Logger.Send(LogType.Information, "", $"{items.Length} requisition items processed");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +}
 |