using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Tango.BL.Entities; using System.Data.Entity; namespace Tango.BL.Builders { public class JobsCollectionBuilder : EntityCollectionBuilderBase { public JobsCollectionBuilder(ObservablesContext context) : base(context) { } public virtual JobsCollectionBuilder WithCustomer() { return AddQueryStep(1, (query) => { return query.Include(x => x.Customer); }); } public virtual JobsCollectionBuilder WithColorSpace() { return AddQueryStep(2, (query) => { return query.Include(x => x.ColorSpace); }); } public virtual JobsCollectionBuilder WithSegments() { return AddStep(1, () => { foreach (var job in Entities.ToList()) { Context.Segments.Where(x => x.JobGuid == job.Guid).OrderBy(x => x.SegmentIndex).ToList(); } }); } public virtual JobsCollectionBuilder WithBrushStops() { return AddStep(2, () => { foreach (var segment in Entities.SelectMany(x => x.Segments).ToList()) { Context.BrushStops.Where(x => x.SegmentGuid == segment.Guid).OrderBy(x => x.StopIndex).ToList(); } }); } public virtual JobsCollectionBuilder WithSegmentsGroups() { return AddStep(3, () => { foreach (var job in Entities.ToList()) { Context.SegmentsGroups.Where(x => x.JobGuid == job.Guid).OrderBy(x => x.SegmentIndex).ToList(); } }); } public virtual JobsCollectionBuilder WithRmls() { return AddStep(4, () => { foreach (var job in Entities.ToList()) { Context.Rmls.Where(x => x.Guid == job.RmlGuid).ToList(); } }); } } }