blob: a30198ff2622acd639609fceb065af78eb1bb9fd (
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
|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Tango.BL;
using Tango.BL.Entities;
using System.Data.Entity;
using Tango.BL.Builders;
namespace Tango.FSE.BL.Services
{
public class MachineConfigurationService : FSEServiceBase
{
public class MachineEditingComposition : IDisposable
{
public Machine Machine { get; set; }
public List<Organization> Organizations { get; set; }
public List<HardwareVersion> HardwareVersions { get; set; }
public String TotalDyeTime { get; set; }
public String TotalDyeMeters { get; set; }
internal ObservablesContext Context { get; set; }
public MachineEditingComposition()
{
Organizations = new List<Organization>();
HardwareVersions = new List<HardwareVersion>();
}
public void Dispose()
{
Context?.Dispose();
Context = null;
}
}
public Task<MachineEditingComposition> GetMachineEditingComposition(String machineGuid)
{
return Task.Factory.StartNew<MachineEditingComposition>(() =>
{
ObservablesContext db = ObservablesContext.CreateDefault();
MachineEditingComposition composition = new MachineEditingComposition();
//Organizations
bool allowAll = CurrentUser.HasPermission(Tango.BL.Enumerations.Permissions.FSE_ManageAllOrganizationsUsersAndRoles);
composition.Organizations = db.Organizations.Where(x => allowAll || x.Guid == CurrentUser.OrganizationGuid).Include(x => x.Sites).ToList();
//Machine
composition.Machine = new MachineBuilder(db).Set(machineGuid).WithConfiguration().Build();
//Hardware Versions
composition.HardwareVersions = db.HardwareVersions.OrderByDescending(x => x.Version).ToList();
//Counters
var jobRuns = db.JobRuns.Where(x => x.MachineGuid == machineGuid).Select(x => new { x.StartDate, x.EndDate, x.EndPosition }).ToList();
composition.TotalDyeTime = TimeSpan.FromHours(jobRuns.Select(x => x.EndDate - x.StartDate).Sum(x => x.TotalHours)).ToStringUnlimitedHours();
int meters = (int)jobRuns.Select(x => x.EndPosition).Sum();
composition.TotalDyeMeters = $"{meters.ToString("N0")} meters";
composition.Context = db;
return composition;
});
}
public Task<MachineEditingComposition> SaveMachineEditingComposition(MachineEditingComposition composition)
{
return Task.Factory.StartNew<MachineEditingComposition>(() =>
{
composition.Machine.SetupFpga = composition.Machine.SetupFirmware;
composition.Context.SaveChanges();
composition.Context.Dispose();
return GetMachineEditingComposition(composition.Machine.Guid).Result;
});
}
public Task<int> ResetCounters(String machineGuid)
{
return Task.Factory.StartNew<int>(() =>
{
using (ObservablesContext db = new ObservablesContext())
{
return db.JobRuns.Where(x => x.MachineGuid == machineGuid).DeleteFromQuery();
}
});
}
}
}
|