aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.BL/Builders/JobRunsCollectionBuilder.cs
blob: a1990c9ea578866bdc8060f15032df1134223400 (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
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<JobRun, JobRunsCollectionBuilder>
    {
        public JobRunsCollectionBuilder(ObservablesContext context) : base(context)
        {

        }

        public virtual JobRunsCollectionBuilder WithMachines(List<Machine> machines)
        {
            return AddQueryStep(1, (query) =>
            {
                if (machines != null && machines.Count > 0)
                {
                    var machineIDs = new HashSet<string>(machines.Select(p => p.Guid));
                    return query.Where(x => machineIDs.Contains(x.MachineGuid));
                }
                return query;
            });
        }

        public virtual JobRunsCollectionBuilder WithJobSource(IEnumerable<JobSource> 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<JobRunStatus> 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<bool> 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<String> rmlGuids)
        {
            return AddQueryStep(5, (query) =>
            {
                if (rmlGuids != null && rmlGuids.Count > 0)
                {
                    return query.Where(x => rmlGuids.Contains(x.RmlGuid));
                }
                return query;
            });
        }
    }
}