Compare commits

...
1 Commits
Author SHA1 Message Date
sryang 672a9d8a7b chore: 將 branches 目錄移出版控並加入 .gitignore 2026-09-13 14:27:54 +08:00
715 changed files with 3 additions and 171427 deletions
+3
View File
@@ -43,6 +43,9 @@ packages/
# Subversion (此專案曾用 SVN)
.svn/
# 分支備份目錄(僅保留在本機)
branches/
# ASP.NET / IIS
*.Cache
*.dll.refresh
-13
View File
@@ -1,13 +0,0 @@
# All files
[*]
indent_style = space
# Xml files
[*.xml]
indent_size = 2
# 設定所有文字檔案使用 UTF-8 編碼
[*]
charset = utf-8-bom
@@ -1,29 +0,0 @@
<!--
您可以在 <windir>\Microsoft.NET\Framework\<ver>\CONFIG\Browsers 找到現有的瀏覽器定義
-->
<browsers>
<browser id="Safari" parentID="Safari1Plus">
<identification>
<userAgent match="Safari/\d+\.\d+" />
</identification>
<capture>
<userAgent match="Version/(?'version'\d+\.\d+)" />
</capture>
<capabilities>
<capability name="browser" value="Safari" />
<capability name="version" value="${version}" />
</capabilities>
<controlAdapters>
<adapter controlType="System.Web.UI.WebControls.Menu"
adapterType="" />
</controlAdapters>
</browser>
<browser id="GoogleChrome" parentID="Safari">
<identification>
<userAgent match="Chrome/(?'version'\d+\.\d+)" />
</identification>
<capabilities>
<capability name="browser" value="Googlebot" />
</capabilities>
</browser>
</browsers>
@@ -1,547 +0,0 @@
a.button, button, input[type=button], submit, input[type=submit] {
color: #000000;
padding: 0;
margin: 2px;
/* height: 25px; */
line-height: 25px;
display: inline-block;
font-family: Arial, Helvetica, sans-serif, "Microsoft JhengHei", "Microsoft YaHei", MingLiU, SimSun;
font-size: 12pt;
text-decoration: none;
vertical-align: top;
text-align: center;
background-repeat: no-repeat;
background-position: 0 0;
/* 圓角 */
-webkit-border-radius: 2px;
-moz-border-radius: 2px;
border-radius: 2px
}
a.button:hover, button:hover, input[type=button]:hover, submit:hover, input[type=submit]:hover {
font-weight: bold;
}
a.blue120, button.blue120, input[type=button].blue120, submit.blue120, input[type=submit].blue120 {
width: 120px;
color: #2172B5;
border: 1px solid #2172B5;
FILTER: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#8CC6EF,endColorStr=#FFFFFF,gradientType=0);
background: -moz-linear-gradient(top, #8CC6EF, #FFFFFF);
background: -ms-linear-gradient(top, #8CC6EF, #FFFFFF);
background: -linear-gradient(top, #8CC6EF, #FFFFFF);
background: -webkit-gradient(linear, left top, left bottom, from(#8CC6EF), to(#FFFFFF));
background: -o-linear-gradient(top, #8CC6EF, #FFFFFF)
}
a.orange120, button.orange120, input[type=button].orange120, submit.orange120, input[type=submit].orange120 {
width: 120px;
color: #B25300;
border: 1px solid #B25300;
FILTER: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#FFAA5F,endColorStr=#FFFFFF,gradientType=0);
background: -moz-linear-gradient(top, #FFAA5F, #FFFFFF);
background: -ms-linear-gradient(top, #FFAA5F, #FFFFFF);
background: -linear-gradient(top, #FFAA5F, #FFFFFF);
background: -webkit-gradient(linear, left top, left bottom, from(#FFAA5F), to(#FFFFFF));
background: -o-linear-gradient(top, #FFAA5F, #FFFFFF)
}
a.red120, button.red120, input[type=button].red120, submit.red120, input[type=submit].red120 {
width: 120px;
color: #A71717;
border: 1px solid #A71717;
FILTER: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#F4B4B4,endColorStr=#FFFFFF,gradientType=0);
background: -moz-linear-gradient(top, #F4B4B4, #FFFFFF);
background: -ms-linear-gradient(top, #F4B4B4, #FFFFFF);
background: -linear-gradient(top, #F4B4B4, #FFFFFF);
background: -webkit-gradient(linear, left top, left bottom, from(#F4B4B4), to(#FFFFFF));
background: -o-linear-gradient(top, #F4B4B4, #FFFFFF)
}
a.green120, button.green120, input[type=button].green120, submit.green120, input[type=submit].green120 {
width: 120px;
color: #055705;
border: 1px solid #055705;
FILTER: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#6EF66E,endColorStr=#FFFFFF,gradientType=0);
background: -moz-linear-gradient(top, #6EF66E, #FFFFFF);
background: -ms-linear-gradient(top, #6EF66E, #FFFFFF);
background: -linear-gradient(top, #6EF66E, #FFFFFF);
background: -webkit-gradient(linear, left top, left bottom, from(#6EF66E), to(#FFFFFF));
background: -o-linear-gradient(top, #6EF66E, #FFFFFF)
}
a.purple120, button.purple120, input[type=button].purple120, submit.purple120, input[type=submit].purple120 {
width: 120px;
color: #800080;
border: 1px solid #800080;
FILTER: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#F694F4,endColorStr=#FFFFFF,gradientType=0);
background: -moz-linear-gradient(top, #F694F4, #FFFFFF);
background: -ms-linear-gradient(top, #F694F4, #FFFFFF);
background: -linear-gradient(top, #F694F4, #FFFFFF);
background: -webkit-gradient(linear, left top, left bottom, from(#F694F4), to(#FFFFFF));
background: -o-linear-gradient(top, #F694F4, #FFFFFF)
}
a.gray120, button.gray120, input[type=button].gray120, submit.gray120, input[type=submit].gray120 {
width: 120px;
color: #303030;
border: 1px solid #A7A7A7;
FILTER: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#D0D0D0,endColorStr=#FFFFFF,gradientType=0);
background: -moz-linear-gradient(top, #D0D0D0, #FFFFFF);
background: -ms-linear-gradient(top, #D0D0D0, #FFFFFF);
background: -linear-gradient(top, #D0D0D0, #FFFFFF);
background: -webkit-gradient(linear, left top, left bottom, from(#D0D0D0), to(#FFFFFF));
background: -o-linear-gradient(top, #D0D0D0, #FFFFFF)
}
a.yellow120, button.yellow120, input[type=button].yellow120, submit.yellow120, input[type=submit].yellow120 {
width: 120px;
color: #97A004;
border: 1px solid #97A004;
FILTER: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#FAFFA3,endColorStr=#FFFFFF,gradientType=0);
background: -moz-linear-gradient(top, #FAFFA3, #FFFFFF);
background: -ms-linear-gradient(top, #FAFFA3, #FFFFFF);
background: -linear-gradient(top, #FAFFA3, #FFFFFF);
background: -webkit-gradient(linear, left top, left bottom, from(#FAFFA3), to(#FFFFFF));
background: -o-linear-gradient(top, #FAFFA3, #FFFFFF)
}
a.blue100, button.blue100, input[type=button].blue100, submit.blue100, input[type=submit].blue100 {
width: 100px;
color: #2172B5;
border: 1px solid #2172B5;
FILTER: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#8CC6EF,endColorStr=#FFFFFF,gradientType=0);
background: -moz-linear-gradient(top, #8CC6EF, #FFFFFF);
background: -ms-linear-gradient(top, #8CC6EF, #FFFFFF);
background: -linear-gradient(top, #8CC6EF, #FFFFFF);
background: -webkit-gradient(linear, left top, left bottom, from(#8CC6EF), to(#FFFFFF));
background: -o-linear-gradient(top, #8CC6EF, #FFFFFF)
}
a.orange100, button.orange100, input[type=button].orange100, submit.orange100, input[type=submit].orange100 {
width: 100px;
color: #B25300;
border: 1px solid #B25300;
FILTER: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#FFAA5F,endColorStr=#FFFFFF,gradientType=0);
background: -moz-linear-gradient(top, #FFAA5F, #FFFFFF);
background: -ms-linear-gradient(top, #FFAA5F, #FFFFFF);
background: -linear-gradient(top, #FFAA5F, #FFFFFF);
background: -webkit-gradient(linear, left top, left bottom, from(#FFAA5F), to(#FFFFFF));
background: -o-linear-gradient(top, #FFAA5F, #FFFFFF)
}
a.red100, button.red100, input[type=button].red100, submit.red100, input[type=submit].red100 {
width: 100px;
color: #A71717;
border: 1px solid #A71717;
FILTER: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#F4B4B4,endColorStr=#FFFFFF,gradientType=0);
background: -moz-linear-gradient(top, #F4B4B4, #FFFFFF);
background: -ms-linear-gradient(top, #F4B4B4, #FFFFFF);
background: -linear-gradient(top, #F4B4B4, #FFFFFF);
background: -webkit-gradient(linear, left top, left bottom, from(#F4B4B4), to(#FFFFFF));
background: -o-linear-gradient(top, #F4B4B4, #FFFFFF)
}
a.green100, button.green100, input[type=button].green100, submit.green100, input[type=submit].green100 {
width: 100px;
color: #055705;
border: 1px solid #055705;
FILTER: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#6EF66E,endColorStr=#FFFFFF,gradientType=0);
background: -moz-linear-gradient(top, #6EF66E, #FFFFFF);
background: -ms-linear-gradient(top, #6EF66E, #FFFFFF);
background: -linear-gradient(top, #6EF66E, #FFFFFF);
background: -webkit-gradient(linear, left top, left bottom, from(#6EF66E), to(#FFFFFF));
background: -o-linear-gradient(top, #6EF66E, #FFFFFF)
}
a.purple100, button.purple100, input[type=button].purple100, submit.purple100, input[type=submit].purple100 {
width: 100px;
color: #800080;
border: 1px solid #800080;
FILTER: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#F694F4,endColorStr=#FFFFFF,gradientType=0);
background: -moz-linear-gradient(top, #F694F4, #FFFFFF);
background: -ms-linear-gradient(top, #F694F4, #FFFFFF);
background: -linear-gradient(top, #F694F4, #FFFFFF);
background: -webkit-gradient(linear, left top, left bottom, from(#F694F4), to(#FFFFFF));
background: -o-linear-gradient(top, #F694F4, #FFFFFF)
}
a.gray100, button.gray100, input[type=button].gray100, submit.gray100, input[type=submit].gray100 {
width: 100px;
color: #303030;
border: 1px solid #A7A7A7;
FILTER: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#D0D0D0,endColorStr=#FFFFFF,gradientType=0);
background: -moz-linear-gradient(top, #D0D0D0, #FFFFFF);
background: -ms-linear-gradient(top, #D0D0D0, #FFFFFF);
background: -linear-gradient(top, #D0D0D0, #FFFFFF);
background: -webkit-gradient(linear, left top, left bottom, from(#D0D0D0), to(#FFFFFF));
background: -o-linear-gradient(top, #D0D0D0, #FFFFFF)
}
a.yellow100, button.yellow100, input[type=button].yellow100, submit.yellow100, input[type=submit].yellow100 {
width: 100px;
color: #97A004;
border: 1px solid #97A004;
FILTER: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#FAFFA3,endColorStr=#FFFFFF,gradientType=0);
background: -moz-linear-gradient(top, #FAFFA3, #FFFFFF);
background: -ms-linear-gradient(top, #FAFFA3, #FFFFFF);
background: -linear-gradient(top, #FAFFA3, #FFFFFF);
background: -webkit-gradient(linear, left top, left bottom, from(#FAFFA3), to(#FFFFFF));
background: -o-linear-gradient(top, #FAFFA3, #FFFFFF)
}
a.blue80, button.blue80, input[type=button].blue80, submit.blue80, input[type=submit].blue80 {
width: 80px;
color: #2172B5;
border: 1px solid #2172B5;
FILTER: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#8CC6EF,endColorStr=#FFFFFF,gradientType=0);
background: -moz-linear-gradient(top, #8CC6EF, #FFFFFF);
background: -ms-linear-gradient(top, #8CC6EF, #FFFFFF);
background: -linear-gradient(top, #8CC6EF, #FFFFFF);
background: -webkit-gradient(linear, left top, left bottom, from(#8CC6EF), to(#FFFFFF));
background: -o-linear-gradient(top, #8CC6EF, #FFFFFF)
}
a.orange80, button.orange80, input[type=button].orange80, submit.orange80, input[type=submit].orange80 {
width: 80px;
color: #B25300;
border: 1px solid #B25300;
FILTER: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#FFAA5F,endColorStr=#FFFFFF,gradientType=0);
background: -moz-linear-gradient(top, #FFAA5F, #FFFFFF);
background: -ms-linear-gradient(top, #FFAA5F, #FFFFFF);
background: -linear-gradient(top, #FFAA5F, #FFFFFF);
background: -webkit-gradient(linear, left top, left bottom, from(#FFAA5F), to(#FFFFFF));
background: -o-linear-gradient(top, #FFAA5F, #FFFFFF)
}
a.red80, button.red80, input[type=button].red80, submit.red80, input[type=submit].red80 {
width: 80px;
color: #A71717;
border: 1px solid #A71717;
FILTER: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#F4B4B4,endColorStr=#FFFFFF,gradientType=0);
background: -moz-linear-gradient(top, #F4B4B4, #FFFFFF);
background: -ms-linear-gradient(top, #F4B4B4, #FFFFFF);
background: -linear-gradient(top, #F4B4B4, #FFFFFF);
background: -webkit-gradient(linear, left top, left bottom, from(#F4B4B4), to(#FFFFFF));
background: -o-linear-gradient(top, #F4B4B4, #FFFFFF)
}
a.green80, button.green80, input[type=button].green80, submit.green80, input[type=submit].green80 {
width: 80px;
color: #055705;
border: 1px solid #055705;
FILTER: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#6EF66E,endColorStr=#FFFFFF,gradientType=0);
background: -moz-linear-gradient(top, #6EF66E, #FFFFFF);
background: -ms-linear-gradient(top, #6EF66E, #FFFFFF);
background: -linear-gradient(top, #6EF66E, #FFFFFF);
background: -webkit-gradient(linear, left top, left bottom, from(#6EF66E), to(#FFFFFF));
background: -o-linear-gradient(top, #6EF66E, #FFFFFF)
}
a.purple80, button.purple80, input[type=button].purple80, submit.purple80, input[type=submit].purple80 {
width: 80px;
color: #800080;
border: 1px solid #800080;
FILTER: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#F694F4,endColorStr=#FFFFFF,gradientType=0);
background: -moz-linear-gradient(top, #F694F4, #FFFFFF);
background: -ms-linear-gradient(top, #F694F4, #FFFFFF);
background: -linear-gradient(top, #F694F4, #FFFFFF);
background: -webkit-gradient(linear, left top, left bottom, from(#F694F4), to(#FFFFFF));
background: -o-linear-gradient(top, #F694F4, #FFFFFF)
}
a.gray80, button.gray80, input[type=button].gray80, submit.gray80, input[type=submit].gray80 {
width: 80px;
color: #303030;
border: 1px solid #A7A7A7;
FILTER: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#D0D0D0,endColorStr=#FFFFFF,gradientType=0);
background: -moz-linear-gradient(top, #D0D0D0, #FFFFFF);
background: -ms-linear-gradient(top, #D0D0D0, #FFFFFF);
background: -linear-gradient(top, #D0D0D0, #FFFFFF);
background: -webkit-gradient(linear, left top, left bottom, from(#D0D0D0), to(#FFFFFF));
background: -o-linear-gradient(top, #D0D0D0, #FFFFFF)
}
a.yellow80, button.yellow80, input[type=button].yellow80, submit.yellow80, input[type=submit].yellow80 {
width: 80px;
color: #97A004;
border: 1px solid #97A004;
FILTER: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#FAFFA3,endColorStr=#FFFFFF,gradientType=0);
background: -moz-linear-gradient(top, #FAFFA3, #FFFFFF);
background: -ms-linear-gradient(top, #FAFFA3, #FFFFFF);
background: -linear-gradient(top, #FAFFA3, #FFFFFF);
background: -webkit-gradient(linear, left top, left bottom, from(#FAFFA3), to(#FFFFFF));
background: -o-linear-gradient(top, #FAFFA3, #FFFFFF)
}
a.blue60, button.blue60, input[type=button].blue60, submit.blue60, input[type=submit].blue60 {
width: 60px;
color: #2172B5;
border: 1px solid #2172B5;
FILTER: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#8CC6EF,endColorStr=#FFFFFF,gradientType=0);
background: -moz-linear-gradient(top, #8CC6EF, #FFFFFF);
background: -ms-linear-gradient(top, #8CC6EF, #FFFFFF);
background: -linear-gradient(top, #8CC6EF, #FFFFFF);
background: -webkit-gradient(linear, left top, left bottom, from(#8CC6EF), to(#FFFFFF));
background: -o-linear-gradient(top, #8CC6EF, #FFFFFF)
}
a.orange60, button.orange60, input[type=button].orange60, submit.orange60, input[type=submit].orange60 {
width: 60px;
color: #B25300;
border: 1px solid #B25300;
FILTER: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#FFAA5F,endColorStr=#FFFFFF,gradientType=0);
background: -moz-linear-gradient(top, #FFAA5F, #FFFFFF);
background: -ms-linear-gradient(top, #FFAA5F, #FFFFFF);
background: -linear-gradient(top, #FFAA5F, #FFFFFF);
background: -webkit-gradient(linear, left top, left bottom, from(#FFAA5F), to(#FFFFFF));
background: -o-linear-gradient(top, #FFAA5F, #FFFFFF)
}
a.red60, button.red60, input[type=button].red60, submit.red60, input[type=submit].red60 {
width: 60px;
color: #A71717;
border: 1px solid #A71717;
FILTER: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#F4B4B4,endColorStr=#FFFFFF,gradientType=0);
background: -moz-linear-gradient(top, #F4B4B4, #FFFFFF);
background: -ms-linear-gradient(top, #F4B4B4, #FFFFFF);
background: -linear-gradient(top, #F4B4B4, #FFFFFF);
background: -webkit-gradient(linear, left top, left bottom, from(#F4B4B4), to(#FFFFFF));
background: -o-linear-gradient(top, #F4B4B4, #FFFFFF)
}
a.green60, button.green60, input[type=button].green60, submit.green60, input[type=submit].green60 {
width: 60px;
color: #055705;
border: 1px solid #055705;
FILTER: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#6EF66E,endColorStr=#FFFFFF,gradientType=0);
background: -moz-linear-gradient(top, #6EF66E, #FFFFFF);
background: -ms-linear-gradient(top, #6EF66E, #FFFFFF);
background: -linear-gradient(top, #6EF66E, #FFFFFF);
background: -webkit-gradient(linear, left top, left bottom, from(#6EF66E), to(#FFFFFF));
background: -o-linear-gradient(top, #6EF66E, #FFFFFF)
}
a.purple60, button.purple60, input[type=button].purple60, submit.purple60, input[type=submit].purple60 {
width: 60px;
color: #800080;
border: 1px solid #800080;
FILTER: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#F694F4,endColorStr=#FFFFFF,gradientType=0);
background: -moz-linear-gradient(top, #F694F4, #FFFFFF);
background: -ms-linear-gradient(top, #F694F4, #FFFFFF);
background: -linear-gradient(top, #F694F4, #FFFFFF);
background: -webkit-gradient(linear, left top, left bottom, from(#F694F4), to(#FFFFFF));
background: -o-linear-gradient(top, #F694F4, #FFFFFF)
}
a.gray60, button.gray60, input[type=button].gray60, submit.gray60, input[type=submit].gray60 {
width: 60px;
color: #303030;
border: 1px solid #A7A7A7;
FILTER: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#D0D0D0,endColorStr=#FFFFFF,gradientType=0);
background: -moz-linear-gradient(top, #D0D0D0, #FFFFFF);
background: -ms-linear-gradient(top, #D0D0D0, #FFFFFF);
background: -linear-gradient(top, #D0D0D0, #FFFFFF);
background: -webkit-gradient(linear, left top, left bottom, from(#D0D0D0), to(#FFFFFF));
background: -o-linear-gradient(top, #D0D0D0, #FFFFFF)
}
a.yellow60, button.yellow60, input[type=button].yellow60, submit.yellow60, input[type=submit].yellow60 {
width: 60px;
color: #97A004;
border: 1px solid #97A004;
FILTER: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#FAFFA3,endColorStr=#FFFFFF,gradientType=0);
background: -moz-linear-gradient(top, #FAFFA3, #FFFFFF);
background: -ms-linear-gradient(top, #D0D0D0, #FFFFFF);
background: -linear-gradient(top, #FAFFA3, #FFFFFF);
background: -webkit-gradient(linear, left top, left bottom, from(#FAFFA3), to(#FFFFFF));
background: -o-linear-gradient(top, #FAFFA3, #FFFFFF)
}
a.blue40, button.blue40, input[type=button].blue40, submit.blue40, input[type=submit].blue40 {
width: 40px;
color: #2172B5;
border: 1px solid #2172B5;
FILTER: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#8CC6EF,endColorStr=#FFFFFF,gradientType=0);
background: -moz-linear-gradient(top, #8CC6EF, #FFFFFF);
background: -ms-linear-gradient(top, #8CC6EF, #FFFFFF);
background: -linear-gradient(top, #8CC6EF, #FFFFFF);
background: -webkit-gradient(linear, left top, left bottom, from(#8CC6EF), to(#FFFFFF));
background: -o-linear-gradient(top, #8CC6EF, #FFFFFF)
}
a.orange40, button.orange40, input[type=button].orange40, submit.orange40, input[type=submit].orange40 {
width: 40px;
color: #B25300;
border: 1px solid #B25300;
FILTER: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#FFAA5F,endColorStr=#FFFFFF,gradientType=0);
background: -moz-linear-gradient(top, #FFAA5F, #FFFFFF);
background: -ms-linear-gradient(top, #FFAA5F, #FFFFFF);
background: -linear-gradient(top, #FFAA5F, #FFFFFF);
background: -webkit-gradient(linear, left top, left bottom, from(#FFAA5F), to(#FFFFFF));
background: -o-linear-gradient(top, #FFAA5F, #FFFFFF)
}
a.red40, button.red40, input[type=button].red40, submit.red40, input[type=submit].red40 {
width: 40px;
color: #A71717;
border: 1px solid #A71717;
FILTER: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#F4B4B4,endColorStr=#FFFFFF,gradientType=0);
background: -moz-linear-gradient(top, #F4B4B4, #FFFFFF);
background: -ms-linear-gradient(top, #F4B4B4, #FFFFFF);
background: -linear-gradient(top, #F4B4B4, #FFFFFF);
background: -webkit-gradient(linear, left top, left bottom, from(#F4B4B4), to(#FFFFFF));
background: -o-linear-gradient(top, #F4B4B4, #FFFFFF)
}
a.green40, button.green40, input[type=button].green40, submit.green40, input[type=submit].green40 {
width: 40px;
color: #055705;
border: 1px solid #055705;
FILTER: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#6EF66E,endColorStr=#FFFFFF,gradientType=0);
background: -moz-linear-gradient(top, #6EF66E, #FFFFFF);
background: -ms-linear-gradient(top, #6EF66E, #FFFFFF);
background: -linear-gradient(top, #6EF66E, #FFFFFF);
background: -webkit-gradient(linear, left top, left bottom, from(#6EF66E), to(#FFFFFF));
background: -o-linear-gradient(top, #6EF66E, #FFFFFF)
}
a.purple40, button.purple40, input[type=button].purple40, submit.purple40, input[type=submit].purple40 {
width: 40px;
color: #800080;
border: 1px solid #800080;
FILTER: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#F694F4,endColorStr=#FFFFFF,gradientType=0);
background: -moz-linear-gradient(top, #F694F4, #FFFFFF);
background: -ms-linear-gradient(top, #F694F4, #FFFFFF);
background: -linear-gradient(top, #F694F4, #FFFFFF);
background: -webkit-gradient(linear, left top, left bottom, from(#F694F4), to(#FFFFFF));
background: -o-linear-gradient(top, #F694F4, #FFFFFF)
}
a.gray40, button.gray40, input[type=button].gray40, submit.gray40, input[type=submit].gray40 {
width: 40px;
color: #303030;
border: 1px solid #A7A7A7;
FILTER: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#D0D0D0,endColorStr=#FFFFFF,gradientType=0);
background: -moz-linear-gradient(top, #D0D0D0, #FFFFFF);
background: -ms-linear-gradient(top, #D0D0D0, #FFFFFF);
background: -linear-gradient(top, #D0D0D0, #FFFFFF);
background: -webkit-gradient(linear, left top, left bottom, from(#D0D0D0), to(#FFFFFF));
background: -o-linear-gradient(top, #D0D0D0, #FFFFFF)
}
a.yellow40, button.yellow40, input[type=button].yellow40, submit.yellow40, input[type=submit].yellow40 {
width: 40px;
color: #97A004;
border: 1px solid #97A004;
FILTER: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#FAFFA3,endColorStr=#FFFFFF,gradientType=0);
background: -moz-linear-gradient(top, #FAFFA3, #FFFFFF);
background: -ms-linear-gradient(top, #FAFFA3, #FFFFFF);
background: -linear-gradient(top, #FAFFA3, #FFFFFF);
background: -webkit-gradient(linear, left top, left bottom, from(#FAFFA3), to(#FFFFFF));
background: -o-linear-gradient(top, #FAFFA3, #FFFFFF)
}
a.blue28, button.blue28, input[type=button].blue28, submit.blue28, input[type=submit].blue28 {
width: 28px;
color: #2172B5;
border: 1px solid #2172B5;
FILTER: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#8CC6EF,endColorStr=#FFFFFF,gradientType=0);
background: -moz-linear-gradient(top, #8CC6EF, #FFFFFF);
background: -ms-linear-gradient(top, #8CC6EF, #FFFFFF);
background: -linear-gradient(top, #8CC6EF, #FFFFFF);
background: -webkit-gradient(linear, left top, left bottom, from(#8CC6EF), to(#FFFFFF));
background: -o-linear-gradient(top, #8CC6EF, #FFFFFF)
}
a.orange28, button.orange28, input[type=button].orange28, submit.orange28, input[type=submit].orange28 {
width: 28px;
color: #B25300;
border: 1px solid #B25300;
FILTER: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#FFAA5F,endColorStr=#FFFFFF,gradientType=0);
background: -moz-linear-gradient(top, #FFAA5F, #FFFFFF);
background: -ms-linear-gradient(top, #FFAA5F, #FFFFFF);
background: -linear-gradient(top, #FFAA5F, #FFFFFF);
background: -webkit-gradient(linear, left top, left bottom, from(#FFAA5F), to(#FFFFFF));
background: -o-linear-gradient(top, #FFAA5F, #FFFFFF)
}
a.red28, button.red28, input[type=button].red28, submit.red28, input[type=submit].red28 {
width: 28px;
color: #A71717;
border: 1px solid #A71717;
FILTER: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#F4B4B4,endColorStr=#FFFFFF,gradientType=0);
background: -moz-linear-gradient(top, #F4B4B4, #FFFFFF);
background: -ms-linear-gradient(top, #F4B4B4, #FFFFFF);
background: -linear-gradient(top, #F4B4B4, #FFFFFF);
background: -webkit-gradient(linear, left top, left bottom, from(#F4B4B4), to(#FFFFFF));
background: -o-linear-gradient(top, #F4B4B4, #FFFFFF)
}
a.green28, button.green28, input[type=button].green28, submit.green28, input[type=submit].green28 {
width: 28px;
color: #055705;
border: 1px solid #055705;
FILTER: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#6EF66E,endColorStr=#FFFFFF,gradientType=0);
background: -moz-linear-gradient(top, #6EF66E, #FFFFFF);
background: -ms-linear-gradient(top, #6EF66E, #FFFFFF);
background: -linear-gradient(top, #6EF66E, #FFFFFF);
background: -webkit-gradient(linear, left top, left bottom, from(#6EF66E), to(#FFFFFF));
background: -o-linear-gradient(top, #6EF66E, #FFFFFF)
}
a.purple28, button.purple28, input[type=button].purple28, submit.purple28, input[type=submit].purple28 {
width: 28px;
color: #800080;
border: 1px solid #800080;
FILTER: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#F694F4,endColorStr=#FFFFFF,gradientType=0);
background: -moz-linear-gradient(top, #F694F4, #FFFFFF);
background: -ms-linear-gradient(top, #F694F4, #FFFFFF);
background: -linear-gradient(top, #F694F4, #FFFFFF);
background: -webkit-gradient(linear, left top, left bottom, from(#F694F4), to(#FFFFFF));
background: -o-linear-gradient(top, #F694F4, #FFFFFF)
}
a.gray28, button.gray28, input[type=button].gray28, submit.gray28, input[type=submit].gray28 {
width: 28px;
color: #303030;
border: 1px solid #A7A7A7;
FILTER: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#D0D0D0,endColorStr=#FFFFFF,gradientType=0);
background: -moz-linear-gradient(top, #D0D0D0, #FFFFFF);
background: -ms-linear-gradient(top, #D0D0D0, #FFFFFF);
background: -linear-gradient(top, #D0D0D0, #FFFFFF);
background: -webkit-gradient(linear, left top, left bottom, from(#D0D0D0), to(#FFFFFF));
background: -o-linear-gradient(top, #D0D0D0, #FFFFFF)
}
a.yellow28, button.yellow28, input[type=button].yellow28, submit.yellow28, input[type=submit].yellow28 {
width: 28px;
color: #97A004;
border: 1px solid #97A004;
FILTER: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#FAFFA3,endColorStr=#FFFFFF,gradientType=0);
background: -moz-linear-gradient(top, #FAFFA3, #FFFFFF);
background: -ms-linear-gradient(top, #FAFFA3, #FFFFFF);
background: -linear-gradient(top, #FAFFA3, #FFFFFF);
background: -webkit-gradient(linear, left top, left bottom, from(#FAFFA3), to(#FFFFFF));
background: -o-linear-gradient(top, #FAFFA3, #FFFFFF)
}
a.pickupbutton {
width: 16px;
height: 16px;
background-image: Url("Img/pickup.gif");
}
a[disabled="disabled"], a.button[disabled="disabled"], button[disabled="disabled"], input[type=button][disabled="disabled"], submit[disabled="disabled"], input[type=submit][disabled="disabled"] {
color: #808080;
border: 1px solid #909090;
FILTER: initial;
background: none;
background-color: #E0E0E0;
}
a[disabled="disabled"]:hover {
font-weight: normal;
cursor: default;
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 328 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 334 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 314 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 324 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 336 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 337 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 323 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 328 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 323 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 314 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 324 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 322 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 324 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 321 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 231 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 222 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 213 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 223 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 221 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 223 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 223 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 267 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 262 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 252 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 264 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 262 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 263 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 262 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 272 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 267 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 257 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 267 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 266 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 268 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 265 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 320 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 314 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 305 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 315 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 314 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 316 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 315 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 566 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 664 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 190 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 846 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 865 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 826 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 882 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 860 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 885 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 861 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 807 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 805 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 806 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 806 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 804 B

@@ -1,49 +0,0 @@
/* Loading 遮罩樣式 */
.loading-overlay {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(0, 0, 0, 0);
display: flex;
justify-content: center;
align-items: center;
z-index: 10000;
}
.loading-spinner {
background-color: white;
padding: 40px;
border-radius: 8px;
text-align: center;
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);
}
.loading-spinner p {
margin-top: 15px;
color: #333;
font-size: 16px;
font-weight: 500;
}
/* 轉圈圈動畫 */
.spinner {
width: 50px;
height: 50px;
border: 4px solid #cccccc;
border-top: 4px solid #ffffff;
border-radius: 50%;
animation: spin 1s linear infinite;
margin: 0 auto;
}
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
@@ -1,45 +0,0 @@
a.menu {
display: inline-block;
color: Black;
width: 100%;
height: 27px;
line-height: 26px;
vertical-align: top;
overflow: hidden;
text-align: left;
cursor: pointer !important;
z-index: 999;
}
a.menu_toplevel {
display: inline-block;
color: White;
width: 100%;
height: 27px;
line-height: 26px;
vertical-align: top;
text-align: left;
cursor: pointer !important;
z-index: 999;
}
a.menuSelected {
display: inline-block;
color: White;
width: 100%;
height: 27px;
line-height: 26px;
vertical-align: top;
text-align: left;
z-index: 999;
}
a.menu:hover {
color: White;
background-color: #007ACC;
}
a.menu_toplevel:hover {
color: White;
background-color: #007ACC;
}
@@ -1,105 +0,0 @@
div.popup_title_left_corner
{
padding:0;
margin:0;
width: 3px;
height:27px;
background-image:url("Img/window_caption_left_corner.gif");
background-repeat:no-repeat;
float:left;
}
div.popup_title_right_corner
{
padding:0;
margin:0;
width: 3px;
height: 27px;
background-image:url("Img/window_caption_right_corner.gif");
background-repeat:no-repeat;
float:left;
}
div.popup_title_left
{
padding:0;
margin:0;
width: 4px;
height:27px;
background-image:url("Img/window_caption_left.gif");
background-repeat:no-repeat;
float:left;
}
div.popup_title_right
{
padding:0;
margin:0;
width: 4px;
height:27px;
background-image:url("Img/window_caption_right.gif");
background-repeat:no-repeat;
float:left;
}
div.popup_title
{
padding:0;
margin:0;
height:27px;
background-image:url("Img/window_caption.gif");
background-repeat:repeat-x;
float:left;
}
div.popup_left_border
{
padding:0;
margin:0;
width:3px;
background-image:url("Img/window_left_border.gif");
background-repeat:repeat-y;
float:left;
}
div.popup_right_border
{
padding:0;
margin:0;
width:3px;
background-image:url("Img/window_right_border.gif");
background-repeat:repeat-y;
float:left;
}
div.popup_lower_left_corner
{
padding:0;
margin:0;
width:3px;
height:3px;
background-image:url("Img/window_lower_left_corner.gif");
background-repeat:no-repeat;
float:left;
}
div.popup_lower_right_corner
{
padding:0;
margin:0;
width:3px;
height:3px;
background-image:url("Img/window_lower_right_corner.gif");
background-repeat:no-repeat;
float:left;
}
div.popup_lower_border
{
padding:0;
margin:0;
height:3px;
background-image:url("Img/window_lower_border.gif");
background-repeat:repeat-x;
float:left;
}
@@ -1,107 +0,0 @@
<%--
預設面板範本。下列面板僅提供做為範例的用途。
1. 具名控制面板。SkinId 應為唯一定義,因為在相同主題中,一個控制項型別不能具有重複的 SkinId。
<asp:GridView runat="server" SkinId="gridviewSkin" BackColor="White" >
<AlternatingRowStyle BackColor="Blue" />
</asp:GridView>
2. 預設面板。SkinId 未定義。在相同主題中,每個控制項型別只能有一個預設控制面板。
<asp:Image runat="server" ImageUrl="~/images/image1.jpg" />
--%>
<%@ Register Assembly="WebLib" Namespace="WebLib" TagPrefix="weblib" %>
<asp:GridView runat="server"
BackColor="White"
BorderColor="#B0B0B0"
BorderStyle="Solid"
BorderWidth="1px"
CellPadding="3"
EnableModelValidation="True"
ForeColor="Black"
GridLines="Vertical"
CSSClass="gridview">
<RowStyle
BorderColor="#B0B0B0" />
<AlternatingRowStyle
BorderColor="#B0B0B0"
BackColor="#EEEEEE" />
<FooterStyle
BorderColor="#B0B0B0"
BackColor="#B7DEFC" />
<HeaderStyle
BorderColor="#B0B0B0"
BackColor="#B7DEFC" />
<PagerStyle
BorderWidth="1px"
BorderColor="#B0B0B0"
BackColor="#DDDDDD"
HorizontalAlign="Right" />
<SelectedRowStyle
BorderColor="#B0B0B0"
BackColor="#95D1FF" />
<EditRowStyle
BorderColor="#B0B0B0"
BackColor="#95D1FF" />
</asp:GridView>
<asp:TreeView
runat="server">
<HoverNodeStyle
Font-Underline="False"
ForeColor="#FFFFFF"
BackColor="#007ACC" />
<NodeStyle
Font-Size="12pt"
ForeColor="Black"
HorizontalPadding="4px"
NodeSpacing="0px"
VerticalPadding="0px"
Height="22px"
CssClass="menu"
Width="100%" />
<ParentNodeStyle
CssClass="menu"
Width="100%"
Font-Bold="False" />
<SelectedNodeStyle
Font-Underline="False"
ForeColor="#FFFFFF"
BackColor="#007ACC"
HorizontalPadding="4px"
VerticalPadding="0px"
CssClass="menuSelected" />
<RootNodeStyle
CssClass="menu"
Width="100%" />
</asp:TreeView>
<asp:FormView runat="server"
CssClass="formview">
</asp:FormView>
<asp:Menu runat="server"
Orientation="Horizontal"
Font-Overline="False"
StaticEnableDefaultPopOutImage="False"
StaticSubMenuIndent="0"
DynamicHorizontalOffset="0"
DynamicVerticalOffset="0"
StaticItemFormatString="&nbsp;&nbsp;{0}&nbsp;&nbsp;"
DynamicItemFormatString="&nbsp;&nbsp;{0}&nbsp;&nbsp;"
SkipLinkText="" >
<StaticMenuItemStyle CssClass="menu_toplevel" />
<StaticSelectedStyle BackColor="#007ACC" ForeColor="White" />
<DynamicMenuItemStyle CssClass="menu" BackColor="#89CEFF" ForeColor="White" />
<DynamicSelectedStyle BackColor="#007ACC" ForeColor="White" />
</asp:Menu>
<weblib:DateTextBox runat="server"
DateSeparator=""
DateOrder="YMD" />
<weblib:GridViewPager runat="server"
ButtonCssClass="button gray60" />
@@ -1,372 +0,0 @@
body, div, table {
padding: 0;
margin: 0;
}
body {
font-family: Arial, Helvetica, sans-serif, "Microsoft JhengHei", "Microsoft YaHei", MingLiU, SimSun;
font-size: 12pt;
background-color: #eee;
}
input:where([type="text"], [type="password"], [type="date"], [type="datetime"], [type="number"]),
textarea,
select {
padding: 3px;
border: solid 1px #ccc;
border-radius: 3px;
}
input:where([type="text"], [type="password"], [type="date"], [type="datetime"], [type="number"])[readonly],
input:where([type="text"], [type="password"], [type="date"], [type="datetime"], [type="number"])[disabled],
textarea[readonly],
textarea[disabled],
select[disabled] {
background-color: #ccc;
}
/*select {
padding: 3px;
height: 1.7em;
background-color: #FFF;
}
*/
.hide {
display: none;
}
.background {
width: 100%;
text-align: center;
background-image: url('img/outbg.gif');
}
.ta-center {
text-align: center;
}
.ta-left {
text-align: left;
}
.ta-right {
text-align: right;
}
.timeText {
font-size: 12pt;
color: Black;
}
.labelCell {
text-align: right;
}
.displayCell {
background-color: #C6E8FF;
}
.inputCell {
background-color: White;
}
input {
font-family: Arial, Helvetica, sans-serif, "Microsoft JhengHei", "Microsoft YaHei", MingLiU, SimSun;
font-size: 12pt;
word-break: break-all;
box-sizing: border-box;
}
input[type="text"]:focus {
background-color: #FFFFD0;
}
input[type="password"]:focus {
background-color: #FFFFD0;
}
textarea {
font-family: Arial, Helvetica, sans-serif, "Microsoft JhengHei", "Microsoft YaHei", MingLiU, SimSun;
font-size: 12pt;
word-break: break-all;
line-height: 1.5em;
}
textarea:focus {
background-color: #FFFFD0;
}
select {
font-family: Arial, Helvetica, sans-serif, "Microsoft JhengHei", "Microsoft YaHei", MingLiU, SimSun;
font-size: 12pt;
margin-right: 0;
height: auto;
}
.inputFull {
width: 100%;
margin: 0;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
_box-sizing: border-box;
word-break: break-all;
-ms-word-break: break-all;
}
.inputFullBlock {
width: 100%;
height: 100%;
margin: 0;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
_box-sizing: border-box;
font-size: 12pt;
}
a.hiddenLink {
text-decoration: none;
color: Black;
}
a.hiddenLink:hover {
color: Blue;
}
.functionTitle {
font-size: 14pt;
font-weight: bold;
color: #004d7a;
padding-top: 6px;
padding-bottom: 6px;
}
.marqueeText {
font-size: 12pt;
font-weight: bolder;
color: Red;
}
.groupHeaderCell {
text-align: center;
border-bottom-style: solid;
border-bottom-width: 1px;
border-bottom-color: black;
}
.FunctionName {
color: #2472B2;
font-size: 12pt;
font-weight: bold;
}
.ErrorMessage {
color: red;
font-size: 12pt;
font-weight: bold;
}
a.LogoutButton {
height: 32px;
width: 32px;
background-image: Url("Img/logout.png");
background-repeat: no-repeat;
background-position: 0 0;
}
a.election {
color: Blue;
font-weight: bold;
}
a.cancelelection {
color: Blue;
font-weight: bold;
}
.padding0 {
padding: 0;
}
.padding3 {
padding: 3px;
}
.padding5 {
padding: 5px;
}
.minwidth10 {
min-width: 10px;
}
.minwidth20 {
min-width: 20px;
}
.minwidth30 {
min-width: 30px;
}
.minwidth40 {
min-width: 40px;
}
.minwidth50 {
min-width: 50px;
}
.minwidth60 {
min-width: 60px;
}
.minwidth70 {
min-width: 70px;
}
.minwidth80 {
min-width: 80px;
}
.minwidth90 {
min-width: 90px;
}
.minwidth100 {
min-width: 100px;
}
.minwidth110 {
min-width: 110px;
}
.minwidth120 {
min-width: 120px;
}
.minwidth130 {
min-width: 130px;
}
.minwidth140 {
min-width: 140px;
}
.minwidth150 {
min-width: 150px;
}
.minwidth160 {
min-width: 160px;
}
.minwidth170 {
min-width: 170px;
}
.minwidth180 {
min-width: 180px;
}
.minwidth190 {
min-width: 190px;
}
.minwidth200 {
min-width: 200px;
}
.maxwidth10 {
max-width: 10px;
}
.maxwidth20 {
max-width: 20px;
}
.maxwidth30 {
max-width: 30px;
}
.maxwidth40 {
max-width: 40px;
}
.maxwidth50 {
max-width: 50px;
}
.maxwidth60 {
max-width: 60px;
}
.maxwidth70 {
max-width: 70px;
}
.maxwidth80 {
max-width: 80px;
}
.maxwidth90 {
max-width: 90px;
}
.maxwidth100 {
max-width: 100px;
}
.maxwidth110 {
max-width: 110px;
}
.maxwidth120 {
max-width: 120px;
}
.maxwidth130 {
max-width: 130px;
}
.maxwidth140 {
max-width: 140px;
}
.maxwidth150 {
max-width: 150px;
}
.maxwidth160 {
max-width: 160px;
}
.maxwidth170 {
max-width: 170px;
}
.maxwidth180 {
max-width: 180px;
}
.maxwidth190 {
max-width: 190px;
}
.maxwidth200 {
max-width: 200px;
}
.phraselink {
text-decoration: none;
margin-right: 1em;
color: #007ACC;
cursor: pointer;
display: inline-block;
}
.phraselink:hover {
background-color: #007ACC;
color: #FFF;
}
@@ -1,36 +0,0 @@
/* 頁籤樣式 */
a.tabButton
{
font-size: 12pt;
text-decoration : none;
text-align:center;
padding-top: 0px;
display: inline-block;
vertical-align: top;
width: 179px;
height: 27px;
line-height: 24px;
background-image: Url("Img/TabYellow.png");
background-repeat: no-repeat;
background-position: 0 0;
color : Black;
font-weight: normal;
}
a.tabButtonSelected
{
font-size: 12pt;
text-decoration : none;
text-align: center;
padding-top: 0px;
display: inline-block;
vertical-align: top;
width: 179px;
height: 27px;
line-height: 24px;
background-image: Url("Img/TabYellow.png");
background-repeat: no-repeat;
background-position: 0 -27px;
color : Black;
font-weight: normal;
}
@@ -1,90 +0,0 @@
table {
font-family: Arial, Helvetica, sans-serif, "Microsoft JhengHei", "Microsoft YaHei", MingLiU, SimSun;
font-size: 12pt;
border-collapse: separate;
border-spacing: 0;
margin-bottom: 0;
}
table.formview table {
border-collapse: separate;
border-spacing: 2px;
}
table.fixedwithborder {
table-layout: fixed;
border-collapse: collapse;
border: 1px solid #DDD;
}
table.fixedwithoutborder {
table-layout: fixed;
border-collapse: collapse;
border: 0;
}
table.autowidth {
table-layout: auto;
}
th {
padding: 3px;
text-align: center;
background-color: #DDDDDD;
font-weight: normal;
color: Black;
border: 1px solid #DDD;
word-break: break-all;
}
td {
word-break: break-all;
}
td.caption {
padding: 3px;
text-align: right;
background-color: #FFFFFF;
word-break: break-all;
}
td.captionCenter {
padding: 3px;
text-align: center;
background-color: #FFFFFF;
word-break: break-all;
}
td.captionLeft {
padding: 3px;
text-align: left;
background-color: #FFFFFF;
word-break: break-all;
}
td.datainput {
padding: 3px;
}
td.datadisplay {
padding: 5px;
background-color: #DEF0FC;
word-wrap: break-word;
word-break: break-all;
}
td.widthcontrol {
padding: 0;
margin: 0;
height: 0;
font-size: 0;
}
table.gridview {
border-collapse: collapse;
}
table.gridview tr th, td {
border-left-color: #DDD;
border-right-color: #DDD;
}
File diff suppressed because it is too large Load Diff
@@ -1,70 +0,0 @@
/* 警告訊息進入動畫 */
@keyframes slideDown {
from {
opacity: 0;
transform: translateY(-10px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
/* Toast 進入動畫 */
@keyframes slideIn {
from {
transform: translateX(400px);
opacity: 0;
}
to {
transform: translateX(0);
opacity: 1;
}
}
/* Toast 訊息容器樣式 */
.toast-message {
position: fixed;
top: 20px;
right: 20px;
padding: 15px 20px;
border-radius: 4px;
color: white;
font-weight: 500;
z-index: 9999;
animation: slideIn 0.3s ease-out;
max-width: 400px;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
word-wrap: break-word;
word-break: break-word;
}
/* Toast 訊息類型樣式 */
.toast-success {
background-color: #28a745;
}
.toast-error {
background-color: #dc3545;
}
.toast-warning {
background-color: #ffc107;
color: #333;
}
.toast-info {
background-color: #17a2b8;
}
/* Vue transition 動畫 */
.toast-enter-active, .toast-leave-active {
transition: all 0.3s ease;
}
.toast-enter, .toast-leave-to {
transform: translateX(100%);
opacity: 0;
}
-80
View File
@@ -1,80 +0,0 @@
using System;
using System.Collections.Generic;
using System.Web;
using System.Text;
namespace Education
{
public class EncDec
{
/// <summary>
/// WLIB 新版密碼的加密函數
/// </summary>
/// <param name="S">欲加密之密碼字串,最大長度 8 位,僅可包含A-Z、a-z、0-9</param>
/// <returns>加密後之密碼字串</returns>
public static string KeyEnc(string S)
{
int k1 = 0;
int k2 = 0;
int i, j;
Random rnd = new Random(DateTime.UtcNow.AddHours(8).Millisecond);
byte[] inBuf = new byte[8];
byte[] outBuf = new byte[10];
string tmp;
while (true)
{
k1 = rnd.Next(31);
k2 = rnd.Next(31);
outBuf[0] = (byte)(k1 + 44);
outBuf[9] = (byte)(k2 + 66);
if (S.Length < 8)
inBuf = Encoding.ASCII.GetBytes(S.PadRight(8));
else
inBuf = Encoding.ASCII.GetBytes(S);
for (i = 1; i <= 8; i++)
{
j = (k1 % 31) + i;
j = ((k2 + j) % 31) + 1;
outBuf[i] = (byte)(inBuf[i - 1] ^ j);
}
tmp = Encoding.ASCII.GetString(outBuf);
if (tmp.IndexOf('\'') < 0 && tmp.IndexOf('"') < 0)
break;
}
return tmp;
}
/// <summary>
/// WLIB 新版密碼的解密函數
/// </summary>
/// <param name="S">欲解密之密碼字串,固定 10 位</param>
/// <returns>解密後之密碼字串。若參數 S 長度不是 10 位,則傳回".." + S + ".."</returns>
public static string KeyDec(string S)
{
int i, j;
int Key1, Key2;
byte[] inBuf;
byte[] outBuf = new byte[8];
if (S.Length != 10)
return ".." + S + "..";
//解密
inBuf = Encoding.ASCII.GetBytes(S);
Key1 = inBuf[0] - 44;
Key2 = inBuf[9] - 66;
for (i = 1; i <= 8; i++)
{
j = Key1 % 31 + i;
j = (Key2 + j) % 31 + 1;
outBuf[i - 1] = (byte)(inBuf[i] ^ j);
}
return Encoding.ASCII.GetString(outBuf).Trim();
}
}
}
-211
View File
@@ -1,211 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Timers;
using System.IO;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using WebLib;
namespace Education
{
public class FollowService
{
private static FollowService _instance = null;
private Timer _timer = null;
private static int _interval = 30;
private static string _doWorkTime = "00:00";
private static bool _enabled = false;
private static bool _busy = false;
private static = new ();
private DAC_BPSN Dao員工;
private DbConnection conn;
/// <summary>
/// 發動時間,預設值為 00:00
/// </summary>
public static string DoWorkTime
{
get
{
return _doWorkTime;
}
set
{
_doWorkTime = value;
}
}
/// <summary>
/// 郵件模版路徑
/// </summary>
public static string TemplatePath { get; set; }
/// <summary>
/// 設定或取得簽核跟催服務是否啟動
/// </summary>
public static bool Enabled
{
get
{
return _enabled;
}
set
{
if (value)
{
if (_enabled)
return;
Instance._timer.Interval = _interval * 1000;
Instance._timer.AutoReset = true;
Instance._timer.Enabled = true;
_enabled = true;
}
else
{
if (!_enabled)
return;
_enabled = false;
Instance._timer.Enabled = false;
}
}
}
private FollowService()
{
_timer = new Timer();
_timer.Enabled = false;
_timer.Elapsed += new ElapsedEventHandler(DoFollowWork);
conn = DAC.NewConnection();
Dao員工 = new DAC_BPSN(conn);
}
public static FollowService Instance
{
get
{
if (_instance == null)
_instance = new FollowService();
return _instance;
}
}
private void DoFollowWork(object sender, ElapsedEventArgs e)
{
string nowTime = DateTime.UtcNow.AddHours(8).ToString("HH:mm");
if (nowTime.CompareTo(_doWorkTime) == 0 && !_busy)
{
_busy = true;
try
{
DAC_表單簽核明細 dao表單簽核明細 = new DAC_表單簽核明細(conn);
List first = dao表單簽核明細.Select第一次稽催();
List second = dao表單簽核明細.Select第二次稽催();
List third = dao表單簽核明細.Select第三次稽催();
foreach ( item in first)
{
SendFollowMail(item, 3);
item. = 1;
dao表單簽核明細.UpdateOne(item);
}
foreach ( item in second)
{
SendFollowMail(item, 7);
item. = 2;
dao表單簽核明細.UpdateOne(item);
}
foreach ( item in third)
{
SendFollowMail(item, 14);
item. = 3;
dao表單簽核明細.UpdateOne(item);
}
DoSurveyReminderWork();
}
finally
{
_busy = false;
}
}
}
private void SendFollowMail( item, int )
{
string = Dao員工.Get電子郵件(item.);
string = Dao員工.Get員工姓名(item.);
= new ();
.(item.ID, , , , TemplatePath);
}
private void DoSurveyReminderWork()
{
if (string.IsNullOrEmpty(PublicVariable.SiteBaseUrl))
return;
string = PublicVariable.SiteBaseUrl + "/MobileSurvey/Login.aspx";
int deadlineDays = PublicVariable.SurveyReminderDeadlineDays;
DateTime minDate = PublicVariable.SurveyReminderMinCourseDate;
string[] excludeEmps = PublicVariable.SurveyReminderExcludeEmployees
.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
DbCommand cmd = conn.CreateCommand();
cmd.CommandText =
@"select A.學員編號, A.訓練課程編號, C.BPNME as 學員姓名, C.BPEML as 電子郵件,
B.顯示編號, B.訓練名稱, B.訓練日期, B.訓練日期迄
from 課程報名 A
inner join 訓練課程企劃 B on A.訓練課程編號 = B.編號
inner join BPSNView C on A.學員編號 = C.BPENO
where (A.報名狀態 = 'Y' or A.報名狀態 = 'R')
and B.訓練日期 >= @MinCourseDate
and (A.滿意度催填狀態 is null or A.滿意度催填狀態 = '')
and not exists (
select 1 from 滿意度調查 D
where D.訓練課程企劃編號 = A.訓練課程編號 and D.學員編號 = A.學員編號
)
and dateadd(day, @DeadlineDays, B.訓練日期迄) < getdate()
order by A.學員編號";
cmd.Parameters.Add(new SqlParameter("@MinCourseDate", minDate));
cmd.Parameters.Add(new SqlParameter("@DeadlineDays", deadlineDays));
DataTable dt = new DataTable();
using (var reader = cmd.ExecuteReader())
{
dt.Load(reader);
}
foreach (DataRow row in dt.Rows)
{
string = DAC.GetString(row["學員編號"]);
if (excludeEmps.Contains())
continue;
string = DAC.GetString(row["學員姓名"]);
string = DAC.GetString(row["電子郵件"]);
string = DAC.GetString(row["訓練名稱"]);
DateTime = DAC.GetDateTime(row["訓練日期"]);
DateTime = DAC.GetDateTime(row["訓練日期迄"]);
int = DAC.GetInt32(row["訓練課程編號"]);
= new ();
.滿(, , , , , );
DbCommand cmdUpd = conn.CreateCommand();
cmdUpd.CommandText =
"update 課程報名 set 滿意度催填狀態 = 'Y'" +
" where 訓練課程編號 = @訓練課程編號 and 學員編號 = @學員編號";
cmdUpd.Parameters.Add(new SqlParameter("@訓練課程編號", ));
cmdUpd.Parameters.Add(new SqlParameter("@學員編號", ));
cmdUpd.ExecuteNonQuery();
}
}
}
}
-255
View File
@@ -1,255 +0,0 @@
using NPOI.SS.Formula.Functions;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Web;
using System.Web.UI.WebControls;
using WebLib;
namespace Education
{
public class PublicVariable : WebLib.PublicVariable
{
private static Random r = new Random();
// 常用變數
public static string[] = { "\r\n" };
#region SESSION
public const string CompanyId = "CompanyId";
public const string EmployeeId = "EmployeeId";
public const string EmployeeName = "EmployeeName";
public const string EmployeeFunction = "EmployeeFunction";
public const string CurrentPlace = "CurrentPlace";
public const string CurrentPlaceName = "CurrentPlaceName";
public const string UserGroups = "UserGroups";
public const string EventPicturePath = "~/Upload/Event/";
public const string BulletinAttachPath = "~/Upload/Attach/";
public const string IsManager = "IsManager";
public const string IsWorker = "IsWorker";
public const string IsBackend = "IsBackend";
#endregion
#region /
public const string = "~/PhotoUpload/Teacher/";
public const string = "~/PhotoUpload/Place/";
public const string = "~/PhotoUpload/Class/";
public const string = "~/DocUpload/Certificate/";
public const string = "~/DocUpload/Communication/";
#endregion
#region Global.asax web.config
/// <summary>
/// 系統名稱
/// </summary>
public static string SystemName = "Education";
/// <summary>
/// 未登入時開放某些功能
/// </summary>
public static bool NoLoginFunction = false;
/// <summary>
/// 是否為偵錯模式,會將系統錯誤訊息顯示在網頁上
/// </summary>
public static bool DEBUG = true;
/// <summary>
/// 管理員群組
/// </summary>
public static string ManagerGroup = "'TR01'";
/// <summary>
/// 承辦人群組
/// </summary>
public static string WorkerGroup = "'TR02'";
/// <summary>
/// 總管理處ID
/// </summary>
public static int ID = 2;
/// <summary>
/// 人資部ID
/// </summary>
public static int ID = 56;
/// <summary>
/// 財務部ID
/// </summary>
public static int ID = 60;
/// <summary>
/// 是否使用 SSL 登入發郵件
/// </summary>
public static bool SendMailBySSL = false;
/// <summary>
/// 郵件發送主機
/// </summary>
public static string SendMailHost = "";
/// <summary>
/// 郵件發送通訊埠,不使用 SSL 的通常是 25,使用 SSL 的通常是 465
/// </summary>
public static int SendMailPort = 25;
/// <summary>
/// 郵件發送帳號
/// </summary>
public static string SendMailUserName = "";
/// <summary>
/// 郵件發送密碼
/// </summary>
public static string SendMailPassword = "";
#region 滿調
public const string SurveyReminderDeadlineDaysKey = "SurveyReminderDeadlineDays";
public const string SurveyReminderExcludeEmployeesKey = "SurveyReminderExcludeEmployees";
public const string SurveyReminderMinCourseDateKey = "SurveyReminderMinCourseDate";
public const string SiteBaseUrlKey = "SiteBaseUrl";
/// <summary>
/// 上課後幾天內要填寫滿意度調查
/// </summary>
public static int SurveyReminderDeadlineDays = 10;
/// <summary>
/// 排除催填的員工編號(逗號分隔)
/// </summary>
public static string SurveyReminderExcludeEmployees = "00002,00003";
/// <summary>
/// 只催填此日期之後的課程
/// </summary>
public static DateTime SurveyReminderMinCourseDate = new DateTime(2026, 7, 1);
/// <summary>
/// 站台基礎 URL(如 http://hostname:port
/// </summary>
public static string SiteBaseUrl = "";
#endregion
#endregion
public static string SystemVersion
{
get
{
System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(assembly.Location);
return fvi.FileVersion;
}
}
private static DateTime? _領據關帳年月UpdateTime = null;
private static string _領據關帳年月 = string.Empty;
public static string
{
get
{
if (string.IsNullOrEmpty(_領據關帳年月) || !_領據關帳年月UpdateTime.HasValue || _領據關帳年月UpdateTime < DateTime.Now.AddMinutes(-10))
{
using (var conn = DAC.NewConnection())
{
var daoBWEX = new DAC_BWEX(conn);
_領據關帳年月 = daoBWEX.Read領據關帳年月;
_領據關帳年月UpdateTime = DateTime.Now;
}
}
return _領據關帳年月;
}
set
{
_領據關帳年月 = value;
_領據關帳年月UpdateTime = DateTime.Now;
using (var conn = DAC.NewConnection())
{
new DAC_BWEX(conn).WriteSetting("領據關帳年月", 1, value);
}
}
}
private static decimal? _領據執行業務所得課稅門檻 = null;
public static decimal
{
get
{
if (!_領據執行業務所得課稅門檻.HasValue)
{
using (var conn = DAC.NewConnection())
{
_領據執行業務所得課稅門檻 = new DAC_BRTE(conn).;
}
}
return _領據執行業務所得課稅門檻.Value;
}
}
private static decimal? _領據薪資課稅門檻 = null;
public static decimal
{
get
{
if (!_領據薪資課稅門檻.HasValue)
{
using (var conn = DAC.NewConnection())
{
_領據薪資課稅門檻 = new DAC_BRTE(conn).;
}
}
return _領據薪資課稅門檻.Value;
}
}
private static decimal? _領據基本工資 = null;
public static decimal
{
get
{
if (!_領據基本工資.HasValue)
{
using (var conn = DAC.NewConnection())
{
_領據基本工資 = new DAC_BRTE(conn).;
}
}
return _領據基本工資.Value;
}
}
private static decimal? _領據執行業務所得稅率 = null;
public static decimal
{
get
{
if (!_領據執行業務所得稅率.HasValue)
{
using (var conn = DAC.NewConnection())
{
_領據執行業務所得稅率 = new DAC_BRTE(conn).;
}
}
return _領據執行業務所得稅率.Value;
}
}
private static decimal? _領據薪資稅率 = null;
public static decimal
{
get
{
if (!_領據薪資稅率.HasValue)
{
using (var conn = DAC.NewConnection())
{
_領據薪資稅率 = new DAC_BRTE(conn).;
}
}
return _領據薪資稅率.Value;
}
}
}
}
-220
View File
@@ -1,220 +0,0 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Text;
using WebLib;
namespace Education
{
/// <summary>
/// 取得權限設定
/// </summary>
public class MWEB: DAC
{
public MWEB()
{
}
/// <summary>
/// 檢查目前登入的員工是否有某程式的權限
/// </summary>
/// <param name="programId">程式編號</param>
/// <param name="rightName">權限名稱</param>
/// <param name="employeeId">員工編號</param>
/// <returns></returns>
public bool CheckRight(string programId, WRightName rightName, string employeeId)
{
if (programId == null)
programId = "NO PROGRAM ID";
if (employeeId == null)
employeeId = "NOBODY";
// 取得員工權限
string right1 = BWCPE_GetRight(programId, employeeId, rightName);
// 取得這個員工隸屬的群組
string[] bpglps = BWEH_GetBpglpListByBpeno(employeeId);
// 取得各群組權限
string[] right2 = new string[bpglps.Length];
for (int i = 0; i < right2.Length; i++)
{
right2[i] = BWCPG_GetRight(programId, bpglps[i], rightName);
}
// 綜合判斷權限
string right = "";
if (right1 != "")
right = right1;
if (right != "Y")
for (int i = 0; i < right2.Length; i++)
{
if (right2[i] != "")
{
if (right != "Y" && right2[i] == "Y")
right = "Y";
else if (right != "Y" && right2[i] == "N")
right = "N";
}
}
return right == "Y";
}
/// <summary>
/// 取員工權限
/// </summary>
/// <param name="rightId">權限編號</param>
/// <param name="employId">員工編號</param>
/// <param name="functionName">功能名稱</param>
/// <returns></returns>
private string BWCPE_GetRight(string rightId, string employId, WRightName functionName)
{
string funcName = "";
switch (functionName)
{
case WRightName.Execute:
funcName = "BPRT1";
break;
case WRightName.Insert:
funcName = "BPRTI";
break;
case WRightName.Update:
funcName = "BPRTM";
break;
case WRightName.Delete:
funcName = "BPRTD";
break;
case WRightName.Search:
funcName = "BPRTF";
break;
case WRightName.Print:
funcName = "BPRTP";
break;
}
DbCommand cmd = NewCommand();
cmd.CommandText = @"SELECT BPRT1, BPRTI, BPRTM, BPRTD, BPRTF, BPRTP FROM BWCPE WHERE BPPRG=@BPPRG AND BPENO=@BPENO";
AddParam(cmd, "BPPRG", rightId);
AddParam(cmd, "BPENO", employId);
DataTable data = Select(cmd);
if (data.Rows.Count != 0)
{
return data.Rows[0][funcName].ToString();
}
return "";
}
/// <summary>
/// 取員工所屬群組
/// </summary>
/// <param name="employeeId"></param>
/// <returns></returns>
private string[] BWEH_GetBpglpListByBpeno(string employeeId)
{
DbCommand cmd = NewCommand();
cmd.CommandText = @"SELECT E.BPGLP AS BPGLP
FROM BWEG E, BWEH G
WHERE E.BPGLP=G.BPGLP AND G.BPENO=@BPENO
ORDER BY E.BPGLP ";
AddParam(cmd, "BPENO", employeeId);
DataTable inGroup = Select(cmd);
if (inGroup.Rows.Count == 0)
return new string[0];
else
{
string[] result = new string[inGroup.Rows.Count];
for (int i = 0; i < inGroup.Rows.Count; i++)
{
result[i] = inGroup.Rows[i][0].ToString();
}
return result;
}
}
/// <summary>
/// 取群組權限
/// </summary>
/// <param name="rightId">權限編號</param>
/// <param name="groupId">群組編號</param>
/// <param name="functionName">功能名稱</param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
private string BWCPG_GetRight(string rightId, string groupId, WRightName functionName)
{
string funcName = "";
switch (functionName)
{
case WRightName.Execute:
funcName = "BPRT1";
break;
case WRightName.Insert:
funcName = "BPRTI";
break;
case WRightName.Update:
funcName = "BPRTM";
break;
case WRightName.Delete:
funcName = "BPRTD";
break;
case WRightName.Search:
funcName = "BPRTF";
break;
case WRightName.Print:
funcName = "BPRTP";
break;
}
DbCommand cmd = NewCommand();
cmd.CommandText = @"SELECT BPRT1, BPRTI, BPRTM, BPRTD, BPRTF, BPRTP FROM BWCPG WHERE BPPRG=@BPPRG AND BPGLP=@BPGLP";
AddParam(cmd, "BPPRG", rightId);
AddParam(cmd, "BPGLP", groupId);
DataTable data = Select(cmd);
if (data.Rows.Count != 0)
{
return data.Rows[0][funcName].ToString();
}
return "";
}
}
public enum WRightName
{
/// <summary>
/// 主檔
/// </summary>
Execute,
/// <summary>
/// 新增
/// </summary>
Insert,
/// <summary>
/// 更正
/// </summary>
Update,
/// <summary>
/// 刪除
/// </summary>
Delete,
/// <summary>
/// 查詢
/// </summary>
Search,
/// <summary>
/// 印表
/// </summary>
Print
}
public class ProgramID
{
public const string = "TR_EXPORT";
}
}
@@ -1,173 +0,0 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
using System.Timers;
using System.IO;
namespace Wellan.Service
{
/// <summary>
/// 檔案定時清除服務
/// </summary>
public class WDeleteFileService
{
private WDeleteFileService()
{
_deleteFilePatterns = new List<string>();
_timer = new Timer();
_timer.Enabled = false;
_timer.Elapsed += new ElapsedEventHandler(DoDeleteFile);
}
public static WDeleteFileService GetInstance()
{
if (_instance == null)
_instance = new WDeleteFileService();
return _instance;
}
/// <summary>
/// 檔案刪除間隔時間,單位為秒。預設值為 600 秒
/// </summary>
public int Interval
{
get
{
return _interval;
}
set
{
_interval = value;
}
}
/// <summary>
/// 要刪除多久之前的檔案,單位為秒。預設值為 600 秒
/// </summary>
public int FileAgeToDelete
{
get
{
return Convert.ToInt32(_fileAge.TotalSeconds);
}
set
{
_fileAge = new TimeSpan(value * TimeSpan.TicksPerSecond);
}
}
/// <summary>
/// 設定或取得檔案定時清除服務是否啟動
/// </summary>
public bool Enabled
{
get
{
return _enabled;
}
set
{
if (value)
{
if (_enabled)
return;
_timer.Interval = _interval * 1000;
_timer.AutoReset = true;
_timer.Enabled = true;
_enabled = true;
}
else
{
if (!_enabled)
return;
_enabled = false;
_timer.Enabled = false;
}
}
}
/// <summary>
/// <para>欲清除的檔案路徑及檔案名稱,檔案名稱可以使用萬用字元</para>
/// <para>需要多個檔案路徑及檔案名稱時,請將所需的檔案路徑及檔案名稱一一加入</para>
/// <para>例如:c:\temp\*.mdb 表示要清除 c:\temp 目錄下的 *.mdb</para>
/// </summary>
public List<string> DeletePatterns
{
get
{
return _deleteFilePatterns;
}
}
/// <summary>
/// 實際執行刪除的動作
/// </summary>
private void DoDeleteFile(object sender, ElapsedEventArgs e)
{
if (!_enabled)
{
_timer.Enabled = false;
return;
}
_timer.Enabled = false;
try
{
foreach (string pattern in _deleteFilePatterns)
{
string namepart = Path.GetFileName(pattern);
string pathPart = pattern.Substring(0, pattern.Length - namepart.Length);
try
{
DirectoryInfo dirInfo = new DirectoryInfo(pathPart);
FileInfo[] matchFiles = dirInfo.GetFiles(namepart);
foreach (FileInfo file in matchFiles)
{
try
{
if (DateTime.Now - file.LastWriteTime > _fileAge)
file.Delete();
}
catch
{
// do nothing
}
}
}
catch
{
// do nothing
}
}
}
finally
{
_timer.Enabled = true;
}
}
private static WDeleteFileService _instance = null;
private List<string> _deleteFilePatterns = null;
private Timer _timer = null;
private int _interval = 600;
private TimeSpan _fileAge = new TimeSpan(TimeSpan.TicksPerSecond * 600);
private bool _enabled = false;
#region UNIT TEST
public static void Main()
{
WDeleteFileService delSrv = WDeleteFileService.GetInstance();
delSrv.DeletePatterns.Add(@"c:\temp\*.*");
delSrv.Interval = 5;
delSrv.FileAgeToDelete = 1;
delSrv.Enabled = true;
Console.WriteLine("Press ENTER to end program");
Console.ReadLine();
delSrv.Enabled = false;
}
#endregion
}
}
-129
View File
@@ -1,129 +0,0 @@
using System;
using System.Data;
using System.Configuration;
using System.Net;
using System.Net.Mail;
using System.Collections.Generic;
using System.Timers;
/// <summary>
/// 郵件傳送服務
/// </summary>
public class WMailSender
{
private static WMailSender _instance = null;
private Queue<MailMessage> _queue = null;
private bool _enabled = false;
private int _interval = 30;
private Timer _timer = null;
private string _host = "";
private WMailSender()
{
_queue = new Queue<MailMessage>();
_timer = new Timer();
_timer.Enabled = false;
_timer.Elapsed += new ElapsedEventHandler(SendMailLoop);
}
public static WMailSender GetInstance()
{
if (_instance == null)
_instance = new WMailSender();
return _instance;
}
public string Host
{
set
{
_host = value;
}
get
{
return _host;
}
}
public void Send(MailMessage message)
{
_queue.Enqueue(message);
}
private void SendMailLoop(object sender, ElapsedEventArgs e)
{
if (!_enabled)
{
_timer.Enabled = false;
return;
}
_timer.Enabled = false;
SmtpClient _client = new SmtpClient();
//_client.DeliveryMethod = SmtpDeliveryMethod.Network;
try
{
while (_queue.Count > 0)
{
MailMessage message = _queue.Dequeue();
try
{
_client.Send(message);
}
catch
{
// 如果傳送失敗,需重傳
_queue.Enqueue(message);
}
}
}
finally
{
_timer.Enabled = true;
}
}
public int Interval
{
get
{
return _interval;
}
set
{
_interval = value;
}
}
public bool Enabled
{
get
{
return _enabled;
}
set
{
if (value)
{
if (_enabled)
return;
_timer.Interval = _interval * 1000;
_timer.AutoReset = true;
_timer.Enabled = true;
_enabled = true;
}
else
{
if (!_enabled)
return;
_enabled = false;
_timer.Enabled = false;
}
}
}
}
-187
View File
@@ -1,187 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<LookupConfig xmlns="http://www.maolaoda.com.tw/LookupConfig.xsd">
<Appearence dataTextColor="#000000"
dataBackgroundColor="#FFFFFF"
dataAltBackgroundColor="#CCCCCC"
titleTextColor="#FFFFFF"
titleBackgroundColor="#2472B2"
titleTextSize="12pt"
dataTextSize="12pt"/>
<Lookup name="BDPT"
sql="SELECT BDNUM,BDNAM FROM BDPT WHERE :WHERE ORDER BY :ORDER"
keyFields="BDNUM,BDMAN"
listFields="BDNUM,BDNAM"
outputFields="BDNUM,BDNAM"
listTitles="部門編號,部門名稱"
listTitleMids=""
listWidths="80,150"
maxRecord="20"
notShowOnlyOneRecord="true"/>
<Lookup name="BPSN"
sql="SELECT BPENO, BPNME, BPEML FROM BPSNView WHERE :WHERE ORDER BY :ORDER"
keyFields="BPENO,BPNME,BPEML"
listFields="BPENO,BPNME,BPEML"
outputFields="BPENO,BPNME,BPEML"
listTitles="員工編號,員工姓名,電子郵件"
listTitleMids=""
listWidths="80,150,200"
maxRecord="20"
notShowOnlyOneRecord="true"/>
<Lookup name="BPSN1"
sql="SELECT BPENO, BPNME FROM BPSNView WHERE :WHERE AND (BPEDY IS NULL OR BPEDY >= CONVERT(DATETIME, CONVERT(VARCHAR, DATEADD(Month, -1, DATEADD(Day, -DAY(GETDATE()) + 1, GETDATE())), 112), 112)) ORDER BY :ORDER"
keyFields="BPENO,BPNME"
listFields="BPENO,BPNME"
outputFields="BPENO,BPNME"
listTitles="員工編號,員工姓名"
listTitleMids=""
listWidths="80,150"
maxRecord="20"
notShowOnlyOneRecord="true"/>
<Lookup name="BPSN2"
sql="SELECT BPENO, BPNME, BPEML FROM BPSNView WHERE :WHERE AND BPEDY IS NULL AND BPDPT != 'F01' ORDER BY :ORDER"
keyFields="BPENO,BPNME,BPEML"
listFields="BPENO,BPNME,BPEML"
outputFields="BPENO,BPNME,BPEML"
listTitles="員工編號,員工姓名,電子郵件"
listTitleMids=""
listWidths="80,150,200"
maxRecord="20"
notShowOnlyOneRecord="true"/>
<Lookup name="BPSNEML"
sql="SELECT BPENO, BPNME, BPEML FROM BPSNView WHERE :WHERE AND (BPEDY IS NULL OR BPEDY >= CONVERT(DATETIME, CONVERT(VARCHAR, DATEADD(Month, -1, DATEADD(Day, -DAY(GETDATE()) + 1, GETDATE())), 112), 112)) ORDER BY :ORDER"
keyFields="BPNME,BPEML"
listFields="BPNME,BPEML"
outputFields="BPNME,BPEML"
listTitles="員工姓名,電子郵件"
listTitleMids=""
listWidths="100,180"
maxRecord="20"
notShowOnlyOneRecord="true"/>
<Lookup name="BCLS"
sql="SELECT BSCLS,BSSCR FROM BCLS WHERE :WHERE ORDER BY :ORDER"
keyFields="BSCLS,BSSCR"
listFields="BSCLS,BSSCR"
outputFields="BSCLS,BSSCR"
listTitles="類別編號,類別內容"
listTitleMids=""
listWidths="80,300"
maxRecord="20"
notShowOnlyOneRecord="true"/>
<Lookup name="BCLSEDIT"
sql="SELECT '' BSCLS, '' BSSCR UNION SELECT BSCLS,BSSCR FROM BCLS WHERE :WHERE ORDER BY :ORDER"
keyFields="BSCLS,BSSCR"
listFields="BSCLS,BSSCR"
outputFields="BSCLS,BSSCR"
listTitles="類別編號,類別內容"
listTitleMids=""
listWidths="80,300"
maxRecord="20"
notShowOnlyOneRecord="true"/>
<Lookup name="BPNO"
sql="SELECT BPPNO,BPNAM FROM BPNO WHERE :WHERE ORDER BY :ORDER"
keyFields="BPPNO,BPNAM"
listFields="BPPNO,BPNAM"
outputFields="BPPNO,BPNAM"
listTitles="專案編號,專案名稱"
listTitleMids=""
listWidths="80,150"
maxRecord="20"
notShowOnlyOneRecord="true"/>
<Lookup name="BCUS"
sql="SELECT BCNUM,BCNAM FROM BCUS WHERE :WHERE ORDER BY :ORDER"
keyFields="BCNUM,BCNAM"
listFields="BCNUM,BCNAM"
outputFields="BCNUM,BCNAM"
listTitles="客戶編號,客戶名稱"
listTitleMids=""
listWidths="80,300"
maxRecord="20"
notShowOnlyOneRecord="true"/>
<Lookup name="BPRJ"
sql="SELECT BPPNM, BPPME FROM BPRJ WHERE :WHERE ORDER BY :ORDER"
keyFields="BPPNM,BPPME"
listFields="BPPNM,BPPME"
outputFields="BPPNM,BPPME"
listTitles="專案編號,專案名稱"
listTitleMids=""
listWidths="80,300"
maxRecord="20"
notShowOnlyOneRecord="true"/>
<Lookup name="BPAA"
sql="SELECT BPPYN, BPPYM FROM BPAA WHERE :WHERE ORDER BY :ORDER"
keyFields="BPPYN,BPPYM"
listFields="BPPYN,BPPYM"
outputFields="BPPYN,BPPYM"
listTitles="專案年度編號,專案年度名稱"
listTitleMids=""
listWidths="120,300"
maxRecord="20"
notShowOnlyOneRecord="true"/>
<Lookup name="BRML"
sql="SELECT BCNUM, BCNAM FROM BRML WHERE :WHERE ORDER BY :ORDER"
keyFields="BCNUM,BCNAM"
listFields="BCNUM,BCNAM"
outputFields="BCNUM,BCNAM"
listTitles="銀行代號,銀行名稱"
listTitleMids=""
listWidths="120,300"
maxRecord="20"
notShowOnlyOneRecord="true"/>
<Lookup name="BFRM"
sql="SELECT BFNUM, BFNAM, BFFRM FROM BFRM WHERE :WHERE ORDER BY :ORDER"
keyFields="BFNUM,BFNAM"
listFields="BFNUM,BFNAM"
outputFields="BFNUM,BFNAM,BFFRM"
listTitles="公式代號,公式名稱"
listTitleMids=""
listWidths="120,300"
maxRecord="20"
notShowOnlyOneRecord="true"/>
<Lookup name="BPAP"
sql="SELECT BPENO, BPNME FROM BPAP WHERE :WHERE ORDER BY :ORDER"
keyFields="BPENO,BPNME"
listFields="BPENO,BPNME"
outputFields="BPENO,BPNME"
listTitles="人員編號,人員姓名"
listTitleMids=""
listWidths="80,150"
maxRecord="20"
notShowOnlyOneRecord="true"/>
<Lookup name="組織類別"
sql="SELECT 組織類別ID,組織類別名稱 FROM 組織類別 WHERE :WHERE ORDER BY :ORDER"
keyFields="組織類別ID,組織類別名稱"
listFields="組織類別ID,組織類別名稱"
outputFields="組織類別ID,組織類別名稱"
listTitles="組織類別ID,組織類別名稱"
listTitleMids=""
listWidths="80,150"
maxRecord="20"
notShowOnlyOneRecord="true"/>
<Lookup name="職務"
sql="SELECT 職務ID, 職務名稱 FROM 職務 WHERE :WHERE ORDER BY :ORDER"
keyFields="職務ID,職務名稱"
listFields="職務ID,職務名稱"
outputFields="職務ID,職務名稱"
listTitles="職務ID,職務名稱"
listTitleMids=""
listWidths="80,150"
maxRecord="20"
notShowOnlyOneRecord="true"/>
</LookupConfig>
-36
View File
@@ -1,36 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="LookupConfig" targetNamespace="http://www.maolaoda.com.tw/LookupConfig.xsd"
elementFormDefault="qualified" xmlns="http://www.maolaoda.com.tw/LookupConfig.xsd"
xmlns:mstns="http://www.maolaoda.com.tw/LookupConfig.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:msprop="urn:schemas-microsoft-com:xml-msprop">
<xs:complexType name="Lookup">
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="sql" type="xs:string" use="required"/>
<xs:attribute name="keyFields" type="xs:string" use="required"/>
<xs:attribute name="listFields" type="xs:string" use="required"/>
<xs:attribute name="outputFields" type="xs:string" use="required"/>
<xs:attribute name="listTitles" type="xs:string" use="required"/>
<xs:attribute name="listTitleMids" type="xs:string" use="optional"/>
<xs:attribute name="listWidths" type="xs:string" use="optional"/>
<xs:attribute name="maxRecord" type="xs:int" use="required"/>
<xs:attribute name="notShowOnlyOneRecord" type="xs:boolean" use="optional"/>
</xs:complexType>
<xs:complexType name="Appearence">
<xs:attribute name="titleBackgroundColor" type="xs:string"/>
<xs:attribute name="dataBackgroundColor" type="xs:string"/>
<xs:attribute name="dataTextColor" type="xs:string"/>
<xs:attribute name="dataAltBackgroundColor" type="xs:string"/>
<xs:attribute name="titleTextColor" type="xs:string"/>
<xs:attribute name="titleTextSize" type="xs:string"/>
<xs:attribute name="dataTextSize" type="xs:string"/>
</xs:complexType>
<xs:element name="LookupConfig">
<xs:complexType>
<xs:sequence>
<xs:element name="Appearence" maxOccurs="1" minOccurs="0" type="Appearence"/>
<xs:element name="Lookup" type="Lookup" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
-10
View File
@@ -1,10 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--This file is auto-generated by the XML Schema Designer. It holds layout information for components on the designer surface.-->
<XSDDesignerLayout Style="TopDown" layoutVersion="2" viewPortLeft="-659" viewPortTop="0" zoom="100">
<Lookup_XmlComplexType left="0" top="715" width="10054" height="6614" selected="0" zOrder="1" index="0" expanded="1" />
<LookupConfig_XmlElement left="13785" top="848" width="7196" height="3280" selected="0" zOrder="2" index="1" expanded="1">
<Appearence_XmlElement left="11774" top="4636" width="5292" height="3281" selected="0" zOrder="4" index="0" expanded="0" />
<Lookup_XmlElement left="17700" top="4636" width="5292" height="3281" selected="0" zOrder="7" index="1" expanded="0" />
</LookupConfig_XmlElement>
<Appearence_XmlComplexType left="-26" top="8203" width="8890" height="6138" selected="0" zOrder="10" index="2" expanded="1" />
</XSDDesignerLayout>
@@ -1,33 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using WebLib;
namespace Education
{
public class DAC_檔案圖示: NameValueList
{
public DAC_檔案圖示()
{
Add("doc.png", "doc");
Add("doc.png", "docx");
Add("xls.png", "xls");
Add("xls.png", "xlsx");
Add("txt.png", "txt");
Add("exe.png", "exe");
Add("gif.png", "gif");
Add("html.png", "htm");
Add("html.png", "html");
Add("jpg.png", "jpg");
Add("jpg.png", "jpeg");
Add("pdf.png", "pdf");
Add("png.png", "png");
Add("ppt.png", "ppt");
Add("rar.png", "rar");
Add("rtf.png", "rtf");
Add("swf.png", "swf");
Add("zip.png", "zip");
}
}
}
-79
View File
@@ -1,79 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Common;
using WebLib;
namespace Education
{
public class DAC_GetData : DAC
{
public DAC_GetData()
: base()
{ }
public DAC_GetData(DbConnection conn)
: base(conn)
{ }
public (int id)
{
DAC_場地 Dao場地 = new DAC_場地(conn);
DAC_訓練課程企劃 Dao訓練課程企劃 = new DAC_訓練課程企劃(conn);
int = Dao訓練課程企劃.Select選定場地(id);
if ( > 0)
{
List d = Dao場地.SelectOne();
if (d.Count > 0)
return d[0];
}
else
{
string = Dao訓練課程企劃.Select選定場地名稱(id);
if (!string.IsNullOrEmpty())
{
result = new ();
result. = ;
return result;
}
}
return new ();
}
public (int id, int )
{
DAC_講師 Dao講師 = new DAC_講師(conn);
DAC_訓練課程企劃 Dao訓練課程企劃 = new DAC_訓練課程企劃(conn);
int = Dao訓練課程企劃.Select選定講師(id, );
if ( > 0)
{
List d = Dao講師.SelectOne();
if (d.Count > 0)
return d[0];
}
else
{
string = Dao訓練課程企劃.Select選定講師名稱(id, );
if (!string.IsNullOrEmpty())
{
result = new ();
result. = ;
return result;
}
}
return new ();
}
public (object id, object )
{
return (DAC.GetInt32(id), DAC.GetInt32());
}
public string (string id)
{
return new DAC_BCLS().Get類別名稱(DAC_檢附資料參考.BSPAR, id).Replace("\r\n", "<br/>").Replace("\r", "<br/>").Replace("\n", "<br/>");
}
}
}
-235
View File
@@ -1,235 +0,0 @@
using System;
using System.Collections.Generic;
using System.Text;
using Wellan.Common;
using System.Data;
using System.Data.Common;
namespace Education
{
/// <summary>
/// 員工權限
/// </summary>
public class BWCPE_DAC : DAC
{
private DbCommand cmdSelect = null;
private DbCommand cmdSelectRight = null;
private DbCommand cmdCheckExist = null;
private DbCommand cmdInsert = null;
private DbCommand cmdUpdate = null;
public BWCPE_DAC()
{
}
public BWCPE_DAC(string connectionConfig, string connectionConfigName)
: base(connectionConfig, connectionConfigName)
{
}
private void PrepareSql()
{
EnsureQuery();
string tblBwcpe = WGuard1.WCFA("BWCPE");
if (cmdSelect == null)
{
cmdSelect = Query.NewCommand(Query.ReplaceParamNamePrefix(
"SELECT B.BPPRG AS BPPRG, B.BPENO AS BPENO, A.BPENO AS BBPENO, A.BPNME AS BBPNME, "
+ " B.BPRT1 AS BPRT1, B.BPRTI AS BPRTI, B.BPRTM AS BPRTM, B.BPRTD AS BPRTD, "
+ " B.BPRTF AS BPRTF, B.BPRTP AS BPRTP, B.TRDAT AS TRDAT, B.TRMOD AS TRMOD, "
+ " B.TRUSR AS TRUSR "
+ " FROM " + WGuard1.WCFA("BPSN") + " A "
+ " LEFT OUTER JOIN " + tblBwcpe + " B ON A.BPENO=B.BPENO AND B.BPPRG=@BPPRG "
+ " WHERE A.BPEDY IS NULL AND A.BPENO <> '  ' "
+ " ORDER BY A.BPENO "));
cmdSelect.Parameters.Add(Query.NewParameter("BPPRG", DbType.AnsiString));
}
if (cmdCheckExist == null)
{
cmdCheckExist = Query.NewCommand(Query.ReplaceParamNamePrefix("SELECT COUNT(1) FROM " + tblBwcpe + " WHERE BPPRG=@BPPRG AND BPENO=@BPENO"));
cmdCheckExist.Parameters.Add(Query.NewParameter("BPPRG", DbType.AnsiString));
cmdCheckExist.Parameters.Add(Query.NewParameter("BPENO", DbType.AnsiString));
}
if (cmdInsert == null)
{
cmdInsert = Query.NewCommand(Query.ReplaceParamNamePrefix(
"INSERT INTO " + tblBwcpe + " (BPPRG, BPENO, BPRT1, BPRTI, BPRTM, BPRTD, BPRTF, BPRTP, TRDAT, TRMOD, TRUSR) "
+ " VALUES (@BPPRG, @BPENO, @BPRT1, @BPRTI, @BPRTM, @BPRTD, @BPRTF, @BPRTP, @TRDAT, 'INSERT', @TRUSR)"));
cmdInsert.Parameters.Add(Query.NewParameter("BPPRG", DbType.AnsiString));
cmdInsert.Parameters.Add(Query.NewParameter("BPENO", DbType.AnsiString));
cmdInsert.Parameters.Add(Query.NewParameter("BPRT1", DbType.AnsiString));
cmdInsert.Parameters.Add(Query.NewParameter("BPRTI", DbType.AnsiString));
cmdInsert.Parameters.Add(Query.NewParameter("BPRTM", DbType.AnsiString));
cmdInsert.Parameters.Add(Query.NewParameter("BPRTD", DbType.AnsiString));
cmdInsert.Parameters.Add(Query.NewParameter("BPRTF", DbType.AnsiString));
cmdInsert.Parameters.Add(Query.NewParameter("BPRTP", DbType.AnsiString));
cmdInsert.Parameters.Add(Query.NewParameter("TRDAT", DbType.DateTime));
cmdInsert.Parameters.Add(Query.NewParameter("TRUSR", DbType.AnsiString));
}
if (cmdUpdate == null)
{
cmdUpdate = Query.NewCommand(Query.ReplaceParamNamePrefix(
"UPDATE " + tblBwcpe
+ " SET BPRT1=@BPRT1, BPRTI=@BPRTI, BPRTM=@BPRTM, BPRTD=@BPRTD, BPRTF=@BPRTF,"
+ " BPRTP=@BPRTP, TRDAT=@TRDAT, TRMOD='UPDATE', TRUSR=@TRUSR"
+ " WHERE BPPRG=@BPPRG AND BPENO=@BPENO"));
cmdUpdate.Parameters.Add(Query.NewParameter("BPPRG", DbType.AnsiString));
cmdUpdate.Parameters.Add(Query.NewParameter("BPENO", DbType.AnsiString));
cmdUpdate.Parameters.Add(Query.NewParameter("BPRT1", DbType.AnsiString));
cmdUpdate.Parameters.Add(Query.NewParameter("BPRTI", DbType.AnsiString));
cmdUpdate.Parameters.Add(Query.NewParameter("BPRTM", DbType.AnsiString));
cmdUpdate.Parameters.Add(Query.NewParameter("BPRTD", DbType.AnsiString));
cmdUpdate.Parameters.Add(Query.NewParameter("BPRTF", DbType.AnsiString));
cmdUpdate.Parameters.Add(Query.NewParameter("BPRTP", DbType.AnsiString));
cmdUpdate.Parameters.Add(Query.NewParameter("TRDAT", DbType.DateTime));
cmdUpdate.Parameters.Add(Query.NewParameter("TRUSR", DbType.AnsiString));
}
if (cmdSelectRight == null)
{
cmdSelectRight = Query.NewCommand(Query.ReplaceParamNamePrefix(
"SELECT BPRT1, BPRTI, BPRTM, BPRTD, BPRTF, BPRTP "
+ " FROM " + tblBwcpe + " WHERE BPPRG=@BPPRG AND BPENO=@BPENO "));
cmdSelectRight.Parameters.Add(Query.NewParameter("BPPRG", DbType.AnsiString));
cmdSelectRight.Parameters.Add(Query.NewParameter("BPENO", DbType.AnsiString));
}
}
public DataTable Select(string bpprg)
{
PrepareSql();
cmdSelect.Parameters["BPPRG"].Value = bpprg;
return Query.Select(cmdSelect);
}
public bool CheckExist(string bpprg, string bpeno)
{
PrepareSql();
cmdCheckExist.Parameters["BPPRG"].Value = bpprg;
cmdCheckExist.Parameters["BPENO"].Value = bpeno;
int i = Convert.ToInt16(Query.ExecuteScalar(cmdCheckExist));
return !(i == 0);
}
public void Insert(string bpprg, string bpeno, string bprt1, string bprti,
string bprtm, string bprtd, string bprtf, string bprtp)
{
PrepareSql();
FillParameters(cmdInsert, bpprg, bpeno, bprt1, bprti, bprtm, bprtd, bprtf, bprtp);
Query.ExecuteNonQuery(cmdInsert);
}
public void Update(string bpprg, string bpeno, string bprt1, string bprti,
string bprtm, string bprtd, string bprtf, string bprtp)
{
PrepareSql();
FillParameters(cmdUpdate, bpprg, bpeno, bprt1, bprti, bprtm, bprtd, bprtf, bprtp);
Query.ExecuteNonQuery(cmdUpdate);
}
public void SetAllRight(string bpprg, string bpeno, bool right)
{
string r = right ? "Y" : "N";
if (!CheckExist(bpprg, bpeno))
{
Insert(bpprg, bpeno, r, r, r, r, r, r);
}
else
{
Update(bpprg, bpeno, r, r, r, r, r, r);
}
}
private void FillParameters(DbCommand cmd, string bpprg, string bpeno, string bprt1, string bprti,
string bprtm, string bprtd, string bprtf, string bprtp)
{
cmd.Parameters["BPPRG"].Value = bpprg;
cmd.Parameters["BPENO"].Value = bpeno;
cmd.Parameters["BPRT1"].Value = bprt1 == "Y" || bprt1 == "N" ? bprt1 : "N";
cmd.Parameters["BPRTI"].Value = bprti == "Y" || bprti == "N" ? bprti : "N";
cmd.Parameters["BPRTM"].Value = bprtm == "Y" || bprtm == "N" ? bprtm : "N";
cmd.Parameters["BPRTD"].Value = bprtd == "Y" || bprtd == "N" ? bprtd : "N";
cmd.Parameters["BPRTF"].Value = bprtf == "Y" || bprtf == "N" ? bprtf : "N";
cmd.Parameters["BPRTP"].Value = bprtp == "Y" || bprtp == "N" ? bprtp : "N";
cmd.Parameters["TRDAT"].Value = DateTime.UtcNow.AddHours(8);
cmd.Parameters["TRUSR"].Value = WGuard1.CUSR;
}
/// <summary>
/// 取得員工權限<para></para>
/// "Y" 表示有權限 "N" 表示無權限 "" 表示未設定
/// </summary>
/// <param name="bpprg">程式名稱</param>
/// <param name="bpeno">員工編號</param>
/// <param name="right">權限</param>
/// <returns>"Y" 表示有權限 "N" 表示無權限 "" 表示未設定</returns>
public string GetRight(string bpprg, string bpeno, WRightName right)
{
PrepareSql();
string funcName = "";
switch (right)
{
case WRightName.Execute:
funcName = "BPRT1";
break;
case WRightName.Insert:
funcName = "BPRTI";
break;
case WRightName.Update:
funcName = "BPRTM";
break;
case WRightName.Delete:
funcName = "BPRTD";
break;
case WRightName.Search:
funcName = "BPRTF";
break;
case WRightName.Print:
funcName = "BPRTP";
break;
}
cmdSelectRight.Parameters["BPPRG"].Value = bpprg;
cmdSelectRight.Parameters["BPENO"].Value = bpeno;
DataTable data = Query.Select(cmdSelectRight);
if (data.Rows.Count != 0)
{
return data.Rows[0][funcName].ToString();
}
return "";
}
}
public enum WRightName
{
/// <summary>
/// 主檔
/// </summary>
Execute,
/// <summary>
/// 新增
/// </summary>
Insert,
/// <summary>
/// 更正
/// </summary>
Update,
/// <summary>
/// 刪除
/// </summary>
Delete,
/// <summary>
/// 查詢
/// </summary>
Search,
/// <summary>
/// 印表
/// </summary>
Print
}
}
-206
View File
@@ -1,206 +0,0 @@
using System;
using System.Collections.Generic;
using System.Text;
using Wellan.Common;
using System.Data;
using System.Data.Common;
namespace Education
{
/// <summary>
/// 群組權限
/// </summary>
public class BWCPG_DAC : DAC
{
private DbCommand cmdSelect = null;
private DbCommand cmdSelectRight = null;
private DbCommand cmdCheckExist = null;
private DbCommand cmdInsert = null;
private DbCommand cmdUpdate = null;
public BWCPG_DAC()
{
}
public BWCPG_DAC(string connectionConfig, string connectionConfigName)
: base(connectionConfig, connectionConfigName)
{
}
private void PrepareSql()
{
EnsureQuery();
string tblBwcpg = WGuard1.WCFA("BWCPG");
if (cmdSelect == null)
{
cmdSelect = Query.NewCommand(Query.ReplaceParamNamePrefix(
"SELECT B.BPPRG AS BPPRG, B.BPGLP AS BPGLP, A.BPGLP AS BBPGLP, A.BPDSP AS BBPDSP, "
+ " B.BPRT1 AS BPRT1, B.BPRTI AS BPRTI, B.BPRTM AS BPRTM, B.BPRTD AS BPRTD, "
+ " B.BPRTF AS BPRTF, B.BPRTP AS BPRTP, B.TRDAT AS TRDAT, B.TRMOD AS TRMOD, "
+ " B.TRUSR AS TRUSR "
+ " FROM " + WGuard1.WCFA("BWEG") + " A "
+ " LEFT OUTER JOIN " + tblBwcpg + " B ON A.BPGLP=B.BPGLP AND B.BPPRG=@BPPRG "
+ " ORDER BY A.BPGLP "));
cmdSelect.Parameters.Add(Query.NewParameter("BPPRG", DbType.AnsiString));
}
if (cmdCheckExist == null)
{
cmdCheckExist = Query.NewCommand(Query.ReplaceParamNamePrefix("SELECT COUNT(1) FROM " + tblBwcpg + " WHERE BPPRG=@BPPRG AND BPGLP=@BPGLP"));
cmdCheckExist.Parameters.Add(Query.NewParameter("BPPRG", DbType.AnsiString));
cmdCheckExist.Parameters.Add(Query.NewParameter("BPGLP", DbType.AnsiString));
}
if (cmdInsert == null)
{
cmdInsert = Query.NewCommand(Query.ReplaceParamNamePrefix(
"INSERT INTO " + tblBwcpg + " (BPPRG, BPGLP, BPRT1, BPRTI, BPRTM, BPRTD, BPRTF, BPRTP, TRDAT, TRMOD, TRUSR) "
+ " VALUES (@BPPRG, @BPGLP, @BPRT1, @BPRTI, @BPRTM, @BPRTD, @BPRTF, @BPRTP, @TRDAT, 'INSERT', @TRUSR)"));
cmdInsert.Parameters.Add(Query.NewParameter("BPPRG", DbType.AnsiString));
cmdInsert.Parameters.Add(Query.NewParameter("BPGLP", DbType.AnsiString));
cmdInsert.Parameters.Add(Query.NewParameter("BPRT1", DbType.AnsiString));
cmdInsert.Parameters.Add(Query.NewParameter("BPRTI", DbType.AnsiString));
cmdInsert.Parameters.Add(Query.NewParameter("BPRTM", DbType.AnsiString));
cmdInsert.Parameters.Add(Query.NewParameter("BPRTD", DbType.AnsiString));
cmdInsert.Parameters.Add(Query.NewParameter("BPRTF", DbType.AnsiString));
cmdInsert.Parameters.Add(Query.NewParameter("BPRTP", DbType.AnsiString));
cmdInsert.Parameters.Add(Query.NewParameter("TRDAT", DbType.DateTime));
cmdInsert.Parameters.Add(Query.NewParameter("TRUSR", DbType.AnsiString));
}
if (cmdUpdate == null)
{
cmdUpdate = Query.NewCommand(Query.ReplaceParamNamePrefix(
"UPDATE " + tblBwcpg
+ " SET BPRT1=@BPRT1, BPRTI=@BPRTI, BPRTM=@BPRTM, BPRTD=@BPRTD, BPRTF=@BPRTF,"
+ " BPRTP=@BPRTP, TRDAT=@TRDAT, TRMOD='UPDATE', TRUSR=@TRUSR"
+ " WHERE BPPRG=@BPPRG AND BPGLP=@BPGLP"));
cmdUpdate.Parameters.Add(Query.NewParameter("BPPRG", DbType.AnsiString));
cmdUpdate.Parameters.Add(Query.NewParameter("BPGLP", DbType.AnsiString));
cmdUpdate.Parameters.Add(Query.NewParameter("BPRT1", DbType.AnsiString));
cmdUpdate.Parameters.Add(Query.NewParameter("BPRTI", DbType.AnsiString));
cmdUpdate.Parameters.Add(Query.NewParameter("BPRTM", DbType.AnsiString));
cmdUpdate.Parameters.Add(Query.NewParameter("BPRTD", DbType.AnsiString));
cmdUpdate.Parameters.Add(Query.NewParameter("BPRTF", DbType.AnsiString));
cmdUpdate.Parameters.Add(Query.NewParameter("BPRTP", DbType.AnsiString));
cmdUpdate.Parameters.Add(Query.NewParameter("TRDAT", DbType.DateTime));
cmdUpdate.Parameters.Add(Query.NewParameter("TRUSR", DbType.AnsiString));
}
if (cmdSelectRight == null)
{
cmdSelectRight = Query.NewCommand(Query.ReplaceParamNamePrefix(
"SELECT BPRT1, BPRTI, BPRTM, BPRTD, BPRTF, BPRTP "
+ " FROM " + tblBwcpg + " WHERE BPPRG=@BPPRG AND BPGLP=@BPGLP "));
cmdSelectRight.Parameters.Add(Query.NewParameter("BPPRG", DbType.AnsiString));
cmdSelectRight.Parameters.Add(Query.NewParameter("BPGLP", DbType.AnsiString));
}
}
public DataTable Select(string bpprg)
{
PrepareSql();
cmdSelect.Parameters["BPPRG"].Value = bpprg;
return Query.Select(cmdSelect);
}
public bool CheckExist(string bpprg, string bpglp)
{
PrepareSql();
cmdCheckExist.Parameters["BPPRG"].Value = bpprg;
cmdCheckExist.Parameters["BPGLP"].Value = bpglp;
int i = Convert.ToInt16(Query.ExecuteScalar(cmdCheckExist));
return i != 0;
}
public void Insert(string bpprg, string bpglp, string bprt1, string bprti,
string bprtm, string bprtd, string bprtf, string bprtp)
{
PrepareSql();
FillParameters(cmdInsert, bpprg, bpglp, bprt1, bprti, bprtm, bprtd, bprtf, bprtp);
Query.ExecuteNonQuery(cmdInsert);
}
public void Update(string bpprg, string bpglp, string bprt1, string bprti,
string bprtm, string bprtd, string bprtf, string bprtp)
{
PrepareSql();
FillParameters(cmdUpdate, bpprg, bpglp, bprt1, bprti, bprtm, bprtd, bprtf, bprtp);
Query.ExecuteNonQuery(cmdUpdate);
}
public void SetAllRight(string bpprg, string bpglp, bool right)
{
string r = right ? "Y" : "N";
if (!CheckExist(bpprg, bpglp))
{
Insert(bpprg, bpglp, r, r, r, r, r, r);
}
else
{
Update(bpprg, bpglp, r, r, r, r, r, r);
}
}
private void FillParameters(DbCommand cmd, string bpprg, string bpglp, string bprt1, string bprti,
string bprtm, string bprtd, string bprtf, string bprtp)
{
cmd.Parameters["BPPRG"].Value = bpprg;
cmd.Parameters["BPGLP"].Value = bpglp;
cmd.Parameters["BPRT1"].Value = bprt1 == "Y" || bprt1 == "N" ? bprt1 : "N";
cmd.Parameters["BPRTI"].Value = bprti == "Y" || bprti == "N" ? bprti : "N";
cmd.Parameters["BPRTM"].Value = bprtm == "Y" || bprtm == "N" ? bprtm : "N";
cmd.Parameters["BPRTD"].Value = bprtd == "Y" || bprtd == "N" ? bprtd : "N";
cmd.Parameters["BPRTF"].Value = bprtf == "Y" || bprtf == "N" ? bprtf : "N";
cmd.Parameters["BPRTP"].Value = bprtp == "Y" || bprtp == "N" ? bprtp : "N";
cmd.Parameters["TRDAT"].Value = DateTime.UtcNow.AddHours(8);
cmd.Parameters["TRUSR"].Value = WGuard1.CUSR;
}
/// <summary>
/// 取得群組權限<para></para>
/// "Y" 表示有權限 "N" 表示無權限 "" 表示未設定
/// </summary>
/// <param name="bpprg">程式名稱</param>
/// <param name="bpglp">群組編號</param>
/// <param name="right">權限</param>
/// <returns>"Y" 表示有權限 "N" 表示無權限 "" 表示未設定</returns>
public string GetRight(string bpprg, string bpglp, WRightName right)
{
PrepareSql();
string funcName = "";
switch (right)
{
case WRightName.Execute:
funcName = "BPRT1";
break;
case WRightName.Insert:
funcName = "BPRTI";
break;
case WRightName.Update:
funcName = "BPRTM";
break;
case WRightName.Delete:
funcName = "BPRTD";
break;
case WRightName.Search:
funcName = "BPRTF";
break;
case WRightName.Print:
funcName = "BPRTP";
break;
}
cmdSelectRight.Parameters["BPPRG"].Value = bpprg;
cmdSelectRight.Parameters["BPGLP"].Value = bpglp;
DataTable data = Query.Select(cmdSelectRight);
if (data.Rows.Count != 0)
{
return data.Rows[0][funcName].ToString();
}
return "";
}
}
}
-215
View File
@@ -1,215 +0,0 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.Common;
using Wellan.Common;
namespace Education
{
/// <summary>
/// 員工群組
/// </summary>
public class BWEH_DAC : DAC
{
DbCommand cmdInsert = null;
DbCommand cmdDelete = null;
public BWEH_DAC()
{
}
public BWEH_DAC(string connectionConfig, string connectionConfigName)
: base(connectionConfig, connectionConfigName)
{
}
private void PrepareSql()
{
EnsureQuery();
if (cmdInsert == null)
{
cmdInsert = Query.NewCommand("INSERT INTO " + WGuard1.WCFA("BWEH") + " (BPGLP, BPENO) VALUES (@BPGLP, @BPENO)");
cmdInsert.Parameters.Add(Query.NewParameter("BPGLP", DbType.String));
cmdInsert.Parameters.Add(Query.NewParameter("BPENO", DbType.String));
}
if (cmdDelete == null)
{
cmdDelete = Query.NewCommand("DELETE FROM " + WGuard1.WCFA("BWEH") + " WHERE BPGLP=@BPGLP AND BPENO=@BPENO");
cmdDelete.Parameters.Add(Query.NewParameter("BPGLP", DbType.String));
cmdDelete.Parameters.Add(Query.NewParameter("BPENO", DbType.String));
}
}
public void SelectByBpglp(string bpglp, out DataTable inGroup, out DataTable outGroup)
{
PrepareSql();
inGroup = Query.Select(
"SELECT E.BPENO AS BPENO, E.BPNME AS BPNME "
+ " FROM " + WGuard1.WCFA("BPSN") + " E," + WGuard1.WCFA("BWEH") + " G"
+ " WHERE G.BPENO=E.BPENO AND G.BPGLP='" + bpglp +"' "
+ " AND E.BPEDY IS NULL "
+ " ORDER BY E.BPENO ");
outGroup = Query.Select(
"SELECT BPENO, BPNME FROM " + WGuard1.WCFA("BPSN")
+ " WHERE BPENO<>'  ' "
+ " AND BPEDY IS NULL "
+ " AND BPENO NOT IN (SELECT E.BPENO AS BPENO "
+ " FROM " + WGuard1.WCFA("BPSN") + " E," + WGuard1.WCFA("BWEH") + " G"
+ " WHERE G.BPENO=E.BPENO AND G.BPGLP='" + bpglp + "' "
+ " AND E.BPEDY IS NULL ) "
+ " ORDER BY BPENO");
}
public string[] GetBpenoListByBpglp(string bpglp)
{
PrepareSql();
DataTable inGroup = Query.Select(
"SELECT E.BPENO AS BPENO "
+ " FROM " + WGuard1.WCFA("BPSN") + " E," + WGuard1.WCFA("BWEH") + " G"
+ " WHERE G.BPENO=E.BPENO AND G.BPGLP='" + bpglp + "' "
+ " AND E.BPEDY IS NULL "
+ " ORDER BY E.BPENO ");
if (inGroup.Rows.Count == 0)
return new string[0];
else
{
string[] result = new string[inGroup.Rows.Count];
for (int i = 0; i < inGroup.Rows.Count; i++)
{
result[i] = inGroup.Rows[i][0].ToString();
}
return result;
}
}
public void UpdateByBpglp(string bpglp, DataTable updateTable)
{
PrepareSql();
DbConnection conn = Query.NewConnection();
cmdDelete.Connection = conn;
cmdInsert.Connection = conn;
conn.Open();
DbTransaction tran = conn.BeginTransaction();
cmdDelete.Transaction = tran;
cmdInsert.Transaction = tran;
try
{
foreach (DataRow row in updateTable.Rows)
{
if (row.RowState == DataRowState.Added)
{
cmdInsert.Parameters["BPGLP"].Value = bpglp;
cmdInsert.Parameters["BPENO"].Value = row["BPENO", DataRowVersion.Current];
cmdInsert.ExecuteNonQuery();
}
if (row.RowState == DataRowState.Deleted)
{
cmdDelete.Parameters["BPGLP"].Value = bpglp;
cmdDelete.Parameters["BPENO"].Value = row["BPENO", DataRowVersion.Original];
cmdDelete.ExecuteNonQuery();
}
}
tran.Commit();
updateTable.AcceptChanges();
}
catch
{
tran.Rollback();
}
finally
{
conn.Close();
cmdInsert.Dispose();
cmdDelete.Dispose();
}
}
public void SelectByBpeno(string bpeno, out DataTable inGroup, out DataTable outGroup)
{
PrepareSql();
inGroup = Query.Select(
"SELECT E.BPGLP AS BPGLP, E.BPDSP AS BPDSP "
+ " FROM " + WGuard1.WCFA("BWEG") + " E," + WGuard1.WCFA("BWEH") + " G"
+ " WHERE E.BPGLP=G.BPGLP AND G.BPENO='" + bpeno + "' "
+ " ORDER BY E.BPGLP ");
outGroup = Query.Select(
"SELECT BPGLP, BPDSP FROM " + WGuard1.WCFA("BWEG")
+ " WHERE BPGLP NOT IN (SELECT BPGLP FROM " + WGuard1.WCFA("BWEH") + " WHERE BPENO='" + bpeno + "')"
+ " ORDER BY BPGLP");
}
public string[] GetBpglpListByBpeno(string bpeno)
{
PrepareSql();
DataTable inGroup = Query.Select(
"SELECT E.BPGLP AS BPGLP "
+ " FROM " + WGuard1.WCFA("BWEG") + " E," + WGuard1.WCFA("BWEH") + " G"
+ " WHERE E.BPGLP=G.BPGLP AND G.BPENO='" + bpeno + "' "
+ " ORDER BY E.BPGLP ");
if (inGroup.Rows.Count == 0)
return new string[0];
else
{
string[] result = new string[inGroup.Rows.Count];
for (int i = 0; i < inGroup.Rows.Count; i++)
{
result[i] = inGroup.Rows[i][0].ToString();
}
return result;
}
}
public void UpdateByBpeno(string bpeno, DataTable updateTable)
{
PrepareSql();
DbConnection conn = Query.NewConnection();
cmdDelete.Connection = conn;
cmdInsert.Connection = conn;
conn.Open();
DbTransaction tran = conn.BeginTransaction();
cmdDelete.Transaction = tran;
cmdInsert.Transaction = tran;
try
{
foreach (DataRow row in updateTable.Rows)
{
if (row.RowState == DataRowState.Added)
{
cmdInsert.Parameters["BPENO"].Value = bpeno;
cmdInsert.Parameters["BPGLP"].Value = row["BPGLP", DataRowVersion.Current];
cmdInsert.ExecuteNonQuery();
}
if (row.RowState == DataRowState.Deleted)
{
cmdDelete.Parameters["BPENO"].Value = bpeno;
cmdDelete.Parameters["BPGLP"].Value = row["BPGLP", DataRowVersion.Original];
cmdDelete.ExecuteNonQuery();
}
}
tran.Commit();
updateTable.AcceptChanges();
}
catch
{
tran.Rollback();
}
finally
{
conn.Close();
cmdDelete.Dispose();
cmdInsert.Dispose();
}
}
}
}
-139
View File
@@ -1,139 +0,0 @@
using System;
using System.Collections.Generic;
using System.Web;
using System.Data;
using System.Data.Common;
using System.ComponentModel;
using WebLib;
namespace Education
{
[DataObject]
public class DAC_BCLS : DAC
{
public DAC_BCLS()
{ }
public DAC_BCLS(DbConnection conn)
: base(conn)
{ }
[DataObjectMethod(DataObjectMethodType.Select)]
public NameValueList Get類別資料By大類ForList(string )
{
NameValueList result = new NameValueList();
DbCommand cmd = NewCommand();
cmd.CommandText = @"SELECT BSCLS, BSSCR FROM BCLS WHERE BSPAR=@BSPAR AND (BLOCK='' OR BLOCK IS NULL)";
AddParam(cmd, "BSPAR", );
bool wantClose;
IDataReader reader = ExecuteReader(cmd, out wantClose);
try
{
result.Fill(reader, 1, 0);
cmd.Cancel();
reader.Close();
}
finally
{
cmd.Dispose();
reader.Dispose();
CloseConnection(wantClose);
}
return result;
}
[DataObjectMethod(DataObjectMethodType.Select)]
public NameValueList Get類別資料By大類ForDropDown(string )
{
NameValueList result = new NameValueList();
result.Add("(請選擇)", DBNull.Value);
DbCommand cmd = NewCommand();
cmd.CommandText = @"SELECT BSCLS, BSSCR FROM BCLS WHERE BSPAR=@BSPAR AND (BLOCK='' OR BLOCK IS NULL)";
AddParam(cmd, "BSPAR", );
bool wantClose;
IDataReader reader = ExecuteReader(cmd, out wantClose);
try
{
result.Fill(reader, 1, 0, false);
cmd.Cancel();
reader.Close();
}
finally
{
cmd.Dispose();
reader.Dispose();
CloseConnection(wantClose);
}
return result;
}
public string Get類別名稱(object , object )
{
if ( == null)
= DBNull.Value;
if ( == null)
= DBNull.Value;
DbCommand cmd = NewCommand();
cmd.CommandText = @"SELECT BSSCR FROM BCLS WHERE BSPAR=@BSPAR AND BSCLS=@BSCLS";
AddParam(cmd, "BSPAR", );
AddParam(cmd, "BSCLS", );
string result;
ExecuteScalar(cmd, out result);
return result;
}
public void UpdateOne(object , object , object )
{
if ( == null)
= DBNull.Value;
if ( == null)
= DBNull.Value;
if ( == null)
= DBNull.Value;
DbCommand cmd = NewCommand();
cmd.CommandText = @"SELECT COUNT(1) FROM BCLS WHERE BSPAR=@BSPAR AND BSCLS=@BSCLS";
AddParam(cmd, "BSPAR", );
AddParam(cmd, "BSCLS", );
int count;
ExecuteScalar(cmd, out count);
if (count == 0)
{
cmd.CommandText =
@"INSERT INTO BCLS (BSPAR, BSCLS, BSSCR, BLOCK, TRDAT, TRMOD, TRUSR, BSRMK, DB_APPNO)
VALUES (@BSPAR, @BSCLS, @BSSCR, '', GETDATE(), 'INSERT', @TRUSR, '', 1)";
AddParam(cmd, "BSPAR", );
AddParam(cmd, "BSCLS", );
AddParam(cmd, "BSSCR", );
AddParam(cmd, "TRUSR", CurrentUserId);
ExecuteNonQuery(cmd);
}
else
{
cmd.CommandText =
@"UPDATE BCLS
SET BSSCR = @BSSCR ,
TRDAT = GETDATE() ,
TRMOD = 'UPDATE' ,
TRUSR = @TRUSR ,
DB_APPNO = DB_APPNO + 1
WHERE BSPAR = @BSPAR
AND BSCLS = @BSCLS";
AddParam(cmd, "BSPAR", );
AddParam(cmd, "BSCLS", );
AddParam(cmd, "BSSCR", );
AddParam(cmd, "TRUSR", CurrentUserId);
ExecuteNonQuery(cmd);
}
}
}
}
-129
View File
@@ -1,129 +0,0 @@
using System;
using System.Collections.Generic;
using System.Web;
using System.Data;
using System.Data.Common;
using System.ComponentModel;
using WebLib;
namespace Education
{
[DataObject]
public class DAC_BPAA: DAC
{
/// <summary>
/// 取得指定年度專案計畫代號與名稱,不含總公司
/// </summary>
/// <param name="year">指定年度</param>
/// <returns></returns>
public DataTable GetBpaa(int year)
{
DbCommand cmd = NewCommand();
cmd.CommandText =
@"SELECT BPPYN, ISNULL('【' + (SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BCUSZON' AND BSCLS=SUBSTRING(BPPYN,LEN(BPPYN)-5,1)) + '】', '') + BPPYM BPPYM
FROM BPAA WHERE (BPYER=@BPYER) AND (BPCSD IS NULL) AND (BPPYN <> '000000001') AND (BPPYN <> '103JYB00001') AND (BPPYN <> '103TYB00001')
ORDER BY BPPYN";
AddParam(cmd, "BPYER", year - PublicVariable.CY11);
return Select(cmd);
}
/// <summary>
/// 取得所有年度專案計畫代號與名稱,含總公司
/// </summary>
/// <returns></returns>
public DataTable GetBpaaWithTY()
{
DbCommand cmd = NewCommand();
cmd.CommandText =
@"SELECT '000000001' BPPYN, '【非專案人員】' BPPYM
UNION
SELECT BPPYN, ISNULL('【' + (SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BCUSZON' AND BSCLS=SUBSTRING(BPPYN,LEN(BPPYN)-5,1)) + '】', '') + BPPYM BPPYM
FROM BPAA WHERE (BPCSD IS NULL) AND (BPPYN <> '000000001') AND (BPPYN <> '103JYB00001') AND (BPPYN <> '103TYB00001') AND (BPPYN <> '102JYB00001') AND (BPPYN <> '102TYB00001')
UNION
SELECT BPPYN, ISNULL('【' + (SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BCUSZON' AND BSCLS=SUBSTRING(BPPYN,LEN(BPPYN)-5,1)) + '】', '') + BPPYM BPPYM
FROM BPAA WHERE (BPCSD IS NULL) AND (BPPYN = '103JYB00001' OR BPPYN = '103TYB00001')
ORDER BY BPPYN";
return Select(cmd);
}
/// <summary>
/// 取得所有年度專案計畫代號與名稱,含總公司,並加上一個空項目
/// </summary>
/// <returns></returns>
public DataTable GetBpaaWithTYPlusNone()
{
DbCommand cmd = NewCommand();
cmd.CommandText =
@"SELECT '' BPPYN, '【全部】' BPPYM
UNION
SELECT '000000001' BPPYN, '【非專案人員】' BPPYM
UNION
SELECT BPPYN, ISNULL('【' + (SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BCUSZON' AND BSCLS=SUBSTRING(BPPYN,LEN(BPPYN)-5,1)) + '】', '') + BPPYM BPPYM
FROM BPAA WHERE (BPCSD IS NULL) AND (BPPYN <> '000000001') AND (BPPYN <> '103JYB00001') AND (BPPYN <> '103TYB00001') AND (BPPYN <> '103JYB00001') AND (BPPYN <> '103TYB00001')
UNION
SELECT BPPYN, ISNULL('【' + (SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BCUSZON' AND BSCLS=SUBSTRING(BPPYN,LEN(BPPYN)-5,1)) + '】', '') + BPPYM BPPYM
FROM BPAA WHERE (BPCSD IS NULL) AND (BPPYN = '103JYB00001' OR BPPYN = '103TYB00001')
ORDER BY BPPYN";
return Select(cmd);
}
/// <summary>
/// 取得指定年度專案計畫代號與名稱,含總公司
/// </summary>
/// <param name="year">指定年度</param>
/// <param name="companyID">公司別</param>
/// <returns></returns>
public DataTable GetBpaaWithTY(int year, string companyID)
{
DbCommand cmd = NewCommand();
cmd.CommandText =
@"SELECT '000000001' AS BPPYN, '【非專案人員】' AS BPPYM
UNION
SELECT BPPYN, BPPYM FROM
(
SELECT BPPYN,
ISNULL('【' + (SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BCUSZON' AND BSCLS=SUBSTRING(BPPYN,LEN(BPPYN)-5,1)) + '】', '') + BPPYM AS BPPYM,
(SELECT TOP 1 BPCPY FROM BPRJ WHERE BPRJ.BPPNM=BPAA.BPPNM) AS BPCPY
FROM BPAA WHERE (BPYER=@BPYER) AND (BPPYN <> '000000001') AND (BPPYN <> '103JYB00001') AND (BPPYN <> '103TYB00001') AND (BPPYN <> '102JYB00001') AND (BPPYN <> '102TYB00001')
UNION
SELECT BPPYN,
ISNULL('【' + (SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BCUSZON' AND BSCLS=SUBSTRING(BPPYN,LEN(BPPYN)-5,1)) + '】', '') + BPPYM AS BPPYM,
(SELECT TOP 1 BPCPY FROM BPRJ WHERE BPRJ.BPPNM=BPAA.BPPNM) AS BPCPY
FROM BPAA WHERE (BPPYN = '103JYB00001') OR (BPPYN = '103TYB00001')
) AS TMP1 WHERE BPCPY=@BPCPY
ORDER BY BPPYN";
// @"SELECT '000000001' BPPYN, '【非專案人員】' BPPYM
// UNION
// SELECT BPPYN, '【' + (SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BCUSZON' AND BSCLS=SUBSTRING(BPPYN,LEN(BPPYN)-5,1)) + '】' + BPPYM BPPYM
// FROM BPAA WHERE (BPYER=@BPYER) AND (BPPYN <> '000000001')
// ORDER BY BPPYN";
AddParam(cmd, "BPYER", year);
AddParam(cmd, "BPCPY", companyID);
return Select(cmd);
}
/// <summary>
/// 取得指定年度專案計畫代號與名稱,含總公司,並加上一個空項目
/// </summary>
/// <param name="year">指定年度</param>
/// <returns></returns>
public DataTable GetBpaaWithTYPlusNone(int year)
{
DbCommand cmd = NewCommand();
cmd.CommandText =
@"SELECT '' BPPYN, '【全部】' BPPYM
UNION
SELECT '000000001' BPPYN, '【非專案人員】' BPPYM
UNION
SELECT BPPYN, ISNULL('【' + (SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BCUSZON' AND BSCLS=SUBSTRING(BPPYN,LEN(BPPYN)-5,1)) + '】', '') + BPPYM BPPYM
FROM BPAA WHERE (BPYER=@BPYER) AND (BPPYN <> '000000001') AND (BPPYN <> '103JYB00001') AND (BPPYN <> '103TYB00001') AND (BPPYN <> '102JYB00001') AND (BPPYN <> '102TYB00001')
UNION
SELECT BPPYN, ISNULL('【' + (SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BCUSZON' AND BSCLS=SUBSTRING(BPPYN,LEN(BPPYN)-5,1)) + '】', '') + BPPYM BPPYM
FROM BPAA WHERE (BPPYN = '103JYB00001' OR BPPYN = '103TYB00001')
ORDER BY BPPYN";
AddParam(cmd, "BPYER", year - PublicVariable.CY11);
return Select(cmd);
}
}
}
-124
View File
@@ -1,124 +0,0 @@
using System;
using System.Collections.Generic;
using System.Web;
using System.Data;
using System.Data.Common;
using System.ComponentModel;
using WebLib;
namespace Education
{
[DataObject]
public class DAC_BPSN : DAC
{
public DAC_BPSN()
{ }
public DAC_BPSN(DbConnection conn)
: base(conn)
{ }
public string Get員工姓名(object BPENO)
{
if (BPENO == null)
BPENO = DBNull.Value;
DbCommand cmd = NewCommand();
cmd.CommandText = @"SELECT BPNME FROM BPSNView WHERE BPENO=@BPENO";
AddParam(cmd, "BPENO", BPENO);
string result;
ExecuteScalar(cmd, out result);
return result;
}
public string Get電子郵件(object BPENO)
{
if (BPENO == null)
BPENO = DBNull.Value;
DbCommand cmd = NewCommand();
cmd.CommandText = @"SELECT BPEML FROM BPSNView WHERE BPENO=@BPENO";
AddParam(cmd, "BPENO", BPENO);
string result;
ExecuteScalar(cmd, out result);
return result;
}
public string Get公司電話(object BPENO)
{
if (BPENO == null)
BPENO = DBNull.Value;
DbCommand cmd = NewCommand();
cmd.CommandText = @"SELECT BPOTL FROM BPSNView WHERE BPENO=@BPENO";
AddParam(cmd, "BPENO", BPENO);
string result;
ExecuteScalar(cmd, out result);
return result;
}
public bool Is管理群組(object BPENO)
{
if (BPENO == null)
return false;
DbCommand cmd = NewCommand();
cmd.CommandText =
String.Format(@"SELECT COUNT(1) FROM BWEH WHERE BPENO=@BPENO AND BPGLP IN ({0})", PublicVariable.ManagerGroup);
AddParam(cmd, "BPENO", BPENO);
int i;
ExecuteScalar(cmd, out i);
return i > 0;
}
public bool Is承辦人群組(object BPENO)
{
if (BPENO == null)
return false;
DbCommand cmd = NewCommand();
cmd.CommandText =
String.Format(@"SELECT COUNT(1) FROM BWEH WHERE BPENO=@BPENO AND BPGLP IN ({0})", PublicVariable.WorkerGroup);
AddParam(cmd, "BPENO", BPENO);
int i;
ExecuteScalar(cmd, out i);
return i > 0;
}
[DataObjectMethod(DataObjectMethodType.Select)]
public DataTable Select(string BPENO, string BPNME)
{
DbCommand cmdSelect = NewCommand();
cmdSelect.CommandText =
@"select C.BPENO AS 員工編號, C.BPNME as 員工姓名, C.BPEML as 電子郵件,
D.RAPYN AS 計畫年度編號, ISNULL('【' + I.BSSCR + '】', '') + E.BPPYM AS 計畫年度名稱,
D.RABRH AS 站別編號, F.BSSCR AS 站別名稱,
D.RAJNO AS 職務編號, G.BPJME AS 職務名稱,
D.RACNO AS 等級編號, H.BPCME AS 等級名稱
from BPSNView C
left outer join RASN D on C.BPENO = D.RANUM and D.RAEDT is NULL
left outer join BPAA E on D.RAPYN = E.BPPYN
left outer join BCLS F on F.BSCLS = D.RABRH and F.BSPAR = 'BPSNBRH'
left outer join BPJA G on G.BPPYN = D.RAPYN and G.BPJNO = D.RAJNO
left outer join BPJB H on H.BPPYN = D.RAPYN and H.BPJNO = D.RAJNO and H.BPCNO = D.RACNO
left outer join BCLS I on I.BSCLS = SUBSTRING(D.RAPYN, LEN(D.RAPYN)-5,1) and I.BSPAR = 'BCUSZON'
where C.BPEDY is null ";
if (BPENO != null && BPENO.Length > 0)
{
cmdSelect.CommandText += " and C.BPENO like @BPENO ";
AddParam(cmdSelect, "BPENO", BPENO + "%");
}
if (BPNME != null && BPNME.Length > 0)
{
cmdSelect.CommandText += " and C.BPNME like @BPNME ";
AddParam(cmdSelect, "BPNME", BPNME + "%");
}
cmdSelect.CommandText += " order by C.BPENO";
return Select(cmdSelect);
}
}
}
-69
View File
@@ -1,69 +0,0 @@
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Linq;
using System.Web;
using WebLib;
namespace Education
{
public class DAC_BRTE : DAC
{
public DAC_BRTE()
{ }
public DAC_BRTE(DbConnection conn)
: base(conn)
{ }
private decimal GetValue(string brtyp)
{
DbCommand cmd = NewCommand();
cmd.CommandText = @"SELECT TOP 1 BRRTE FROM BRTE WHERE BRTYP=@BRTYP AND BRSDT <= @TODAY ORDER BY BRSDT DESC";
AddParam(cmd, "BRTYP", brtyp);
AddParam(cmd, "TODAY", PublicVariable.TaiwanNow.Date);
ExecuteScalar<decimal>(cmd, out decimal value);
return value;
}
public decimal
{
get
{
return GetValue("領據執行業務所得課稅門檻");
}
}
public decimal
{
get
{
return GetValue("領據薪資課稅門檻");
}
}
public decimal
{
get
{
return GetValue("領據基本工資");
}
}
public decimal
{
get
{
return GetValue("領據執行業務所得稅率");
}
}
public decimal
{
get
{
return GetValue("領據薪資稅率");
}
}
}
}
-92
View File
@@ -1,92 +0,0 @@
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Linq;
using System.Web;
using WebLib;
namespace Education
{
public class DAC_BWEX: DAC
{
private const string _tableName = "BWEX";
private const string = "領據關帳年月";
public DAC_BWEX()
{ }
public DAC_BWEX(DbConnection conn)
: base(conn)
{ }
/// <summary>
/// 讀取設定
/// </summary>
/// <param name="bsnum"></param>
/// <param name="bsitm"></param>
/// <returns></returns>
public string ReadSetting(string bsnum, int bsitm)
{
var cmd = NewCommand($"SELECT BSNAM FROM {_tableName} WHERE BSNUM=@BSNUM AND BSITM=@BSITM");
AddParam(cmd, "BSNUM", bsnum);
AddParam(cmd, "BSITM", $"{bsitm,4}");
if (ExecuteScalar<string>(cmd, out string value))
{
return value;
}
else
{
return "";
}
}
/// <summary>
/// 寫入設定
/// </summary>
/// <param name="bsnum"></param>
/// <param name="bsitm"></param>
/// <param name="bsnam"></param>
public void WriteSetting(string bsnum, int bsitm, string bsnam)
{
var cmdRead = NewCommand($"SELECT COUNT(*) FROM {_tableName} WHERE BSNUM=@BSNUM AND BSITM=@BSITM");
AddParam(cmdRead, "BSNUM", bsnum);
AddParam(cmdRead, "BSITM", $"{bsitm,4}");
ExecuteScalar(cmdRead, out int count);
if (count > 0)
{
var cmd = NewCommand($"UPDATE {_tableName} SET BSNAM=@BSNAM, TRDAT=@TRDAT, TRMOD=@TRMOD, TRUSR=@TRUSR WHERE BSNUM=@BSNUM AND BSITM=@BSITM");
AddParam(cmd, "BSNAM", bsnam);
AddParam(cmd, "TRDAT", DateTime.Now);
AddParam(cmd, "TRMOD", "UPDATE");
AddParam(cmd, "TRUSR", CurrentUserId);
AddParam(cmd, "BSNUM", bsnum);
AddParam(cmd, "BSITM", $"{bsitm,4}");
ExecuteNonQuery(cmd);
}
else
{
var cmd = NewCommand($"INSERT INTO {_tableName} (BSNUM, BSITM, BSNAM, TRDAT, TRMOD, TRUSR) VALUES (@BSNUM, @BSITM, @BSNAM, @TRDAT, @TRMOD, @TRUSR)");
AddParam(cmd, "BSNUM", bsnum);
AddParam(cmd, "BSITM", $"{bsitm,4}");
AddParam(cmd, "BSNAM", bsnam);
AddParam(cmd, "TRDAT", DateTime.Now);
AddParam(cmd, "TRMOD", "INSERT");
AddParam(cmd, "TRUSR", CurrentUserId);
ExecuteNonQuery(cmd);
}
}
public string Read領據關帳年月
{
get
{
using (var conn = DAC.NewConnection())
{
var daoBWEX = new DAC_BWEX(conn);
return daoBWEX.ReadSetting(, 1);
}
}
}
}
}
-83
View File
@@ -1,83 +0,0 @@
using System;
using System.Collections.Generic;
using System.Web;
using System.Data;
using System.Data.Common;
using System.ComponentModel;
using WebLib;
namespace Education
{
[DataObject]
public class DAC_RASN : DAC
{
public DAC_RASN()
{ }
public DAC_RASN(DbConnection conn)
: base(conn)
{ }
/*
SELECT B.BPENO AS 員工編號, B.BPENO + ' ' + B.BPNME AS 員工姓名,
ISNULL(D.RPCPY, C.RPCPY) AS 公司別,
A.RAPYN AS 專案編號, F.BPPYM AS 專案名稱,
A.RAJNO AS 職稱編號, E.BPJME AS 職稱名稱
FROM BPSN B
INNER JOIN RASN A ON A.RANUM=B.BPENO AND B.BPEDY IS NULL -- 派遣紀錄
LEFT JOIN RPIR C ON A.RANUM=C.RPENO AND C.RPREN=(SELECT MAX(RPREN) FROM RPIR WHERE RPENO=A.RANUM) -- 勞健保紀錄
LEFT JOIN RPIB D ON C.RPREN=D.RPREN AND D.RPITM=(SELECT MAX(RPITM) FROM RPIB WHERE RPREN=D.RPREN) -- 勞健保異動紀錄
LEFT JOIN BPJA E ON E.BPPYN=A.RAPYN AND E.BPJNO=A.RAJNO -- 專案年度職稱
LEFT JOIN BPAA F ON F.BPPYN=A.RAPYN -- 專案年度接單
WHERE RAEDT IS NULL
ORDER BY BPENO
*/
[DataObjectMethod(DataObjectMethodType.Select)]
public NameValueList Select專案人員(string , string )
{
NameValueList result = new NameValueList();
DbCommand cmd = NewCommand();
cmd.CommandText =
@"SELECT 員工編號, 員工姓名 FROM
(
SELECT A.RANUM AS 員工編號, A.RANUM + ' ' + B.BPNME AS 員工姓名, ISNULL(D.RPCPY, C.RPCPY) AS 公司別
FROM RASN A
INNER JOIN BPSNView B ON A.RANUM=B.BPENO AND B.BPEDY IS NULL
LEFT JOIN RPIR C ON A.RANUM=C.RPENO AND C.RPREN=(SELECT MAX(RPREN) FROM RPIR WHERE RPENO=A.RANUM)
LEFT JOIN RPIB D ON C.RPREN=D.RPREN AND D.RPITM=(SELECT MAX(RPITM) FROM RPIB WHERE RPREN=D.RPREN)
WHERE A.RAPYN=@專案年度編號
AND RAEDT IS NULL
) AS TMP1
WHERE 公司別=@公司別
ORDER BY 員工編號";
// @"SELECT A.RANUM AS 員工編號, A.RANUM + ' ' + B.BPNME AS 員工姓名
// FROM RASN A
// INNER JOIN BPSN B ON A.RANUM=B.BPENO AND B.BPEDY IS NULL
// WHERE A.RAPYN=@RAPYN
// AND RAEDT IS NULL
// ORDER BY A.RANUM";
AddParam(cmd, "專案年度編號", );
AddParam(cmd, "公司別", );
bool wantClose;
IDataReader reader = ExecuteReader(cmd, out wantClose);
try
{
result.Fill(reader, 1, 0);
cmd.Cancel();
reader.Close();
}
finally
{
cmd.Dispose();
reader.Dispose();
CloseConnection(wantClose);
}
return result;
}
}
}
-132
View File
@@ -1,132 +0,0 @@
using System;
using System.Data;
using System.Data.Common;
using WebLib;
/// <summary>
/// Summary description for Login
/// </summary>
namespace Education
{
public class LoginBPAP : DAC
{
private string _userId = "";
private string _password = "";
private string _userName = "";
private string _errMessage = "";
private string _userLang = "";
private bool _noPassword = false;
public LoginBPAP()
{
}
public string UserId
{
get
{
return _userId;
}
set
{
_userId = value;
}
}
public string Password
{
get
{
return _password;
}
set
{
_password = value;
}
}
public string UserName
{
get
{
return _userName;
}
}
public string ErrorMessage
{
get
{
return _errMessage;
}
}
public bool NoPassword
{
get
{
return _noPassword;
}
}
public string UserLang
{
get
{
return _userLang;
}
set
{
_userLang = value;
}
}
/// <summary>
/// 取得是否登入成功
/// </summary>
/// <returns>登入成功與否。若回傳 false,錯誤訊息將儲存在 ErrorMessage 屬性中</returns>
public bool GetResult()
{
DbConnection conn = NewConnection();
DbCommand cmd = NewCommand("SELECT BPENO, BPNME, BPPWD FROM BPAP WHERE BPENO=@BPENO");
AddParam(cmd, "BPENO", _userId);
DataTable rs = Select(cmd);
_noPassword = false;
if (rs.Rows.Count == 0)
{
_errMessage = "無此使用者代號或是密碼錯誤";
return false;
}
else
{
string pwd1 = GetString(rs.Rows[0]["BPPWD"]);
string pwd2 = EncDec.KeyDec(pwd1);
if (pwd1.CompareTo("\u007f\u007f\u007f\u007f") == 0)
{
_noPassword = true;
pwd2 = "";
}
if (_password.CompareTo(pwd2) != 0)
{
_errMessage = "無此使用者代號或是密碼錯誤";
return false;
}
/*
if (rs.Rows[0]["BPEDY"] != DBNull.Value)
{
_errMessage = "您沒有使用這個系統的權限";
return false;
}
*/
}
_errMessage = "";
_userName = GetString(rs.Rows[0]["BPNME"]);
return true;
}
}
}
-155
View File
@@ -1,155 +0,0 @@
using System;
using System.Data;
using System.Data.Common;
using WebLib;
/// <summary>
/// Summary description for Login
/// </summary>
namespace Education
{
public class LoginBPSN : DAC
{
private string _userId = "";
private string _password = "";
private string _userName = "";
private string _errMessage = "";
private string _userLang = "";
private bool _noPassword = false;
private bool _isManager = false;
private bool _isWorker = false;
public LoginBPSN()
{
}
public string UserId
{
get
{
return _userId;
}
set
{
_userId = value;
}
}
public string Password
{
get
{
return _password;
}
set
{
_password = value;
}
}
public string UserName
{
get
{
return _userName;
}
}
public string ErrorMessage
{
get
{
return _errMessage;
}
}
public bool NoPassword
{
get
{
return _noPassword;
}
}
public string UserLang
{
get
{
return _userLang;
}
set
{
_userLang = value;
}
}
/// <summary>
/// 是否是管理員
/// </summary>
public bool IsManager
{
get
{
return _isManager;
}
}
/// <summary>
/// 是否是承辦人
/// </summary>
public bool IsWorker
{
get
{
return _isWorker;
}
}
/// <summary>
/// 取得是否登入成功
/// </summary>
/// <returns>登入成功與否。若回傳 false,錯誤訊息將儲存在 ErrorMessage 屬性中</returns>
public bool GetResult()
{
DbCommand cmd = NewCommand("SELECT BPENO, BPNME, BPEDY, BPAWD FROM BPSNView WHERE BPENO=@BPENO");
AddParam(cmd, "BPENO", _userId);
DataTable rs = Select(cmd);
_noPassword = false;
if (rs.Rows.Count == 0)
{
_errMessage = "無此使用者代號或是密碼錯誤";
return false;
}
else
{
string pwd1 = GetString(rs.Rows[0]["BPAWD"]);
string pwd2 = EncDec.KeyDec(pwd1);
if (pwd1.CompareTo("\u007f\u007f\u007f\u007f") == 0)
{
_noPassword = true;
pwd2 = "";
}
if (_password.CompareTo(pwd2) != 0)
{
_errMessage = "無此使用者代號或是密碼錯誤";
return false;
}
if (rs.Rows[0]["BPEDY"] != DBNull.Value)
{
_errMessage = "您沒有使用這個系統的權限";
return false;
}
}
_errMessage = "";
_userName = GetString(rs.Rows[0]["BPNME"]);
_isManager = new DAC_BPSN(conn).Is管理群組(_userId);
_isWorker = new DAC_BPSN(conn).Is承辦人群組(_userId);
return true;
}
}
}
@@ -1,17 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using WebLib;
namespace Education
{
public class DAC_公司別 : NameValueList
{
public DAC_公司別()
{
this.Add("新譽管理有限公司", "TY");
this.Add("展譽職涯管理顧問有限公司", "JY");
}
}
}
@@ -1,897 +0,0 @@
//
// 這個檔案是 場地 資料表的資料存取類別 檔案一
// 請不要修改這個檔案,重新產生資料存取類別時,這個檔案會被覆蓋掉
//
using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using System.Data;
using System.Data.Common;
using System.Transactions;
using WebLib;
using System.Data.SqlClient;
namespace Education
{
///<summary>
/// 場地 資料存取類別
///</ summary>
[DataObject]
public partial class DAC_場地 : WebLib.DAC
{
private string _tableName = "場地";
private string _select = "select 編號, 單位名稱, 場地名稱, 場地類型, 價格, 坪數, 容納人數, 地址_郵編, 地址_縣市, 地址_鄉鎮市區, 地址_街道地址, 捷運可到, 捷運分鐘, 公車可到, 公車分鐘, 火車可到, 火車分鐘, 步行可到, 步行分鐘, 設備提供, 聯絡人, 聯絡人電話, 電子郵件, 傳真, 備註, DB_APPNO, DB_CRDAT, DB_CRUSR, DB_TRDAT, DB_TRUSR";
private string _insert = "單位名稱, 場地名稱, 場地類型, 價格, 坪數, 容納人數, 地址_郵編, 地址_縣市, 地址_鄉鎮市區, 地址_街道地址, 捷運可到, 捷運分鐘, 公車可到, 公車分鐘, 火車可到, 火車分鐘, 步行可到, 步行分鐘, 設備提供, 聯絡人, 聯絡人電話, 電子郵件, 傳真, 備註, DB_APPNO, DB_CRDAT, DB_CRUSR, DB_TRDAT, DB_TRUSR";
private string _insertValue = "@單位名稱, @場地名稱, @場地類型, @價格, @坪數, @容納人數, @地址_郵編, @地址_縣市, @地址_鄉鎮市區, @地址_街道地址, @捷運可到, @捷運分鐘, @公車可到, @公車分鐘, @火車可到, @火車分鐘, @步行可到, @步行分鐘, @設備提供, @聯絡人, @聯絡人電話, @電子郵件, @傳真, @備註, @DB_APPNO, @DB_CRDAT, @DB_CRUSR, @DB_TRDAT, @DB_TRUSR";
private string _from = " from 場地 ";
private string _where = " where 1=1 ";
private string _order = " order by 編號 ";
public DAC_場地()
: base()
{
}
public DAC_場地(DbConnection conn)
: base(conn)
{
}
[DataObjectMethod(DataObjectMethodType.Select)]
public List SelectAll()
{
List result = new List();
IDataList list = result as IDataList;
DbCommand cmdSelect = NewCommand();
cmdSelect.CommandText = _select + _from + _where + _order;
Select(cmdSelect, ref list);
return result;
}
[DataObjectMethod(DataObjectMethodType.Select)]
public List SelectOne(int )
{
List result = new List();
IDataList list = result as IDataList;
DbCommand cmdSelect = NewCommand();
cmdSelect.CommandText = _select + _from + _where
+ " and 編號 = @編號 "
;
AddParam(cmdSelect, "編號", );
Select(cmdSelect, ref list);
return result;
}
[DataObjectMethod(DataObjectMethodType.Insert)]
public int InsertOne( value)
{
using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required))
{
try
{
if (!BeforeInsertOne(value))
return -1;
DbCommand cmdInsert = NewCommand();
cmdInsert.CommandText =
"insert into 場地"
+ " (" + _insert + ")"
+ "values "
+ " (" + _insertValue + ");"
+ "select @@identity"
;
AddParam(cmdInsert, "單位名稱", value.);
AddParam(cmdInsert, "場地名稱", value.);
AddParam(cmdInsert, "場地類型", value.);
AddParam(cmdInsert, "價格", value.);
AddParam(cmdInsert, "坪數", value.);
AddParam(cmdInsert, "容納人數", value.);
AddParam(cmdInsert, "地址_郵編", value._郵編);
AddParam(cmdInsert, "地址_縣市", value._縣市);
AddParam(cmdInsert, "地址_鄉鎮市區", value._鄉鎮市區);
AddParam(cmdInsert, "地址_街道地址", value._街道地址);
AddParam(cmdInsert, "捷運可到", value.);
AddParam(cmdInsert, "捷運分鐘", value.);
AddParam(cmdInsert, "公車可到", value.);
AddParam(cmdInsert, "公車分鐘", value.);
AddParam(cmdInsert, "火車可到", value.);
AddParam(cmdInsert, "火車分鐘", value.);
AddParam(cmdInsert, "步行可到", value.);
AddParam(cmdInsert, "步行分鐘", value.);
AddParam(cmdInsert, "設備提供", value.);
AddParam(cmdInsert, "聯絡人", value.);
AddParam(cmdInsert, "聯絡人電話", value.);
AddParam(cmdInsert, "電子郵件", value.);
AddParam(cmdInsert, "傳真", value.);
AddParam(cmdInsert, "備註", value.);
AddParam(cmdInsert, "DB_APPNO", 1);
AddParam(cmdInsert, "DB_CRDAT", DateTime.UtcNow.AddHours(8));
AddParam(cmdInsert, "DB_CRUSR", CurrentUserId);
AddParam(cmdInsert, "DB_TRDAT", DBNull.Value);
AddParam(cmdInsert, "DB_TRUSR", DBNull.Value);
int newId;
ExecuteScalar(cmdInsert, out newId);
AfterInsertOne(value);
ts.Complete();
return newId;
}
catch (Exception error)
{
bool handled;
OnInsertOneError(error, out handled);
if(!handled)
throw error;
return -1;
}
}
}
[DataObjectMethod(DataObjectMethodType.Update)]
public int UpdateOne( value)
{
using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required))
{
try
{
if (!BeforeUpdateOne(value))
return -1;
List oldValues = SelectOne(value.);
if (oldValues.Count == 0 || oldValues[0].DB_APPNO != value.DB_APPNO)
{
throw new DBConcurrencyException("在更新 \"場地\" 資料表時發生並行例外:找不到要更新的資料列");
}
DbCommand cmdUpdate = NewCommand();
cmdUpdate.CommandText =
@"update 場地
set
= @ ,
= @ ,
= @ ,
= @ ,
= @ ,
= @ ,
_郵編 = @_郵編 ,
_縣市 = @_縣市 ,
_鄉鎮市區 = @_鄉鎮市區 ,
_街道地址 = @_街道地址 ,
= @ ,
= @ ,
= @ ,
= @ ,
= @ ,
= @ ,
= @ ,
= @ ,
= @ ,
= @ ,
= @ ,
= @ ,
= @ ,
= @ ,
DB_APPNO = DB_APPNO + 1,
DB_TRDAT = @DB_TRDAT,
DB_TRUSR = @DB_TRUSR
where 1=1
and = @original_編號
and DB_APPNO = @original_DB_APPNO
";
AddParam(cmdUpdate, "單位名稱", value.);
AddParam(cmdUpdate, "場地名稱", value.);
AddParam(cmdUpdate, "場地類型", value.);
AddParam(cmdUpdate, "價格", value.);
AddParam(cmdUpdate, "坪數", value.);
AddParam(cmdUpdate, "容納人數", value.);
AddParam(cmdUpdate, "地址_郵編", value._郵編);
AddParam(cmdUpdate, "地址_縣市", value._縣市);
AddParam(cmdUpdate, "地址_鄉鎮市區", value._鄉鎮市區);
AddParam(cmdUpdate, "地址_街道地址", value._街道地址);
AddParam(cmdUpdate, "捷運可到", value.);
AddParam(cmdUpdate, "捷運分鐘", value.);
AddParam(cmdUpdate, "公車可到", value.);
AddParam(cmdUpdate, "公車分鐘", value.);
AddParam(cmdUpdate, "火車可到", value.);
AddParam(cmdUpdate, "火車分鐘", value.);
AddParam(cmdUpdate, "步行可到", value.);
AddParam(cmdUpdate, "步行分鐘", value.);
AddParam(cmdUpdate, "設備提供", value.);
AddParam(cmdUpdate, "聯絡人", value.);
AddParam(cmdUpdate, "聯絡人電話", value.);
AddParam(cmdUpdate, "電子郵件", value.);
AddParam(cmdUpdate, "傳真", value.);
AddParam(cmdUpdate, "備註", value.);
AddParam(cmdUpdate, "DB_TRDAT", DateTime.UtcNow.AddHours(8));
AddParam(cmdUpdate, "DB_TRUSR", CurrentUserId);
AddParam(cmdUpdate, "original_編號", value.);
AddParam(cmdUpdate, "original_DB_APPNO", value.DB_APPNO);
int rowsAffected = ExecuteNonQuery(cmdUpdate);
AfterUpdateOne(value);
ts.Complete();
return rowsAffected;
}
catch (Exception error)
{
bool handled;
OnUpdateOneError(error, out handled);
if(!handled)
throw error;
return -1;
}
}
}
[DataObjectMethod(DataObjectMethodType.Delete)]
public int DeleteOne(int , int DB_APPNO)
{
using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required))
{
try
{
if (!BeforeDeleteOne(, DB_APPNO))
return -1;
List oldValues = SelectOne();
if (oldValues.Count == 0 || oldValues[0].DB_APPNO != DB_APPNO)
{
throw new DBConcurrencyException("在刪除 \"場地\" 資料表時發生並行例外:找不到要刪除的資料列");
}
DbCommand cmdDelete = NewCommand();
cmdDelete.CommandText =
@"delete from 場地
where 1=1
and = @
and DB_APPNO = @DB_APPNO
";
AddParam(cmdDelete, "編號", );
AddParam(cmdDelete, "DB_APPNO", DB_APPNO);
int rowsAffected = ExecuteNonQuery(cmdDelete);
AfterDeleteOne(, DB_APPNO);
ts.Complete();
return rowsAffected;
}
catch (Exception error)
{
bool handled;
OnDeleteOneError(error, out handled);
if(!handled)
throw error;
return -1;
}
}
}
[DataObjectMethod(DataObjectMethodType.Delete)]
public int DeleteOne( value)
{
using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required))
{
try
{
if (!BeforeDeleteOne(value))
return -1;
List oldValues = SelectOne(value.);
if (oldValues.Count == 0 || oldValues[0].DB_APPNO != value.DB_APPNO)
{
throw new DBConcurrencyException("在刪除 \"場地\" 資料表時發生並行例外:找不到要刪除的資料列");
}
DbCommand cmdDelete = NewCommand();
cmdDelete.CommandText =
@"delete from 場地
where 1=1
and = @
and DB_APPNO = @DB_APPNO
";
AddParam(cmdDelete, "編號", value.);
AddParam(cmdDelete, "DB_APPNO", value.DB_APPNO);
int rowsAffected = ExecuteNonQuery(cmdDelete);
AfterDeleteOne(value);
ts.Complete();
return rowsAffected;
}
catch (Exception error)
{
bool handled;
OnDeleteOneError(error, out handled);
if(!handled)
throw error;
return -1;
}
}
}
public bool IsDuplicate(int )
{
DbCommand cmdSelect = NewCommand();
cmdSelect.CommandText = "select count(1)" + _from + _where
+ " and 編號 = @編號 "
;
AddParam(cmdSelect, "編號", );
int count;
ExecuteScalar(cmdSelect, out count);
return count > 0;
}
}
///<summary>
/// 場地 資料集合類別
///</summary>
public partial class List : List<>, IDataList
{
public void Fill(DbDataReader reader)
{
while (reader.Read())
{
newItem = new ();
newItem. = DAC.GetInt32(reader[0]);
newItem. = DAC.GetString(reader[1]);
newItem. = DAC.GetString(reader[2]);
newItem. = DAC.GetString(reader[3]);
newItem. = DAC.GetInt32(reader[4]);
newItem. = DAC.GetInt32(reader[5]);
newItem. = DAC.GetInt32(reader[6]);
newItem._郵編 = DAC.GetString(reader[7]);
newItem._縣市 = DAC.GetString(reader[8]);
newItem._鄉鎮市區 = DAC.GetString(reader[9]);
newItem._街道地址 = DAC.GetString(reader[10]);
newItem. = DAC.GetString(reader[11]);
newItem. = DAC.GetInt32(reader[12]);
newItem. = DAC.GetString(reader[13]);
newItem. = DAC.GetInt32(reader[14]);
newItem. = DAC.GetString(reader[15]);
newItem. = DAC.GetInt32(reader[16]);
newItem. = DAC.GetString(reader[17]);
newItem. = DAC.GetInt32(reader[18]);
newItem. = DAC.GetString(reader[19]);
newItem. = DAC.GetString(reader[20]);
newItem. = DAC.GetString(reader[21]);
newItem. = DAC.GetString(reader[22]);
newItem. = DAC.GetString(reader[23]);
newItem. = DAC.GetString(reader[24]);
newItem.DB_APPNO = DAC.GetInt32(reader[25]);
newItem.DB_CRDAT = DAC.GetDateTime(reader[26]);
newItem.DB_CRUSR = DAC.GetString(reader[27]);
newItem.DB_TRDAT = DAC.GetDateTime(reader[28]);
newItem.DB_TRUSR = DAC.GetString(reader[29]);
Add(newItem);
}
}
}
///<summary>
/// 場地 資料紀錄類別
///</summary>
[Serializable]
public partial class : DataItemBase
{
private int _編號;
private string _單位名稱;
private string _場地名稱;
private string _場地類型;
private int _價格;
private int _坪數;
private int _容納人數;
private string _地址_郵編;
private string _地址_縣市;
private string _地址_鄉鎮市區;
private string _地址_街道地址;
private string _捷運可到;
private int _捷運分鐘;
private string _公車可到;
private int _公車分鐘;
private string _火車可到;
private int _火車分鐘;
private string _步行可到;
private int _步行分鐘;
private string _設備提供;
private string _聯絡人;
private string _聯絡人電話;
private string _電子郵件;
private string _傳真;
private string _備註;
#region
///<summary>
/// 編號
///</summary>
[DataObjectField(true, false, false)]
public int
{
get
{
return _編號;
}
set
{
if (value != _編號)
{
_編號 = value;
OnPropertyChanged("編號");
}
}
}
///<summary>
/// 單位名稱
///</summary>
[DataObjectField(false, false, true, 50)]
public string
{
get
{
return _單位名稱;
}
set
{
if (value != _單位名稱)
{
_單位名稱 = value;
OnPropertyChanged("單位名稱");
}
}
}
///<summary>
/// 場地名稱
///</summary>
[DataObjectField(false, false, true, 50)]
public string
{
get
{
return _場地名稱;
}
set
{
if (value != _場地名稱)
{
_場地名稱 = value;
OnPropertyChanged("場地名稱");
}
}
}
///<summary>
/// 場地類型
///</summary>
[DataObjectField(false, false, true, 20)]
public string
{
get
{
return _場地類型;
}
set
{
if (value != _場地類型)
{
_場地類型 = value;
OnPropertyChanged("場地類型");
}
}
}
///<summary>
/// 價格
///</summary>
[DataObjectField(false, false, true)]
public int
{
get
{
return _價格;
}
set
{
if (value != _價格)
{
_價格 = value;
OnPropertyChanged("價格");
}
}
}
///<summary>
/// 坪數
///</summary>
[DataObjectField(false, false, true)]
public int
{
get
{
return _坪數;
}
set
{
if (value != _坪數)
{
_坪數 = value;
OnPropertyChanged("坪數");
}
}
}
///<summary>
/// 容納人數
///</summary>
[DataObjectField(false, false, true)]
public int
{
get
{
return _容納人數;
}
set
{
if (value != _容納人數)
{
_容納人數 = value;
OnPropertyChanged("容納人數");
}
}
}
///<summary>
/// 地址_郵編
///</summary>
[DataObjectField(false, false, true, 5)]
public string _郵編
{
get
{
return _地址_郵編;
}
set
{
if (value != _地址_郵編)
{
_地址_郵編 = value;
OnPropertyChanged("地址_郵編");
}
}
}
///<summary>
/// 地址_縣市
///</summary>
[DataObjectField(false, false, true, 10)]
public string _縣市
{
get
{
return _地址_縣市;
}
set
{
if (value != _地址_縣市)
{
_地址_縣市 = value;
OnPropertyChanged("地址_縣市");
}
}
}
///<summary>
/// 地址_鄉鎮市區
///</summary>
[DataObjectField(false, false, true, 10)]
public string _鄉鎮市區
{
get
{
return _地址_鄉鎮市區;
}
set
{
if (value != _地址_鄉鎮市區)
{
_地址_鄉鎮市區 = value;
OnPropertyChanged("地址_鄉鎮市區");
}
}
}
///<summary>
/// 地址_街道地址
///</summary>
[DataObjectField(false, false, true, 30)]
public string _街道地址
{
get
{
return _地址_街道地址;
}
set
{
if (value != _地址_街道地址)
{
_地址_街道地址 = value;
OnPropertyChanged("地址_街道地址");
}
}
}
///<summary>
/// 捷運可到
///</summary>
[DataObjectField(false, false, true, 1)]
public string
{
get
{
return _捷運可到;
}
set
{
if (value != _捷運可到)
{
_捷運可到 = value;
OnPropertyChanged("捷運可到");
}
}
}
///<summary>
/// 捷運分鐘
///</summary>
[DataObjectField(false, false, true)]
public int
{
get
{
return _捷運分鐘;
}
set
{
if (value != _捷運分鐘)
{
_捷運分鐘 = value;
OnPropertyChanged("捷運分鐘");
}
}
}
///<summary>
/// 公車可到
///</summary>
[DataObjectField(false, false, true, 1)]
public string
{
get
{
return _公車可到;
}
set
{
if (value != _公車可到)
{
_公車可到 = value;
OnPropertyChanged("公車可到");
}
}
}
///<summary>
/// 公車分鐘
///</summary>
[DataObjectField(false, false, true)]
public int
{
get
{
return _公車分鐘;
}
set
{
if (value != _公車分鐘)
{
_公車分鐘 = value;
OnPropertyChanged("公車分鐘");
}
}
}
///<summary>
/// 火車可到
///</summary>
[DataObjectField(false, false, true, 1)]
public string
{
get
{
return _火車可到;
}
set
{
if (value != _火車可到)
{
_火車可到 = value;
OnPropertyChanged("火車可到");
}
}
}
///<summary>
/// 火車分鐘
///</summary>
[DataObjectField(false, false, true)]
public int
{
get
{
return _火車分鐘;
}
set
{
if (value != _火車分鐘)
{
_火車分鐘 = value;
OnPropertyChanged("火車分鐘");
}
}
}
///<summary>
/// 步行可到
///</summary>
[DataObjectField(false, false, true, 1)]
public string
{
get
{
return _步行可到;
}
set
{
if (value != _步行可到)
{
_步行可到 = value;
OnPropertyChanged("步行可到");
}
}
}
///<summary>
/// 步行分鐘
///</summary>
[DataObjectField(false, false, true)]
public int
{
get
{
return _步行分鐘;
}
set
{
if (value != _步行分鐘)
{
_步行分鐘 = value;
OnPropertyChanged("步行分鐘");
}
}
}
///<summary>
/// 設備提供
///</summary>
[DataObjectField(false, false, true, 1000)]
public string
{
get
{
return _設備提供;
}
set
{
if (value != _設備提供)
{
_設備提供 = value;
OnPropertyChanged("設備提供");
}
}
}
///<summary>
/// 聯絡人
///</summary>
[DataObjectField(false, false, true, 50)]
public string
{
get
{
return _聯絡人;
}
set
{
if (value != _聯絡人)
{
_聯絡人 = value;
OnPropertyChanged("聯絡人");
}
}
}
///<summary>
/// 聯絡人電話
///</summary>
[DataObjectField(false, false, true, 50)]
public string
{
get
{
return _聯絡人電話;
}
set
{
if (value != _聯絡人電話)
{
_聯絡人電話 = value;
OnPropertyChanged("聯絡人電話");
}
}
}
///<summary>
/// 電子郵件
///</summary>
[DataObjectField(false, false, true, 50)]
public string
{
get
{
return _電子郵件;
}
set
{
if (value != _電子郵件)
{
_電子郵件 = value;
OnPropertyChanged("電子郵件");
}
}
}
///<summary>
/// 傳真
///</summary>
[DataObjectField(false, false, true, 50)]
public string
{
get
{
return _傳真;
}
set
{
if (value != _傳真)
{
_傳真 = value;
OnPropertyChanged("傳真");
}
}
}
///<summary>
/// 備註
///</summary>
[DataObjectField(false, false, true, 1000)]
public string
{
get
{
return _備註;
}
set
{
if (value != _備註)
{
_備註 = value;
OnPropertyChanged("備註");
}
}
}
#endregion
}
}
@@ -1,347 +0,0 @@
//
// 這個檔案是 場地 資料表的資料存取類別 檔案二
// 您可以修改這個檔案,加入您自訂的屬性與方法
//
using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using System.Data;
using System.Data.Common;
using WebLib;
using System.Data.SqlClient;
namespace Education
{
///<summary>
/// 場地 資料存取類別
///</summary>
public partial class DAC_場地 : WebLib.DAC
{
///<summary>
/// 給查詢畫面用的 Select 方法
///</summary>
[DataObjectMethod(DataObjectMethodType.Select)]
public List Select(bool noInputReturnAll, string , string , string , string , string )
{
List result = new List();
if (!noInputReturnAll
&& == null
&& == null
&& == null
&& == null
&& == null)
return result;
IDataList list = result as IDataList;
DbCommand cmdSelect = NewCommand();
cmdSelect.CommandText = _select + _from + _where;
if ( != null && .Length > 0)
{
cmdSelect.CommandText += " and 單位名稱 like @單位名稱 ";
AddParam(cmdSelect, "單位名稱", "%" + + "%");
}
if ( != null && .Length > 0)
{
cmdSelect.CommandText += " and 場地名稱 like @場地名稱 ";
AddParam(cmdSelect, "場地名稱", "%" + + "%");
}
if ( != null && .Length > 0)
{
cmdSelect.CommandText += " and 場地類型 like @場地類型 ";
AddParam(cmdSelect, "場地類型", "%" + + "%");
}
if ( != null && .Length > 0)
{
cmdSelect.CommandText += " and 聯絡人 like @聯絡人 ";
AddParam(cmdSelect, "聯絡人", "%" + + "%");
}
if ( != null && .Length > 0)
{
cmdSelect.CommandText += " and 聯絡人電話 like @聯絡人電話 ";
AddParam(cmdSelect, "聯絡人電話", "%" + + "%");
}
cmdSelect.CommandText += _order;
Select(cmdSelect, ref list);
return result;
}
///<summary>
/// InsertOne 之前會執行此方法
/// 在這裡可以做一些檢查或是自動編號等動作
/// 回傳 false 會打斷 InsertOne 的執行
///</summary>
protected virtual bool BeforeInsertOne( value)
{
return true;
}
///<summary>
/// InsertOne 之後會執行此方法
///</summary>
protected virtual void AfterInsertOne( value)
{
}
///<summary>
/// InsertOne 發生錯誤時會執行此方法
///</summary>
protected virtual void OnInsertOneError(Exception error, out bool handled)
{
handled = false;
}
///<summary>
/// UpdateOne 之前會執行此方法
/// 在這裡可以做一些檢查
/// 回傳 false 會打斷 UpdateOne 的執行
///</summary>
protected virtual bool BeforeUpdateOne( value)
{
return true;
}
///<summary>
/// UpdateOne 之後會執行此方法
///</summary>
protected virtual void AfterUpdateOne( value)
{
}
///<summary>
/// UpdateOne 發生錯誤時會執行此方法
///</summary>
protected virtual void OnUpdateOneError(Exception error, out bool handled)
{
handled = false;
}
///<summary>
/// DeleteOne 之前會執行此方法
/// 在這裡可以做一些檢查
/// 回傳 false 會打斷 DeleteOne 的執行
///</summary>
protected virtual bool BeforeDeleteOne( value)
{
return true;
}
///<summary>
/// DeleteOne 之後會執行此方法
///</summary>
protected virtual void AfterDeleteOne( value)
{
}
///<summary>
/// DeleteOne 之前會執行此方法
/// 在這裡可以做一些檢查
/// 回傳 false 會打斷 DeleteOne 的執行
///</summary>
protected virtual bool BeforeDeleteOne(int , int DB_APPNO)
{
return true;
}
///<summary>
/// DeleteOne 之後會執行此方法
///</summary>
protected virtual void AfterDeleteOne(int , int DB_APPNO)
{
}
///<summary>
/// DeleteOne 發生錯誤時會執行此方法
///</summary>
protected virtual void OnDeleteOneError(Exception error, out bool handled)
{
handled = false;
}
// 有另外加上去的屬性及方法,請加在這裡
/// <summary>
/// 取得場地名稱
/// </summary>
/// <param name="職務ID"></param>
/// <returns></returns>
public string Get場地名稱(object )
{
DbCommand cmd = NewCommand("SELECT 場地名稱 FROM " + _tableName
+ " WHERE 編號=@編號");
AddParam(cmd, "編號", );
string s;
ExecuteScalar(cmd, out s);
return s;
}
public NameValueList Select地區ForDropDown()
{
NameValueList result = new NameValueList();
DbCommand cmd = NewCommand("SELECT DISTINCT 地址_縣市 FROM " + _tableName + " ORDER BY 地址_縣市");
result.Add("(請選擇)", "");
result.Fill(Select(cmd), "地址_縣市", "地址_縣市", false);
return result;
}
public NameValueList Select教室類型ForDropDown()
{
NameValueList result = new NameValueList();
DbCommand cmd = NewCommand("SELECT DISTINCT 場地類型 FROM " + _tableName + " ORDER BY 場地類型");
result.Add("(請選擇)", "");
result.Fill(Select(cmd), "場地類型", "場地類型", false);
return result;
}
[DataObjectMethod(DataObjectMethodType.Select)]
public List (bool noInputReturnAll, string , int 1, int 2, int 1, int 2,
string , int 滿1, int 滿2)
{
List result = new List();
if (!noInputReturnAll
&& == null
&& == null
&& 1 == 0
&& 2 == 0
&& 1 == 0
&& 2 == 0
&& 滿1 == 0
&& 滿2 == 0)
return result;
IDataList list = result as IDataList;
DbCommand cmdSelect = NewCommand();
cmdSelect.CommandText = _select +
@" FROM
( SELECT A.*,
ISNULL(( SELECT CAST(SUM(滿) AS FLOAT) / COUNT(1)
FROM 滿調
WHERE = A.), 0) AS 滿
FROM A
) AS TMP1"
+ _where;
if ( != null && .Length > 0)
{
cmdSelect.CommandText += " and 地址_縣市 like @地區 ";
AddParam(cmdSelect, "地區", "%" + + "%");
}
if ( != null && .Length > 0)
{
cmdSelect.CommandText += " and 場地類型 like @場地類型 ";
AddParam(cmdSelect, "場地類型", "%" + + "%");
}
if (1 > 0 && 2 > 0)
{
cmdSelect.CommandText += " and 價格 >= @價格1 and 價格 <= @價格2 ";
AddParam(cmdSelect, "價格1", 1);
AddParam(cmdSelect, "價格2", 2);
}
else if (1 > 0 && 2 == 0)
{
cmdSelect.CommandText += " and 價格 >= @價格1 ";
AddParam(cmdSelect, "價格1", 1);
}
else if (1 == 0 && 2 < 0)
{
cmdSelect.CommandText += " and 價格 <= @價格2 ";
AddParam(cmdSelect, "價格2", 2);
}
if (1 > 0 && 2 > 0)
{
cmdSelect.CommandText += " and 容納人數 >= @人數1 and 容納人數 <= @人數2 ";
AddParam(cmdSelect, "人數1", 1);
AddParam(cmdSelect, "人數2", 2);
}
else if (1 > 0 && 2 == 0)
{
cmdSelect.CommandText += " and 容納人數 >= @人數1 ";
AddParam(cmdSelect, "人數1", 1);
}
else if (1 == 0 && 2 < 0)
{
cmdSelect.CommandText += " and 容納人數 <= @人數2 ";
AddParam(cmdSelect, "人數2", 2);
}
if (滿1 != 0 && 滿2 != 0)
{
cmdSelect.CommandText += " and 滿意度 between @滿意度1 and @滿意度2 ";
AddParam(cmdSelect, "滿意度1", 滿1);
AddParam(cmdSelect, "滿意度2", 滿2);
}
else if (滿1 != 0 && 滿2 == 0)
{
cmdSelect.CommandText += " and 滿意度 >= @滿意度1 ";
AddParam(cmdSelect, "滿意度1", 滿1);
}
else if (滿1 == 0 && 滿2 != 0)
{
cmdSelect.CommandText += " and 滿意度 <= @滿意度2 ";
AddParam(cmdSelect, "滿意度2", 滿2);
}
cmdSelect.CommandText += _order;
Select(cmdSelect, ref list);
return result;
}
public DataTable Select滿意度統計(int )
{
DbCommand cmdSelect = NewCommand(
@"SELECT
(SELECT COUNT(1) FROM 滿調 WHERE = @ AND 滿 = 5) AS 滿5,
(SELECT COUNT(1) FROM 滿調 WHERE = @ AND 滿 = 4) AS 滿4,
(SELECT COUNT(1) FROM 滿調 WHERE = @ AND 滿 = 3) AS 滿3,
(SELECT COUNT(1) FROM 滿調 WHERE = @ AND 滿 = 2) AS 滿2,
(SELECT COUNT(1) FROM 滿調 WHERE = @ AND 滿 = 1) AS 滿1,
(SELECT ISNULL(AVG(CAST(滿 AS FLOAT)), 0) FROM 滿調 WHERE = @) AS 滿");
AddParam(cmdSelect, "場地編號", );
return Select(cmdSelect);
}
public bool IsOccipued(int )
{
DbCommand cmd = NewCommand(
@"SELECT
(SELECT COUNT(1) FROM WHERE _A = @ OR _B = @ OR _C = @)
+ (SELECT COUNT(1) FROM WHERE = @)");
AddParam(cmd, "場地編號", );
int i;
ExecuteScalar(cmd, out i);
return i > 0;
}
}
///<summary>
/// 場地 資料集合類別
///</summary>
public partial class List : List<>
{
// 有另外加上去的屬性及方法,請加在這裡
}
///<summary>
/// 場地 資料紀錄類別
///</summary>
public partial class
{
// 有另外加上去的屬性及方法,請加在這裡
}
}
@@ -1,528 +0,0 @@
//
// 這個檔案是 片語 資料表的資料存取類別 檔案一
// 請不要修改這個檔案,重新產生資料存取類別時,這個檔案會被覆蓋掉
//
using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using System.Data;
using System.Data.Common;
using System.Linq;
using System.Transactions;
using WebLib;
using System.Data.SqlClient;
namespace Education
{
///<summary>
/// 片語 資料存取類別
///</ summary>
[DataObject]
public partial class DAC_片語 : WebLib.DAC
{
private const string _tableName = "[片語]";
private const string _allFields = "[編號], [適用欄位], [片語內容], [DB_APPNO], [DB_CRDAT], [DB_CRUSR], [DB_TRDAT], [DB_TRUSR]";
private string _orderBy = "[編號]";
private string _select = "select " + _allFields;
private string _insert = "[適用欄位], [片語內容], [DB_APPNO], [DB_CRDAT], [DB_CRUSR], [DB_TRDAT], [DB_TRUSR]";
private string _insertBak = "[編號], [適用欄位], [片語內容], [DB_APPNO], [DB_CRDAT], [DB_CRUSR], [DB_TRDAT], [DB_TRUSR], [DB_TRMOD]";
private string _insertValue = "@適用欄位, @片語內容, @DB_APPNO, @DB_CRDAT, @DB_CRUSR, @DB_TRDAT, @DB_TRUSR";
private string _insertBakValue = "@編號, @適用欄位, @片語內容, @DB_APPNO, @DB_CRDAT, @DB_CRUSR, @DB_TRDAT, @DB_TRUSR, @DB_TRMOD";
private string _from = " from " + _tableName + " ";
private string _where = " where 1=1 ";
private string _order = " order by [編號] ";
public DAC_片語()
: base()
{
}
public DAC_片語(DbConnection conn)
: base(conn)
{
}
[DataObjectMethod(DataObjectMethodType.Select)]
public List SelectAll(string orderBy = "")
{
List result = new List();
IDataList list = result as IDataList;
DbCommand cmdSelect = NewCommand();
cmdSelect.CommandText = _select + _from + _where + (orderBy == null || orderBy.Length == 0 ? _order : " order by " + orderBy);
Select(cmdSelect, ref list);
return result;
}
public int SelectAllCount()
{
DbCommand cmdSelect = NewCommand();
cmdSelect.CommandText = "select count(1) " + _from;
int i;
ExecuteScalar(cmdSelect, out i);
return i;
}
[DataObjectMethod(DataObjectMethodType.Select)]
public List SelectAllPage(int startRowIndex, int maximumRows, string orderBy = "")
{
List result = new List();
IDataList list = result as IDataList;
DbCommand cmdSelect = NewCommand();
cmdSelect.CommandText =
String.Format("select top {0} * from (", maximumRows)
+ "select " + _allFields
+ ", row_number() over (order by " + (orderBy == null || orderBy.Length == 0 ? _orderBy : orderBy) + ") as rowid "
+ _from + _where
+ ") as TMP1 where rowid > @startRowIndex ";
AddParam(cmdSelect, "startRowIndex", startRowIndex);
Select(cmdSelect, ref list);
return result;
}
[DataObjectMethod(DataObjectMethodType.Select)]
public List SelectOne(int )
{
List result = new List();
IDataList list = result as IDataList;
DbCommand cmdSelect = NewCommand();
cmdSelect.CommandText = _select + _from + _where
+ " and 編號 = @編號 "
;
AddParam(cmdSelect, "編號", );
Select(cmdSelect, ref list);
return result;
}
///<summary>
/// 給查詢畫面用的增加 Where 條件的方法
///</summary>
private void AddWhere(DbCommand cmdSelect, ref bool noInput, string , string )
{
if ( != null && .Length > 0)
{
noInput = false;
cmdSelect.CommandText += " and 適用欄位 like @適用欄位 ";
AddParam(cmdSelect, "適用欄位", "%" + + "%");
}
if ( != null && .Length > 0)
{
noInput = false;
cmdSelect.CommandText += " and 片語內容 like @片語內容 ";
AddParam(cmdSelect, "片語內容", "%" + + "%");
}
}
///<summary>
/// 給查詢畫面用的 Select 方法
///</summary>
[DataObjectMethod(DataObjectMethodType.Select)]
public List Select(bool noInputReturnAll, string , string , string orderBy = "")
{
List result = new List();
bool noInput = true;
IDataList list = result as IDataList;
DbCommand cmdSelect = NewCommand();
cmdSelect.CommandText = _select + _from + _where;
AddWhere(cmdSelect, ref noInput, , );
cmdSelect.CommandText += (orderBy == null || orderBy.Length == 0 ? _order : " order by " + orderBy);
if (!noInputReturnAll && noInput)
return result;
Select(cmdSelect, ref list);
return result;
}
///<summary>
/// 給查詢畫面用的 SelectCount 方法
///</summary>
[DataObjectMethod(DataObjectMethodType.Select)]
public int SelectCount(bool noInputReturnAll, string , string , string orderBy = "")
{
bool noInput = true;
DbCommand cmdSelect = NewCommand();
cmdSelect.CommandText = "select count(1) " + _from + _where;
AddWhere(cmdSelect, ref noInput, , );
if (!noInputReturnAll && noInput)
return 0;
int i;
ExecuteScalar(cmdSelect, out i);
return i;
}
///<summary>
/// 給查詢畫面用的 SelectPage 方法
///</summary>
[DataObjectMethod(DataObjectMethodType.Select)]
public List SelectPage(bool noInputReturnAll, int startRowIndex, int maximumRows, string , string , string orderBy = "")
{
List result = new List();
bool noInput = true;
IDataList list = result as IDataList;
DbCommand cmdSelect = NewCommand();
cmdSelect.CommandText =
String.Format("select top {0} * from (", maximumRows)
+ "select " + _allFields
+ ", row_number() over (order by " + (orderBy == null || orderBy.Length == 0 ? _orderBy : orderBy) + ") as rowid "
+ _from + _where;
AddWhere(cmdSelect, ref noInput, , );
cmdSelect.CommandText += ") as TMP1 where rowid > @startRowIndex ";
AddParam(cmdSelect, "startRowIndex", startRowIndex);
if (!noInputReturnAll && noInput)
return result;
Select(cmdSelect, ref list);
return result;
}
[DataObjectMethod(DataObjectMethodType.Insert)]
public Item InsertOne(Item value)
{
using (TransactionScope ts = DAC.NewTransactionScope())
{
try
{
if (!BeforeInsertOne(value))
return value;
DbCommand cmdInsert = NewCommand();
cmdInsert.CommandText =
"insert into [片語]"
+ " (" + _insert + ")"
+ "values "
+ " (" + _insertValue + ");" + "select @@identity"
;
AddParam(cmdInsert, "適用欄位", value.);
AddParam(cmdInsert, "片語內容", value.);
AddParam(cmdInsert, "DB_APPNO", 1);
AddParam(cmdInsert, "DB_CRDAT", DateTime.Now);
AddParam(cmdInsert, "DB_CRUSR", CurrentUserId);
AddParam(cmdInsert, "DB_TRDAT", DBNull.Value);
AddParam(cmdInsert, "DB_TRUSR", DBNull.Value);
int newId;
ExecuteScalar(cmdInsert, out newId);
value. = newId;
AfterInsertOne(value);
ts.Complete();
}
catch (Exception error)
{
bool handled;
OnInsertOneError(error, out handled);
if(!handled)
throw error;
}
return value;
}
}
[DataObjectMethod(DataObjectMethodType.Update)]
public Item UpdateOne(Item value)
{
using (TransactionScope ts = DAC.NewTransactionScope())
{
try
{
if (!BeforeUpdateOne(value))
return value;
List oldValues = SelectOne(value.);
if (oldValues.Count == 0 || oldValues[0].DB_APPNO != value.DB_APPNO)
{
throw new DBConcurrencyException("在更新 \"片語\" 資料表時發生並行例外:找不到要更新的資料列");
}
else
{
DoBackup(oldValues[0], "UPDATE");
}
DbCommand cmdUpdate = NewCommand();
cmdUpdate.CommandText =
@"update [片語]
set
[適用欄位] = @ ,
[片語內容] = @ ,
DB_APPNO = DB_APPNO + 1,
DB_TRDAT = @DB_TRDAT,
DB_TRUSR = @DB_TRUSR
where 1=1
and [] = @original_編號
and DB_APPNO = @original_DB_APPNO
";
AddParam(cmdUpdate, "適用欄位", value.);
AddParam(cmdUpdate, "片語內容", value.);
AddParam(cmdUpdate, "DB_TRDAT", DateTime.Now);
AddParam(cmdUpdate, "DB_TRUSR", CurrentUserId);
AddParam(cmdUpdate, "original_編號", value.);
AddParam(cmdUpdate, "original_DB_APPNO", value.DB_APPNO);
ExecuteNonQuery(cmdUpdate);
AfterUpdateOne(value);
ts.Complete();
return value;
}
catch (Exception error)
{
bool handled;
OnUpdateOneError(error, out handled);
if(!handled)
throw error;
return value;
}
}
}
[DataObjectMethod(DataObjectMethodType.Update)]
public Item UpdateOne(Item value, Item original_value)
{
using (TransactionScope ts = DAC.NewTransactionScope())
{
try
{
if (!BeforeUpdateOne(value, original_value))
return value;
List oldValues = SelectOne(original_value.);
if (oldValues.Count == 0 || oldValues[0].DB_APPNO != value.DB_APPNO)
{
throw new DBConcurrencyException("在更新 \"片語\" 資料表時發生並行例外:找不到要更新的資料列");
}
else
{
DoBackup(oldValues[0], "UPDATE");
}
DbCommand cmdUpdate = NewCommand();
cmdUpdate.CommandText =
@"update [片語]
set
[適用欄位] = @ ,
[片語內容] = @ ,
DB_APPNO = DB_APPNO + 1,
DB_TRDAT = @DB_TRDAT,
DB_TRUSR = @DB_TRUSR
where 1=1
and [] = @original_編號
and DB_APPNO = @original_DB_APPNO
";
AddParam(cmdUpdate, "適用欄位", value.);
AddParam(cmdUpdate, "片語內容", value.);
AddParam(cmdUpdate, "DB_TRDAT", DateTime.Now);
AddParam(cmdUpdate, "DB_TRUSR", CurrentUserId);
AddParam(cmdUpdate, "original_編號", original_value.);
AddParam(cmdUpdate, "original_DB_APPNO", original_value.DB_APPNO);
ExecuteNonQuery(cmdUpdate);
AfterUpdateOne(value, original_value);
ts.Complete();
return value;
}
catch (Exception error)
{
bool handled;
OnUpdateOneError(error, out handled);
if(!handled)
throw error;
return value;
}
}
}
[DataObjectMethod(DataObjectMethodType.Delete)]
public int DeleteOne(int , int DB_APPNO)
{
using (TransactionScope ts = DAC.NewTransactionScope())
{
try
{
if (!BeforeDeleteOne(, DB_APPNO))
return -1;
List oldValues = SelectOne();
if (oldValues.Count == 0 || oldValues[0].DB_APPNO != DB_APPNO)
{
throw new DBConcurrencyException("在刪除 \"片語\" 資料表時發生並行例外:找不到要刪除的資料列");
}
else
{
DoBackup(oldValues[0], "DELETE");
}
DbCommand cmdDelete = NewCommand();
cmdDelete.CommandText =
@"delete from [片語]
where 1=1
and = @
and DB_APPNO = @DB_APPNO
";
AddParam(cmdDelete, "編號", );
AddParam(cmdDelete, "DB_APPNO", DB_APPNO);
int rowsAffected = ExecuteNonQuery(cmdDelete);
AfterDeleteOne(, DB_APPNO);
ts.Complete();
return rowsAffected;
}
catch (Exception error)
{
bool handled;
OnDeleteOneError(error, out handled);
if(!handled)
throw error;
return -1;
}
}
}
[DataObjectMethod(DataObjectMethodType.Delete)]
public int DeleteOne(Item value)
{
using (TransactionScope ts = DAC.NewTransactionScope())
{
try
{
if (!BeforeDeleteOne(value))
return -1;
List oldValues = SelectOne(value.);
if (oldValues.Count == 0 || oldValues[0].DB_APPNO != value.DB_APPNO)
{
throw new DBConcurrencyException("在刪除 \"片語\" 資料表時發生並行例外:找不到要刪除的資料列");
}
else
{
DoBackup(oldValues[0], "DELETE");
}
DbCommand cmdDelete = NewCommand();
cmdDelete.CommandText =
@"delete from [片語]
where 1=1
and = @
and DB_APPNO = @DB_APPNO
";
AddParam(cmdDelete, "編號", value.);
AddParam(cmdDelete, "DB_APPNO", value.DB_APPNO);
int rowsAffected = ExecuteNonQuery(cmdDelete);
AfterDeleteOne(value);
ts.Complete();
return rowsAffected;
}
catch (Exception error)
{
bool handled;
OnDeleteOneError(error, out handled);
if(!handled)
throw error;
return -1;
}
}
}
public bool IsDuplicate(int )
{
DbCommand cmdSelect = NewCommand();
cmdSelect.CommandText = "select count(1)" + _from + _where
+ " and 編號 = @編號 "
;
AddParam(cmdSelect, "編號", );
int count;
ExecuteScalar(cmdSelect, out count);
return count > 0;
}
public void DoBackup(Item value, string updateMode)
{
}
}
///<summary>
///片語 資料集合類別
///</summary>
[Serializable]
public partial class List : List<Item>, IDataList
{
public void Fill(DbDataReader reader)
{
DAC.FillData<Item>(reader, this);
}
}
///<summary>
/// 片語 資料紀錄類別
///</summary>
[Serializable]
public partial class Item : DataItemBase
{
private int _編號;
private string _適用欄位;
private string _片語內容;
#region
///<summary>
/// 編號
///</summary>
[DataObjectField(true, false, false)]
public int
{
get
{
return _編號;
}
set
{
if (value != _編號)
{
_編號 = value;
OnPropertyChanged("編號");
}
}
}
///<summary>
/// 適用欄位
///</summary>
[DataObjectField(false, false, false, 100)]
public string
{
get
{
return _適用欄位;
}
set
{
if (value != _適用欄位)
{
_適用欄位 = value;
OnPropertyChanged("適用欄位");
}
}
}
///<summary>
/// 片語內容
///</summary>
[DataObjectField(false, false, false, 100)]
public string
{
get
{
return _片語內容;
}
set
{
if (value != _片語內容)
{
_片語內容 = value;
OnPropertyChanged("片語內容");
}
}
}
#endregion
}
}

Some files were not shown because too many files have changed in this diff Show More