aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/Models/ExcelModel.cs
blob: 36498437538a6c9bd5f1118998655fc72fe00006 (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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Tango.MachineStudio.Statistics.Models
{
    public class ExcelModel
    {
        public String ID { get; set; }
        public String Machine { get; set; }
        public String User { get; set; }
        public String JobName { get; set; }
        public String Thread { get; set; }
        public String Length { get; set; }
        public String Source { get; set; }
        public String UploadDuration { get; set; }
        public String HeatingDuration { get; set; }
        public String StartTime { get; set; }
        public String IsGradient { get; set; }
        public String GR { get; set; }
        public String Status { get; set; }
        public String EndTime { get; set; }
        public String TotalDyeingTime { get; set; }
        public String EndPosition { get; set; }
        public String Cyan { get; set; }
        public String Magenta { get; set; }
        public String Yellow { get; set; }
        public String Black { get; set; }
        public String Transparent { get; set; }
        public String Lubricant { get; set; }
        public String Cleaner { get; set; }
        public String LightCyan { get; set; }
        public String LightMagenta { get; set; }
        public String LightYellow { get; set; }
    }
}
an>IsStable { get; set; } } private static List<PendingUpload> _pendingUploads; static MachineStudioUpdateService() { _pendingUploads = new List<PendingUpload>(); } public CheckForUpdatesResponse CheckForUpdates(CheckForUpdatesRequest request) { LogManager.Log("Request received..."); try { CheckForUpdatesResponse response = new CheckForUpdatesResponse(); using (ObservablesContext db = ObservablesContext.CreateDefault(GetServerAddress())) { db.Configuration.LazyLoadingEnabled = false; //Load relation first... db.Roles.ToList(); db.Permissions.ToList(); db.UsersRoles.ToList(); db.RolesPermissions.ToList(); var user = db.Users.SingleOrDefault(x => x.Email.ToLower() == request.Email.ToLower() && x.Password == request.Password); if (user != null && user.HasPermission(Permissions.RunMachineStudio) || (request.Email == "ForceUpdate")) { var versions = db.MachineStudioVersions.ToList(); MachineStudioVersion latestVersion = null; if (request.AcceptBetaRelease) { latestVersion = versions.OrderByDescending(x => Version.Parse(x.Version)).FirstOrDefault(); } else { latestVersion = versions.Where(x => x.Stable).OrderByDescending(x => Version.Parse(x.Version)).FirstOrDefault(); } Version currentVersion = Version.Parse(request.Version); bool isForcedUpdate = versions.Exists(x => x.ForceUpdate && Version.Parse(x.Version) > currentVersion); String comments = String.Join(Environment.NewLine, versions.OrderBy(x => Version.Parse(x.Version)).Where(x => Version.Parse(x.Version) > currentVersion).Select(x => x.Comments)); if (latestVersion != null && Version.Parse(latestVersion.Version) > currentVersion) { response.IsUpdateAvailable = true; response.FtpHost = ConfigurationManager.AppSettings["FtpHost"].ToString(); response.UserName = ConfigurationManager.AppSettings["UserName"].ToString(); response.Password = ConfigurationManager.AppSettings["Password"].ToString(); response.FilePath = latestVersion.FtpFilePath; response.Version = latestVersion.Version; response.Comments = latestVersion.Comments; response.ForcedUpdate = isForcedUpdate; response.IsStable = latestVersion.Stable; } } else { throw new FaultException("Invalid user credentials."); } } return response; } catch (Exception ex) { LogManager.Log(ex); throw new FaultException(ex.ToString()); } } public UploadVersionResponse UploadVersion(UploadVersionRequest request) { try { UploadVersionResponse response = new UploadVersionResponse(); using (ObservablesContext db = ObservablesContext.CreateDefault(GetServerAddress())) { db.Configuration.LazyLoadingEnabled = false; //Load relation first... db.Roles.ToList(); db.Permissions.ToList(); db.UsersRoles.ToList(); db.RolesPermissions.ToList(); var user = db.Users.SingleOrDefault(x => x.Email.ToLower() == request.Email.ToLower() && x.Password == request.Password); if (user != null && user.HasPermission(Permissions.PublishMachineStudioVersion)) { var latestVersion = db.MachineStudioVersions.ToList().OrderByDescending(x => Version.Parse(x.Version)).FirstOrDefault(); Version currentVersion = Version.Parse(request.Version); String newVersionFileName = Path.GetRandomFileName() + ".zip"; String newVersionFilePath = "/machine studio versions/" + newVersionFileName; if (currentVersion > Version.Parse(latestVersion.Version)) { response.FtpHost = ConfigurationManager.AppSettings["FtpHost"].ToString(); response.UserName = ConfigurationManager.AppSettings["UserName"].ToString(); response.Password = ConfigurationManager.AppSettings["Password"].ToString(); response.FilePath = newVersionFilePath; response.FileName = newVersionFileName; response.Token = Guid.NewGuid().ToString(); _pendingUploads.Add(new PendingUpload() { UserGuid = user.Guid, Comments = request.Comments, ForcedUpdate = request.ForcedUpdate, Token = response.Token, Version = request.Version, FilePath = response.FilePath, IsStable = request.IsStable, }); } else { throw new FaultException("New version must be greater than latest version."); } } else { throw new FaultException("Invalid user credentials."); } } return response; } catch (Exception ex) { LogManager.Log(ex); throw new FaultException(ex.ToString()); } } public void NotifyUploadCompleted(UploadCompletedRequest request) { try { PendingUpload upload = _pendingUploads.FirstOrDefault(x => x.Token == request.Token); if (upload != null) { _pendingUploads.RemoveAll(x => x.Token == upload.Token); using (ObservablesContext db = ObservablesContext.CreateDefault(GetServerAddress())) { db.Configuration.LazyLoadingEnabled = false; db.MachineStudioVersions.Add(new MachineStudioVersion() { Comments = upload.Comments, FtpFilePath = upload.FilePath, UserGuid = upload.UserGuid, Version = upload.Version, ForceUpdate = upload.ForcedUpdate, Stable = upload.IsStable, }); db.SaveChanges(); } } else { throw new FaultException("Invalid Token."); } } catch (Exception ex) { LogManager.Log(ex); throw new FaultException(ex.ToString()); } } public string GetLatestVersion() { try { using (ObservablesContext db = ObservablesContext.CreateDefault(GetServerAddress())) { return db.MachineStudioVersions.ToList().OrderByDescending(x => Version.Parse(x.Version)).FirstOrDefault().Version; } } catch (Exception ex) { throw new FaultException(ex.ToString()); } } private String GetServerAddress() { return ConfigurationManager.AppSettings["ServerAddress"].ToString(); } } }