Files
thinkyu/教育訓練系統/Web/DAC/課程企劃/DAC_訓練課程企劃2.cs
T
sryang 577060bc78 chore: 首次簽入 Thinkyu ASP.NET 專案
- 加入 Visual Studio / ASP.NET .gitignore
- 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
2026-09-10 09:42:37 +08:00

731 lines
32 KiB
C#

//
// 這個檔案是 訓練課程企劃 資料表的資料存取類別 檔案二
// 您可以修改這個檔案,加入您自訂的屬性與方法
//
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);
DAC_訓練課程內容 Dao訓練課程內容 = new DAC_訓練課程內容(conn);
DAC_講師遴選 Dao講師遴選 = new DAC_講師遴選(conn);
DAC_教材遴選 Dao教材遴選 = new DAC_教材遴選(conn);
// 場地遴選:至少一筆記錄,且至少一個場地(A/B/C)完整填寫
bool 場地已輸入 = false;
場地遴選List 場地List = Dao場地遴選.SelectOne(編號);
foreach (場地遴選 item in 場地List)
{
場地已輸入 |= 場地遴選已填妥(item);
}
// 講師遴選:每個課程內容都要有講師遴選記錄,且至少一位講師(A/B/C)完整填寫
bool 講師已輸入 = true;
訓練課程內容List 課程內容List = Dao訓練課程內容.SelectBy課程企劃(編號);
foreach (訓練課程內容 item in 課程內容List)
{
講師遴選List 講師List = Dao講師遴選.SelectOne(編號, item.課程序號);
bool 此課程講師 = false;
foreach (講師遴選 item2 in 講師List)
{
此課程講師 |= 講師遴選已填妥(item2);
}
講師已輸入 &= 此課程講師;
}
// 教材遴選:每個課程內容都要有教材遴選記錄,且至少一本教材(A/B/C)完整填寫
bool 教材已輸入 = true;
foreach (訓練課程內容 item in 課程內容List)
{
教材遴選List 教材List = Dao教材遴選.SelectOne(編號, item.課程序號);
bool 此課程教材 = false;
foreach (教材遴選Item item2 in 教材List)
{
此課程教材 |= 教材遴選已填妥(item2);
}
教材已輸入 &= 此課程教材;
}
return 場地已輸入 && 講師已輸入 && 教材已輸入;
}
private bool 場地遴選已填妥(場地遴選 item)
{
return 場地已填妥(item, "A") || 場地已填妥(item, "B") || 場地已填妥(item, "C");
}
private bool 場地已填妥(場地遴選 item, string 場地別)
{
int 場地編號 = 場地別 == "A" ? item.場地編號_A : 場地別 == "B" ? item.場地編號_B : item.場地編號_C;
string 場地名稱 = 場地別 == "A" ? item.場地名稱_A : 場地別 == "B" ? item.場地名稱_B : item.場地名稱_C;
int 安全舒適 = 場地別 == "A" ? item.安全舒適_A : 場地別 == "B" ? item.安全舒適_B : item.安全舒適_C;
int 空間大小 = 場地別 == "A" ? item.空間大小_A : 場地別 == "B" ? item.空間大小_B : item.空間大小_C;
int 價格合理 = 場地別 == "A" ? item.價格合理_A : 場地別 == "B" ? item.價格合理_B : item.價格合理_C;
int 交通便利 = 場地別 == "A" ? item.交通便利_A : 場地別 == "B" ? item.交通便利_B : item.交通便利_C;
int 設備完善 = 場地別 == "A" ? item.設備完善_A : 場地別 == "B" ? item.設備完善_B : item.設備完善_C;
return (場地編號 > 0 || !String.IsNullOrEmpty(場地名稱))
&& 安全舒適 > 0 && 空間大小 > 0 && 價格合理 > 0 && 交通便利 > 0 && 設備完善 > 0;
}
private bool 講師遴選已填妥(講師遴選 item)
{
return 講師已填妥(item, "A") || 講師已填妥(item, "B") || 講師已填妥(item, "C");
}
private bool 講師已填妥(講師遴選 item, string 講師別)
{
int 講師編號 = 講師別 == "A" ? item.講師編號_A : 講師別 == "B" ? item.講師編號_B : item.講師編號_C;
string 講師姓名 = 講師別 == "A" ? item.講師姓名_A : 講師別 == "B" ? item.講師姓名_B : item.講師姓名_C;
int 專業背景 = 講師別 == "A" ? item.專業背景_A : 講師別 == "B" ? item.專業背景_B : item.專業背景_C;
int 講授經驗 = 講師別 == "A" ? item.講授經驗_A : 講師別 == "B" ? item.講授經驗_B : item.講授經驗_C;
int 口碑與評價 = 講師別 == "A" ? item.口碑與評價_A : 講師別 == "B" ? item.口碑與評價_B : item.口碑與評價_C;
int 費用 = 講師別 == "A" ? item.費用_A : 講師別 == "B" ? item.費用_B : item.費用_C;
int 配合度 = 講師別 == "A" ? item.配合度_A : 講師別 == "B" ? item.配合度_B : item.配合度_C;
return (講師編號 > 0 || !String.IsNullOrEmpty(講師姓名))
&& 專業背景 > 0 && 講授經驗 > 0 && 口碑與評價 > 0 && 費用 > 0 && 配合度 > 0;
}
private bool 教材遴選已填妥(教材遴選Item item)
{
return 教材已填妥(item, "A") || 教材已填妥(item, "B") || 教材已填妥(item, "C");
}
private bool 教材已填妥(教材遴選Item item, string 教材別)
{
string 教材名稱 = 教材別 == "A" ? item.教材名稱_A : 教材別 == "B" ? item.教材名稱_B : item.教材名稱_C;
string 訓練目標相符 = 教材別 == "A" ? item.訓練目標相符_A : 教材別 == "B" ? item.訓練目標相符_B : item.訓練目標相符_C;
string 參訓對象符合 = 教材別 == "A" ? item.參訓對象符合_A : 教材別 == "B" ? item.參訓對象符合_B : item.參訓對象符合_C;
string 課程大綱相符 = 教材別 == "A" ? item.課程大綱相符_A : 教材別 == "B" ? item.課程大綱相符_B : item.課程大綱相符_C;
string 內容正確適切 = 教材別 == "A" ? item.內容正確適切_A : 教材別 == "B" ? item.內容正確適切_B : item.內容正確適切_C;
string 學員理解應用 = 教材別 == "A" ? item.學員理解應用_A : 教材別 == "B" ? item.學員理解應用_B : item.學員理解應用_C;
string 使用方式清楚 = 教材別 == "A" ? item.使用方式清楚_A : 教材別 == "B" ? item.使用方式清楚_B : item.使用方式清楚_C;
string 評選結果 = 教材別 == "A" ? item.評選結果_A : 教材別 == "B" ? item.評選結果_B : item.評選結果_C;
return !String.IsNullOrEmpty(教材名稱)
&& !String.IsNullOrEmpty(訓練目標相符)
&& !String.IsNullOrEmpty(參訓對象符合)
&& !String.IsNullOrEmpty(課程大綱相符)
&& !String.IsNullOrEmpty(內容正確適切)
&& !String.IsNullOrEmpty(學員理解應用)
&& !String.IsNullOrEmpty(使用方式清楚)
&& !String.IsNullOrEmpty(評選結果);
}
}
///<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) : "");
}
}
}