chore: 首次簽入 Thinkyu ASP.NET 專案
- 加入 Visual Studio / ASP.NET .gitignore - 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
This commit is contained in:
@@ -0,0 +1,413 @@
|
||||
//
|
||||
// 這個檔案是 學員出席 資料表的資料存取類別 檔案一
|
||||
// 請不要修改這個檔案,重新產生資料存取類別時,這個檔案會被覆蓋掉
|
||||
//
|
||||
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(string 學員編號, int 訓練課程編號, DateTime 課程日期)
|
||||
{
|
||||
學員出席List result = new 學員出席List();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where
|
||||
+ " and 學員編號 = @學員編號 "
|
||||
+ " and 訓練課程編號 = @訓練課程編號 "
|
||||
+ " and 課程日期 = @課程日期 "
|
||||
;
|
||||
AddParam(cmdSelect, "學員編號", 學員編號);
|
||||
AddParam(cmdSelect, "訓練課程編號", 訓練課程編號);
|
||||
AddParam(cmdSelect, "課程日期", 課程日期);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Insert)]
|
||||
public void InsertOne(學員出席 value)
|
||||
{
|
||||
using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required))
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeInsertOne(value))
|
||||
return;
|
||||
|
||||
DbCommand cmdInsert = NewCommand();
|
||||
cmdInsert.CommandText =
|
||||
"insert into 學員出席"
|
||||
+ " (" + _insert + ")"
|
||||
+ "values "
|
||||
+ " (" + _insertValue + ");"
|
||||
;
|
||||
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);
|
||||
ExecuteNonQuery(cmdInsert);
|
||||
AfterInsertOne(value);
|
||||
ts.Complete();
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
bool handled;
|
||||
OnInsertOneError(error, out handled);
|
||||
if(!handled)
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Update)]
|
||||
public int UpdateOne(學員出席 value)
|
||||
{
|
||||
using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required))
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeUpdateOne(value))
|
||||
return -1;
|
||||
|
||||
學員出席List oldValues = SelectOne(value.學員編號, value.訓練課程編號, 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 訓練課程編號 = @original_訓練課程編號
|
||||
and 課程日期 = @original_課程日期
|
||||
and DB_APPNO = @original_DB_APPNO
|
||||
";
|
||||
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_訓練課程編號", value.訓練課程編號);
|
||||
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(string 學員編號, int 訓練課程編號, DateTime 課程日期, 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 訓練課程編號 = @訓練課程編號
|
||||
and 課程日期 = @課程日期
|
||||
and DB_APPNO = @DB_APPNO
|
||||
";
|
||||
AddParam(cmdDelete, "學員編號", 學員編號);
|
||||
AddParam(cmdDelete, "訓練課程編號", 訓練課程編號);
|
||||
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.學員編號, value.訓練課程編號, 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 訓練課程編號 = @訓練課程編號
|
||||
and 課程日期 = @課程日期
|
||||
and DB_APPNO = @DB_APPNO
|
||||
";
|
||||
AddParam(cmdDelete, "學員編號", value.學員編號);
|
||||
AddParam(cmdDelete, "訓練課程編號", value.訓練課程編號);
|
||||
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(string 學員編號, int 訓練課程編號, DateTime 課程日期)
|
||||
{
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = "select count(1)" + _from + _where
|
||||
+ " and 學員編號 = @學員編號 "
|
||||
+ " and 訓練課程編號 = @訓練課程編號 "
|
||||
+ " and 課程日期 = @課程日期 "
|
||||
;
|
||||
AddParam(cmdSelect, "學員編號", 學員編號);
|
||||
AddParam(cmdSelect, "訓練課程編號", 訓練課程編號);
|
||||
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.GetString(reader[0]);
|
||||
newItem.訓練課程編號 = DAC.GetInt32(reader[1]);
|
||||
newItem.課程日期 = DAC.GetDateTime(reader[2]);
|
||||
newItem.出席狀況 = DAC.GetString(reader[3]);
|
||||
newItem.請假事由 = DAC.GetString(reader[4]);
|
||||
newItem.DB_APPNO = DAC.GetInt32(reader[5]);
|
||||
newItem.DB_CRDAT = DAC.GetDateTime(reader[6]);
|
||||
newItem.DB_CRUSR = DAC.GetString(reader[7]);
|
||||
newItem.DB_TRDAT = DAC.GetDateTime(reader[8]);
|
||||
newItem.DB_TRUSR = DAC.GetString(reader[9]);
|
||||
Add(newItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 學員出席 資料紀錄類別
|
||||
///</summary>
|
||||
[Serializable]
|
||||
public partial class 學員出席 : DataItemBase
|
||||
{
|
||||
private string _學員編號;
|
||||
private int _訓練課程編號;
|
||||
private DateTime _課程日期;
|
||||
private string _出席狀況;
|
||||
private string _請假事由;
|
||||
|
||||
#region 資料欄位
|
||||
///<summary>
|
||||
/// 學員編號
|
||||
///</summary>
|
||||
[DataObjectField(true, false, false, 10)]
|
||||
public string 學員編號
|
||||
{
|
||||
get
|
||||
{
|
||||
return _學員編號;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _學員編號)
|
||||
{
|
||||
_學員編號 = value;
|
||||
OnPropertyChanged("學員編號");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 訓練課程編號
|
||||
///</summary>
|
||||
[DataObjectField(true, false, false)]
|
||||
public int 訓練課程編號
|
||||
{
|
||||
get
|
||||
{
|
||||
return _訓練課程編號;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _訓練課程編號)
|
||||
{
|
||||
_訓練課程編號 = value;
|
||||
OnPropertyChanged("訓練課程編號");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 課程日期
|
||||
///</summary>
|
||||
[DataObjectField(true, false, false)]
|
||||
public DateTime 課程日期
|
||||
{
|
||||
get
|
||||
{
|
||||
return _課程日期;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _課程日期)
|
||||
{
|
||||
_課程日期 = value;
|
||||
OnPropertyChanged("課程日期");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 出席狀況
|
||||
/// Y=出席
|
||||
/// N=缺席
|
||||
/// L=請假
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 1)]
|
||||
public string 出席狀況
|
||||
{
|
||||
get
|
||||
{
|
||||
return _出席狀況;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _出席狀況)
|
||||
{
|
||||
_出席狀況 = value;
|
||||
OnPropertyChanged("出席狀況");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 請假事由
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 100)]
|
||||
public string 請假事由
|
||||
{
|
||||
get
|
||||
{
|
||||
return _請假事由;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _請假事由)
|
||||
{
|
||||
_請假事由 = value;
|
||||
OnPropertyChanged("請假事由");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,206 @@
|
||||
//
|
||||
// 這個檔案是 學員出席 資料表的資料存取類別 檔案二
|
||||
// 您可以修改這個檔案,加入您自訂的屬性與方法
|
||||
//
|
||||
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
|
||||
{
|
||||
#region 自動產生的資料存取方法
|
||||
///<summary>
|
||||
/// InsertOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查或是自動編號等動作
|
||||
/// 回傳 false 會打斷 InsertOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeInsertOne(學員出席 value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// InsertOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterInsertOne(學員出席 value)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// InsertOne 發生錯誤時會執行此方法
|
||||
///</summary>
|
||||
///<param name="handled">錯誤是否已經處理妥當</param>
|
||||
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>
|
||||
///<param name="handled">錯誤是否已經處理妥當</param>
|
||||
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(string 學員編號, int 訓練課程編號, DateTime 課程日期, int DB_APPNO)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterDeleteOne(string 學員編號, int 訓練課程編號, DateTime 課程日期, int DB_APPNO)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 發生錯誤時會執行此方法
|
||||
///</summary>
|
||||
///<param name="handled">錯誤是否已經處理妥當</param>
|
||||
protected virtual void OnDeleteOneError(Exception error, out bool handled)
|
||||
{
|
||||
handled = false;
|
||||
}
|
||||
|
||||
#endregion
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public 學員出席List Select(string 學員編號, int 訓練課程編號)
|
||||
{
|
||||
學員出席List result = new 學員出席List();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where
|
||||
+ " and 學員編號 = @學員編號 "
|
||||
+ " and 訓練課程編號 = @訓練課程編號 "
|
||||
;
|
||||
AddParam(cmdSelect, "學員編號", 學員編號);
|
||||
AddParam(cmdSelect, "訓練課程編號", 訓練課程編號);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
public void Update(學員出席 value)
|
||||
{
|
||||
學員出席List oldValue = SelectOne(value.學員編號, value.訓練課程編號, value.課程日期);
|
||||
if (oldValue.Count == 0)
|
||||
{
|
||||
InsertOne(value);
|
||||
}
|
||||
else
|
||||
{
|
||||
oldValue[0].出席狀況 = value.出席狀況;
|
||||
oldValue[0].請假事由 = value.請假事由;
|
||||
UpdateOne(oldValue[0]);
|
||||
}
|
||||
}
|
||||
|
||||
public int Get出席人次(int 訓練課程編號)
|
||||
{
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText =
|
||||
@"select count(1) from 學員出席
|
||||
where 訓練課程編號 = @訓練課程編號
|
||||
and 出席狀況='Y'";
|
||||
AddParam(cmdSelect, "訓練課程編號", 訓練課程編號);
|
||||
int i;
|
||||
ExecuteScalar(cmdSelect, out i);
|
||||
return i;
|
||||
}
|
||||
|
||||
public int Get參與人數(int 訓練課程編號)
|
||||
{
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText =
|
||||
@"select distinct count(學員編號) from 學員出席
|
||||
where 訓練課程編號 = @訓練課程編號
|
||||
and 出席狀況='Y'";
|
||||
AddParam(cmdSelect, "訓練課程編號", 訓練課程編號);
|
||||
int i;
|
||||
ExecuteScalar(cmdSelect, out i);
|
||||
return i;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public DataTable Select出席狀況(string 學員編號, int 訓練課程編號)
|
||||
{
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = "select 課程日期, 出席狀況, 請假事由 " + _from + _where
|
||||
+ " and 學員編號 = @學員編號 "
|
||||
+ " and 訓練課程編號 = @訓練課程編號 "
|
||||
+ " order by 課程日期 ";
|
||||
AddParam(cmdSelect, "學員編號", 學員編號);
|
||||
AddParam(cmdSelect, "訓練課程編號", 訓練課程編號);
|
||||
return Select(cmdSelect);
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 學員出席 資料集合類別
|
||||
///</summary>
|
||||
public partial class 學員出席List : List<學員出席>
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 學員出席 資料紀錄類別
|
||||
///</summary>
|
||||
public partial class 學員出席
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,377 @@
|
||||
//
|
||||
// 這個檔案是 數位課程觀看紀錄 資料表的資料存取類別 檔案一
|
||||
// 請不要修改這個檔案,重新產生資料存取類別時,這個檔案會被覆蓋掉
|
||||
//
|
||||
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 課程編號, string 學員編號)
|
||||
{
|
||||
數位課程觀看紀錄List result = new 數位課程觀看紀錄List();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where
|
||||
+ " and 課程編號 = @課程編號 "
|
||||
+ " and 學員編號 = @學員編號 "
|
||||
;
|
||||
AddParam(cmdSelect, "課程編號", 課程編號);
|
||||
AddParam(cmdSelect, "學員編號", 學員編號);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Insert)]
|
||||
public void InsertOne(數位課程觀看紀錄 value)
|
||||
{
|
||||
using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required))
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeInsertOne(value))
|
||||
return;
|
||||
|
||||
DbCommand cmdInsert = NewCommand();
|
||||
cmdInsert.CommandText =
|
||||
"insert into 數位課程觀看紀錄"
|
||||
+ " (" + _insert + ")"
|
||||
+ "values "
|
||||
+ " (" + _insertValue + ");"
|
||||
;
|
||||
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);
|
||||
ExecuteNonQuery(cmdInsert);
|
||||
AfterInsertOne(value);
|
||||
ts.Complete();
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
bool handled;
|
||||
OnInsertOneError(error, out handled);
|
||||
if(!handled)
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Update)]
|
||||
public int UpdateOne(數位課程觀看紀錄 value)
|
||||
{
|
||||
using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required))
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeUpdateOne(value))
|
||||
return -1;
|
||||
|
||||
數位課程觀看紀錄List oldValues = SelectOne(value.課程編號, 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 學員編號 = @original_學員編號
|
||||
and DB_APPNO = @original_DB_APPNO
|
||||
";
|
||||
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_學員編號", 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 課程編號, string 學員編號, 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 學員編號 = @學員編號
|
||||
and DB_APPNO = @DB_APPNO
|
||||
";
|
||||
AddParam(cmdDelete, "課程編號", 課程編號);
|
||||
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.課程編號, 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 學員編號 = @學員編號
|
||||
and DB_APPNO = @DB_APPNO
|
||||
";
|
||||
AddParam(cmdDelete, "課程編號", value.課程編號);
|
||||
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 課程編號, string 學員編號)
|
||||
{
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = "select count(1)" + _from + _where
|
||||
+ " and 課程編號 = @課程編號 "
|
||||
+ " and 學員編號 = @學員編號 "
|
||||
;
|
||||
AddParam(cmdSelect, "課程編號", 課程編號);
|
||||
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.GetDateTime(reader[3]);
|
||||
newItem.DB_APPNO = DAC.GetInt32(reader[4]);
|
||||
newItem.DB_CRDAT = DAC.GetDateTime(reader[5]);
|
||||
newItem.DB_CRUSR = DAC.GetString(reader[6]);
|
||||
newItem.DB_TRDAT = DAC.GetDateTime(reader[7]);
|
||||
newItem.DB_TRUSR = DAC.GetString(reader[8]);
|
||||
Add(newItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 數位課程觀看紀錄 資料紀錄類別
|
||||
///</summary>
|
||||
[Serializable]
|
||||
public partial class 數位課程觀看紀錄 : DataItemBase
|
||||
{
|
||||
private int _課程編號;
|
||||
private string _學員編號;
|
||||
private string _必看;
|
||||
private DateTime _觀看日期;
|
||||
|
||||
#region 資料欄位
|
||||
///<summary>
|
||||
/// 課程編號
|
||||
///</summary>
|
||||
[DataObjectField(true, false, false)]
|
||||
public int 課程編號
|
||||
{
|
||||
get
|
||||
{
|
||||
return _課程編號;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _課程編號)
|
||||
{
|
||||
_課程編號 = value;
|
||||
OnPropertyChanged("課程編號");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 學員編號
|
||||
///</summary>
|
||||
[DataObjectField(true, false, false, 10)]
|
||||
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 DateTime 觀看日期
|
||||
{
|
||||
get
|
||||
{
|
||||
return _觀看日期;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _觀看日期)
|
||||
{
|
||||
_觀看日期 = value;
|
||||
OnPropertyChanged("觀看日期");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,228 @@
|
||||
//
|
||||
// 這個檔案是 數位課程觀看紀錄 資料表的資料存取類別 檔案二
|
||||
// 您可以修改這個檔案,加入您自訂的屬性與方法
|
||||
//
|
||||
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
|
||||
{
|
||||
#region 自動產生的資料存取方法
|
||||
///<summary>
|
||||
/// InsertOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查或是自動編號等動作
|
||||
/// 回傳 false 會打斷 InsertOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeInsertOne(數位課程觀看紀錄 value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// InsertOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterInsertOne(數位課程觀看紀錄 value)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// InsertOne 發生錯誤時會執行此方法
|
||||
///</summary>
|
||||
///<param name="handled">錯誤是否已經處理妥當</param>
|
||||
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>
|
||||
///<param name="handled">錯誤是否已經處理妥當</param>
|
||||
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 課程編號, string 學員編號, int DB_APPNO)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterDeleteOne(int 課程編號, string 學員編號, int DB_APPNO)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 發生錯誤時會執行此方法
|
||||
///</summary>
|
||||
///<param name="handled">錯誤是否已經處理妥當</param>
|
||||
protected virtual void OnDeleteOneError(Exception error, out bool handled)
|
||||
{
|
||||
handled = false;
|
||||
}
|
||||
|
||||
#endregion
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
public void 報名(int 課程編號, string 學員編號, string userId)
|
||||
{
|
||||
數位課程觀看紀錄List d = SelectOne(課程編號, 學員編號);
|
||||
if (d.Count == 0)
|
||||
{
|
||||
數位課程觀看紀錄 newValue = new 數位課程觀看紀錄();
|
||||
newValue.課程編號 = 課程編號;
|
||||
newValue.學員編號 = 學員編號;
|
||||
newValue.必看 = "Y";
|
||||
newValue.DB_CRUSR = userId;
|
||||
InsertOne(newValue);
|
||||
}
|
||||
else
|
||||
{
|
||||
d[0].必看 = "Y";
|
||||
d[0].DB_TRUSR = userId;
|
||||
UpdateOne(d[0]);
|
||||
}
|
||||
}
|
||||
|
||||
public void 取消報名(int 課程編號, string 學員編號)
|
||||
{
|
||||
數位課程觀看紀錄List d = SelectOne(課程編號, 學員編號);
|
||||
if (d.Count > 0)
|
||||
{
|
||||
if (d[0].觀看日期.Ticks == 0)
|
||||
DeleteOne(d[0]);
|
||||
}
|
||||
}
|
||||
|
||||
public bool 是否報名(int 課程編號, string 學員編號)
|
||||
{
|
||||
數位課程觀看紀錄List d = SelectOne(課程編號, 學員編號);
|
||||
return d.Count > 0;
|
||||
}
|
||||
|
||||
public bool 是否觀看(int 課程編號, string 學員編號)
|
||||
{
|
||||
數位課程觀看紀錄List d = SelectOne(課程編號, 學員編號);
|
||||
return (d.Count > 0 && d[0].觀看日期.Ticks > 0);
|
||||
}
|
||||
|
||||
public void Insert(int 課程編號, string 學員編號, string userId)
|
||||
{
|
||||
數位課程觀看紀錄List d = SelectOne(課程編號, 學員編號);
|
||||
if (d.Count == 0)
|
||||
{
|
||||
數位課程觀看紀錄 newValue = new 數位課程觀看紀錄();
|
||||
newValue.課程編號 = 課程編號;
|
||||
newValue.學員編號 = 學員編號;
|
||||
newValue.觀看日期 = DateTime.UtcNow.AddHours(8).Date;
|
||||
newValue.DB_CRUSR = userId;
|
||||
InsertOne(newValue);
|
||||
}
|
||||
else
|
||||
{
|
||||
d[0].觀看日期 = DateTime.UtcNow.AddHours(8).Date;
|
||||
UpdateOne(d[0]);
|
||||
}
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public DataTable Select必修學員(int 課程編號)
|
||||
{
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText =
|
||||
@"select A.學員編號, A.學員編號 + ' ' + B.BPNME as 學員姓名
|
||||
from 數位課程觀看紀錄 A
|
||||
inner join BPSNView B on A.學員編號=B.BPENO
|
||||
where A.課程編號 = @課程編號
|
||||
and A.必看 = 'Y'
|
||||
order by A.學員編號";
|
||||
AddParam(cmdSelect, "課程編號", 課程編號);
|
||||
return Select(cmdSelect);
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public DataTable Select觀看紀錄(string 學員編號)
|
||||
{
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText =
|
||||
@"SELECT A.課程編號, A.學員編號, A.觀看日期,
|
||||
B.課程名稱, B.講師, B.課程簡介, B.長度, B.課程網址, B.課程文件, B.評量文件,
|
||||
C.BSSCR AS 課程類別
|
||||
FROM 數位課程觀看紀錄 A
|
||||
INNER JOIN 數位課程 B ON A.課程編號=B.課程編號
|
||||
LEFT OUTER JOIN BCLS C ON B.課程類別=C.BSCLS AND C.BSPAR='課程類別'
|
||||
WHERE 學員編號 = @學員編號 AND 觀看日期 IS NOT NULL
|
||||
ORDER BY A.課程編號";
|
||||
AddParam(cmdSelect, "學員編號", 學員編號);
|
||||
return Select(cmdSelect);
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 數位課程觀看紀錄 資料集合類別
|
||||
///</summary>
|
||||
public partial class 數位課程觀看紀錄List : List<數位課程觀看紀錄>
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 數位課程觀看紀錄 資料紀錄類別
|
||||
///</summary>
|
||||
public partial class 數位課程觀看紀錄
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,485 @@
|
||||
//
|
||||
// 這個檔案是 課程報名 資料表的資料存取類別 檔案一
|
||||
// 請不要修改這個檔案,重新產生資料存取類別時,這個檔案會被覆蓋掉
|
||||
//
|
||||
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(string 學員編號, int 訓練課程編號)
|
||||
{
|
||||
課程報名List result = new 課程報名List();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where
|
||||
+ " and 學員編號 = @學員編號 "
|
||||
+ " and 訓練課程編號 = @訓練課程編號 "
|
||||
;
|
||||
AddParam(cmdSelect, "學員編號", 學員編號);
|
||||
AddParam(cmdSelect, "訓練課程編號", 訓練課程編號);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Insert)]
|
||||
public void InsertOne(課程報名 value)
|
||||
{
|
||||
using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required))
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeInsertOne(value))
|
||||
return;
|
||||
|
||||
DbCommand cmdInsert = NewCommand();
|
||||
cmdInsert.CommandText =
|
||||
"insert into 課程報名"
|
||||
+ " (" + _insert + ")"
|
||||
+ "values "
|
||||
+ " (" + _insertValue + ");"
|
||||
;
|
||||
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);
|
||||
ExecuteNonQuery(cmdInsert);
|
||||
AfterInsertOne(value);
|
||||
ts.Complete();
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
bool handled;
|
||||
OnInsertOneError(error, out handled);
|
||||
if(!handled)
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Update)]
|
||||
public int UpdateOne(課程報名 value)
|
||||
{
|
||||
using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required))
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeUpdateOne(value))
|
||||
return -1;
|
||||
|
||||
課程報名List oldValues = SelectOne(value.學員編號, 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 訓練課程編號 = @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, "DB_TRDAT", DateTime.UtcNow.AddHours(8));
|
||||
AddParam(cmdUpdate, "DB_TRUSR", CurrentUserId);
|
||||
AddParam(cmdUpdate, "original_學員編號", value.學員編號);
|
||||
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(string 學員編號, 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 訓練課程編號 = @訓練課程編號
|
||||
and DB_APPNO = @DB_APPNO
|
||||
";
|
||||
AddParam(cmdDelete, "學員編號", 學員編號);
|
||||
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.學員編號, 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 訓練課程編號 = @訓練課程編號
|
||||
and DB_APPNO = @DB_APPNO
|
||||
";
|
||||
AddParam(cmdDelete, "學員編號", value.學員編號);
|
||||
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(string 學員編號, int 訓練課程編號)
|
||||
{
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = "select count(1)" + _from + _where
|
||||
+ " and 學員編號 = @學員編號 "
|
||||
+ " and 訓練課程編號 = @訓練課程編號 "
|
||||
;
|
||||
AddParam(cmdSelect, "學員編號", 學員編號);
|
||||
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.GetString(reader[0]);
|
||||
newItem.訓練課程編號 = DAC.GetInt32(reader[1]);
|
||||
newItem.報名狀態 = DAC.GetString(reader[2]);
|
||||
newItem.報名日期 = DAC.GetDateTime(reader[3]);
|
||||
newItem.取消報名日期 = DAC.GetDateTime(reader[4]);
|
||||
newItem.通知發送狀態 = DAC.GetString(reader[5]);
|
||||
newItem.出席狀況 = DAC.GetString(reader[6]);
|
||||
newItem.請假事由 = DAC.GetString(reader[7]);
|
||||
newItem.DB_APPNO = DAC.GetInt32(reader[8]);
|
||||
newItem.DB_CRDAT = DAC.GetDateTime(reader[9]);
|
||||
newItem.DB_CRUSR = DAC.GetString(reader[10]);
|
||||
newItem.DB_TRDAT = DAC.GetDateTime(reader[11]);
|
||||
newItem.DB_TRUSR = DAC.GetString(reader[12]);
|
||||
Add(newItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 課程報名 資料紀錄類別
|
||||
///</summary>
|
||||
[Serializable]
|
||||
public partial class 課程報名 : DataItemBase
|
||||
{
|
||||
private string _學員編號;
|
||||
private int _訓練課程編號;
|
||||
private string _報名狀態;
|
||||
private DateTime _報名日期;
|
||||
private DateTime _取消報名日期;
|
||||
private string _通知發送狀態;
|
||||
private string _出席狀況;
|
||||
private string _請假事由;
|
||||
|
||||
#region 資料欄位
|
||||
///<summary>
|
||||
/// 學員編號
|
||||
///</summary>
|
||||
[DataObjectField(true, false, false, 10)]
|
||||
public string 學員編號
|
||||
{
|
||||
get
|
||||
{
|
||||
return _學員編號;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _學員編號)
|
||||
{
|
||||
_學員編號 = value;
|
||||
OnPropertyChanged("學員編號");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 訓練課程編號
|
||||
///</summary>
|
||||
[DataObjectField(true, false, false)]
|
||||
public int 訓練課程編號
|
||||
{
|
||||
get
|
||||
{
|
||||
return _訓練課程編號;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _訓練課程編號)
|
||||
{
|
||||
_訓練課程編號 = value;
|
||||
OnPropertyChanged("訓練課程編號");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 報名狀態
|
||||
/// Y = 指定為選修,已報名
|
||||
/// S = 指定為選修,但尚未報名
|
||||
/// R = 指定為必修(並且已報名),學員不可取消報名
|
||||
/// N = 被管理員取消必修或是選修
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 1)]
|
||||
public string 報名狀態
|
||||
{
|
||||
get
|
||||
{
|
||||
return _報名狀態;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _報名狀態)
|
||||
{
|
||||
_報名狀態 = value;
|
||||
OnPropertyChanged("報名狀態");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 報名日期
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public DateTime 報名日期
|
||||
{
|
||||
get
|
||||
{
|
||||
return _報名日期;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _報名日期)
|
||||
{
|
||||
_報名日期 = value;
|
||||
OnPropertyChanged("報名日期");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 取消報名日期
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public DateTime 取消報名日期
|
||||
{
|
||||
get
|
||||
{
|
||||
return _取消報名日期;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _取消報名日期)
|
||||
{
|
||||
_取消報名日期 = value;
|
||||
OnPropertyChanged("取消報名日期");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 通知發送狀態
|
||||
/// Y=已發送
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 1)]
|
||||
public string 通知發送狀態
|
||||
{
|
||||
get
|
||||
{
|
||||
return _通知發送狀態;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _通知發送狀態)
|
||||
{
|
||||
_通知發送狀態 = value;
|
||||
OnPropertyChanged("通知發送狀態");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 出席狀況
|
||||
/// Y=出席
|
||||
/// N=缺席
|
||||
/// L=請假
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 1)]
|
||||
public string 出席狀況
|
||||
{
|
||||
get
|
||||
{
|
||||
return _出席狀況;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _出席狀況)
|
||||
{
|
||||
_出席狀況 = value;
|
||||
OnPropertyChanged("出席狀況");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 請假事由
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 100)]
|
||||
public string 請假事由
|
||||
{
|
||||
get
|
||||
{
|
||||
return _請假事由;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _請假事由)
|
||||
{
|
||||
_請假事由 = value;
|
||||
OnPropertyChanged("請假事由");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,748 @@
|
||||
//
|
||||
// 這個檔案是 課程報名 資料表的資料存取類別 檔案二
|
||||
// 您可以修改這個檔案,加入您自訂的屬性與方法
|
||||
//
|
||||
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
|
||||
{
|
||||
#region 自動產生的資料存取方法
|
||||
///<summary>
|
||||
/// InsertOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查或是自動編號等動作
|
||||
/// 回傳 false 會打斷 InsertOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeInsertOne(課程報名 value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// InsertOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterInsertOne(課程報名 value)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// InsertOne 發生錯誤時會執行此方法
|
||||
///</summary>
|
||||
///<param name="handled">錯誤是否已經處理妥當</param>
|
||||
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>
|
||||
///<param name="handled">錯誤是否已經處理妥當</param>
|
||||
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(string 學員編號, int 訓練課程編號, int DB_APPNO)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterDeleteOne(string 學員編號, int 訓練課程編號, int DB_APPNO)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 發生錯誤時會執行此方法
|
||||
///</summary>
|
||||
///<param name="handled">錯誤是否已經處理妥當</param>
|
||||
protected virtual void OnDeleteOneError(Exception error, out bool handled)
|
||||
{
|
||||
handled = false;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public DataTable Select選課紀錄(string 學員編號, bool 僅已簽核, bool 僅必修, bool 僅已上課, bool 僅已出席)
|
||||
{
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText =
|
||||
@"select * from (
|
||||
select A.學員編號, A.訓練課程編號, A.報名狀態, A.報名日期, A.取消報名日期, A.出席狀況,
|
||||
(select count(1) from 學員出席 where 學員出席.訓練課程編號=A.訓練課程編號 and 學員出席.學員編號=A.學員編號) AS 出席次數,
|
||||
B.顯示編號, B.訓練名稱, B.訓練日期, B.訓練日期迄, B.取消報名截止期限,
|
||||
(select count(1) from 滿意度調查 C where A.訓練課程編號=C.訓練課程企劃編號 and A.學員編號=C.學員編號) as 填寫數,
|
||||
J.心得報告編號, J.上架 as 心得上架
|
||||
from 課程報名 A
|
||||
inner join 訓練課程企劃 B on A.訓練課程編號 = B.編號
|
||||
left outer join 心得報告 J on A.訓練課程編號=J.訓練課程企劃編號 and A.學員編號=J.學員編號
|
||||
where A.學員編號 = @學員編號";
|
||||
|
||||
if (僅已簽核)
|
||||
cmdSelect.CommandText +=
|
||||
@" and exists ( select 1 from 表單簽核主檔
|
||||
where 表單類別ID = N'課程企劃' and 表單ID = B.編號
|
||||
and 應簽關數 = 已簽關數
|
||||
and 應簽關數 <> 'D'
|
||||
and 最終結果 = 'Y' ) ";
|
||||
|
||||
if (僅已上課)
|
||||
cmdSelect.CommandText +=
|
||||
@" and B.訓練日期 <= GetDate() ";
|
||||
|
||||
cmdSelect.CommandText += " ) as TMP1 where 1=1 ";
|
||||
|
||||
if (僅已出席)
|
||||
cmdSelect.CommandText +=
|
||||
@" and (出席次數 > 0) or (出席狀況 is not null and 出席狀況 <> '') ";
|
||||
|
||||
cmdSelect.CommandText += " order by 訓練日期 desc";
|
||||
AddParam(cmdSelect, "學員編號", 學員編號);
|
||||
return Select(cmdSelect);
|
||||
}
|
||||
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public DataTable Select選課紀錄(int 訓練年度, string 計畫別, string 課程名稱, string 公司別)
|
||||
{
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText =
|
||||
@"select '外訓' AS 開課別, CONVERT(NVARCHAR(10), A.訓練年度) as 訓練日期, '' as 訓練日期迄,
|
||||
A.訓練名稱, A.訓練時數, A.員工編號, C.BPNME as 員工姓名,
|
||||
D.RAPYN AS 計畫年度編號,
|
||||
'【' + (SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BCUSZON' AND BSCLS=SUBSTRING(E.BPPYN,LEN(E.BPPYN)-5,1)) + '】' + E.BPPYM AS 計畫年度名稱,
|
||||
D.RABRH AS 站別編號, F.BSRMK AS 站別名稱,
|
||||
D.RAJNO AS 職務編號, G.BPJME AS 職務名稱,
|
||||
D.RACNO AS 等級編號, H.BPCME AS 等級名稱,
|
||||
1 as 填寫數
|
||||
from 外部受訓紀錄 A
|
||||
inner join BPSNView C on A.員工編號=C.BPENO
|
||||
left outer join RASN D on C.BPENO = D.RANUM and D.RAITM = (SELECT MAX(RASN.RAITM) FROM RASN WHERE RASN.RANUM=D.RANUM)
|
||||
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
|
||||
where 1=1 ";
|
||||
|
||||
if (訓練年度 > 0)
|
||||
{
|
||||
cmdSelect.CommandText += " and A.訓練年度 = @訓練年度 ";
|
||||
AddParam(cmdSelect, "訓練年度", 訓練年度);
|
||||
}
|
||||
|
||||
if (計畫別 != null && 計畫別.Length > 0)
|
||||
{
|
||||
cmdSelect.CommandText += " and D.RAPYN = @計畫別 ";
|
||||
}
|
||||
|
||||
if (課程名稱 != null && 課程名稱.Length > 0)
|
||||
{
|
||||
cmdSelect.CommandText += " and A.訓練名稱 like @課程名稱 ";
|
||||
}
|
||||
|
||||
cmdSelect.CommandText +=
|
||||
@"
|
||||
union all
|
||||
select '內訓' AS 開課別, CONVERT(NVARCHAR(10), B.訓練日期, 120) as 訓練日期, CONVERT(NVARCHAR(10), B.訓練日期迄, 120) as 訓練日期迄,
|
||||
B.訓練名稱, B.訓練時數, A.學員編號 as 員工編號, C.BPNME as 學員姓名,
|
||||
D.RAPYN AS 計畫年度編號,
|
||||
'【' + (SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BCUSZON' AND BSCLS=SUBSTRING(E.BPPYN,LEN(E.BPPYN)-5,1)) + '】' + E.BPPYM AS 計畫年度名稱,
|
||||
D.RABRH AS 站別編號, F.BSRMK AS 站別名稱,
|
||||
D.RAJNO AS 職務編號, G.BPJME AS 職務名稱,
|
||||
D.RACNO AS 等級編號, H.BPCME AS 等級名稱,
|
||||
(select count(1) from 滿意度調查 I where A.訓練課程編號=I.訓練課程企劃編號 and A.學員編號=I.學員編號) as 填寫數
|
||||
from 課程報名 A
|
||||
inner join 訓練課程企劃 B on A.訓練課程編號 = B.編號
|
||||
inner join BPSNView C on A.學員編號=C.BPENO
|
||||
left outer join RASN D on C.BPENO = D.RANUM and D.RAITM = (SELECT MAX(RASN.RAITM) FROM RASN WHERE RASN.RANUM=D.RANUM)
|
||||
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
|
||||
where exists ( select 1 from 表單簽核主檔
|
||||
where 表單類別ID = N'課程企劃' and 表單ID = B.編號
|
||||
and 應簽關數 = 已簽關數
|
||||
and 應簽關數 <> 'D'
|
||||
and 最終結果 = 'Y' )
|
||||
and B.公司別=@公司別 ";
|
||||
|
||||
if (訓練年度 > 0)
|
||||
{
|
||||
cmdSelect.CommandText += " and B.訓練日期 >= @訓練日期1 and B.訓練日期 < @訓練日期2 ";
|
||||
AddParam(cmdSelect, "訓練日期1", new DateTime(訓練年度, 1, 1));
|
||||
AddParam(cmdSelect, "訓練日期2", new DateTime(訓練年度 + 1, 1, 1));
|
||||
}
|
||||
|
||||
if (計畫別 != null && 計畫別.Length > 0)
|
||||
{
|
||||
cmdSelect.CommandText += " and D.RAPYN = @計畫別 ";
|
||||
}
|
||||
|
||||
if (課程名稱 != null && 課程名稱.Length > 0)
|
||||
{
|
||||
cmdSelect.CommandText += " and B.訓練名稱 like @課程名稱 ";
|
||||
}
|
||||
|
||||
cmdSelect.CommandText += " order by 訓練日期 desc";
|
||||
|
||||
AddParam(cmdSelect, "公司別", 公司別);
|
||||
AddParam(cmdSelect, "計畫別", 計畫別);
|
||||
AddParam(cmdSelect, "課程名稱", "%" + 課程名稱 + "%");
|
||||
|
||||
return Select(cmdSelect);
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public DataTable Select缺席紀錄(int 年度, string 計畫別, string 訓練名稱, string 公司別, List<string> 訓練企劃編號, List<string> 計畫年度編號)
|
||||
{
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText =
|
||||
@"select A.學員編號, C.BPNME as 學員姓名, A.訓練課程編號, A.報名狀態, A.報名日期, A.取消報名日期, A.出席狀況, A.請假事由,
|
||||
B.顯示編號, B.訓練名稱, B.訓練日期, B.訓練日期迄, B.取消報名截止期限, B.計畫別,
|
||||
D.RAPYN AS 計畫年度編號,
|
||||
'【' + (SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BCUSZON' AND BSCLS=SUBSTRING(E.BPPYN,LEN(E.BPPYN)-5,1)) + '】' + E.BPPYM AS 計畫年度名稱,
|
||||
D.RABRH AS 站別編號, F.BSRMK AS 站別名稱,
|
||||
D.RAJNO AS 職務編號, G.BPJME AS 職務名稱,
|
||||
D.RACNO AS 等級編號, H.BPCME AS 等級名稱,
|
||||
|
||||
(select count(1) from 滿意度調查 C where A.訓練課程編號=C.訓練課程企劃編號 and A.學員編號=C.學員編號) as 填寫數,
|
||||
J.心得報告編號, J.上架 as 心得上架
|
||||
from 課程報名 A
|
||||
inner join 訓練課程企劃 B on A.訓練課程編號 = B.編號
|
||||
inner join BPSNView C on A.學員編號=C.BPENO
|
||||
left outer join RASN D on C.BPENO = D.RANUM and D.RAITM = (SELECT MAX(RASN.RAITM) FROM RASN WHERE RASN.RANUM=D.RANUM)
|
||||
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 心得報告 J on A.訓練課程編號=J.訓練課程企劃編號 and A.學員編號=J.學員編號
|
||||
where exists ( select 1 from 表單簽核主檔
|
||||
where 表單類別ID = N'課程企劃' and 表單ID = B.編號
|
||||
and 應簽關數 = 已簽關數
|
||||
and 應簽關數 <> 'D'
|
||||
and 最終結果 = 'Y' )
|
||||
and (SELECT COUNT(1) FROM 學員出席 K WHERE A.訓練課程編號=K.訓練課程編號 and A.學員編號=K.學員編號 AND K.出席狀況='Y') = 0 ";
|
||||
|
||||
if (年度 > 0)
|
||||
{
|
||||
cmdSelect.CommandText += " and B.訓練日期 >= @訓練日期1 and B.訓練日期 < @訓練日期2 ";
|
||||
AddParam(cmdSelect, "訓練日期1", new DateTime(年度, 1, 1));
|
||||
AddParam(cmdSelect, "訓練日期2", new DateTime(年度 + 1, 1, 1));
|
||||
}
|
||||
|
||||
if (計畫別 != null && 計畫別.Length > 0)
|
||||
{
|
||||
cmdSelect.CommandText += " and B.計畫別 = @計畫別 ";
|
||||
AddParam(cmdSelect, "計畫別", 計畫別);
|
||||
}
|
||||
|
||||
if (訓練名稱 != null && 訓練名稱.Length > 0)
|
||||
{
|
||||
cmdSelect.CommandText += " and B.訓練名稱 like @訓練名稱 ";
|
||||
AddParam(cmdSelect, "訓練名稱", "%" + 訓練名稱 + "%");
|
||||
}
|
||||
|
||||
if (公司別 != null && 公司別.Length > 0)
|
||||
{
|
||||
cmdSelect.CommandText += " and B.公司別 = @公司別 ";
|
||||
AddParam(cmdSelect, "公司別", 公司別);
|
||||
}
|
||||
|
||||
if (訓練企劃編號 != null && 訓練企劃編號.Count > 0)
|
||||
{
|
||||
cmdSelect.CommandText += " and B.編號 in (" + String.Join(",", 訓練企劃編號.ToArray()) + ")";
|
||||
}
|
||||
|
||||
if (計畫年度編號 != null && 計畫年度編號.Count > 0)
|
||||
{
|
||||
cmdSelect.CommandText += " and D.RAPYN in (" + String.Join(",", 計畫年度編號.ToArray()) + ")";
|
||||
}
|
||||
|
||||
cmdSelect.CommandText += " order by B.訓練日期 desc";
|
||||
|
||||
return Select(cmdSelect);
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public DataTable Select確定報名學員名單(int 訓練課程編號, string 計畫年度編號 = "")
|
||||
{
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText =
|
||||
@"select A.學員編號, C.BPNME as 學員姓名, C.BPEML as 電子郵件, A.訓練課程編號,
|
||||
A.報名狀態, A.報名日期, A.取消報名日期, A.出席狀況, A.請假事由, A.通知發送狀態,
|
||||
B.顯示編號, B.訓練名稱, B.訓練日期, B.訓練日期迄, B.取消報名截止期限,
|
||||
D.RAPYN AS 計畫年度編號,
|
||||
'【' + (SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BCUSZON' AND BSCLS=SUBSTRING(E.BPPYN,LEN(E.BPPYN)-5,1)) + '】' + E.BPPYM AS 計畫年度名稱,
|
||||
D.RABRH AS 站別編號, F.BSRMK AS 站別名稱,
|
||||
D.RAJNO AS 職務編號, G.BPJME AS 職務名稱,
|
||||
D.RACNO AS 等級編號, H.BPCME AS 等級名稱,
|
||||
(select count(1) from 滿意度調查 I where A.訓練課程編號=I.訓練課程企劃編號 and A.學員編號=I.學員編號) as 填寫數,
|
||||
J.心得報告編號, J.上架 as 心得上架
|
||||
from 課程報名 A
|
||||
inner join 訓練課程企劃 B on A.訓練課程編號 = B.編號
|
||||
inner join BPSNView C on A.學員編號=C.BPENO
|
||||
left outer join RASN D on C.BPENO = D.RANUM and D.RAITM = (SELECT MAX(RASN.RAITM) FROM RASN WHERE RASN.RANUM=D.RANUM)
|
||||
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 心得報告 J on A.訓練課程編號=J.訓練課程企劃編號 and A.學員編號=J.學員編號
|
||||
where A.訓練課程編號 = @訓練課程編號
|
||||
and (A.報名狀態 = 'Y' or A.報名狀態 = 'R') ";
|
||||
AddParam(cmdSelect, "訓練課程編號", 訓練課程編號);
|
||||
|
||||
if (計畫年度編號 != null && 計畫年度編號.Length > 0)
|
||||
{
|
||||
cmdSelect.CommandText += " and D.RAPYN = @計畫年度編號 ";
|
||||
AddParam(cmdSelect, "計畫年度編號", 計畫年度編號);
|
||||
}
|
||||
cmdSelect.CommandText += " order by 計畫年度編號, 站別編號, 職務編號, 等級編號, A.學員編號";
|
||||
return Select(cmdSelect);
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public DataTable Select效益追蹤名單(int 訓練課程編號, string 站別編號)
|
||||
{
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText =
|
||||
@"select A.學員編號, C.BPNME as 學員姓名, C.BPEML as 電子郵件, A.訓練課程編號,
|
||||
A.報名狀態, A.報名日期, A.取消報名日期, A.出席狀況, A.請假事由, A.通知發送狀態,
|
||||
B.顯示編號, B.訓練名稱, B.訓練日期, B.訓練日期迄, B.取消報名截止期限,
|
||||
D.RAPYN AS 計畫年度編號,
|
||||
'【' + (SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BCUSZON' AND BSCLS=SUBSTRING(E.BPPYN,LEN(E.BPPYN)-5,1)) + '】' + E.BPPYM AS 計畫年度名稱,
|
||||
D.RABRH AS 站別編號, F.BSRMK AS 站別名稱,
|
||||
D.RAJNO AS 職務編號, G.BPJME AS 職務名稱,
|
||||
D.RACNO AS 等級編號, H.BPCME AS 等級名稱,
|
||||
(select count(1) from 滿意度調查 I where A.訓練課程編號=I.訓練課程企劃編號 and A.學員編號=I.學員編號) as 填寫數,
|
||||
J.心得報告編號, J.上架 as 心得上架
|
||||
from 課程報名 A
|
||||
inner join 訓練課程企劃 B on A.訓練課程編號 = B.編號
|
||||
inner join BPSNView C on A.學員編號=C.BPENO
|
||||
left outer join RASN D on C.BPENO = D.RANUM and D.RAITM = (SELECT MAX(RASN.RAITM) FROM RASN WHERE RASN.RANUM=D.RANUM)
|
||||
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 心得報告 J on A.訓練課程編號=J.訓練課程企劃編號 and A.學員編號=J.學員編號
|
||||
where A.訓練課程編號 = @訓練課程編號
|
||||
and (A.報名狀態 = 'Y' or A.報名狀態 = 'R')
|
||||
and (SELECT COUNT(1) FROM 學員出席 K WHERE A.訓練課程編號=K.訓練課程編號 and A.學員編號=K.學員編號 AND K.出席狀況='Y') > 0";
|
||||
AddParam(cmdSelect, "訓練課程編號", 訓練課程編號);
|
||||
|
||||
if (站別編號 != null && 站別編號.Length > 0)
|
||||
{
|
||||
string[] IDs = 站別編號.Split('|');
|
||||
if (IDs.Length > 1)
|
||||
{
|
||||
// 部門
|
||||
if (IDs[0] == "A")
|
||||
{
|
||||
string str組織 = "";
|
||||
|
||||
DAC_組織圖 Dao組織圖 = new DAC_組織圖(conn);
|
||||
組織圖List d = Dao組織圖.Select子樹(1, DAC.GetInt32(IDs[1]));
|
||||
foreach (組織圖 item in d)
|
||||
{
|
||||
str組織 += String.Format("{0},", item.組織ID);
|
||||
}
|
||||
if (str組織.Length > 0)
|
||||
{
|
||||
str組織 = str組織.Remove(str組織.Length - 1);
|
||||
cmdSelect.CommandText += " and exists (select 1 from 組織人員 X where A.學員編號=X.人員ID and X.組織ID IN (" + str組織 + ") ) ";
|
||||
}
|
||||
}
|
||||
// 站別
|
||||
else
|
||||
{
|
||||
cmdSelect.CommandText += " and D.RABRH = @站別編號 ";
|
||||
AddParam(cmdSelect, "站別編號", IDs[1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// cmdSelect.CommandText += " order by 計畫年度編號, 站別編號, 職務編號, 等級編號, A.學員編號";
|
||||
cmdSelect.CommandText += " order by A.學員編號";
|
||||
|
||||
return Select(cmdSelect);
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public DataTable Select選課狀況(int 訓練課程編號, bool 必修)
|
||||
{
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText =
|
||||
@"select A.學員編號, C.BPNME as 學員姓名, C.BPEML as 電子郵件, A.訓練課程編號,
|
||||
A.報名狀態, A.報名日期, A.取消報名日期, A.出席狀況, A.請假事由, A.通知發送狀態,
|
||||
B.顯示編號, B.訓練名稱, B.訓練日期, B.訓練日期迄, B.取消報名截止期限,
|
||||
D.RAPYN AS 計畫年度編號,
|
||||
'【' + (SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BCUSZON' AND BSCLS=SUBSTRING(E.BPPYN,LEN(E.BPPYN)-5,1)) + '】' + E.BPPYM AS 計畫年度名稱,
|
||||
D.RABRH AS 站別編號, F.BSRMK AS 站別名稱,
|
||||
D.RAJNO AS 職務編號, G.BPJME AS 職務名稱,
|
||||
D.RACNO AS 等級編號, H.BPCME AS 等級名稱
|
||||
from 課程報名 A
|
||||
inner join 訓練課程企劃 B on A.訓練課程編號 = B.編號
|
||||
inner join BPSNView C on A.學員編號=C.BPENO
|
||||
left outer join RASN D on C.BPENO = D.RANUM and D.RAITM = (SELECT MAX(RASN.RAITM) FROM RASN WHERE RASN.RANUM=D.RANUM)
|
||||
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 心得報告 J on A.訓練課程編號=J.訓練課程企劃編號 and A.學員編號=J.學員編號
|
||||
where A.訓練課程編號 = @訓練課程編號";
|
||||
if (必修)
|
||||
cmdSelect.CommandText += " and A.報名狀態 = 'R' ";
|
||||
else
|
||||
cmdSelect.CommandText += " and A.報名狀態 <> 'R' AND A.報名狀態 <> 'N' ";
|
||||
AddParam(cmdSelect, "訓練課程編號", 訓練課程編號);
|
||||
|
||||
cmdSelect.CommandText += " order by A.學員編號";
|
||||
return Select(cmdSelect);
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public DataTable Select確定報名學員計畫(int 訓練課程編號)
|
||||
{
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText =
|
||||
@"select distinct 計畫年度編號, ISNULL('【' + I.BSSCR + '】', '') + 計畫年度名稱 as 計畫年度名稱 from
|
||||
(select A.學員編號, C.BPNME as 學員姓名, C.BPEML as 電子郵件, A.訓練課程編號,
|
||||
A.報名狀態, A.報名日期, A.取消報名日期, A.出席狀況, A.請假事由, A.通知發送狀態,
|
||||
B.顯示編號, B.訓練名稱, B.訓練日期, B.訓練日期迄, B.取消報名截止期限,
|
||||
D.RAPYN AS 計畫年度編號, E.BPPYM AS 計畫年度名稱,
|
||||
D.RABRH AS 站別編號, F.BSRMK AS 站別名稱,
|
||||
D.RAJNO AS 職務編號, G.BPJME AS 職務名稱,
|
||||
D.RACNO AS 等級編號, H.BPCME AS 等級名稱
|
||||
from 課程報名 A
|
||||
inner join 訓練課程企劃 B on A.訓練課程編號 = B.編號
|
||||
inner join BPSNView C on A.學員編號=C.BPENO
|
||||
left outer join RASN D on C.BPENO = D.RANUM and D.RAITM = (SELECT MAX(RASN.RAITM) FROM RASN WHERE RASN.RANUM=D.RANUM)
|
||||
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
|
||||
where A.訓練課程編號 = @訓練課程編號
|
||||
and (A.報名狀態 = 'Y' or A.報名狀態 = 'R')) as tmp1
|
||||
left outer join BCLS I on I.BSCLS = SUBSTRING(計畫年度編號, LEN(計畫年度編號)-5,1) and I.BSPAR = 'BCUSZON'
|
||||
order by 計畫年度編號";
|
||||
AddParam(cmdSelect, "訓練課程編號", 訓練課程編號);
|
||||
return Select(cmdSelect);
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public DataTable Select必修學員(int 訓練課程編號)
|
||||
{
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText =
|
||||
@"select A.學員編號, A.學員編號 + ' ' + B.BPNME as 學員姓名
|
||||
from 課程報名 A
|
||||
inner join BPSNView B on A.學員編號=B.BPENO
|
||||
where A.訓練課程編號 = @訓練課程編號
|
||||
and A.報名狀態 = 'R'
|
||||
order by A.學員編號";
|
||||
AddParam(cmdSelect, "訓練課程編號", 訓練課程編號);
|
||||
return Select(cmdSelect);
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public DataTable Select選修學員(int 訓練課程編號)
|
||||
{
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText =
|
||||
@"select A.學員編號, A.學員編號 + ' ' + B.BPNME as 學員姓名
|
||||
from 課程報名 A
|
||||
inner join BPSNView B on A.學員編號=B.BPENO
|
||||
where A.訓練課程編號 = @訓練課程編號
|
||||
and (A.報名狀態 = 'S' or A.報名狀態 = 'Y')
|
||||
order by A.學員編號";
|
||||
AddParam(cmdSelect, "訓練課程編號", 訓練課程編號);
|
||||
return Select(cmdSelect);
|
||||
}
|
||||
|
||||
public int Get報名人數(int 訓練課程編號)
|
||||
{
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText =
|
||||
@"select count(1) from 課程報名
|
||||
where 訓練課程編號 = @訓練課程編號
|
||||
and (報名狀態 = 'Y' or 報名狀態 = 'R')";
|
||||
AddParam(cmdSelect, "訓練課程編號", 訓練課程編號);
|
||||
int i;
|
||||
ExecuteScalar(cmdSelect, out i);
|
||||
return i;
|
||||
}
|
||||
|
||||
/*
|
||||
public int Get出席人數(int 訓練課程編號)
|
||||
{
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText =
|
||||
@"select count(1) from 課程報名
|
||||
where 訓練課程編號 = @訓練課程編號
|
||||
and (報名狀態 = 'Y' or 報名狀態 = 'R') and 出席狀況='Y'";
|
||||
AddParam(cmdSelect, "訓練課程編號", 訓練課程編號);
|
||||
int i;
|
||||
ExecuteScalar(cmdSelect, out i);
|
||||
return i;
|
||||
}
|
||||
*/
|
||||
|
||||
public int Get出席人數(int 訓練課程編號)
|
||||
{
|
||||
return new DAC_學員出席(conn).Get出席人次(訓練課程編號);
|
||||
}
|
||||
|
||||
public decimal Get出席率(int 訓練課程編號)
|
||||
{
|
||||
// 出席率 = 出席人次 / 報名人數 * 課程天數
|
||||
|
||||
if (訓練課程編號 == 0)
|
||||
return 0;
|
||||
|
||||
int 出席人次 = new DAC_學員出席(conn).Get出席人次(訓練課程編號);
|
||||
int 報名人數 = Get報名人數(訓練課程編號);
|
||||
int 課程天數 = new DAC_訓練課程內容(conn).Select訓練日期List(訓練課程編號).Count;
|
||||
if (課程天數 == 0 || 報名人數 == 0)
|
||||
return 0;
|
||||
else
|
||||
return (decimal)出席人次 / ((decimal)報名人數 * (decimal)課程天數) * 100m;
|
||||
|
||||
/*
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText =
|
||||
@"declare @totalcount int
|
||||
select @totalcount = count(1) from 課程報名
|
||||
where 訓練課程編號 = @訓練課程編號
|
||||
and (報名狀態 = 'Y' or 報名狀態 = 'R')
|
||||
|
||||
if @totalcount > 0
|
||||
select
|
||||
cast((select count(1) from 課程報名
|
||||
where 訓練課程編號 = @訓練課程編號
|
||||
and (報名狀態 = 'Y' or 報名狀態 = 'R') and 出席狀況='Y') as float)
|
||||
/
|
||||
cast((select count(1) from 課程報名
|
||||
where 訓練課程編號 = @訓練課程編號
|
||||
and (報名狀態 = 'Y' or 報名狀態 = 'R')) as float) * 100
|
||||
else
|
||||
select 0";
|
||||
AddParam(cmdSelect, "訓練課程編號", 訓練課程編號);
|
||||
decimal i;
|
||||
ExecuteScalar(cmdSelect, out i);
|
||||
return i;
|
||||
*/
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取得某學員是否報名某課程
|
||||
/// </summary>
|
||||
public string Get報名狀態(string 學員編號, int 訓練課程編號)
|
||||
{
|
||||
課程報名List d = SelectOne(學員編號, 訓練課程編號);
|
||||
if (d.Count == 0)
|
||||
return "";
|
||||
return d[0].報名狀態;
|
||||
}
|
||||
|
||||
public void 必修(string 學員編號, int 訓練課程編號, string userId)
|
||||
{
|
||||
課程報名List values = SelectOne(學員編號, 訓練課程編號);
|
||||
if (values.Count == 0)
|
||||
{
|
||||
課程報名 newValue = new 課程報名();
|
||||
newValue.學員編號 = 學員編號;
|
||||
newValue.訓練課程編號 = 訓練課程編號;
|
||||
newValue.報名日期 = DateTime.UtcNow.AddHours(8);
|
||||
newValue.報名狀態 = "R";
|
||||
newValue.DB_CRUSR = userId;
|
||||
InsertOne(newValue);
|
||||
}
|
||||
else
|
||||
{
|
||||
// 已經是必修或是選修,不管他
|
||||
if (values[0].報名狀態 == "R" || values[0].報名狀態 == "Y" || values[0].報名狀態 == "S")
|
||||
return;
|
||||
|
||||
values[0].報名日期 = DateTime.UtcNow.AddHours(8);
|
||||
values[0].取消報名日期 = new DateTime();
|
||||
values[0].報名狀態 = "R";
|
||||
values[0].DB_TRUSR = userId;
|
||||
UpdateOne(values[0]);
|
||||
}
|
||||
}
|
||||
|
||||
public void 取消必修(string 學員編號, int 訓練課程編號, string userId)
|
||||
{
|
||||
課程報名List values = SelectOne(學員編號, 訓練課程編號);
|
||||
if (values.Count > 0 && values[0].報名狀態 == "R")
|
||||
{
|
||||
values[0].報名日期 = DateTime.UtcNow.AddHours(8);
|
||||
values[0].取消報名日期 = new DateTime();
|
||||
values[0].報名狀態 = "N";
|
||||
values[0].DB_TRUSR = userId;
|
||||
UpdateOne(values[0]);
|
||||
}
|
||||
}
|
||||
|
||||
public void 選修(string 學員編號, int 訓練課程編號, string userId)
|
||||
{
|
||||
課程報名List values = SelectOne(學員編號, 訓練課程編號);
|
||||
if (values.Count == 0)
|
||||
{
|
||||
課程報名 newValue = new 課程報名();
|
||||
newValue.學員編號 = 學員編號;
|
||||
newValue.訓練課程編號 = 訓練課程編號;
|
||||
newValue.報名日期 = DateTime.UtcNow.AddHours(8);
|
||||
newValue.報名狀態 = "S";
|
||||
newValue.DB_CRUSR = userId;
|
||||
InsertOne(newValue);
|
||||
}
|
||||
else
|
||||
{
|
||||
// 已經是必修或是選修,不管他
|
||||
if (values[0].報名狀態 == "R" || values[0].報名狀態 == "Y" || values[0].報名狀態 == "S")
|
||||
return;
|
||||
|
||||
values[0].報名日期 = DateTime.UtcNow.AddHours(8);
|
||||
values[0].取消報名日期 = new DateTime();
|
||||
values[0].報名狀態 = "S";
|
||||
values[0].DB_TRUSR = userId;
|
||||
UpdateOne(values[0]);
|
||||
}
|
||||
}
|
||||
|
||||
public void 取消選修(string 學員編號, int 訓練課程編號, string userId)
|
||||
{
|
||||
課程報名List values = SelectOne(學員編號, 訓練課程編號);
|
||||
if (values.Count > 0 && (values[0].報名狀態 == "S" || values[0].報名狀態 == "Y"))
|
||||
{
|
||||
values[0].報名日期 = DateTime.UtcNow.AddHours(8);
|
||||
values[0].取消報名日期 = new DateTime();
|
||||
values[0].報名狀態 = "N";
|
||||
values[0].DB_TRUSR = userId;
|
||||
UpdateOne(values[0]);
|
||||
}
|
||||
}
|
||||
|
||||
public void 選修報名(string 學員編號, int 訓練課程編號, string userId)
|
||||
{
|
||||
課程報名List values = SelectOne(學員編號, 訓練課程編號);
|
||||
if (values.Count > 0 && values[0].報名狀態 == "S")
|
||||
{
|
||||
values[0].報名日期 = DateTime.UtcNow.AddHours(8);
|
||||
values[0].取消報名日期 = new DateTime();
|
||||
values[0].報名狀態 = "Y";
|
||||
values[0].DB_TRUSR = userId;
|
||||
UpdateOne(values[0]);
|
||||
}
|
||||
}
|
||||
|
||||
public void 取消報名(string 學員編號, int 訓練課程編號, string userId)
|
||||
{
|
||||
課程報名List values = SelectOne(學員編號, 訓練課程編號);
|
||||
if (values.Count > 0 && values[0].報名狀態 == "Y")
|
||||
{
|
||||
values[0].報名日期 = new DateTime();
|
||||
values[0].取消報名日期 = DateTime.UtcNow.AddHours(8);
|
||||
values[0].報名狀態 = "S";
|
||||
values[0].DB_TRUSR = userId;
|
||||
UpdateOne(values[0]);
|
||||
}
|
||||
}
|
||||
|
||||
public void 標記已發送學員通知(string 學員編號, int 訓練課程編號, string UserId)
|
||||
{
|
||||
課程報名List values = SelectOne(學員編號, 訓練課程編號);
|
||||
if (values.Count > 0)
|
||||
{
|
||||
values[0].通知發送狀態 = "Y";
|
||||
values[0].DB_TRUSR = UserId;
|
||||
UpdateOne(values[0]);
|
||||
}
|
||||
}
|
||||
|
||||
public void Update出席狀況(string 學員編號, int 訓練課程編號, string 出席狀況, string 請假事由, string UserId)
|
||||
{
|
||||
課程報名List values = SelectOne(學員編號, 訓練課程編號);
|
||||
if (values.Count > 0)
|
||||
{
|
||||
values[0].出席狀況 = 出席狀況;
|
||||
values[0].請假事由 = 請假事由;
|
||||
values[0].DB_TRUSR = UserId;
|
||||
UpdateOne(values[0]);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 課程報名 資料集合類別
|
||||
///</summary>
|
||||
public partial class 課程報名List : List<課程報名>
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 課程報名 資料紀錄類別
|
||||
///</summary>
|
||||
public partial class 課程報名
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user