chore: 首次簽入 Thinkyu ASP.NET 專案

- 加入 Visual Studio / ASP.NET .gitignore
- 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
This commit is contained in:
2026-09-10 09:42:37 +08:00
commit 577060bc78
2496 changed files with 501389 additions and 0 deletions
@@ -0,0 +1,709 @@
//
// 這個檔案是 講師 資料表的資料存取類別 檔案二
// 您可以修改這個檔案,加入您自訂的屬性與方法
//
using NPOI.SS.Formula.Functions;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.EnterpriseServices.Internal;
using System.Linq;
using System.Text;
using System.Web.UI.WebControls;
using WebLib;
namespace Education
{
///<summary>
/// 講師 資料存取類別
///</summary>
public partial class DAC_講師 : WebLib.DAC
{
///<summary>
/// 給查詢畫面用的 Select 方法
///</summary>
[DataObjectMethod(DataObjectMethodType.Select)]
public List Select講師遴選(string , string , string )
{
List result = new List();
IDataList list = result as IDataList;
DbCommand cmdSelect = NewCommand();
cmdSelect.CommandText = _select + _from + _where + " and 合作狀態 <> 'X' ";
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;
}
/// UpdateOne 之前會執行此方法
/// 在這裡可以做一些檢查
/// 回傳 false 會打斷 UpdateOne 的執行
///</summary>
protected virtual bool BeforeUpdateOne( value, original_value)
{
return true;
}
///<summary>
/// UpdateOne 之後會執行此方法
///</summary>
protected virtual void AfterUpdateOne( value)
{
}
///<summary>
/// UpdateOne 之後會執行此方法
///</summary>
protected virtual void AfterUpdateOne( value, original_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;
}
// 有另外加上去的屬性及方法,請加在這裡
public string Get姓名(object )
{
DbCommand cmdSelect = NewCommand();
cmdSelect.CommandText = "SELECT 姓名 " + _from + " WHERE 編號 = @編號 ";
AddParam(cmdSelect, "編號", );
string s;
ExecuteScalar(cmdSelect, 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;
}
[DataObjectMethod(DataObjectMethodType.Select)]
public List (bool noInputReturnAll, int startRowIndex, int maximumRows,
string , string , string , string , int 滿1, int 滿2,
string , string , string , string , int 1, int 2)
{
List result = new List();
if (!noInputReturnAll
&& string.IsNullOrEmpty()
&& string.IsNullOrEmpty()
&& string.IsNullOrEmpty()
&& string.IsNullOrEmpty()
&& 滿1 == 0
&& 滿2 == 0
&& 1 == 0
&& 2 == 0
&& string.IsNullOrEmpty()
&& string.IsNullOrEmpty()
&& string.IsNullOrEmpty())
return result;
IDataList list = result as IDataList;
DbCommand cmdSelect = NewCommand();
var = "";
if (!string.IsNullOrEmpty() && !string.IsNullOrEmpty())
{
var k = .Split(' ');
var q = new List<string>();
for (int i = 0; i < k.Length; i++)
{
var w = new List<string>();
foreach (var f in .Split('|'))
{
if (f == "居住地區")
{
q.Add(string.Format("isnull((select 1 from 講師 B where B.編號=A.編號 and (B.居住地址_縣市 like @關鍵字_{1} or B.居住地址_鄉鎮市區 like @關鍵字_{1}) ), 0)", f, i));
}
else
{
q.Add(string.Format("isnull((select 1 from 講師 B where B.編號=A.編號 and B.{0} like @關鍵字_{1} ), 0)", f, i));
}
}
}
= string.Format(" ({0}) AS 符合度 ", string.Join(" + ", q.ToArray()));
}
if (string.IsNullOrEmpty())
= " 0 AS 符合度 ";
var SQL = _select + ", 滿意度 as 平均滿意度, 講師評鑑, 學員滿意度, 最高學歷TXT, 符合度, ROW_NUMBER() over (order by [符合度] desc) AS ROWNUMBER " +
string.Format(@" FROM
( SELECT A.*,
ISNULL(( SELECT CAST(SUM(授課方式分數) + SUM(專業知識分數) AS FLOAT) / 2 / COUNT(1)
FROM 滿意度調查講師
WHERE 講師編號 = A.編號), 0) AS 滿意度,
ISNULL((SELECT AVG(cast(專業度 + 授課技巧 + 互動氛圍 + 內容切題 + 配合度 as float))
FROM 講師外訓滿意度
WHERE 講師編號 = A.編號), 0) AS 講師評鑑,
ISNULL((SELECT AVG(cast(學員滿意度 as float))
FROM 講師外訓滿意度
WHERE 講師編號 = A.編號), 0) AS 學員滿意度,
(SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BPSNSTP' AND BSCLS=A.最高學歷) AS 最高學歷TXT,
{0}
FROM 講師 A
) AS TMP1 ", )
+ _where;
if ( != null && .Length > 0)
{
SQL += " and 姓名 like @姓名 ";
AddParam(cmdSelect, "姓名", "%" + + "%");
}
if ( != null && .Length > 0)
{
SQL += " and 授課區域 like @地區 ";
AddParam(cmdSelect, "地區", "%" + + "%");
}
if ( != null && .Length > 0)
{
SQL += " and 授課專長領域 like @授課專長領域 ";
AddParam(cmdSelect, "授課專長領域", "%" + + "%");
}
if ( != null && .Length > 0)
{
SQL += " and 最高學歷 = @學歷 ";
AddParam(cmdSelect, "學歷", );
}
if (滿1 != 0 && 滿2 != 0)
{
SQL += " and 滿意度 between @滿意度1 and @滿意度2 ";
AddParam(cmdSelect, "滿意度1", 滿1);
AddParam(cmdSelect, "滿意度2", 滿2);
}
else if (滿1 != 0 && 滿2 == 0)
{
SQL += " and 滿意度 >= @滿意度1 ";
AddParam(cmdSelect, "滿意度1", 滿1);
}
else if (滿1 == 0 && 滿2 != 0)
{
SQL += " and 滿意度 <= @滿意度2 ";
AddParam(cmdSelect, "滿意度2", 滿2);
}
if (!string.IsNullOrEmpty())
{
SQL += " and 合作狀態 = @合作狀態 ";
AddParam(cmdSelect, "合作狀態", );
}
if ( != null && .Length > 0)
{
SQL += " and 推薦授課主題 like @推薦授課主題 ";
AddParam(cmdSelect, "推薦授課主題", "%" + + "%");
}
if (1 != 0 && 2 != 0)
{
SQL += " and 講師評鑑 between @講師評鑑1 and @講師評鑑2 ";
AddParam(cmdSelect, "講師評鑑1", 1);
AddParam(cmdSelect, "講師評鑑2", 2);
}
else if (1 != 0 && 2 == 0)
{
SQL += " and 講師評鑑 >= @講師評鑑1 ";
AddParam(cmdSelect, "講師評鑑1", 1);
}
else if (1 == 0 && 2 != 0)
{
SQL += " and 講師評鑑 <= @講師評鑑2 ";
AddParam(cmdSelect, "講師評鑑2", 2);
}
if (!string.IsNullOrEmpty() && !string.IsNullOrEmpty())
{
var keywords = .Split(' ');
var keywordWhere = new List<string>();
for (int i = 0; i < keywords.Length; i++)
{
var and = keywords[i].StartsWith("+");
var keyword = keywords[i].Replace("+", "");
var oneWhere = new List<string>();
AddParam(cmdSelect, string.Format("關鍵字_{0}", i), string.Format("%{0}%", keyword));
foreach (var f in .Split('|'))
{
if (f == "居住地區")
{
oneWhere.Add(string.Format("(居住地址_縣市 LIKE @關鍵字_{0} OR 居住地址_鄉鎮市區 LIKE @關鍵字_{0})", i));
}
else
{
oneWhere.Add(string.Format("{0} LIKE @關鍵字_{1}", f, i));
}
}
keywordWhere.Add(string.Format("{0} ({1})",
(i == 0 ? "" : (and ? "AND" : "OR")),
string.Join(" OR ", oneWhere.ToArray())));
}
SQL += string.Format(" and ({0}) ", string.Join(" ", keywordWhere.ToArray()));
}
SQL = string.Format("select * FROM ({0}) AS TMP2 where ROWNUMBER > {1} and ROWNUMBER <= {2} order by [編號]", SQL, startRowIndex, startRowIndex + maximumRows);
cmdSelect.CommandText = SQL;
Select(cmdSelect, ref list);
return result;
}
[DataObjectMethod(DataObjectMethodType.Select)]
public int Count(bool noInputReturnAll,
string , string , string , string , int 滿1, int 滿2,
string , string , string , string , int 1, int 2)
{
if (!noInputReturnAll
&& string.IsNullOrEmpty()
&& string.IsNullOrEmpty()
&& string.IsNullOrEmpty()
&& string.IsNullOrEmpty()
&& 滿1 == 0
&& 滿2 == 0
&& 1 == 0
&& 2 == 0
&& string.IsNullOrEmpty()
&& string.IsNullOrEmpty()
&& string.IsNullOrEmpty())
return 0;
DbCommand cmdSelect = NewCommand();
var = "";
if (!string.IsNullOrEmpty() && !string.IsNullOrEmpty())
{
var k = .Split(' ');
var q = new List<string>();
for (int i = 0; i < k.Length; i++)
{
var w = new List<string>();
foreach (var f in .Split('|'))
{
if (f == "居住地區")
{
q.Add(string.Format("isnull((select 1 from 講師 B where B.編號=A.編號 and (B.居住地址_縣市 like @關鍵字_{1} or B.居住地址_鄉鎮市區 like @關鍵字_{1}) ), 0)", f, i));
}
else
{
q.Add(string.Format("isnull((select 1 from 講師 B where B.編號=A.編號 and B.{0} like @關鍵字_{1} ), 0)", f, i));
}
}
}
= string.Format(" ({0}) AS 符合度 ", string.Join(" + ", q.ToArray()));
}
if (string.IsNullOrEmpty())
= " 0 AS 符合度 ";
var SQL = _select + ", 滿意度 as 平均滿意度, 講師評鑑, 學員滿意度, 最高學歷TXT, 符合度 " +
string.Format(@" FROM
( SELECT A.*,
ISNULL(( SELECT CAST(SUM(授課方式分數) + SUM(專業知識分數) AS FLOAT) / 2 / COUNT(1)
FROM 滿意度調查講師
WHERE 講師編號 = A.編號), 0) AS 滿意度,
ISNULL((SELECT AVG(cast(專業度 + 授課技巧 + 互動氛圍 + 內容切題 + 配合度 as float))
FROM 講師外訓滿意度
WHERE 講師編號 = A.編號), 0) AS 講師評鑑,
ISNULL((SELECT AVG(cast(學員滿意度 as float))
FROM 講師外訓滿意度
WHERE 講師編號 = A.編號), 0) AS 學員滿意度,
(SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BPSNSTP' AND BSCLS=A.最高學歷) AS 最高學歷TXT,
{0}
FROM 講師 A
) AS TMP1 ", )
+ _where;
if ( != null && .Length > 0)
{
SQL += " and 姓名 like @姓名 ";
AddParam(cmdSelect, "姓名", "%" + + "%");
}
if ( != null && .Length > 0)
{
SQL += " and 授課區域 like @地區 ";
AddParam(cmdSelect, "地區", "%" + + "%");
}
if ( != null && .Length > 0)
{
SQL += " and 授課專長領域 like @授課專長領域 ";
AddParam(cmdSelect, "授課專長領域", "%" + + "%");
}
if ( != null && .Length > 0)
{
SQL += " and 最高學歷 = @學歷 ";
AddParam(cmdSelect, "學歷", );
}
if (滿1 != 0 && 滿2 != 0)
{
SQL += " and 滿意度 between @滿意度1 and @滿意度2 ";
AddParam(cmdSelect, "滿意度1", 滿1);
AddParam(cmdSelect, "滿意度2", 滿2);
}
else if (滿1 != 0 && 滿2 == 0)
{
SQL += " and 滿意度 >= @滿意度1 ";
AddParam(cmdSelect, "滿意度1", 滿1);
}
else if (滿1 == 0 && 滿2 != 0)
{
SQL += " and 滿意度 <= @滿意度2 ";
AddParam(cmdSelect, "滿意度2", 滿2);
}
if (!string.IsNullOrEmpty())
{
SQL += " and 合作狀態 = @合作狀態 ";
AddParam(cmdSelect, "合作狀態", );
}
if ( != null && .Length > 0)
{
SQL += " and 推薦授課主題 like @推薦授課主題 ";
AddParam(cmdSelect, "推薦授課主題", "%" + + "%");
}
if (1 != 0 && 2 != 0)
{
SQL += " and 講師評鑑 between @講師評鑑1 and @講師評鑑2 ";
AddParam(cmdSelect, "講師評鑑1", 1);
AddParam(cmdSelect, "講師評鑑2", 2);
}
else if (1 != 0 && 2 == 0)
{
SQL += " and 講師評鑑 >= @講師評鑑1 ";
AddParam(cmdSelect, "講師評鑑1", 1);
}
else if (1 == 0 && 2 != 0)
{
SQL += " and 講師評鑑 <= @講師評鑑2 ";
AddParam(cmdSelect, "講師評鑑2", 2);
}
if (!string.IsNullOrEmpty() && !string.IsNullOrEmpty())
{
var keywords = .Split(' ');
var keywordWhere = new List<string>();
for (int i = 0; i < keywords.Length; i++)
{
var and = keywords[i].StartsWith("+");
var keyword = keywords[i].Replace("+", "");
var oneWhere = new List<string>();
AddParam(cmdSelect, string.Format("關鍵字_{0}", i), string.Format("%{0}%", keyword));
foreach (var f in .Split('|'))
{
if (f == "居住地區")
{
oneWhere.Add(string.Format("(居住地址_縣市 LIKE @關鍵字_{0} OR 居住地址_鄉鎮市區 LIKE @關鍵字_{0})", i));
}
else
{
oneWhere.Add(string.Format("{0} LIKE @關鍵字_{1}", f, i));
}
}
keywordWhere.Add(string.Format("{0} ({1})",
(i == 0 ? "" : (and ? "AND" : "OR")),
string.Join(" OR ", oneWhere.ToArray())));
}
SQL += string.Format(" and ({0}) ", string.Join(" ", keywordWhere.ToArray()));
}
SQL = string.Format("select COUNT(*) FROM ({0}) AS TMP2", SQL);
cmdSelect.CommandText = SQL;
ExecuteScalar(cmdSelect, out int count);
return count;
}
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 授課滿意度總分,
(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;
}
public DataTable Select講師評鑑統計(int )
{
DbCommand cmdSelect = NewCommand(
@"SELECT AVG(cast(專業度 as float)) AS 專業度,
AVG(cast(授課技巧 as float)) AS 授課技巧,
AVG(cast(互動氛圍 as float)) AS 互動氛圍,
AVG(cast(內容切題 as float)) AS 內容切題,
AVG(cast(配合度 as float)) AS 配合度,
AVG(cast(專業度 + 授課技巧 + 互動氛圍 + 內容切題 + 配合度 as float)) AS 總分,
AVG(cast(學員滿意度 as float)) AS 學員滿意度
FROM 講師外訓滿意度
WHERE 講師編號 = @講師編號");
AddParam(cmdSelect, "講師編號", );
return Select(cmdSelect);
}
public bool Is身份證字號Dulicate(int , string )
{
DbCommand cmd = NewCommand(
@"SELECT COUNT(1) FROM 講師 WHERE 編號<>@講師編號 AND 身份證字號=@身份證字號");
AddParam(cmd, "講師編號", );
AddParam(cmd, "身份證字號", );
int i;
ExecuteScalar(cmd, out i);
return i > 0;
}
private static NameValueList _講師合作狀態 = new NameValueList
{
new NameValueItem { Value = "C", Name = "收服務費" },
new NameValueItem { Value = "F", Name = "不收服務費" },
new NameValueItem { Value = "X", Name = "不合作" },
new NameValueItem { Value = "B", Name = "暫不排課" },
};
public static NameValueList Select講師合作狀態ForEdit()
{
var result = new NameValueList();
result.Add("(請選擇)", "");
result.AddRange(_講師合作狀態);
return result;
}
public static string Get講師合作狀態Text(string Value)
{
return _講師合作狀態.GetName(Value);
}
public List SelectByKeyword(string keyword)
{
List result = new List();
keyword = !string.IsNullOrEmpty(keyword) ? keyword.Trim() : string.Empty;
if (string.IsNullOrEmpty(keyword))
return result;
IDataList list = result as IDataList;
DbCommand cmdSelect = NewCommand();
cmdSelect.CommandText = _select + _from + _where
// 20260317 用戶決定不要這個限制
// + " and 合作狀態 <> 'X' "
+ " and (姓名 like @keyword or 身份證字號 like @keyword) "
+ _order;
AddParam(cmdSelect, "keyword", "%" + keyword + "%");
Select(cmdSelect, ref list);
return result;
}
}
///<summary>
/// 講師 資料集合類別
///</summary>
public partial class List : List<>
{
// 有另外加上去的屬性及方法,請加在這裡
}
///<summary>
/// 講師 資料紀錄類別
///</summary>
public partial class
{
// 有另外加上去的屬性及方法,請加在這裡
public double 滿 { get; set; }
public string TXT { get; set; }
public string
{
get
{
return string.IsNullOrEmpty(DAC.GetString().Trim()) ? "" : "★";
}
}
public string TXT
{
get
{
return DAC_講師.Get講師合作狀態Text();
}
}
public string RPT
{
get
{
return String.Format("{0}{1}", TXT, );
}
}
public string
{
get
{
return string.Format("{0}{1}{2}{3}", _郵編, _縣市, _鄉鎮市區, _街道地址);
}
}
public string
{
get
{
return string.Format("{0}{1}{2}{3}", _郵編, _縣市, _鄉鎮市區, _街道地址);
}
}
public string
{
get
{
return string.Format("[{0}]{1}{2}", TXT, , );
}
}
private static DAC_BCLS BCLSDao = null;
public string TXT
{
get
{
if (BCLSDao == null)
BCLSDao = new DAC_BCLS();
string[] arr = DAC.GetString().Split(',');
string result = "";
foreach (string s in arr)
{
if (s != null && s.Length > 0)
result += BCLSDao.Get類別名稱("授課區域", s) + "";
}
if (result.Length > 0)
result = result.Remove(result.Length - 1);
return result;
}
}
public double { get; set; }
public double 滿 { get; set; }
public int { get; set; }
public string { get { return $"T{編號:0000}"; } }
}
}