잉여장비목록 화면 추가(최효준s)

This commit is contained in:
chi
2021-03-02 13:09:57 +09:00
parent c5f6947344
commit 5ad9c18abf
52 changed files with 9483 additions and 3075 deletions

286
Project/BaseController.cs Normal file
View File

@@ -0,0 +1,286 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Web.Http;
using agi = HtmlAgilityPack;
namespace Project
{
public struct MethodResult : IEquatable<MethodResult>
{
public string Content;
public byte[] Contentb;
public string Redirecturl;
public override bool Equals(object obj)
{
if (!(obj is MethodResult))
return false;
return Equals((MethodResult)obj);
}
public override int GetHashCode()
{
if (Contentb == null)
return Content.GetHashCode() ^ Redirecturl.GetHashCode();
else
return Content.GetHashCode() ^ Redirecturl.GetHashCode() ^ Contentb.GetHexString().GetHashCode();
}
public bool Equals(MethodResult other)
{
if (Content != other.Content)
return false;
if (Redirecturl != other.Redirecturl)
return false;
return Contentb == other.Contentb;
}
public static bool operator ==(MethodResult point1, MethodResult point2)
{
return point1.Equals(point2);
}
public static bool operator !=(MethodResult point1, MethodResult point2)
{
return !point1.Equals(point2);
}
}
sealed class PostRequest : Attribute
{
}
public class BaseController : ApiController
{
public string QueryString { get; set; }
public string PostData { get; set; }
public string ParamData { get; set; }
protected string Trig_Ctrl { get; set; }
protected string Trig_func { get; set; }
public PageModel GetGlobalModel()
{
var config = RequestContext.Configuration;
var routeData = config.Routes.GetRouteData(Request).Values.ToList();
var name_ctrl = routeData[0].Value.ToString();
var name_action = routeData[1].Value.ToString();
return new PageModel
{
RouteData = routeData,
urlcontrol = name_ctrl,
urlaction = name_action
};
}
public MethodResult View()
{
var config = RequestContext.Configuration;
if (config != null)
{
var routeData = config.Routes.GetRouteData(Request).Values.ToList();
var name_ctrl = routeData[0].Value.ToString();
var name_action = routeData[1].Value.ToString();
return View(name_ctrl, name_action);
}
else
{
return View(Trig_Ctrl + "/" + Trig_func);
}
}
public static void ApplyCommonValue(ref string contents)
{
//메뉴 푸터 - 개발자 정보
}
public MethodResult View(string Controller, string Action, Boolean applydefaultview = true)
{
var retval = new MethodResult();
if (Action.IndexOf(".") == -1)
Action += ".html"; //기본값 html 을 넣는다
var file = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "View", Controller, Action);
var contents = string.Empty;
if (System.IO.File.Exists(file) == false)
{
//error 폴더의 404.html 파일을 찾는다.
var file404 = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "View", "Error", "404.html");
if (System.IO.File.Exists(file404))
{
contents = System.IO.File.ReadAllText(file404, System.Text.Encoding.UTF8);
contents = contents.Replace("{errorfilename}", file);
}
else
contents = "ERROR CODE - 404 (NOT FOUND) <br />" + file;
Console.WriteLine("view File not found : " + file);
}
else
{
//디폴트뷰의 내용을 가져온다 (있다면 적용한다)
if (applydefaultview)
{
//뷰파일이 있다면 그것을 적용한다
var laytoutfile = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "View", "Layout", "default.html");
if (System.IO.File.Exists(laytoutfile))
contents = System.IO.File.ReadAllText(laytoutfile, System.Text.Encoding.UTF8);
var fileContents = System.IO.File.ReadAllText(file, System.Text.Encoding.UTF8);
if (String.IsNullOrEmpty(contents)) contents = fileContents;
else contents = contents.Replace("{contents}", fileContents);
}
else
{
//해당 뷰를 가져와서 반환한다
contents = System.IO.File.ReadAllText(file, System.Text.Encoding.UTF8);
}
}
agi.HtmlDocument doc = new agi.HtmlDocument();
doc.LoadHtml(contents);
//파일참조 태그를 모두 가져옴
var tags_include = doc.QuerySelectorAll("include");
foreach (var item in tags_include)
{
var filename = item.InnerText;
var load_file = String.Concat(AppDomain.CurrentDomain.BaseDirectory, "View", filename.Replace("/", "\\"));
load_file = load_file.Replace("\\\\", "\\");
String fileContents;// = String.Empty;
Console.WriteLine("## " + item.OuterHtml);
if (System.IO.File.Exists(load_file))
{
fileContents = System.IO.File.ReadAllText(load_file, System.Text.Encoding.UTF8);
}
else
{
fileContents = string.Format("<div class=\"fg-red\">#include Error:nofile:{0}</div>",
filename); //파일이없다면 해당 부분은 오류 처리한다.
}
contents = contents.Replace(item.OuterHtml, fileContents);
}
//콘텐츠내의 file 을 찾아서 처리한다. ; 정규식의 처리속도가 느릴듯하여, 그냥 처리해본다
//시스템변수 replace
contents = contents.Replace("{param_control}", Trig_Ctrl);
contents = contents.Replace("{param_function}", Trig_func);
retval.Content = contents;
return retval;
}
public MethodResult View(string viewfilename, Boolean applydefaultview = true)
{
var retval = new MethodResult();
if (viewfilename.IndexOf(".") == -1)
viewfilename += ".html"; //기본값 html 을 넣는다
var file = AppDomain.CurrentDomain.BaseDirectory + "View" + viewfilename.Replace("/", "\\");
var contents = string.Empty;
if (System.IO.File.Exists(file) == false)
{
//error 폴더의 404.html 파일을 찾는다.
var file404 = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "View", "Error", "404.html");
if (System.IO.File.Exists(file404))
{
contents = System.IO.File.ReadAllText(file404, System.Text.Encoding.UTF8);
contents = contents.Replace("{errorfilename}", file);
}
else
contents = "ERROR CODE - 404 (NOT FOUND) <br />" + file;
Console.WriteLine("view File not found : " + file);
}
else
{
//디폴트뷰의 내용을 가져온다 (있다면 적용한다)
if (applydefaultview)
{
//뷰파일이 있다면 그것을 적용한다
var laytoutfile = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "View", "Layout", "default.html");
if (System.IO.File.Exists(laytoutfile))
contents = System.IO.File.ReadAllText(laytoutfile, System.Text.Encoding.UTF8);
var fileContents = System.IO.File.ReadAllText(file, System.Text.Encoding.UTF8);
if (String.IsNullOrEmpty(contents)) contents = fileContents;
else contents = contents.Replace("{contents}", fileContents);
}
else
{
//해당 뷰를 가져와서 반환한다
contents = System.IO.File.ReadAllText(file, System.Text.Encoding.UTF8);
}
}
//콘텐츠내의 file 을 찾아서 처리한다. ; 정규식의 처리속도가 느릴듯하여, 그냥 처리해본다
while (true)
{
var fileindexS = contents.IndexOf("{file:");
if (fileindexS == -1) break;
var fileindexE = contents.IndexOf("}", fileindexS);
if (fileindexE == -1) break;
if (fileindexE <= fileindexS + 5) break;
var inlinestr = contents.Substring(fileindexS, fileindexE - fileindexS + 1);
var filename = contents.Substring(fileindexS + 7, fileindexE - fileindexS - 8);
var load_file = String.Concat(AppDomain.CurrentDomain.BaseDirectory, "View", "\\", filename.Replace("/", "\\"));
load_file = load_file.Replace("\\\\", "\\");
String fileContents;// = String.Empty;
Console.WriteLine("file impot : " + load_file);
if (System.IO.File.Exists(load_file))
{
fileContents = System.IO.File.ReadAllText(load_file, System.Text.Encoding.UTF8);
}
else
{
fileContents = "{FileNotFound:" + filename + "}"; //파일이없다면 해당 부분은 오류 처리한다.
}
contents = contents.Replace(inlinestr, fileContents);
}
//시스템변수 replace
contents = contents.Replace("{param_control}", Trig_Ctrl);
contents = contents.Replace("{param_function}", Trig_func);
retval.Content = contents;
return retval;
}
protected class Parameter
{
public string Key { get; set; }
public string Value { get; set; }
public Parameter(string key_, string value_)
{
Key = key_;
Value = value_;
}
}
}
}

View File

@@ -0,0 +1,93 @@
using System;
using System.Linq;
using System.Net.Http;
using System.Web.Http;
namespace Project
{
public class HomeController : BaseController
{
[HttpPost]
public void Index([FromBody]string value)
{
}
// PUT api/values/5
public void Put(int id, [FromBody]string value)
{
}
// DELETE api/values/5
public void Delete(int id)
{
}
[HttpGet]
public string Test()
{
return "test";
}
[HttpGet]
public HttpResponseMessage Login()
{
//로그인이 되어있지않다면 로그인을 가져온다
MethodResult result;
result = View();
var model = GetGlobalModel();
var getParams = Request.GetQueryNameValuePairs();// GetParameters(data);
//기본값을 찾아서 없애줘야한다
var contents = result.Content;
//공용값 적용
ApplyCommonValue(ref contents);
//최종문자 적용
result.Content = contents;
var resp = new HttpResponseMessage()
{
Content = new StringContent(
result.Content,
System.Text.Encoding.UTF8,
"text/html")
};
return resp;
}
[HttpGet]
public HttpResponseMessage Index()
{
//로그인이 되어있지않다면 로그인을 가져온다
MethodResult result;
result = View();
var model = GetGlobalModel();
var getParams = Request.GetQueryNameValuePairs();// GetParameters(data);
//기본값을 찾아서 없애줘야한다
var contents = result.Content;
//공용값 적용
ApplyCommonValue(ref contents);
//최종문자 적용
result.Content = contents;
var resp = new HttpResponseMessage()
{
Content = new StringContent(
result.Content,
System.Text.Encoding.UTF8,
"text/html")
};
return resp;
}
}
}

View File

@@ -0,0 +1,86 @@
using System;
using System.Linq;
using System.Net.Http;
using System.Web.Http;
namespace Project
{
public class IoController : BaseController
{
[HttpPost]
public void Index([FromBody] string value)
{
}
// PUT api/values/5
public void Put(int id, [FromBody] string value)
{
}
// DELETE api/values/5
public void Delete(int id)
{
}
[HttpGet]
public string Test()
{
return "test";
}
[HttpGet]
public HttpResponseMessage Index()
{
//로그인이 되어있지않다면 로그인을 가져온다
MethodResult result;
result = View();
var model = GetGlobalModel();
var getParams = Request.GetQueryNameValuePairs();// GetParameters(data);
//기본값을 찾아서 없애줘야한다
var contents = result.Content;
//공용값 적용
ApplyCommonValue(ref contents);
var tabledata = string.Empty;
for(int r = 0;r < 8; r++)
{
tabledata += "<tr>";
for (int i = 0; i < 8; i++)
{
tabledata += $"<td>";
tabledata += $"<div class=\"card text-white bg-secondary mb-1\" onclick=\"click_input({r},{i},this);\" id=\"di{r}{i}\">";
tabledata += $"<div class=\"card-body\">";
tabledata += $"<h5 class=\"card-title\">X{i.ToString("00")}</h5>";
tabledata += $"<p class=\"card-text\">Start button</p>";
tabledata += $"</div>"; ;
tabledata += $"</div>";
tabledata += $"</td>";
}
tabledata += "</tr>";
}
contents = contents.Replace("{list}", tabledata);
//최종문자 적용
result.Content = contents;
var resp = new HttpResponseMessage()
{
Content = new StringContent(
result.Content,
System.Text.Encoding.UTF8,
"text/html")
};
return resp;
}
}
}

View File

@@ -0,0 +1,64 @@
using System;
using System.Linq;
using System.Net.Http;
using System.Web.Http;
namespace Project
{
public class MotionController : BaseController
{
[HttpPost]
public void Index([FromBody]string value)
{
}
// PUT api/values/5
public void Put(int id, [FromBody]string value)
{
}
// DELETE api/values/5
public void Delete(int id)
{
}
[HttpGet]
public string Test()
{
return "test";
}
[HttpGet]
public HttpResponseMessage Index()
{
//로그인이 되어있지않다면 로그인을 가져온다
MethodResult result;
result = View();
var model = GetGlobalModel();
var getParams = Request.GetQueryNameValuePairs();// GetParameters(data);
//기본값을 찾아서 없애줘야한다
var contents = result.Content;
//공용값 적용
ApplyCommonValue(ref contents);
//최종문자 적용
result.Content = contents;
var resp = new HttpResponseMessage()
{
Content = new StringContent(
result.Content,
System.Text.Encoding.UTF8,
"text/html")
};
return resp;
}
}
}

View File

@@ -0,0 +1,64 @@
using System;
using System.Linq;
using System.Net.Http;
using System.Web.Http;
namespace Project
{
public class OperationController : BaseController
{
[HttpPost]
public void Index([FromBody]string value)
{
}
// PUT api/values/5
public void Put(int id, [FromBody]string value)
{
}
// DELETE api/values/5
public void Delete(int id)
{
}
[HttpGet]
public string Test()
{
return "test";
}
[HttpGet]
public HttpResponseMessage Index()
{
//로그인이 되어있지않다면 로그인을 가져온다
MethodResult result;
result = View();
var model = GetGlobalModel();
var getParams = Request.GetQueryNameValuePairs();// GetParameters(data);
//기본값을 찾아서 없애줘야한다
var contents = result.Content;
//공용값 적용
ApplyCommonValue(ref contents);
//최종문자 적용
result.Content = contents;
var resp = new HttpResponseMessage()
{
Content = new StringContent(
result.Content,
System.Text.Encoding.UTF8,
"text/html")
};
return resp;
}
}
}

View File

@@ -0,0 +1,109 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using System.Web.Http;
namespace Project
{
public class ResourceController : BaseController
{
[HttpGet]
public HttpResponseMessage file()
{
var config = RequestContext.Configuration;
var routeData = config.Routes.GetRouteData(Request).Values.ToList();
var p_resource = routeData.Where(t => t.Key == "resource").FirstOrDefault();
var p_path = routeData.Where(t => t.Key == "path").FirstOrDefault();
var p_ext = routeData.Where(t => t.Key == "ext").FirstOrDefault();
var p_subdir = routeData.Where(t => t.Key == "subdir").FirstOrDefault();
var v_resource = string.Empty;
var v_path = string.Empty;
var v_ext = string.Empty;
var v_subdir = string.Empty;
if (p_resource.Key == "resource") v_resource = p_resource.Value.ToString();
if (p_path.Key == "path") v_path = p_path.Value.ToString();
if (p_ext.Key == "ext") v_ext = p_ext.Value.ToString();
if (p_subdir.Key == "subdir") v_subdir = p_subdir.Value.ToString();
//var file_ext = routeData[0].Value.ToString();
//var name_resource = routeData[1].Value.ToString() + "." + file_ext;
//var name_action = routeData[3].Value.ToString();
Boolean isBinary = true;
string content_type = "text/plain";
if (v_ext == "json")
{
isBinary = false;
content_type = "application/json";
}
else if (v_ext == "js")
{
isBinary = false;
content_type = "application/js";
}
else if (v_ext == "css")
{
isBinary = false;
content_type = "text/css";
}
else if (v_ext == "csv")
{
isBinary = false;
content_type = "text/csv";
}
else if (v_ext == "ico")
{
isBinary = true;
content_type = "image/x-icon";
}
else if(v_ext == "ttf" || v_ext == "otf")
{
isBinary = true;
content_type = "application/octet-stream";
}
HttpContent resultContent = null;
var file = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "View", v_path, v_subdir, v_resource + "." + v_ext);
if (isBinary)
{
if (System.IO.File.Exists(file))
{
var buffer = System.IO.File.ReadAllBytes(file);
resultContent = new ByteArrayContent(buffer);
Console.WriteLine(">>File(B) : " + file);
}
else Console.WriteLine("no resouoir file " + file);
}
else
{
if (System.IO.File.Exists(file))
{
var buffer = System.IO.File.ReadAllText(file, System.Text.Encoding.UTF8);
resultContent = new StringContent(buffer, System.Text.Encoding.UTF8, content_type);
Console.WriteLine(">>File(S) : " + file);
}
else Console.WriteLine("no resouoir file " + file);
}
return new HttpResponseMessage()
{
Content = resultContent
};
}
}
}

View File

@@ -0,0 +1,64 @@
using System;
using System.Linq;
using System.Net.Http;
using System.Web.Http;
namespace Project
{
public class ResultController : BaseController
{
[HttpPost]
public void Index([FromBody]string value)
{
}
// PUT api/values/5
public void Put(int id, [FromBody]string value)
{
}
// DELETE api/values/5
public void Delete(int id)
{
}
[HttpGet]
public string Test()
{
return "test";
}
[HttpGet]
public HttpResponseMessage Index()
{
//로그인이 되어있지않다면 로그인을 가져온다
MethodResult result;
result = View();
var model = GetGlobalModel();
var getParams = Request.GetQueryNameValuePairs();// GetParameters(data);
//기본값을 찾아서 없애줘야한다
var contents = result.Content;
//공용값 적용
ApplyCommonValue(ref contents);
//최종문자 적용
result.Content = contents;
var resp = new HttpResponseMessage()
{
Content = new StringContent(
result.Content,
System.Text.Encoding.UTF8,
"text/html")
};
return resp;
}
}
}

View File

@@ -0,0 +1,63 @@
using System;
using System.Linq;
using System.Net.Http;
using System.Web.Http;
namespace Project
{
public class SettingController : BaseController
{
[HttpPost]
public void Index([FromBody]string value)
{
}
// PUT api/values/5
public void Put(int id, [FromBody]string value)
{
}
// DELETE api/values/5
public void Delete(int id)
{
}
[HttpGet]
public string Test()
{
return "test";
}
[HttpGet]
public HttpResponseMessage Index()
{
//로그인이 되어있지않다면 로그인을 가져온다
MethodResult result;
result = View();
var model = GetGlobalModel();
var getParams = Request.GetQueryNameValuePairs();// GetParameters(data);
//기본값을 찾아서 없애줘야한다
var contents = result.Content;
//공용값 적용
ApplyCommonValue(ref contents);
//최종문자 적용
result.Content = contents;
var resp = new HttpResponseMessage()
{
Content = new StringContent(
result.Content,
System.Text.Encoding.UTF8,
"text/html")
};
return resp;
}
}
}

View File

@@ -191,6 +191,9 @@
<Reference Include="Microsoft.SqlServer.Types, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.SqlServer.Types.11.0.1\lib\net20\Microsoft.SqlServer.Types.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="Owin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f0ebd12fd5e55cc5, processorArchitecture=MSIL">
<HintPath>..\packages\Owin.1.0\lib\net40\Owin.dll</HintPath>
</Reference>
@@ -202,10 +205,20 @@
<Reference Include="System.DirectoryServices" />
<Reference Include="System.Management" />
<Reference Include="System.Net" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Net.Http.Formatting, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.AspNet.WebApi.Client.5.2.7\lib\net45\System.Net.Http.Formatting.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.Security" />
<Reference Include="System.ServiceModel" />
<Reference Include="System.Web" />
<Reference Include="System.Web.Http, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.AspNet.WebApi.Core.5.2.7\lib\net45\System.Web.Http.dll</HintPath>
</Reference>
<Reference Include="System.Web.Http.Owin, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.AspNet.WebApi.Owin.5.2.7\lib\net45\System.Web.Http.Owin.dll</HintPath>
</Reference>
<Reference Include="System.Web.Services" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
@@ -236,6 +249,14 @@
<DesignTime>True</DesignTime>
<DependentUpon>AdoNetEFMain.edmx</DependentUpon>
</Compile>
<Compile Include="BaseController.cs" />
<Compile Include="Controller\HomeController.cs" />
<Compile Include="Controller\IoController.cs" />
<Compile Include="Controller\MotionController.cs" />
<Compile Include="Controller\OperationController.cs" />
<Compile Include="Controller\ResourceController.cs" />
<Compile Include="Controller\ResultController.cs" />
<Compile Include="Controller\SettingController.cs" />
<Compile Include="CResult.cs" />
<Compile Include="DataSet1.Designer.cs">
<AutoGen>True</AutoGen>
@@ -346,6 +367,9 @@
<Compile Include="Manager\ModelManager.cs" />
<Compile Include="MessageWindow.cs" />
<Compile Include="MethodExtentions.cs" />
<Compile Include="Model\PageModel.cs" />
<Compile Include="OWIN\Startup.cs" />
<Compile Include="OWIN\StartupSSE.cs" />
<Compile Include="Program.cs" />
<Compile Include="SqlServerTypes\Loader.cs" />
<Compile Include="UserGroup.cs">

View File

@@ -9,6 +9,7 @@
<ErrorReportUrlHistory />
<FallbackCulture>ko-KR</FallbackCulture>
<VerifyUploadedFiles>false</VerifyUploadedFiles>
<ProjectView>ProjectFiles</ProjectView>
</PropertyGroup>
<PropertyGroup>
<EnableSecurityDebugging>false</EnableSecurityDebugging>

View File

@@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Project
{
public class PageModel
{
public List<KeyValuePair<string, object>> RouteData { get; set; }
public string urlcontrol { get; set; }
public string urlaction { get; set; }
}
}

76
Project/OWIN/Startup.cs Normal file
View File

@@ -0,0 +1,76 @@
using Microsoft.Owin;
using Owin;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using System.Web.Http;
using System.Web.Http.Routing;
namespace Project.OWIN
{
public class Startup
{
public void Configuration(IAppBuilder appBuilder)
{
// Configure Web API for Self-Host
HttpConfiguration config = new HttpConfiguration();
config.MapHttpAttributeRoutes();
//메인파일 처리 방법
IHttpRoute defaultRoute =
config.Routes.CreateRoute("{controller}/{action}/{id}",
new { controller = "home", action = "index", id = RouteParameter.Optional },
null);
//기타파일들 처리 방법
IHttpRoute cssRoute =
config.Routes.CreateRoute("{path}/{subdir}/{resource}.{ext}",
new { controller = "resource", action = "file", id = RouteParameter.Optional },
null);
IHttpRoute mifRoute =
config.Routes.CreateRoute("{path}/{resource}.{ext}",
new { controller = "resource", action = "file", id = RouteParameter.Optional },
null);
IHttpRoute icoRoute =
config.Routes.CreateRoute("{resource}.{ext}",
new { controller = "resource", action = "file", id = RouteParameter.Optional },
null);
config.Routes.Add("mifRoute", mifRoute);
config.Routes.Add("icoRoute", icoRoute);
config.Routes.Add("cssRoute", cssRoute);
config.Routes.Add("defaultRoute", defaultRoute);
appBuilder.UseWebApi(config);
//appBuilder.UseFileServer(new FileServerOptions
//{
// RequestPath = new PathString(string.Empty),
// FileSystem = new PhysicalFileSystem("./MySubFolder"),
// EnableDirectoryBrowsing = true,
//});
//appBuilder.UseStageMarker(PipelineStage.MapHandler);
//config.Routes.MapHttpRoute(
// name: "ignore",
// routeTemplate: @".*\.(css|js|gif|jpg)(/.*)?",
// defaults: new
// {
// controller = "file",
// action = "readtext",
// id = RouteParameter.Optional
// }
// );
}
}
}

101
Project/OWIN/StartupSSE.cs Normal file
View File

@@ -0,0 +1,101 @@
using Microsoft.Owin;
using Owin;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using System.Web.Http;
namespace Project.OWIN
{
public class StartupSSE
{
public void Configuration(IAppBuilder app)
{
var api = new Api();
app.Run(context => api.Invoke(context));
}
public class Subscriber
{
private StreamWriter _writer;
private TaskCompletionSource<bool> _tcs;
public Subscriber(Stream body, TaskCompletionSource<bool> tcs)
{
this._writer = new StreamWriter(body);
this._tcs = tcs;
}
public async void WriteAsync(string message)
{
try
{
_writer.Write(message);
_writer.Flush();
}
catch (Exception e)
{
if (e.HResult == -2146232800) // non-existent connection
_tcs.SetResult(true);
else
_tcs.SetException(e);
}
}
}
public class Api
{
System.Timers.Timer _timer = new System.Timers.Timer(500);
List<Subscriber> _subscribers = new List<Subscriber>();
public Api()
{
_timer.Elapsed += _timer_Elapsed;
}
void _timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
UpdateSubscribers();
}
public void UpdateSubscribers()
{
Console.WriteLine("updating {0} subscribers", _subscribers.Count);
var subscribersCopy = _subscribers.ToList<Subscriber>();
var msg = String.Format("Hello async at {0}\n", DateTime.Now);
subscribersCopy.ForEach(w => w.WriteAsync(msg));
_timer.Start();
}
public Task Invoke(IOwinContext context)
{
SetEventHeaders(context);
System.IO.Stream responseStream = context.Environment["owin.ResponseBody"] as Stream;
var tcs = new TaskCompletionSource<bool>();
var s = CreateSubscriber(responseStream, tcs);
tcs.Task.ContinueWith(_ => _subscribers.Remove(s));
Console.WriteLine("Add subscriber. Now have {0}", _subscribers.Count);
s.WriteAsync("Registered\n");
_timer.Start();
return tcs.Task;
}
private Subscriber CreateSubscriber(System.IO.Stream responseStream, TaskCompletionSource<bool> tcs)
{
var s = new Subscriber(responseStream, tcs);
_subscribers.Add(s);
return s;
}
private static void SetEventHeaders(IOwinContext context)
{
context.Response.ContentType = "text/eventstream";
context.Response.Headers["Transfer-Encoding"] = "chunked";
context.Response.Headers["cache-control"] = "no-cache";
}
}
}
}

View File

@@ -1,46 +1,46 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace Project
{
static class Program
{
/// <summary>
/// 해당 응용 프로그램의 주 진입점입니다.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace Project
{
static class Program
{
/// <summary>
/// 해당 응용 프로그램의 주 진입점입니다.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);
// Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
// AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
Application.Run(new fMain());
}
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
string emsg = "Fatal Error(UHE)\n\n" + e.ExceptionObject.ToString();
Pub.log.AddE(emsg);
Pub.log.Flush();
Util.SaveBugReport(emsg);
var f = new fErrorException(emsg);
f.ShowDialog();
Application.ExitThread();
}
static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
{
string emsg = "Fatal Error(ATE)\n\n" + e.Exception.ToString();
Pub.log.AddE(emsg);
Pub.log.Flush();
Util.SaveBugReport(emsg);
var f = new fErrorException(emsg);
f.ShowDialog();
Application.ExitThread();
}
}
}
Application.Run(new fMain());
}
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
string emsg = "Fatal Error(UHE)\n\n" + e.ExceptionObject.ToString();
Pub.log.AddE(emsg);
Pub.log.Flush();
Util.SaveBugReport(emsg);
var f = new fErrorException(emsg);
f.ShowDialog();
Application.ExitThread();
}
static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
{
string emsg = "Fatal Error(ATE)\n\n" + e.Exception.ToString();
Pub.log.AddE(emsg);
Pub.log.Flush();
Util.SaveBugReport(emsg);
var f = new fErrorException(emsg);
f.ShowDialog();
Application.ExitThread();
}
}
}

View File

@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호가 자동으로
// 지정되도록 할 수 있습니다.
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("21.02.23.1350")]
[assembly: AssemblyFileVersion("21.02.23.1350")]
[assembly: AssemblyVersion("21.03.02.1257")]
[assembly: AssemblyFileVersion("21.03.02.1257")]

View File

@@ -91,6 +91,8 @@
this.todoListToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem5 = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.btDev = new System.Windows.Forms.ToolStripMenuItem();
this.purchaseImportToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@@ -116,8 +118,7 @@
this.toolStripButton4 = new System.Windows.Forms.ToolStripButton();
this.toolStripButton1 = new System.Windows.Forms.ToolStripButton();
this.toolStripButton2 = new System.Windows.Forms.ToolStripButton();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.cmTab.SuspendLayout();
this.statusStrip1.SuspendLayout();
this.menuStrip1.SuspendLayout();
@@ -238,14 +239,14 @@
//
this.codesToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("codesToolStripMenuItem.Image")));
this.codesToolStripMenuItem.Name = "codesToolStripMenuItem";
this.codesToolStripMenuItem.Size = new System.Drawing.Size(180, 24);
this.codesToolStripMenuItem.Size = new System.Drawing.Size(153, 24);
this.codesToolStripMenuItem.Text = "공용코드";
this.codesToolStripMenuItem.Click += new System.EventHandler(this.codesToolStripMenuItem_Click);
//
// itemsToolStripMenuItem
//
this.itemsToolStripMenuItem.Name = "itemsToolStripMenuItem";
this.itemsToolStripMenuItem.Size = new System.Drawing.Size(180, 24);
this.itemsToolStripMenuItem.Size = new System.Drawing.Size(153, 24);
this.itemsToolStripMenuItem.Text = "품목정보";
this.itemsToolStripMenuItem.Click += new System.EventHandler(this.itemsToolStripMenuItem_Click);
//
@@ -256,7 +257,7 @@
this.myAccouserToolStripMenuItem,
this.ToolStripMenuItem});
this.userInfoToolStripMenuItem.Name = "userInfoToolStripMenuItem";
this.userInfoToolStripMenuItem.Size = new System.Drawing.Size(180, 24);
this.userInfoToolStripMenuItem.Size = new System.Drawing.Size(153, 24);
this.userInfoToolStripMenuItem.Text = "사용자";
//
// userAccountToolStripMenuItem
@@ -283,14 +284,14 @@
// customerToolStripMenuItem
//
this.customerToolStripMenuItem.Name = "customerToolStripMenuItem";
this.customerToolStripMenuItem.Size = new System.Drawing.Size(180, 24);
this.customerToolStripMenuItem.Size = new System.Drawing.Size(153, 24);
this.customerToolStripMenuItem.Text = "업체정보";
this.customerToolStripMenuItem.Click += new System.EventHandler(this.customerToolStripMenuItem_Click);
//
// mn_kuntae
//
this.mn_kuntae.Name = "mn_kuntae";
this.mn_kuntae.Size = new System.Drawing.Size(180, 24);
this.mn_kuntae.Size = new System.Drawing.Size(153, 24);
this.mn_kuntae.Text = "월별 근무표";
this.mn_kuntae.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
@@ -298,7 +299,7 @@
//
this.ToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("메일양식ToolStripMenuItem.Image")));
this.ToolStripMenuItem.Name = "메일양식ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(180, 24);
this.ToolStripMenuItem.Size = new System.Drawing.Size(153, 24);
this.ToolStripMenuItem.Text = "메일 양식";
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
@@ -433,6 +434,7 @@
this.dataFOLToolStripMenuItem,
this.dataMoldEOLToolStripMenuItem,
this.dataToolStripMenuItem,
this.ToolStripMenuItem,
this.toolStripMenuItem2,
this.ToolStripMenuItem});
this.mn_eq.Image = ((System.Drawing.Image)(resources.GetObject("mn_eq.Image")));
@@ -443,33 +445,33 @@
// dataFOLToolStripMenuItem
//
this.dataFOLToolStripMenuItem.Name = "dataFOLToolStripMenuItem";
this.dataFOLToolStripMenuItem.Size = new System.Drawing.Size(162, 24);
this.dataFOLToolStripMenuItem.Size = new System.Drawing.Size(180, 24);
this.dataFOLToolStripMenuItem.Text = "FOL";
this.dataFOLToolStripMenuItem.Click += new System.EventHandler(this.dataFOLToolStripMenuItem_Click);
//
// dataMoldEOLToolStripMenuItem
//
this.dataMoldEOLToolStripMenuItem.Name = "dataMoldEOLToolStripMenuItem";
this.dataMoldEOLToolStripMenuItem.Size = new System.Drawing.Size(162, 24);
this.dataMoldEOLToolStripMenuItem.Size = new System.Drawing.Size(180, 24);
this.dataMoldEOLToolStripMenuItem.Text = "MOLD & EOL";
this.dataMoldEOLToolStripMenuItem.Click += new System.EventHandler(this.dataMoldEOLToolStripMenuItem_Click);
//
// dataToolStripMenuItem
//
this.dataToolStripMenuItem.Name = "dataToolStripMenuItem";
this.dataToolStripMenuItem.Size = new System.Drawing.Size(162, 24);
this.dataToolStripMenuItem.Size = new System.Drawing.Size(180, 24);
this.dataToolStripMenuItem.Text = "BUMP";
this.dataToolStripMenuItem.Click += new System.EventHandler(this.dataToolStripMenuItem_Click);
//
// toolStripMenuItem2
//
this.toolStripMenuItem2.Name = "toolStripMenuItem2";
this.toolStripMenuItem2.Size = new System.Drawing.Size(159, 6);
this.toolStripMenuItem2.Size = new System.Drawing.Size(177, 6);
//
// 라인코드관리ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "라인코드관리ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(162, 24);
this.ToolStripMenuItem.Size = new System.Drawing.Size(180, 24);
this.ToolStripMenuItem.Text = "라인코드관리";
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
@@ -629,6 +631,20 @@
this.toolStripMenuItem5.Text = "(test)휴가등록";
this.toolStripMenuItem5.Click += new System.EventHandler(this.toolStripMenuItem5_Click);
//
// 기타ToolStripMenuItem
//
this.ToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.ToolStripMenuItem});
this.ToolStripMenuItem.Name = "기타ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(49, 23);
this.ToolStripMenuItem.Text = "기타";
//
// 행복나래ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "행복나래ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(134, 24);
this.ToolStripMenuItem.Text = "행복나래";
//
// 즐겨찾기ToolStripMenuItem
//
this.ToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("즐겨찾기ToolStripMenuItem.Image")));
@@ -860,19 +876,12 @@
this.toolStripButton2.Text = "품목정보";
this.toolStripButton2.Click += new System.EventHandler(this.toolStripButton2_Click_1);
//
// 기타ToolStripMenuItem
// 잉여장비ToolStripMenuItem
//
this.ToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.ToolStripMenuItem});
this.ToolStripMenuItem.Name = "기타ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(49, 23);
this.ToolStripMenuItem.Text = "기타";
//
// 행복나래ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "행복나래ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(180, 24);
this.ToolStripMenuItem.Text = "행복나래";
this.ToolStripMenuItem.Name = "잉여장비ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(180, 24);
this.ToolStripMenuItem.Text = "잉여장비";
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// fMain
//
@@ -994,6 +1003,7 @@
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem;
}
}

View File

@@ -1,4 +1,5 @@
using arTCPService.Server;
using Microsoft.Owin.Hosting;
using System;
using System.Collections.Generic;
using System.ComponentModel;
@@ -130,9 +131,11 @@ namespace Project
//사용기록추적
Pub.CheckNRegister3(Application.ProductName, "chi", Application.ProductVersion);
// Start OWIN host
WebApp.Start<OWIN.Startup>(url: "http://127.0.0.1:9000");
Console.WriteLine("start webapp");
//서버ON
try
{
@@ -1120,5 +1123,12 @@ namespace Project
//업무현황 전자실
menu_work_eboard();
}
private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
string formkey = "INGYEQ";
if (!ShowForm(formkey))
AddForm(formkey, new FEQ0000.fEquipment(FEQ0000.fEquipment.eTabletype.ING), "잉여장비");
}
}
}

View File

@@ -153,26 +153,6 @@
Mi4wAwEBAAAh+QQBAAAXACwAAAAAEAAQAAAIggAvCBwo0IJBCwQTFqwAAQEDhAoXTpgoYQDEhBYqTKDA
kYKEBRclciRAoMEDCREuZtw40oKCCihVauxIIYEBmCkJruxYoWfMggYPsOyJU+WAABMqCJDgM+eFg0iV
Aigg4WfBo0kFADAYwWnBABSkQjSIcYDYiAMtBHCwFW3ag24HBgQAOw==
</value>
</data>
<data name="codesToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
R0lGODlhEAAQAIQAAHan1azQ4ldvj9vp9HSQruTr80lVa+vx9pu811SRuXifuj13uYyz2VFhe4Gt2UNL
XPL1+Orv+ufu9YOqxYyzzNHW3SkxQz5FVWag2T6CuZe3y5G0t+Do7+r0/77a9f///yH/C05FVFNDQVBF
Mi4wAwEBAAAh+QQAAAAAACwAAAAAEAAQAAAIrwA/CBxIsKDAAQESIkBAYYICBQQICCAgMMAACQMyaswo
oUKDih0SZMiwoKTJBQcEVDyAoEMHDy5hdnAg4eMHBBIQeNjJcyeDAjYRRNAQs+hMoAIpRNjQs6eDAgYE
TshpVCYAqAIV5GzKU0GBB1klMKjqEgMHsB8IiOW60+wFgQQgIGDgoC4AABgwADjw9oOAChAkSChAmIPh
AxUswBXAuEEDAwYePLhwwYJNg5gFBgQAOw==
</value>
</data>
<data name="메일양식ToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
R0lGODlhEAAQAIQfAHWSrbTY+6nU/I+74/r8/drj7FlxkUlVa9Xp/eLs9cvT2oWpxG+bwqPQ+57N++v1
/lJgeabK7JnB5kNLXJG0z5nA1oyw0SkxQz5FVb7e/aC91tHl8qXB2n2gu////////yH/C05FVFNDQVBF
Mi4wAwEBAAAh+QQBAAAfACwAAAAAEAAQAAAIpAA/CBxIsKDBgwQ9KFzIsKHCDRUqUFhAsQOAiwAMQFBY
gYDHjyAJKNjogQIBChoQZAgQAEGCiQUOKFxAIEMEDhsQPEDAQEKDBzI9dKiZIYOFowwENPg5QeHQlRIi
SJAwYIADBwWaegCQIMAACQEEKK2KFYNCrgMihBXbwEHVBGY9GFCQIEGBu3jvKrhw1oBfCBAOHJgwAQOG
CyQdKlaIsLHjggEBADs=
</value>
</data>
<data name="commonToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
@@ -325,6 +305,26 @@
JDzo4OEBBAgUMGiwkGBFBAcODAAAYMEAjh4ZIBgwQAAAAgZOdkTIQEGCAQRICoAZACVNBQACkHxpQEDP
jg5qLhgKQIDTowIrJoA5NGKDABIbNpjqlEGBAguyag3QEiLYsDOjPgwQYEFYsQUdRpSY1qDCugzzBgQA
Ow==
</value>
</data>
<data name="codesToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
R0lGODlhEAAQAIQAAHan1azQ4ldvj9vp9HSQruTr80lVa+vx9pu811SRuXifuj13uYyz2VFhe4Gt2UNL
XPL1+Orv+ufu9YOqxYyzzNHW3SkxQz5FVWag2T6CuZe3y5G0t+Do7+r0/77a9f///yH/C05FVFNDQVBF
Mi4wAwEBAAAh+QQAAAAAACwAAAAAEAAQAAAIrwA/CBxIsKDAAQESIkBAYYICBQQICCAgMMAACQMyaswo
oUKDih0SZMiwoKTJBQcEVDyAoEMHDy5hdnAg4eMHBBIQeNjJcyeDAjYRRNAQs+hMoAIpRNjQs6eDAgYE
TshpVCYAqAIV5GzKU0GBB1klMKjqEgMHsB8IiOW60+wFgQQgIGDgoC4AABgwADjw9oOAChAkSChAmIPh
AxUswBXAuEEDAwYePLhwwYJNg5gFBgQAOw==
</value>
</data>
<data name="메일양식ToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
R0lGODlhEAAQAIQfAHWSrbTY+6nU/I+74/r8/drj7FlxkUlVa9Xp/eLs9cvT2oWpxG+bwqPQ+57N++v1
/lJgeabK7JnB5kNLXJG0z5nA1oyw0SkxQz5FVb7e/aC91tHl8qXB2n2gu////////yH/C05FVFNDQVBF
Mi4wAwEBAAAh+QQBAAAfACwAAAAAEAAQAAAIpAA/CBxIsKDBgwQ9KFzIsKHCDRUqUFhAsQOAiwAMQFBY
gYDHjyAJKNjogQIBChoQZAgQAEGCiQUOKFxAIEMEDhsQPEDAQEKDBzI9dKiZIYOFowwENPg5QeHQlRIi
SJAwYIADBwWaegCQIMAACQEEKK2KFYNCrgMihBXbwEHVBGY9GFCQIEGBu3jvKrhw1oBfCBAOHJgwAQOG
CyQdKlaIsLHjggEBADs=
</value>
</data>
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
@@ -375,52 +375,52 @@
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJFSURBVDhPjVPtS1NxGP1B3r+gj/0PfUhXQgQJYWUqRFFB
QwoXhVCNrK1o6oJog+iDkJrIvjRlkJQUgTkGI4Teo4g1o31bEGzqiG3e3bteTs/53StLVOiByz7ce55z
QwoXhVCNrK1o6oJog+iDkJrIvjRlkJQUgTYGI4Teo4g1o31bEGzqiG3e3bteTs/53StLVOiByz7ce55z
nnPO1P9OzlC+r4aal9+iPHbaUL/nDPXHfb35yMdjWUMVCCj0HsNi8ByWBi9gOeyHvIP72foRNu9Ck8rn
W7djMXAWpZt+lEcCKIf2YCXSip+zA6gFN1mQ26JiGUOZhTMnUIr048e1dphRD+yRXaiPOc+v1CDs6xss
yDWpaZFWXxo4j/LdAKrhHai7QHtqL6y5LtReHYedH0XlbfPaBWQmeHnoIioTQVh3PA4w0Yba8yMwMz0w
v5zWj/19HJX3nsYC3kzZZCbYHt6pwdbTDpgfvRr0LePFw5fdCKXaMPphCNti/5xAw3gzZa8yW8lumNlT
WBHw9Isu+GZ3o+NJC/Y/bkb0XQhbJ9wFjIqZlm5dQvVGS4NZwMXPPbid3odOF3gyHkDfeALx5CccujLj
LGDOjKoau6oN482UTWaCDwjw8IOj6LuXwGQyi6nkAu4/yzoLhN3HkjBnRkV2bZgrm8wEh+MpDYxOvkFv
yDWpaZFWXxo4j/LdAKrhHai7QHtqL6xnXai9Og47P4rK2+a1C8hM8PLQRVQmgrDueBxgog2150dgZnpg
fjmtH/v7OCrvPY0FvJmyyUywPbxTg62nHTA/ejXoW8aLhy+7EUq1YfTDELbF/jmBhvFmyl5ltpLdMLOn
sCLg6Rdd8M3uRseTFux/3IzouxC2TrgLGBUzLd26hOqNlgazgIufe3A7vQ+dLvBkPIC+8QTiyU84dGXG
WcCcGVU1dlUbxpspm8wEHxDg4QdH0XcvgclkFlPJBdyfyzoLhN3HkjBnRkV2bZgrm8wEh+MpDYxOvkFv
JCnguHWwf+Y1zZtnw1gS5syo6DYN482UTWaC/cNpDey8/KhdS+eIgiLryYbp2yVnstNtGsabKZvMBLuw
xsgCm91mPbV8KQkXMCrNLoaRnbLXMK8O7+cfg93W9ZSGsSTMmVHRbcewDdg5jE9U6D8Gu816smEsCXOm
03y0YetGqb+SV/RuxcFpvwAAAABJRU5ErkJggg==
03y0YetGqb+MRfRr+7WMzwAAAABJRU5ErkJggg==
</value>
</data>
<data name="toolStripButton1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAKVSURBVDhPlVJRSFNRGL5PEVE91Us99ZTWQ0R0i6iHEqye
oocQKhoMtoZT2nSK4uZcuDWnY3e6ueV0cplXajObDkJlD246p9NCdKBMMEXfehIGIVt9nXO8iVJRfXC4
8J37/f/3/f/h/oQX0i1oQ9fwJFCK+75z32T636Hqv1SIfurG24yA2+6z/1/guXgF7z56IM06UeY6DZnm
QqEQgsEgenp64PV6n3KpVAr0TE1NYXJyEnrpDirFmzC+f4Q38wKCKTue9d/AVdtJXGw5wf4tFArY3t6G
IAhZbnp6GsViEbu7u+yo+i/DEnuM8LwbQtwA64dKdCdaoBDLcMF8qrizs4PV1VW0t7d/bmtrq+SSySQj
tra2kE6nsbm5iQp/CQyRBxDTDviSL6EMlRNXFRgaGkI2m0UkEgERl8mpOC4ej2NmZgaxWIxPJBIYHh7m
7wpnoJHKoZbuodR0LEXFnZ2dvCRJLL/Vai2R5Rw3NjaGpaUlNoP19XVMTEwgt5YD/+ooHnqv73ceGBjA
4uIi7Q6z2Xxclu8hGo0in89jfHwcpAs/OjqKQCDAU7tOp5OnYrvdzvf29qK5uXl/K/sIh8PGTCaDXC4H
Kl5ZWQHhsLy8DLo62pkUxMLCAhoaGr7LssMQRRF9fX3w+/3o6uqCy+WCw+GgeWGxWKhtjIyMwGAw/L7A
30AKHKmtrUVVVdUXmdoDyXX+NYHP56OTpplpXrS2trKuTU1NqK+vR01NDcuu0WjyTPgTZC1G+nW73bqO
jo4NItaxiwPQ6/W66urqDa1Wq1Or1V9leg8ej8dIniVb19zcHAYHB9mkGxsbUVdXByIGMcieMXn/UCgU
a7L0MGw2GxuWyWT6xQGxrVOpVFAqlQdWyHE/AIbUwk2mSfQcAAAAAElFTkSuQmCC
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAKUSURBVDhPlVJRSFNRGL5PEVE91Us99ZQWBBHdIgoiwXyL
HkKoaDDaGk5p0ymKm3Ph1pyO3enmltPJZV6pzWw6CJU9uOlcTgvRgTLBFH3rSRiEbPV1zvEmSkX1weHC
d+73/9/3/4f7E55Lt6ANXcOjQCkqfOe+yfS/4+nApUL0Uw/eZATcdp/9/wLPxCt4+9ED6YMTZa7TkGku
FAohGAyit7cXXq/3MZdKpUDP9PQ0pqamoJfuoEq8CeO7B3g9LyCYsuPJwA1ctZ3ExdYT7N9CoYDt7W0I
gpDlZmZmUCwWsbu7y45q4DIssYcIz7shxA2wvq9CT6IVCrEMF8ynijs7O1hdXUVHR8fn9vb2Ki6ZTDJi
a2sL6XQam5ubqPSXwBC5BzHtgC/5AspQOXFVieHhYWSzWUQiERBxmZyK4+LxOGZnZxGLxfhEIoGRkRH+
rnAGGqkcaqkCpaZjKSru6uriJUli+a1Wa4ks57jx8XEsLS2xGayvr2NychK5tRz4l0dx33t9v/Pg4CAW
Fxdpd5jN5uOyfA/RaBT5fB4TExMgXfixsTEEAgGe2nU6nTwV2+12vq+vDy0tLftb2Uc4HDZmMhnkcjlQ
8crKCgiH5eVl0NXRzqQgFhYW0NjY+F2WHYYoiujv74ff70d3dzdcLhccDgfNC4vFQm1jdHQUBoPh9wX+
BlLgSF1dHaqrq7/I1B5IrvOvCHw+H500zUzzoq2tjXVtbm5GQ0MDamtrWXaNRpNnwp8gazHSr9vt1nV2
dm4QsY5dHIBer9fV1NRsaLVanVqt/irTe/B4PEbyLNm65ubmMDQ0xCbd1NSE+vp6EDGIQfaMyfuHQqFY
k6WHYbPZ2LBMJtMvDohtnUqlglKpPLBCjvsBd9XCSVklPrUAAAAASUVORK5CYII=
</value>
</data>
<data name="toolStripButton2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
</value>
</data>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

View File

@@ -8,10 +8,15 @@
<package id="EntityFramework.ko" version="6.2.0" targetFramework="net45" />
<package id="HtmlAgilityPack" version="1.4.9" targetFramework="net452" />
<package id="HtmlAgilityPack.CssSelectors" version="1.0.2" targetFramework="net452" />
<package id="Microsoft.AspNet.WebApi.Client" version="5.2.7" targetFramework="net452" />
<package id="Microsoft.AspNet.WebApi.Core" version="5.2.7" targetFramework="net452" />
<package id="Microsoft.AspNet.WebApi.Owin" version="5.2.7" targetFramework="net452" />
<package id="Microsoft.AspNet.WebApi.OwinSelfHost" version="5.2.7" targetFramework="net452" />
<package id="Microsoft.Owin" version="4.1.1" targetFramework="net452" />
<package id="Microsoft.Owin.Host.HttpListener" version="4.1.1" targetFramework="net452" />
<package id="Microsoft.Owin.Hosting" version="4.1.1" targetFramework="net452" />
<package id="Microsoft.ReportViewer" version="11.0.3366.16" targetFramework="net452" />
<package id="Microsoft.SqlServer.Types" version="11.0.1" targetFramework="net452" />
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net452" />
<package id="Owin" version="1.0" targetFramework="net452" />
</packages>