This commit is contained in:
chi
2021-02-22 20:13:19 +09:00
parent 55510b84b8
commit 71698b5d8b
138 changed files with 19619 additions and 6658 deletions

1676
JobReportMailService/DataSet1.Designer.cs generated Normal file

File diff suppressed because it is too large Load Diff

View 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>

View 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>

View 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>

View File

@@ -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; }
}
}

View File

@@ -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>

View 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;
}
}

View 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();
}
}
}

View 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>

View File

@@ -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; }
}
}

View File

@@ -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>

View File

@@ -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>

View File

@@ -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());
}
}
}

View 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분단위로 체크한다
// }
// }
// }
//}

View 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);
}
}
}

View 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;
}
}

View 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)
{
}
}
}
}
}

View 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>

View 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;
}
}

View File

@@ -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;
}
}
}
}

View 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>

View 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;
}
}

View File

@@ -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;
}
}
}
}

View 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>

View 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;
}
}

View 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;
}
}
}
}

View 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>

View 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;
}
}

View 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;
}
}
}
}

View 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>

View 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>

View File

@@ -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; }
}
}

View 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; }
}
}