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,691 @@
//
// 這個檔案是 訓練課程企劃 資料表的資料存取類別 檔案二
// 您可以修改這個檔案,加入您自訂的屬性與方法
//
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(int , string , string , string , string , string , string , string )
{
List result = new List();
IDataList list = result as IDataList;
DbCommand cmdSelect = NewCommand();
cmdSelect.CommandText = _select + _from + _where;
if ( > 0)
{
cmdSelect.CommandText += " and 訓練日期 >= @訓練日期1 and 訓練日期 < @訓練日期2 ";
AddParam(cmdSelect, "訓練日期1", new DateTime(, 1, 1));
AddParam(cmdSelect, "訓練日期2", new DateTime( + 1, 1, 1));
}
if ( != null && .Length > 0)
{
cmdSelect.CommandText += " and 顯示編號 like @顯示編號 ";
AddParam(cmdSelect, "顯示編號", "%" + + "%");
}
if ( != null && .Length > 0)
{
cmdSelect.CommandText += " and 公司別 = @公司別 ";
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, "教學方法", "%" + + "%");
}
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)
{
value. = Next單號(DateTime.UtcNow.AddHours(8).Date, _tableName, "顯示編號", String.Format("\"{0}\"<999999>", value.), "");
value. = "N";
value. = "N";
value. = "N";
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)
{
DAC_訓練課程內容 dao1 = new DAC_訓練課程內容(conn);
DAC_訓練課程計畫別 dao2 = new DAC_訓練課程計畫別(conn);
DAC_場地遴選 dao3 = new DAC_場地遴選(conn);
DAC_講師遴選 dao4 = new DAC_講師遴選(conn);
dao1.DeleteBy課程企劃(value.);
dao2.DeleteBy課程企劃(value.);
dao3.DeleteBy課程企劃(value.);
dao4.DeleteBy課程企劃(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="訓練日期1"></param>
/// <param name="訓練日期2"></param>
/// <param name="學員編號"></param>
/// <returns></returns>
[DataObjectMethod(DataObjectMethodType.Select)]
public List SelectBy訓練日期(DateTime 1, DateTime 2)
{
List result = new List();
IDataList list = result as IDataList;
DbCommand cmdSelect = NewCommand();
cmdSelect.CommandText = _select + _from + _where
+ " and 訓練日期 >= @訓練日期1 and 訓練日期 <= @訓練日期2 and 訓練日期 >= @今天 "
+ @" and exists ( select 1 from 表單簽核主檔
where 表單類別ID = N'課程企劃' and 表單ID = 訓練課程企劃.編號
and 應簽關數 = 已簽關數
and 應簽關數 <> 'D'
and 最終結果 = 'Y' ) "
+ " order by 訓練日期 desc";
AddParam(cmdSelect, "訓練日期1", 1);
AddParam(cmdSelect, "訓練日期2", 2);
AddParam(cmdSelect, "今天", DateTime.UtcNow.AddHours(8).Date);
Select(cmdSelect, ref list);
return result;
}
[DataObjectMethod(DataObjectMethodType.Select)]
public List Select可報名課程(string )
{
List result = new List();
IDataList list = result as IDataList;
DbCommand cmdSelect = NewCommand();
cmdSelect.CommandText = _select + _from + _where
+ @" and 訓練日期 >= @今天
and exists ( select 1 from dbo.課程報名
where 訓練課程編號 = 訓練課程企劃.編號
and 學員編號 = @學員編號
and 報名狀態 in ('R', 'S', 'Y') )
and exists ( select 1 from 表單簽核主檔
where 表單類別ID = N'課程企劃' and 表單ID = 訓練課程企劃.編號
and 應簽關數 = 已簽關數
and 應簽關數 <> 'D'
and 最終結果 = 'Y' )
order by 訓練日期 desc";
AddParam(cmdSelect, "今天", DateTime.UtcNow.AddHours(8).Date);
AddParam(cmdSelect, "學員編號", );
Select(cmdSelect, ref list);
return result;
}
[DataObjectMethod(DataObjectMethodType.Select)]
private NameValueList DoSelectForDropDown(string , int , bool? , bool? , bool? , bool? )
{
NameValueList result = new NameValueList();
IDataList list = result as IDataList;
DbCommand cmdSelect = NewCommand();
cmdSelect.CommandText = "select null as 編號, '(請選擇)' as 訓練名稱 "
+ " union all "
+ "select 編號, '[' + 顯示編號 + '] [' + CONVERT(NVARCHAR(10), 訓練日期, 120) + '] ' + 訓練名稱 "
+ _from + _where + " and (已取消 <> 'Y' or 已取消 is null) ";
if ( != null && .Length > 0)
{
cmdSelect.CommandText += " and 公司別 = @公司別 ";
}
if ( > 0)
{
cmdSelect.CommandText += " and 訓練日期 >= @訓練日期1 and 訓練日期 < @訓練日期2 ";
AddParam(cmdSelect, "訓練日期1", new DateTime(, 1, 1));
AddParam(cmdSelect, "訓練日期2", new DateTime( + 1, 1, 1));
}
if (.HasValue)
{
if (.Value)
cmdSelect.CommandText += " and dateadd(day, -報名截止期限, 訓練日期) <= @現在時間 ";
else
cmdSelect.CommandText += " and dateadd(day, -報名截止期限, 訓練日期) > @現在時間 ";
}
if (.HasValue)
{
if (.Value)
cmdSelect.CommandText += " and 訓練日期 <= @現在時間 ";
else
cmdSelect.CommandText += " and ( (訓練日期迄 is null and 訓練日期 > @現在時間) or "
+ " (訓練日期迄 is not null and 訓練日期迄 > @現在時間) ) ";
}
if (.HasValue)
{
if (.Value)
cmdSelect.CommandText += " and 已結案 = 'Y' ";
else
cmdSelect.CommandText += " and (已結案 <> 'Y' or 已結案 is null) ";
}
if (.HasValue)
{
if (.Value)
cmdSelect.CommandText += @" and exists ( select 1 from 表單簽核主檔
where 表單類別ID = N'課程企劃' and 表單ID = 訓練課程企劃.編號
and 應簽關數 = 已簽關數
and 應簽關數 <> 'D'
and 最終結果 = 'Y' )";
else
cmdSelect.CommandText += @" and not exists ( select 1 from 表單簽核主檔
where 表單類別ID = N'課程企劃' and 表單ID = 訓練課程企劃.編號
and 應簽關數 = 已簽關數
and 應簽關數 <> 'D'
and 最終結果 = 'Y' )";
}
cmdSelect.CommandText += " order by 編號";
AddParam(cmdSelect, "公司別", );
AddParam(cmdSelect, "現在時間", DateTime.UtcNow.AddHours(8));
Select(cmdSelect, ref list);
return result;
}
[DataObjectMethod(DataObjectMethodType.Select)]
public NameValueList Select已截止未上課(string )
{
return DoSelectForDropDown(, 0, true, false, null, null);
}
[DataObjectMethod(DataObjectMethodType.Select)]
public NameValueList Select已截止未上課(string , int )
{
return DoSelectForDropDown(, , true, false, null, null);
}
[DataObjectMethod(DataObjectMethodType.Select)]
public NameValueList Select未上課(string )
{
return DoSelectForDropDown(, 0, null, false, null, null);
}
[DataObjectMethod(DataObjectMethodType.Select)]
public NameValueList Select未上課(string , int )
{
return DoSelectForDropDown(, , true, false, null, null);
}
[DataObjectMethod(DataObjectMethodType.Select)]
public NameValueList Select已上課未結案(string )
{
return DoSelectForDropDown(, 0, null, true, false, null);
}
[DataObjectMethod(DataObjectMethodType.Select)]
public NameValueList Select已上課未結案(string , int )
{
return DoSelectForDropDown(, , null, true, false, null);
}
[DataObjectMethod(DataObjectMethodType.Select)]
public NameValueList Select已上課(string )
{
return DoSelectForDropDown(, 0, null, true, null, null);
}
[DataObjectMethod(DataObjectMethodType.Select)]
public NameValueList Select已上課(string , int )
{
return DoSelectForDropDown(, , null, true, null, null);
}
[DataObjectMethod(DataObjectMethodType.Select)]
public NameValueList Select已結案(string )
{
return DoSelectForDropDown(, 0, null, null, true, null);
}
[DataObjectMethod(DataObjectMethodType.Select)]
public NameValueList Select已結案(string , int )
{
return DoSelectForDropDown(, , null, null, true, null);
}
[DataObjectMethod(DataObjectMethodType.Select)]
public NameValueList Select已簽核未結案(string )
{
return DoSelectForDropDown(, 0, null, null, false, true);
}
[DataObjectMethod(DataObjectMethodType.Select)]
public NameValueList Select已簽核未結案(string , int )
{
return DoSelectForDropDown(, , null, null, false, true);
}
[DataObjectMethod(DataObjectMethodType.Select)]
public NameValueList Select全部(string )
{
return DoSelectForDropDown(, 0, null, null, null, null);
}
[DataObjectMethod(DataObjectMethodType.Select)]
public NameValueList Select全部(string , int )
{
return DoSelectForDropDown(, , null, null, null, null);
}
[DataObjectMethod(DataObjectMethodType.Select)]
public List Select年度企劃(string , int Year)
{
List result = new List();
IDataList list = result as IDataList;
DbCommand cmdSelect = NewCommand();
cmdSelect.CommandText =
_select + _from + _where
+ " and 公司別 = @公司別 "
+ " and 訓練日期 >= @年初 and 訓練日期 < @明年初 "
+ " and 已取消 <> 'Y' "
+ " order by 編號";
AddParam(cmdSelect, "年初", new DateTime(Year, 1, 1));
AddParam(cmdSelect, "明年初", new DateTime(Year + 1, 1, 1));
AddParam(cmdSelect, "公司別", );
Select(cmdSelect, ref list);
return result;
}
public int Select選定場地(int )
{
List d1 = SelectOne();
if (d1.Count == 0)
return 0;
List d2 = new DAC_場地異動(conn).Select最後異動();
if (d2.Count == 0)
return new DAC_場地遴選(conn).Select選定場地();
else
return d2[0].;
}
public string Select選定場地名稱(int )
{
List d1 = SelectOne();
if (d1.Count == 0)
return "";
List d2 = new DAC_場地異動(conn).Select最後異動();
if (d2.Count > 0)
{
if (d2[0]. > 0)
return new DAC_場地(conn).Get場地名稱(d2[0].);
return d2[0]. ?? "";
}
return new DAC_場地遴選(conn).Select選定場地名稱();
}
public int Select選定講師(int , int )
{
List d1 = new DAC_訓練課程內容().SelectOne(, );
if (d1.Count == 0)
return 0;
List d2 = new DAC_講師異動(conn).Select最後異動(, );
if (d2.Count == 0)
return new DAC_講師遴選(conn).Select選定講師(, );
else
return d2[0].;
}
public string Select選定講師名稱(int , int )
{
List d1 = new DAC_訓練課程內容().SelectOne(, );
if (d1.Count == 0)
return "";
List d2 = new DAC_講師異動(conn).Select最後異動(, );
if (d2.Count > 0)
{
if (d2[0]. > 0)
return new DAC_講師(conn).Get姓名(d2[0].);
return d2[0]. ?? "";
}
return new DAC_講師遴選(conn).Select選定講師名稱(, );
}
public DataTable Select年度課程執行狀況報表(string , int , bool )
{
DbCommand cmd = NewCommand();
cmd.CommandText = @"
SELECT A.編號, A.訓練名稱, '' AS 訓練計畫別, A.訓練日期, A.訓練日期迄, A.訓練時數, '' AS 訓練場地,
0 AS 訓練人數, A.預估經費, 0 AS 實際經費, 0.0 AS 學員出席率, 0.0 AS 整體滿意度
FROM 訓練課程企劃 A
WHERE A.訓練日期 >= @訓練日期1
AND A.訓練日期 < @訓練日期2
AND A.公司別 = @公司別 ";
if (!)
cmd.CommandText += " AND (A.已取消 IS NULL OR A.已取消 = 'N')";
cmd.CommandText += " ORDER BY A.訓練日期";
AddParam(cmd, "訓練日期1", new DateTime(, 1, 1));
AddParam(cmd, "訓練日期2", new DateTime( + 1, 1, 1));
AddParam(cmd, "公司別", );
DataTable result = Select(cmd);
DAC_課程報名 Dao課程報名 = new DAC_課程報名(conn);
DAC_課程經費 Dao課程經費 = new DAC_課程經費(conn);
DAC_滿意度調查課程企劃 Dao滿意度調查課程企劃 = new DAC_滿意度調查課程企劃(conn);
// 填入統計欄位
foreach (DataRow r in result.Rows)
{
int = DAC.GetInt32(r["編號"]);
string = "";
// 取得訓練計畫別
DataTable Table = Dao課程報名.Select確定報名學員計畫();
foreach (DataRow r1 in Table.Rows)
{
+= DAC.GetString(r1["計畫年度名稱"]) + "\r\n";
}
if (.Length > 0)
= .Trim();
// 取得場地及滿意度
DataTable 滿Table = Dao滿意度調查課程企劃.Select滿意度統計();
r["訓練場地"] = Select選定場地名稱();
r["訓練人數"] = Dao課程報名.Get出席人數();
r["實際經費"] = Dao課程經費.Get經費合計();
r["學員出席率"] = Dao課程報名.Get出席率();
r["整體滿意度"] = 滿Table.Rows.Count > 0 ? DAC.GetDecimal(滿Table.Rows[0]["整體滿意度"]) : 0;
r.EndEdit();
}
result.AcceptChanges();
return result;
}
[DataObjectMethod(DataObjectMethodType.Select)]
public NameValueList Select可選課程日期(int )
{
NameValueList result = new NameValueList();
List d = SelectOne();
if (d.Count > 0)
{
if (d[0]..Ticks == 0)
{
result.Add(d[0]..ToString("yyyy-MM-dd"), d[0]..ToString("yyyy-MM-dd"));
}
else
{
DateTime day = d[0].;
while (day.CompareTo(d[0].) <= 0)
{
result.Add(day.ToString("yyyy-MM-dd"), day.ToString("yyyy-MM-dd"));
day = day.AddDays(1);
}
}
}
return result;
}
public bool Get場地講師已簽准(int )
{
DAC_場地遴選 Dao場地遴選 = new DAC_場地遴選(conn);
DAC_表單簽核主檔 Dao表單簽核主檔 = new DAC_表單簽核主檔(conn);
List List = Dao場地遴選.SelectOne();
bool = List.Count > 0;
if (List.Count > 0)
{
status = Dao表單簽核主檔.GetLastStatus("場地遴選", String.Format("{0}", ));
&= status != null &&
status..CompareTo("D") != 0 &&
status..CompareTo(status.) == 0 &&
status. == "Y";
}
DAC_訓練課程內容 Dao訓練課程內容 = new DAC_訓練課程內容(conn);
List List = Dao訓練課程內容.SelectBy課程企劃();
bool = List.Count > 0;
foreach ( item in List)
{
status = Dao表單簽核主檔.GetLastStatus("講師遴選", String.Format("{0}|{1}", , item.));
&= status != null &&
status..CompareTo("D") != 0 &&
status..CompareTo(status.) == 0 &&
status. == "Y";
}
return && ;
}
public bool Get場地講師已輸入(int )
{
DAC_場地遴選 Dao場地遴選 = new DAC_場地遴選(conn);
List List = Dao場地遴選.SelectOne();
bool = true;
foreach ( item in List)
{
&= (item._A > 0 || !String.IsNullOrEmpty(item._A)) &&
item.便_A > 0 &&
item._A > 0 &&
item._A > 0 &&
item._A > 0 &&
item._A > 0;
}
DAC_訓練課程內容 Dao訓練課程內容 = new DAC_訓練課程內容(conn);
DAC_講師遴選 Dao講師遴選 = new DAC_講師遴選(conn);
List List = Dao訓練課程內容.SelectBy課程企劃();
bool = true;
foreach ( item in List)
{
List List = Dao講師遴選.SelectOne(, item.);
foreach ( item2 in List)
{
&= (item2._A > 0 || !String.IsNullOrEmpty(item2._A)) &&
item2._A > 0 &&
item2._A > 0 &&
item2._A > 0 &&
item2._A > 0 &&
item2._A > 0 &&
(item2._B > 0 || !String.IsNullOrEmpty(item2._B)) &&
item2._B > 0 &&
item2._B > 0 &&
item2._B > 0 &&
item2._B > 0 &&
item2._B > 0;
}
}
DAC_教材遴選 Dao教材遴選 = new DAC_教材遴選(conn);
bool = true;
foreach ( item in List)
{
List List = Dao教材遴選.SelectOne(, item.);
foreach (Item item2 in List)
{
&= !String.IsNullOrEmpty(item2._A) &&
item2._A > 0 &&
item2._A > 0 &&
item2._A > 0 &&
item2._A > 0 &&
item2._A > 0 &&
!String.IsNullOrEmpty(item2._B) &&
item2._B > 0 &&
item2._B > 0 &&
item2._B > 0 &&
item2._B > 0 &&
item2._B > 0;
}
}
return && && ;
}
}
///<summary>
/// 訓練課程企劃 資料集合類別
///</summary>
public partial class List : List<>
{
// 有另外加上去的屬性及方法,請加在這裡
}
///<summary>
/// 訓練課程企劃 資料紀錄類別
///</summary>
public partial class
{
// 有另外加上去的屬性及方法,請加在這裡
public static string Get訓練日期Str(DateTime , DateTime , string Format = "yyyy年MM月dd日(dddd)")
{
if (.Ticks == 0)
return (.Ticks > 0 ? .ToString(Format) : "");
else if (.Ticks >= 0 && .CompareTo() == 0)
return (.Ticks > 0 ? .ToString(Format) : "");
else
return (.Ticks > 0 ? .ToString(Format) : "")
+ (.Ticks > 0 ? " 至 " + .ToString(Format) : "");
}
}
}