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 RmlsCollectionBuilder : EntityCollectionBuilderBase { public RmlsCollectionBuilder(ObservablesContext context) : base(context) { } public virtual RmlsCollectionBuilder ForSite(String siteGuid) { return AddQueryStep(1, (query) => { if (siteGuid != null) { var siteRmlsGuids = Context.SitesRmls.Where(x => x.SiteGuid == siteGuid).ToList().Select(x => x.RmlGuid).Where(x => x != null).Distinct().ToArray(); if (siteRmlsGuids.Length > 0) { return query.Where(x => siteRmlsGuids.Contains(x.Guid)); } else { return query; } } else { return query; } }); } public virtual RmlsCollectionBuilder ForHeadType(HeadTypes headType) { return AddQueryStep(2, (query) => { return query.Where(x => x.HeadType == (int)headType); }); } public virtual RmlsCollectionBuilder WithCCT() { return AddQueryStep(3, (query) => { return query.Include(x => x.Cct); }); } public virtual RmlsCollectionBuilder WithSpools() { return AddQueryStep(4, (query) => { return query.Include(x => x.RmlsSpools).Include(x => x.RmlsSpools.Select(y => y.SpoolType)); }); } public virtual RmlsCollectionBuilder WithGbdAndLub() { return AddQueryStep(5, (query) => { return query.Include(x => x.Gbd).Include(x => x.Lub); }); } public virtual RmlsCollectionBuilder WithAllParametersGroup() { return AddStep(1, () => { foreach (var rml in Entities.ToList()) { var groups = Context.ProcessParametersTablesGroups.Where(x => x.RmlGuid == rml.Guid).ToList(); foreach (var group in groups) { Context.ProcessParametersTables.Where(x => x.ProcessParametersTablesGroupGuid == group.Guid).OrderBy(x => x.TableIndex).ToList(); } } }); } public virtual RmlsCollectionBuilder WithActiveParametersGroup() { return AddStep(2, () => { foreach (var rml in Entities.ToList()) { Context.ProcessParametersTablesGroups.Where(x => x.RmlGuid == rml.Guid && x.Active).Include(x => x.ProcessParametersTables).FirstOrDefault(); } }); } public virtual RmlsCollectionBuilder WithCAT(String machineGuid) { return AddStep(4, () => { foreach (var rml in Entities.ToList()) { Context.Cats.Where(x => x.MachineGuid == machineGuid && x.RmlGuid == rml.Guid).ToList(); } }); } public virtual RmlsCollectionBuilder WithLiquidFactors() { return AddStep(5, () => { foreach (var rml in Entities.ToList()) { Context.LiquidTypesRmls.Where(x => x.RmlGuid == rml.Guid).Include(x => x.LiquidType).OrderBy(x => x.LiquidType.Code).ToList(); } }); } public virtual RmlsCollectionBuilder WithMediaProperties() { return AddStep(6, () => { Context.MediaMaterials.ToList(); Context.MediaPurposes.ToList(); Context.MediaConditions.ToList(); Context.LinearMassDensityUnits.ToList(); Context.FiberShapes.ToList(); Context.FiberSynths.ToList(); }); } } }