..
This commit is contained in:
1676
JobReportMailService/DataSet1.Designer.cs
generated
Normal file
1676
JobReportMailService/DataSet1.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
9
JobReportMailService/DataSet1.xsc
Normal file
9
JobReportMailService/DataSet1.xsc
Normal file
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--<autogenerated>
|
||||
This code was generated by a tool.
|
||||
Changes to this file may cause incorrect behavior and will be lost if
|
||||
the code is regenerated.
|
||||
</autogenerated>-->
|
||||
<DataSetUISetting Version="1.00" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
|
||||
<TableUISettings />
|
||||
</DataSetUISetting>
|
||||
107
JobReportMailService/DataSet1.xsd
Normal file
107
JobReportMailService/DataSet1.xsd
Normal file
@@ -0,0 +1,107 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xs:schema id="DataSet1" targetNamespace="http://tempuri.org/DataSet1.xsd" xmlns:mstns="http://tempuri.org/DataSet1.xsd" xmlns="http://tempuri.org/DataSet1.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:msprop="urn:schemas-microsoft-com:xml-msprop" attributeFormDefault="qualified" elementFormDefault="qualified">
|
||||
<xs:annotation>
|
||||
<xs:appinfo source="urn:schemas-microsoft-com:xml-msdatasource">
|
||||
<DataSource DefaultConnectionIndex="0" FunctionsComponentName="QueriesTableAdapter" Modifier="AutoLayout, AnsiClass, Class, Public" SchemaSerializationMode="IncludeSchema" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
|
||||
<Connections>
|
||||
<Connection AppSettingsObjectName="Settings" AppSettingsPropertyName="CS" ConnectionStringObject="" IsAppSettingsProperty="true" Modifier="Assembly" Name="CS (Settings)" ParameterPrefix="@" PropertyReference="ApplicationSettings.JobReportMailService.Properties.Settings.GlobalReference.Default.CS" Provider="System.Data.SqlClient" />
|
||||
</Connections>
|
||||
<Tables>
|
||||
<TableAdapter BaseClass="System.ComponentModel.Component" DataAccessorModifier="AutoLayout, AnsiClass, Class, Public" DataAccessorName="vMailingProjectScheduleTableAdapter" GeneratorDataComponentClassName="vMailingProjectScheduleTableAdapter" Name="vMailingProjectSchedule" UserDataComponentName="vMailingProjectScheduleTableAdapter">
|
||||
<MainSource>
|
||||
<DbSource ConnectionRef="CS (Settings)" DbObjectName="EE.dbo.vMailingProjectSchedule" DbObjectType="View" FillMethodModifier="Public" FillMethodName="Fill" GenerateMethods="Both" GenerateShortCommands="false" GeneratorGetMethodName="GetData" GeneratorSourceName="Fill" GetMethodModifier="Public" GetMethodName="GetData" QueryType="Rowset" ScalarCallRetval="System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="true" UserGetMethodName="GetData" UserSourceName="Fill">
|
||||
<SelectCommand>
|
||||
<DbCommand CommandType="Text" ModifiedByUser="false">
|
||||
<CommandText>SELECT idx, pdate, name, userManager, seq, title, sw, ew, swa, progress, ewa, ww, memo, sidx
|
||||
FROM vMailingProjectSchedule
|
||||
ORDER BY pdate, idx, seq</CommandText>
|
||||
<Parameters />
|
||||
</DbCommand>
|
||||
</SelectCommand>
|
||||
</DbSource>
|
||||
</MainSource>
|
||||
<Mappings>
|
||||
<Mapping SourceColumn="idx" DataSetColumn="idx" />
|
||||
<Mapping SourceColumn="pdate" DataSetColumn="pdate" />
|
||||
<Mapping SourceColumn="name" DataSetColumn="name" />
|
||||
<Mapping SourceColumn="userManager" DataSetColumn="userManager" />
|
||||
<Mapping SourceColumn="seq" DataSetColumn="seq" />
|
||||
<Mapping SourceColumn="title" DataSetColumn="title" />
|
||||
<Mapping SourceColumn="sw" DataSetColumn="sw" />
|
||||
<Mapping SourceColumn="ew" DataSetColumn="ew" />
|
||||
<Mapping SourceColumn="swa" DataSetColumn="swa" />
|
||||
<Mapping SourceColumn="progress" DataSetColumn="progress" />
|
||||
<Mapping SourceColumn="ewa" DataSetColumn="ewa" />
|
||||
<Mapping SourceColumn="ww" DataSetColumn="ww" />
|
||||
<Mapping SourceColumn="memo" DataSetColumn="memo" />
|
||||
<Mapping SourceColumn="sidx" DataSetColumn="sidx" />
|
||||
</Mappings>
|
||||
<Sources />
|
||||
</TableAdapter>
|
||||
</Tables>
|
||||
<Sources />
|
||||
</DataSource>
|
||||
</xs:appinfo>
|
||||
</xs:annotation>
|
||||
<xs:element name="DataSet1" msdata:IsDataSet="true" msdata:UseCurrentLocale="true" msprop:EnableTableAdapterManager="true" msprop:Generator_DataSetName="DataSet1" msprop:Generator_UserDSName="DataSet1">
|
||||
<xs:complexType>
|
||||
<xs:choice minOccurs="0" maxOccurs="unbounded">
|
||||
<xs:element name="vMailingProjectSchedule" msprop:Generator_TableClassName="vMailingProjectScheduleDataTable" msprop:Generator_TableVarName="tablevMailingProjectSchedule" msprop:Generator_TablePropName="vMailingProjectSchedule" msprop:Generator_RowDeletingName="vMailingProjectScheduleRowDeleting" msprop:Generator_RowChangingName="vMailingProjectScheduleRowChanging" msprop:Generator_RowEvHandlerName="vMailingProjectScheduleRowChangeEventHandler" msprop:Generator_RowDeletedName="vMailingProjectScheduleRowDeleted" msprop:Generator_UserTableName="vMailingProjectSchedule" msprop:Generator_RowChangedName="vMailingProjectScheduleRowChanged" msprop:Generator_RowEvArgName="vMailingProjectScheduleRowChangeEvent" msprop:Generator_RowClassName="vMailingProjectScheduleRow">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="idx" msprop:Generator_ColumnVarNameInTable="columnidx" msprop:Generator_ColumnPropNameInRow="idx" msprop:Generator_ColumnPropNameInTable="idxColumn" msprop:Generator_UserColumnName="idx" type="xs:int" />
|
||||
<xs:element name="pdate" msprop:nullValue="_empty" msprop:Generator_ColumnPropNameInRow="pdate" msprop:Generator_ColumnVarNameInTable="columnpdate" msprop:Generator_ColumnPropNameInTable="pdateColumn" msprop:Generator_UserColumnName="pdate" minOccurs="0">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:maxLength value="10" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:element>
|
||||
<xs:element name="name" msprop:nullValue="_empty" msprop:Generator_ColumnPropNameInRow="name" msprop:Generator_ColumnVarNameInTable="columnname" msprop:Generator_ColumnPropNameInTable="nameColumn" msprop:Generator_UserColumnName="name" minOccurs="0">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:maxLength value="255" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:element>
|
||||
<xs:element name="userManager" msprop:nullValue="_empty" msprop:Generator_ColumnPropNameInRow="userManager" msprop:Generator_ColumnVarNameInTable="columnuserManager" msprop:Generator_ColumnPropNameInTable="userManagerColumn" msprop:Generator_UserColumnName="userManager" minOccurs="0">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:maxLength value="50" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:element>
|
||||
<xs:element name="seq" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="seq" msprop:Generator_ColumnVarNameInTable="columnseq" msprop:Generator_ColumnPropNameInTable="seqColumn" msprop:Generator_UserColumnName="seq" type="xs:int" minOccurs="0" />
|
||||
<xs:element name="title" msprop:nullValue="_empty" msprop:Generator_ColumnPropNameInRow="title" msprop:Generator_ColumnVarNameInTable="columntitle" msprop:Generator_ColumnPropNameInTable="titleColumn" msprop:Generator_UserColumnName="title" minOccurs="0">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:maxLength value="100" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:element>
|
||||
<xs:element name="sw" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="sw" msprop:Generator_ColumnVarNameInTable="columnsw" msprop:Generator_ColumnPropNameInTable="swColumn" msprop:Generator_UserColumnName="sw" type="xs:int" minOccurs="0" />
|
||||
<xs:element name="ew" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="ew" msprop:Generator_ColumnVarNameInTable="columnew" msprop:Generator_ColumnPropNameInTable="ewColumn" msprop:Generator_UserColumnName="ew" type="xs:int" minOccurs="0" />
|
||||
<xs:element name="swa" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="swa" msprop:Generator_ColumnVarNameInTable="columnswa" msprop:Generator_ColumnPropNameInTable="swaColumn" msprop:Generator_UserColumnName="swa" type="xs:int" minOccurs="0" />
|
||||
<xs:element name="progress" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="progress" msprop:Generator_ColumnVarNameInTable="columnprogress" msprop:Generator_ColumnPropNameInTable="progressColumn" msprop:Generator_UserColumnName="progress" type="xs:int" minOccurs="0" />
|
||||
<xs:element name="ewa" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="ewa" msprop:Generator_ColumnVarNameInTable="columnewa" msprop:Generator_ColumnPropNameInTable="ewaColumn" msprop:Generator_UserColumnName="ewa" type="xs:int" minOccurs="0" />
|
||||
<xs:element name="ww" msdata:ReadOnly="true" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="ww" msprop:Generator_ColumnVarNameInTable="columnww" msprop:Generator_ColumnPropNameInTable="wwColumn" msprop:Generator_UserColumnName="ww" type="xs:int" minOccurs="0" />
|
||||
<xs:element name="memo" msprop:nullValue="_empty" msprop:Generator_ColumnPropNameInRow="memo" msprop:Generator_ColumnVarNameInTable="columnmemo" msprop:Generator_ColumnPropNameInTable="memoColumn" msprop:Generator_UserColumnName="memo" minOccurs="0">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:maxLength value="2147483647" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:element>
|
||||
<xs:element name="sidx" msprop:Generator_ColumnVarNameInTable="columnsidx" msprop:Generator_ColumnPropNameInRow="sidx" msprop:Generator_ColumnPropNameInTable="sidxColumn" msprop:Generator_UserColumnName="sidx" type="xs:int" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
<xs:unique name="Constraint1" msdata:PrimaryKey="true">
|
||||
<xs:selector xpath=".//mstns:vMailingProjectSchedule" />
|
||||
<xs:field xpath="mstns:sidx" />
|
||||
<xs:field xpath="mstns:idx" />
|
||||
</xs:unique>
|
||||
</xs:element>
|
||||
</xs:schema>
|
||||
12
JobReportMailService/DataSet1.xss
Normal file
12
JobReportMailService/DataSet1.xss
Normal file
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--<autogenerated>
|
||||
This code was generated by a tool to store the dataset designer's layout information.
|
||||
Changes to this file may cause incorrect behavior and will be lost if
|
||||
the code is regenerated.
|
||||
</autogenerated>-->
|
||||
<DiagramLayout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ex:showrelationlabel="False" ViewPortX="0" ViewPortY="0" xmlns:ex="urn:schemas-microsoft-com:xml-msdatasource-layout-extended" xmlns="urn:schemas-microsoft-com:xml-msdatasource-layout">
|
||||
<Shapes>
|
||||
<Shape ID="DesignTable:vMailingProjectSchedule" ZOrder="1" X="303" Y="117" Height="400" Width="289" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="349" />
|
||||
</Shapes>
|
||||
<Connectors />
|
||||
</DiagramLayout>
|
||||
@@ -34,5 +34,6 @@ namespace JobReportMailService
|
||||
public System.DateTime wdate { get; set; }
|
||||
public string description2 { get; set; }
|
||||
public string tag { get; set; }
|
||||
public Nullable<bool> autoinput { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{DBE5BD4A-09D3-4437-AD6C-81FE270C6458}</ProjectGuid>
|
||||
<OutputType>Exe</OutputType>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<RootNamespace>JobReportMailService</RootNamespace>
|
||||
<AssemblyName>JobReportMailService</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
||||
@@ -31,6 +31,9 @@
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<StartupObject />
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="ArSetting.Net4">
|
||||
<HintPath>..\DLL\ArSetting.Net4.dll</HintPath>
|
||||
@@ -44,8 +47,10 @@
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.ComponentModel.DataAnnotations" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Runtime.Serialization" />
|
||||
<Reference Include="System.Security" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
@@ -55,6 +60,41 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="CSetting.cs" />
|
||||
<Compile Include="DataSet1.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>DataSet1.xsd</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="fChildBase.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="fChildBase.Designer.cs">
|
||||
<DependentUpon>fChildBase.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="fScheduleDayWeek.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="fScheduleDayWeek.Designer.cs">
|
||||
<DependentUpon>fScheduleDayWeek.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="fScheduleDay.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="fScheduleDay.Designer.cs">
|
||||
<DependentUpon>fScheduleDay.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="fJobReportWeek.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="fJobReportWeek.Designer.cs">
|
||||
<DependentUpon>fJobReportWeek.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="fJobReportDay.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="fJobReportDay.Designer.cs">
|
||||
<DependentUpon>fJobReportDay.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="HolidayLIst.cs">
|
||||
<DependentUpon>Model1.tt</DependentUpon>
|
||||
</Compile>
|
||||
@@ -67,6 +107,12 @@
|
||||
<Compile Include="MailForm.cs">
|
||||
<DependentUpon>Model1.tt</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="MDIParent1.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="MDIParent1.Designer.cs">
|
||||
<DependentUpon>MDIParent1.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Model1.Context.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
@@ -82,8 +128,7 @@
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Model1.edmx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ProgramWeek.cs" />
|
||||
<Compile Include="ProgramDay.cs" />
|
||||
<Compile Include="Program_bak.cs" />
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
@@ -91,6 +136,7 @@
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Pub.cs" />
|
||||
<Compile Include="ReportUserData.cs" />
|
||||
<Compile Include="vGroupUser.cs">
|
||||
<DependentUpon>Model1.tt</DependentUpon>
|
||||
@@ -98,6 +144,9 @@
|
||||
<Compile Include="vJobReportForUser.cs">
|
||||
<DependentUpon>Model1.tt</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="vMailingProjectSchedule.cs">
|
||||
<DependentUpon>Model1.tt</DependentUpon>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="App.config" />
|
||||
@@ -105,6 +154,17 @@
|
||||
<Generator>EntityModelCodeGenerator</Generator>
|
||||
<LastGenOutput>Model1.Designer.cs</LastGenOutput>
|
||||
</EntityDeploy>
|
||||
<None Include="DataSet1.xsc">
|
||||
<DependentUpon>DataSet1.xsd</DependentUpon>
|
||||
</None>
|
||||
<None Include="DataSet1.xsd">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSDataSetGenerator</Generator>
|
||||
<LastGenOutput>DataSet1.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<None Include="DataSet1.xss">
|
||||
<DependentUpon>DataSet1.xsd</DependentUpon>
|
||||
</None>
|
||||
<None Include="Model1.edmx.diagram">
|
||||
<DependentUpon>Model1.edmx</DependentUpon>
|
||||
</None>
|
||||
@@ -129,5 +189,25 @@
|
||||
<ItemGroup>
|
||||
<Service Include="{508349B6-6B84-4DF5-91F0-309BEEBAD82D}" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="fChildBase.resx">
|
||||
<DependentUpon>fChildBase.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="fScheduleDayWeek.resx">
|
||||
<DependentUpon>fScheduleDayWeek.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="fScheduleDay.resx">
|
||||
<DependentUpon>fScheduleDay.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="fJobReportWeek.resx">
|
||||
<DependentUpon>fJobReportWeek.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="fJobReportDay.resx">
|
||||
<DependentUpon>fJobReportDay.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="MDIParent1.resx">
|
||||
<DependentUpon>MDIParent1.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
||||
579
JobReportMailService/MDIParent1.Designer.cs
generated
Normal file
579
JobReportMailService/MDIParent1.Designer.cs
generated
Normal file
@@ -0,0 +1,579 @@
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
partial class MDIParent1
|
||||
{
|
||||
/// <summary>
|
||||
/// 필수 디자이너 변수입니다.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// 사용 중인 모든 리소스를 정리합니다.
|
||||
/// </summary>
|
||||
/// <param name="disposing">관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form 디자이너에서 생성한 코드
|
||||
|
||||
/// <summary>
|
||||
/// 디자이너 지원에 필요한 메서드입니다.
|
||||
/// 이 메서드의 내용을 코드 편집기로 수정하지 마세요.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MDIParent1));
|
||||
this.menuStrip = new System.Windows.Forms.MenuStrip();
|
||||
this.fileMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.newToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.saveAsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.printToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.printPreviewToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.printSetupToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.editMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.undoToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.redoToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.cutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.copyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.pasteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.selectAllToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.viewMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolBarToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.statusBarToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolsMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.optionsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.windowsMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.newWindowToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.cascadeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.tileVerticalToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.tileHorizontalToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.closeAllToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.arrangeIconsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.helpMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.contentsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.indexToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.searchToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStrip = new System.Windows.Forms.ToolStrip();
|
||||
this.newToolStripButton = new System.Windows.Forms.ToolStripButton();
|
||||
this.openToolStripButton = new System.Windows.Forms.ToolStripButton();
|
||||
this.saveToolStripButton = new System.Windows.Forms.ToolStripButton();
|
||||
this.printToolStripButton = new System.Windows.Forms.ToolStripButton();
|
||||
this.statusStrip = new System.Windows.Forms.StatusStrip();
|
||||
this.toolStripStatusLabel = new System.Windows.Forms.ToolStripStatusLabel();
|
||||
this.toolTip = new System.Windows.Forms.ToolTip(this.components);
|
||||
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.menuStrip.SuspendLayout();
|
||||
this.toolStrip.SuspendLayout();
|
||||
this.statusStrip.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// menuStrip
|
||||
//
|
||||
this.menuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.fileMenu,
|
||||
this.editMenu,
|
||||
this.viewMenu,
|
||||
this.toolsMenu,
|
||||
this.windowsMenu,
|
||||
this.helpMenu});
|
||||
this.menuStrip.Location = new System.Drawing.Point(0, 0);
|
||||
this.menuStrip.MdiWindowListItem = this.windowsMenu;
|
||||
this.menuStrip.Name = "menuStrip";
|
||||
this.menuStrip.Padding = new System.Windows.Forms.Padding(7, 2, 0, 2);
|
||||
this.menuStrip.Size = new System.Drawing.Size(709, 24);
|
||||
this.menuStrip.TabIndex = 0;
|
||||
this.menuStrip.Text = "MenuStrip";
|
||||
//
|
||||
// fileMenu
|
||||
//
|
||||
this.fileMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.newToolStripMenuItem,
|
||||
this.openToolStripMenuItem,
|
||||
this.toolStripSeparator3,
|
||||
this.saveToolStripMenuItem,
|
||||
this.saveAsToolStripMenuItem,
|
||||
this.toolStripSeparator4,
|
||||
this.printToolStripMenuItem,
|
||||
this.printPreviewToolStripMenuItem,
|
||||
this.printSetupToolStripMenuItem,
|
||||
this.toolStripSeparator5,
|
||||
this.exitToolStripMenuItem});
|
||||
this.fileMenu.ImageTransparentColor = System.Drawing.SystemColors.ActiveBorder;
|
||||
this.fileMenu.Name = "fileMenu";
|
||||
this.fileMenu.Size = new System.Drawing.Size(57, 20);
|
||||
this.fileMenu.Text = "파일(&F)";
|
||||
//
|
||||
// newToolStripMenuItem
|
||||
//
|
||||
this.newToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("newToolStripMenuItem.Image")));
|
||||
this.newToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black;
|
||||
this.newToolStripMenuItem.Name = "newToolStripMenuItem";
|
||||
this.newToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.N)));
|
||||
this.newToolStripMenuItem.Size = new System.Drawing.Size(198, 22);
|
||||
this.newToolStripMenuItem.Text = "새로 만들기(&N)";
|
||||
this.newToolStripMenuItem.Click += new System.EventHandler(this.ShowNewForm);
|
||||
//
|
||||
// openToolStripMenuItem
|
||||
//
|
||||
this.openToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("openToolStripMenuItem.Image")));
|
||||
this.openToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black;
|
||||
this.openToolStripMenuItem.Name = "openToolStripMenuItem";
|
||||
this.openToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O)));
|
||||
this.openToolStripMenuItem.Size = new System.Drawing.Size(198, 22);
|
||||
this.openToolStripMenuItem.Text = "열기(&O)";
|
||||
this.openToolStripMenuItem.Click += new System.EventHandler(this.OpenFile);
|
||||
//
|
||||
// toolStripSeparator3
|
||||
//
|
||||
this.toolStripSeparator3.Name = "toolStripSeparator3";
|
||||
this.toolStripSeparator3.Size = new System.Drawing.Size(195, 6);
|
||||
//
|
||||
// saveToolStripMenuItem
|
||||
//
|
||||
this.saveToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("saveToolStripMenuItem.Image")));
|
||||
this.saveToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black;
|
||||
this.saveToolStripMenuItem.Name = "saveToolStripMenuItem";
|
||||
this.saveToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S)));
|
||||
this.saveToolStripMenuItem.Size = new System.Drawing.Size(198, 22);
|
||||
this.saveToolStripMenuItem.Text = "저장(&S)";
|
||||
//
|
||||
// saveAsToolStripMenuItem
|
||||
//
|
||||
this.saveAsToolStripMenuItem.Name = "saveAsToolStripMenuItem";
|
||||
this.saveAsToolStripMenuItem.Size = new System.Drawing.Size(198, 22);
|
||||
this.saveAsToolStripMenuItem.Text = "다른 이름으로 저장(&A)";
|
||||
this.saveAsToolStripMenuItem.Click += new System.EventHandler(this.SaveAsToolStripMenuItem_Click);
|
||||
//
|
||||
// toolStripSeparator4
|
||||
//
|
||||
this.toolStripSeparator4.Name = "toolStripSeparator4";
|
||||
this.toolStripSeparator4.Size = new System.Drawing.Size(195, 6);
|
||||
//
|
||||
// printToolStripMenuItem
|
||||
//
|
||||
this.printToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("printToolStripMenuItem.Image")));
|
||||
this.printToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black;
|
||||
this.printToolStripMenuItem.Name = "printToolStripMenuItem";
|
||||
this.printToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.P)));
|
||||
this.printToolStripMenuItem.Size = new System.Drawing.Size(198, 22);
|
||||
this.printToolStripMenuItem.Text = "인쇄(&P)";
|
||||
//
|
||||
// printPreviewToolStripMenuItem
|
||||
//
|
||||
this.printPreviewToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("printPreviewToolStripMenuItem.Image")));
|
||||
this.printPreviewToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black;
|
||||
this.printPreviewToolStripMenuItem.Name = "printPreviewToolStripMenuItem";
|
||||
this.printPreviewToolStripMenuItem.Size = new System.Drawing.Size(198, 22);
|
||||
this.printPreviewToolStripMenuItem.Text = "인쇄 미리 보기(&V)";
|
||||
//
|
||||
// printSetupToolStripMenuItem
|
||||
//
|
||||
this.printSetupToolStripMenuItem.Name = "printSetupToolStripMenuItem";
|
||||
this.printSetupToolStripMenuItem.Size = new System.Drawing.Size(198, 22);
|
||||
this.printSetupToolStripMenuItem.Text = "인쇄 설정";
|
||||
//
|
||||
// toolStripSeparator5
|
||||
//
|
||||
this.toolStripSeparator5.Name = "toolStripSeparator5";
|
||||
this.toolStripSeparator5.Size = new System.Drawing.Size(195, 6);
|
||||
//
|
||||
// exitToolStripMenuItem
|
||||
//
|
||||
this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
|
||||
this.exitToolStripMenuItem.Size = new System.Drawing.Size(198, 22);
|
||||
this.exitToolStripMenuItem.Text = "끝내기(&X)";
|
||||
this.exitToolStripMenuItem.Click += new System.EventHandler(this.ExitToolsStripMenuItem_Click);
|
||||
//
|
||||
// editMenu
|
||||
//
|
||||
this.editMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.undoToolStripMenuItem,
|
||||
this.redoToolStripMenuItem,
|
||||
this.toolStripSeparator6,
|
||||
this.cutToolStripMenuItem,
|
||||
this.copyToolStripMenuItem,
|
||||
this.pasteToolStripMenuItem,
|
||||
this.toolStripSeparator7,
|
||||
this.selectAllToolStripMenuItem});
|
||||
this.editMenu.Name = "editMenu";
|
||||
this.editMenu.Size = new System.Drawing.Size(57, 20);
|
||||
this.editMenu.Text = "편집(&E)";
|
||||
//
|
||||
// undoToolStripMenuItem
|
||||
//
|
||||
this.undoToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("undoToolStripMenuItem.Image")));
|
||||
this.undoToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black;
|
||||
this.undoToolStripMenuItem.Name = "undoToolStripMenuItem";
|
||||
this.undoToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Z)));
|
||||
this.undoToolStripMenuItem.Size = new System.Drawing.Size(184, 22);
|
||||
this.undoToolStripMenuItem.Text = "실행 취소(&U)";
|
||||
//
|
||||
// redoToolStripMenuItem
|
||||
//
|
||||
this.redoToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("redoToolStripMenuItem.Image")));
|
||||
this.redoToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black;
|
||||
this.redoToolStripMenuItem.Name = "redoToolStripMenuItem";
|
||||
this.redoToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Y)));
|
||||
this.redoToolStripMenuItem.Size = new System.Drawing.Size(184, 22);
|
||||
this.redoToolStripMenuItem.Text = "다시 실행(&R)";
|
||||
//
|
||||
// toolStripSeparator6
|
||||
//
|
||||
this.toolStripSeparator6.Name = "toolStripSeparator6";
|
||||
this.toolStripSeparator6.Size = new System.Drawing.Size(181, 6);
|
||||
//
|
||||
// cutToolStripMenuItem
|
||||
//
|
||||
this.cutToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("cutToolStripMenuItem.Image")));
|
||||
this.cutToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black;
|
||||
this.cutToolStripMenuItem.Name = "cutToolStripMenuItem";
|
||||
this.cutToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.X)));
|
||||
this.cutToolStripMenuItem.Size = new System.Drawing.Size(184, 22);
|
||||
this.cutToolStripMenuItem.Text = "잘라내기(&T)";
|
||||
this.cutToolStripMenuItem.Click += new System.EventHandler(this.CutToolStripMenuItem_Click);
|
||||
//
|
||||
// copyToolStripMenuItem
|
||||
//
|
||||
this.copyToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("copyToolStripMenuItem.Image")));
|
||||
this.copyToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black;
|
||||
this.copyToolStripMenuItem.Name = "copyToolStripMenuItem";
|
||||
this.copyToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C)));
|
||||
this.copyToolStripMenuItem.Size = new System.Drawing.Size(184, 22);
|
||||
this.copyToolStripMenuItem.Text = "복사(&C)";
|
||||
this.copyToolStripMenuItem.Click += new System.EventHandler(this.CopyToolStripMenuItem_Click);
|
||||
//
|
||||
// pasteToolStripMenuItem
|
||||
//
|
||||
this.pasteToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("pasteToolStripMenuItem.Image")));
|
||||
this.pasteToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black;
|
||||
this.pasteToolStripMenuItem.Name = "pasteToolStripMenuItem";
|
||||
this.pasteToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.V)));
|
||||
this.pasteToolStripMenuItem.Size = new System.Drawing.Size(184, 22);
|
||||
this.pasteToolStripMenuItem.Text = "붙여넣기(&P)";
|
||||
this.pasteToolStripMenuItem.Click += new System.EventHandler(this.PasteToolStripMenuItem_Click);
|
||||
//
|
||||
// toolStripSeparator7
|
||||
//
|
||||
this.toolStripSeparator7.Name = "toolStripSeparator7";
|
||||
this.toolStripSeparator7.Size = new System.Drawing.Size(181, 6);
|
||||
//
|
||||
// selectAllToolStripMenuItem
|
||||
//
|
||||
this.selectAllToolStripMenuItem.Name = "selectAllToolStripMenuItem";
|
||||
this.selectAllToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.A)));
|
||||
this.selectAllToolStripMenuItem.Size = new System.Drawing.Size(184, 22);
|
||||
this.selectAllToolStripMenuItem.Text = "모두 선택(&A)";
|
||||
//
|
||||
// viewMenu
|
||||
//
|
||||
this.viewMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.toolBarToolStripMenuItem,
|
||||
this.statusBarToolStripMenuItem});
|
||||
this.viewMenu.Name = "viewMenu";
|
||||
this.viewMenu.Size = new System.Drawing.Size(59, 20);
|
||||
this.viewMenu.Text = "보기(&V)";
|
||||
//
|
||||
// toolBarToolStripMenuItem
|
||||
//
|
||||
this.toolBarToolStripMenuItem.Checked = true;
|
||||
this.toolBarToolStripMenuItem.CheckOnClick = true;
|
||||
this.toolBarToolStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.toolBarToolStripMenuItem.Name = "toolBarToolStripMenuItem";
|
||||
this.toolBarToolStripMenuItem.Size = new System.Drawing.Size(153, 22);
|
||||
this.toolBarToolStripMenuItem.Text = "도구 모음(&T)";
|
||||
this.toolBarToolStripMenuItem.Click += new System.EventHandler(this.ToolBarToolStripMenuItem_Click);
|
||||
//
|
||||
// statusBarToolStripMenuItem
|
||||
//
|
||||
this.statusBarToolStripMenuItem.Checked = true;
|
||||
this.statusBarToolStripMenuItem.CheckOnClick = true;
|
||||
this.statusBarToolStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.statusBarToolStripMenuItem.Name = "statusBarToolStripMenuItem";
|
||||
this.statusBarToolStripMenuItem.Size = new System.Drawing.Size(153, 22);
|
||||
this.statusBarToolStripMenuItem.Text = "상태 표시줄(&S)";
|
||||
this.statusBarToolStripMenuItem.Click += new System.EventHandler(this.StatusBarToolStripMenuItem_Click);
|
||||
//
|
||||
// toolsMenu
|
||||
//
|
||||
this.toolsMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.optionsToolStripMenuItem});
|
||||
this.toolsMenu.Name = "toolsMenu";
|
||||
this.toolsMenu.Size = new System.Drawing.Size(57, 20);
|
||||
this.toolsMenu.Text = "도구(&T)";
|
||||
//
|
||||
// optionsToolStripMenuItem
|
||||
//
|
||||
this.optionsToolStripMenuItem.Name = "optionsToolStripMenuItem";
|
||||
this.optionsToolStripMenuItem.Size = new System.Drawing.Size(115, 22);
|
||||
this.optionsToolStripMenuItem.Text = "옵션(&O)";
|
||||
//
|
||||
// windowsMenu
|
||||
//
|
||||
this.windowsMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.newWindowToolStripMenuItem,
|
||||
this.cascadeToolStripMenuItem,
|
||||
this.tileVerticalToolStripMenuItem,
|
||||
this.tileHorizontalToolStripMenuItem,
|
||||
this.closeAllToolStripMenuItem,
|
||||
this.arrangeIconsToolStripMenuItem});
|
||||
this.windowsMenu.Name = "windowsMenu";
|
||||
this.windowsMenu.Size = new System.Drawing.Size(50, 20);
|
||||
this.windowsMenu.Text = "창(&W)";
|
||||
//
|
||||
// newWindowToolStripMenuItem
|
||||
//
|
||||
this.newWindowToolStripMenuItem.Name = "newWindowToolStripMenuItem";
|
||||
this.newWindowToolStripMenuItem.Size = new System.Drawing.Size(195, 22);
|
||||
this.newWindowToolStripMenuItem.Text = "새 창(&N)";
|
||||
this.newWindowToolStripMenuItem.Click += new System.EventHandler(this.ShowNewForm);
|
||||
//
|
||||
// cascadeToolStripMenuItem
|
||||
//
|
||||
this.cascadeToolStripMenuItem.Name = "cascadeToolStripMenuItem";
|
||||
this.cascadeToolStripMenuItem.Size = new System.Drawing.Size(195, 22);
|
||||
this.cascadeToolStripMenuItem.Text = "계단식 배열(&C)";
|
||||
this.cascadeToolStripMenuItem.Click += new System.EventHandler(this.CascadeToolStripMenuItem_Click);
|
||||
//
|
||||
// tileVerticalToolStripMenuItem
|
||||
//
|
||||
this.tileVerticalToolStripMenuItem.Name = "tileVerticalToolStripMenuItem";
|
||||
this.tileVerticalToolStripMenuItem.Size = new System.Drawing.Size(195, 22);
|
||||
this.tileVerticalToolStripMenuItem.Text = "세로 바둑판식 배열(&V)";
|
||||
this.tileVerticalToolStripMenuItem.Click += new System.EventHandler(this.TileVerticalToolStripMenuItem_Click);
|
||||
//
|
||||
// tileHorizontalToolStripMenuItem
|
||||
//
|
||||
this.tileHorizontalToolStripMenuItem.Name = "tileHorizontalToolStripMenuItem";
|
||||
this.tileHorizontalToolStripMenuItem.Size = new System.Drawing.Size(195, 22);
|
||||
this.tileHorizontalToolStripMenuItem.Text = "가로 바둑판식 배열(&H)";
|
||||
this.tileHorizontalToolStripMenuItem.Click += new System.EventHandler(this.TileHorizontalToolStripMenuItem_Click);
|
||||
//
|
||||
// closeAllToolStripMenuItem
|
||||
//
|
||||
this.closeAllToolStripMenuItem.Name = "closeAllToolStripMenuItem";
|
||||
this.closeAllToolStripMenuItem.Size = new System.Drawing.Size(195, 22);
|
||||
this.closeAllToolStripMenuItem.Text = "모두 닫기(&L)";
|
||||
this.closeAllToolStripMenuItem.Click += new System.EventHandler(this.CloseAllToolStripMenuItem_Click);
|
||||
//
|
||||
// arrangeIconsToolStripMenuItem
|
||||
//
|
||||
this.arrangeIconsToolStripMenuItem.Name = "arrangeIconsToolStripMenuItem";
|
||||
this.arrangeIconsToolStripMenuItem.Size = new System.Drawing.Size(195, 22);
|
||||
this.arrangeIconsToolStripMenuItem.Text = "아이콘 정렬(&A)";
|
||||
this.arrangeIconsToolStripMenuItem.Click += new System.EventHandler(this.ArrangeIconsToolStripMenuItem_Click);
|
||||
//
|
||||
// helpMenu
|
||||
//
|
||||
this.helpMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.contentsToolStripMenuItem,
|
||||
this.indexToolStripMenuItem,
|
||||
this.searchToolStripMenuItem,
|
||||
this.toolStripSeparator8,
|
||||
this.aboutToolStripMenuItem});
|
||||
this.helpMenu.Name = "helpMenu";
|
||||
this.helpMenu.Size = new System.Drawing.Size(72, 20);
|
||||
this.helpMenu.Text = "도움말(&H)";
|
||||
//
|
||||
// contentsToolStripMenuItem
|
||||
//
|
||||
this.contentsToolStripMenuItem.Name = "contentsToolStripMenuItem";
|
||||
this.contentsToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.F1)));
|
||||
this.contentsToolStripMenuItem.Size = new System.Drawing.Size(161, 22);
|
||||
this.contentsToolStripMenuItem.Text = "목차(&C)";
|
||||
//
|
||||
// indexToolStripMenuItem
|
||||
//
|
||||
this.indexToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("indexToolStripMenuItem.Image")));
|
||||
this.indexToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black;
|
||||
this.indexToolStripMenuItem.Name = "indexToolStripMenuItem";
|
||||
this.indexToolStripMenuItem.Size = new System.Drawing.Size(161, 22);
|
||||
this.indexToolStripMenuItem.Text = "색인(&I)";
|
||||
//
|
||||
// searchToolStripMenuItem
|
||||
//
|
||||
this.searchToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("searchToolStripMenuItem.Image")));
|
||||
this.searchToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black;
|
||||
this.searchToolStripMenuItem.Name = "searchToolStripMenuItem";
|
||||
this.searchToolStripMenuItem.Size = new System.Drawing.Size(161, 22);
|
||||
this.searchToolStripMenuItem.Text = "검색(&S)";
|
||||
//
|
||||
// toolStripSeparator8
|
||||
//
|
||||
this.toolStripSeparator8.Name = "toolStripSeparator8";
|
||||
this.toolStripSeparator8.Size = new System.Drawing.Size(158, 6);
|
||||
//
|
||||
// aboutToolStripMenuItem
|
||||
//
|
||||
this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem";
|
||||
this.aboutToolStripMenuItem.Size = new System.Drawing.Size(161, 22);
|
||||
this.aboutToolStripMenuItem.Text = "정보(&A)... ...";
|
||||
//
|
||||
// toolStrip
|
||||
//
|
||||
this.toolStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.newToolStripButton,
|
||||
this.openToolStripButton,
|
||||
this.toolStripSeparator1,
|
||||
this.saveToolStripButton,
|
||||
this.printToolStripButton});
|
||||
this.toolStrip.Location = new System.Drawing.Point(0, 24);
|
||||
this.toolStrip.Name = "toolStrip";
|
||||
this.toolStrip.Size = new System.Drawing.Size(709, 25);
|
||||
this.toolStrip.TabIndex = 1;
|
||||
this.toolStrip.Text = "ToolStrip";
|
||||
//
|
||||
// newToolStripButton
|
||||
//
|
||||
this.newToolStripButton.Image = ((System.Drawing.Image)(resources.GetObject("newToolStripButton.Image")));
|
||||
this.newToolStripButton.ImageTransparentColor = System.Drawing.Color.Black;
|
||||
this.newToolStripButton.Name = "newToolStripButton";
|
||||
this.newToolStripButton.Size = new System.Drawing.Size(95, 22);
|
||||
this.newToolStripButton.Text = "업무일지(일)";
|
||||
this.newToolStripButton.Click += new System.EventHandler(this.ShowNewForm);
|
||||
//
|
||||
// openToolStripButton
|
||||
//
|
||||
this.openToolStripButton.Image = ((System.Drawing.Image)(resources.GetObject("openToolStripButton.Image")));
|
||||
this.openToolStripButton.ImageTransparentColor = System.Drawing.Color.Black;
|
||||
this.openToolStripButton.Name = "openToolStripButton";
|
||||
this.openToolStripButton.Size = new System.Drawing.Size(95, 22);
|
||||
this.openToolStripButton.Text = "업무일지(주)";
|
||||
this.openToolStripButton.Click += new System.EventHandler(this.OpenFile);
|
||||
//
|
||||
// saveToolStripButton
|
||||
//
|
||||
this.saveToolStripButton.Image = ((System.Drawing.Image)(resources.GetObject("saveToolStripButton.Image")));
|
||||
this.saveToolStripButton.ImageTransparentColor = System.Drawing.Color.Black;
|
||||
this.saveToolStripButton.Name = "saveToolStripButton";
|
||||
this.saveToolStripButton.Size = new System.Drawing.Size(83, 22);
|
||||
this.saveToolStripButton.Text = "스케쥴(일)";
|
||||
this.saveToolStripButton.Click += new System.EventHandler(this.saveToolStripButton_Click);
|
||||
//
|
||||
// printToolStripButton
|
||||
//
|
||||
this.printToolStripButton.Image = ((System.Drawing.Image)(resources.GetObject("printToolStripButton.Image")));
|
||||
this.printToolStripButton.ImageTransparentColor = System.Drawing.Color.Black;
|
||||
this.printToolStripButton.Name = "printToolStripButton";
|
||||
this.printToolStripButton.Size = new System.Drawing.Size(83, 22);
|
||||
this.printToolStripButton.Text = "스케쥴(주)";
|
||||
this.printToolStripButton.Click += new System.EventHandler(this.printToolStripButton_Click);
|
||||
//
|
||||
// statusStrip
|
||||
//
|
||||
this.statusStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.toolStripStatusLabel});
|
||||
this.statusStrip.Location = new System.Drawing.Point(0, 536);
|
||||
this.statusStrip.Name = "statusStrip";
|
||||
this.statusStrip.Padding = new System.Windows.Forms.Padding(1, 0, 16, 0);
|
||||
this.statusStrip.Size = new System.Drawing.Size(709, 22);
|
||||
this.statusStrip.TabIndex = 2;
|
||||
this.statusStrip.Text = "StatusStrip";
|
||||
//
|
||||
// toolStripStatusLabel
|
||||
//
|
||||
this.toolStripStatusLabel.Name = "toolStripStatusLabel";
|
||||
this.toolStripStatusLabel.Size = new System.Drawing.Size(31, 17);
|
||||
this.toolStripStatusLabel.Text = "상태";
|
||||
//
|
||||
// toolStripSeparator1
|
||||
//
|
||||
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
||||
this.toolStripSeparator1.Size = new System.Drawing.Size(6, 25);
|
||||
//
|
||||
// MDIParent1
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(709, 558);
|
||||
this.Controls.Add(this.statusStrip);
|
||||
this.Controls.Add(this.toolStrip);
|
||||
this.Controls.Add(this.menuStrip);
|
||||
this.IsMdiContainer = true;
|
||||
this.MainMenuStrip = this.menuStrip;
|
||||
this.Name = "MDIParent1";
|
||||
this.Text = "MDIParent1";
|
||||
this.menuStrip.ResumeLayout(false);
|
||||
this.menuStrip.PerformLayout();
|
||||
this.toolStrip.ResumeLayout(false);
|
||||
this.toolStrip.PerformLayout();
|
||||
this.statusStrip.ResumeLayout(false);
|
||||
this.statusStrip.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
private System.Windows.Forms.MenuStrip menuStrip;
|
||||
private System.Windows.Forms.ToolStrip toolStrip;
|
||||
private System.Windows.Forms.StatusStrip statusStrip;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator4;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator5;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator6;
|
||||
private System.Windows.Forms.ToolStripMenuItem printSetupToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator7;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator8;
|
||||
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel;
|
||||
private System.Windows.Forms.ToolStripMenuItem aboutToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem tileHorizontalToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem fileMenu;
|
||||
private System.Windows.Forms.ToolStripMenuItem newToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem openToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem saveToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem saveAsToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem printToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem printPreviewToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem editMenu;
|
||||
private System.Windows.Forms.ToolStripMenuItem undoToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem redoToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem cutToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem copyToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem pasteToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem selectAllToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem viewMenu;
|
||||
private System.Windows.Forms.ToolStripMenuItem toolBarToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem statusBarToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem toolsMenu;
|
||||
private System.Windows.Forms.ToolStripMenuItem optionsToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem windowsMenu;
|
||||
private System.Windows.Forms.ToolStripMenuItem newWindowToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem cascadeToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem tileVerticalToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem closeAllToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem arrangeIconsToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem helpMenu;
|
||||
private System.Windows.Forms.ToolStripMenuItem contentsToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem indexToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem searchToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripButton newToolStripButton;
|
||||
private System.Windows.Forms.ToolStripButton openToolStripButton;
|
||||
private System.Windows.Forms.ToolStripButton saveToolStripButton;
|
||||
private System.Windows.Forms.ToolStripButton printToolStripButton;
|
||||
private System.Windows.Forms.ToolTip toolTip;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
120
JobReportMailService/MDIParent1.cs
Normal file
120
JobReportMailService/MDIParent1.cs
Normal file
@@ -0,0 +1,120 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
public partial class MDIParent1 : Form
|
||||
{
|
||||
private int childFormNumber = 0;
|
||||
|
||||
public MDIParent1()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void ShowNewForm(object sender, EventArgs e)
|
||||
{
|
||||
Form childForm = new fJobReportDay();
|
||||
childForm.MdiParent = this;
|
||||
//childForm.Text = "창 " + childFormNumber++;
|
||||
childForm.Show();
|
||||
}
|
||||
|
||||
private void OpenFile(object sender, EventArgs e)
|
||||
{
|
||||
Form childForm = new fJobReportWeek();
|
||||
childForm.MdiParent = this;
|
||||
//childForm.Text = "창 " + childFormNumber++;
|
||||
childForm.Show();
|
||||
}
|
||||
|
||||
private void SaveAsToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
SaveFileDialog saveFileDialog = new SaveFileDialog();
|
||||
saveFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
|
||||
saveFileDialog.Filter = "텍스트 파일 (*.txt)|*.txt|모든 파일 (*.*)|*.*";
|
||||
if (saveFileDialog.ShowDialog(this) == DialogResult.OK)
|
||||
{
|
||||
string FileName = saveFileDialog.FileName;
|
||||
}
|
||||
}
|
||||
|
||||
private void ExitToolsStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void CutToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
|
||||
private void CopyToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
|
||||
private void PasteToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
|
||||
private void ToolBarToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
toolStrip.Visible = toolBarToolStripMenuItem.Checked;
|
||||
}
|
||||
|
||||
private void StatusBarToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
statusStrip.Visible = statusBarToolStripMenuItem.Checked;
|
||||
}
|
||||
|
||||
private void CascadeToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
LayoutMdi(MdiLayout.Cascade);
|
||||
}
|
||||
|
||||
private void TileVerticalToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
LayoutMdi(MdiLayout.TileVertical);
|
||||
}
|
||||
|
||||
private void TileHorizontalToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
LayoutMdi(MdiLayout.TileHorizontal);
|
||||
}
|
||||
|
||||
private void ArrangeIconsToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
LayoutMdi(MdiLayout.ArrangeIcons);
|
||||
}
|
||||
|
||||
private void CloseAllToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
foreach (Form childForm in MdiChildren)
|
||||
{
|
||||
childForm.Close();
|
||||
}
|
||||
}
|
||||
|
||||
private void saveToolStripButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
Form childForm = new fScheduleDay();
|
||||
childForm.MdiParent = this;
|
||||
//childForm.Text = "창 " + childFormNumber++;
|
||||
childForm.Show();
|
||||
}
|
||||
|
||||
private void printToolStripButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
Form childForm = new fScheduleDayWeek();
|
||||
childForm.MdiParent = this;
|
||||
//childForm.Text = "창 " + childFormNumber++;
|
||||
childForm.Show();
|
||||
}
|
||||
}
|
||||
}
|
||||
372
JobReportMailService/MDIParent1.resx
Normal file
372
JobReportMailService/MDIParent1.resx
Normal file
@@ -0,0 +1,372 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="menuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="newToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAELSURBVDhPrZDJasJQGIXzUvoO9TX0jcQuSulCLUUECwot
|
||||
KtrSAbQWRDTg0CLBCY1xqmkcYo7c8ItJYy9Z+MHhLu453+IXzkbypY6/SeRriKXLiKaKZqh6Gjb4j+v4
|
||||
M7y+AF9y/yRS3UkomkbmvcaXxLMVqjsJhh/N8SE0sXP38El1J1t9Z0oOIprYiSQLVLdjGAZUbYOhopoC
|
||||
z4X/tOAm8UoTO+uNjslcgzSY8wVXsTxNjug7Awt1jb68RFOa8AWXtxmaHdFWW8jTX7R7M1RbMl/APq2w
|
||||
w81+VugMF6i3FZTEgXuB9XBfnSkqjRHeyl33AuvhxO8xitU+ch+SOwF7eeEK2Keb0OQcCMIe3/X1lqrb
|
||||
NIsAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="openToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJYSURBVDhPvZFbSBNQHIf30ENPFmlRCEWWhD0MA0Oqh5Ck
|
||||
m6KUZoWRJpS3LhiKbVPbvE53c+pKh7lN19RptTIMK4RCkQgtdZSYmgVFpZgZKnn7GptokkEP0R9+L+ec
|
||||
7zs/zhH8l8kpMSPTWriSbyJPZ0WiNDK/9XcTnawjLF7lhC6IKsh0yFKyDUQllyCoN2tYLo218j/ekiAp
|
||||
JTxRRWh8oUvQ22VkcrTOmR8jFqaHDFhNKmzm7GUlYQlqQuO0BMcWI6irVDMxUr0Env1UyrQ9ieqKfKrK
|
||||
cjGUZKIvzOC6UkyxPHWptMaoYOKLcQGec8D0isEeu2x+E9wsl/P9o34BbqpXOPPAWkCDRc6dqlyshiws
|
||||
ehkm3VVuaNMoU4vRKUQuWZU+l7F3Rc7aAy1SbNVqZgdkMJi9NG8da/0S6EmGV4l01kZwKSYEgUGXxbe+
|
||||
fHiv5G6NiraHStehX6u/jIL2cGZag5h8FMCbSiHnTx9wCcq1Ur6+ljHYmo7NomSuXwrdcS6wM8YBnmCm
|
||||
LYTJ5v2MNe5huH4HsnhvTgZ6uN6iVJ3OcJeIW2YFHU8dTXqSHIKz0HGKuWdHmHpyiPGmvYzY/Phc40N7
|
||||
zmoig7zw2+bmEugKxHQ3Z3DbXAB9GfDCUff5MaZaghl/HMBogz9DViEfjFuxK92Rxm7Bd7vn4k8U5aVS
|
||||
Z8rHfi+Bdo1gIW3KFTTLV3I/cxW1aWsxpHpy7fImIg9vxt9346JAk52CRnqOPFE0kovHnQ9zJiKQowd3
|
||||
sW+3kJ1Cb3y8PNm4wYN1a9xY7z5f/d+MQPATMS7uX9kMtOAAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="saveToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIvSURBVDhPrZLdS9NRGMd//0L33QRddFtTYzgXq8GvXENZ
|
||||
Ngwrwl5+kWZpukwTFSvTqPkG2QqXTlqtJuGkIl/AFCkRZSpZmrmiJQ41xSaCwdfznP3yuIouogeem8P5
|
||||
fM55XqT/Es+fhUHpa11Ci3cRD93zaGoM4a5jGnW1X2C/FcD18kmUloyjsOAt8nJHcP6cHyouSQR2dQK1
|
||||
NSv4WyyvrMKU2oVDqU95qrgkeZ8scEFlxTf16u9BcGh+GbssL6DRKLAe9AiB+8EcF5SWfFWvR8dP+GNw
|
||||
ATFmHwouTeGApVkInA0zXHDR9kFFRGyEhydC2CZ7kZM9huQkpxDU3w5yQdbZERWLxK9wnz+IzQY3FGUA
|
||||
ZrNDCGqqP3OBcmpARf8Md/Z/wqb4Rhw+8gqJiXVCcKNyCh3tYKMEjh1/A+vRXt5tahjVTN+mlyNwN1Ks
|
||||
LyHLdiG4UjaBNh/YDgDNrh9s7t9Rfm2WN5UaRjVnZvjX4f3JrTAaK4TgcuEYPI+A+85VtjhhmNKyo9KS
|
||||
bkPamaIInMTgfR4YDGVCYMsbZTBQXRXmLxNE5zE6GYPvZzA6OQsl9yr2mFo4rNvtgl5fJAS0lo47WP82
|
||||
CQg+nX8T7wJzCEwv4kKxHbEGF4ObEJtwD7r4fCHIzBhidS9xeKvRgy07ZDxu64GvvQ8d3f3ofT2IvWYr
|
||||
NPoGxDF4u7YeWm1OtODkiR6+nrRhtCQ0ZxoVdZsaRjXTq5QE74zLEoJ/D0laA2xoOmtG+TV7AAAAAElF
|
||||
TkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="printToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIqSURBVDhPrZL7T1JxAMVZP/b/tLa2Wm21mail1YZlRjid
|
||||
k6JhTApClhGmktrDWlKjK3OBDrLAMWJaY9MZZJbo0umWQIEFXRPQMB6ne788HFpbW322s93d3fM598X5
|
||||
7xjtUxh0vId5dOaPMY14kL18O6zgrcePrWz8TMIbWMGgbQIlZy6DW31pu4Qts0ml0gjRETjdH0iGHC4Y
|
||||
LONwz/hQJVITQbZSiN7qxsfPdHYzA7u8Go1jdnEZJruLLP92XWsaB5sks+4LhgvWbc5puDxeVDaocOSs
|
||||
HBrtM9zps21KFJ1PSHnENZ9fzS0HwzHML4XRa3CglC+Dsqsfj0xjKGVEpNzUpof6/hAoyxs8MDqhf/4a
|
||||
tyk7rt4yQtyiBb+xA+U1ChSfluLkuevo1lkhUWlRnHuMm49fIBKLk+WtJJIprMcT5E6+0uv49CUKeTuF
|
||||
OmkXcweyjEB1zwzLq3d46nCDMr/E3b5hqHsGIGvXQdTcA8HFDvAaWnBUIEfRKQnOM+cqhdew/7goI1B2
|
||||
D8AfCGU3C4msbcAbXMVOcEh2UBzwxW0oqZZi1+GajKC504DpuSUw7ywPe/wtmsCcfw1jszQpW7OCY7UK
|
||||
7KsQbgqUGgqaXhN8oTjoWBqB72ksLqcwsfADw5NR9DtXSDGXQzwxKecF9ZJWyG7oMDrpJ9/2b1IgYJGo
|
||||
HqKiTokywRVwmd+0qKoJB3mNOHDiAvaWC7GnrB67ubX5YkH53+BwfgHgHTGbZU7qDAAAAABJRU5ErkJg
|
||||
gg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="printPreviewToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHXSURBVDhPrZDdS1NhAIf3z4RXXkRqEd5IoCaKROWc6YVN
|
||||
XMQkMFToZjcpQaatoVuiq+UkTTrFWR/OyuWmNaGoYDLtIkHUKfOjSJxuc0/7OHObx4+bHvjxvhe/33MO
|
||||
r+K/IDpn2B9hzMOQ/RtW21Q8UvVgYoPD6B3+SF5J3dGSF45pqS6ny2pndNJztGT43Q+pLsfw5G18nIw0
|
||||
yeTpmy9SPUUouMX45DjGRxZu39NzR99Ffpn6YEG/6JZmCba3txBHRnjvnMDnX2V+2Y9VEFFrm6jR3pJL
|
||||
zIJLmiZwTLiwO5zxeygMfwO7LK2HMZifoarVyAU9Q2PxcpJus4XFFf/eePl3iNnFIDbXDJXV1XJB98Co
|
||||
NE3QaexhYWUtMd4IR8c7uGcDPHzu5mJFhVwQe+l0BNGGaHfg24h+eSnI558BXn/dpKFFR2VVFfrWpkxJ
|
||||
uiASifBrbo67nQb6Bl/x0uXFJLhpaNahVF1m8H4NoulGpiRdsBMMs/4ngMfr5YHRiOa6lqt19VxRXsBw
|
||||
8xy+x0XsfqrF0tGYkiQFsfOwtLa1c60sh++6XBZMBazZlDRrylOC3PPqY1NYcglN6Sk+tJyhvjgbVelp
|
||||
+YMeR+wv8k9mUXz2RHSsUPwDd10kHqNu+GEAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="undoToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGmSURBVDhPvZHdS5MBFMb3p3TX6E7c1BTHUIc2xUbEqGUz
|
||||
LaV5s6ViRvhuul0M9lFshFjmjV/bKLVajRAid6N3KYg3FkHDiWvNmXt3++udDiMd4nthD5ybc57nx+Ec
|
||||
xbkqGM0TfCcysSgyuyQSlioSFymOT5d/QaRQnjmR4VAO+1SOlx8PASUhnkiKmZXDQSH05E2erkCGBtsK
|
||||
NV0xKu9EaRz8xlisBKDQGJ7aYeKziD0k8vRtHrN3G51tGc39RdS3X9Fgfc/l9lmM7gzTkq8Y/au+sW16
|
||||
nu/zYDzHTe8e1XejVHUsSOHwgdkwFKPsxiS6h5s4pnMnAZ3+JM0jaW759hkYT6NsDqBqCx0ZL2gFND1x
|
||||
dANfcYRLAK45t6jo+86VkdTBJh3eHwiTv/4FWOLohSTOUoC6wQTa3g2qLcuo2j9QZnqNsuXZkbHCPE+t
|
||||
ZQmD6ye20cRJwHEdv/RFfUBaf5Pu4C4+6b3F9tlVde8T191ZjMIXeWGzfxetdZWrriytj9a5ZHghD9D0
|
||||
OCGFf9PUv0a5KSJ/dZP01vr+DdRtc/LD/0EKxR+XdBDBXAMPDQAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="redoToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGVSURBVDhPzZHdK0NhHMf3p7jBknbBNpqbc+FtttrUrBim
|
||||
LEJeRo0lzMsK2S6M5D3vJjXFJinhZu64WolQu9FaXjrnuf56nrOl5kTIhW99L56e7/dzfuf3yP5MO+cE
|
||||
/jOCLeqlY4KJgADnioDk9ddiZebFI4KBdQGD2wLcOwJ6VimEOhn7XKw8e0hQ4nxAXt0BNLYQuNYwbD4e
|
||||
9gUB9sUEZPOCgOuMSIEbpwTm0SeoLcsobAtAVbMrWm3dRz2FNM7yaKGQJZoraAqL0yarCbk2BBR13yKz
|
||||
bALGvkPxUlXjR65lC9nGeVSMvYqTNM/xUFqD0glcfga4Q4bWizSu/z2grN6GXDcJx0IcFg8P3VAcioo1
|
||||
KWCYAnQDjzTsSwFMBQmY2Ze1QzGou+4h109LAR0zUZS748ip3E0BsIVp6D8rrSEoTOtiOb14XArw7BE0
|
||||
+J5R5Lihe5hMCUgW9pnM/Zcwjb4g33byvcJHZdFtG3ojMIy8gGu/Qq33+ecgBtE7r2F08yjtjf5uEiad
|
||||
K4Yq+mzJ47+WTPYGxTcHtykTmrAAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="cutToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGhSURBVDhPYyAG/AcCKJMwWLlp///ZyzbBNYA033nw9H91
|
||||
6xTiDJk8d83/nmmL/1e1zgRr+Pb9x//Vm/b8T8mpIt4Vk2av/D95zmqQ5f+fvXjzPy2/5r+YEB8J3ti4
|
||||
73/X5IX/T5y5+P/gsXP/w+KzSTNg4aod/7unLPrfO23h//LGvv8+QdHEawaBzokL/5c09P1Pzqv7Hxqb
|
||||
+d/NO4g0A0AgIa/lf1hC4f+QtLb//gktxBsQ3fHuf0Tn6/8hzQ/+e5ed+u9Tfva/X9Xl/z6lp/+7Ze/E
|
||||
b1BE+6v/kT3v/gc33PlvHT3vv2lQ33+3vH3//auv/ncFaraKmY/fgLD25//D2p7+d0zbANZsGtT737vk
|
||||
1H//yqv/nTI2/TcJ7sdvQGjLo/9Bjff+O6Vu+m8c0A02IABou2/F2f8WEdP+aztk4TcguOnef/+yS//t
|
||||
ktf8N/SBBJx3yfH/dkmr/mvaJP+XkdfEb4Bf5cX/9kmrgbZ3/Vc3CwcnHvuUNf+1rBP+q5tH/Df2b8dv
|
||||
gHPGlv9mIZP+a1jF/jf0qsGvmDqAgQEAkYXpGFtqYpEAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="copyToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHgSURBVDhPvZHdS1pxGMfPn7IKieq63Y/RKw0aFF1ssEEv
|
||||
dOVFXXUVFQ3Wlg4H2dSo7A21jnUiKiPFylwttMy9GXMNNgUrzinLrGN98zxaVgu7GOwLn5vf+X0/D8/v
|
||||
MP8cbuEbJFiblzDMuDDAfcQbLYfklfSRyrejn3CirnUID0tr7peYrd5kLZHY2Tm6hudgcXjxrEF5v8Qw
|
||||
66aixQew64DHL+C9fhrskgDTAg+jnUffLA/V+B7xojNwUzjAOUkg5eQ0BuEgikAoTILbaR/ZQX6tg0jW
|
||||
GUZnstPHXscpFDMCWtg/aOz3Y3h+l86vp0ETArciIK9qgiCBOr6vtPdRRMQOH8F2YB9f/LvQTQWp1MHG
|
||||
CM/WPl4qgsitmkROxSiyywcTAmnf46h4NVmu86Fe/RnvjNskuIxwKGLr9zEcmwfQsGuQPelJCYRwFF9/
|
||||
huD+HoDT8wu2Tz/Q2pv4vc0jYcjVQTx/68PTtg1Cw65CVtqdEuSXVP9Fo2qDBGJ8vRAvYtN/BKtLgHlx
|
||||
Dx9GncgqUqUe8q7UtK+Q4PrkS7pNy8gsUKQXVDbZETk5g27cBa15DZqxVZosldWGJWQ8fp1eUCS3xF/b
|
||||
SGSX6yEr0yKruAuZhcp4uQMPHr1KL/hPYZgL78LfVeQiZg4AAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="pasteToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJXSURBVDhPtZJdSFNhHMYPdGE3RR/UVVcF0U0UEVQXGYWt
|
||||
sNlikdii5SK2SckmS9tGas0cunRzadoW+THUprMSpUnREBqOvmdsRh8SOSPXsnY2N+eyeDrn3UaujCDo
|
||||
gYcD73mf3/+Dl/ovcvZr4bihQW+LCrL8fUgez6+edgPmuqX2CIL+DkT8V+EbqUGJmANDpQKXdWoYK4uJ
|
||||
k9GE2FCMtiEe6kYs2AlLkwLRyTaUSHh4MaTE2VNcKEWb4Xcew6R9NWTC/b8D2HA8ZEWj9ijcrhrQ7+sx
|
||||
MaLGW9dx9Jl5kAgy0VG6Ck8NFAoO/zJSd1ttAkBfh65UiHJFHtSFuThTwIdCzINcxIVUkIU62RoCyMvO
|
||||
TAd0NuswQ3dhJmBCdLwKgeeF8LYtJ/a0LoO7aREeGTNImHXWto3pAItJi+lAC6bHKhB9eRKRZwdB9y+G
|
||||
vtWOKlMvzl3qglJngVxjhkRlhLCoOh3Q3KDBlM+IyIgYU4+5CN/fhI+3VpBwSvHZbwiGYhibCCJXeh45
|
||||
+eqfELO+DPSrCoQfchAeXI/QwEr4WilSmVXzTSexyeqAZ9RPwneHvNjDFyUgDdUqfB4+jZBjHejbSxGw
|
||||
ZWD0GkXa/jr7HV/CTOUPQXje+OEafodsgRwcJrxr7wFkbt8Bqu5CMQIPpEx4CT71LMR4+wJ4GynImJnZ
|
||||
tlMdXGE6qLcMoG/QS76st25YC+pieRF5IKktpyxmFja38j3XaxK23XHDan+SDtCXnWBeGA8i/m7k7NxC
|
||||
frDbZmdOVZvPBPAnHWK2zV74m5PX/1UU9QOTNfjZ1V1+MwAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="indexToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAKWSURBVDhPjZJbSNNRHMf3HPRcYu+9Gb32VhAJ9RASlOBb
|
||||
b2aIFop5GXPeyrmp8zLNec01HbmpqJvabjbndHl3JTmGbk7zroUXKD79N5XMFPzCjwMHPp9zzu/8ROdF
|
||||
3eChpGSc7OxBsrIcHG1fLCE4VBMT69TVz6J5P4NUekHRMexyrVOumsBqW+OjOUC/eR5tiwdJtvN80Wm4
|
||||
q3sZh+MnA9YdbNYt+vvW0esXaWqeFm409K/oNNzRGcRi3qKnZ5X2jmXaBLBVN09T4xwqlQe5fIycvKFD
|
||||
wWlYbwiEQYMhSIt2gcZGLzU1s5SXT6NQjJKfP8KLZDMJz42caNhmGNa2zKPTLaB556O+bo6W9gCy1k1i
|
||||
S/eJke0gqQkgL58k/pkRffvgoUDbOoVc4aauwcvb6q9UlnlQlkyh1gVJ0kKVFT4vCOWHevsvHuf5aTN7
|
||||
mPP7EIklNrS6SSRSO7LiYWRFo7wpdFPb7CVRA7phWFzaJqPAxL0n6vBqcO1yJ9FNodKF6GWKEd9yAJNl
|
||||
jLT0PsRiW/jPc5tWUFkI5xgeGfOH19J6J1LNEnHxJkQZWRqKlb0sbQeZXxXeV2JBmmvnYcEGhrFDQSih
|
||||
W4QEtx5UUtE8StPAARHXKxC9LhoSTu4XyojZMcXGwXeszi9EiwPoTwh2fuyH4ZQcE3MrQi8se1yJzP87
|
||||
B5IcO+mZfRSX2fAGF1B1LyLv3D3CwSmcLq9x4RXgKaGZyaUeomPU/09keqaZV4Koy/KNu8njdLkP2PsN
|
||||
xk9+om4XM7MIFV1rXL6pJE9pOXukM8UWUtN6aWib4UasCXGtD61jj2brLkmKGS5FKUhI/cDAaOBswXFU
|
||||
1W6KlE7inrYTcS2Xq5EZ3H9UhUxlY2gyKMAi0R+3BHAuvd7mVQAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="searchToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAALGSURBVDhPldL/T01xHMfx/hczs8VmmC/zg1i7oa6pOXVL
|
||||
Jbrqlm5fbrluSqV7uynpdq/qtoh7C9Ei3eu0fBnKl6yFmSRkWF93VUZ2Q/Z0P2OuxmZe2/ntvB/nfD7v
|
||||
V8Dvya2UEY+hwk2+VcZY28n+Cheph86jKWzm52t/T15VBwdtMs6ubq6+7EMe7sA5VESGnIRkOklirhN1
|
||||
XuPfkQMWGZNDprX/Mg8+PGFgdpScthIsL/JJuaRkg7mcGFMP0YYGEvQn5iN68bs2N3W9VjrGHdyc6qVv
|
||||
pp8Br4eWERdJdjMK+1PW2NpYW6NGyqxkR1atHxFAsVPG/rCcmiE9jrc2nMNmah87ST3TgqZukpiK1yw9
|
||||
G8Hi06GsN6YTlVblB7LL2qlzv8EkW9h7fyuZvWHoHAZymnzHOn4Rk7UBQ3kl8dYUAqsVBJaFE6Ep9wMZ
|
||||
5jbqr8xSWF+P8qyCLXI06lor1Y0urnXdZszzjrfjHpoutBOXp2VBSQjKRJMf0Bpbsbq9HGjyEG9QE1q/
|
||||
G11TMZ03uhD5Ogcfvd8YnZrD1nCeddoINscX+IG9h1rIrHmF9vhnNNYhwnO1vnUeYWTC82t4/P1XBke+
|
||||
4Op+RkRcLMHRBj+QUnSO1NJbJB77RIJlimjjHfaXmhiemPwxPD3nG/5Mz6CXutYetkmRBEk6PyAaJkqy
|
||||
q+QBqsPjKIp6kYw62jtvMDbt+/LoF+4993K5b4Y0fQFh0k6K87P9gIhoWJzeSdTBOyzNNrNMF0uyLosT
|
||||
zW7augewX+ghbV8BkartNFtiabenU2XKmY+IhqnSq9mUYSVYnYpSY0ZKLkTasYtwSUVM5DZsuo2MnVLw
|
||||
7W4CjqNZfyKiYaIkYs9iVeK2xYWJM8cog0kOW8GjgpUM24OYdEWyL2nrfOBfEUBS6HKu61ezJ2QJqtBV
|
||||
/weICGTdskWErF3oGw4I+A4LpgTtu1iCBgAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="toolStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>126, 17</value>
|
||||
</metadata>
|
||||
<data name="newToolStripButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAELSURBVDhPrZDJasJQGIXzUvoO9TX0jcQuSulCLUUECwot
|
||||
KtrSAbQWRDTg0CLBCY1xqmkcYo7c8ItJYy9Z+MHhLu453+IXzkbypY6/SeRriKXLiKaKZqh6Gjb4j+v4
|
||||
M7y+AF9y/yRS3UkomkbmvcaXxLMVqjsJhh/N8SE0sXP38El1J1t9Z0oOIprYiSQLVLdjGAZUbYOhopoC
|
||||
z4X/tOAm8UoTO+uNjslcgzSY8wVXsTxNjug7Awt1jb68RFOa8AWXtxmaHdFWW8jTX7R7M1RbMl/APq2w
|
||||
w81+VugMF6i3FZTEgXuB9XBfnSkqjRHeyl33AuvhxO8xitU+ch+SOwF7eeEK2Keb0OQcCMIe3/X1lqrb
|
||||
NIsAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="openToolStripButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJYSURBVDhPvZFbSBNQHIf30ENPFmlRCEWWhD0MA0Oqh5Ck
|
||||
m6KUZoWRJpS3LhiKbVPbvE53c+pKh7lN19RptTIMK4RCkQgtdZSYmgVFpZgZKnn7GptokkEP0R9+L+ec
|
||||
7zs/zhH8l8kpMSPTWriSbyJPZ0WiNDK/9XcTnawjLF7lhC6IKsh0yFKyDUQllyCoN2tYLo218j/ekiAp
|
||||
JTxRRWh8oUvQ22VkcrTOmR8jFqaHDFhNKmzm7GUlYQlqQuO0BMcWI6irVDMxUr0Env1UyrQ9ieqKfKrK
|
||||
cjGUZKIvzOC6UkyxPHWptMaoYOKLcQGec8D0isEeu2x+E9wsl/P9o34BbqpXOPPAWkCDRc6dqlyshiws
|
||||
ehkm3VVuaNMoU4vRKUQuWZU+l7F3Rc7aAy1SbNVqZgdkMJi9NG8da/0S6EmGV4l01kZwKSYEgUGXxbe+
|
||||
fHiv5G6NiraHStehX6u/jIL2cGZag5h8FMCbSiHnTx9wCcq1Ur6+ljHYmo7NomSuXwrdcS6wM8YBnmCm
|
||||
LYTJ5v2MNe5huH4HsnhvTgZ6uN6iVJ3OcJeIW2YFHU8dTXqSHIKz0HGKuWdHmHpyiPGmvYzY/Phc40N7
|
||||
zmoig7zw2+bmEugKxHQ3Z3DbXAB9GfDCUff5MaZaghl/HMBogz9DViEfjFuxK92Rxm7Bd7vn4k8U5aVS
|
||||
Z8rHfi+Bdo1gIW3KFTTLV3I/cxW1aWsxpHpy7fImIg9vxt9346JAk52CRnqOPFE0kovHnQ9zJiKQowd3
|
||||
sW+3kJ1Cb3y8PNm4wYN1a9xY7z5f/d+MQPATMS7uX9kMtOAAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="saveToolStripButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIvSURBVDhPrZLdS9NRGMd//0L33QRddFtTYzgXq8GvXENZ
|
||||
Ngwrwl5+kWZpukwTFSvTqPkG2QqXTlqtJuGkIl/AFCkRZSpZmrmiJQ41xSaCwdfznP3yuIouogeem8P5
|
||||
fM55XqT/Es+fhUHpa11Ci3cRD93zaGoM4a5jGnW1X2C/FcD18kmUloyjsOAt8nJHcP6cHyouSQR2dQK1
|
||||
NSv4WyyvrMKU2oVDqU95qrgkeZ8scEFlxTf16u9BcGh+GbssL6DRKLAe9AiB+8EcF5SWfFWvR8dP+GNw
|
||||
ATFmHwouTeGApVkInA0zXHDR9kFFRGyEhydC2CZ7kZM9huQkpxDU3w5yQdbZERWLxK9wnz+IzQY3FGUA
|
||||
ZrNDCGqqP3OBcmpARf8Md/Z/wqb4Rhw+8gqJiXVCcKNyCh3tYKMEjh1/A+vRXt5tahjVTN+mlyNwN1Ks
|
||||
LyHLdiG4UjaBNh/YDgDNrh9s7t9Rfm2WN5UaRjVnZvjX4f3JrTAaK4TgcuEYPI+A+85VtjhhmNKyo9KS
|
||||
bkPamaIInMTgfR4YDGVCYMsbZTBQXRXmLxNE5zE6GYPvZzA6OQsl9yr2mFo4rNvtgl5fJAS0lo47WP82
|
||||
CQg+nX8T7wJzCEwv4kKxHbEGF4ObEJtwD7r4fCHIzBhidS9xeKvRgy07ZDxu64GvvQ8d3f3ofT2IvWYr
|
||||
NPoGxDF4u7YeWm1OtODkiR6+nrRhtCQ0ZxoVdZsaRjXTq5QE74zLEoJ/D0laA2xoOmtG+TV7AAAAAElF
|
||||
TkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="printToolStripButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIqSURBVDhPrZL7T1JxAMVZP/b/tLa2Wm21mail1YZlRjid
|
||||
k6JhTApClhGmktrDWlKjK3OBDrLAMWJaY9MZZJbo0umWQIEFXRPQMB6ne788HFpbW322s93d3fM598X5
|
||||
7xjtUxh0vId5dOaPMY14kL18O6zgrcePrWz8TMIbWMGgbQIlZy6DW31pu4Qts0ml0gjRETjdH0iGHC4Y
|
||||
LONwz/hQJVITQbZSiN7qxsfPdHYzA7u8Go1jdnEZJruLLP92XWsaB5sks+4LhgvWbc5puDxeVDaocOSs
|
||||
HBrtM9zps21KFJ1PSHnENZ9fzS0HwzHML4XRa3CglC+Dsqsfj0xjKGVEpNzUpof6/hAoyxs8MDqhf/4a
|
||||
tyk7rt4yQtyiBb+xA+U1ChSfluLkuevo1lkhUWlRnHuMm49fIBKLk+WtJJIprMcT5E6+0uv49CUKeTuF
|
||||
OmkXcweyjEB1zwzLq3d46nCDMr/E3b5hqHsGIGvXQdTcA8HFDvAaWnBUIEfRKQnOM+cqhdew/7goI1B2
|
||||
D8AfCGU3C4msbcAbXMVOcEh2UBzwxW0oqZZi1+GajKC504DpuSUw7ywPe/wtmsCcfw1jszQpW7OCY7UK
|
||||
7KsQbgqUGgqaXhN8oTjoWBqB72ksLqcwsfADw5NR9DtXSDGXQzwxKecF9ZJWyG7oMDrpJ9/2b1IgYJGo
|
||||
HqKiTokywRVwmd+0qKoJB3mNOHDiAvaWC7GnrB67ubX5YkH53+BwfgHgHTGbZU7qDAAAAABJRU5ErkJg
|
||||
gg==
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="statusStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>225, 17</value>
|
||||
</metadata>
|
||||
<metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>335, 17</value>
|
||||
</metadata>
|
||||
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>51</value>
|
||||
</metadata>
|
||||
</root>
|
||||
@@ -31,5 +31,6 @@ namespace JobReportMailService
|
||||
public virtual DbSet<vJobReportForUser> vJobReportForUser { get; set; }
|
||||
public virtual DbSet<HolidayLIst> HolidayLIst { get; set; }
|
||||
public virtual DbSet<MailForm> MailForm { get; set; }
|
||||
public virtual DbSet<vMailingProjectSchedule> vMailingProjectSchedule { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,6 +40,7 @@
|
||||
<Property Name="wdate" Type="smalldatetime" Nullable="false" />
|
||||
<Property Name="description2" Type="nvarchar(max)" />
|
||||
<Property Name="tag" Type="varchar" MaxLength="255" />
|
||||
<Property Name="autoinput" Type="bit" />
|
||||
</EntityType>
|
||||
<EntityType Name="MailData">
|
||||
<Key>
|
||||
@@ -109,6 +110,9 @@
|
||||
<Property Name="memo" Type="nvarchar" MaxLength="255" />
|
||||
<Property Name="processs" Type="varchar" MaxLength="50" />
|
||||
<Property Name="id" Type="varchar" MaxLength="20" />
|
||||
<Property Name="state" Type="varchar" MaxLength="20" />
|
||||
<Property Name="useJobReport" Type="bit" />
|
||||
<Property Name="useUserState" Type="bit" />
|
||||
</EntityType>
|
||||
<!--생성 중 오류 발생:
|
||||
경고 6002: 테이블/뷰 'EE.dbo.vJobReportForUser'에 기본 키가 정의되지 않았습니다. 키가 유추되었고 읽기 전용 테이블/뷰로 정의되었습니다.-->
|
||||
@@ -131,6 +135,26 @@
|
||||
<Property Name="requestpart" Type="varchar" MaxLength="50" />
|
||||
<Property Name="package" Type="varchar" MaxLength="50" />
|
||||
</EntityType>
|
||||
<!--생성 중 오류 발생:
|
||||
경고 6002: 테이블/뷰 'EE.dbo.vMailingProjectSchedule'에 기본 키가 정의되지 않았습니다. 키가 유추되었고 읽기 전용 테이블/뷰로 정의되었습니다.-->
|
||||
<EntityType Name="vMailingProjectSchedule">
|
||||
<Key>
|
||||
<PropertyRef Name="idx" />
|
||||
</Key>
|
||||
<Property Name="idx" Type="int" Nullable="false" />
|
||||
<Property Name="pdate" Type="varchar" MaxLength="10" />
|
||||
<Property Name="name" Type="nvarchar" MaxLength="255" />
|
||||
<Property Name="userManager" Type="varchar" MaxLength="50" />
|
||||
<Property Name="seq" Type="int" />
|
||||
<Property Name="title" Type="varchar" MaxLength="100" />
|
||||
<Property Name="sw" Type="int" />
|
||||
<Property Name="ew" Type="int" />
|
||||
<Property Name="swa" Type="int" />
|
||||
<Property Name="progress" Type="int" />
|
||||
<Property Name="ewa" Type="int" />
|
||||
<Property Name="ww" Type="int" />
|
||||
<Property Name="memo" Type="varchar(max)" />
|
||||
</EntityType>
|
||||
<EntityContainer Name="EEModelStoreContainer">
|
||||
<EntitySet Name="HolidayLIst" EntityType="Self.HolidayLIst" Schema="dbo" store:Type="Tables" />
|
||||
<EntitySet Name="JobReport" EntityType="Self.JobReport" Schema="dbo" store:Type="Tables" />
|
||||
@@ -155,7 +179,10 @@
|
||||
[vGroupUser].[ads_created] AS [ads_created],
|
||||
[vGroupUser].[memo] AS [memo],
|
||||
[vGroupUser].[processs] AS [processs],
|
||||
[vGroupUser].[id] AS [id]
|
||||
[vGroupUser].[id] AS [id],
|
||||
[vGroupUser].[state] AS [state],
|
||||
[vGroupUser].[useJobReport] AS [useJobReport],
|
||||
[vGroupUser].[useUserState] AS [useUserState]
|
||||
FROM [dbo].[vGroupUser] AS [vGroupUser]</DefiningQuery>
|
||||
</EntitySet>
|
||||
<EntitySet Name="vJobReportForUser" EntityType="Self.vJobReportForUser" store:Type="Views" store:Schema="dbo">
|
||||
@@ -175,6 +202,23 @@
|
||||
[vJobReportForUser].[package] AS [package]
|
||||
FROM [dbo].[vJobReportForUser] AS [vJobReportForUser]</DefiningQuery>
|
||||
</EntitySet>
|
||||
<EntitySet Name="vMailingProjectSchedule" EntityType="Self.vMailingProjectSchedule" store:Type="Views" store:Schema="dbo">
|
||||
<DefiningQuery>SELECT
|
||||
[vMailingProjectSchedule].[idx] AS [idx],
|
||||
[vMailingProjectSchedule].[pdate] AS [pdate],
|
||||
[vMailingProjectSchedule].[name] AS [name],
|
||||
[vMailingProjectSchedule].[userManager] AS [userManager],
|
||||
[vMailingProjectSchedule].[seq] AS [seq],
|
||||
[vMailingProjectSchedule].[title] AS [title],
|
||||
[vMailingProjectSchedule].[sw] AS [sw],
|
||||
[vMailingProjectSchedule].[ew] AS [ew],
|
||||
[vMailingProjectSchedule].[swa] AS [swa],
|
||||
[vMailingProjectSchedule].[progress] AS [progress],
|
||||
[vMailingProjectSchedule].[ewa] AS [ewa],
|
||||
[vMailingProjectSchedule].[ww] AS [ww],
|
||||
[vMailingProjectSchedule].[memo] AS [memo]
|
||||
FROM [dbo].[vMailingProjectSchedule] AS [vMailingProjectSchedule]</DefiningQuery>
|
||||
</EntitySet>
|
||||
</EntityContainer>
|
||||
</Schema></edmx:StorageModels>
|
||||
<!-- CSDL content -->
|
||||
@@ -204,6 +248,7 @@
|
||||
<Property Name="wdate" Type="DateTime" Nullable="false" Precision="0" />
|
||||
<Property Name="description2" Type="String" MaxLength="Max" FixedLength="false" Unicode="true" />
|
||||
<Property Name="tag" Type="String" MaxLength="255" FixedLength="false" Unicode="false" />
|
||||
<Property Name="autoinput" Type="Boolean" />
|
||||
</EntityType>
|
||||
<EntityType Name="MailData">
|
||||
<Key>
|
||||
@@ -249,6 +294,9 @@
|
||||
<Property Name="memo" Type="String" MaxLength="255" FixedLength="false" Unicode="true" />
|
||||
<Property Name="processs" Type="String" MaxLength="50" FixedLength="false" Unicode="false" />
|
||||
<Property Name="id" Type="String" MaxLength="20" FixedLength="false" Unicode="false" />
|
||||
<Property Name="state" Type="String" MaxLength="20" FixedLength="false" Unicode="false" />
|
||||
<Property Name="useJobReport" Type="Boolean" />
|
||||
<Property Name="useUserState" Type="Boolean" />
|
||||
</EntityType>
|
||||
<EntityType Name="vJobReportForUser">
|
||||
<Key>
|
||||
@@ -276,6 +324,7 @@
|
||||
<EntitySet Name="vJobReportForUser" EntityType="Self.vJobReportForUser" />
|
||||
<EntitySet Name="HolidayLIst" EntityType="EEModel.HolidayLIst" />
|
||||
<EntitySet Name="MailForm" EntityType="EEModel.MailForm" />
|
||||
<EntitySet Name="vMailingProjectSchedule" EntityType="EEModel.vMailingProjectSchedule" />
|
||||
</EntityContainer>
|
||||
<EntityType Name="HolidayLIst">
|
||||
<Key>
|
||||
@@ -310,6 +359,24 @@
|
||||
<Property Name="exceptmail" Type="String" MaxLength="Max" FixedLength="false" Unicode="false" />
|
||||
<Property Name="exceptmailcc" Type="String" MaxLength="Max" FixedLength="false" Unicode="false" />
|
||||
</EntityType>
|
||||
<EntityType Name="vMailingProjectSchedule">
|
||||
<Key>
|
||||
<PropertyRef Name="idx" />
|
||||
</Key>
|
||||
<Property Name="idx" Type="Int32" Nullable="false" />
|
||||
<Property Name="pdate" Type="String" MaxLength="10" FixedLength="false" Unicode="false" />
|
||||
<Property Name="name" Type="String" MaxLength="255" FixedLength="false" Unicode="true" />
|
||||
<Property Name="userManager" Type="String" MaxLength="50" FixedLength="false" Unicode="false" />
|
||||
<Property Name="seq" Type="Int32" />
|
||||
<Property Name="title" Type="String" MaxLength="100" FixedLength="false" Unicode="false" />
|
||||
<Property Name="sw" Type="Int32" />
|
||||
<Property Name="ew" Type="Int32" />
|
||||
<Property Name="swa" Type="Int32" />
|
||||
<Property Name="progress" Type="Int32" />
|
||||
<Property Name="ewa" Type="Int32" />
|
||||
<Property Name="ww" Type="Int32" />
|
||||
<Property Name="memo" Type="String" MaxLength="Max" FixedLength="false" Unicode="false" />
|
||||
</EntityType>
|
||||
</Schema>
|
||||
</edmx:ConceptualModels>
|
||||
<!-- C-S mapping content -->
|
||||
@@ -319,6 +386,7 @@
|
||||
<EntitySetMapping Name="JobReport">
|
||||
<EntityTypeMapping TypeName="EEModel.JobReport">
|
||||
<MappingFragment StoreEntitySet="JobReport">
|
||||
<ScalarProperty Name="autoinput" ColumnName="autoinput" />
|
||||
<ScalarProperty Name="idx" ColumnName="idx" />
|
||||
<ScalarProperty Name="gcode" ColumnName="gcode" />
|
||||
<ScalarProperty Name="pdate" ColumnName="pdate" />
|
||||
@@ -368,6 +436,9 @@
|
||||
<EntitySetMapping Name="vGroupUser">
|
||||
<EntityTypeMapping TypeName="EEModel.vGroupUser">
|
||||
<MappingFragment StoreEntitySet="vGroupUser">
|
||||
<ScalarProperty Name="useUserState" ColumnName="useUserState" />
|
||||
<ScalarProperty Name="useJobReport" ColumnName="useJobReport" />
|
||||
<ScalarProperty Name="state" ColumnName="state" />
|
||||
<ScalarProperty Name="gcode" ColumnName="gcode" />
|
||||
<ScalarProperty Name="dept" ColumnName="dept" />
|
||||
<ScalarProperty Name="level" ColumnName="level" />
|
||||
@@ -443,6 +514,25 @@
|
||||
</MappingFragment>
|
||||
</EntityTypeMapping>
|
||||
</EntitySetMapping>
|
||||
<EntitySetMapping Name="vMailingProjectSchedule">
|
||||
<EntityTypeMapping TypeName="EEModel.vMailingProjectSchedule">
|
||||
<MappingFragment StoreEntitySet="vMailingProjectSchedule">
|
||||
<ScalarProperty Name="memo" ColumnName="memo" />
|
||||
<ScalarProperty Name="ww" ColumnName="ww" />
|
||||
<ScalarProperty Name="ewa" ColumnName="ewa" />
|
||||
<ScalarProperty Name="progress" ColumnName="progress" />
|
||||
<ScalarProperty Name="swa" ColumnName="swa" />
|
||||
<ScalarProperty Name="ew" ColumnName="ew" />
|
||||
<ScalarProperty Name="sw" ColumnName="sw" />
|
||||
<ScalarProperty Name="title" ColumnName="title" />
|
||||
<ScalarProperty Name="seq" ColumnName="seq" />
|
||||
<ScalarProperty Name="userManager" ColumnName="userManager" />
|
||||
<ScalarProperty Name="name" ColumnName="name" />
|
||||
<ScalarProperty Name="pdate" ColumnName="pdate" />
|
||||
<ScalarProperty Name="idx" ColumnName="idx" />
|
||||
</MappingFragment>
|
||||
</EntityTypeMapping>
|
||||
</EntitySetMapping>
|
||||
</EntityContainerMapping>
|
||||
</Mapping>
|
||||
</edmx:Mappings>
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
<EntityTypeShape EntityType="EEModel.vJobReportForUser" Width="1.5" PointX="6.75" PointY="0.75" IsExpanded="true" />
|
||||
<EntityTypeShape EntityType="EEModel.HolidayLIst" Width="1.5" PointX="0.75" PointY="6.75" />
|
||||
<EntityTypeShape EntityType="EEModel.MailForm" Width="1.5" PointX="7.375" PointY="5.75" />
|
||||
<EntityTypeShape EntityType="EEModel.vMailingProjectSchedule" Width="1.5" PointX="9.375" PointY="0.75" />
|
||||
</Diagram>
|
||||
</edmx:Diagrams>
|
||||
</edmx:Designer>
|
||||
|
||||
@@ -1,100 +1,22 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.SqlClient;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
partial class Program
|
||||
static class Program
|
||||
{
|
||||
static CSetting setting = new CSetting();
|
||||
static DateTime ChkAutoDate = DateTime.Now.AddDays(-1);
|
||||
static string vGcode = "EET1P";
|
||||
static bool cn = false;
|
||||
static DateTime LastUpdateTime = DateTime.Now.AddHours(-1);
|
||||
static DateTime ConsoleTime = DateTime.Now.AddDays(-1);
|
||||
|
||||
|
||||
static void Main(string[] args)
|
||||
/// <summary>
|
||||
/// 해당 애플리케이션의 주 진입점입니다.
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
setting = new CSetting();
|
||||
setting.Load();
|
||||
if (setting.Xml.Exist() == false)
|
||||
{
|
||||
Console.WriteLine("new setting file make");
|
||||
setting.Save();
|
||||
}
|
||||
|
||||
|
||||
while (true)
|
||||
{
|
||||
//등록된 날짜를 확인하여, 해당 일자가 일반 평일 이라면 8시간 체크해서 메일을 보낸다.
|
||||
//등록된 날짜가 토,일은 제외한다.
|
||||
|
||||
var ts = DateTime.Now - LastUpdateTime;
|
||||
if (ts.TotalMinutes <= 15)
|
||||
{
|
||||
//15분 미만이면 동작하지 않는다
|
||||
if ((DateTime.Now - ConsoleTime).TotalHours >= 1.0)
|
||||
{
|
||||
Console.WriteLine("15분 미만이라 동작하지 않습니다");
|
||||
ConsoleTime = DateTime.Now;
|
||||
}
|
||||
}
|
||||
else if (DateTime.Now.DayOfWeek == DayOfWeek.Saturday || DateTime.Now.DayOfWeek == DayOfWeek.Sunday)
|
||||
{
|
||||
//토,일요일에는 동작하지 않는다
|
||||
if ((DateTime.Now - ConsoleTime).TotalHours >= 1.0)
|
||||
{
|
||||
Console.WriteLine("토/일에는 동작하지 않습니다");
|
||||
ConsoleTime = DateTime.Now;
|
||||
}
|
||||
}
|
||||
else if (DateTime.Now.Hour < 9)
|
||||
{
|
||||
if ((DateTime.Now - ConsoleTime).TotalHours >= 1.0)
|
||||
{
|
||||
Console.WriteLine("9시 이전에는 동작하지 않습니다");
|
||||
ConsoleTime = DateTime.Now;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LastUpdateTime = DateTime.Now;
|
||||
try
|
||||
{
|
||||
WorkDay();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine("일간업무알림 실패: " + ex.Message);
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
WorkWeek();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine("주간업무알림 실패: " +ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
System.Threading.Thread.Sleep(60000); //1분단위로 체크한다
|
||||
}
|
||||
}
|
||||
|
||||
static string MailSort(string addr, string except)
|
||||
{
|
||||
if (string.IsNullOrEmpty(except)) return addr;
|
||||
var alist = addr.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries).ToList();
|
||||
var elist = except.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries).ToList();
|
||||
foreach (var item in elist)
|
||||
alist.Remove(item);
|
||||
if (alist.Count < 1) return string.Empty;
|
||||
return string.Join(";", alist);
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
Application.Run(new MDIParent1());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
91
JobReportMailService/Program_bak.cs
Normal file
91
JobReportMailService/Program_bak.cs
Normal file
@@ -0,0 +1,91 @@
|
||||
//using System;
|
||||
//using System.Collections.Generic;
|
||||
//using System.Data.SqlClient;
|
||||
//using System.Linq;
|
||||
//using System.Text;
|
||||
//using System.Threading.Tasks;
|
||||
|
||||
//namespace JobReportMailService
|
||||
//{
|
||||
// partial class Program_bak
|
||||
// {
|
||||
// static CSetting setting = new CSetting();
|
||||
// static DateTime ChkAutoDate = DateTime.Now.AddDays(-1);
|
||||
// static string vGcode = "EET1P";
|
||||
// static bool cn = false;
|
||||
// static DateTime LastUpdateTime = DateTime.Now.AddHours(-1);
|
||||
// static DateTime ConsoleTime = DateTime.Now.AddDays(-1);
|
||||
|
||||
|
||||
// static void Main(string[] args)
|
||||
// {
|
||||
// setting = new CSetting();
|
||||
// setting.Load();
|
||||
// if (setting.Xml.Exist() == false)
|
||||
// {
|
||||
// Console.WriteLine("new setting file make");
|
||||
// setting.Save();
|
||||
// }
|
||||
|
||||
|
||||
// while (true)
|
||||
// {
|
||||
// //등록된 날짜를 확인하여, 해당 일자가 일반 평일 이라면 8시간 체크해서 메일을 보낸다.
|
||||
// //등록된 날짜가 토,일은 제외한다.
|
||||
|
||||
// var ts = DateTime.Now - LastUpdateTime;
|
||||
// if (ts.TotalMinutes <= 15)
|
||||
// {
|
||||
// //15분 미만이면 동작하지 않는다
|
||||
// if ((DateTime.Now - ConsoleTime).TotalHours >= 1.0)
|
||||
// {
|
||||
// Console.WriteLine("15분 미만이라 동작하지 않습니다");
|
||||
// ConsoleTime = DateTime.Now;
|
||||
// }
|
||||
// }
|
||||
// else if (DateTime.Now.DayOfWeek == DayOfWeek.Saturday || DateTime.Now.DayOfWeek == DayOfWeek.Sunday)
|
||||
// {
|
||||
// //토,일요일에는 동작하지 않는다
|
||||
// if ((DateTime.Now - ConsoleTime).TotalHours >= 1.0)
|
||||
// {
|
||||
// Console.WriteLine("토/일에는 동작하지 않습니다");
|
||||
// ConsoleTime = DateTime.Now;
|
||||
// }
|
||||
// }
|
||||
// else if (DateTime.Now.Hour < 9)
|
||||
// {
|
||||
// if ((DateTime.Now - ConsoleTime).TotalHours >= 1.0)
|
||||
// {
|
||||
// Console.WriteLine("9시 이전에는 동작하지 않습니다");
|
||||
// ConsoleTime = DateTime.Now;
|
||||
// }
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// LastUpdateTime = DateTime.Now;
|
||||
// try
|
||||
// {
|
||||
// WorkDay();
|
||||
// }
|
||||
// catch (Exception ex)
|
||||
// {
|
||||
// Console.WriteLine("일간업무알림 실패: " + ex.Message);
|
||||
// }
|
||||
|
||||
// try
|
||||
// {
|
||||
// WorkWeek();
|
||||
// }
|
||||
// catch (Exception ex)
|
||||
// {
|
||||
// Console.WriteLine("주간업무알림 실패: " + ex.Message);
|
||||
// }
|
||||
// }
|
||||
|
||||
// System.Threading.Thread.Sleep(60000); //1분단위로 체크한다
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
// }
|
||||
//}
|
||||
23
JobReportMailService/Pub.cs
Normal file
23
JobReportMailService/Pub.cs
Normal file
@@ -0,0 +1,23 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
public static class Pub
|
||||
{
|
||||
public static string vGcode = "EET1P";
|
||||
public static string MailSort(string addr, string except)
|
||||
{
|
||||
if (string.IsNullOrEmpty(except)) return addr;
|
||||
var alist = addr.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries).ToList();
|
||||
var elist = except.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries).ToList();
|
||||
foreach (var item in elist)
|
||||
alist.Remove(item);
|
||||
if (alist.Count < 1) return string.Empty;
|
||||
return string.Join(";", alist);
|
||||
}
|
||||
}
|
||||
}
|
||||
69
JobReportMailService/fChildBase.Designer.cs
generated
Normal file
69
JobReportMailService/fChildBase.Designer.cs
generated
Normal file
@@ -0,0 +1,69 @@
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
partial class fChildBase
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
this.richTextBox1 = new System.Windows.Forms.RichTextBox();
|
||||
this.timer1 = new System.Windows.Forms.Timer(this.components);
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// richTextBox1
|
||||
//
|
||||
this.richTextBox1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.richTextBox1.Location = new System.Drawing.Point(0, 0);
|
||||
this.richTextBox1.Name = "richTextBox1";
|
||||
this.richTextBox1.Size = new System.Drawing.Size(704, 491);
|
||||
this.richTextBox1.TabIndex = 1;
|
||||
this.richTextBox1.Text = "";
|
||||
//
|
||||
// timer1
|
||||
//
|
||||
this.timer1.Interval = 250;
|
||||
//
|
||||
// fChildBase
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(704, 491);
|
||||
this.Controls.Add(this.richTextBox1);
|
||||
this.Name = "fChildBase";
|
||||
this.Text = "fChildBase";
|
||||
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.fChildBase_FormClosed);
|
||||
this.Load += new System.EventHandler(this.fChildBase_Load);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.RichTextBox richTextBox1;
|
||||
protected System.Windows.Forms.Timer timer1;
|
||||
}
|
||||
}
|
||||
68
JobReportMailService/fChildBase.cs
Normal file
68
JobReportMailService/fChildBase.cs
Normal file
@@ -0,0 +1,68 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
public partial class fChildBase : Form
|
||||
{
|
||||
protected Boolean taskrun = true;
|
||||
protected DateTime LastUpdateTime;
|
||||
protected DateTime ConsoleTime;
|
||||
protected Task task = null;
|
||||
protected int Delaytime = 60000;
|
||||
protected Boolean taskwait = true;
|
||||
public fChildBase()
|
||||
{
|
||||
InitializeComponent();
|
||||
LastUpdateTime = DateTime.Now.AddDays(-1);
|
||||
ConsoleTime = LastUpdateTime;
|
||||
}
|
||||
|
||||
private void fChildBase_Load(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
protected void addmsg(string m)
|
||||
{
|
||||
if (this.richTextBox1.InvokeRequired)
|
||||
{
|
||||
this.richTextBox1.BeginInvoke(new Action(() =>
|
||||
{
|
||||
if (this.richTextBox1.Lines.Length > 1000) this.richTextBox1.Clear();
|
||||
this.richTextBox1.AppendText(m + "\n");
|
||||
this.richTextBox1.ScrollToCaret();
|
||||
}));
|
||||
return;
|
||||
}
|
||||
if (this.richTextBox1.Lines.Length > 1000) this.richTextBox1.Clear();
|
||||
this.richTextBox1.AppendText(m + "\n");
|
||||
this.richTextBox1.ScrollToCaret();
|
||||
}
|
||||
|
||||
private void fChildBase_FormClosed(object sender, FormClosedEventArgs e)
|
||||
{
|
||||
if(this.task != null)
|
||||
{
|
||||
taskwait = true;
|
||||
taskrun = false;
|
||||
task.Wait(1000);
|
||||
try
|
||||
{
|
||||
task.Dispose();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
123
JobReportMailService/fChildBase.resx
Normal file
123
JobReportMailService/fChildBase.resx
Normal file
@@ -0,0 +1,123 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
</root>
|
||||
83
JobReportMailService/fJobReportDay.Designer.cs
generated
Normal file
83
JobReportMailService/fJobReportDay.Designer.cs
generated
Normal file
@@ -0,0 +1,83 @@
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
partial class fJobReportDay
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(fJobReportDay));
|
||||
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
|
||||
this.toolStripButton1 = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStrip1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// timer1
|
||||
//
|
||||
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
|
||||
//
|
||||
// toolStrip1
|
||||
//
|
||||
this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.toolStripButton1});
|
||||
this.toolStrip1.Location = new System.Drawing.Point(0, 0);
|
||||
this.toolStrip1.Name = "toolStrip1";
|
||||
this.toolStrip1.Size = new System.Drawing.Size(473, 25);
|
||||
this.toolStrip1.TabIndex = 2;
|
||||
this.toolStrip1.Text = "toolStrip1";
|
||||
//
|
||||
// toolStripButton1
|
||||
//
|
||||
this.toolStripButton1.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton1.Image")));
|
||||
this.toolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.toolStripButton1.Name = "toolStripButton1";
|
||||
this.toolStripButton1.Size = new System.Drawing.Size(48, 22);
|
||||
this.toolStripButton1.Text = "Run";
|
||||
this.toolStripButton1.Click += new System.EventHandler(this.toolStripButton1_Click);
|
||||
//
|
||||
// fJobReportDay
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(473, 416);
|
||||
this.Controls.Add(this.toolStrip1);
|
||||
this.Name = "fJobReportDay";
|
||||
this.Text = "업무일지(일보고)";
|
||||
this.Load += new System.EventHandler(this.fJobReportDay_Load);
|
||||
this.Controls.SetChildIndex(this.toolStrip1, 0);
|
||||
this.toolStrip1.ResumeLayout(false);
|
||||
this.toolStrip1.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.ToolStrip toolStrip1;
|
||||
private System.Windows.Forms.ToolStripButton toolStripButton1;
|
||||
}
|
||||
}
|
||||
@@ -1,38 +1,97 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.SqlClient;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
partial class Program
|
||||
public partial class fJobReportDay : fChildBase
|
||||
{
|
||||
|
||||
static void WorkDay()
|
||||
|
||||
public fJobReportDay()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
|
||||
if(DateTime.Now.DayOfWeek == DayOfWeek.Saturday || DateTime.Now.DayOfWeek == DayOfWeek.Sunday || DateTime.Now.DayOfWeek == DayOfWeek.Monday )
|
||||
private void fJobReportDay_Load(object sender, EventArgs e)
|
||||
{
|
||||
task = Task.Run(() =>
|
||||
{
|
||||
Console.WriteLine("토/일/월요일에는 일별 보고를 작동하지 않습니다");
|
||||
return;
|
||||
}
|
||||
else Console.WriteLine("업무일지 미 작성자 추출 작업을 시작 합니다");
|
||||
while(taskrun)
|
||||
{
|
||||
if (taskwait)
|
||||
{
|
||||
task.Wait(1000);
|
||||
continue;
|
||||
}
|
||||
|
||||
var ts = DateTime.Now - LastUpdateTime;
|
||||
if (ts.TotalMinutes <= 15)
|
||||
{
|
||||
if ((DateTime.Now - ConsoleTime).TotalHours >= 1.0)
|
||||
{
|
||||
addmsg("15분 미만이라 동작하지 않습니다");
|
||||
ConsoleTime = DateTime.Now;
|
||||
}
|
||||
}
|
||||
else if (DateTime.Now.DayOfWeek == DayOfWeek.Saturday ||
|
||||
DateTime.Now.DayOfWeek == DayOfWeek.Sunday ||
|
||||
DateTime.Now.DayOfWeek == DayOfWeek.Monday)
|
||||
{
|
||||
//토,일요일에는 동작하지 않는다
|
||||
if ((DateTime.Now - ConsoleTime).TotalHours >= 1.0)
|
||||
{
|
||||
addmsg("토/일/월에는 동작하지 않습니다");
|
||||
ConsoleTime = DateTime.Now;
|
||||
}
|
||||
}
|
||||
else if (DateTime.Now.Hour < 9)
|
||||
{
|
||||
if ((DateTime.Now - ConsoleTime).TotalHours >= 1.0)
|
||||
{
|
||||
addmsg("9시 이전에는 동작하지 않습니다");
|
||||
ConsoleTime = DateTime.Now;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LastUpdateTime = DateTime.Now;
|
||||
try
|
||||
{
|
||||
RunData();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
addmsg(ex.Message);
|
||||
}
|
||||
}
|
||||
Task.Delay(Delaytime).Wait();
|
||||
}
|
||||
|
||||
});
|
||||
timer1.Start();
|
||||
}
|
||||
|
||||
void RunData()
|
||||
{
|
||||
addmsg("업무일지 미 작성자 추출 작업을 시작 합니다");
|
||||
|
||||
|
||||
|
||||
var db = new EEEntities();
|
||||
|
||||
//메일양식이 지정되어있는지 체크
|
||||
var MailJD = db.MailForm.Where(t => t.gcode == vGcode & t.cate == "JD").FirstOrDefault();
|
||||
var MailJD = db.MailForm.Where(t => t.gcode == Pub.vGcode & t.cate == "JD").FirstOrDefault();
|
||||
//var MailJW = db.MailForm.Where(t => t.gcode == vGcode & t.cate == "JW").FirstOrDefault();
|
||||
|
||||
if (MailJD == null)
|
||||
{
|
||||
//토,일요일에는 동작하지 않는다
|
||||
Console.WriteLine("업무일지 미작성 메일 양식이 입력되지 않았습니다");
|
||||
addmsg("업무일지 미작성 메일 양식이 입력되지 않았습니다");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -45,7 +104,7 @@ namespace JobReportMailService
|
||||
|
||||
//대상 사용자 목록을 추출한다
|
||||
db = new EEEntities();
|
||||
var users = db.vJobReportForUser.Where(t => t.gcode == vGcode).GroupBy(t => t.id);
|
||||
var users = db.vJobReportForUser.Where(t => t.gcode == Pub.vGcode).GroupBy(t => t.id);
|
||||
Dictionary<string, string> uids = new Dictionary<string, string>();
|
||||
foreach (var user in users)
|
||||
{
|
||||
@@ -58,17 +117,17 @@ namespace JobReportMailService
|
||||
if (userdata != null && string.IsNullOrEmpty(userdata.outdate) == false) continue;
|
||||
|
||||
db = new EEEntities();
|
||||
var Exists = db.MailData.Where(t => t.gcode == vGcode && t.wuid == userinfo.id && t.pdate == str_dt && t.cate == "JD").Any();
|
||||
var Exists = db.MailData.Where(t => t.gcode == Pub.vGcode && t.wuid == userinfo.id && t.pdate == str_dt && t.cate == "JD").Any();
|
||||
if (Exists == false) uids.Add(userinfo.id, userinfo.name); //자동생성된 자료가 없는 경우에만 처리한다
|
||||
}
|
||||
|
||||
|
||||
Console.WriteLine($"{uids.Count} 명의 전체 사용자가 확인 되었습니다");
|
||||
addmsg($"{uids.Count} 명의 전체 사용자가 확인 되었습니다");
|
||||
|
||||
//먼저 날짜목록을 가져온다
|
||||
db = new EEEntities();
|
||||
var lstDate = db.JobReport
|
||||
.Where(t => t.gcode == vGcode && t.pdate.CompareTo(str_sd) >= 0 && t.pdate.CompareTo(str_ed) < 0)
|
||||
.Where(t => t.gcode == Pub.vGcode && t.pdate.CompareTo(str_sd) >= 0 && t.pdate.CompareTo(str_ed) < 0)
|
||||
.OrderBy(t => t.pdate)
|
||||
.GroupBy(t => t.pdate).ToList();
|
||||
|
||||
@@ -88,7 +147,7 @@ namespace JobReportMailService
|
||||
//이날짜에는 8시간을 근무 해야 한다
|
||||
days.Add(DateTime.Parse(jobdata.pdate));
|
||||
}
|
||||
Console.WriteLine($"{days.Count} 건의 일자가 확인 되었습니다(기간:{str_sd}~{str_ed}");
|
||||
addmsg($"{days.Count} 건의 일자가 확인 되었습니다(기간:{str_sd}~{str_ed}");
|
||||
|
||||
//사용자 목록과 날짜 목록을 모두 수집했다
|
||||
List<ReportUserData> totWarnList = new List<ReportUserData>();
|
||||
@@ -96,7 +155,7 @@ namespace JobReportMailService
|
||||
{
|
||||
//이사용자의 날짜별 근무시간을 확인한다.
|
||||
db = new EEEntities();
|
||||
var UserDatas = db.vJobReportForUser.Where(t => t.gcode == vGcode && t.id == uid.Key && t.pdate.CompareTo(str_sd) >= 0 && t.pdate.CompareTo(str_ed) < 0).ToList();
|
||||
var UserDatas = db.vJobReportForUser.Where(t => t.gcode == Pub.vGcode && t.id == uid.Key && t.pdate.CompareTo(str_sd) >= 0 && t.pdate.CompareTo(str_ed) < 0).ToList();
|
||||
|
||||
Dictionary<DateTime, double?> WarnList = new Dictionary<DateTime, double?>();
|
||||
foreach (var dt in days.OrderBy(t => t))
|
||||
@@ -116,17 +175,17 @@ namespace JobReportMailService
|
||||
|
||||
if (WarnList.Count > 0)
|
||||
{
|
||||
Console.WriteLine($"{uid.Value}({uid.Key}) 의 경고 일수는 {WarnList.Count} 건 입니다");
|
||||
addmsg($"{uid.Value}({uid.Key}) 의 경고 일수는 {WarnList.Count} 건 입니다");
|
||||
|
||||
db = new EEEntities();
|
||||
var userinfo = db.vGroupUser.Where(t => t.id == uid.Key).FirstOrDefault();
|
||||
if (userinfo == null)
|
||||
{
|
||||
Console.WriteLine($"{uid.Value}({uid.Key}) 의 사용자 정보를 확인 할 수 없습니다");
|
||||
addmsg($"{uid.Value}({uid.Key}) 의 사용자 정보를 확인 할 수 없습니다");
|
||||
}
|
||||
else if (string.IsNullOrEmpty(userinfo.email))
|
||||
{
|
||||
Console.WriteLine($"{uid.Value}({uid.Key}) 의 메일 정보가 존재하지 않습니다");
|
||||
addmsg($"{uid.Value}({uid.Key}) 의 메일 정보가 존재하지 않습니다");
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -158,31 +217,31 @@ namespace JobReportMailService
|
||||
//mail_bcc = string.Empty;
|
||||
//mail_cc = string.Empty;
|
||||
|
||||
mail_to = MailSort(mail_to, MailJD.exceptmail);
|
||||
mail_to = Pub.MailSort(mail_to, MailJD.exceptmail);
|
||||
if (string.IsNullOrEmpty(mail_to) == false)
|
||||
{
|
||||
db = new EEEntities();
|
||||
db.MailData.Add(new MailData
|
||||
{
|
||||
gcode = vGcode,
|
||||
gcode = Pub.vGcode,
|
||||
cate = "JD",
|
||||
subject = mail_subject,
|
||||
fromlist = userinfo.email,
|
||||
tolist = MailSort(mail_to, MailJD.exceptmail),
|
||||
tolist = Pub.MailSort(mail_to, MailJD.exceptmail),
|
||||
bcc = mail_bcc,
|
||||
cc = MailSort(mail_cc, MailJD.exceptmailcc),
|
||||
cc = Pub.MailSort(mail_cc, MailJD.exceptmailcc),
|
||||
pdate = DateTime.Now.ToShortDateString(),
|
||||
body = mail_body.Replace("{내용}", mail_content),
|
||||
wuid = userinfo.id,
|
||||
wdate = DateTime.Now,
|
||||
});
|
||||
db.SaveChanges();
|
||||
Console.WriteLine($"{userinfo.name}({userinfo.email}) 메일 전송 완료(day)");
|
||||
addmsg($"{userinfo.name}({userinfo.email}) 메일 전송 완료(day)");
|
||||
System.Threading.Thread.Sleep(10000);
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("받는사람이 소거되어 메일을 생성하지 않습니다");
|
||||
addmsg("받는사람이 소거되어 메일을 생성하지 않습니다");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -190,10 +249,33 @@ namespace JobReportMailService
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine($"{uid.Value}({uid.Key}) 미 작성 일자가 없습니다");
|
||||
addmsg($"{uid.Value}({uid.Key}) 미 작성 일자가 없습니다");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void toolStripButton1_Click(object sender, EventArgs e)
|
||||
{
|
||||
taskwait = !taskwait;
|
||||
}
|
||||
|
||||
private void timer1_Tick(object sender, EventArgs e)
|
||||
{
|
||||
if (task != null)
|
||||
{
|
||||
if (task.IsCompleted) this.toolStripButton1.Text = "완료";
|
||||
else if (task.IsCanceled) this.toolStripButton1.Text = "취소";
|
||||
else if (taskwait) this.toolStripButton1.Text = "대기상태";
|
||||
else this.toolStripButton1.Text = "가동중";
|
||||
this.toolStripButton1.Enabled = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.toolStripButton1.Text = "사용불가";
|
||||
this.toolStripButton1.Enabled = false;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
142
JobReportMailService/fJobReportDay.resx
Normal file
142
JobReportMailService/fJobReportDay.resx
Normal file
@@ -0,0 +1,142 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>104, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="toolStripButton1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
|
||||
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
|
||||
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
|
||||
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
|
||||
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
|
||||
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
|
||||
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
|
||||
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
|
||||
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
|
||||
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
83
JobReportMailService/fJobReportWeek.Designer.cs
generated
Normal file
83
JobReportMailService/fJobReportWeek.Designer.cs
generated
Normal file
@@ -0,0 +1,83 @@
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
partial class fJobReportWeek
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(fJobReportWeek));
|
||||
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
|
||||
this.toolStripButton1 = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStrip1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// timer1
|
||||
//
|
||||
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
|
||||
//
|
||||
// toolStrip1
|
||||
//
|
||||
this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.toolStripButton1});
|
||||
this.toolStrip1.Location = new System.Drawing.Point(0, 0);
|
||||
this.toolStrip1.Name = "toolStrip1";
|
||||
this.toolStrip1.Size = new System.Drawing.Size(473, 25);
|
||||
this.toolStrip1.TabIndex = 3;
|
||||
this.toolStrip1.Text = "toolStrip1";
|
||||
//
|
||||
// toolStripButton1
|
||||
//
|
||||
this.toolStripButton1.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton1.Image")));
|
||||
this.toolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.toolStripButton1.Name = "toolStripButton1";
|
||||
this.toolStripButton1.Size = new System.Drawing.Size(48, 22);
|
||||
this.toolStripButton1.Text = "Run";
|
||||
this.toolStripButton1.Click += new System.EventHandler(this.toolStripButton1_Click);
|
||||
//
|
||||
// fJobReportWeek
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(473, 416);
|
||||
this.Controls.Add(this.toolStrip1);
|
||||
this.Name = "fJobReportWeek";
|
||||
this.Text = "업무일지(주간보고)";
|
||||
this.Load += new System.EventHandler(this.fJobReportDay_Load);
|
||||
this.Controls.SetChildIndex(this.toolStrip1, 0);
|
||||
this.toolStrip1.ResumeLayout(false);
|
||||
this.toolStrip1.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.ToolStrip toolStrip1;
|
||||
private System.Windows.Forms.ToolStripButton toolStripButton1;
|
||||
}
|
||||
}
|
||||
@@ -1,34 +1,94 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.SqlClient;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
partial class Program
|
||||
public partial class fJobReportWeek : fChildBase
|
||||
{
|
||||
|
||||
static void WorkWeek()
|
||||
public fJobReportWeek()
|
||||
{
|
||||
if (DateTime.Now.DayOfWeek != DayOfWeek.Monday)
|
||||
{
|
||||
Console.WriteLine("주간 업무일지 보고는 월요일에만 작동 합니다");
|
||||
return;
|
||||
}
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
Console.WriteLine("업무일지 미 작성자(주간) 추출 작업을 시작 합니다");
|
||||
private void fJobReportDay_Load(object sender, EventArgs e)
|
||||
{
|
||||
task = Task.Run(() =>
|
||||
{
|
||||
while (taskrun)
|
||||
{
|
||||
if (taskwait)
|
||||
{
|
||||
task.Wait(1000);
|
||||
continue;
|
||||
}
|
||||
|
||||
var ts = DateTime.Now - LastUpdateTime;
|
||||
if (ts.TotalMinutes <= 15)
|
||||
{
|
||||
if ((DateTime.Now - ConsoleTime).TotalHours >= 1.0)
|
||||
{
|
||||
addmsg("15분 미만이라 동작하지 않습니다");
|
||||
ConsoleTime = DateTime.Now;
|
||||
}
|
||||
}
|
||||
else if (DateTime.Now.DayOfWeek != DayOfWeek.Monday)
|
||||
{
|
||||
//토,일요일에는 동작하지 않는다
|
||||
if ((DateTime.Now - ConsoleTime).TotalHours >= 1.0)
|
||||
{
|
||||
addmsg("월요일에만 동작 함");
|
||||
ConsoleTime = DateTime.Now;
|
||||
}
|
||||
}
|
||||
else if (DateTime.Now.Hour < 9)
|
||||
{
|
||||
if ((DateTime.Now - ConsoleTime).TotalHours >= 1.0)
|
||||
{
|
||||
addmsg("9시 이전에는 동작하지 않습니다");
|
||||
ConsoleTime = DateTime.Now;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LastUpdateTime = DateTime.Now;
|
||||
try
|
||||
{
|
||||
RunData();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
addmsg(ex.Message);
|
||||
}
|
||||
}
|
||||
Task.Delay(Delaytime).Wait();
|
||||
}
|
||||
|
||||
});
|
||||
timer1.Start();
|
||||
}
|
||||
|
||||
void RunData()
|
||||
{
|
||||
|
||||
addmsg("업무일지 미 작성자(주간) 추출 작업을 시작 합니다");
|
||||
|
||||
var db = new EEEntities();
|
||||
|
||||
//메일양식이 지정되어있는지 체크
|
||||
var MailJW = db.MailForm.Where(t => t.gcode == vGcode & t.cate == "JW").FirstOrDefault();
|
||||
var MailJW = db.MailForm.Where(t => t.gcode == Pub.vGcode & t.cate == "JW").FirstOrDefault();
|
||||
|
||||
if (MailJW == null)
|
||||
{
|
||||
//토,일요일에는 동작하지 않는다
|
||||
Console.WriteLine("업무일지 미작성(주간) 메일 양식이 입력되지 않았습니다");
|
||||
addmsg("업무일지 미작성(주간) 메일 양식이 입력되지 않았습니다");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -41,16 +101,16 @@ namespace JobReportMailService
|
||||
|
||||
//오늘날짜로 주간 데이터가 등록되어있느지 확인한다.
|
||||
db = new EEEntities();
|
||||
var Existweek = db.MailData.Where(t => t.gcode == vGcode && t.cate == "JW" && t.wuid == "395552" && t.pdate == str_dt).Any();
|
||||
var Existweek = db.MailData.Where(t => t.gcode == Pub.vGcode && t.cate == "JW" && t.wuid == "395552" && t.pdate == str_dt).Any();
|
||||
if (Existweek)
|
||||
{
|
||||
Console.WriteLine($"주간일자({str_dt}) 보고 메일이 이미 등록되어 있습니다");
|
||||
addmsg($"주간일자({str_dt}) 보고 메일이 이미 등록되어 있습니다");
|
||||
return;
|
||||
}
|
||||
|
||||
//대상 사용자 목록을 추출한다
|
||||
db = new EEEntities();
|
||||
var users = db.vJobReportForUser.Where(t => t.gcode == vGcode).GroupBy(t => t.id);
|
||||
db = new EEEntities();
|
||||
var users = db.vJobReportForUser.Where(t => t.gcode == Pub.vGcode).GroupBy(t => t.id);
|
||||
Dictionary<string, string> uids = new Dictionary<string, string>();
|
||||
foreach (var user in users)
|
||||
{
|
||||
@@ -58,28 +118,28 @@ namespace JobReportMailService
|
||||
var userinfo = user.FirstOrDefault();
|
||||
|
||||
//퇴사자 확인
|
||||
db = new EEEntities();
|
||||
db = new EEEntities();
|
||||
var userdata = db.vGroupUser.Where(t => t.id == userinfo.id).FirstOrDefault();
|
||||
if (userdata != null && string.IsNullOrEmpty(userdata.outdate) == false) continue;
|
||||
|
||||
//이 대상의 이메일이 받는 사람에 제외되어있다면 처리하지 않는다.
|
||||
var exxptolist = MailJW.exceptmail.ToUpper().Split(';');
|
||||
if(exxptolist.Contains(userdata.email.ToUpper())==false)
|
||||
var exxptolist = MailJW.exceptmail.ToUpper().Split(';');
|
||||
if (exxptolist.Contains(userdata.email.ToUpper()) == false)
|
||||
{
|
||||
//모두대상으로 처리한다
|
||||
if(userdata.email.ToUpper() != ("BongSeok.Jung@amkor.co.kr").ToUpper())
|
||||
uids.Add(userinfo.id, userinfo.name);
|
||||
if (userdata.email.ToUpper() != ("BongSeok.Jung@amkor.co.kr").ToUpper())
|
||||
uids.Add(userinfo.id, userinfo.name);
|
||||
}
|
||||
else Console.WriteLine("주간 제외대상자임 " + userdata.email );
|
||||
else addmsg("주간 제외대상자임 " + userdata.email);
|
||||
}
|
||||
|
||||
|
||||
Console.WriteLine($"{uids.Count} 명의 전체 사용자가 확인 되었습니다");
|
||||
addmsg($"{uids.Count} 명의 전체 사용자가 확인 되었습니다");
|
||||
|
||||
//먼저 날짜목록을 가져온다
|
||||
db = new EEEntities();
|
||||
var lstDate = db.JobReport
|
||||
.Where(t => t.gcode == vGcode && t.pdate.CompareTo(str_sd) >= 0 && t.pdate.CompareTo(str_ed) < 0)
|
||||
.Where(t => t.gcode == Pub.vGcode && t.pdate.CompareTo(str_sd) >= 0 && t.pdate.CompareTo(str_ed) < 0)
|
||||
.OrderBy(t => t.pdate)
|
||||
.GroupBy(t => t.pdate).ToList();
|
||||
|
||||
@@ -99,7 +159,7 @@ namespace JobReportMailService
|
||||
//이날짜에는 8시간을 근무 해야 한다
|
||||
days.Add(DateTime.Parse(jobdata.pdate));
|
||||
}
|
||||
Console.WriteLine($"{days.Count} 건의 일자가 확인 되었습니다(기간:{str_sd}~{str_ed}");
|
||||
addmsg($"{days.Count} 건의 일자가 확인 되었습니다(기간:{str_sd}~{str_ed}");
|
||||
|
||||
//사용자 목록과 날짜 목록을 모두 수집했다
|
||||
List<ReportUserData> totWarnList = new List<ReportUserData>();
|
||||
@@ -107,7 +167,7 @@ namespace JobReportMailService
|
||||
{
|
||||
//이사용자의 날짜별 근무시간을 확인한다.
|
||||
db = new EEEntities();
|
||||
var UserDatas = db.vJobReportForUser.Where(t => t.gcode == vGcode && t.id == uid.Key && t.pdate.CompareTo(str_sd) >= 0 && t.pdate.CompareTo(str_ed) < 0).ToList();
|
||||
var UserDatas = db.vJobReportForUser.Where(t => t.gcode == Pub.vGcode && t.id == uid.Key && t.pdate.CompareTo(str_sd) >= 0 && t.pdate.CompareTo(str_ed) < 0).ToList();
|
||||
|
||||
Dictionary<DateTime, double?> WarnList = new Dictionary<DateTime, double?>();
|
||||
foreach (var dt in days.OrderBy(t => t))
|
||||
@@ -129,7 +189,7 @@ namespace JobReportMailService
|
||||
|
||||
if (totWarnList.Count > 0)
|
||||
{
|
||||
Console.WriteLine($"주간 경고 데이터는 {totWarnList.Count} 건 입니다");
|
||||
addmsg($"주간 경고 데이터는 {totWarnList.Count} 건 입니다");
|
||||
|
||||
//오늘잘짜로 등록된 자료가 있으면 처리하지 안흔다.
|
||||
//해당 사용자의 오늘 날짜로 등록된 자동 데이터가 있다면 대상에 넣지 않는다
|
||||
@@ -186,33 +246,53 @@ namespace JobReportMailService
|
||||
//mail_to = "chikyun.kim@amkor.co.kr";
|
||||
|
||||
db = new EEEntities();
|
||||
mail_to = MailSort(mail_to, MailJW.exceptmail);
|
||||
mail_to = Pub.MailSort(mail_to, MailJW.exceptmail);
|
||||
if (string.IsNullOrEmpty(mail_to) == false)
|
||||
{
|
||||
db.MailData.Add(new MailData
|
||||
{
|
||||
gcode = vGcode,
|
||||
gcode = Pub.vGcode,
|
||||
cate = "JW",
|
||||
subject = mail_subject,
|
||||
fromlist = "EETGW@amkor.co.kr",
|
||||
tolist = MailSort(mail_to, MailJW.exceptmail),
|
||||
tolist = Pub.MailSort(mail_to, MailJW.exceptmail),
|
||||
bcc = mail_bcc,
|
||||
cc = MailSort(mail_cc, MailJW.exceptmailcc),
|
||||
cc = Pub.MailSort(mail_cc, MailJW.exceptmailcc),
|
||||
pdate = DateTime.Now.ToShortDateString(),
|
||||
body = mail_body.Replace("{내용}", vmail_body),
|
||||
wuid = "395552",
|
||||
wdate = DateTime.Now,
|
||||
});
|
||||
db.SaveChanges();
|
||||
Console.WriteLine("주간 알림데이터가 등록되었습니다");
|
||||
addmsg("주간 알림데이터가 등록되었습니다");
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("받는사람이 소거되어 메일을 생성하지 않습니다");
|
||||
addmsg("받는사람이 소거되어 메일을 생성하지 않습니다");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void toolStripButton1_Click(object sender, EventArgs e)
|
||||
{
|
||||
taskwait = !taskwait;
|
||||
}
|
||||
|
||||
private void timer1_Tick(object sender, EventArgs e)
|
||||
{
|
||||
if (task != null)
|
||||
{
|
||||
if (task.IsCompleted) this.toolStripButton1.Text = "완료";
|
||||
else if (task.IsCanceled) this.toolStripButton1.Text = "취소";
|
||||
else if (taskwait) this.toolStripButton1.Text = "대기상태";
|
||||
else this.toolStripButton1.Text = "가동중";
|
||||
this.toolStripButton1.Enabled = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.toolStripButton1.Text = "사용불가";
|
||||
this.toolStripButton1.Enabled = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
142
JobReportMailService/fJobReportWeek.resx
Normal file
142
JobReportMailService/fJobReportWeek.resx
Normal file
@@ -0,0 +1,142 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>104, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="toolStripButton1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
|
||||
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
|
||||
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
|
||||
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
|
||||
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
|
||||
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
|
||||
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
|
||||
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
|
||||
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
|
||||
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
83
JobReportMailService/fScheduleDay.Designer.cs
generated
Normal file
83
JobReportMailService/fScheduleDay.Designer.cs
generated
Normal file
@@ -0,0 +1,83 @@
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
partial class fScheduleDay
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(fScheduleDay));
|
||||
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
|
||||
this.toolStripButton1 = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStrip1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// timer1
|
||||
//
|
||||
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
|
||||
//
|
||||
// toolStrip1
|
||||
//
|
||||
this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.toolStripButton1});
|
||||
this.toolStrip1.Location = new System.Drawing.Point(0, 0);
|
||||
this.toolStrip1.Name = "toolStrip1";
|
||||
this.toolStrip1.Size = new System.Drawing.Size(473, 25);
|
||||
this.toolStrip1.TabIndex = 2;
|
||||
this.toolStrip1.Text = "toolStrip1";
|
||||
//
|
||||
// toolStripButton1
|
||||
//
|
||||
this.toolStripButton1.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton1.Image")));
|
||||
this.toolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.toolStripButton1.Name = "toolStripButton1";
|
||||
this.toolStripButton1.Size = new System.Drawing.Size(48, 22);
|
||||
this.toolStripButton1.Text = "Run";
|
||||
this.toolStripButton1.Click += new System.EventHandler(this.toolStripButton1_Click);
|
||||
//
|
||||
// fScheduleDay
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(473, 416);
|
||||
this.Controls.Add(this.toolStrip1);
|
||||
this.Name = "fScheduleDay";
|
||||
this.Text = "프로젝트 스케쥴(일보고)";
|
||||
this.Load += new System.EventHandler(this.fJobReportDay_Load);
|
||||
this.Controls.SetChildIndex(this.toolStrip1, 0);
|
||||
this.toolStrip1.ResumeLayout(false);
|
||||
this.toolStrip1.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.ToolStrip toolStrip1;
|
||||
private System.Windows.Forms.ToolStripButton toolStripButton1;
|
||||
}
|
||||
}
|
||||
245
JobReportMailService/fScheduleDay.cs
Normal file
245
JobReportMailService/fScheduleDay.cs
Normal file
@@ -0,0 +1,245 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
public partial class fScheduleDay : fChildBase
|
||||
{
|
||||
|
||||
public fScheduleDay()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void fJobReportDay_Load(object sender, EventArgs e)
|
||||
{
|
||||
task = Task.Run(() =>
|
||||
{
|
||||
while (taskrun)
|
||||
{
|
||||
if (taskwait)
|
||||
{
|
||||
if(task != null)
|
||||
task.Wait(1000);
|
||||
continue;
|
||||
}
|
||||
|
||||
var ts = DateTime.Now - LastUpdateTime;
|
||||
if (ts.TotalMinutes <= 15)
|
||||
{
|
||||
if ((DateTime.Now - ConsoleTime).TotalHours >= 1.0)
|
||||
{
|
||||
addmsg("15분 미만이라 동작하지 않습니다");
|
||||
ConsoleTime = DateTime.Now;
|
||||
}
|
||||
}
|
||||
else if (DateTime.Now.DayOfWeek == DayOfWeek.Saturday ||
|
||||
DateTime.Now.DayOfWeek == DayOfWeek.Sunday)
|
||||
{
|
||||
//토,일요일에는 동작하지 않는다
|
||||
if ((DateTime.Now - ConsoleTime).TotalHours >= 1.0)
|
||||
{
|
||||
addmsg("토/일/월에는 동작하지 않습니다");
|
||||
ConsoleTime = DateTime.Now;
|
||||
}
|
||||
}
|
||||
else if (DateTime.Now.Hour < 10) //10시부터 동작한다
|
||||
{
|
||||
if ((DateTime.Now - ConsoleTime).TotalHours >= 1.0)
|
||||
{
|
||||
addmsg("9시 이전에는 동작하지 않습니다");
|
||||
ConsoleTime = DateTime.Now;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LastUpdateTime = DateTime.Now;
|
||||
try
|
||||
{
|
||||
RunData();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
addmsg(ex.Message);
|
||||
}
|
||||
}
|
||||
Task.Delay(Delaytime).Wait();
|
||||
}
|
||||
|
||||
});
|
||||
timer1.Start();
|
||||
}
|
||||
|
||||
void RunData()
|
||||
{
|
||||
addmsg("업무일지 미 작성자 추출 작업을 시작 합니다");
|
||||
|
||||
|
||||
var db = new EEEntities();
|
||||
|
||||
//메일양식이 지정되어있는지 체크
|
||||
var MailJD = db.MailForm.Where(t => t.gcode == Pub.vGcode & t.cate == "SJ").FirstOrDefault();
|
||||
|
||||
if (MailJD == null)
|
||||
{
|
||||
//토,일요일에는 동작하지 않는다
|
||||
addmsg("메일 양식(SJ)이 입력되지 않았습니다");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//기준일자는 오늘부터 -15일이다
|
||||
var sd = DateTime.Now.AddDays(-15);
|
||||
var ed = DateTime.Now;
|
||||
var str_sd = sd.ToShortDateString();
|
||||
var str_ed = ed.ToShortDateString();
|
||||
var str_dt = DateTime.Now.ToShortDateString();
|
||||
|
||||
//오늘날짜로 데이터가 등록되어있느지 확인한다.
|
||||
db = new EEEntities();
|
||||
var Existweek = db.MailData.Where(t => t.gcode == Pub.vGcode && t.cate == "SJ" && t.wuid == "395552" && t.pdate == str_dt).Any();
|
||||
if (Existweek)
|
||||
{
|
||||
addmsg($"스케쥴(day)({str_dt}) 보고 메일이 이미 등록되어 있습니다");
|
||||
return;
|
||||
}
|
||||
|
||||
//대상 사용자 목록을 추출한다
|
||||
var ta = new DataSet1TableAdapters.vMailingProjectScheduleTableAdapter();
|
||||
var users = new DataSet1.vMailingProjectScheduleDataTable();
|
||||
ta.Fill(users);
|
||||
//var users = db.vMailingProjectSchedule.ToList();// .vJobReportForUser.Where(t => t.gcode == Pub.vGcode).GroupBy(t => t.id);
|
||||
|
||||
addmsg($"{users.Count} 명의 데이터가 확인 되었습니다");
|
||||
|
||||
//메일데이터 생성
|
||||
var body = new System.Text.StringBuilder();
|
||||
body.AppendLine("<table border='1' cellspacing='1' cellpadding='1' style='text-align:center;'>");
|
||||
body.AppendLine("<tr>");
|
||||
body.AppendLine("<td>진행(%)</td>");
|
||||
body.AppendLine("<td>Project</td>");
|
||||
body.AppendLine("<td>Champion</td>");
|
||||
body.AppendLine("<td>등록일</td>");
|
||||
body.AppendLine("<td>스케쥴</td>");
|
||||
body.AppendLine("</tr>");
|
||||
|
||||
var gp = users.GroupBy(t => t.idx);
|
||||
foreach (var row in gp)
|
||||
{
|
||||
var prc = row.Sum(t => t.progress) / row.Count();
|
||||
var dr = row.FirstOrDefault();
|
||||
body.AppendLine($"<tr>");
|
||||
body.AppendLine($"<td>{prc}</td>");
|
||||
body.AppendLine($"<td>[{dr.idx}] {dr.name}</td>");
|
||||
body.AppendLine($"<td>{dr.userManager}</td>");
|
||||
body.AppendLine($"<td>{dr.pdate}</td>");
|
||||
body.AppendLine("<td>");
|
||||
body.AppendLine("<table border='1' cellspacing='1' cellpadding='1' style='text-align:center;'>");
|
||||
body.AppendLine("<tr>");
|
||||
body.AppendLine("<td rowspan='2'>No</td><td rowspan='2'>Title</td><td colspan='2'>Plan(ww)</td><td colspan='2'>Actual(ww)</td><td>진행</td>");
|
||||
body.AppendLine("</tr>");
|
||||
body.AppendLine("<tr>");
|
||||
body.AppendLine("<td>시작</td><td>완료</td><td>시작</td><td>완료</td><td>%</td>");
|
||||
body.AppendLine("</tr>");
|
||||
var ll = row.OrderBy(t => t.seq).ToList();
|
||||
foreach (var srow in ll)
|
||||
{
|
||||
body.AppendLine($"<tr>");
|
||||
body.AppendLine($"<td>{srow.seq}</td>");
|
||||
body.AppendLine($"<td>{srow.title}</td>");
|
||||
body.AppendLine($"<td>{srow.sw}</td>");
|
||||
body.AppendLine($"<td>{srow.ew}</td>");
|
||||
body.AppendLine($"<td>{srow.swa}</td>");
|
||||
body.AppendLine($"<td>{srow.ewa}</td>");
|
||||
body.AppendLine($"<td>{srow.progress}</td>");
|
||||
body.AppendLine($"</tr>");
|
||||
}
|
||||
body.AppendLine("</table>");
|
||||
body.AppendLine("</td>");
|
||||
//여기에 스케쥴이 들어가야한다
|
||||
body.AppendLine($"</tr>");
|
||||
}
|
||||
body.AppendLine("</table>");
|
||||
|
||||
//일별경고(월요일제외)
|
||||
|
||||
if (MailJD != null)
|
||||
{
|
||||
var mail_subject = MailJD.subject;//.Replace("{담당자}", userinfo.name).Replace("{사번}", userinfo.id);
|
||||
var mail_to = MailJD.tolist;//.Replace("{담당자}", userinfo.email);
|
||||
var mail_cc = string.Empty; //
|
||||
if (MailJD.cc != null) mail_cc = MailJD.cc;//.Replace("{담당자}", userinfo.email);
|
||||
var mail_bcc = string.Empty;
|
||||
if (MailJD.bcc != null) mail_bcc = MailJD.bcc;//.Replace("{담당자}", userinfo.email);
|
||||
var mail_body = MailJD.body;//.Replace("{담당자}", userinfo.name);
|
||||
//mail_body = mail_body.Replace("{사번}", userinfo.id);
|
||||
|
||||
//메일본문을 생성해서 진행해야함
|
||||
var mail_content = mail_body.Replace("{data}", body.ToString());
|
||||
|
||||
//메일데이터를 생성한다.
|
||||
//mail_to = "chikyun.kim@amkor.co.kr";
|
||||
//mail_bcc = string.Empty;
|
||||
//mail_cc = string.Empty;
|
||||
|
||||
mail_to = Pub.MailSort(mail_to, MailJD.exceptmail);
|
||||
if (string.IsNullOrEmpty(mail_to) == false)
|
||||
{
|
||||
db = new EEEntities();
|
||||
db.MailData.Add(new MailData
|
||||
{
|
||||
gcode = Pub.vGcode,
|
||||
cate = "SJ",
|
||||
subject = mail_subject,
|
||||
fromlist = "eetgw@amkor.co.kr",
|
||||
tolist = Pub.MailSort(mail_to, MailJD.exceptmail),
|
||||
bcc = mail_bcc,
|
||||
cc = Pub.MailSort(mail_cc, MailJD.exceptmailcc),
|
||||
pdate = DateTime.Now.ToShortDateString(),
|
||||
body = mail_content,
|
||||
wuid = "395552",
|
||||
wdate = DateTime.Now,
|
||||
});
|
||||
db.SaveChanges();
|
||||
addmsg($"메일 전송 완료(스케쥴day)");
|
||||
System.Threading.Thread.Sleep(10000);
|
||||
}
|
||||
else
|
||||
{
|
||||
addmsg("받는사람이 소거되어 메일을 생성하지 않습니다");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void toolStripButton1_Click(object sender, EventArgs e)
|
||||
{
|
||||
taskwait = !taskwait;
|
||||
}
|
||||
|
||||
private void timer1_Tick(object sender, EventArgs e)
|
||||
{
|
||||
if (task != null)
|
||||
{
|
||||
if (task.IsCompleted) this.toolStripButton1.Text = "완료";
|
||||
else if (task.IsCanceled) this.toolStripButton1.Text = "취소";
|
||||
else if (taskwait) this.toolStripButton1.Text = "대기상태";
|
||||
else this.toolStripButton1.Text = "가동중";
|
||||
this.toolStripButton1.Enabled = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.toolStripButton1.Text = "사용불가";
|
||||
this.toolStripButton1.Enabled = false;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
142
JobReportMailService/fScheduleDay.resx
Normal file
142
JobReportMailService/fScheduleDay.resx
Normal file
@@ -0,0 +1,142 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>104, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="toolStripButton1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
|
||||
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
|
||||
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
|
||||
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
|
||||
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
|
||||
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
|
||||
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
|
||||
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
|
||||
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
|
||||
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
83
JobReportMailService/fScheduleDayWeek.Designer.cs
generated
Normal file
83
JobReportMailService/fScheduleDayWeek.Designer.cs
generated
Normal file
@@ -0,0 +1,83 @@
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
partial class fScheduleDayWeek
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(fScheduleDayWeek));
|
||||
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
|
||||
this.toolStripButton1 = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStrip1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// timer1
|
||||
//
|
||||
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
|
||||
//
|
||||
// toolStrip1
|
||||
//
|
||||
this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.toolStripButton1});
|
||||
this.toolStrip1.Location = new System.Drawing.Point(0, 0);
|
||||
this.toolStrip1.Name = "toolStrip1";
|
||||
this.toolStrip1.Size = new System.Drawing.Size(473, 25);
|
||||
this.toolStrip1.TabIndex = 2;
|
||||
this.toolStrip1.Text = "toolStrip1";
|
||||
//
|
||||
// toolStripButton1
|
||||
//
|
||||
this.toolStripButton1.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton1.Image")));
|
||||
this.toolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.toolStripButton1.Name = "toolStripButton1";
|
||||
this.toolStripButton1.Size = new System.Drawing.Size(48, 22);
|
||||
this.toolStripButton1.Text = "Run";
|
||||
this.toolStripButton1.Click += new System.EventHandler(this.toolStripButton1_Click);
|
||||
//
|
||||
// fScheduleDayWeek
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(473, 416);
|
||||
this.Controls.Add(this.toolStrip1);
|
||||
this.Name = "fScheduleDayWeek";
|
||||
this.Text = "프로젝트 스케쥴(주보고)";
|
||||
this.Load += new System.EventHandler(this.fJobReportDay_Load);
|
||||
this.Controls.SetChildIndex(this.toolStrip1, 0);
|
||||
this.toolStrip1.ResumeLayout(false);
|
||||
this.toolStrip1.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.ToolStrip toolStrip1;
|
||||
private System.Windows.Forms.ToolStripButton toolStripButton1;
|
||||
}
|
||||
}
|
||||
242
JobReportMailService/fScheduleDayWeek.cs
Normal file
242
JobReportMailService/fScheduleDayWeek.cs
Normal file
@@ -0,0 +1,242 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
public partial class fScheduleDayWeek : fChildBase
|
||||
{
|
||||
|
||||
public fScheduleDayWeek()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void fJobReportDay_Load(object sender, EventArgs e)
|
||||
{
|
||||
task = Task.Run(() =>
|
||||
{
|
||||
while (taskrun)
|
||||
{
|
||||
if (taskwait)
|
||||
{
|
||||
if(task != null)
|
||||
task.Wait(1000);
|
||||
continue;
|
||||
}
|
||||
|
||||
var ts = DateTime.Now - LastUpdateTime;
|
||||
if (ts.TotalMinutes <= 15)
|
||||
{
|
||||
if ((DateTime.Now - ConsoleTime).TotalHours >= 1.0)
|
||||
{
|
||||
addmsg("15분 미만이라 동작하지 않습니다");
|
||||
ConsoleTime = DateTime.Now;
|
||||
}
|
||||
}
|
||||
else if (DateTime.Now.DayOfWeek != DayOfWeek.Monday)
|
||||
{
|
||||
//토,일요일에는 동작하지 않는다
|
||||
if ((DateTime.Now - ConsoleTime).TotalHours >= 1.0)
|
||||
{
|
||||
addmsg("월요일에만 동작 합니다");
|
||||
ConsoleTime = DateTime.Now;
|
||||
}
|
||||
}
|
||||
else if (DateTime.Now.Hour < 10) //10시부터 동작한다
|
||||
{
|
||||
if ((DateTime.Now - ConsoleTime).TotalHours >= 1.0)
|
||||
{
|
||||
addmsg("9시 이전에는 동작하지 않습니다");
|
||||
ConsoleTime = DateTime.Now;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LastUpdateTime = DateTime.Now;
|
||||
try
|
||||
{
|
||||
RunData();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
addmsg(ex.Message);
|
||||
}
|
||||
}
|
||||
Task.Delay(Delaytime).Wait();
|
||||
}
|
||||
|
||||
});
|
||||
timer1.Start();
|
||||
}
|
||||
|
||||
void RunData()
|
||||
{
|
||||
addmsg("스케쥴관리(주) 미 작성자 추출 작업을 시작 합니다");
|
||||
|
||||
|
||||
var db = new EEEntities();
|
||||
|
||||
//메일양식이 지정되어있는지 체크
|
||||
var MailJD = db.MailForm.Where(t => t.gcode == Pub.vGcode & t.cate == "SP").FirstOrDefault();
|
||||
|
||||
if (MailJD == null)
|
||||
{
|
||||
//토,일요일에는 동작하지 않는다
|
||||
addmsg("메일 양식(SP)이 입력되지 않았습니다");
|
||||
return;
|
||||
}
|
||||
|
||||
//기준일자는 오늘부터 -15일이다
|
||||
var sd = DateTime.Now.AddDays(-15);
|
||||
var ed = DateTime.Now;
|
||||
var str_sd = sd.ToShortDateString();
|
||||
var str_ed = ed.ToShortDateString();
|
||||
var str_dt = DateTime.Now.ToShortDateString();
|
||||
|
||||
//오늘날짜로 데이터가 등록되어있느지 확인한다.
|
||||
db = new EEEntities();
|
||||
var Existweek = db.MailData.Where(t => t.gcode == Pub.vGcode && t.cate == "SP" && t.wuid == "395552" && t.pdate == str_dt).Any();
|
||||
if (Existweek)
|
||||
{
|
||||
addmsg($"스케쥴(day)({str_dt}) 보고 메일이 이미 등록되어 있습니다");
|
||||
return;
|
||||
}
|
||||
|
||||
//대상 사용자 목록을 추출한다
|
||||
var ta = new DataSet1TableAdapters.vMailingProjectScheduleTableAdapter();
|
||||
var users = new DataSet1.vMailingProjectScheduleDataTable();
|
||||
ta.Fill(users);
|
||||
//var users = db.vMailingProjectSchedule.ToList();// .vJobReportForUser.Where(t => t.gcode == Pub.vGcode).GroupBy(t => t.id);
|
||||
|
||||
addmsg($"{users.Count} 명의 데이터가 확인 되었습니다");
|
||||
|
||||
//메일데이터 생성
|
||||
var body = new System.Text.StringBuilder();
|
||||
body.AppendLine("<table border='1' cellspacing='1' cellpadding='1' style='text-align:center;'>");
|
||||
body.AppendLine("<tr>");
|
||||
body.AppendLine("<td>진행(%)</td>");
|
||||
body.AppendLine("<td>Project</td>");
|
||||
body.AppendLine("<td>Champion</td>");
|
||||
body.AppendLine("<td>등록일</td>");
|
||||
body.AppendLine("<td>스케쥴</td>");
|
||||
body.AppendLine("</tr>");
|
||||
|
||||
var gp = users.GroupBy(t => t.idx);
|
||||
foreach (var row in gp)
|
||||
{
|
||||
var prc = row.Sum(t => t.progress) / row.Count();
|
||||
var dr = row.FirstOrDefault();
|
||||
body.AppendLine($"<tr>");
|
||||
body.AppendLine($"<td>{prc}</td>");
|
||||
body.AppendLine($"<td>[{dr.idx}] {dr.name}</td>");
|
||||
body.AppendLine($"<td>{dr.userManager}</td>");
|
||||
body.AppendLine($"<td>{dr.pdate}</td>");
|
||||
body.AppendLine("<td>");
|
||||
body.AppendLine("<table border='1' cellspacing='1' cellpadding='1' style='text-align:center;'>");
|
||||
body.AppendLine("<tr>");
|
||||
body.AppendLine("<td rowspan='2'>No</td><td rowspan='2'>Title</td><td colspan='2'>Plan(ww)</td><td colspan='2'>Actual(ww)</td><td>진행</td>");
|
||||
body.AppendLine("</tr>");
|
||||
body.AppendLine("<tr>");
|
||||
body.AppendLine("<td>시작</td><td>완료</td><td>시작</td><td>완료</td><td>%</td>");
|
||||
body.AppendLine("</tr>");
|
||||
var ll = row.OrderBy(t => t.seq).ToList();
|
||||
foreach (var srow in ll)
|
||||
{
|
||||
body.AppendLine($"<tr>");
|
||||
body.AppendLine($"<td>{srow.seq}</td>");
|
||||
body.AppendLine($"<td>{srow.title}</td>");
|
||||
body.AppendLine($"<td>{srow.sw}</td>");
|
||||
body.AppendLine($"<td>{srow.ew}</td>");
|
||||
body.AppendLine($"<td>{srow.swa}</td>");
|
||||
body.AppendLine($"<td>{srow.ewa}</td>");
|
||||
body.AppendLine($"<td>{srow.progress}</td>");
|
||||
body.AppendLine($"</tr>");
|
||||
}
|
||||
body.AppendLine("</table>");
|
||||
body.AppendLine("</td>");
|
||||
//여기에 스케쥴이 들어가야한다
|
||||
body.AppendLine($"</tr>");
|
||||
}
|
||||
body.AppendLine("</table>");
|
||||
|
||||
//일별경고(월요일제외)
|
||||
|
||||
if (MailJD != null)
|
||||
{
|
||||
var mail_subject = MailJD.subject;//.Replace("{담당자}", userinfo.name).Replace("{사번}", userinfo.id);
|
||||
var mail_to = MailJD.tolist;//.Replace("{담당자}", userinfo.email);
|
||||
var mail_cc = string.Empty; //
|
||||
if (MailJD.cc != null) mail_cc = MailJD.cc;//.Replace("{담당자}", userinfo.email);
|
||||
var mail_bcc = string.Empty;
|
||||
if (MailJD.bcc != null) mail_bcc = MailJD.bcc;//.Replace("{담당자}", userinfo.email);
|
||||
var mail_body = MailJD.body;//.Replace("{담당자}", userinfo.name);
|
||||
//mail_body = mail_body.Replace("{사번}", userinfo.id);
|
||||
|
||||
//메일본문을 생성해서 진행해야함
|
||||
var mail_content = mail_body.Replace("{data}", body.ToString());
|
||||
|
||||
//메일데이터를 생성한다.
|
||||
//mail_to = "chikyun.kim@amkor.co.kr";
|
||||
//mail_bcc = string.Empty;
|
||||
//mail_cc = string.Empty;
|
||||
|
||||
mail_to = Pub.MailSort(mail_to, MailJD.exceptmail);
|
||||
if (string.IsNullOrEmpty(mail_to) == false)
|
||||
{
|
||||
db = new EEEntities();
|
||||
db.MailData.Add(new MailData
|
||||
{
|
||||
gcode = Pub.vGcode,
|
||||
cate = "SP",
|
||||
subject = mail_subject,
|
||||
fromlist = "eetgw@amkor.co.kr",
|
||||
tolist = Pub.MailSort(mail_to, MailJD.exceptmail),
|
||||
bcc = mail_bcc,
|
||||
cc = Pub.MailSort(mail_cc, MailJD.exceptmailcc),
|
||||
pdate = DateTime.Now.ToShortDateString(),
|
||||
body = mail_content,
|
||||
wuid = "395552",
|
||||
wdate = DateTime.Now,
|
||||
});
|
||||
db.SaveChanges();
|
||||
addmsg($"메일 전송 완료(스케쥴day)");
|
||||
System.Threading.Thread.Sleep(10000);
|
||||
}
|
||||
else
|
||||
{
|
||||
addmsg("받는사람이 소거되어 메일을 생성하지 않습니다");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void toolStripButton1_Click(object sender, EventArgs e)
|
||||
{
|
||||
taskwait = !taskwait;
|
||||
}
|
||||
|
||||
private void timer1_Tick(object sender, EventArgs e)
|
||||
{
|
||||
if (task != null)
|
||||
{
|
||||
if (task.IsCompleted) this.toolStripButton1.Text = "완료";
|
||||
else if (task.IsCanceled) this.toolStripButton1.Text = "취소";
|
||||
else if (taskwait) this.toolStripButton1.Text = "대기상태";
|
||||
else this.toolStripButton1.Text = "가동중";
|
||||
this.toolStripButton1.Enabled = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.toolStripButton1.Text = "사용불가";
|
||||
this.toolStripButton1.Enabled = false;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
142
JobReportMailService/fScheduleDayWeek.resx
Normal file
142
JobReportMailService/fScheduleDayWeek.resx
Normal file
@@ -0,0 +1,142 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>104, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="toolStripButton1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
|
||||
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
|
||||
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
|
||||
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
|
||||
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
|
||||
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
|
||||
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
|
||||
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
|
||||
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
|
||||
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
36
JobReportMailService/mailform_schedule.html
Normal file
36
JobReportMailService/mailform_schedule.html
Normal file
@@ -0,0 +1,36 @@
|
||||
<html>
|
||||
<head>
|
||||
<style>
|
||||
* {
|
||||
font-family:"맑은 고딕";
|
||||
font-weight:bold;
|
||||
font-size:50px;
|
||||
}
|
||||
|
||||
</style>
|
||||
<body>
|
||||
|
||||
<table border="1" cellpadding="1" cellspacing="1" style='text-align: center;'>
|
||||
<tr>
|
||||
<td rowspan="2">
|
||||
fdasf
|
||||
</td>
|
||||
<td>
|
||||
맑은 고딕 테스트
|
||||
</td>
|
||||
<td>
|
||||
fdasf
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
||||
<td>
|
||||
fdasf
|
||||
</td>
|
||||
<td>
|
||||
fdasf
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
@@ -32,5 +32,8 @@ namespace JobReportMailService
|
||||
public string memo { get; set; }
|
||||
public string processs { get; set; }
|
||||
public string id { get; set; }
|
||||
public string state { get; set; }
|
||||
public Nullable<bool> useJobReport { get; set; }
|
||||
public Nullable<bool> useUserState { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
31
JobReportMailService/vMailingProjectSchedule.cs
Normal file
31
JobReportMailService/vMailingProjectSchedule.cs
Normal file
@@ -0,0 +1,31 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 이 코드는 템플릿에서 생성되었습니다.
|
||||
//
|
||||
// 이 파일을 수동으로 변경하면 응용 프로그램에서 예기치 않은 동작이 발생할 수 있습니다.
|
||||
// 이 파일을 수동으로 변경하면 코드가 다시 생성될 때 변경 내용을 덮어씁니다.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
public partial class vMailingProjectSchedule
|
||||
{
|
||||
public int idx { get; set; }
|
||||
public string pdate { get; set; }
|
||||
public string name { get; set; }
|
||||
public string userManager { get; set; }
|
||||
public Nullable<int> seq { get; set; }
|
||||
public string title { get; set; }
|
||||
public Nullable<int> sw { get; set; }
|
||||
public Nullable<int> ew { get; set; }
|
||||
public Nullable<int> swa { get; set; }
|
||||
public Nullable<int> progress { get; set; }
|
||||
public Nullable<int> ewa { get; set; }
|
||||
public Nullable<int> ww { get; set; }
|
||||
public string memo { get; set; }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user