using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Tango.BL.Entities; using System.Data.Entity; using Tango.BL.Enumerations; namespace Tango.BL.Builders { public class JobRunsCollectionBuilder : EntityCollectionBuilderBase { public JobRunsCollectionBuilder(ObservablesContext context) : base(context) { } public virtual JobRunsCollectionBuilder WithMachines(List machines) { return AddQueryStep(1, (query) => { if (machines != null && machines.Count > 0) { var machineIDs = new HashSet(machines.Select(p => p.Guid)); return query.Where(x => machineIDs.Contains(x.MachineGuid)); } return query; }); } public virtual JobRunsCollectionBuilder WithJobSource(IEnumerable source) { return AddQueryStep(2, (query) => { if(source.Count() > 0) { int[] jobRunSourceArr = source.Select(x => (int)x).ToArray(); return query.Where(x => jobRunSourceArr.Contains(x.JobSource)); } return query; }); } public virtual JobRunsCollectionBuilder WithJobStatus(IEnumerable status) { return AddQueryStep(3, (query) => { if(status.Count() > 0) { int[] jobRunStatusArr = status.Select(x => (int)x).ToArray(); return query.Where(x => jobRunStatusArr.Contains(x.Status)); } return query; }); } public virtual JobRunsCollectionBuilder WithGradient(IEnumerable isGradient) { return AddQueryStep(4, (query) => { if(isGradient.Count() > 0) { bool[] isGradientArr = isGradient.Select(x => (bool)x).ToArray(); return query.Where(x => isGradientArr.Contains(x.IsGradient)); } return query; }); } public virtual JobRunsCollectionBuilder WithRmls(List rmlGuids) { return AddQueryStep(5, (query) => { if (rmlGuids != null && rmlGuids.Count > 0) { return query.Where(x => rmlGuids.Contains(x.RmlGuid)); } return query; }); } } }