Explorar el Código

First Commit

main
rpm-mcarman hace 3 años
commit
dc373a484a
Se han modificado 100 ficheros con 3611 adiciones y 0 borrados
  1. +396
    -0
      Global.cs
  2. +18
    -0
      ImportObjects/CustomerImport.cs
  3. +28
    -0
      ImportObjects/EquipmentImport.cs
  4. +15
    -0
      ImportObjects/PartImport.cs
  5. +21
    -0
      ImportObjects/WorkOrderImport.cs
  6. +536
    -0
      JDISImport.cs
  7. +194
    -0
      Program.cs
  8. +2
    -0
      README.md
  9. +45
    -0
      RESTMeta.cs
  10. +41
    -0
      RESTResponse.cs
  11. +137
    -0
      RESTService.cs
  12. +46
    -0
      RestObjects/Customer.cs
  13. +59
    -0
      RestObjects/Equipment.cs
  14. +15
    -0
      RestObjects/Inspection.cs
  15. +34
    -0
      RestObjects/InspectionLevel.cs
  16. +52
    -0
      RestObjects/InspectionType.cs
  17. +38
    -0
      RestObjects/Make.cs
  18. +37
    -0
      RestObjects/Model.cs
  19. +18
    -0
      RestObjects/Priority.cs
  20. +30
    -0
      RestObjects/Product.cs
  21. +36
    -0
      RestObjects/Reason.cs
  22. +18
    -0
      RestObjects/Status.cs
  23. +265
    -0
      RestObjects/Template.cs
  24. +18
    -0
      RestObjects/User.cs
  25. +112
    -0
      RestObjects/WorkOrder.cs
  26. +43
    -0
      XMLData.cs
  27. BIN
      bin/Debug/net6.0/Microsoft.Exchange.WebServices.Auth.dll
  28. BIN
      bin/Debug/net6.0/Microsoft.Exchange.WebServices.dll
  29. BIN
      bin/Debug/net6.0/Microsoft.Identity.Client.dll
  30. BIN
      bin/Debug/net6.0/Microsoft.IdentityModel.Abstractions.dll
  31. BIN
      bin/Debug/net6.0/Newtonsoft.Json.Bson.dll
  32. BIN
      bin/Debug/net6.0/Newtonsoft.Json.dll
  33. BIN
      bin/Debug/net6.0/RestSharp.dll
  34. BIN
      bin/Debug/net6.0/System.Net.Http.Formatting.dll
  35. +21
    -0
      bin/Debug/net6.0/brandt.json
  36. BIN
      bin/Debug/net6.0/importer
  37. +1327
    -0
      bin/Debug/net6.0/importer.deps.json
  38. BIN
      bin/Debug/net6.0/importer.dll
  39. BIN
      bin/Debug/net6.0/importer.pdb
  40. +9
    -0
      bin/Debug/net6.0/importer.runtimeconfig.json
  41. BIN
      bin/release/net6.0/ubuntu.18.04-x64/Microsoft.CSharp.dll
  42. BIN
      bin/release/net6.0/ubuntu.18.04-x64/Microsoft.Exchange.WebServices.Auth.dll
  43. BIN
      bin/release/net6.0/ubuntu.18.04-x64/Microsoft.Exchange.WebServices.dll
  44. BIN
      bin/release/net6.0/ubuntu.18.04-x64/Microsoft.Identity.Client.dll
  45. BIN
      bin/release/net6.0/ubuntu.18.04-x64/Microsoft.IdentityModel.Abstractions.dll
  46. BIN
      bin/release/net6.0/ubuntu.18.04-x64/Microsoft.VisualBasic.Core.dll
  47. BIN
      bin/release/net6.0/ubuntu.18.04-x64/Microsoft.VisualBasic.dll
  48. BIN
      bin/release/net6.0/ubuntu.18.04-x64/Microsoft.Win32.Primitives.dll
  49. BIN
      bin/release/net6.0/ubuntu.18.04-x64/Microsoft.Win32.Registry.dll
  50. BIN
      bin/release/net6.0/ubuntu.18.04-x64/Newtonsoft.Json.Bson.dll
  51. BIN
      bin/release/net6.0/ubuntu.18.04-x64/Newtonsoft.Json.dll
  52. BIN
      bin/release/net6.0/ubuntu.18.04-x64/RestSharp.dll
  53. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.AppContext.dll
  54. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.Buffers.dll
  55. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.Collections.Concurrent.dll
  56. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.Collections.Immutable.dll
  57. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.Collections.NonGeneric.dll
  58. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.Collections.Specialized.dll
  59. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.Collections.dll
  60. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.ComponentModel.Annotations.dll
  61. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.ComponentModel.DataAnnotations.dll
  62. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.ComponentModel.EventBasedAsync.dll
  63. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.ComponentModel.Primitives.dll
  64. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.ComponentModel.TypeConverter.dll
  65. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.ComponentModel.dll
  66. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.Configuration.dll
  67. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.Console.dll
  68. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.Core.dll
  69. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.Data.Common.dll
  70. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.Data.DataSetExtensions.dll
  71. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.Data.dll
  72. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.Diagnostics.Contracts.dll
  73. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.Diagnostics.Debug.dll
  74. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.Diagnostics.DiagnosticSource.dll
  75. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.Diagnostics.FileVersionInfo.dll
  76. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.Diagnostics.Process.dll
  77. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.Diagnostics.StackTrace.dll
  78. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.Diagnostics.TextWriterTraceListener.dll
  79. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.Diagnostics.Tools.dll
  80. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.Diagnostics.TraceSource.dll
  81. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.Diagnostics.Tracing.dll
  82. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.Drawing.Primitives.dll
  83. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.Drawing.dll
  84. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.Dynamic.Runtime.dll
  85. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.Formats.Asn1.dll
  86. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.Globalization.Calendars.dll
  87. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.Globalization.Extensions.dll
  88. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.Globalization.dll
  89. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.IO.Compression.Brotli.dll
  90. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.IO.Compression.FileSystem.dll
  91. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.IO.Compression.ZipFile.dll
  92. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.IO.Compression.dll
  93. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.IO.FileSystem.AccessControl.dll
  94. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.IO.FileSystem.DriveInfo.dll
  95. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.IO.FileSystem.Primitives.dll
  96. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.IO.FileSystem.Watcher.dll
  97. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.IO.FileSystem.dll
  98. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.IO.IsolatedStorage.dll
  99. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.IO.MemoryMappedFiles.dll
  100. BIN
      bin/release/net6.0/ubuntu.18.04-x64/System.IO.Pipes.AccessControl.dll

+ 396
- 0
Global.cs Ver fichero

@@ -0,0 +1,396 @@
using System;
using System.Collections.Generic;
using Newtonsoft.Json;
using System.IO;

namespace importer
{
public class Global
{
private static Settings _settings;
private static string _storageDir;
public static string StorageDir { get { return _storageDir; } set { _storageDir = value; } }
public static Settings Settings { get { return _settings; } set { _settings = value; } }
public static string ServiceUrl
{
get
{
if (Program.Args[0] == "brandt")
return JDISImport.ServiceUrl;
else return string.Empty;
}
}
public Global() { }
public Global(string[] settingsFile)
{
if (IsWindows())
{
Global.StorageDir = string.Format("C:/{0}/store/", settingsFile[0]).Replace("/", "\\");
}
else if (IsMacOS())
{
Global.StorageDir = string.Format("/Users/{0}/{1}/store/", settingsFile[1], settingsFile[0]);
}
else if (IsLinux())
{
Global.StorageDir = string.Format("/home/{0}/{1}/store/", settingsFile[1], settingsFile[0]);
}
else
{
throw new Exception("OS cannot be detected.");
}
Global.Settings = new Settings();
string path = Path.Combine(Global.StorageDir, string.Format("{0}.json", settingsFile[0]));

string text = File.ReadAllText(path);
Global.Settings = JsonConvert.DeserializeObject<Settings>(text);

}

public static bool IsWindows() =>
System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform(System.Runtime.InteropServices.OSPlatform.Windows);

public static bool IsMacOS() =>
System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform(System.Runtime.InteropServices.OSPlatform.OSX);

public static bool IsLinux() =>
System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform(System.Runtime.InteropServices.OSPlatform.Linux);
public static DateTime DateFormatter(string d, bool hastime = true)
{
string month, day, year, time;

DateTime dt = new DateTime();
if (d.IndexOf("JAN") != -1)
{
month = "01";
d = d.Replace("JAN", "|");
day = d.Substring(0, d.IndexOf("|"));
year = d.Substring(d.IndexOf("|") + 1, 4);
if (hastime)
time = d.Substring(d.IndexOf(":") - 3 + 2);
else time = "00:00:00.000";

string date = string.Format("{0}-{1}-{2} {3}", year, month, day, time);
dt = DateTime.Parse(date);
}
else if (d.IndexOf("FEB") != -1)
{
month = "02";
d = d.Replace("FEB", "|");
day = d.Substring(0, d.IndexOf("|"));
year = d.Substring(d.IndexOf("|") + 1, 4);
if (hastime)
time = d.Substring(d.IndexOf(":") - 3 + 2);
else time = "00:00:00.000";

string date = string.Format("{0}-{1}-{2} {3}", year, month, day, time);
dt = DateTime.Parse(date);
}
else if (d.IndexOf("MARCH") != -1)
{
month = "03";
d = d.Replace("MARCH", "|");
day = d.Substring(0, d.IndexOf("|"));
year = d.Substring(d.IndexOf("|") + 1, 4);
if (hastime)
time = d.Substring(d.IndexOf(":") - 3 + 2);
else time = "00:00:00.000";

string date = string.Format("{0}-{1}-{2} {3}", year, month, day, time);
dt = DateTime.Parse(date);
}
else if (d.IndexOf("MAR") != -1)
{
month = "03";
d = d.Replace("MAR", "|");
day = d.Substring(0, d.IndexOf("|"));
year = d.Substring(d.IndexOf("|") + 1, 4);
if (hastime)
time = d.Substring(d.IndexOf(":") - 3 + 2);
else time = "00:00:00.000";

string date = string.Format("{0}-{1}-{2} {3}", year, month, day, time);
dt = DateTime.Parse(date);
}
else if (d.IndexOf("APRIL") != -1)
{
month = "04";
d = d.Replace("APRIL", "|");
day = d.Substring(0, d.IndexOf("|"));
year = d.Substring(d.IndexOf("|") + 1, 4);
if (hastime)
time = d.Substring(d.IndexOf(":") - 3 + 2);
else time = "00:00:00.000";

string date = string.Format("{0}-{1}-{2} {3}", year, month, day, time);
dt = DateTime.Parse(date);
}
else if (d.IndexOf("APR") != -1)
{
month = "04";
d = d.Replace("APR", "|");
day = d.Substring(0, d.IndexOf("|"));
year = d.Substring(d.IndexOf("|") + 1, 4);
if (hastime)
time = d.Substring(d.IndexOf(":") - 3 + 2);
else time = "00:00:00.000";

string date = string.Format("{0}-{1}-{2} {3}", year, month, day, time);
dt = DateTime.Parse(date);
}

else if (d.IndexOf("MAY") != -1)
{
month = "05";
d = d.Replace("MAY", "|");
day = d.Substring(0, d.IndexOf("|"));
year = d.Substring(d.IndexOf("|") + 1, 4);
if (hastime)
time = d.Substring(d.IndexOf(":") - 3 + 2);
else time = "00:00:00.000";

string date = string.Format("{0}-{1}-{2} {3}", year, month, day, time);
dt = DateTime.Parse(date);
}
else if (d.IndexOf("JUNE") != -1)
{
month = "06";
d = d.Replace("JUNE", "|");
day = d.Substring(0, d.IndexOf("|"));
year = d.Substring(d.IndexOf("|") + 1, 4);
if (hastime)
time = d.Substring(d.IndexOf(":") - 3 + 2);
else time = "00:00:00.000";

string date = string.Format("{0}-{1}-{2} {3}", year, month, day, time);
dt = DateTime.Parse(date);
}
else if (d.IndexOf("JUN") != -1)
{
month = "06";
d = d.Replace("JUN", "|");
day = d.Substring(0, d.IndexOf("|"));
year = d.Substring(d.IndexOf("|") + 1, 4);
if (hastime)
time = d.Substring(d.IndexOf(":") - 3 + 2);
else time = "00:00:00.000";

string date = string.Format("{0}-{1}-{2} {3}", year, month, day, time);
dt = DateTime.Parse(date);
}
else if (d.IndexOf("JULY") != -1)
{
month = "07";
d = d.Replace("JULY", "|");
day = d.Substring(0, d.IndexOf("|"));
year = d.Substring(d.IndexOf("|") + 1, 4);
if (hastime)
time = d.Substring(d.IndexOf(":") - 3 + 2);
else time = "00:00:00.000";

string date = string.Format("{0}-{1}-{2} {3}", year, month, day, time);
dt = DateTime.Parse(date);
}
else if (d.IndexOf("JUL") != -1)
{
month = "07";
d = d.Replace("JUL", "|");
day = d.Substring(0, d.IndexOf("|"));
year = d.Substring(d.IndexOf("|") + 1, 4);
if (hastime)
time = d.Substring(d.IndexOf(":") - 3 + 2);
else time = "00:00:00.000";

string date = string.Format("{0}-{1}-{2} {3}", year, month, day, time);
dt = DateTime.Parse(date);
}
else if (d.IndexOf("AUG") != -1)
{
month = "08";
d = d.Replace("AUG", "|");
day = d.Substring(0, d.IndexOf("|"));
year = d.Substring(d.IndexOf("|") + 1, 4);
if (hastime)
time = d.Substring(d.IndexOf(":") - 3 + 2);
else time = "00:00:00.000";

string date = string.Format("{0}-{1}-{2} {3}", year, month, day, time);
dt = DateTime.Parse(date);
}
else if (d.IndexOf("SEPT") != -1)
{
month = "09";
d = d.Replace("SEPT", "|");
day = d.Substring(0, d.IndexOf("|"));
year = d.Substring(d.IndexOf("|") + 1, 4);
if (hastime)
time = d.Substring(d.IndexOf(":") - 3 + 2);
else time = "00:00:00.000";

string date = string.Format("{0}-{1}-{2} {3}", year, month, day, time);
dt = DateTime.Parse(date);
}
else if (d.IndexOf("SEP") != -1)
{
month = "09";
d = d.Replace("SEP", "|");
day = d.Substring(0, d.IndexOf("|"));
year = d.Substring(d.IndexOf("|") + 1, 4);
if (hastime)
time = d.Substring(d.IndexOf(":") - 3 + 2);
else time = "00:00:00.000";

string date = string.Format("{0}-{1}-{2} {3}", year, month, day, time);
dt = DateTime.Parse(date);
}
else if (d.IndexOf("OCT") != -1)
{
month = "10";
d = d.Replace("OCT", "|");
day = d.Substring(0, d.IndexOf("|"));
year = d.Substring(d.IndexOf("|") + 1, 4);
if (hastime)
time = d.Substring(d.IndexOf(":") - 3 + 2);
else time = "00:00:00.000";

string date = string.Format("{0}-{1}-{2} {3}", year, month, day, time);
dt = DateTime.Parse(date);
}
else if (d.IndexOf("0CT") != -1)
{
month = "10";
d = d.Replace("0CT", "|");
day = d.Substring(0, d.IndexOf("|"));
year = d.Substring(d.IndexOf("|") + 1, 4);
if (hastime)
time = d.Substring(d.IndexOf(":") - 3 + 2);
else time = "00:00:00.000";
string date = string.Format("{0}-{1}-{2} {3}", year, month, day, time);
dt = DateTime.Parse(date);
}
else if (d.IndexOf("NOV") != -1)
{
month = "11";
d = d.Replace("NOV", "|");
day = d.Substring(0, d.IndexOf("|"));
year = d.Substring(d.IndexOf("|") + 1, 4);
if (hastime)
time = d.Substring(d.IndexOf(":") - 3 + 2);
else time = "00:00:00.000";

string date = string.Format("{0}-{1}-{2} {3}", year, month, day, time);
dt = DateTime.Parse(date);
}
else
{
month = "12";
d = d.Replace("DEC", "|");
day = d.Substring(0, d.IndexOf("|"));
year = d.Substring(d.IndexOf("|") + 1, 4);
if (hastime)
time = d.Substring(d.IndexOf(":") - 3 + 2);
else time = "00:00:00.000";

string date = string.Format("{0}-{1}-{2} {3}", year, month, day, time);
dt = DateTime.Parse(date);
}
return dt;
}
}
public static class Deserialize
{
public static T FromJson<T>(string json)
{
//Console.WriteLine(json);
return JsonConvert.DeserializeObject<T>(json, Converter.Settings);

}
}
public static class Serialize
{
public static string ToJson<T>(this T self)
{
return JsonConvert.SerializeObject(self, Converter.Settings);
}
}
internal static class Converter
{
public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
{
MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
DateParseHandling = DateParseHandling.None,
DateFormatHandling = DateFormatHandling.MicrosoftDateFormat,
};
}
[JsonObject(MemberSerialization.OptIn)]
public class Settings
{

[JsonProperty(PropertyName = "Remote")]
public bool Remote { get; set; }
[JsonProperty(PropertyName = "LogFile")]
public string LogFile { get; set; }
[JsonProperty(PropertyName = "MailProperties")]
public MailProperties MailProperties { get; set; }
[JsonProperty(PropertyName = "Prelub")]
public Prelub Prelub { get; set; }
[JsonProperty(PropertyName = "Customer")]
public string Customer { get; set; }
}
[JsonObject(MemberSerialization.OptIn)]
public class MailProperties
{
[JsonProperty(PropertyName = "AppID")]
public string AppID { get; set; }
[JsonProperty(PropertyName = "TenentID")]
public string TenentID { get; set; }
[JsonProperty(PropertyName = "ObjectId")]
public string ObjectId { get; set; }
[JsonProperty(PropertyName = "SecretID")]
public string SecretID { get; set; }
[JsonProperty(PropertyName = "SecretV")]
public string SecretV { get; set; }
[JsonProperty(PropertyName = "Mailbox")]
public string Mailbox { get; set; }
[JsonProperty(PropertyName = "Url")]
public string Url { get; set; }
[JsonProperty(PropertyName = "Password")]
public string Password { get; set; }
[JsonProperty(PropertyName = "Username")]
public string Username { get; set; }
[JsonProperty(PropertyName = "Scope")]
public string Scope { get; set; }
[JsonProperty(PropertyName = "Filter")]
public string Filter { get; set; }
}
[JsonObject(MemberSerialization.OptIn)]
public class Prelub
{
[JsonProperty(PropertyName = "LocalService")]
public string LocalService { get; set; }
[JsonProperty(PropertyName = "RemoteService")]
public string RemoteService { get; set; }
}
}
/*
{
"MailProperties": {
"Username": "mcarman@prelub.com",
"Password": "Gr@nt@cc3$$",
"Mailbox": 4,
"Url": "https://outlook.office365.com/ews/Exchange.asmx",
"Filter": "Brandt Import, brandt import, Brandt import, brandt Import, BRANDT IMPORT",
"AppID": "489776b1-ee79-4b14-bc44-9f6bf47332db",
"TenentID": "1fd06c96-d3a4-45e9-9ed7-bcecb394d277",
"ObjectId": "c7647074-edb6-4e8e-8a01-a1ed924fdae9",
"SecretID": "cba04a6c-a233-4646-909b-b50921edbe1c",
"SecretV": "up-8Q~y46~JyQZjJlsAJ-zpXpglpmuPIJ1Gx3a2O"
},
"Remote": false,
"LogFile": "jdis.log",
"Prelub": {
"LocalService": "http://servicesbrandt.rpmindustries.com:8081",
"RemoteService": "https://servicesbrandt.rpmindustries.com"
}
}
*/

+ 18
- 0
ImportObjects/CustomerImport.cs Ver fichero

@@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace importer.ImportObjects
{
public class CustomerImport
{
public string Number { get; set; }
public string Name { get; set; }
public string Addr1 { get; set; }
public string Addr2 { get; set; }
public string City { get; set; }
public string State { get; set; }
public string Zip { get; set; }
}
}

+ 28
- 0
ImportObjects/EquipmentImport.cs Ver fichero

@@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using importer.RestObjects;

namespace importer.ImportObjects
{
public class EquipmentImport
{
public bool IsNew { get; set; }
public int MID { get; set; }
public string Make { get; set; }
public string Model { get; set; }
public string SerialNumber { get; set; }
public string EquipmentNumber { get; set; }
public string MeterReading { get; set; }
public static int MachineExists(string serialNumber)
{
Dictionary<string, string> search = new Dictionary<string, string>();
search.Add("search", serialNumber);
RESTService svc = new RESTService();
List<Equipment> machines = svc.RestGet<Equipment>("Equipments.svc", search);
if (machines.Count > 0) return machines.LastOrDefault().ID;
else return 0;
}
}
}

+ 15
- 0
ImportObjects/PartImport.cs Ver fichero

@@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace importer.ImportObjects
{
public class PartImport
{

public string Qty { get; set; }
public string Number { get; set; }
public string Description { get; set; }
}
}

+ 21
- 0
ImportObjects/WorkOrderImport.cs Ver fichero

@@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace importer.ImportObjects
{
public class WorkOrderImport
{
public DateTime CreateDate { get; set; }
public DateTime OpnDt { get; set; }
public string Number { get; set; }
public string Segment { get; set; }
public string InspectionLevel { get; set; }
public string TechnicianUserID { get; set; }
public DateTime ScheduledStartDate { get; set; }
public string InspectionInterval { get; set; }
public string InspectionType { get; set; }
public string CodeAndDescriptionOriginal { get; set; }
}
}

+ 536
- 0
JDISImport.cs Ver fichero

@@ -0,0 +1,536 @@
using System.Security.Principal;
using System;
using System.Text;
using System.Linq;
using System.Collections.Generic;
using importer.RestObjects;
using importer.ImportObjects;
using System.IO;

namespace importer
{
public class JDISImport
{
private static string _serviceUrl;
private static RESTService _rservice;
private static List<Customer> _customers;
private static List<Make> _makes;
private static List<Product> _products;
private static List<Model> _models;
private static List<InspectionType> _inspectionTypes;
private static List<Template> _templates;
private static List<User> _users;
private static Status _status;
private static Priority _priority;
private static Reason _reason;
public static string ServiceUrl { get { return _serviceUrl; } set { _serviceUrl = value; } }
public static Dictionary<string, int> InspectionType;
private static List<string> WriteFileToText(string file)
{
List<string> list = new List<string>();
string txt = string.Empty;
using (StreamReader sr = new StreamReader(file))
{
txt = sr.ReadToEnd().Trim();
txt = txt.Replace("\r\r\r", "");
txt = txt.Replace("\r\r", "");
txt = txt.Replace("\r", "");
sr.Close();
}
string[] array = txt.Trim().Split('\n');
list.AddRange(array);
return list;
}
private static string[] RemoveWhiteSpace(ref List<string> filelines)
{
for (int i = filelines.Count - 1; i >= 0; i--)
{
if (string.IsNullOrEmpty(filelines[i])) filelines.RemoveAt(i);
}
return filelines.ToArray();

}
private static void Line1(string currentline, ref ToDo todo)
{
string strDate = currentline.Substring(5, currentline.IndexOf("*") - 6);
strDate = strDate.Trim();
strDate.Replace(" ", " ");
todo.WorkOrder.CreateDate = Global.DateFormatter(strDate);
}
private static void Line2(string currentline, ref ToDo todo)
{
string strWONum = currentline.Substring(currentline.IndexOf("Work Order") + 10, 12);
strWONum = strWONum.Trim();
todo.WorkOrder.Number = strWONum;
todo.WorkOrderNumber = strWONum;
string strSeg = currentline.Substring(currentline.IndexOf("Seg.") + 4, 25);
strSeg = strSeg.Trim();
todo.WorkOrder.Segment = strSeg;
string strODate = currentline.Substring(currentline.IndexOf("Opn Dt") + 6);
strODate = strODate.Trim();
todo.WorkOrder.OpnDt = Global.DateFormatter(strODate, false);
}
private static void Line5678(string currentline, ref ToDo todo, int lineNumber)
{
if (lineNumber == 5)
{
todo.Customer.Name = currentline.Substring(3, 25);
todo.Customer.Number = currentline.Substring(38, 10);
}
if (lineNumber == 6)
{
todo.Customer.Addr1 = currentline.Substring(3, 25);
}
if (lineNumber == 7)
{
todo.Customer.Addr2 = currentline.Substring(3, 25);
}
if (lineNumber == 8)
{
int comma = currentline.IndexOf(",");
int length = currentline.Length - 3;

todo.Customer.City = (comma == -1) ? "" : currentline.Substring(3, comma - 3);
todo.Customer.State = currentline.Substring(currentline.IndexOf(",") + 2, 2);
todo.Customer.Zip = currentline.Substring(comma + 5, 7);
}

}
private static void Line11(string currentline, ref ToDo todo)
{
todo.Equipment.Make = currentline.Substring(0, 8).Trim();
todo.Equipment.Model = currentline.Substring(8, 14).Trim();
todo.Equipment.SerialNumber = currentline.Substring(22, 22).Trim();
todo.Equipment.EquipmentNumber = currentline.Substring(42, 16).Trim();
todo.Equipment.MeterReading = currentline.Substring(60, 7).Trim();
todo.Equipment.MID = EquipmentImport.MachineExists(todo.Equipment.SerialNumber);
if (todo.Equipment.MID == 0) todo.Equipment.IsNew = true;
else todo.Equipment.IsNew = false;
}
private static void CreateAPart(string currentline, ref ToDo todo)
{
PartImport pt = new PartImport();
string sline = currentline.Substring(19).Trim();
//pt.Description = currentline.Substring(34, 14);
pt.Number = sline.Substring(0, sline.IndexOf(" "));
sline = sline.Substring(sline.IndexOf(" ")).Trim();
pt.Description = sline.Substring(0, sline.IndexOf(" ")).Trim();
pt.Qty = currentline.Substring(0, currentline.IndexOf(" ")).Trim();
todo.Parts.Add(pt);
}
private static void PMInterval(string currentline, ref ToDo todo, ref bool isSpecial)
{
isSpecial = false;
string pminterval = currentline.Substring(currentline.IndexOf(":") + 2);
pminterval = pminterval.Substring(0, pminterval.IndexOf(" ")).Trim();
if (XMLData.IntervalLookup.ContainsKey(pminterval)) todo.WorkOrder.InspectionLevel = XMLData.IntervalLookup[pminterval].ToString();
if (!string.IsNullOrEmpty(todo.WorkOrder.InspectionLevel)) todo.WorkOrder.InspectionInterval = pminterval;
string strService = currentline.Substring(currentline.IndexOf(":") + 2);
strService = strService.Substring(strService.IndexOf(" ") + 1).Trim();
strService = strService.Substring(0, strService.IndexOf(" ") + 1).Trim();
if (strService.IndexOf(" ") > 0)
strService = strService.Substring(0, strService.IndexOf(" ")).Trim();
if (InspectionType.ContainsKey(strService))
todo.WorkOrder.InspectionType = InspectionType[strService].ToString();
else todo.WorkOrder.InspectionType = InspectionType["PM"].ToString();
string codeanddescriptionoriginal = currentline.Substring(currentline.IndexOf(":") + 2);
codeanddescriptionoriginal = codeanddescriptionoriginal.Substring(0, codeanddescriptionoriginal.IndexOf(" T") - 3).Trim();
todo.WorkOrder.CodeAndDescriptionOriginal = codeanddescriptionoriginal;
}
private static void EmpID(string currentline, ref ToDo todo, ref bool isSpecial)
{
isSpecial = false;
string empid = currentline.Substring(currentline.IndexOf(":") + 2);
empid = empid.Substring(0, empid.IndexOf(" ")).Trim();
todo.WorkOrder.TechnicianUserID = empid;
}
private static void PromiseDate(string currentline, ref ToDo todo, ref bool isSpecial)
{
isSpecial = false;
string promisedate = currentline.Substring(currentline.IndexOf(":") + 2);
promisedate = promisedate.Substring(0, promisedate.IndexOf(" ")).Trim();
todo.WorkOrder.ScheduledStartDate = Global.DateFormatter(promisedate, false);
}
private static void SpecialInstructions(string currentline, ref ToDo todo, ref bool isSpecial, ref StringBuilder sb)
{
isSpecial = true;
string special = currentline.Substring(currentline.IndexOf(":") + 2);
special = special.Substring(0, special.IndexOf(" T") - 1).Trim();
sb.Append(special);
}
private static void Line14AndUp(string currentline, ref ToDo todo, ref bool isSpecial, ref StringBuilder sb)
{
if (currentline.EndsWith(" T"))
{
if (currentline.Contains("PM LEVEL")) isSpecial = false;
else if (currentline.Contains("PM INTERVAL")) PMInterval(currentline, ref todo, ref isSpecial);
else if (currentline.Contains("EMPID")) EmpID(currentline, ref todo, ref isSpecial);
else if (currentline.Contains("PROMISE DATE")) PromiseDate(currentline, ref todo, ref isSpecial);
else if (currentline.Contains("SPECIAL INSTRUCTIONS")) SpecialInstructions(currentline, ref todo, ref isSpecial, ref sb);
else
{
if (isSpecial)
{
string addspecial = currentline.Substring(0, currentline.IndexOf(" T") - 1).Trim();
sb.Append(string.Format(" {0}", addspecial));
}
}
}
else //Decide if it is a part
{
isSpecial = false;
int qty = 0;

if (currentline.Length > 0)
{
string input = currentline.Substring(0, (currentline.IndexOf(" ") == -1) ? 1 : currentline.IndexOf(" ")).Trim();
if (int.TryParse(input, out qty))
{
if (qty < 100 && !currentline.Contains("HR"))
{
CreateAPart(currentline, ref todo);
}
}
}
}
}
private static Customer IsNewCustomer(string name)
{
List<Customer> list = _customers.FindAll(x => x.Name.Trim() == name.Trim());

if (list.Count > 1)
return list[list.Count - 1];
else if (list.Count == 1)
return list[0];
else return null;


}
private static Customer CreateNewCustomer(ToDo todo)
{
Customer cust = new Customer();
cust.Name = todo.Customer.Name;
cust.Address = todo.Customer.Addr1;
cust.Address2 = todo.Customer.Addr2;
cust.City = todo.Customer.City;
cust.State = todo.Customer.State;
cust.CreateDate = DateTime.Now;
cust.CreateUserID = -1;
cust.UpdateDate = DateTime.Now;
cust.UpdateUserID = -1;
cust.IsActive = true;
cust.Number = todo.Customer.Number;
cust.ZipCode = todo.Customer.Zip;
string json = Serialize.ToJson<Customer>(cust);
cust = _rservice.PostRest<Customer>(json, "customers.svc");
return cust;
}
private static Model CreateNewModel(Product defaultP, ToDo todo)
{
Model mdl = new Model();
//Find the Make and assign the default Product
mdl.Name = todo.Equipment.Model.Trim();
mdl.IsActive = true;
mdl.CreateDate = DateTime.Now;
mdl.CreateUserID = -1;
mdl.UpdateDate = DateTime.Now; ;
mdl.UpdateUserID = -1;
mdl.Product = defaultP;
Make mk = (from x in _makes where x.Name.Trim() == todo.Equipment.Make.Trim() select x).FirstOrDefault();
if (mk == null)
{
//Create new Make
mk.Name = todo.Equipment.Make.Trim();
mk.CreateDate = DateTime.Now;
mk.CreateUserID = -1;
mk.UpdateDate = DateTime.Now;
mk.UpdateUserID = -1;
mk.IsActive = true;
mk.Description = todo.Equipment.Make.Trim();
string mkJson = Serialize.ToJson<Make>(mk);
mk = _rservice.PostRest<Make>(mkJson, "makes.svc");

}
mdl.Make = mk;
string json = Serialize.ToJson<Model>(mdl);
mdl = _rservice.PostRest<Model>(json, "models.svc");
return mdl;
}
private static Equipment CreateNewMachine(Model mdl, Customer cust, ToDo todo)
{
Equipment newMachine = new Equipment();
newMachine.Model = mdl;
newMachine.Make = mdl.Make;
newMachine.Product = mdl.Product;
newMachine.BarcodeID = null;
newMachine.CreateDate = DateTime.Now;
newMachine.UpdateDate = DateTime.Now;
newMachine.UpateUserID = -1;
newMachine.CreateUserID = -1;
newMachine.Description = todo.Equipment.SerialNumber;
newMachine.IsActive = true;
newMachine.LastServiceDate = null;
newMachine.Location = null;
newMachine.ManufacturerYear = "2000";
newMachine.MeterReading = todo.Equipment.MeterReading;
newMachine.Number = todo.Equipment.EquipmentNumber;
newMachine.Odometer = null;
newMachine.SerialNumber = todo.Equipment.SerialNumber;
newMachine.Customer = cust;
string eqJson = Serialize.ToJson<Equipment>(newMachine);
newMachine = _rservice.PostRest<Equipment>(eqJson, "Equipments.svc");
return newMachine;
}
private static List<Equipment> IsNewMachine(string serial)
{
Dictionary<string, string> ps = new Dictionary<string, string>();
ps.Add("search", serial);

List<Equipment> machines = _rservice.RestGet<Equipment>("equipments.svc", ps);

return machines;
}
private static void APIPush(ref ToDo todo)
{
Equipment machine = new Equipment();
string strModel = todo.Equipment.Model.Trim();
Model mdl = _models.Find(x => x.Name.Trim() == strModel);
Product defaultP = _products.Find(x => x.ID == 14);
//Customer cust = new Customer();
Customer cust = IsNewCustomer(todo.Customer.Name);
if (cust == null)
cust = CreateNewCustomer(todo);
List<Equipment> equipment = IsNewMachine(todo.Equipment.SerialNumber);
todo.Equipment.IsNew = equipment.Count == 0;
if (todo.Equipment.IsNew)
{
bool isNewModel = mdl == null;
if (isNewModel)
{
string sModel = todo.Equipment.Model.Trim().Substring(0, todo.Equipment.Model.Length - 1);
mdl = (from x in _models where x.Name.Contains(sModel) orderby x.ID select x).LastOrDefault();
if (mdl == null)
mdl = CreateNewModel(defaultP, todo);
else
machine = CreateNewMachine(mdl, cust, todo);
}
else
{
machine = CreateNewMachine(mdl, cust, todo);
}
}
else
{
string eqSerial = todo.Equipment.SerialNumber.Trim();
List<Equipment> eqlist = equipment.FindAll(x => x.SerialNumber == eqSerial);
machine = eqlist[eqlist.Count - 1];
machine.Customer = cust;

}
//Find the Template
string il = todo.WorkOrder.InspectionLevel.Trim();
string it = todo.WorkOrder.InspectionType.Trim();
string eqmdl = todo.Equipment.Model.Trim();
Template template = _templates.Find(x => x.InspectionLevel.ID == Convert.ToInt32(il) && x.InspectionType.ID == Convert.ToInt32(it) && x.Name == eqmdl);
if (template == null)
{
//Search by model prefix and get the last one
string prefix = todo.Equipment.Model.Trim();
prefix = prefix.Substring(0, prefix.Length - 1);
template = (from x in _templates where x.InspectionLevel.ID == Convert.ToInt32(il) && x.InspectionType.ID == Convert.ToInt32(it) && x.Name.Contains(prefix) orderby x.ID select x).LastOrDefault();
if (template == null || template.ID == 0)
{
todo.Success = false;
todo.Validation = todo.Validation + " No template for this model.";
}

}
string tuid = todo.WorkOrder.TechnicianUserID.Trim();
User user = _users.Find(x => x.Number == tuid);
WorkOrder workorder = new WorkOrder();
workorder.Number = todo.WorkOrder.Number;// wo.Number;

workorder.Technician = user;
workorder.Reason = _reason;
workorder.Priority = _priority;
workorder.Status = _status;
workorder.CreateDate = DateTime.Now;
workorder.CreateUserID = -1;
workorder.Equipment = machine;
workorder.Customer = cust;
string mtrReading = todo.Equipment.MeterReading;
workorder.MeterReading = Convert.ToDecimal(mtrReading);
workorder.ScheduledStartDate = todo.WorkOrder.OpnDt;// wo.OpnDt;
workorder.ScheduledEndDate = todo.WorkOrder.OpnDt.AddDays(1d);
workorder.UpdateDate = DateTime.Now;
workorder.UpdateUserID = -1;
string woJson = Serialize.ToJson<WorkOrder>(workorder);
//Console.WriteLine("WorkOrder Object");
//Console.WriteLine();
//Console.WriteLine(woJson);
//JDISLog.WriteToLog(_logFile, string.Format("Creating Work Order: {0}", workorder.Number));
workorder = _rservice.PostRest<WorkOrder>(woJson, "workorders.svc");
if (workorder.ID != 0) todo.Success = true;
if (template == null || template.ID == 0)
{
todo.Validation = string.Format("Work Order {0} was created but there is no template matching model # {1}", workorder.Number, mdl.Name);
todo.Success = false;
}
else
{
//JDISLog.WriteToLog(_logFile, String.Format("Creating Inspections for Workorder {0}", workorder.Number));
Dictionary<string, string> tps = new Dictionary<string, string>();
tps.Add("create", string.Format("{0}/{1}/{2}", template.ID, workorder.ID, -1));
Inspection i = _rservice.RestGet<Inspection>(true, "inspections.svc", tps);
tps["create"] = string.Format("{0}/{1}/{2}", 1691, workorder.ID, -1);
Inspection sta = _rservice.RestGet<Inspection>(true, "inspections.svc", tps);
if (i != null && i.ID != 0)
{
todo.Success = true;
}
}

}
private static void ReadFile(ref ToDo todo)
{
todo.PathToFile = Path.Combine(Global.StorageDir, todo.FileName);
todo.Customer = new CustomerImport();
todo.WorkOrder = new WorkOrderImport();
todo.Equipment = new EquipmentImport();
todo.Parts = new List<PartImport>();
string filemove = string.Empty;
string filetxt = string.Empty;
string inspectionLevel = string.Empty;
bool isSpecial = false;
StringBuilder specialInstructions = new StringBuilder();
int line = 1;
try
{
List<string> filelines = WriteFileToText(todo.PathToFile);
string[] lines = RemoveWhiteSpace(ref filelines);
foreach (string s in lines)
{
string currentline = s.Trim().Replace("'", "''");
if (currentline.Contains("Page") && currentline.Substring(78).Trim() != "1")
line = 18;
if (currentline.Contains("Page") && currentline.Substring(78).Trim() == "1")
line = 1;
switch (line)
{
case 1:
Line1(currentline, ref todo);
break;
case 2:
Line2(currentline, ref todo);
break;
case 5:
case 6:
case 7:
case 8:
Line5678(currentline, ref todo, line);
break;
case 11:
Line11(currentline, ref todo);
break;
default:
break;
}
if (line > 14)
{
Line14AndUp(currentline, ref todo, ref isSpecial, ref specialInstructions);
}
line++;
}
if (todo.WorkOrder.ScheduledStartDate == DateTime.MinValue) todo.WorkOrder.ScheduledStartDate = DateTime.Now;
// List<CSVObject> list = new List<CSVObject>();
// List<CSVObject> exceptions = new List<CSVObject>();
if (todo.Parts.Count == 0)
{
PartImport p = new PartImport();
p.Description = string.Empty;
p.Qty = string.Empty;
p.Number = string.Empty;
todo.Parts.Add(p);

}
APIPush(ref todo);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}

}
public static void BeginImport(List<ToDo> todos)
{
for (int i = 0; i < todos.Count; i++)
{
ToDo todo = todos[i];
XMLData.BuildIntervalLookup();
GetInspectionTypes();
ReadFile(ref todo);
todos[i] = todo;
}

}
public static void GetInspectionTypes()
{

List<InspectionType> list = _rservice.RestGet<InspectionType>("inspectiontypes.svc");
InspectionType = new Dictionary<string, int>();
foreach (InspectionType t in list)
{
InspectionType.Add(t.Name, t.ID);
}

}
public static void BuildDefaults()
{
if (Global.Settings.Remote)
_serviceUrl = Global.Settings.Prelub.RemoteService;
else _serviceUrl = Global.Settings.Prelub.LocalService;
_rservice = new RESTService();
_customers = _rservice.RestGet<Customer>("customers.svc");
_makes = _rservice.RestGet<Make>("makes.svc");
_products = _rservice.RestGet<Product>("products.svc");
_models = _rservice.RestGet<Model>("models.svc");
_inspectionTypes = _rservice.RestGet<InspectionType>("inspectionTypes.svc");
_templates = _rservice.RestGet<Template>("templates.svc");
_users = _rservice.RestGet<User>("users.svc");
_status = new Status();
_status.ID = 1;
_status.Name = "Open";
_priority = new Priority();
_priority.ID = 3;
_priority.Name = "Medium";
_reason = new Reason();
_reason.ID = 9;
_reason.Name = "Cust. Request";
_reason.IsActive = true;
_reason.CreateDate = new DateTime(2013, 10, 1, 9, 23, 7);
_reason.CreateUserID = -1;
_reason.UpdateDate = new DateTime(2013, 10, 1, 9, 23, 7);
_reason.UpdateUserID = -1;
}
}
public class JDISLog
{
public static void WriteToLog(string logFile, string msg)
{
using (StreamWriter sw = File.AppendText(logFile))
{
sw.WriteLine(msg);
}

}
public static void Begin(string logFile)
{
using (StreamWriter sw = File.AppendText(logFile))
{
sw.WriteLine();
sw.WriteLine("###########################################################################");
sw.WriteLine(string.Format("Service Started @ {0}", DateTime.Now.ToShortDateString(), DateTime.Now.ToLongTimeString()));
}
}
}
}

+ 194
- 0
Program.cs Ver fichero

@@ -0,0 +1,194 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Timers;
using Microsoft.Identity.Client;
using Microsoft.Exchange.WebServices.Data;
using System.IO;
using importer.ImportObjects;
namespace importer
{
class Program
{
private static List<ToDo> _todos;
private static string _jdislog;
private static string[] _args;
public static string[] Args { get { return _args; } set { _args = value; } }
private static int[] TimeParts(int t)
{
string st = t.ToString();
if (st.Length == 1) st = "0" + st;
string st1 = st.Substring(0, 1);
string st2 = st.Substring(1, 1);
int[] ints = new int[2];
ints[0] = Convert.ToInt32(st1);
ints[1] = Convert.ToInt32(st2);
return ints;
}
static async System.Threading.Tasks.Task Main(string[] args)
{
bool hasRun = false;
_args = args;
Global global = new Global(args);
if (_args[0] == "brandt")
{
_jdislog = Path.Combine(Global.StorageDir, "jdis.log");
JDISLog.Begin(_jdislog);
JDISImport.BuildDefaults();
for (; ; )
{
int minute = DateTime.Now.Minute;
int[] timeParts = TimeParts(minute);
if (
(timeParts[0] == 0 && timeParts[1] == 0) ||
(timeParts[0] == 1 && timeParts[1] == 5) ||
(timeParts[0] == 3 && timeParts[1] == 0) ||
(timeParts[0] == 4 && timeParts[1] == 5) ||
(timeParts[0] == 0 && timeParts[1] == 5)
)
{
if (!hasRun)
{
JDISLog.WriteToLog(_jdislog, string.Format("Beginning Import Procces @ {0} {1}", DateTime.Now.ToShortDateString(), DateTime.Now.ToLongTimeString()));
hasRun = true;
await MailService();
}
}
else hasRun = false;
}
}
//add more to the if statement to account for other imports
}
static async System.Threading.Tasks.Task MailService()
{
_todos = new List<ToDo>();
var cca = ConfidentialClientApplicationBuilder
.Create(Global.Settings.MailProperties.AppID)
.WithClientSecret(Global.Settings.MailProperties.SecretV)
.WithTenantId(Global.Settings.MailProperties.TenentID)
.Build();
var ewsScopes = new string[] { Global.Settings.MailProperties.Scope };
var authResult = await cca.AcquireTokenForClient(ewsScopes)
.ExecuteAsync();
// Configure the ExchangeService with the access token
var ewsClient = new ExchangeService();
ewsClient.Url = new Uri(Global.Settings.MailProperties.Url);
ewsClient.Credentials = new OAuthCredentials(authResult.AccessToken);
ewsClient.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, Global.Settings.MailProperties.Username);
Mailbox mb = new Mailbox(Global.Settings.MailProperties.Mailbox);
FolderId fid = new FolderId(WellKnownFolderName.Inbox, mb);
List<SearchFilter> searchFilterCollection = new List<SearchFilter>();
string[] filters = Global.Settings.MailProperties.Filter.Split(';');
foreach (string s in filters)
searchFilterCollection.Add(new SearchFilter.ContainsSubstring(ItemSchema.Subject, s));
SearchFilter searchFilter = new SearchFilter.SearchFilterCollection(LogicalOperator.Or, searchFilterCollection.ToArray());
ItemView view = new ItemView(100);
view.PropertySet = new PropertySet(BasePropertySet.IdOnly, ItemSchema.Subject, ItemSchema.DateTimeReceived);
view.OrderBy.Add(ItemSchema.DateTimeReceived, SortDirection.Descending);
view.Traversal = ItemTraversal.Shallow;
//Console.WriteLine("Line 90: Finding emails.");
try
{
FindItemsResults<Item> findResults = ewsClient.FindItems(fid, searchFilter, view);
List<EmailMessage> messages = new List<EmailMessage>();
foreach (EmailMessage message in findResults.Items)
{
message.Load();
if (!message.IsRead)
messages.Add(message);
}
foreach (EmailMessage msg in messages)
{
if (msg.HasAttachments)
{
foreach (Attachment attachment in msg.Attachments)
{
attachment.Load();
if (attachment is FileAttachment)
{
ToDo todo = new ToDo();
todo.Sender = msg.Sender.Address;
todo.SenderName = msg.Sender.Name;
todo.FileName = attachment.Name;
_todos.Add(todo);
//Download File
FileAttachment fAttachment = attachment as FileAttachment;
string fileAttachmentPath = Path.Combine(Global.StorageDir, fAttachment.Name);
File.WriteAllBytes(fileAttachmentPath, fAttachment.Content);
msg.IsRead = true;
msg.Update(ConflictResolutionMode.AlwaysOverwrite);
msg.Move(WellKnownFolderName.DeletedItems);
}
}
}
}
JDISImport.BeginImport(_todos);
foreach (ToDo sendMsg in _todos)
{
EmailMessage msgToSend = new EmailMessage(ewsClient);
//JDISLog.WriteToLog(_logFile, string.Format("Sending Message to: {0}\r\nFor Work Order: {1}\r\nJDIS File: {2}", sendMsg.Sender, sendMsg.WorkOrderNumber, sendMsg.FileName.Substring(sendMsg.FileName.LastIndexOf("/") + 1).Trim()));
string body = "JDIS File: {0} Work Order:{1} {2}";
if (sendMsg.Success)
{
body = string.Format(body, sendMsg.FileName.Substring(sendMsg.FileName.LastIndexOf("/") + 1).Trim(), sendMsg.WorkOrderNumber, "Was Imported Successfully");
}
else
{
body = string.Format(body, sendMsg.FileName.Substring(sendMsg.FileName.LastIndexOf("/") + 1).Trim(), sendMsg.WorkOrderNumber, string.Format("Had Errors while importing: {0}", sendMsg.Validation));
msgToSend.Attachments.AddFileAttachment(Path.Combine(Global.StorageDir, sendMsg.FileName));
}
string fileNameOnly = sendMsg.FileName.Substring(sendMsg.FileName.LastIndexOf("/") + 1);
msgToSend.Subject = fileNameOnly;
msgToSend.ToRecipients.Add(new EmailAddress(sendMsg.Sender));
msgToSend.CcRecipients.Add(new EmailAddress("mcarman@rpmindustries.com"));
msgToSend.Body = body;
msgToSend.SendAndSaveCopy();
string pathToFile = Path.Combine(Global.StorageDir, sendMsg.FileName);
if (sendMsg.Success)
{
File.Move(pathToFile, Path.Combine(Global.StorageDir, "success", sendMsg.FileName), true);
JDISLog.WriteToLog(_jdislog, string.Format("Work Order: {0} Successfully Imported from {1} on {2} {3}", sendMsg.WorkOrderNumber, sendMsg.FileName, DateTime.Now.ToShortTimeString(), DateTime.Now.ToLongTimeString()));
}
else
{
File.Move(sendMsg.FileName, Path.Combine(Global.StorageDir, "failure", sendMsg.FileName), true);
JDISLog.WriteToLog(_jdislog, string.Format("Work Order: {0} Failed to Import from {1} on {2} {3}", sendMsg.WorkOrderNumber, sendMsg.FileName, DateTime.Now.ToShortTimeString(), DateTime.Now.ToLongTimeString()));
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
public class ToDo
{
public string Sender { get; set; }
public string SenderName { get; set; }
public string FileName { get; set; }
public string PathToFile { get; set; }
public string WorkOrderNumber { get; set; }
public bool Success { get; set; }
public string Validation { get; set; }
public WorkOrderImport WorkOrder { get; set; }
public CustomerImport Customer { get; set; }
public EquipmentImport Equipment { get; set; }
public List<PartImport> Parts { get; set; }
}
}

+ 2
- 0
README.md Ver fichero

@@ -0,0 +1,2 @@
# importer


+ 45
- 0
RESTMeta.cs Ver fichero

@@ -0,0 +1,45 @@

using Newtonsoft.Json;

namespace importer
{
[JsonObject(MemberSerialization.OptIn)]
public class RESTMeta
{
#region Fields

private int _numResults;
private bool _success = true;
private string _type;
private string _errorMessage;

#endregion

#region Properties
[JsonProperty(PropertyName = "numResults")]
public int numResults
{
get { return _numResults; }
set { _numResults = value; }
}
[JsonProperty(PropertyName = "success")]
public bool success
{
get { return _success; }
set { _success = value; }
}
[JsonProperty(PropertyName = "errorMessage")]
public string errorMessage
{
get { return _errorMessage; }
set { _errorMessage = value; }
}
[JsonProperty(PropertyName = "type")]
public string type
{
get { return _type; }
set { _type = value; }
}
#endregion
}
}

+ 41
- 0
RESTResponse.cs Ver fichero

@@ -0,0 +1,41 @@
using System.Globalization;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using System;

namespace importer
{
[JsonObject(MemberSerialization.OptIn)]
public class RESTResponse<T>
{
#region Fields

private RESTMeta _meta = null;
private T _data;

#endregion

#region Properties
[JsonProperty(PropertyName = "meta")]
public RESTMeta meta
{
get
{
if (_meta == null)
{
_meta = new RESTMeta();
}
return _meta;
}
set { _meta = value; }
}
[JsonProperty(PropertyName = "data")]
public T data
{
get { return _data; }
set { _data = value; }
}

#endregion
}
}

+ 137
- 0
RESTService.cs Ver fichero

@@ -0,0 +1,137 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Net.Http;
using System.Net.Http.Headers;
using RestSharp;

namespace importer
{
public class RESTService
{
private string _baseUrl = Global.ServiceUrl;
private HttpClient _httpClient;
public string BaseUrl { get { return _baseUrl; } set { _baseUrl = value; } }

public RESTService()
{

}
public RESTService(string endPoint, Dictionary<string, string> parameters)
{
_baseUrl = _baseUrl + "/" + endPoint;
foreach (KeyValuePair<string, string> kvp in parameters)
{
_baseUrl = _baseUrl + "/" + kvp.Key;
if (!string.IsNullOrEmpty(kvp.Value))
_baseUrl = _baseUrl + "/" + kvp.Value;
}

_httpClient = new HttpClient(new HttpClientHandler
{
UseCookies = true,
CookieContainer = new System.Net.CookieContainer()
})
{
BaseAddress = new Uri(_baseUrl),
DefaultRequestHeaders = { Accept = { MediaTypeWithQualityHeaderValue.Parse("application/json") } }
};
}
public string RestGet(string endpoint, Dictionary<string, string> parameters = null)
{
string url = _baseUrl + "/" + endpoint + '/';

RestClient client = new RestClient(url);

RestRequest request = new RestRequest(endpoint, Method.Get);
request.AddHeader("Accept", "application/json");
request.Method = Method.Get;
RestResponse response = client.Execute(request);
return response.Content;
}
public T RestGet<T>(bool single, string endpoint, Dictionary<string, string> parameters = null)
{
RESTResponse<T> rest = new RESTResponse<T>();
string url = _baseUrl + "/" + endpoint + "/";
if (parameters != null)
{
foreach (KeyValuePair<string, string> kvp in parameters)
{
url = url + kvp.Key + "/" + kvp.Value;
}
}
RestClient client = new RestClient(url);

RestRequest request = new RestRequest();
request.AddHeader("Accept", "application/json");
request.Method = Method.Get;
RestResponse response = client.Execute(request);
rest = Deserialize.FromJson<RESTResponse<T>>(response.Content);
return rest.data;
}
public T PostRest<T>(string json, string endpoint)
{
RESTResponse<T> rest = new RESTResponse<T>();
string url = _baseUrl + "/" + endpoint + "/";
RestClient client = new RestClient(url);
Console.WriteLine();
Console.WriteLine();
Console.WriteLine();
Console.WriteLine(json);
RestRequest request = new RestRequest();
request.Method = Method.Post;
request.RequestFormat = DataFormat.Json;

request.AddBody(json);
request.AddHeader("Accept", "application/json");
RestResponse response = client.Execute(request);
Console.WriteLine();
Console.WriteLine();
Console.WriteLine(response.Content);
rest = Deserialize.FromJson<RESTResponse<T>>(response.Content);
return rest.data;
}
public T PostRest<T>(string json, string endpoint, Dictionary<string, string> parameters)
{
RESTResponse<T> rest = new RESTResponse<T>();
string url = _baseUrl + "/" + endpoint + "/";
foreach (KeyValuePair<string, string> kvp in parameters)
{
url = url + kvp.Key + "/" + kvp.Value;
}
RestClient client = new RestClient(url);

RestRequest request = new RestRequest(url, Method.Post);
request.AddBody(json);
request.AddHeader("Accept", "application/json");
RestResponse response = client.Execute(request);
rest = Deserialize.FromJson<RESTResponse<T>>(response.Content);
return rest.data;
}
public List<T> RestGet<T>(string endpoint, Dictionary<string, string> parameters = null)
{
RESTResponse<List<T>> rest = new RESTResponse<List<T>>();
string url = _baseUrl + "/" + endpoint + "/";
if (parameters != null)
{
foreach (KeyValuePair<string, string> kvp in parameters)
{
url = url + kvp.Key + "/" + kvp.Value;
}
}

RestClient client = new RestClient(url);

RestRequest request = new RestRequest();
request.Method = Method.Get;
request.AddHeader("Accept", "application/json");
request.Method = Method.Get;
RestResponse response = client.Execute(request);
rest = Deserialize.FromJson<RESTResponse<List<T>>>(response.Content);
List<T> list = new List<T>();
list.AddRange(rest.data);
return list;
}
}
}

+ 46
- 0
RestObjects/Customer.cs Ver fichero

@@ -0,0 +1,46 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Newtonsoft.Json;

namespace importer.RestObjects
{
[JsonObject(MemberSerialization.OptIn)]
public class Customer
{
[JsonProperty(PropertyName = "Address")]
public string Address { get; set; }
[JsonProperty(PropertyName = "Address2")]
public string Address2 { get; set; }
[JsonProperty(PropertyName = "City")]
public string City { get; set; }
[JsonProperty(PropertyName = "State")]
public string State { get; set; }
[JsonProperty(PropertyName = "Name")]
public string Name { get; set; }
[JsonProperty(PropertyName = "Number")]
public string Number { get; set; }
[JsonProperty(PropertyName = "ID")]
public int ID { get; set; }
[JsonProperty(PropertyName = "IsActive")]
public bool IsActive { get; set; }
[JsonProperty(PropertyName = "Phone1")]
public string Phone1 { get; set; }
[JsonProperty(PropertyName = "Phone2")]
public string Phone2 { get; set; }
[JsonProperty(PropertyName = "Fax")]
public string Fax { get; set; }
[JsonProperty(PropertyName = "ZipCode")]
public string ZipCode { get; set; }
[JsonProperty(PropertyName = "CreateDate")]
public DateTime CreateDate { get; set; }
[JsonProperty(PropertyName = "CreateUserID")]
public int CreateUserID { get; set; }
[JsonProperty(PropertyName = "UpdateDate")]
public DateTime? UpdateDate { get; set; }
[JsonProperty(PropertyName = "UpdateUserID")]
public int UpdateUserID { get; set; }

}
}

+ 59
- 0
RestObjects/Equipment.cs Ver fichero

@@ -0,0 +1,59 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Newtonsoft.Json;

namespace importer.RestObjects
{
[JsonObject(MemberSerialization.OptIn)]
public class Equipment
{
[JsonProperty(PropertyName = "CreateDate")]
public DateTime CreateDate { get; set; }
[JsonProperty(PropertyName = "CreateUserID")]
public int CreateUserID { get; set; }
[JsonProperty(PropertyName = "BarcodeID")]
public int? BarcodeID { get; set; }
[JsonProperty(PropertyName = "Description")]
public string Description { get; set; }
[JsonProperty(PropertyName = "ID")]
public int ID { get; set; }
[JsonProperty(PropertyName = "IsActive")]
public bool IsActive { get; set; }
[JsonProperty(PropertyName = "LastServiceDate")]
public DateTime? LastServiceDate { get; set; }
[JsonProperty(PropertyName = "Location")]
public string Location { get; set; }
[JsonProperty(PropertyName = "ManufacturerYear")]
public string ManufacturerYear { get; set; }
[JsonProperty(PropertyName = "MeterReading")]
public string MeterReading { get; set; }
[JsonProperty(PropertyName = "Number")]
public string Number { get; set; }
[JsonProperty(PropertyName = "Odometer")]
public string Odometer { get; set; }
[JsonProperty(PropertyName = "SerialNumber")]
public string SerialNumber { get; set; }
[JsonProperty(PropertyName = "UpdateDate")]
public DateTime? UpdateDate { get; set; }
[JsonProperty(PropertyName = "UpdateUserID")]
public int? UpateUserID { get; set; }
[JsonProperty(PropertyName = "Make")]
public Make Make { get; set; }
[JsonProperty(PropertyName = "MakeID")]
public int MakeID { get { return this.Make != null ? this.Make.ID : 0; } set { value = this.Make != null ? this.Make.ID : 0; } }
[JsonProperty(PropertyName = "Product")]
public Product Product { get; set; }
[JsonProperty(PropertyName = "ProductID")]
public int ProductID { get { return this.Product != null ? this.Product.ID : 0; } set { value = this.Product != null ? this.Product.ID : 0; } }
[JsonProperty(PropertyName = "Model")]
public Model Model { get; set; }
[JsonProperty(PropertyName = "ModelID")]
public int ModelID { get { return this.Model != null ? this.Model.ID : 0; } set { value = this.Model != null ? this.Model.ID : 0; } }
[JsonProperty(PropertyName = "Customer")]
public Customer Customer { get; set; }
[JsonProperty(PropertyName = "CustomerID")]
public int CustomerID { get { return this.Customer != null ? this.Customer.ID : 0; } set { value = this.Customer != null ? this.Customer.ID : 0; } }
}
}

+ 15
- 0
RestObjects/Inspection.cs Ver fichero

@@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Newtonsoft.Json;

namespace importer.RestObjects
{
[JsonObject(MemberSerialization.OptIn)]
public class Inspection
{
[JsonProperty(PropertyName = "ID")]
public int ID { get; set; }
}
}

+ 34
- 0
RestObjects/InspectionLevel.cs Ver fichero

@@ -0,0 +1,34 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Newtonsoft.Json;

namespace importer.RestObjects
{
[JsonObject(MemberSerialization.OptIn)]
public class InspectionLevel
{
[JsonProperty(PropertyName = "CreateDate")]
public DateTime CreateDate { get; set; }
[JsonProperty(PropertyName = "CreateUserID")]
public int CreateUserID { get; set; }
[JsonProperty(PropertyName = "Description")]
public string Description { get; set; }
[JsonProperty(PropertyName = "ID")]
public int ID { get; set; }
[JsonProperty(PropertyName = "InspectionType")]
public InspectionType InspectionType { get; set; }
[JsonProperty(PropertyName = "InspectionTypeID")]
public int InspectionTypeID { get { return this.InspectionType != null ? this.InspectionType.ID : 0; } }
[JsonProperty(PropertyName = "IsActive")]
public bool IsActive { get; set; }
[JsonProperty(PropertyName = "Name")]
public string Name { get; set; }
[JsonProperty(PropertyName = "UpdateDate")]
public DateTime? UpdateDate { get; set; }
[JsonProperty(PropertyName = "UpdateUserID")]
public int? UpdateUserID { get; set; }

}
}

+ 52
- 0
RestObjects/InspectionType.cs Ver fichero

@@ -0,0 +1,52 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Newtonsoft.Json;

namespace importer.RestObjects
{
[JsonObject(MemberSerialization.OptIn)]
public class InspectionType
{
[JsonProperty(PropertyName = "CreateDate")]
public DateTime CreateDate { get; set; }
[JsonProperty(PropertyName = "CreateUserID")]
public int CreateUserID { get; set; }
[JsonProperty(PropertyName = "Description")]
public string Description { get; set; }
[JsonProperty(PropertyName = "ID")]
public int ID { get; set; }
[JsonProperty(PropertyName = "InspectionLevels")]
public List<InspectionLevel> InspectionLevels { get; set; }
[JsonProperty(PropertyName = "IsActive")]
public bool IsActive { get; set; }
[JsonProperty(PropertyName = "Name")]
public string Name { get; set; }
[JsonProperty(PropertyName = "UpdateDate")]
public DateTime? UpdateDate { get; set; }
[JsonProperty(PropertyName = "UpdateUserID")]
public int? UpdateUserID { get; set; }
/*
"CreateDate":"\/Date(928164000000-0400)\/",
"CreateUserID":2147483647,
"Description":"String content",
"ID":2147483647,
"InspectionLevels":[{
"CreateDate":"\/Date(928164000000-0400)\/",
"CreateUserID":2147483647,
"Description":"String content",
"ID":2147483647,
"InspectionTypeID":2147483647,
"IsActive":true,
"Name":"String content",
"UpdateDate":"\/Date(928164000000-0400)\/",
"UpdateUserID":2147483647
}],
"IsActive":true,
"Name":"String content",
"UpdateDate":"\/Date(928164000000-0400)\/",
"UpdateUserID":2147483647
*/
}
}

+ 38
- 0
RestObjects/Make.cs Ver fichero

@@ -0,0 +1,38 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Newtonsoft.Json;

namespace importer.RestObjects
{
[JsonObject(MemberSerialization.OptIn)]
public class Make
{

[JsonProperty(PropertyName = "CreateDate")]
public DateTime CreateDate { get; set; }

[JsonProperty(PropertyName = "CreateUserID")]
public int CreateUserID { get; set; }

[JsonProperty(PropertyName = "Description")]
public string Description { get; set; }

[JsonProperty(PropertyName = "ID")]
public int ID { get; set; }

[JsonProperty(PropertyName = "IsActive")]
public bool IsActive { get; set; }

[JsonProperty(PropertyName = "Name")]
public string Name { get; set; }

[JsonProperty(PropertyName = "UpdateDate")]
public DateTime? UpdateDate { get; set; }

[JsonProperty(PropertyName = "UpdateUserID")]
public int? UpdateUserID { get; set; }

}
}

+ 37
- 0
RestObjects/Model.cs Ver fichero

@@ -0,0 +1,37 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Newtonsoft.Json;

namespace importer.RestObjects
{
[JsonObject(MemberSerialization.OptIn)]
public class Model
{
[JsonProperty(PropertyName = "CreateDate")]
public DateTime CreateDate { get; set; }
[JsonProperty(PropertyName = "CreateUserID")]
public int CreateUserID { get; set; }
[JsonProperty(PropertyName = "Description")]
public string Description { get; set; }
[JsonProperty(PropertyName = "ID")]
public int ID { get; set; }
[JsonProperty(PropertyName = "IsActive")]
public bool IsActive { get; set; }
[JsonProperty(PropertyName = "Make")]
public Make Make { get; set; }
[JsonProperty(PropertyName = "MakeID")]
public int MakeID { get { return this.Make != null ? this.Make.ID : 0; } set { value = this.Make != null ? this.Make.ID : 0; } }
[JsonProperty(PropertyName = "Name")]
public string Name { get; set; }
[JsonProperty(PropertyName = "Product")]
public Product Product { get; set; }
[JsonProperty(PropertyName = "ProductID")]
public int ProductID { get { return this.Product != null ? this.Product.ID : 0; } set { value = this.Product != null ? this.Product.ID : 0; } }
[JsonProperty(PropertyName = "UpdateDate")]
public DateTime? UpdateDate { get; set; }
[JsonProperty(PropertyName = "UpdateUserID")]
public int? UpdateUserID { get; set; }
}
}

+ 18
- 0
RestObjects/Priority.cs Ver fichero

@@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Newtonsoft.Json;

namespace importer.RestObjects
{
[JsonObject(MemberSerialization.OptIn)]
public class Priority
{
[JsonProperty(PropertyName = "ID")]
public int ID { get; set; }

[JsonProperty(PropertyName = "Name")]
public string Name { get; set; }
}
}

+ 30
- 0
RestObjects/Product.cs Ver fichero

@@ -0,0 +1,30 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Newtonsoft.Json;

namespace importer.RestObjects
{
[JsonObject(MemberSerialization.OptIn)]
public class Product
{

[JsonProperty(PropertyName = "Code")]
public string Code { get; set; }
[JsonProperty(PropertyName = "CreateDate")]
public DateTime CreateDate { get; set; }
[JsonProperty(PropertyName = "CreateUserID")]
public int CreateUserID { get; set; }
[JsonProperty(PropertyName = "Description")]
public string Description { get; set; }
[JsonProperty(PropertyName = "ID")]
public int ID { get; set; }
[JsonProperty(PropertyName = "IsActive")]
public bool IsActive { get; set; }
[JsonProperty(PropertyName = "UpdateDate")]
public DateTime? UpdateDate { get; set; }
[JsonProperty(PropertyName = "UpdateUserID")]
public int? UpdateUserID { get; set; }
}
}

+ 36
- 0
RestObjects/Reason.cs Ver fichero

@@ -0,0 +1,36 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Newtonsoft.Json;

namespace importer.RestObjects
{
[JsonObject(MemberSerialization.OptIn)]
public class Reason
{
[JsonProperty(PropertyName = "ID")]
public int ID { get; set; }

[JsonProperty(PropertyName = "Name")]
public string Name { get; set; }

[JsonProperty(PropertyName = "Description")]
public string Description { get; set; }

[JsonProperty(PropertyName = "IsActive")]
public bool IsActive { get; set; }

[JsonProperty(PropertyName = "CreateDate")]
public DateTime CreateDate { get; set; }

[JsonProperty(PropertyName = "CreateUserID")]
public int CreateUserID { get; set; }

[JsonProperty(PropertyName = "UpdateDate")]
public DateTime UpdateDate { get; set; }

[JsonProperty(PropertyName = "UpdateUserID")]
public int UpdateUserID { get; set; }
}
}

+ 18
- 0
RestObjects/Status.cs Ver fichero

@@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Newtonsoft.Json;

namespace importer.RestObjects
{
[JsonObject(MemberSerialization.OptIn)]
public class Status
{
[JsonProperty(PropertyName = "ID")]
public int ID { get; set; }

[JsonProperty(PropertyName = "Name")]
public string Name { get; set; }
}
}

+ 265
- 0
RestObjects/Template.cs Ver fichero

@@ -0,0 +1,265 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Newtonsoft.Json;

namespace importer.RestObjects
{
[JsonObject(MemberSerialization.OptIn)]
public class Template
{
[JsonProperty(PropertyName = "CreateDate")]
public DateTime CreateDate { get; set; }
[JsonProperty(PropertyName = "CreateUserID")]
public int CreateUserID { get; set; }
[JsonProperty(PropertyName = "Description")]
public string Description { get; set; }
[JsonProperty(PropertyName = "ID")]
public int ID { get; set; }
[JsonProperty(PropertyName = "Name")]
public string Name { get; set; }
[JsonProperty(PropertyName = "IsActive")]
public bool IsActive { get; set; }
[JsonProperty(PropertyName = "UpdateDate")]
public DateTime? UpdateDate { get; set; }
[JsonProperty(PropertyName = "UpdateUserID")]
public int? UpdateUserID { get; set; }
[JsonProperty(PropertyName = "InspectionLevel")]
public InspectionLevel InspectionLevel { get; set; }
[JsonProperty(PropertyName = "InspectionLevelID")]
public int InspectionLevelID
{
get
{
return this.InspectionLevel != null ? this.InspectionLevel.ID : 0;
}
set
{
value = this.InspectionLevel != null ? this.InspectionLevel.ID : 0;
}
}
[JsonProperty(PropertyName = "InspectionType")]
public InspectionType InspectionType { get; set; }
[JsonProperty(PropertyName = "InspectionTypeID")]
public int InspectionTypeID
{
get
{
return this.InspectionType != null ? this.InspectionType.ID : 0;
}
set
{
value = this.InspectionType != null ? this.InspectionType.ID : 0;
}
}
[JsonProperty(PropertyName = "Model")]
public Model Model { get; set; }
[JsonProperty(PropertyName = "ModelID")]
public int? ModelID { get { return this.Model != null ? Model.ID : null; } set { value = this.Model != null ? Model.ID : null; } }
[JsonProperty(PropertyName = "Product")]
public Product Product { get; set; }
[JsonProperty(PropertyName = "ProductID")]
public int? ProductID { get { return this.Product != null ? Product.ID : null; } set { value = this.Product != null ? Product.ID : null; } }

/*
"TemplateCategories":[{
"Category":{
"CreateDate":"\/Date(928164000000-0400)\/",
"CreateUserID":2147483647,
"Description":"String content",
"ID":2147483647,
"IsActive":true,
"Name":"String content",
"UpdateDate":"\/Date(928164000000-0400)\/",
"UpdateUserID":2147483647
},
"CategoryID":2147483647,
"CreateDate":"\/Date(928164000000-0400)\/",
"CreateUserID":2147483647,
"ID":2147483647,
"SortOrder":2147483647,
"TemplateID":2147483647,
"TemplateItemSpecs":[{
"CreateDate":"\/Date(928164000000-0400)\/",
"CreateUserID":2147483647,
"ID":2147483647,
"Item":{
"Category":{
"CreateDate":"\/Date(928164000000-0400)\/",
"CreateUserID":2147483647,
"Description":"String content",
"ID":2147483647,
"IsActive":true,
"Name":"String content",
"UpdateDate":"\/Date(928164000000-0400)\/",
"UpdateUserID":2147483647
},
"CategoryID":2147483647,
"CreateDate":"\/Date(928164000000-0400)\/",
"CreateUserID":2147483647,
"Description":"String content",
"ID":2147483647,
"InputType":{
"ID":2147483647,
"Name":"String content"
},
"InputTypeID":2147483647,
"IsActive":true,
"ItemResponseTypes":[{
"ID":2147483647,
"ItemID":2147483647,
"ResponseType":{
"Color":"String content",
"CreateDate":"\/Date(928164000000-0400)\/",
"CreateUserID":2147483647,
"ID":2147483647,
"IsActive":true,
"Name":"String content",
"RepairType":{
"Color":"String content",
"ID":2147483647,
"Name":"String content"
},
"UpdateDate":"\/Date(928164000000-0400)\/",
"UpdateUserID":2147483647
},
"ResponseTypeID":2147483647,
"SortOrder":2147483647
}],
"Name":"String content",
"SMSCCode":{
"CreateDate":"\/Date(928164000000-0400)\/",
"CreateUserID":2147483647,
"Description":"String content",
"ID":2147483647,
"IsActive":true,
"Name":"String content",
"UpdateDate":"\/Date(928164000000-0400)\/",
"UpdateUserID":2147483647
},
"SMSCCodeID":2147483647,
"Specs":[{
"CreateDate":"\/Date(928164000000-0400)\/",
"CreateUserID":2147483647,
"ID":2147483647,
"IsActive":true,
"ItemID":2147483647,
"Name":"String content",
"NumberOfTests":2147483647,
"SpecItems":[{
"ComparisonType":{
"Description":"String content",
"ID":2147483647,
"Name":"String content"
},
"ComparisonTypeID":2147483647,
"ID":2147483647,
"Name":"String content",
"Qualifier":"String content",
"SortOrder":2147483647,
"SpecID":2147483647,
"SpecItemValues":[{
"ID":2147483647,
"SortOrder":2147483647,
"SpecItemID":2147483647,
"Value":"String content",
"ValueType":{
"Description":"String content",
"ID":2147483647,
"Name":"String content"
},
"ValueTypeID":2147483647
}],
"Unit":{
"CreateDate":"\/Date(928164000000-0400)\/",
"CreateUserID":2147483647,
"DataType":{
"Description":"String content",
"ID":2147483647,
"Name":"String content"
},
"DataTypeID":2147483647,
"Description":"String content",
"ID":2147483647,
"IsActive":true,
"Name":"String content",
"UpdateDate":"\/Date(928164000000-0400)\/",
"UpdateUserID":2147483647
},
"UnitID":2147483647
}],
"UpdateDate":"\/Date(928164000000-0400)\/",
"UpdateUserID":2147483647
}],
"UpdateDate":"\/Date(928164000000-0400)\/",
"UpdateUserID":2147483647
},
"ItemID":2147483647,
"SortOrder":2147483647,
"Spec":{
"CreateDate":"\/Date(928164000000-0400)\/",
"CreateUserID":2147483647,
"ID":2147483647,
"IsActive":true,
"ItemID":2147483647,
"Name":"String content",
"NumberOfTests":2147483647,
"SpecItems":[{
"ComparisonType":{
"Description":"String content",
"ID":2147483647,
"Name":"String content"
},
"ComparisonTypeID":2147483647,
"ID":2147483647,
"Name":"String content",
"Qualifier":"String content",
"SortOrder":2147483647,
"SpecID":2147483647,
"SpecItemValues":[{
"ID":2147483647,
"SortOrder":2147483647,
"SpecItemID":2147483647,
"Value":"String content",
"ValueType":{
"Description":"String content",
"ID":2147483647,
"Name":"String content"
},
"ValueTypeID":2147483647
}],
"Unit":{
"CreateDate":"\/Date(928164000000-0400)\/",
"CreateUserID":2147483647,
"DataType":{
"Description":"String content",
"ID":2147483647,
"Name":"String content"
},
"DataTypeID":2147483647,
"Description":"String content",
"ID":2147483647,
"IsActive":true,
"Name":"String content",
"UpdateDate":"\/Date(928164000000-0400)\/",
"UpdateUserID":2147483647
},
"UnitID":2147483647
}],
"UpdateDate":"\/Date(928164000000-0400)\/",
"UpdateUserID":2147483647
},
"SpecID":2147483647,
"TemplateCategoryID":2147483647,
"UpdateDate":"\/Date(928164000000-0400)\/",
"UpdateUserID":2147483647
}],
"UpdateDate":"\/Date(928164000000-0400)\/",
"UpdateUserID":2147483647
}],
"UpdateDate":"\/Date(928164000000-0400)\/",
"UpdateUserID":2147483647
*/
}
}

+ 18
- 0
RestObjects/User.cs Ver fichero

@@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Newtonsoft.Json;

namespace importer.RestObjects
{
[JsonObject(MemberSerialization.OptIn)]
public class User
{
[JsonProperty(PropertyName = "ID")]
public int ID { get; set; }

[JsonProperty(PropertyName = "Number")]
public string Number { get; set; }
}
}

+ 112
- 0
RestObjects/WorkOrder.cs Ver fichero

@@ -0,0 +1,112 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Newtonsoft.Json;

namespace importer.RestObjects
{
[JsonObject(MemberSerialization.OptIn)]
public class WorkOrder
{
[JsonProperty(PropertyName = "ID")]
public int ID { get; set; }

[JsonProperty(PropertyName = "CustomerID")]
public int CustomerID { get { return this.Customer != null ? this.Customer.ID : 0; } set { value = this.Customer != null ? this.Customer.ID : 0; } }

[JsonProperty(PropertyName = "PriorityID")]
public int PriorityID
{
get { return this.Priority != null ? this.Priority.ID : 0; }
set { value = this.Priority != null ? this.Priority.ID : 0; }
}

[JsonProperty(PropertyName = "StatusID")]
public int StatusID
{
get { return this.Status != null ? this.Status.ID : 0; }
set { value = this.Status != null ? this.Status.ID : 0; }
}

[JsonProperty(PropertyName = "EquipmentID")]
public int EquipmentID
{
get { return this.Equipment != null ? this.Equipment.ID : 0; }
set { value = this.Equipment != null ? this.Equipment.ID : 0; }
}

[JsonProperty(PropertyName = "ReasonID")]
public int? ReasonID
{
get { return this.Reason != null ? this.Reason.ID : null; }
set { value = this.Reason != null ? this.Reason.ID : null; }
}

[JsonProperty(PropertyName = "IncompleteReasonID")]
public int? IncompleteReasonID { get; set; }

[JsonProperty(PropertyName = "TechnicianUserID")]
public int TechnicianUserID
{
get { return this.Technician != null ? this.Technician.ID : 0; }
set { value = this.Technician != null ? this.Technician.ID : 0; }
}

[JsonProperty(PropertyName = "Number")]
public string Number { get; set; }

[JsonProperty(PropertyName = "MeterReading")]
public decimal? MeterReading { get; set; }

[JsonProperty(PropertyName = "Odometer")]
public decimal? Odometer { get; set; }

[JsonProperty(PropertyName = "SpecialInstructions")]
public string SpecialInstructions { get; set; }

[JsonProperty(PropertyName = "ScheduledStartDate")]
public DateTime ScheduledStartDate { get; set; }

[JsonProperty(PropertyName = "ScheduledEndDate")]
public DateTime ScheduledEndDate { get; set; }

[JsonProperty(PropertyName = "StartDate")]
public DateTime? StartDate { get; set; }

[JsonProperty(PropertyName = "EndDate")]
public DateTime? EndDate { get; set; }

[JsonProperty(PropertyName = "ApprovedDate")]
public DateTime? ApprovedDate { get; set; }

[JsonProperty(PropertyName = "CreateDate")]
public DateTime CreateDate { get; set; }

[JsonProperty(PropertyName = "CreateUserID")]
public int CreateUserID { get; set; }

[JsonProperty(PropertyName = "UpdateDate")]
public DateTime UpdateDate { get; set; }

[JsonProperty(PropertyName = "UpdateUserID")]
public int UpdateUserID { get; set; }

[JsonProperty(PropertyName = "Customer")]
public Customer Customer { get; set; }

[JsonProperty(PropertyName = "Priority")]
public Priority Priority { get; set; }

[JsonProperty(PropertyName = "Status")]
public Status Status { get; set; }

[JsonProperty(PropertyName = "Equipment")]
public Equipment Equipment { get; set; }

[JsonProperty(PropertyName = "Reason")]
public Reason Reason { get; set; }
[JsonProperty(PropertyName = "Technician")]
public User Technician { get; set; }
}
}

+ 43
- 0
XMLData.cs Ver fichero

@@ -0,0 +1,43 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using System.Threading.Tasks;
using System.IO;

namespace importer
{
public class XMLData
{
private static Dictionary<string, string> _cclookup;
public static Dictionary<string, string> CCLookup { get { return _cclookup; } set { _cclookup = value; } }

private static Dictionary<string, int> _intervalLookup;
public static Dictionary<string, int> IntervalLookup { get { return _intervalLookup; } set { _intervalLookup = value; } }

public static void BuildIntervalLookup()
{
string dir = Global.StorageDir;
_intervalLookup = new Dictionary<string, int>();
string intervalLookupPath = Path.Combine(dir, "IntervalData.xml");
var doc = XDocument.Load(intervalLookupPath);
var rootNodes = doc.Root.DescendantNodes().OfType<XElement>();
Dictionary<string, string> dic = rootNodes.ToDictionary(n => n.Name.ToString(), n => n.Value);
foreach (KeyValuePair<string, string> kvp in dic)
{
_intervalLookup.Add(kvp.Key.Replace("ZZ", ""), int.Parse(kvp.Value));
}
}

public static void BuildCCLookup(string os)
{
string dir = Global.StorageDir;
string ccLookupPath = Path.Combine(dir, "CCAddresses.xml");
_cclookup = new Dictionary<string, string>();
var doc = XDocument.Load(ccLookupPath);
var rootNodes = doc.Root.DescendantNodes().OfType<XElement>();
_cclookup = rootNodes.ToDictionary(n => n.Name.ToString(), n => n.Value);
}
}
}

BIN
bin/Debug/net6.0/Microsoft.Exchange.WebServices.Auth.dll Ver fichero


BIN
bin/Debug/net6.0/Microsoft.Exchange.WebServices.dll Ver fichero


BIN
bin/Debug/net6.0/Microsoft.Identity.Client.dll Ver fichero


BIN
bin/Debug/net6.0/Microsoft.IdentityModel.Abstractions.dll Ver fichero


BIN
bin/Debug/net6.0/Newtonsoft.Json.Bson.dll Ver fichero


BIN
bin/Debug/net6.0/Newtonsoft.Json.dll Ver fichero


BIN
bin/Debug/net6.0/RestSharp.dll Ver fichero


BIN
bin/Debug/net6.0/System.Net.Http.Formatting.dll Ver fichero


+ 21
- 0
bin/Debug/net6.0/brandt.json Ver fichero

@@ -0,0 +1,21 @@
{
"MailProperties": {
"Username": "cmobile@prelub.com",
"Password": "Gr@nt@cc3$$",
"Mailbox": "connexionmobile@rpmindustries.org",
"Url": "https://outlook.office365.com/ews/Exchange.asmx",
"Filter": "Brandt Import; brandt import; Brandt import; brandt Import; BRANDT IMPORT",
"AppID": "489776b1-ee79-4b14-bc44-9f6bf47332db",
"TenentID": "1fd06c96-d3a4-45e9-9ed7-bcecb394d277",
"ObjectId": "c7647074-edb6-4e8e-8a01-a1ed924fdae9",
"SecretID": "cba04a6c-a233-4646-909b-b50921edbe1c",
"SecretV": "up-8Q~y46~JyQZjJlsAJ-zpXpglpmuPIJ1Gx3a2O",
"Scope": "https://outlook.office365.com/.default"
},
"Remote": false,
"LogFile": "jdis.log",
"Prelub": {
"LocalService": "http://servicesbrandt.rpmindustries.com:8081",
"RemoteService": "https://servicesbrandt.rpmindustries.com"
}
}

BIN
bin/Debug/net6.0/importer Ver fichero


+ 1327
- 0
bin/Debug/net6.0/importer.deps.json
La diferencia del archivo ha sido suprimido porque es demasiado grande
Ver fichero


BIN
bin/Debug/net6.0/importer.dll Ver fichero


BIN
bin/Debug/net6.0/importer.pdb Ver fichero


+ 9
- 0
bin/Debug/net6.0/importer.runtimeconfig.json Ver fichero

@@ -0,0 +1,9 @@
{
"runtimeOptions": {
"tfm": "net6.0",
"framework": {
"name": "Microsoft.NETCore.App",
"version": "6.0.0"
}
}
}

BIN
bin/release/net6.0/ubuntu.18.04-x64/Microsoft.CSharp.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/Microsoft.Exchange.WebServices.Auth.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/Microsoft.Exchange.WebServices.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/Microsoft.Identity.Client.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/Microsoft.IdentityModel.Abstractions.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/Microsoft.VisualBasic.Core.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/Microsoft.VisualBasic.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/Microsoft.Win32.Primitives.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/Microsoft.Win32.Registry.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/Newtonsoft.Json.Bson.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/Newtonsoft.Json.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/RestSharp.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.AppContext.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.Buffers.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.Collections.Concurrent.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.Collections.Immutable.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.Collections.NonGeneric.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.Collections.Specialized.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.Collections.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.ComponentModel.Annotations.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.ComponentModel.DataAnnotations.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.ComponentModel.EventBasedAsync.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.ComponentModel.Primitives.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.ComponentModel.TypeConverter.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.ComponentModel.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.Configuration.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.Console.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.Core.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.Data.Common.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.Data.DataSetExtensions.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.Data.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.Diagnostics.Contracts.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.Diagnostics.Debug.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.Diagnostics.DiagnosticSource.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.Diagnostics.FileVersionInfo.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.Diagnostics.Process.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.Diagnostics.StackTrace.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.Diagnostics.TextWriterTraceListener.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.Diagnostics.Tools.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.Diagnostics.TraceSource.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.Diagnostics.Tracing.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.Drawing.Primitives.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.Drawing.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.Dynamic.Runtime.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.Formats.Asn1.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.Globalization.Calendars.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.Globalization.Extensions.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.Globalization.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.IO.Compression.Brotli.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.IO.Compression.FileSystem.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.IO.Compression.ZipFile.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.IO.Compression.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.IO.FileSystem.AccessControl.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.IO.FileSystem.DriveInfo.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.IO.FileSystem.Primitives.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.IO.FileSystem.Watcher.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.IO.FileSystem.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.IO.IsolatedStorage.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.IO.MemoryMappedFiles.dll Ver fichero


BIN
bin/release/net6.0/ubuntu.18.04-x64/System.IO.Pipes.AccessControl.dll Ver fichero


Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio

Cargando…
Cancelar
Guardar