aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.BL/Builders/JobBuilder.cs
blob: cc1379cadadddaeb79e01c61e2eafddfd4cb4ab1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
using Tango.BL.Entities;
using System.Data.Entity;

namespace Tango.BL.Builders
{
    public class JobBuilder : EntityBuilderBase<Job, JobBuilder>
    {
        public JobBuilder(ObservablesContext context) : base(context)
        {

        }

        protected override IQueryable<Job> OnSetQuery(IQueryable<Job> query)
        {
            return query.
                Include(x => x.Machine).
                Include(x => x.Rml).
                Include(x => x.ColorSpace).
                Include(x => x.SpoolType).
                Include(x => x.Customer).
                Include(x => x.WindingMethod);
        }

        public virtual JobBuilder WithSegments()
        {
            return AddStep(1, () =>
             {
                 Context.Segments.Where(x => x.JobGuid == Entity.Guid).Include(x => x.SegmentsGroup).OrderBy(x => x.SegmentIndex).ToList();
             });
        }

        public virtual JobBuilder WithBrushStops()
        {
            return AddStep(2, () =>
             {
                 Context.BrushStops.Where(x => x.Segment.JobGuid == Entity.Guid).Include(x => x.ColorSpace).Include(x => x.ColorCatalogsItem).OrderBy(x => x.StopIndex).ToList();
             });
        }

        public virtual JobBuilder WithConfiguration()
        {
            return AddStep(3, () =>
            {
                new MachineBuilder(Context).Set(Entity.MachineGuid).WithSpools().Build();

                new ConfigurationBuilder(Context)
                    .Set(Entity.Machine.ConfigurationGuid)
                    .WithIdsPacks().Build();
            });
        }

        public virtual JobBuilder WithRML(List<Cct> cctCache = null)
        {
            return AddStep(4, () =>
            {
                new RmlBuilder(Context).
                    Set(Entity.RmlGuid).
                    WithActiveParametersGroup().
                    WithCctCache(cctCache).
                    WithCCT().
                    WithGbdAndLub().
                    WithCAT(Entity.MachineGuid).
                    WithSpools().
                    WithLiquidFactors().Build();
            });
        }

        public virtual JobBuilder WithUser()
        {
            return AddStep(5, () =>
            {
                new UserBuilder(Context).Set(Entity.UserGuid).Build();
            });
        }

        public virtual JobBuilder WithJobRuns()
        {
            return AddStep(6, () =>
            {
                Context.JobRuns.Where(x => x.JobGuid == Entity.Guid).OrderBy(x => x.StartDate).ToList();
            });
        }

        public virtual JobBuilder WithSegmentsGroups()
        {
            return AddStep(7, () =>
            {
                Context.SegmentsGroups.Where(x => x.JobGuid == Entity.Guid).OrderBy(x => x.SegmentIndex).ToList();
            });
        }
    }
}