chore: 首次簽入 Thinkyu ASP.NET 專案
- 加入 Visual Studio / ASP.NET .gitignore - 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
This commit is contained in:
@@ -0,0 +1,730 @@
|
||||
//
|
||||
// 這個檔案是 訓練課程企劃 資料表的資料存取類別 檔案二
|
||||
// 您可以修改這個檔案,加入您自訂的屬性與方法
|
||||
//
|
||||
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) : "");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user