chore: 首次簽入 Thinkyu ASP.NET 專案
- 加入 Visual Studio / ASP.NET .gitignore - 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
This commit is contained in:
@@ -0,0 +1,400 @@
|
||||
//
|
||||
// 這個檔案是 場地異動 資料表的資料存取類別 檔案一
|
||||
// 請不要修改這個檔案,重新產生資料存取類別時,這個檔案會被覆蓋掉
|
||||
//
|
||||
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 課程企劃編號, 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, "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 課程企劃編號, 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(int 課程企劃編號, 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.GetInt32(reader[0]);
|
||||
newItem.異動次數 = DAC.GetInt32(reader[1]);
|
||||
newItem.異動日期 = DAC.GetDateTime(reader[2]);
|
||||
newItem.場地編號 = DAC.GetInt32(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 int _課程企劃編號;
|
||||
private int _異動次數;
|
||||
private DateTime _異動日期;
|
||||
private int _場地編號;
|
||||
private string _場地名稱;
|
||||
|
||||
#region 資料欄位
|
||||
///<summary>
|
||||
/// 課程企劃編號
|
||||
///</summary>
|
||||
[DataObjectField(true, false, false)]
|
||||
public int 課程企劃編號
|
||||
{
|
||||
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(false, false, true)]
|
||||
public DateTime 異動日期
|
||||
{
|
||||
get
|
||||
{
|
||||
return _異動日期;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _異動日期)
|
||||
{
|
||||
_異動日期 = value;
|
||||
OnPropertyChanged("異動日期");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 場地編號
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public int 場地編號
|
||||
{
|
||||
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,179 @@
|
||||
//
|
||||
// 這個檔案是 場地異動 資料表的資料存取類別 檔案二
|
||||
// 您可以修改這個檔案,加入您自訂的屬性與方法
|
||||
//
|
||||
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)
|
||||
{
|
||||
value.異動日期 = DateTime.UtcNow.AddHours(8);
|
||||
value.異動次數 = Next異動次數(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 課程企劃編號, int 異動次數, int DB_APPNO)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterDeleteOne(int 課程企劃編號, int 異動次數, int DB_APPNO)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 發生錯誤時會執行此方法
|
||||
///</summary>
|
||||
///<param name="handled">錯誤是否已經處理妥當</param>
|
||||
protected virtual void OnDeleteOneError(Exception error, out bool handled)
|
||||
{
|
||||
handled = false;
|
||||
}
|
||||
|
||||
#endregion
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
private int Next異動次數(int 課程企劃編號)
|
||||
{
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = "select isnull(max(異動次數), 0) + 1 from " + _tableName
|
||||
+ " where 課程企劃編號 = @課程企劃編號 "
|
||||
;
|
||||
AddParam(cmdSelect, "課程企劃編號", 課程企劃編號);
|
||||
int i;
|
||||
ExecuteScalar(cmdSelect, out i);
|
||||
return i;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public 場地異動List Select異動(int 課程企劃編號)
|
||||
{
|
||||
場地異動List result = new 場地異動List();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where
|
||||
+ " and 課程企劃編號 = @課程企劃編號 "
|
||||
+ " order by 異動次數 "
|
||||
;
|
||||
AddParam(cmdSelect, "課程企劃編號", 課程企劃編號);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public 場地異動List Select最後異動(int 課程企劃編號)
|
||||
{
|
||||
場地異動List result = new 場地異動List();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = "select top 1 " + _insert + _from + _where
|
||||
+ " and 課程企劃編號 = @課程企劃編號 "
|
||||
+ " order by 異動次數 desc"
|
||||
;
|
||||
AddParam(cmdSelect, "課程企劃編號", 課程企劃編號);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 場地異動 資料集合類別
|
||||
///</summary>
|
||||
public partial class 場地異動List : List<場地異動>
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 場地異動 資料紀錄類別
|
||||
///</summary>
|
||||
public partial class 場地異動
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,969 @@
|
||||
//
|
||||
// 這個檔案是 場地遴選 資料表的資料存取類別 檔案一
|
||||
// 請不要修改這個檔案,重新產生資料存取類別時,這個檔案會被覆蓋掉
|
||||
//
|
||||
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 課程企劃編號, 場地編號_A, 場地名稱_A, 安全舒適_A, 空間大小_A, 價格合理_A, 交通便利_A, 設備完善_A, 合計_A, 場地編號_B, 場地名稱_B, 安全舒適_B, 空間大小_B, 價格合理_B, 交通便利_B, 設備完善_B, 合計_B, 場地編號_C, 場地名稱_C, 安全舒適_C, 空間大小_C, 價格合理_C, 交通便利_C, 設備完善_C, 合計_C, 總評, 備註, 選定場地, DB_APPNO, DB_CRDAT, DB_CRUSR, DB_TRDAT, DB_TRUSR";
|
||||
private string _insert = "課程企劃編號, 場地編號_A, 場地名稱_A, 安全舒適_A, 空間大小_A, 價格合理_A, 交通便利_A, 設備完善_A, 合計_A, 場地編號_B, 場地名稱_B, 安全舒適_B, 空間大小_B, 價格合理_B, 交通便利_B, 設備完善_B, 合計_B, 場地編號_C, 場地名稱_C, 安全舒適_C, 空間大小_C, 價格合理_C, 交通便利_C, 設備完善_C, 合計_C, 總評, 備註, 選定場地, DB_APPNO, DB_CRDAT, DB_CRUSR, DB_TRDAT, DB_TRUSR";
|
||||
private string _insertValue = "@課程企劃編號, @場地編號_A, @場地名稱_A, @安全舒適_A, @空間大小_A, @價格合理_A, @交通便利_A, @設備完善_A, @合計_A, @場地編號_B, @場地名稱_B, @安全舒適_B, @空間大小_B, @價格合理_B, @交通便利_B, @設備完善_B, @合計_B, @場地編號_C, @場地名稱_C, @安全舒適_C, @空間大小_C, @價格合理_C, @交通便利_C, @設備完善_C, @合計_C, @總評, @備註, @選定場地, @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 課程企劃編號)
|
||||
{
|
||||
場地遴選List result = new 場地遴選List();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where
|
||||
+ " and 課程企劃編號 = @課程企劃編號 "
|
||||
;
|
||||
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, "場地編號_A", value.場地編號_A);
|
||||
AddParam(cmdInsert, "場地名稱_A", value.場地名稱_A);
|
||||
AddParam(cmdInsert, "安全舒適_A", value.安全舒適_A);
|
||||
AddParam(cmdInsert, "空間大小_A", value.空間大小_A);
|
||||
AddParam(cmdInsert, "價格合理_A", value.價格合理_A);
|
||||
AddParam(cmdInsert, "交通便利_A", value.交通便利_A);
|
||||
AddParam(cmdInsert, "設備完善_A", value.設備完善_A);
|
||||
AddParam(cmdInsert, "合計_A", value.合計_A);
|
||||
AddParam(cmdInsert, "場地編號_B", value.場地編號_B);
|
||||
AddParam(cmdInsert, "場地名稱_B", value.場地名稱_B);
|
||||
AddParam(cmdInsert, "安全舒適_B", value.安全舒適_B);
|
||||
AddParam(cmdInsert, "空間大小_B", value.空間大小_B);
|
||||
AddParam(cmdInsert, "價格合理_B", value.價格合理_B);
|
||||
AddParam(cmdInsert, "交通便利_B", value.交通便利_B);
|
||||
AddParam(cmdInsert, "設備完善_B", value.設備完善_B);
|
||||
AddParam(cmdInsert, "合計_B", value.合計_B);
|
||||
AddParam(cmdInsert, "場地編號_C", value.場地編號_C);
|
||||
AddParam(cmdInsert, "場地名稱_C", value.場地名稱_C);
|
||||
AddParam(cmdInsert, "安全舒適_C", value.安全舒適_C);
|
||||
AddParam(cmdInsert, "空間大小_C", value.空間大小_C);
|
||||
AddParam(cmdInsert, "價格合理_C", value.價格合理_C);
|
||||
AddParam(cmdInsert, "交通便利_C", value.交通便利_C);
|
||||
AddParam(cmdInsert, "設備完善_C", value.設備完善_C);
|
||||
AddParam(cmdInsert, "合計_C", value.合計_C);
|
||||
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.課程企劃編號);
|
||||
if (oldValues.Count == 0 || oldValues[0].DB_APPNO != value.DB_APPNO)
|
||||
{
|
||||
throw new DBConcurrencyException("在更新 \"場地遴選\" 資料表時發生並行例外:找不到要更新的資料列");
|
||||
}
|
||||
DbCommand cmdUpdate = NewCommand();
|
||||
cmdUpdate.CommandText =
|
||||
@"update 場地遴選
|
||||
set
|
||||
場地編號_A = @場地編號_A ,
|
||||
場地名稱_A = @場地名稱_A ,
|
||||
安全舒適_A = @安全舒適_A ,
|
||||
空間大小_A = @空間大小_A ,
|
||||
價格合理_A = @價格合理_A ,
|
||||
交通便利_A = @交通便利_A ,
|
||||
設備完善_A = @設備完善_A ,
|
||||
合計_A = @合計_A ,
|
||||
場地編號_B = @場地編號_B ,
|
||||
場地名稱_B = @場地名稱_B ,
|
||||
安全舒適_B = @安全舒適_B ,
|
||||
空間大小_B = @空間大小_B ,
|
||||
價格合理_B = @價格合理_B ,
|
||||
交通便利_B = @交通便利_B ,
|
||||
設備完善_B = @設備完善_B ,
|
||||
合計_B = @合計_B ,
|
||||
場地編號_C = @場地編號_C ,
|
||||
場地名稱_C = @場地名稱_C ,
|
||||
安全舒適_C = @安全舒適_C ,
|
||||
空間大小_C = @空間大小_C ,
|
||||
價格合理_C = @價格合理_C ,
|
||||
交通便利_C = @交通便利_C ,
|
||||
設備完善_C = @設備完善_C ,
|
||||
合計_C = @合計_C ,
|
||||
總評 = @總評 ,
|
||||
備註 = @備註 ,
|
||||
選定場地 = @選定場地 ,
|
||||
DB_APPNO = DB_APPNO + 1,
|
||||
DB_TRDAT = @DB_TRDAT,
|
||||
DB_TRUSR = @DB_TRUSR
|
||||
where 1=1
|
||||
and 課程企劃編號 = @original_課程企劃編號
|
||||
and DB_APPNO = @original_DB_APPNO
|
||||
";
|
||||
AddParam(cmdUpdate, "場地編號_A", value.場地編號_A);
|
||||
AddParam(cmdUpdate, "場地名稱_A", value.場地名稱_A);
|
||||
AddParam(cmdUpdate, "安全舒適_A", value.安全舒適_A);
|
||||
AddParam(cmdUpdate, "空間大小_A", value.空間大小_A);
|
||||
AddParam(cmdUpdate, "價格合理_A", value.價格合理_A);
|
||||
AddParam(cmdUpdate, "交通便利_A", value.交通便利_A);
|
||||
AddParam(cmdUpdate, "設備完善_A", value.設備完善_A);
|
||||
AddParam(cmdUpdate, "合計_A", value.合計_A);
|
||||
AddParam(cmdUpdate, "場地編號_B", value.場地編號_B);
|
||||
AddParam(cmdUpdate, "場地名稱_B", value.場地名稱_B);
|
||||
AddParam(cmdUpdate, "安全舒適_B", value.安全舒適_B);
|
||||
AddParam(cmdUpdate, "空間大小_B", value.空間大小_B);
|
||||
AddParam(cmdUpdate, "價格合理_B", value.價格合理_B);
|
||||
AddParam(cmdUpdate, "交通便利_B", value.交通便利_B);
|
||||
AddParam(cmdUpdate, "設備完善_B", value.設備完善_B);
|
||||
AddParam(cmdUpdate, "合計_B", value.合計_B);
|
||||
AddParam(cmdUpdate, "場地編號_C", value.場地編號_C);
|
||||
AddParam(cmdUpdate, "場地名稱_C", value.場地名稱_C);
|
||||
AddParam(cmdUpdate, "安全舒適_C", value.安全舒適_C);
|
||||
AddParam(cmdUpdate, "空間大小_C", value.空間大小_C);
|
||||
AddParam(cmdUpdate, "價格合理_C", value.價格合理_C);
|
||||
AddParam(cmdUpdate, "交通便利_C", value.交通便利_C);
|
||||
AddParam(cmdUpdate, "設備完善_C", value.設備完善_C);
|
||||
AddParam(cmdUpdate, "合計_C", value.合計_C);
|
||||
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_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 課程企劃編號, 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 DB_APPNO = @DB_APPNO
|
||||
";
|
||||
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.課程企劃編號);
|
||||
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 DB_APPNO = @DB_APPNO
|
||||
";
|
||||
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 課程企劃編號)
|
||||
{
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = "select count(1)" + _from + _where
|
||||
+ " and 課程企劃編號 = @課程企劃編號 "
|
||||
;
|
||||
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.場地編號_A = DAC.GetInt32(reader[1]);
|
||||
newItem.場地名稱_A = DAC.GetString(reader[2]);
|
||||
newItem.安全舒適_A = DAC.GetInt32(reader[3]);
|
||||
newItem.空間大小_A = DAC.GetInt32(reader[4]);
|
||||
newItem.價格合理_A = DAC.GetInt32(reader[5]);
|
||||
newItem.交通便利_A = DAC.GetInt32(reader[6]);
|
||||
newItem.設備完善_A = DAC.GetInt32(reader[7]);
|
||||
newItem.合計_A = DAC.GetInt32(reader[8]);
|
||||
newItem.場地編號_B = DAC.GetInt32(reader[9]);
|
||||
newItem.場地名稱_B = DAC.GetString(reader[10]);
|
||||
newItem.安全舒適_B = DAC.GetInt32(reader[11]);
|
||||
newItem.空間大小_B = DAC.GetInt32(reader[12]);
|
||||
newItem.價格合理_B = DAC.GetInt32(reader[13]);
|
||||
newItem.交通便利_B = DAC.GetInt32(reader[14]);
|
||||
newItem.設備完善_B = DAC.GetInt32(reader[15]);
|
||||
newItem.合計_B = DAC.GetInt32(reader[16]);
|
||||
newItem.場地編號_C = DAC.GetInt32(reader[17]);
|
||||
newItem.場地名稱_C = DAC.GetString(reader[18]);
|
||||
newItem.安全舒適_C = DAC.GetInt32(reader[19]);
|
||||
newItem.空間大小_C = DAC.GetInt32(reader[20]);
|
||||
newItem.價格合理_C = DAC.GetInt32(reader[21]);
|
||||
newItem.交通便利_C = DAC.GetInt32(reader[22]);
|
||||
newItem.設備完善_C = DAC.GetInt32(reader[23]);
|
||||
newItem.合計_C = DAC.GetInt32(reader[24]);
|
||||
newItem.總評 = DAC.GetString(reader[25]);
|
||||
newItem.備註 = DAC.GetString(reader[26]);
|
||||
newItem.選定場地 = DAC.GetInt32(reader[27]);
|
||||
newItem.DB_APPNO = DAC.GetInt32(reader[28]);
|
||||
newItem.DB_CRDAT = DAC.GetDateTime(reader[29]);
|
||||
newItem.DB_CRUSR = DAC.GetString(reader[30]);
|
||||
newItem.DB_TRDAT = DAC.GetDateTime(reader[31]);
|
||||
newItem.DB_TRUSR = DAC.GetString(reader[32]);
|
||||
Add(newItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 場地遴選 資料紀錄類別
|
||||
///</summary>
|
||||
[Serializable]
|
||||
public partial class 場地遴選 : DataItemBase
|
||||
{
|
||||
private int _課程企劃編號;
|
||||
private int _場地編號_A;
|
||||
private string _場地名稱_A;
|
||||
private int _安全舒適_A;
|
||||
private int _空間大小_A;
|
||||
private int _價格合理_A;
|
||||
private int _交通便利_A;
|
||||
private int _設備完善_A;
|
||||
private int _合計_A;
|
||||
private int _場地編號_B;
|
||||
private string _場地名稱_B;
|
||||
private int _安全舒適_B;
|
||||
private int _空間大小_B;
|
||||
private int _價格合理_B;
|
||||
private int _交通便利_B;
|
||||
private int _設備完善_B;
|
||||
private int _合計_B;
|
||||
private int _場地編號_C;
|
||||
private string _場地名稱_C;
|
||||
private int _安全舒適_C;
|
||||
private int _空間大小_C;
|
||||
private int _價格合理_C;
|
||||
private int _交通便利_C;
|
||||
private int _設備完善_C;
|
||||
private int _合計_C;
|
||||
private string _總評;
|
||||
private string _備註;
|
||||
private int _選定場地;
|
||||
|
||||
#region 資料欄位
|
||||
///<summary>
|
||||
/// 課程企劃編號
|
||||
///</summary>
|
||||
[DataObjectField(true, false, false)]
|
||||
public int 課程企劃編號
|
||||
{
|
||||
get
|
||||
{
|
||||
return _課程企劃編號;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _課程企劃編號)
|
||||
{
|
||||
_課程企劃編號 = value;
|
||||
OnPropertyChanged("課程企劃編號");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 場地編號_A
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public int 場地編號_A
|
||||
{
|
||||
get
|
||||
{
|
||||
return _場地編號_A;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _場地編號_A)
|
||||
{
|
||||
_場地編號_A = value;
|
||||
OnPropertyChanged("場地編號_A");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 場地名稱_A
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 200)]
|
||||
public string 場地名稱_A
|
||||
{
|
||||
get
|
||||
{
|
||||
return _場地名稱_A;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _場地名稱_A)
|
||||
{
|
||||
_場地名稱_A = value;
|
||||
OnPropertyChanged("場地名稱_A");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 安全舒適_A
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public int 安全舒適_A
|
||||
{
|
||||
get
|
||||
{
|
||||
return _安全舒適_A;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _安全舒適_A)
|
||||
{
|
||||
_安全舒適_A = value;
|
||||
OnPropertyChanged("安全舒適_A");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 空間大小_A
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public int 空間大小_A
|
||||
{
|
||||
get
|
||||
{
|
||||
return _空間大小_A;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _空間大小_A)
|
||||
{
|
||||
_空間大小_A = value;
|
||||
OnPropertyChanged("空間大小_A");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 價格合理_A
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public int 價格合理_A
|
||||
{
|
||||
get
|
||||
{
|
||||
return _價格合理_A;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _價格合理_A)
|
||||
{
|
||||
_價格合理_A = value;
|
||||
OnPropertyChanged("價格合理_A");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 交通便利_A
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public int 交通便利_A
|
||||
{
|
||||
get
|
||||
{
|
||||
return _交通便利_A;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _交通便利_A)
|
||||
{
|
||||
_交通便利_A = value;
|
||||
OnPropertyChanged("交通便利_A");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 設備完善_A
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public int 設備完善_A
|
||||
{
|
||||
get
|
||||
{
|
||||
return _設備完善_A;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _設備完善_A)
|
||||
{
|
||||
_設備完善_A = value;
|
||||
OnPropertyChanged("設備完善_A");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 合計_A
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public int 合計_A
|
||||
{
|
||||
get
|
||||
{
|
||||
return _合計_A;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _合計_A)
|
||||
{
|
||||
_合計_A = value;
|
||||
OnPropertyChanged("合計_A");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 場地編號_B
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public int 場地編號_B
|
||||
{
|
||||
get
|
||||
{
|
||||
return _場地編號_B;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _場地編號_B)
|
||||
{
|
||||
_場地編號_B = value;
|
||||
OnPropertyChanged("場地編號_B");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 場地名稱_B
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 200)]
|
||||
public string 場地名稱_B
|
||||
{
|
||||
get
|
||||
{
|
||||
return _場地名稱_B;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _場地名稱_B)
|
||||
{
|
||||
_場地名稱_B = value;
|
||||
OnPropertyChanged("場地名稱_B");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 安全舒適_B
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public int 安全舒適_B
|
||||
{
|
||||
get
|
||||
{
|
||||
return _安全舒適_B;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _安全舒適_B)
|
||||
{
|
||||
_安全舒適_B = value;
|
||||
OnPropertyChanged("安全舒適_B");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 空間大小_B
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public int 空間大小_B
|
||||
{
|
||||
get
|
||||
{
|
||||
return _空間大小_B;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _空間大小_B)
|
||||
{
|
||||
_空間大小_B = value;
|
||||
OnPropertyChanged("空間大小_B");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 價格合理_B
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public int 價格合理_B
|
||||
{
|
||||
get
|
||||
{
|
||||
return _價格合理_B;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _價格合理_B)
|
||||
{
|
||||
_價格合理_B = value;
|
||||
OnPropertyChanged("價格合理_B");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 交通便利_B
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public int 交通便利_B
|
||||
{
|
||||
get
|
||||
{
|
||||
return _交通便利_B;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _交通便利_B)
|
||||
{
|
||||
_交通便利_B = value;
|
||||
OnPropertyChanged("交通便利_B");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 設備完善_B
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public int 設備完善_B
|
||||
{
|
||||
get
|
||||
{
|
||||
return _設備完善_B;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _設備完善_B)
|
||||
{
|
||||
_設備完善_B = value;
|
||||
OnPropertyChanged("設備完善_B");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 合計_B
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public int 合計_B
|
||||
{
|
||||
get
|
||||
{
|
||||
return _合計_B;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _合計_B)
|
||||
{
|
||||
_合計_B = value;
|
||||
OnPropertyChanged("合計_B");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 場地編號_C
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public int 場地編號_C
|
||||
{
|
||||
get
|
||||
{
|
||||
return _場地編號_C;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _場地編號_C)
|
||||
{
|
||||
_場地編號_C = value;
|
||||
OnPropertyChanged("場地編號_C");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 場地名稱_C
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 200)]
|
||||
public string 場地名稱_C
|
||||
{
|
||||
get
|
||||
{
|
||||
return _場地名稱_C;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _場地名稱_C)
|
||||
{
|
||||
_場地名稱_C = value;
|
||||
OnPropertyChanged("場地名稱_C");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 安全舒適_C
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public int 安全舒適_C
|
||||
{
|
||||
get
|
||||
{
|
||||
return _安全舒適_C;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _安全舒適_C)
|
||||
{
|
||||
_安全舒適_C = value;
|
||||
OnPropertyChanged("安全舒適_C");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 空間大小_C
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public int 空間大小_C
|
||||
{
|
||||
get
|
||||
{
|
||||
return _空間大小_C;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _空間大小_C)
|
||||
{
|
||||
_空間大小_C = value;
|
||||
OnPropertyChanged("空間大小_C");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 價格合理_C
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public int 價格合理_C
|
||||
{
|
||||
get
|
||||
{
|
||||
return _價格合理_C;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _價格合理_C)
|
||||
{
|
||||
_價格合理_C = value;
|
||||
OnPropertyChanged("價格合理_C");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 交通便利_C
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public int 交通便利_C
|
||||
{
|
||||
get
|
||||
{
|
||||
return _交通便利_C;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _交通便利_C)
|
||||
{
|
||||
_交通便利_C = value;
|
||||
OnPropertyChanged("交通便利_C");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 設備完善_C
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public int 設備完善_C
|
||||
{
|
||||
get
|
||||
{
|
||||
return _設備完善_C;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _設備完善_C)
|
||||
{
|
||||
_設備完善_C = value;
|
||||
OnPropertyChanged("設備完善_C");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 合計_C
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public int 合計_C
|
||||
{
|
||||
get
|
||||
{
|
||||
return _合計_C;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _合計_C)
|
||||
{
|
||||
_合計_C = value;
|
||||
OnPropertyChanged("合計_C");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 總評
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 2000)]
|
||||
public string 總評
|
||||
{
|
||||
get
|
||||
{
|
||||
return _總評;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _總評)
|
||||
{
|
||||
_總評 = value;
|
||||
OnPropertyChanged("總評");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 備註
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 2000)]
|
||||
public string 備註
|
||||
{
|
||||
get
|
||||
{
|
||||
return _備註;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _備註)
|
||||
{
|
||||
_備註 = value;
|
||||
OnPropertyChanged("備註");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 選定場地
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public int 選定場地
|
||||
{
|
||||
get
|
||||
{
|
||||
return _選定場地;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _選定場地)
|
||||
{
|
||||
_選定場地 = value;
|
||||
OnPropertyChanged("選定場地");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,325 @@
|
||||
//
|
||||
// 這個檔案是 場地遴選 資料表的資料存取類別 檔案二
|
||||
// 您可以修改這個檔案,加入您自訂的屬性與方法
|
||||
//
|
||||
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()
|
||||
{
|
||||
場地遴選List result = new 場地遴選List();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where;
|
||||
|
||||
cmdSelect.CommandText += _order;
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// InsertOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查或是自動編號等動作
|
||||
/// 回傳 false 會打斷 InsertOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeInsertOne(場地遴選 value)
|
||||
{
|
||||
value.合計_A = value.安全舒適_A + value.空間大小_A + value.價格合理_A + value.交通便利_A + value.設備完善_A;
|
||||
value.合計_B = value.安全舒適_B + value.空間大小_B + value.價格合理_B + value.交通便利_B + value.設備完善_B;
|
||||
value.合計_C = value.安全舒適_C + value.空間大小_C + value.價格合理_C + value.交通便利_C + value.設備完善_C;
|
||||
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)
|
||||
{
|
||||
value.合計_A = value.安全舒適_A + value.空間大小_A + value.價格合理_A + value.交通便利_A + value.設備完善_A;
|
||||
value.合計_B = value.安全舒適_B + value.空間大小_B + value.價格合理_B + value.交通便利_B + value.設備完善_B;
|
||||
value.合計_C = value.安全舒適_C + value.空間大小_C + value.價格合理_C + value.交通便利_C + value.設備完善_C;
|
||||
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)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查
|
||||
/// 回傳 false 會打斷 DeleteOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeDeleteOne(int 課程企劃編號, int DB_APPNO)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterDeleteOne(int 課程企劃編號, int DB_APPNO)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 發生錯誤時會執行此方法
|
||||
///</summary>
|
||||
protected virtual void OnDeleteOneError(Exception error, out bool handled)
|
||||
{
|
||||
handled = false;
|
||||
}
|
||||
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
public void UpdatePlace(int 課程企劃編號, string 場地別, int 場地編號,
|
||||
int 安全舒適, int 空間大小, int 價格合理, int 交通便利, int 設備完善)
|
||||
{
|
||||
if (SelectOne(課程企劃編號).Count == 0)
|
||||
{
|
||||
場地遴選 newValue = new 場地遴選();
|
||||
newValue.課程企劃編號 = 課程企劃編號;
|
||||
newValue.DB_CRDAT = DateTime.UtcNow.AddHours(8);
|
||||
newValue.DB_CRUSR = CurrentUserId;
|
||||
InsertOne(newValue);
|
||||
}
|
||||
|
||||
DbCommand cmdUpdate = NewCommand();
|
||||
cmdUpdate.CommandText = String.Format(
|
||||
"UPDATE " + _tableName
|
||||
+ " SET 場地編號_{0} = @場地編號, "
|
||||
+ " 安全舒適_{0} = @安全舒適, "
|
||||
+ " 空間大小_{0} = @空間大小, "
|
||||
+ " 價格合理_{0} = @價格合理, "
|
||||
+ " 交通便利_{0} = @交通便利, "
|
||||
+ " 設備完善_{0} = @設備完善, "
|
||||
+ " 合計_{0} = @合計, "
|
||||
+ " DB_APPNO = DB_APPNO + 1 , "
|
||||
+ " DB_TRDAT = GetDate() , "
|
||||
+ " DB_TRUSR = @DB_TRUSR "
|
||||
+ " WHERE 課程企劃編號 = @課程企劃編號", 場地別);
|
||||
AddParam(cmdUpdate, "場地編號", 場地編號);
|
||||
AddParam(cmdUpdate, "安全舒適", 安全舒適);
|
||||
AddParam(cmdUpdate, "空間大小", 空間大小);
|
||||
AddParam(cmdUpdate, "價格合理", 價格合理);
|
||||
AddParam(cmdUpdate, "交通便利", 交通便利);
|
||||
AddParam(cmdUpdate, "設備完善", 設備完善);
|
||||
AddParam(cmdUpdate, "合計", 安全舒適 + 空間大小 + 價格合理 + 交通便利 + 設備完善);
|
||||
AddParam(cmdUpdate, "DB_TRUSR", CurrentUserId);
|
||||
AddParam(cmdUpdate, "課程企劃編號", 課程企劃編號);
|
||||
ExecuteNonQuery(cmdUpdate);
|
||||
}
|
||||
|
||||
public void UpdateComment(int 課程企劃編號, string 總評, string 備註)
|
||||
{
|
||||
if (SelectOne(課程企劃編號).Count == 0)
|
||||
{
|
||||
場地遴選 newValue = new 場地遴選();
|
||||
newValue.課程企劃編號 = 課程企劃編號;
|
||||
newValue.DB_CRDAT = DateTime.UtcNow.AddHours(8);
|
||||
newValue.DB_CRUSR = CurrentUserId;
|
||||
InsertOne(newValue);
|
||||
}
|
||||
|
||||
DbCommand cmdUpdate = NewCommand();
|
||||
cmdUpdate.CommandText =
|
||||
"UPDATE " + _tableName
|
||||
+ " SET 總評 = @總評 , "
|
||||
+ " 備註 = @備註 , "
|
||||
+ " DB_APPNO = DB_APPNO + 1 , "
|
||||
+ " DB_TRDAT = GetDate() , "
|
||||
+ " DB_TRUSR = @DB_TRUSR "
|
||||
+ " WHERE 課程企劃編號 = @課程企劃編號";
|
||||
AddParam(cmdUpdate, "總評", 總評);
|
||||
AddParam(cmdUpdate, "備註", 備註);
|
||||
AddParam(cmdUpdate, "DB_TRUSR", CurrentUserId);
|
||||
AddParam(cmdUpdate, "課程企劃編號", 課程企劃編號);
|
||||
ExecuteNonQuery(cmdUpdate);
|
||||
}
|
||||
|
||||
public void ClearPlace(int 課程企劃編號, string 場地別)
|
||||
{
|
||||
if (SelectOne(課程企劃編號).Count == 0)
|
||||
return;
|
||||
|
||||
DbCommand cmdUpdate = NewCommand();
|
||||
cmdUpdate.CommandText = String.Format(
|
||||
"UPDATE " + _tableName
|
||||
+ " SET 場地編號_{0} = null, "
|
||||
+ " 安全舒適_{0} = null, "
|
||||
+ " 空間大小_{0} = null, "
|
||||
+ " 價格合理_{0} = null, "
|
||||
+ " 交通便利_{0} = null, "
|
||||
+ " 設備完善_{0} = null, "
|
||||
+ " 合計_{0} = null, "
|
||||
+ " DB_APPNO = DB_APPNO + 1 , "
|
||||
+ " DB_TRDAT = GetDate() , "
|
||||
+ " DB_TRUSR = @DB_TRUSR "
|
||||
+ " WHERE 課程企劃編號 = @課程企劃編號", 場地別);
|
||||
AddParam(cmdUpdate, "DB_TRUSR", CurrentUserId);
|
||||
AddParam(cmdUpdate, "課程企劃編號", 課程企劃編號);
|
||||
ExecuteNonQuery(cmdUpdate);
|
||||
}
|
||||
|
||||
public int DeleteBy課程企劃(int 課程企劃編號)
|
||||
{
|
||||
DbCommand cmdDelete = NewCommand();
|
||||
cmdDelete.CommandText =
|
||||
@"delete from 場地遴選
|
||||
where 1=1
|
||||
and 課程企劃編號 = @課程企劃編號";
|
||||
AddParam(cmdDelete, "課程企劃編號", 課程企劃編號);
|
||||
int rowsAffected = ExecuteNonQuery(cmdDelete);
|
||||
return rowsAffected;
|
||||
}
|
||||
|
||||
public int Select選定場地(int 課程企劃編號)
|
||||
{
|
||||
場地遴選List d = SelectOne(課程企劃編號);
|
||||
|
||||
if (d.Count == 0)
|
||||
return 0;
|
||||
switch (d[0].選定場地)
|
||||
{
|
||||
case 1:
|
||||
return d[0].場地編號_A;
|
||||
case 2:
|
||||
return d[0].場地編號_B;
|
||||
case 3:
|
||||
return d[0].場地編號_C;
|
||||
default:
|
||||
if (d[0].合計_A >= d[0].合計_B && d[0].合計_A >= d[0].合計_C)
|
||||
return d[0].場地編號_A;
|
||||
if (d[0].合計_B >= d[0].合計_A && d[0].合計_B >= d[0].合計_C)
|
||||
return d[0].場地編號_B;
|
||||
else
|
||||
return d[0].場地編號_C;
|
||||
}
|
||||
}
|
||||
|
||||
public string Select選定場地名稱(int 課程企劃編號)
|
||||
{
|
||||
場地遴選List d = SelectOne(課程企劃編號);
|
||||
|
||||
if (d.Count == 0)
|
||||
return "";
|
||||
|
||||
int 編號;
|
||||
string 名稱;
|
||||
switch (d[0].選定場地)
|
||||
{
|
||||
case 1:
|
||||
編號 = d[0].場地編號_A;
|
||||
名稱 = d[0].場地名稱_A;
|
||||
break;
|
||||
case 2:
|
||||
編號 = d[0].場地編號_B;
|
||||
名稱 = d[0].場地名稱_B;
|
||||
break;
|
||||
case 3:
|
||||
編號 = d[0].場地編號_C;
|
||||
名稱 = d[0].場地名稱_C;
|
||||
break;
|
||||
default:
|
||||
if (d[0].合計_A >= d[0].合計_B && d[0].合計_A >= d[0].合計_C)
|
||||
{
|
||||
編號 = d[0].場地編號_A;
|
||||
名稱 = d[0].場地名稱_A;
|
||||
}
|
||||
else if (d[0].合計_B >= d[0].合計_A && d[0].合計_B >= d[0].合計_C)
|
||||
{
|
||||
編號 = d[0].場地編號_B;
|
||||
名稱 = d[0].場地名稱_B;
|
||||
}
|
||||
else
|
||||
{
|
||||
編號 = d[0].場地編號_C;
|
||||
名稱 = d[0].場地名稱_C;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (編號 > 0)
|
||||
return new DAC_場地(conn).Get場地名稱(編號);
|
||||
|
||||
return 名稱 ?? "";
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 場地遴選 資料集合類別
|
||||
///</summary>
|
||||
public partial class 場地遴選List : List<場地遴選>
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 場地遴選 資料紀錄類別
|
||||
///</summary>
|
||||
public partial class 場地遴選
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using System.ComponentModel;
|
||||
using WebLib;
|
||||
|
||||
namespace Education
|
||||
{
|
||||
[DataObject]
|
||||
public class DAC_教材評選綜合評估
|
||||
{
|
||||
public DAC_教材評選綜合評估()
|
||||
{
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public NameValueList SelectForList()
|
||||
{
|
||||
NameValueList result = new NameValueList();
|
||||
result.Add("不符合目標", "1");
|
||||
result.Add("符合目標", "2");
|
||||
result.Add("符合目標且能引起學習興趣", "3");
|
||||
return result;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public NameValueList SelectForDropDown()
|
||||
{
|
||||
NameValueList result = new NameValueList();
|
||||
result.Add("(請選擇)", "");
|
||||
result.Add("不符合目標", "1");
|
||||
result.Add("符合目標", "2");
|
||||
result.Add("符合目標且能引起學習興趣", "3");
|
||||
return result;
|
||||
}
|
||||
|
||||
public static string Get名稱(object id)
|
||||
{
|
||||
switch (DAC.GetString(id))
|
||||
{
|
||||
case "1":
|
||||
return "不符合目標";
|
||||
case "2":
|
||||
return "符合目標";
|
||||
case "3":
|
||||
return "符合目標且能引起學習興趣";
|
||||
default:
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,161 @@
|
||||
//
|
||||
// 這個檔案是 教材遴選 資料表的資料存取類別 檔案二
|
||||
// 您可以修改這個檔案,加入您自訂的屬性與方法
|
||||
//
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
using System.Linq;
|
||||
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(教材遴選Item value)
|
||||
{
|
||||
value.合計_A = DAC.GetInt32(value.符合訓練目標_A) + DAC.GetInt32(value.架構規劃完整性_A) + DAC.GetInt32(value.符合課程時數_A) + DAC.GetInt32(value.引起學習興趣_A) + DAC.GetInt32(value.未來工作參考運用_A);
|
||||
value.合計_B = DAC.GetInt32(value.符合訓練目標_B) + DAC.GetInt32(value.架構規劃完整性_B) + DAC.GetInt32(value.符合課程時數_B) + DAC.GetInt32(value.引起學習興趣_B) + DAC.GetInt32(value.未來工作參考運用_B);
|
||||
value.合計_C = DAC.GetInt32(value.符合訓練目標_C) + DAC.GetInt32(value.架構規劃完整性_C) + DAC.GetInt32(value.符合課程時數_C) + DAC.GetInt32(value.引起學習興趣_C) + DAC.GetInt32(value.未來工作參考運用_C);
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// InsertOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterInsertOne(教材遴選Item 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(教材遴選Item value)
|
||||
{
|
||||
value.合計_A = DAC.GetInt32(value.符合訓練目標_A) + DAC.GetInt32(value.架構規劃完整性_A) + DAC.GetInt32(value.符合課程時數_A) + DAC.GetInt32(value.引起學習興趣_A) + DAC.GetInt32(value.未來工作參考運用_A);
|
||||
value.合計_B = DAC.GetInt32(value.符合訓練目標_B) + DAC.GetInt32(value.架構規劃完整性_B) + DAC.GetInt32(value.符合課程時數_B) + DAC.GetInt32(value.引起學習興趣_B) + DAC.GetInt32(value.未來工作參考運用_B);
|
||||
value.合計_C = DAC.GetInt32(value.符合訓練目標_C) + DAC.GetInt32(value.架構規劃完整性_C) + DAC.GetInt32(value.符合課程時數_C) + DAC.GetInt32(value.引起學習興趣_C) + DAC.GetInt32(value.未來工作參考運用_C);
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查
|
||||
/// 回傳 false 會打斷 UpdateOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeUpdateOne(教材遴選Item value, 教材遴選Item original_value)
|
||||
{
|
||||
value.合計_A = DAC.GetInt32(value.符合訓練目標_A) + DAC.GetInt32(value.架構規劃完整性_A) + DAC.GetInt32(value.符合課程時數_A) + DAC.GetInt32(value.引起學習興趣_A) + DAC.GetInt32(value.未來工作參考運用_A);
|
||||
value.合計_B = DAC.GetInt32(value.符合訓練目標_B) + DAC.GetInt32(value.架構規劃完整性_B) + DAC.GetInt32(value.符合課程時數_B) + DAC.GetInt32(value.引起學習興趣_B) + DAC.GetInt32(value.未來工作參考運用_B);
|
||||
value.合計_C = DAC.GetInt32(value.符合訓練目標_C) + DAC.GetInt32(value.架構規劃完整性_C) + DAC.GetInt32(value.符合課程時數_C) + DAC.GetInt32(value.引起學習興趣_C) + DAC.GetInt32(value.未來工作參考運用_C);
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterUpdateOne(教材遴選Item value)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterUpdateOne(教材遴選Item value, 教材遴選Item original_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(教材遴選Item value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterDeleteOne(教材遴選Item value)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查
|
||||
/// 回傳 false 會打斷 DeleteOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeDeleteOne(int 課程企劃編號, int 課程序號, int DB_APPNO)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterDeleteOne(int 課程企劃編號, int 課程序號, int DB_APPNO)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 發生錯誤時會執行此方法
|
||||
///</summary>
|
||||
///<param name="handled">錯誤是否已經處理妥當</param>
|
||||
protected virtual void OnDeleteOneError(Exception error, out bool handled)
|
||||
{
|
||||
handled = false;
|
||||
}
|
||||
#endregion
|
||||
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
|
||||
///<summary>
|
||||
///教材遴選 資料集合類別
|
||||
///</summary>
|
||||
public partial class 教材遴選List : List<教材遴選Item>
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
|
||||
///<summary>
|
||||
///教材遴選 資料紀錄類別
|
||||
///</summary>
|
||||
public partial class 教材遴選Item
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,522 @@
|
||||
//
|
||||
// 這個檔案是 數位課程 資料表的資料存取類別 檔案一
|
||||
// 請不要修改這個檔案,重新產生資料存取類別時,這個檔案會被覆蓋掉
|
||||
//
|
||||
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 課程編號)
|
||||
{
|
||||
數位課程List result = new 數位課程List();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where
|
||||
+ " and 課程編號 = @課程編號 "
|
||||
;
|
||||
AddParam(cmdSelect, "課程編號", 課程編號);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Insert)]
|
||||
public int InsertOne(數位課程 value)
|
||||
{
|
||||
using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required))
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeInsertOne(value))
|
||||
return -1;
|
||||
|
||||
DbCommand cmdInsert = NewCommand();
|
||||
cmdInsert.CommandText =
|
||||
"insert into 數位課程"
|
||||
+ " (" + _insert + ")"
|
||||
+ "values "
|
||||
+ " (" + _insertValue + ");"
|
||||
+ "select @@identity"
|
||||
;
|
||||
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, "評量文件", 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);
|
||||
int newId;
|
||||
ExecuteScalar(cmdInsert, out newId);
|
||||
AfterInsertOne(value);
|
||||
ts.Complete();
|
||||
return newId;
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
bool handled;
|
||||
OnInsertOneError(error, out handled);
|
||||
if(!handled)
|
||||
throw error;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Update)]
|
||||
public int UpdateOne(數位課程 value)
|
||||
{
|
||||
using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required))
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeUpdateOne(value))
|
||||
return -1;
|
||||
|
||||
數位課程List oldValues = SelectOne(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 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, "開放觀看", 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_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 課程編號, 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 DB_APPNO = @DB_APPNO
|
||||
";
|
||||
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.課程編號);
|
||||
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 DB_APPNO = @DB_APPNO
|
||||
";
|
||||
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 課程編號)
|
||||
{
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = "select count(1)" + _from + _where
|
||||
+ " and 課程編號 = @課程編號 "
|
||||
;
|
||||
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.GetString(reader[3]);
|
||||
newItem.課程簡介 = DAC.GetString(reader[4]);
|
||||
newItem.長度 = DAC.GetInt32(reader[5]);
|
||||
newItem.課程網址 = DAC.GetString(reader[6]);
|
||||
newItem.開放觀看 = DAC.GetString(reader[7]);
|
||||
newItem.課程文件 = DAC.GetString(reader[8]);
|
||||
newItem.評量文件 = DAC.GetString(reader[9]);
|
||||
newItem.DB_APPNO = DAC.GetInt32(reader[10]);
|
||||
newItem.DB_CRDAT = DAC.GetDateTime(reader[11]);
|
||||
newItem.DB_CRUSR = DAC.GetString(reader[12]);
|
||||
newItem.DB_TRDAT = DAC.GetDateTime(reader[13]);
|
||||
newItem.DB_TRUSR = DAC.GetString(reader[14]);
|
||||
Add(newItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 數位課程 資料紀錄類別
|
||||
///</summary>
|
||||
[Serializable]
|
||||
public partial class 數位課程 : DataItemBase
|
||||
{
|
||||
private int _課程編號;
|
||||
private string _課程名稱;
|
||||
private string _課程類別;
|
||||
private string _講師;
|
||||
private string _課程簡介;
|
||||
private int _長度;
|
||||
private string _課程網址;
|
||||
private string _開放觀看;
|
||||
private string _課程文件;
|
||||
private string _評量文件;
|
||||
|
||||
#region 資料欄位
|
||||
///<summary>
|
||||
/// 課程編號
|
||||
///</summary>
|
||||
[DataObjectField(true, false, false)]
|
||||
public int 課程編號
|
||||
{
|
||||
get
|
||||
{
|
||||
return _課程編號;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _課程編號)
|
||||
{
|
||||
_課程編號 = value;
|
||||
OnPropertyChanged("課程編號");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 課程名稱
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 100)]
|
||||
public string 課程名稱
|
||||
{
|
||||
get
|
||||
{
|
||||
return _課程名稱;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _課程名稱)
|
||||
{
|
||||
_課程名稱 = value;
|
||||
OnPropertyChanged("課程名稱");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 課程類別
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 10)]
|
||||
public string 課程類別
|
||||
{
|
||||
get
|
||||
{
|
||||
return _課程類別;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _課程類別)
|
||||
{
|
||||
_課程類別 = value;
|
||||
OnPropertyChanged("課程類別");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 講師
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 50)]
|
||||
public string 講師
|
||||
{
|
||||
get
|
||||
{
|
||||
return _講師;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _講師)
|
||||
{
|
||||
_講師 = value;
|
||||
OnPropertyChanged("講師");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 課程簡介
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 1000)]
|
||||
public string 課程簡介
|
||||
{
|
||||
get
|
||||
{
|
||||
return _課程簡介;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _課程簡介)
|
||||
{
|
||||
_課程簡介 = value;
|
||||
OnPropertyChanged("課程簡介");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 長度
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public int 長度
|
||||
{
|
||||
get
|
||||
{
|
||||
return _長度;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _長度)
|
||||
{
|
||||
_長度 = value;
|
||||
OnPropertyChanged("長度");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 課程網址
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 100)]
|
||||
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, 100)]
|
||||
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,212 @@
|
||||
//
|
||||
// 這個檔案是 數位課程 資料表的資料存取類別 檔案二
|
||||
// 您可以修改這個檔案,加入您自訂的屬性與方法
|
||||
//
|
||||
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>
|
||||
/// 給查詢畫面用的 Select 方法
|
||||
///</summary>
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public 數位課程List Select(bool noInputReturnAll, string 課程名稱, string 課程類別, string 講師, string 課程簡介)
|
||||
{
|
||||
數位課程List result = new 數位課程List();
|
||||
bool noInput = true;
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where;
|
||||
|
||||
if (課程名稱 != null && 課程名稱.Length > 0)
|
||||
{
|
||||
noInput = false;
|
||||
cmdSelect.CommandText += " and 課程名稱 like @課程名稱 ";
|
||||
AddParam(cmdSelect, "課程名稱", 課程名稱 + "%");
|
||||
}
|
||||
|
||||
if (課程類別 != null && 課程類別.Length > 0)
|
||||
{
|
||||
noInput = false;
|
||||
cmdSelect.CommandText += " and 課程類別 like @課程類別 ";
|
||||
AddParam(cmdSelect, "課程類別", 課程類別 + "%");
|
||||
}
|
||||
|
||||
if (講師 != null && 講師.Length > 0)
|
||||
{
|
||||
noInput = false;
|
||||
cmdSelect.CommandText += " and 講師 like @講師 ";
|
||||
AddParam(cmdSelect, "講師", 講師 + "%");
|
||||
}
|
||||
|
||||
if (課程簡介 != null && 課程簡介.Length > 0)
|
||||
{
|
||||
noInput = false;
|
||||
cmdSelect.CommandText += " and 課程簡介 like @課程簡介 ";
|
||||
AddParam(cmdSelect, "課程簡介", 課程簡介 + "%");
|
||||
}
|
||||
|
||||
cmdSelect.CommandText += _order;
|
||||
|
||||
if (!noInputReturnAll && noInput)
|
||||
return result;
|
||||
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// InsertOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查或是自動編號等動作
|
||||
/// 回傳 false 會打斷 InsertOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeInsertOne(數位課程 value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// InsertOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterInsertOne(數位課程 value)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// InsertOne 發生錯誤時會執行此方法
|
||||
///</summary>
|
||||
///<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 課程編號, int DB_APPNO)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterDeleteOne(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 數位課程List Select可看課程(string 學員編號)
|
||||
{
|
||||
數位課程List result = new 數位課程List();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where
|
||||
+ @" and 開放觀看 = 'Y'
|
||||
or exists (select 1 from 數位課程觀看紀錄 where 數位課程.課程編號 = 數位課程觀看紀錄.課程編號 and 數位課程觀看紀錄.學員編號 = @學員編號)
|
||||
order by 課程編號";
|
||||
AddParam(cmdSelect, "學員編號", 學員編號);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public 數位課程List Select非開放課程()
|
||||
{
|
||||
數位課程List result = new 數位課程List();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where
|
||||
+ @" and 開放觀看 <> 'Y'
|
||||
order by 課程編號";
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 數位課程 資料集合類別
|
||||
///</summary>
|
||||
public partial class 數位課程List : List<數位課程>
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 數位課程 資料紀錄類別
|
||||
///</summary>
|
||||
public partial class 數位課程
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,327 @@
|
||||
//
|
||||
// 這個檔案是 數位課程計畫別 資料表的資料存取類別 檔案一
|
||||
// 請不要修改這個檔案,重新產生資料存取類別時,這個檔案會被覆蓋掉
|
||||
//
|
||||
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, "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, "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.DB_APPNO = DAC.GetInt32(reader[2]);
|
||||
newItem.DB_CRDAT = DAC.GetDateTime(reader[3]);
|
||||
newItem.DB_CRUSR = DAC.GetString(reader[4]);
|
||||
newItem.DB_TRDAT = DAC.GetDateTime(reader[5]);
|
||||
newItem.DB_TRUSR = DAC.GetString(reader[6]);
|
||||
Add(newItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 數位課程計畫別 資料紀錄類別
|
||||
///</summary>
|
||||
[Serializable]
|
||||
public partial class 數位課程計畫別 : DataItemBase
|
||||
{
|
||||
private int _編號;
|
||||
private string _計畫編號;
|
||||
|
||||
#region 資料欄位
|
||||
///<summary>
|
||||
/// 編號
|
||||
///</summary>
|
||||
[DataObjectField(true, false, false)]
|
||||
public int 編號
|
||||
{
|
||||
get
|
||||
{
|
||||
return _編號;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _編號)
|
||||
{
|
||||
_編號 = value;
|
||||
OnPropertyChanged("編號");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 計畫編號
|
||||
///</summary>
|
||||
[DataObjectField(true, false, false, 20)]
|
||||
public string 計畫編號
|
||||
{
|
||||
get
|
||||
{
|
||||
return _計畫編號;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _計畫編號)
|
||||
{
|
||||
_計畫編號 = value;
|
||||
OnPropertyChanged("計畫編號");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,174 @@
|
||||
//
|
||||
// 這個檔案是 數位課程計畫別 資料表的資料存取類別 檔案二
|
||||
// 您可以修改這個檔案,加入您自訂的屬性與方法
|
||||
//
|
||||
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>
|
||||
/// 給查詢畫面用的 Select 方法
|
||||
///</summary>
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public DataTable Select(int 編號)
|
||||
{
|
||||
數位課程計畫別List result = new 數位課程計畫別List();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText =
|
||||
@"SELECT A.計畫編號 AS BPPYN, ISNULL('【' + (SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BCUSZON' AND BSCLS=SUBSTRING(B.BPPYN,LEN(B.BPPYN)-5,1)) + '】', '') + B.BPPYM BPPYM
|
||||
FROM 數位課程計畫別 A
|
||||
LEFT JOIN BPAA B ON A.計畫編號=B.BPPYN
|
||||
WHERE A.編號=@編號";
|
||||
|
||||
if (編號 > 0)
|
||||
{
|
||||
cmdSelect.CommandText += " and 編號 = @編號 ";
|
||||
AddParam(cmdSelect, "編號", 編號);
|
||||
}
|
||||
|
||||
cmdSelect.CommandText += _order;
|
||||
DataTable data = Select(cmdSelect);
|
||||
|
||||
foreach (DataRow r in data.Rows)
|
||||
{
|
||||
if (DAC.GetString(r["BPPYN"]) == "000000001")
|
||||
{
|
||||
r.BeginEdit();
|
||||
r["BPPYM"] = "【非專案人員】";
|
||||
r.EndEdit();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
///<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
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 數位課程計畫別 資料集合類別
|
||||
///</summary>
|
||||
public partial class 數位課程計畫別List : List<數位課程計畫別>
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 數位課程計畫別 資料紀錄類別
|
||||
///</summary>
|
||||
public partial class 數位課程計畫別
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,691 @@
|
||||
//
|
||||
// 這個檔案是 訓練課程企劃 資料表的資料存取類別 檔案二
|
||||
// 您可以修改這個檔案,加入您自訂的屬性與方法
|
||||
//
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
using WebLib;
|
||||
using System.Data.SqlClient;
|
||||
|
||||
namespace Education
|
||||
{
|
||||
///<summary>
|
||||
/// 訓練課程企劃 資料存取類別
|
||||
///</summary>
|
||||
public partial class DAC_訓練課程企劃 : WebLib.DAC
|
||||
{
|
||||
///<summary>
|
||||
/// 給查詢畫面用的 Select 方法
|
||||
///</summary>
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public 訓練課程企劃List Select(int 訓練年度, string 顯示編號, string 公司別, string 計畫別, string 訓練名稱, string 訓練目標, string 教學方法, string 承辦)
|
||||
{
|
||||
訓練課程企劃List result = new 訓練課程企劃List();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where;
|
||||
|
||||
if (訓練年度 > 0)
|
||||
{
|
||||
cmdSelect.CommandText += " and 訓練日期 >= @訓練日期1 and 訓練日期 < @訓練日期2 ";
|
||||
AddParam(cmdSelect, "訓練日期1", new DateTime(訓練年度, 1, 1));
|
||||
AddParam(cmdSelect, "訓練日期2", new DateTime(訓練年度 + 1, 1, 1));
|
||||
}
|
||||
|
||||
if (顯示編號 != null && 顯示編號.Length > 0)
|
||||
{
|
||||
cmdSelect.CommandText += " and 顯示編號 like @顯示編號 ";
|
||||
AddParam(cmdSelect, "顯示編號", "%" + 顯示編號 + "%");
|
||||
}
|
||||
|
||||
if (公司別 != null && 公司別.Length > 0)
|
||||
{
|
||||
cmdSelect.CommandText += " and 公司別 = @公司別 ";
|
||||
AddParam(cmdSelect, "公司別", 公司別);
|
||||
}
|
||||
|
||||
if (計畫別 != null && 計畫別.Length > 0)
|
||||
{
|
||||
cmdSelect.CommandText += " and 計畫別 like @計畫別 ";
|
||||
AddParam(cmdSelect, "計畫別", "%" + 計畫別 + "%");
|
||||
}
|
||||
|
||||
if (訓練名稱 != null && 訓練名稱.Length > 0)
|
||||
{
|
||||
cmdSelect.CommandText += " and 訓練名稱 like @訓練名稱 ";
|
||||
AddParam(cmdSelect, "訓練名稱", "%" + 訓練名稱 + "%");
|
||||
}
|
||||
|
||||
if (訓練目標 != null && 訓練目標.Length > 0)
|
||||
{
|
||||
cmdSelect.CommandText += " and 訓練目標 like @訓練目標 ";
|
||||
AddParam(cmdSelect, "訓練目標", "%" + 訓練目標 + "%");
|
||||
}
|
||||
|
||||
if (教學方法 != null && 教學方法.Length > 0)
|
||||
{
|
||||
cmdSelect.CommandText += " and 教學方法 like @教學方法 ";
|
||||
AddParam(cmdSelect, "教學方法", "%" + 教學方法 + "%");
|
||||
}
|
||||
|
||||
if (承辦 != null && 承辦.Length > 0)
|
||||
{
|
||||
cmdSelect.CommandText += " and 承辦 like @承辦 ";
|
||||
AddParam(cmdSelect, "承辦", "%" + 承辦 + "%");
|
||||
}
|
||||
|
||||
cmdSelect.CommandText += _order;
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// InsertOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查或是自動編號等動作
|
||||
/// 回傳 false 會打斷 InsertOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeInsertOne(訓練課程企劃 value)
|
||||
{
|
||||
value.顯示編號 = Next單號(DateTime.UtcNow.AddHours(8).Date, _tableName, "顯示編號", String.Format("\"{0}\"<999999>", value.公司別), "");
|
||||
value.已取消 = "N";
|
||||
value.已簽核 = "N";
|
||||
value.已結案 = "N";
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// InsertOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterInsertOne(訓練課程企劃 value)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// InsertOne 發生錯誤時會執行此方法
|
||||
///</summary>
|
||||
protected virtual void OnInsertOneError(Exception error, out bool handled)
|
||||
{
|
||||
handled = false;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查
|
||||
/// 回傳 false 會打斷 UpdateOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeUpdateOne(訓練課程企劃 value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterUpdateOne(訓練課程企劃 value)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 發生錯誤時會執行此方法
|
||||
///</summary>
|
||||
protected virtual void OnUpdateOneError(Exception error, out bool handled)
|
||||
{
|
||||
handled = false;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查
|
||||
/// 回傳 false 會打斷 DeleteOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeDeleteOne(訓練課程企劃 value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterDeleteOne(訓練課程企劃 value)
|
||||
{
|
||||
DAC_訓練課程內容 dao1 = new DAC_訓練課程內容(conn);
|
||||
DAC_訓練課程計畫別 dao2 = new DAC_訓練課程計畫別(conn);
|
||||
DAC_場地遴選 dao3 = new DAC_場地遴選(conn);
|
||||
DAC_講師遴選 dao4 = new DAC_講師遴選(conn);
|
||||
|
||||
dao1.DeleteBy課程企劃(value.編號);
|
||||
dao2.DeleteBy課程企劃(value.編號);
|
||||
dao3.DeleteBy課程企劃(value.編號);
|
||||
dao4.DeleteBy課程企劃(value.編號);
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查
|
||||
/// 回傳 false 會打斷 DeleteOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeDeleteOne(int 編號, int DB_APPNO)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterDeleteOne(int 編號, int DB_APPNO)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 發生錯誤時會執行此方法
|
||||
///</summary>
|
||||
protected virtual void OnDeleteOneError(Exception error, out bool handled)
|
||||
{
|
||||
handled = false;
|
||||
}
|
||||
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
|
||||
/// <summary>
|
||||
/// 取出日期範圍之內可報名的課程
|
||||
/// </summary>
|
||||
/// <param name="訓練日期1"></param>
|
||||
/// <param name="訓練日期2"></param>
|
||||
/// <param name="學員編號"></param>
|
||||
/// <returns></returns>
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public 訓練課程企劃List SelectBy訓練日期(DateTime 訓練日期1, DateTime 訓練日期2)
|
||||
{
|
||||
訓練課程企劃List result = new 訓練課程企劃List();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where
|
||||
+ " and 訓練日期 >= @訓練日期1 and 訓練日期 <= @訓練日期2 and 訓練日期 >= @今天 "
|
||||
+ @" and exists ( select 1 from 表單簽核主檔
|
||||
where 表單類別ID = N'課程企劃' and 表單ID = 訓練課程企劃.編號
|
||||
and 應簽關數 = 已簽關數
|
||||
and 應簽關數 <> 'D'
|
||||
and 最終結果 = 'Y' ) "
|
||||
+ " order by 訓練日期 desc";
|
||||
AddParam(cmdSelect, "訓練日期1", 訓練日期1);
|
||||
AddParam(cmdSelect, "訓練日期2", 訓練日期2);
|
||||
AddParam(cmdSelect, "今天", DateTime.UtcNow.AddHours(8).Date);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public 訓練課程企劃List Select可報名課程(string 學員編號)
|
||||
{
|
||||
訓練課程企劃List result = new 訓練課程企劃List();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where
|
||||
+ @" and 訓練日期 >= @今天
|
||||
and exists ( select 1 from dbo.課程報名
|
||||
where 訓練課程編號 = 訓練課程企劃.編號
|
||||
and 學員編號 = @學員編號
|
||||
and 報名狀態 in ('R', 'S', 'Y') )
|
||||
and exists ( select 1 from 表單簽核主檔
|
||||
where 表單類別ID = N'課程企劃' and 表單ID = 訓練課程企劃.編號
|
||||
and 應簽關數 = 已簽關數
|
||||
and 應簽關數 <> 'D'
|
||||
and 最終結果 = 'Y' )
|
||||
order by 訓練日期 desc";
|
||||
AddParam(cmdSelect, "今天", DateTime.UtcNow.AddHours(8).Date);
|
||||
AddParam(cmdSelect, "學員編號", 學員編號);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
private NameValueList DoSelectForDropDown(string 公司別, int 年, bool? 已報名截止, bool? 已上課, bool? 已結案, bool? 已簽核完畢)
|
||||
{
|
||||
NameValueList result = new NameValueList();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = "select null as 編號, '(請選擇)' as 訓練名稱 "
|
||||
+ " union all "
|
||||
+ "select 編號, '[' + 顯示編號 + '] [' + CONVERT(NVARCHAR(10), 訓練日期, 120) + '] ' + 訓練名稱 "
|
||||
+ _from + _where + " and (已取消 <> 'Y' or 已取消 is null) ";
|
||||
|
||||
if (公司別 != null && 公司別.Length > 0)
|
||||
{
|
||||
cmdSelect.CommandText += " and 公司別 = @公司別 ";
|
||||
}
|
||||
|
||||
if (年 > 0)
|
||||
{
|
||||
cmdSelect.CommandText += " and 訓練日期 >= @訓練日期1 and 訓練日期 < @訓練日期2 ";
|
||||
AddParam(cmdSelect, "訓練日期1", new DateTime(年, 1, 1));
|
||||
AddParam(cmdSelect, "訓練日期2", new DateTime(年 + 1, 1, 1));
|
||||
}
|
||||
|
||||
if (已報名截止.HasValue)
|
||||
{
|
||||
if (已報名截止.Value)
|
||||
cmdSelect.CommandText += " and dateadd(day, -報名截止期限, 訓練日期) <= @現在時間 ";
|
||||
else
|
||||
cmdSelect.CommandText += " and dateadd(day, -報名截止期限, 訓練日期) > @現在時間 ";
|
||||
}
|
||||
|
||||
if (已上課.HasValue)
|
||||
{
|
||||
if (已上課.Value)
|
||||
cmdSelect.CommandText += " and 訓練日期 <= @現在時間 ";
|
||||
else
|
||||
cmdSelect.CommandText += " and ( (訓練日期迄 is null and 訓練日期 > @現在時間) or "
|
||||
+ " (訓練日期迄 is not null and 訓練日期迄 > @現在時間) ) ";
|
||||
}
|
||||
|
||||
if (已結案.HasValue)
|
||||
{
|
||||
if (已結案.Value)
|
||||
cmdSelect.CommandText += " and 已結案 = 'Y' ";
|
||||
else
|
||||
cmdSelect.CommandText += " and (已結案 <> 'Y' or 已結案 is null) ";
|
||||
}
|
||||
|
||||
if (已簽核完畢.HasValue)
|
||||
{
|
||||
if (已簽核完畢.Value)
|
||||
cmdSelect.CommandText += @" and exists ( select 1 from 表單簽核主檔
|
||||
where 表單類別ID = N'課程企劃' and 表單ID = 訓練課程企劃.編號
|
||||
and 應簽關數 = 已簽關數
|
||||
and 應簽關數 <> 'D'
|
||||
and 最終結果 = 'Y' )";
|
||||
else
|
||||
cmdSelect.CommandText += @" and not exists ( select 1 from 表單簽核主檔
|
||||
where 表單類別ID = N'課程企劃' and 表單ID = 訓練課程企劃.編號
|
||||
and 應簽關數 = 已簽關數
|
||||
and 應簽關數 <> 'D'
|
||||
and 最終結果 = 'Y' )";
|
||||
}
|
||||
|
||||
cmdSelect.CommandText += " order by 編號";
|
||||
|
||||
AddParam(cmdSelect, "公司別", 公司別);
|
||||
AddParam(cmdSelect, "現在時間", DateTime.UtcNow.AddHours(8));
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public NameValueList Select已截止未上課(string 公司別)
|
||||
{
|
||||
return DoSelectForDropDown(公司別, 0, true, false, null, null);
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public NameValueList Select已截止未上課(string 公司別, int 年)
|
||||
{
|
||||
return DoSelectForDropDown(公司別, 年, true, false, null, null);
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public NameValueList Select未上課(string 公司別)
|
||||
{
|
||||
return DoSelectForDropDown(公司別, 0, null, false, null, null);
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public NameValueList Select未上課(string 公司別, int 年)
|
||||
{
|
||||
return DoSelectForDropDown(公司別, 年, true, false, null, null);
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public NameValueList Select已上課未結案(string 公司別)
|
||||
{
|
||||
return DoSelectForDropDown(公司別, 0, null, true, false, null);
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public NameValueList Select已上課未結案(string 公司別, int 年)
|
||||
{
|
||||
return DoSelectForDropDown(公司別, 年, null, true, false, null);
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public NameValueList Select已上課(string 公司別)
|
||||
{
|
||||
return DoSelectForDropDown(公司別, 0, null, true, null, null);
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public NameValueList Select已上課(string 公司別, int 年)
|
||||
{
|
||||
return DoSelectForDropDown(公司別, 年, null, true, null, null);
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public NameValueList Select已結案(string 公司別)
|
||||
{
|
||||
return DoSelectForDropDown(公司別, 0, null, null, true, null);
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public NameValueList Select已結案(string 公司別, int 年)
|
||||
{
|
||||
return DoSelectForDropDown(公司別, 年, null, null, true, null);
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public NameValueList Select已簽核未結案(string 公司別)
|
||||
{
|
||||
return DoSelectForDropDown(公司別, 0, null, null, false, true);
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public NameValueList Select已簽核未結案(string 公司別, int 年)
|
||||
{
|
||||
return DoSelectForDropDown(公司別, 年, null, null, false, true);
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public NameValueList Select全部(string 公司別)
|
||||
{
|
||||
return DoSelectForDropDown(公司別, 0, null, null, null, null);
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public NameValueList Select全部(string 公司別, int 年)
|
||||
{
|
||||
return DoSelectForDropDown(公司別, 年, null, null, null, null);
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public 訓練課程企劃List Select年度企劃(string 公司別, int Year)
|
||||
{
|
||||
訓練課程企劃List result = new 訓練課程企劃List();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText =
|
||||
_select + _from + _where
|
||||
+ " and 公司別 = @公司別 "
|
||||
+ " and 訓練日期 >= @年初 and 訓練日期 < @明年初 "
|
||||
+ " and 已取消 <> 'Y' "
|
||||
+ " order by 編號";
|
||||
AddParam(cmdSelect, "年初", new DateTime(Year, 1, 1));
|
||||
AddParam(cmdSelect, "明年初", new DateTime(Year + 1, 1, 1));
|
||||
AddParam(cmdSelect, "公司別", 公司別);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
public int Select選定場地(int 課程企劃編號)
|
||||
{
|
||||
訓練課程企劃List d1 = SelectOne(課程企劃編號);
|
||||
if (d1.Count == 0)
|
||||
return 0;
|
||||
|
||||
場地異動List d2 = new DAC_場地異動(conn).Select最後異動(課程企劃編號);
|
||||
if (d2.Count == 0)
|
||||
return new DAC_場地遴選(conn).Select選定場地(課程企劃編號);
|
||||
else
|
||||
return d2[0].場地編號;
|
||||
}
|
||||
|
||||
public string Select選定場地名稱(int 課程企劃編號)
|
||||
{
|
||||
訓練課程企劃List d1 = SelectOne(課程企劃編號);
|
||||
if (d1.Count == 0)
|
||||
return "";
|
||||
|
||||
場地異動List d2 = new DAC_場地異動(conn).Select最後異動(課程企劃編號);
|
||||
if (d2.Count > 0)
|
||||
{
|
||||
if (d2[0].場地編號 > 0)
|
||||
return new DAC_場地(conn).Get場地名稱(d2[0].場地編號);
|
||||
return d2[0].場地名稱 ?? "";
|
||||
}
|
||||
|
||||
return new DAC_場地遴選(conn).Select選定場地名稱(課程企劃編號);
|
||||
}
|
||||
|
||||
public int Select選定講師(int 課程企劃編號, int 課程序號)
|
||||
{
|
||||
訓練課程內容List d1 = new DAC_訓練課程內容().SelectOne(課程企劃編號, 課程序號);
|
||||
if (d1.Count == 0)
|
||||
return 0;
|
||||
|
||||
講師異動List d2 = new DAC_講師異動(conn).Select最後異動(課程企劃編號, 課程序號);
|
||||
if (d2.Count == 0)
|
||||
return new DAC_講師遴選(conn).Select選定講師(課程企劃編號, 課程序號);
|
||||
else
|
||||
return d2[0].講師編號;
|
||||
}
|
||||
|
||||
public string Select選定講師名稱(int 課程企劃編號, int 課程序號)
|
||||
{
|
||||
訓練課程內容List d1 = new DAC_訓練課程內容().SelectOne(課程企劃編號, 課程序號);
|
||||
if (d1.Count == 0)
|
||||
return "";
|
||||
|
||||
講師異動List d2 = new DAC_講師異動(conn).Select最後異動(課程企劃編號, 課程序號);
|
||||
if (d2.Count > 0)
|
||||
{
|
||||
if (d2[0].講師編號 > 0)
|
||||
return new DAC_講師(conn).Get姓名(d2[0].講師編號);
|
||||
return d2[0].講師姓名 ?? "";
|
||||
}
|
||||
|
||||
return new DAC_講師遴選(conn).Select選定講師名稱(課程企劃編號, 課程序號);
|
||||
}
|
||||
|
||||
public DataTable Select年度課程執行狀況報表(string 公司別, int 年度, bool 包括未開課)
|
||||
{
|
||||
DbCommand cmd = NewCommand();
|
||||
cmd.CommandText = @"
|
||||
SELECT A.編號, A.訓練名稱, '' AS 訓練計畫別, A.訓練日期, A.訓練日期迄, A.訓練時數, '' AS 訓練場地,
|
||||
0 AS 訓練人數, A.預估經費, 0 AS 實際經費, 0.0 AS 學員出席率, 0.0 AS 整體滿意度
|
||||
FROM 訓練課程企劃 A
|
||||
WHERE A.訓練日期 >= @訓練日期1
|
||||
AND A.訓練日期 < @訓練日期2
|
||||
AND A.公司別 = @公司別 ";
|
||||
|
||||
if (!包括未開課)
|
||||
cmd.CommandText += " AND (A.已取消 IS NULL OR A.已取消 = 'N')";
|
||||
|
||||
cmd.CommandText += " ORDER BY A.訓練日期";
|
||||
|
||||
AddParam(cmd, "訓練日期1", new DateTime(年度, 1, 1));
|
||||
AddParam(cmd, "訓練日期2", new DateTime(年度 + 1, 1, 1));
|
||||
AddParam(cmd, "公司別", 公司別);
|
||||
|
||||
DataTable result = Select(cmd);
|
||||
|
||||
DAC_課程報名 Dao課程報名 = new DAC_課程報名(conn);
|
||||
DAC_課程經費 Dao課程經費 = new DAC_課程經費(conn);
|
||||
DAC_滿意度調查課程企劃 Dao滿意度調查課程企劃 = new DAC_滿意度調查課程企劃(conn);
|
||||
|
||||
// 填入統計欄位
|
||||
foreach (DataRow r in result.Rows)
|
||||
{
|
||||
int 編號 = DAC.GetInt32(r["編號"]);
|
||||
string 訓練計畫別 = "";
|
||||
|
||||
// 取得訓練計畫別
|
||||
DataTable 計畫Table = Dao課程報名.Select確定報名學員計畫(編號);
|
||||
foreach (DataRow r1 in 計畫Table.Rows)
|
||||
{
|
||||
訓練計畫別 += DAC.GetString(r1["計畫年度名稱"]) + "\r\n";
|
||||
}
|
||||
if (訓練計畫別.Length > 0)
|
||||
訓練計畫別 = 訓練計畫別.Trim();
|
||||
|
||||
// 取得場地及滿意度
|
||||
DataTable 滿意度Table = Dao滿意度調查課程企劃.Select滿意度統計(編號);
|
||||
r["訓練場地"] = Select選定場地名稱(編號);
|
||||
r["訓練人數"] = Dao課程報名.Get出席人數(編號);
|
||||
r["實際經費"] = Dao課程經費.Get經費合計(編號);
|
||||
r["學員出席率"] = Dao課程報名.Get出席率(編號);
|
||||
r["整體滿意度"] = 滿意度Table.Rows.Count > 0 ? DAC.GetDecimal(滿意度Table.Rows[0]["整體滿意度"]) : 0;
|
||||
r.EndEdit();
|
||||
}
|
||||
result.AcceptChanges();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public NameValueList Select可選課程日期(int 編號)
|
||||
{
|
||||
NameValueList result = new NameValueList();
|
||||
訓練課程企劃List d = SelectOne(編號);
|
||||
if (d.Count > 0)
|
||||
{
|
||||
if (d[0].訓練日期迄.Ticks == 0)
|
||||
{
|
||||
result.Add(d[0].訓練日期.ToString("yyyy-MM-dd"), d[0].訓練日期.ToString("yyyy-MM-dd"));
|
||||
}
|
||||
else
|
||||
{
|
||||
DateTime day = d[0].訓練日期;
|
||||
while (day.CompareTo(d[0].訓練日期迄) <= 0)
|
||||
{
|
||||
result.Add(day.ToString("yyyy-MM-dd"), day.ToString("yyyy-MM-dd"));
|
||||
day = day.AddDays(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
public bool Get場地講師已簽准(int 編號)
|
||||
{
|
||||
DAC_場地遴選 Dao場地遴選 = new DAC_場地遴選(conn);
|
||||
DAC_表單簽核主檔 Dao表單簽核主檔 = new DAC_表單簽核主檔(conn);
|
||||
場地遴選List 場地List = Dao場地遴選.SelectOne(編號);
|
||||
|
||||
bool 場地已簽准 = 場地List.Count > 0;
|
||||
|
||||
if (場地List.Count > 0)
|
||||
{
|
||||
表單簽核主檔 場地簽核status = Dao表單簽核主檔.GetLastStatus("場地遴選", String.Format("{0}", 編號));
|
||||
場地已簽准 &= 場地簽核status != null &&
|
||||
場地簽核status.應簽關數.CompareTo("D") != 0 &&
|
||||
場地簽核status.應簽關數.CompareTo(場地簽核status.已簽關數) == 0 &&
|
||||
場地簽核status.最終結果 == "Y";
|
||||
}
|
||||
|
||||
DAC_訓練課程內容 Dao訓練課程內容 = new DAC_訓練課程內容(conn);
|
||||
訓練課程內容List 課程內容List = Dao訓練課程內容.SelectBy課程企劃(編號);
|
||||
|
||||
bool 講師已簽准 = 課程內容List.Count > 0;
|
||||
|
||||
foreach (訓練課程內容 item in 課程內容List)
|
||||
{
|
||||
表單簽核主檔 講師簽核status = Dao表單簽核主檔.GetLastStatus("講師遴選", String.Format("{0}|{1}", 編號, item.課程序號));
|
||||
講師已簽准 &= 講師簽核status != null &&
|
||||
講師簽核status.應簽關數.CompareTo("D") != 0 &&
|
||||
講師簽核status.應簽關數.CompareTo(講師簽核status.已簽關數) == 0 &&
|
||||
講師簽核status.最終結果 == "Y";
|
||||
}
|
||||
|
||||
return 場地已簽准 && 講師已簽准;
|
||||
}
|
||||
|
||||
public bool Get場地講師已輸入(int 編號)
|
||||
{
|
||||
DAC_場地遴選 Dao場地遴選 = new DAC_場地遴選(conn);
|
||||
場地遴選List 場地List = Dao場地遴選.SelectOne(編號);
|
||||
|
||||
bool 場地已輸入 = true;
|
||||
|
||||
foreach (場地遴選 item in 場地List)
|
||||
{
|
||||
場地已輸入 &= (item.場地編號_A > 0 || !String.IsNullOrEmpty(item.場地名稱_A)) &&
|
||||
item.交通便利_A > 0 &&
|
||||
item.安全舒適_A > 0 &&
|
||||
item.空間大小_A > 0 &&
|
||||
item.設備完善_A > 0 &&
|
||||
item.價格合理_A > 0;
|
||||
}
|
||||
|
||||
DAC_訓練課程內容 Dao訓練課程內容 = new DAC_訓練課程內容(conn);
|
||||
DAC_講師遴選 Dao講師遴選 = new DAC_講師遴選(conn);
|
||||
訓練課程內容List 課程內容List = Dao訓練課程內容.SelectBy課程企劃(編號);
|
||||
|
||||
bool 講師已輸入 = true;
|
||||
|
||||
foreach (訓練課程內容 item in 課程內容List)
|
||||
{
|
||||
講師遴選List 講師List = Dao講師遴選.SelectOne(編號, item.課程序號);
|
||||
foreach (講師遴選 item2 in 講師List)
|
||||
{
|
||||
講師已輸入 &= (item2.講師編號_A > 0 || !String.IsNullOrEmpty(item2.講師姓名_A)) &&
|
||||
item2.專業背景_A > 0 &&
|
||||
item2.講授經驗_A > 0 &&
|
||||
item2.口碑與評價_A > 0 &&
|
||||
item2.費用_A > 0 &&
|
||||
item2.配合度_A > 0 &&
|
||||
(item2.講師編號_B > 0 || !String.IsNullOrEmpty(item2.講師姓名_B)) &&
|
||||
item2.專業背景_B > 0 &&
|
||||
item2.講授經驗_B > 0 &&
|
||||
item2.口碑與評價_B > 0 &&
|
||||
item2.費用_B > 0 &&
|
||||
item2.配合度_B > 0;
|
||||
}
|
||||
}
|
||||
|
||||
DAC_教材遴選 Dao教材遴選 = new DAC_教材遴選(conn);
|
||||
|
||||
bool 教材已輸入 = true;
|
||||
|
||||
foreach (訓練課程內容 item in 課程內容List)
|
||||
{
|
||||
教材遴選List 教材List = Dao教材遴選.SelectOne(編號, item.課程序號);
|
||||
foreach (教材遴選Item item2 in 教材List)
|
||||
{
|
||||
教材已輸入 &= !String.IsNullOrEmpty(item2.教材名稱_A) &&
|
||||
item2.符合訓練目標_A > 0 &&
|
||||
item2.架構規劃完整性_A > 0 &&
|
||||
item2.符合課程時數_A > 0 &&
|
||||
item2.引起學習興趣_A > 0 &&
|
||||
item2.未來工作參考運用_A > 0 &&
|
||||
!String.IsNullOrEmpty(item2.教材名稱_B) &&
|
||||
item2.符合訓練目標_B > 0 &&
|
||||
item2.架構規劃完整性_B > 0 &&
|
||||
item2.符合課程時數_B > 0 &&
|
||||
item2.引起學習興趣_B > 0 &&
|
||||
item2.未來工作參考運用_B > 0;
|
||||
}
|
||||
}
|
||||
|
||||
return 場地已輸入 && 講師已輸入 && 教材已輸入;
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 訓練課程企劃 資料集合類別
|
||||
///</summary>
|
||||
public partial class 訓練課程企劃List : List<訓練課程企劃>
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 訓練課程企劃 資料紀錄類別
|
||||
///</summary>
|
||||
public partial class 訓練課程企劃
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
|
||||
public static string Get訓練日期Str(DateTime 訓練日期, DateTime 訓練日期迄, string Format = "yyyy年MM月dd日(dddd)")
|
||||
{
|
||||
if (訓練日期迄.Ticks == 0)
|
||||
return (訓練日期.Ticks > 0 ? 訓練日期.ToString(Format) : "");
|
||||
else if (訓練日期迄.Ticks >= 0 && 訓練日期.CompareTo(訓練日期迄) == 0)
|
||||
return (訓練日期.Ticks > 0 ? 訓練日期.ToString(Format) : "");
|
||||
else
|
||||
return (訓練日期.Ticks > 0 ? 訓練日期.ToString(Format) : "")
|
||||
+ (訓練日期迄.Ticks > 0 ? " 至 " + 訓練日期迄.ToString(Format) : "");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,628 @@
|
||||
//
|
||||
// 這個檔案是 訓練課程內容 資料表的資料存取類別 檔案一
|
||||
// 請不要修改這個檔案,重新產生資料存取類別時,這個檔案會被覆蓋掉
|
||||
//
|
||||
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 訓練課程企劃編號, 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, "課程大綱", 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, "課程大綱", 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(int 訓練課程企劃編號, 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(int 訓練課程企劃編號, 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.GetInt32(reader[0]);
|
||||
newItem.課程序號 = DAC.GetInt32(reader[1]);
|
||||
newItem.訓練日期 = DAC.GetDateTime(reader[2]);
|
||||
newItem.時間起 = DAC.GetString(reader[3]);
|
||||
newItem.時間迄 = DAC.GetString(reader[4]);
|
||||
newItem.課程類別 = DAC.GetString(reader[5]);
|
||||
newItem.課程編號 = DAC.GetString(reader[6]);
|
||||
newItem.課程名稱 = DAC.GetString(reader[7]);
|
||||
newItem.課程大綱 = DAC.GetString(reader[8]);
|
||||
newItem.時數 = DAC.GetInt32(reader[9]);
|
||||
newItem.講師編號 = DAC.GetInt32(reader[10]);
|
||||
newItem.節次 = DAC.GetInt32(reader[11]);
|
||||
newItem.通知發送狀態 = DAC.GetString(reader[12]);
|
||||
newItem.講師滿意度 = DAC.GetInt32(reader[13]);
|
||||
newItem.DB_APPNO = DAC.GetInt32(reader[14]);
|
||||
newItem.DB_CRDAT = DAC.GetDateTime(reader[15]);
|
||||
newItem.DB_CRUSR = DAC.GetString(reader[16]);
|
||||
newItem.DB_TRDAT = DAC.GetDateTime(reader[17]);
|
||||
newItem.DB_TRUSR = DAC.GetString(reader[18]);
|
||||
Add(newItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 訓練課程內容 資料紀錄類別
|
||||
///</summary>
|
||||
[Serializable]
|
||||
public partial class 訓練課程內容 : DataItemBase
|
||||
{
|
||||
private int _訓練課程企劃編號;
|
||||
private int _課程序號;
|
||||
private DateTime _訓練日期;
|
||||
private string _時間起;
|
||||
private string _時間迄;
|
||||
private string _課程類別;
|
||||
private string _課程編號;
|
||||
private string _課程名稱;
|
||||
private string _課程大綱;
|
||||
private int _時數;
|
||||
private int _講師編號;
|
||||
private int _節次;
|
||||
private string _通知發送狀態;
|
||||
private int _講師滿意度;
|
||||
|
||||
#region 資料欄位
|
||||
///<summary>
|
||||
/// 訓練課程企劃編號
|
||||
///</summary>
|
||||
[DataObjectField(true, false, false)]
|
||||
public int 訓練課程企劃編號
|
||||
{
|
||||
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(false, false, true)]
|
||||
public DateTime 訓練日期
|
||||
{
|
||||
get
|
||||
{
|
||||
return _訓練日期;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _訓練日期)
|
||||
{
|
||||
_訓練日期 = value;
|
||||
OnPropertyChanged("訓練日期");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 時間起
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 5)]
|
||||
public string 時間起
|
||||
{
|
||||
get
|
||||
{
|
||||
return _時間起;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _時間起)
|
||||
{
|
||||
_時間起 = value;
|
||||
OnPropertyChanged("時間起");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 時間迄
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 5)]
|
||||
public string 時間迄
|
||||
{
|
||||
get
|
||||
{
|
||||
return _時間迄;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _時間迄)
|
||||
{
|
||||
_時間迄 = value;
|
||||
OnPropertyChanged("時間迄");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 課程類別
|
||||
///</summary>
|
||||
[DataObjectField(false, false, false, 50)]
|
||||
public string 課程類別
|
||||
{
|
||||
get
|
||||
{
|
||||
return _課程類別;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _課程類別)
|
||||
{
|
||||
_課程類別 = value;
|
||||
OnPropertyChanged("課程類別");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 課程編號
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 50)]
|
||||
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("課程名稱");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 課程大綱
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 2000)]
|
||||
public string 課程大綱
|
||||
{
|
||||
get
|
||||
{
|
||||
return _課程大綱;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _課程大綱)
|
||||
{
|
||||
_課程大綱 = value;
|
||||
OnPropertyChanged("課程大綱");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 時數
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public int 時數
|
||||
{
|
||||
get
|
||||
{
|
||||
return _時數;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _時數)
|
||||
{
|
||||
_時數 = value;
|
||||
OnPropertyChanged("時數");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 講師編號
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public int 講師編號
|
||||
{
|
||||
get
|
||||
{
|
||||
return _講師編號;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _講師編號)
|
||||
{
|
||||
_講師編號 = value;
|
||||
OnPropertyChanged("講師編號");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 節次
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public int 節次
|
||||
{
|
||||
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>
|
||||
/// 講師滿意度
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public int 講師滿意度
|
||||
{
|
||||
get
|
||||
{
|
||||
return _講師滿意度;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _講師滿意度)
|
||||
{
|
||||
_講師滿意度 = value;
|
||||
OnPropertyChanged("講師滿意度");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,402 @@
|
||||
//
|
||||
// 這個檔案是 訓練課程內容 資料表的資料存取類別 檔案二
|
||||
// 您可以修改這個檔案,加入您自訂的屬性與方法
|
||||
//
|
||||
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()
|
||||
{
|
||||
訓練課程內容List result = new 訓練課程內容List();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where;
|
||||
|
||||
cmdSelect.CommandText += _order;
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// InsertOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查或是自動編號等動作
|
||||
/// 回傳 false 會打斷 InsertOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeInsertOne(訓練課程內容 value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// InsertOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterInsertOne(訓練課程內容 value)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// InsertOne 發生錯誤時會執行此方法
|
||||
///</summary>
|
||||
protected virtual void OnInsertOneError(Exception error, out bool handled)
|
||||
{
|
||||
handled = false;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查
|
||||
/// 回傳 false 會打斷 UpdateOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeUpdateOne(訓練課程內容 value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<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_講師遴選 Dao講師遴選 = new DAC_講師遴選(conn);
|
||||
講師遴選List d = Dao講師遴選.SelectOne(value.訓練課程企劃編號, value.課程序號);
|
||||
if (d.Count > 0)
|
||||
Dao講師遴選.DeleteOne(value.訓練課程企劃編號, value.課程序號, d[0].DB_APPNO);
|
||||
|
||||
// 刪除訓練課程,同時要刪除教材遴選資料
|
||||
DAC_教材遴選 Dao教材遴選 = new DAC_教材遴選(conn);
|
||||
教材遴選List d2 = Dao教材遴選.SelectOne(value.訓練課程企劃編號, value.課程序號);
|
||||
if (d2.Count > 0)
|
||||
Dao教材遴選.DeleteOne(value.訓練課程企劃編號, value.課程序號, d2[0].DB_APPNO);
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查
|
||||
/// 回傳 false 會打斷 DeleteOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeDeleteOne(int 訓練課程企劃編號, int 課程序號, int DB_APPNO)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterDeleteOne(int 訓練課程企劃編號, int 課程序號, int DB_APPNO)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 發生錯誤時會執行此方法
|
||||
///</summary>
|
||||
protected virtual void OnDeleteOneError(Exception error, out bool handled)
|
||||
{
|
||||
handled = false;
|
||||
}
|
||||
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public 訓練課程內容List SelectBy課程企劃(int 訓練課程企劃編號)
|
||||
{
|
||||
訓練課程內容List result = new 訓練課程內容List();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where
|
||||
+ " and 訓練課程企劃編號 = @訓練課程企劃編號 "
|
||||
+ " order by 節次 ";
|
||||
AddParam(cmdSelect, "訓練課程企劃編號", 訓練課程企劃編號);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public DataTable Select上課講師(int 訓練課程企劃編號)
|
||||
{
|
||||
DataTable result = new DataTable();
|
||||
result.Columns.Add("課程序號", typeof(int));
|
||||
result.Columns.Add("講師編號", typeof(int));
|
||||
result.Columns.Add("講師姓名", typeof(string));
|
||||
result.Columns.Add("電子郵件", typeof(string));
|
||||
result.Columns.Add("通知發送狀態", typeof(string));
|
||||
result.Columns.Add("訓練日期", typeof(DateTime));
|
||||
result.Columns.Add("時間起", typeof(string));
|
||||
result.Columns.Add("時間迄", typeof(string));
|
||||
|
||||
訓練課程內容List d = new 訓練課程內容List();
|
||||
IDataList list = d as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where
|
||||
+ " and 訓練課程企劃編號 = @訓練課程企劃編號 "
|
||||
+ " order by 節次 ";
|
||||
AddParam(cmdSelect, "訓練課程企劃編號", 訓練課程企劃編號);
|
||||
Select(cmdSelect, ref list);
|
||||
|
||||
DAC_講師 Dao講師 = new DAC_講師(conn);
|
||||
DAC_講師遴選 Dao講師遴選 = new DAC_講師遴選(conn);
|
||||
|
||||
// 把每一節課的講師查出來
|
||||
foreach (訓練課程內容 item in d)
|
||||
{
|
||||
講師 d1 = new DAC_GetData(conn).取得選定講師(item.訓練課程企劃編號, item.課程序號);
|
||||
|
||||
if (result.Select(String.Format("講師編號={0}", d1.編號)).Length == 0)
|
||||
{
|
||||
DataRow newRow = result.NewRow();
|
||||
newRow["課程序號"] = d[0].課程序號;
|
||||
newRow["講師編號"] = d1.編號;
|
||||
newRow["講師姓名"] = d1.姓名;
|
||||
newRow["電子郵件"] = d1.電子郵件;
|
||||
newRow["通知發送狀態"] = d[0].通知發送狀態;
|
||||
newRow["訓練日期"] = item.訓練日期;
|
||||
newRow["時間起"] = item.時間起;
|
||||
newRow["時間迄"] = item.時間迄;
|
||||
result.Rows.Add(newRow);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Delete)]
|
||||
public int DeleteBy課程企劃(int 訓練課程企劃編號)
|
||||
{
|
||||
DbCommand cmdDelete = NewCommand();
|
||||
cmdDelete.CommandText =
|
||||
@"delete from 訓練課程內容
|
||||
where 1=1
|
||||
and 訓練課程企劃編號 = @訓練課程企劃編號";
|
||||
AddParam(cmdDelete, "訓練課程企劃編號", 訓練課程企劃編號);
|
||||
int rowsAffected = ExecuteNonQuery(cmdDelete);
|
||||
return rowsAffected;
|
||||
}
|
||||
|
||||
public int Next課程序號(int 訓練課程企劃編號)
|
||||
{
|
||||
DbCommand cmd = NewCommand();
|
||||
cmd.CommandText = @"SELECT ISNULL(MAX(課程序號), 0) + 1 FROM " + _tableName + " WHERE 訓練課程企劃編號=@訓練課程企劃編號";
|
||||
AddParam(cmd, "訓練課程企劃編號", 訓練課程企劃編號);
|
||||
int result;
|
||||
ExecuteScalar(cmd, out result);
|
||||
return result;
|
||||
}
|
||||
|
||||
public int Next節次(int 訓練課程企劃編號)
|
||||
{
|
||||
DbCommand cmd = NewCommand();
|
||||
cmd.CommandText = @"SELECT ISNULL(MAX(節次), 0) + 1 FROM " + _tableName + " WHERE 訓練課程企劃編號=@訓練課程企劃編號";
|
||||
AddParam(cmd, "訓練課程企劃編號", 訓練課程企劃編號);
|
||||
int result;
|
||||
ExecuteScalar(cmd, out result);
|
||||
return result;
|
||||
}
|
||||
|
||||
public void 節次Up(int 訓練課程企劃編號, int 節次)
|
||||
{
|
||||
// 取出這一筆的資料,與節次是上一筆的資料
|
||||
DbCommand cmd = NewCommand();
|
||||
cmd.CommandText = @"SELECT 節次 FROM " + _tableName + " WHERE 訓練課程企劃編號=@訓練課程企劃編號 AND 節次=@節次";
|
||||
AddParam(cmd, "訓練課程企劃編號", 訓練課程企劃編號);
|
||||
AddParam(cmd, "節次", 節次);
|
||||
int 節次1;
|
||||
ExecuteScalar(cmd, out 節次1);
|
||||
cmd.CommandText = @"SELECT TOP 1 節次 FROM " + _tableName + " WHERE 訓練課程企劃編號=@訓練課程企劃編號 AND 節次 < @節次 ORDER BY 節次 DESC";
|
||||
AddParam(cmd, "訓練課程企劃編號", 訓練課程企劃編號);
|
||||
AddParam(cmd, "節次", 節次);
|
||||
int 節次2;
|
||||
ExecuteScalar(cmd, out 節次2);
|
||||
|
||||
if (節次2 == 0)
|
||||
return;
|
||||
else
|
||||
{
|
||||
交換節次(訓練課程企劃編號, 節次1, 節次2);
|
||||
}
|
||||
}
|
||||
|
||||
public void 節次Down(int 訓練課程企劃編號, int 節次)
|
||||
{
|
||||
// 取出這一筆的資料,與節次是上一筆的資料
|
||||
DbCommand cmd = NewCommand();
|
||||
cmd.CommandText = @"SELECT 節次 FROM " + _tableName + " WHERE 訓練課程企劃編號=@訓練課程企劃編號 AND 節次=@節次";
|
||||
AddParam(cmd, "訓練課程企劃編號", 訓練課程企劃編號);
|
||||
AddParam(cmd, "節次", 節次);
|
||||
int 節次1;
|
||||
ExecuteScalar(cmd, out 節次1);
|
||||
cmd.CommandText = @"SELECT TOP 1 節次 FROM " + _tableName + " WHERE 訓練課程企劃編號=@訓練課程企劃編號 AND 節次 > @節次 ORDER BY 節次";
|
||||
AddParam(cmd, "訓練課程企劃編號", 訓練課程企劃編號);
|
||||
AddParam(cmd, "節次", 節次);
|
||||
int 節次2;
|
||||
ExecuteScalar(cmd, out 節次2);
|
||||
|
||||
if (節次2 == 0)
|
||||
return;
|
||||
else
|
||||
{
|
||||
交換節次(訓練課程企劃編號, 節次1, 節次2);
|
||||
}
|
||||
}
|
||||
|
||||
private void 交換節次(int 訓練課程企劃編號, int 節次1, int 節次2)
|
||||
{
|
||||
DbCommand cmdUpdate = NewCommand();
|
||||
cmdUpdate.CommandText = @"UPDATE " + _tableName + " SET 節次=@新節次 WHERE 訓練課程企劃編號=@訓練課程企劃編號 AND 節次=@節次";
|
||||
AddParam(cmdUpdate, "新節次", 9999);
|
||||
AddParam(cmdUpdate, "訓練課程企劃編號", 訓練課程企劃編號);
|
||||
AddParam(cmdUpdate, "節次", 節次1);
|
||||
ExecuteNonQuery(cmdUpdate);
|
||||
|
||||
AddParam(cmdUpdate, "新節次", 節次1);
|
||||
AddParam(cmdUpdate, "訓練課程企劃編號", 訓練課程企劃編號);
|
||||
AddParam(cmdUpdate, "節次", 節次2);
|
||||
ExecuteNonQuery(cmdUpdate);
|
||||
|
||||
AddParam(cmdUpdate, "新節次", 節次2);
|
||||
AddParam(cmdUpdate, "訓練課程企劃編號", 訓練課程企劃編號);
|
||||
AddParam(cmdUpdate, "節次", 9999);
|
||||
ExecuteNonQuery(cmdUpdate);
|
||||
}
|
||||
|
||||
public void 重排節次(int 訓練課程企劃編號)
|
||||
{
|
||||
// 1. 所有節次 +10000
|
||||
DbCommand cmdUpdate = NewCommand();
|
||||
cmdUpdate.CommandText = @"UPDATE " + _tableName + " SET 節次=節次+10000 WHERE 訓練課程企劃編號=@訓練課程企劃編號 ";
|
||||
AddParam(cmdUpdate, "訓練課程企劃編號", 訓練課程企劃編號);
|
||||
ExecuteNonQuery(cmdUpdate);
|
||||
|
||||
// 2. 取出節次
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = @"SELECT 節次 FROM " + _tableName + " WHERE 訓練課程企劃編號=@訓練課程企劃編號 ORDER BY 節次";
|
||||
AddParam(cmdSelect, "訓練課程企劃編號", 訓練課程企劃編號);
|
||||
DataTable dt = Select(cmdSelect);
|
||||
|
||||
// 3. 一一更新為新節次
|
||||
int 節次 = 1;
|
||||
cmdUpdate.CommandText = @"UPDATE " + _tableName + " SET 節次=@新節次 WHERE 訓練課程企劃編號=@訓練課程企劃編號 AND 節次=@節次";
|
||||
foreach (DataRow r in dt.Rows)
|
||||
{
|
||||
AddParam(cmdUpdate, "新節次", 節次);
|
||||
AddParam(cmdUpdate, "訓練課程企劃編號", 訓練課程企劃編號);
|
||||
AddParam(cmdUpdate, "節次", r[0]);
|
||||
ExecuteNonQuery(cmdUpdate);
|
||||
節次++;
|
||||
}
|
||||
}
|
||||
|
||||
public void 標記已發送講師通知(int 訓練課程編號, int 課程序號, string UserId)
|
||||
{
|
||||
訓練課程內容List values = SelectOne(訓練課程編號, 課程序號);
|
||||
if (values.Count > 0)
|
||||
{
|
||||
values[0].通知發送狀態 = "Y";
|
||||
values[0].DB_TRUSR = UserId;
|
||||
UpdateOne(values[0]);
|
||||
}
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public List<DateTime> Select訓練日期List(int 訓練課程編號)
|
||||
{
|
||||
List<DateTime> result = new List<DateTime>();
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = @"select distinct [訓練日期] " + _from
|
||||
+ @" where [訓練課程企劃編號]=@訓練課程企劃編號 "
|
||||
+ @" order by [訓練日期] ";
|
||||
AddParam(cmdSelect, "@訓練課程企劃編號", 訓練課程編號);
|
||||
|
||||
bool wantClose = false;
|
||||
IDataReader reader = ExecuteReader(cmdSelect, out wantClose);
|
||||
try
|
||||
{
|
||||
while (reader.Read())
|
||||
{
|
||||
if (!reader.IsDBNull(0))
|
||||
result.Add(reader.GetDateTime(0));
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
cmdSelect.Cancel();
|
||||
reader.Close();
|
||||
CloseConnection(wantClose);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 訓練課程內容 資料集合類別
|
||||
///</summary>
|
||||
public partial class 訓練課程內容List : List<訓練課程內容>
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 訓練課程內容 資料紀錄類別
|
||||
///</summary>
|
||||
public partial class 訓練課程內容
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
|
||||
public static string Get起訖時間Str(object 時間起, object 時間迄)
|
||||
{
|
||||
string s時間起 = DAC.GetString(時間起);
|
||||
string s時間迄 = DAC.GetString(時間迄);
|
||||
|
||||
if (s時間起.Length > 0 && s時間迄.Length > 0)
|
||||
return s時間起 + " 至 " + s時間迄;
|
||||
else if (s時間起.Length > 0)
|
||||
return s時間起;
|
||||
else if (s時間迄.Length > 0)
|
||||
return s時間迄;
|
||||
else
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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 編號, 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, "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 編號, 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(int 編號, 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.GetInt32(reader[0]);
|
||||
newItem.異動通知項次 = DAC.GetInt32(reader[1]);
|
||||
newItem.異動通知日期 = DAC.GetDateTime(reader[2]);
|
||||
newItem.異動通知內容 = DAC.GetString(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 int _異動通知項次;
|
||||
private DateTime _異動通知日期;
|
||||
private string _異動通知內容;
|
||||
|
||||
#region 資料欄位
|
||||
///<summary>
|
||||
/// 編號
|
||||
///</summary>
|
||||
[DataObjectField(true, false, false)]
|
||||
public int 編號
|
||||
{
|
||||
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(false, false, true)]
|
||||
public DateTime 異動通知日期
|
||||
{
|
||||
get
|
||||
{
|
||||
return _異動通知日期;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _異動通知日期)
|
||||
{
|
||||
_異動通知日期 = value;
|
||||
OnPropertyChanged("異動通知日期");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 異動說明
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 2000)]
|
||||
public string 異動通知內容
|
||||
{
|
||||
get
|
||||
{
|
||||
return _異動通知內容;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _異動通知內容)
|
||||
{
|
||||
_異動通知內容 = value;
|
||||
OnPropertyChanged("異動通知內容");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,163 @@
|
||||
//
|
||||
// 這個檔案是 訓練課程異動通知 資料表的資料存取類別 檔案二
|
||||
// 您可以修改這個檔案,加入您自訂的屬性與方法
|
||||
//
|
||||
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)
|
||||
{
|
||||
value.異動通知項次 = Next項次(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 編號, int 異動通知項次, int DB_APPNO)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterDeleteOne(int 編號, int 異動通知項次, int DB_APPNO)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 發生錯誤時會執行此方法
|
||||
///</summary>
|
||||
///<param name="handled">錯誤是否已經處理妥當</param>
|
||||
protected virtual void OnDeleteOneError(Exception error, out bool handled)
|
||||
{
|
||||
handled = false;
|
||||
}
|
||||
|
||||
#endregion
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
|
||||
private int Next項次(int 編號)
|
||||
{
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText =
|
||||
@"select isnull(max(異動通知項次), 0) + 1 from " + _tableName
|
||||
+ " where 編號 = @編號";
|
||||
AddParam(cmdSelect, "編號", 編號);
|
||||
int i;
|
||||
ExecuteScalar(cmdSelect, out i);
|
||||
return i;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public 訓練課程異動通知List Select訓練課程企劃(int 編號)
|
||||
{
|
||||
訓練課程異動通知List result = new 訓練課程異動通知List();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where
|
||||
+ " and 編號 = @編號 "
|
||||
+ " order by 異動通知項次";
|
||||
AddParam(cmdSelect, "編號", 編號);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 訓練課程異動通知 資料集合類別
|
||||
///</summary>
|
||||
public partial class 訓練課程異動通知List : List<訓練課程異動通知>
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 訓練課程異動通知 資料紀錄類別
|
||||
///</summary>
|
||||
public partial class 訓練課程異動通知
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,360 @@
|
||||
//
|
||||
// 這個檔案是 訓練課程異動通知發送紀錄 資料表的資料存取類別 檔案一
|
||||
// 請不要修改這個檔案,重新產生資料存取類別時,這個檔案會被覆蓋掉
|
||||
//
|
||||
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 編號, int 異動通知項次, string 學員編號)
|
||||
{
|
||||
訓練課程異動通知發送紀錄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, "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, "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(int 編號, 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 學員編號 = @學員編號
|
||||
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(int 編號, int 異動通知項次, string 學員編號)
|
||||
{
|
||||
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.GetInt32(reader[0]);
|
||||
newItem.異動通知項次 = DAC.GetInt32(reader[1]);
|
||||
newItem.學員編號 = DAC.GetString(reader[2]);
|
||||
newItem.DB_APPNO = DAC.GetInt32(reader[3]);
|
||||
newItem.DB_CRDAT = DAC.GetDateTime(reader[4]);
|
||||
newItem.DB_CRUSR = DAC.GetString(reader[5]);
|
||||
newItem.DB_TRDAT = DAC.GetDateTime(reader[6]);
|
||||
newItem.DB_TRUSR = DAC.GetString(reader[7]);
|
||||
Add(newItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 訓練課程異動通知發送紀錄 資料紀錄類別
|
||||
///</summary>
|
||||
[Serializable]
|
||||
public partial class 訓練課程異動通知發送紀錄 : DataItemBase
|
||||
{
|
||||
private int _編號;
|
||||
private int _異動通知項次;
|
||||
private string _學員編號;
|
||||
|
||||
#region 資料欄位
|
||||
///<summary>
|
||||
/// 編號
|
||||
///</summary>
|
||||
[DataObjectField(true, false, false)]
|
||||
public int 編號
|
||||
{
|
||||
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, 10)]
|
||||
public string 學員編號
|
||||
{
|
||||
get
|
||||
{
|
||||
return _學員編號;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _學員編號)
|
||||
{
|
||||
_學員編號 = value;
|
||||
OnPropertyChanged("學員編號");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,154 @@
|
||||
//
|
||||
// 這個檔案是 訓練課程異動通知發送紀錄 資料表的資料存取類別 檔案二
|
||||
// 您可以修改這個檔案,加入您自訂的屬性與方法
|
||||
//
|
||||
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 編號, int 異動通知項次, string 學員編號, int DB_APPNO)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterDeleteOne(int 編號, 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 編號, int 異動通知項次, string 學員編號, string UserId)
|
||||
{
|
||||
if (SelectOne(編號, 異動通知項次, 學員編號).Count == 0)
|
||||
{
|
||||
訓練課程異動通知發送紀錄 newValue = new 訓練課程異動通知發送紀錄();
|
||||
newValue.編號 = 編號;
|
||||
newValue.異動通知項次 = 異動通知項次;
|
||||
newValue.學員編號 = 學員編號;
|
||||
newValue.DB_CRUSR = UserId;
|
||||
|
||||
InsertOne(newValue);
|
||||
}
|
||||
}
|
||||
|
||||
public bool 是否已發送(int 編號, int 異動通知項次, string 學員編號)
|
||||
{
|
||||
return SelectOne(編號, 異動通知項次, 學員編號).Count > 0;
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 訓練課程異動通知發送紀錄 資料集合類別
|
||||
///</summary>
|
||||
public partial class 訓練課程異動通知發送紀錄List : List<訓練課程異動通知發送紀錄>
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 訓練課程異動通知發送紀錄 資料紀錄類別
|
||||
///</summary>
|
||||
public partial class 訓練課程異動通知發送紀錄
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,327 @@
|
||||
//
|
||||
// 這個檔案是 訓練課程計畫別 資料表的資料存取類別 檔案一
|
||||
// 請不要修改這個檔案,重新產生資料存取類別時,這個檔案會被覆蓋掉
|
||||
//
|
||||
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, "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, "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.DB_APPNO = DAC.GetInt32(reader[2]);
|
||||
newItem.DB_CRDAT = DAC.GetDateTime(reader[3]);
|
||||
newItem.DB_CRUSR = DAC.GetString(reader[4]);
|
||||
newItem.DB_TRDAT = DAC.GetDateTime(reader[5]);
|
||||
newItem.DB_TRUSR = DAC.GetString(reader[6]);
|
||||
Add(newItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 訓練課程計畫別 資料紀錄類別
|
||||
///</summary>
|
||||
[Serializable]
|
||||
public partial class 訓練課程計畫別 : DataItemBase
|
||||
{
|
||||
private int _編號;
|
||||
private string _計畫編號;
|
||||
|
||||
#region 資料欄位
|
||||
///<summary>
|
||||
/// 編號
|
||||
///</summary>
|
||||
[DataObjectField(true, false, false)]
|
||||
public int 編號
|
||||
{
|
||||
get
|
||||
{
|
||||
return _編號;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _編號)
|
||||
{
|
||||
_編號 = value;
|
||||
OnPropertyChanged("編號");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 計畫編號
|
||||
///</summary>
|
||||
[DataObjectField(true, false, false, 20)]
|
||||
public string 計畫編號
|
||||
{
|
||||
get
|
||||
{
|
||||
return _計畫編號;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _計畫編號)
|
||||
{
|
||||
_計畫編號 = value;
|
||||
OnPropertyChanged("計畫編號");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,181 @@
|
||||
//
|
||||
// 這個檔案是 訓練課程計畫別 資料表的資料存取類別 檔案二
|
||||
// 您可以修改這個檔案,加入您自訂的屬性與方法
|
||||
//
|
||||
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 DataTable Select(int 編號)
|
||||
{
|
||||
訓練課程計畫別List result = new 訓練課程計畫別List();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText =
|
||||
@"SELECT A.計畫編號 AS BPPYN, ISNULL('【' + (SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BCUSZON' AND BSCLS=SUBSTRING(B.BPPYN,LEN(B.BPPYN)-5,1)) + '】', '') + B.BPPYM BPPYM
|
||||
FROM 訓練課程計畫別 A
|
||||
LEFT JOIN BPAA B ON A.計畫編號=B.BPPYN
|
||||
WHERE A.編號=@編號";
|
||||
|
||||
if (編號 > 0)
|
||||
{
|
||||
cmdSelect.CommandText += " and 編號 = @編號 ";
|
||||
AddParam(cmdSelect, "編號", 編號);
|
||||
}
|
||||
|
||||
cmdSelect.CommandText += _order;
|
||||
DataTable data = Select(cmdSelect);
|
||||
|
||||
foreach (DataRow r in data.Rows)
|
||||
{
|
||||
if (DAC.GetString(r["BPPYN"]) == "000000001")
|
||||
{
|
||||
r.BeginEdit();
|
||||
r["BPPYM"] = "【非專案人員】";
|
||||
r.EndEdit();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// InsertOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查或是自動編號等動作
|
||||
/// 回傳 false 會打斷 InsertOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeInsertOne(訓練課程計畫別 value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// InsertOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterInsertOne(訓練課程計畫別 value)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// InsertOne 發生錯誤時會執行此方法
|
||||
///</summary>
|
||||
protected virtual void OnInsertOneError(Exception error, out bool handled)
|
||||
{
|
||||
handled = false;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查
|
||||
/// 回傳 false 會打斷 UpdateOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeUpdateOne(訓練課程計畫別 value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<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)
|
||||
{
|
||||
}
|
||||
|
||||
///<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>
|
||||
protected virtual void OnDeleteOneError(Exception error, out bool handled)
|
||||
{
|
||||
handled = false;
|
||||
}
|
||||
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
[DataObjectMethod(DataObjectMethodType.Delete)]
|
||||
public int DeleteBy課程企劃(int 編號)
|
||||
{
|
||||
DbCommand cmdDelete = NewCommand();
|
||||
cmdDelete.CommandText =
|
||||
@"delete from 訓練課程計畫別
|
||||
where 1=1
|
||||
and 編號 = @編號";
|
||||
AddParam(cmdDelete, "編號", 編號);
|
||||
int rowsAffected = ExecuteNonQuery(cmdDelete);
|
||||
return rowsAffected;
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 訓練課程計畫別 資料集合類別
|
||||
///</summary>
|
||||
public partial class 訓練課程計畫別List : List<訓練課程計畫別>
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 訓練課程計畫別 資料紀錄類別
|
||||
///</summary>
|
||||
public partial class 訓練課程計畫別
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,479 @@
|
||||
//
|
||||
// 這個檔案是 講師異動 資料表的資料存取類別 檔案一
|
||||
// 請不要修改這個檔案,重新產生資料存取類別時,這個檔案會被覆蓋掉
|
||||
//
|
||||
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 課程企劃編號, int 課程序號, int 異動次數)
|
||||
{
|
||||
講師異動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, "講師姓名", 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(int 課程企劃編號, int 課程序號, 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 異動次數 = @異動次數
|
||||
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(int 課程企劃編號, int 課程序號, int 異動次數)
|
||||
{
|
||||
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.GetInt32(reader[0]);
|
||||
newItem.課程序號 = DAC.GetInt32(reader[1]);
|
||||
newItem.異動次數 = DAC.GetInt32(reader[2]);
|
||||
newItem.異動日期 = DAC.GetDateTime(reader[3]);
|
||||
newItem.講師編號 = DAC.GetInt32(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 int _課程企劃編號;
|
||||
private int _課程序號;
|
||||
private int _異動次數;
|
||||
private DateTime _異動日期;
|
||||
private int _講師編號;
|
||||
private string _講師姓名;
|
||||
private string _學歷;
|
||||
private string _現職;
|
||||
|
||||
#region 資料欄位
|
||||
///<summary>
|
||||
/// 課程企劃編號
|
||||
///</summary>
|
||||
[DataObjectField(true, false, false)]
|
||||
public int 課程企劃編號
|
||||
{
|
||||
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 int 異動次數
|
||||
{
|
||||
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 int 講師編號
|
||||
{
|
||||
get
|
||||
{
|
||||
return _講師編號;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _講師編號)
|
||||
{
|
||||
_講師編號 = value;
|
||||
OnPropertyChanged("講師編號");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 講師姓名
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 50)]
|
||||
public string 講師姓名
|
||||
{
|
||||
get
|
||||
{
|
||||
return _講師姓名;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _講師姓名)
|
||||
{
|
||||
_講師姓名 = value;
|
||||
OnPropertyChanged("講師姓名");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 學歷
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 50)]
|
||||
public string 學歷
|
||||
{
|
||||
get
|
||||
{
|
||||
return _學歷;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _學歷)
|
||||
{
|
||||
_學歷 = value;
|
||||
OnPropertyChanged("學歷");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 現職
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 50)]
|
||||
public string 現職
|
||||
{
|
||||
get
|
||||
{
|
||||
return _現職;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _現職)
|
||||
{
|
||||
_現職 = value;
|
||||
OnPropertyChanged("現職");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,184 @@
|
||||
//
|
||||
// 這個檔案是 講師異動 資料表的資料存取類別 檔案二
|
||||
// 您可以修改這個檔案,加入您自訂的屬性與方法
|
||||
//
|
||||
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)
|
||||
{
|
||||
value.異動日期 = DateTime.UtcNow.AddHours(8);
|
||||
value.異動次數 = Next異動次數(value.課程企劃編號, 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 課程企劃編號, int 課程序號, int 異動次數, int DB_APPNO)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterDeleteOne(int 課程企劃編號, int 課程序號, int 異動次數, int DB_APPNO)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 發生錯誤時會執行此方法
|
||||
///</summary>
|
||||
///<param name="handled">錯誤是否已經處理妥當</param>
|
||||
protected virtual void OnDeleteOneError(Exception error, out bool handled)
|
||||
{
|
||||
handled = false;
|
||||
}
|
||||
|
||||
#endregion
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
private int Next異動次數(int 課程企劃編號, int 課程序號)
|
||||
{
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = "select isnull(max(異動次數), 0) + 1 from " + _tableName
|
||||
+ " where 課程企劃編號 = @課程企劃編號 "
|
||||
+ " and 課程序號 = @課程序號 "
|
||||
;
|
||||
AddParam(cmdSelect, "課程企劃編號", 課程企劃編號);
|
||||
AddParam(cmdSelect, "課程序號", 課程序號);
|
||||
int i;
|
||||
ExecuteScalar(cmdSelect, out i);
|
||||
return i;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public 講師異動List Select異動(int 課程企劃編號, int 課程序號)
|
||||
{
|
||||
講師異動List result = new 講師異動List();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where
|
||||
+ " and 課程企劃編號 = @課程企劃編號 "
|
||||
+ " and 課程序號 = @課程序號 "
|
||||
+ " order by 異動次數 "
|
||||
;
|
||||
AddParam(cmdSelect, "課程企劃編號", 課程企劃編號);
|
||||
AddParam(cmdSelect, "課程序號", 課程序號);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
public 講師異動List Select最後異動(int 課程企劃編號, int 課程序號)
|
||||
{
|
||||
講師異動List result = new 講師異動List();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = "select top 1 " + _insert + _from + _where
|
||||
+ " and 課程企劃編號 = @課程企劃編號 "
|
||||
+ " and 課程序號 = @課程序號 "
|
||||
+ " order by 異動次數 desc "
|
||||
;
|
||||
AddParam(cmdSelect, "課程企劃編號", 課程企劃編號);
|
||||
AddParam(cmdSelect, "課程序號", 課程序號);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 講師異動 資料集合類別
|
||||
///</summary>
|
||||
public partial class 講師異動List : List<講師異動>
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 講師異動 資料紀錄類別
|
||||
///</summary>
|
||||
public partial class 講師異動
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,342 @@
|
||||
//
|
||||
// 這個檔案是 講師遴選 資料表的資料存取類別 檔案二
|
||||
// 您可以修改這個檔案,加入您自訂的屬性與方法
|
||||
//
|
||||
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()
|
||||
{
|
||||
講師遴選List result = new 講師遴選List();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where;
|
||||
|
||||
cmdSelect.CommandText += _order;
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// InsertOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查或是自動編號等動作
|
||||
/// 回傳 false 會打斷 InsertOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeInsertOne(講師遴選 value)
|
||||
{
|
||||
value.合計_A = value.專業背景_A + value.講授經驗_A + value.口碑與評價_A + value.費用_A + value.配合度_A;
|
||||
value.合計_B = value.專業背景_B + value.講授經驗_B + value.口碑與評價_B + value.費用_B + value.配合度_B;
|
||||
value.合計_C = value.專業背景_C + value.講授經驗_C + value.口碑與評價_C + value.費用_C + value.配合度_C;
|
||||
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)
|
||||
{
|
||||
value.合計_A = value.專業背景_A + value.講授經驗_A + value.口碑與評價_A + value.費用_A + value.配合度_A;
|
||||
value.合計_B = value.專業背景_B + value.講授經驗_B + value.口碑與評價_B + value.費用_B + value.配合度_B;
|
||||
value.合計_C = value.專業背景_C + value.講授經驗_C + value.口碑與評價_C + value.費用_C + value.配合度_C;
|
||||
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)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查
|
||||
/// 回傳 false 會打斷 DeleteOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeDeleteOne(int 課程企劃編號, int 課程序號, int DB_APPNO)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterDeleteOne(int 課程企劃編號, int 課程序號, int DB_APPNO)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 發生錯誤時會執行此方法
|
||||
///</summary>
|
||||
protected virtual void OnDeleteOneError(Exception error, out bool handled)
|
||||
{
|
||||
handled = false;
|
||||
}
|
||||
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
public void UpdateTeacher(int 課程企劃編號, int 課程序號, string 講師別,
|
||||
int 講師編號, string 學歷, string 現職, string 師資來源, int 專業背景,
|
||||
int 講授經驗, int 口碑與評價, int 費用, int 配合度)
|
||||
{
|
||||
if (SelectOne(課程企劃編號, 課程序號).Count == 0)
|
||||
{
|
||||
講師遴選 newValue = new 講師遴選();
|
||||
newValue.課程企劃編號 = 課程企劃編號;
|
||||
newValue.課程序號 = 課程序號;
|
||||
newValue.DB_CRDAT = DateTime.UtcNow.AddHours(8);
|
||||
newValue.DB_CRUSR = CurrentUserId;
|
||||
InsertOne(newValue);
|
||||
}
|
||||
|
||||
DbCommand cmdUpdate = NewCommand();
|
||||
cmdUpdate.CommandText = String.Format(
|
||||
"UPDATE " + _tableName
|
||||
+ " SET 講師編號_{0} = @講師編號 , "
|
||||
+ " 學歷_{0} = @學歷 , "
|
||||
+ " 現職_{0} = @現職 , "
|
||||
+ " 師資來源_{0} = @師資來源 , "
|
||||
+ " 專業背景_{0} = @專業背景 , "
|
||||
+ " 講授經驗_{0} = @講授經驗 , "
|
||||
+ " 口碑與評價_{0} = @口碑與評價 , "
|
||||
+ " 費用_{0} = @費用 , "
|
||||
+ " 配合度_{0} = @配合度 , "
|
||||
+ " 合計_{0} = @合計 , "
|
||||
+ " DB_APPNO = DB_APPNO + 1 , "
|
||||
+ " DB_TRDAT = GetDate() , "
|
||||
+ " DB_TRUSR = @DB_TRUSR "
|
||||
+ " WHERE 課程企劃編號 = @課程企劃編號"
|
||||
+ " AND 課程序號 = @課程序號", 講師別);
|
||||
AddParam(cmdUpdate, "講師編號", 講師編號);
|
||||
AddParam(cmdUpdate, "學歷", 學歷);
|
||||
AddParam(cmdUpdate, "現職", 現職);
|
||||
AddParam(cmdUpdate, "師資來源", 師資來源);
|
||||
AddParam(cmdUpdate, "專業背景", 專業背景);
|
||||
AddParam(cmdUpdate, "講授經驗", 講授經驗);
|
||||
AddParam(cmdUpdate, "口碑與評價", 口碑與評價);
|
||||
AddParam(cmdUpdate, "費用", 費用);
|
||||
AddParam(cmdUpdate, "配合度", 配合度);
|
||||
AddParam(cmdUpdate, "合計", 專業背景 + 講授經驗 + 口碑與評價 + 費用 + 配合度);
|
||||
AddParam(cmdUpdate, "DB_TRUSR", CurrentUserId);
|
||||
AddParam(cmdUpdate, "課程企劃編號", 課程企劃編號);
|
||||
AddParam(cmdUpdate, "課程序號", 課程序號);
|
||||
ExecuteNonQuery(cmdUpdate);
|
||||
}
|
||||
|
||||
public void UpdateComment(int 課程企劃編號, int 課程序號, string 總評, string 備註)
|
||||
{
|
||||
if (SelectOne(課程企劃編號, 課程序號).Count == 0)
|
||||
{
|
||||
講師遴選 newValue = new 講師遴選();
|
||||
newValue.課程企劃編號 = 課程企劃編號;
|
||||
newValue.課程序號 = 課程序號;
|
||||
newValue.DB_CRDAT = DateTime.UtcNow.AddHours(8);
|
||||
newValue.DB_CRUSR = CurrentUserId;
|
||||
InsertOne(newValue);
|
||||
}
|
||||
|
||||
DbCommand cmdUpdate = NewCommand();
|
||||
cmdUpdate.CommandText =
|
||||
"UPDATE " + _tableName
|
||||
+ " SET 總評 = @總評 , "
|
||||
+ " 備註 = @備註 , "
|
||||
+ " DB_APPNO = DB_APPNO + 1 , "
|
||||
+ " DB_TRDAT = GetDate() , "
|
||||
+ " DB_TRUSR = @DB_TRUSR "
|
||||
+ " WHERE 課程企劃編號 = @課程企劃編號"
|
||||
+ " AND 課程序號 = @課程序號";
|
||||
AddParam(cmdUpdate, "總評", 總評);
|
||||
AddParam(cmdUpdate, "備註", 備註);
|
||||
AddParam(cmdUpdate, "DB_TRUSR", CurrentUserId);
|
||||
AddParam(cmdUpdate, "課程企劃編號", 課程企劃編號);
|
||||
AddParam(cmdUpdate, "課程序號", 課程序號);
|
||||
ExecuteNonQuery(cmdUpdate);
|
||||
}
|
||||
|
||||
public void ClearTeacher(int 課程企劃編號, int 課程序號, string 講師別)
|
||||
{
|
||||
if (SelectOne(課程企劃編號, 課程序號).Count == 0)
|
||||
return;
|
||||
|
||||
DbCommand cmdUpdate = NewCommand();
|
||||
cmdUpdate.CommandText =
|
||||
"UPDATE " + _tableName
|
||||
+ " SET 講師編號_" + 講師別 + " = null, "
|
||||
+ " 師資來源_" + 講師別 + " = null, "
|
||||
+ " 專業背景_" + 講師別 + " = null, "
|
||||
+ " 講授經驗_" + 講師別 + " = null, "
|
||||
+ " 口碑與評價_" + 講師別 + " = null, "
|
||||
+ " 費用_" + 講師別 + " = null, "
|
||||
+ " 配合度_" + 講師別 + " = null, "
|
||||
+ " 合計_" + 講師別 + " = null, "
|
||||
+ " DB_APPNO = DB_APPNO + 1 , "
|
||||
+ " DB_TRDAT = GetDate() , "
|
||||
+ " DB_TRUSR = @DB_TRUSR "
|
||||
+ " WHERE 課程企劃編號 = @課程企劃編號"
|
||||
+ " AND 課程序號 = @課程序號";
|
||||
AddParam(cmdUpdate, "DB_TRUSR", CurrentUserId);
|
||||
AddParam(cmdUpdate, "課程企劃編號", 課程企劃編號);
|
||||
AddParam(cmdUpdate, "課程序號", 課程序號);
|
||||
ExecuteNonQuery(cmdUpdate);
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Delete)]
|
||||
public int DeleteBy課程企劃(int 課程企劃編號)
|
||||
{
|
||||
DbCommand cmdDelete = NewCommand();
|
||||
cmdDelete.CommandText =
|
||||
@"delete from 講師遴選
|
||||
where 1=1
|
||||
and 課程企劃編號 = @課程企劃編號";
|
||||
AddParam(cmdDelete, "課程企劃編號", 課程企劃編號);
|
||||
int rowsAffected = ExecuteNonQuery(cmdDelete);
|
||||
return rowsAffected;
|
||||
}
|
||||
|
||||
public int Select選定講師(int 課程企劃編號, int 課程序號)
|
||||
{
|
||||
講師遴選List d = SelectOne(課程企劃編號, 課程序號);
|
||||
|
||||
if (d.Count == 0)
|
||||
return 0;
|
||||
switch (d[0].選定講師)
|
||||
{
|
||||
case 1:
|
||||
return d[0].講師編號_A;
|
||||
case 2:
|
||||
return d[0].講師編號_B;
|
||||
case 3:
|
||||
return d[0].講師編號_C;
|
||||
default:
|
||||
if (d[0].合計_A >= d[0].合計_B && d[0].合計_A >= d[0].合計_C)
|
||||
return d[0].講師編號_A;
|
||||
if (d[0].合計_B >= d[0].合計_A && d[0].合計_B >= d[0].合計_C)
|
||||
return d[0].講師編號_B;
|
||||
else
|
||||
return d[0].講師編號_C;
|
||||
}
|
||||
}
|
||||
|
||||
public string Select選定講師名稱(int 課程企劃編號, int 課程序號)
|
||||
{
|
||||
講師遴選List d = SelectOne(課程企劃編號, 課程序號);
|
||||
|
||||
if (d.Count == 0)
|
||||
return "";
|
||||
|
||||
int 編號;
|
||||
string 姓名;
|
||||
switch (d[0].選定講師)
|
||||
{
|
||||
case 1:
|
||||
編號 = d[0].講師編號_A;
|
||||
姓名 = d[0].講師姓名_A;
|
||||
break;
|
||||
case 2:
|
||||
編號 = d[0].講師編號_B;
|
||||
姓名 = d[0].講師姓名_B;
|
||||
break;
|
||||
case 3:
|
||||
編號 = d[0].講師編號_C;
|
||||
姓名 = d[0].講師姓名_C;
|
||||
break;
|
||||
default:
|
||||
if (d[0].合計_A >= d[0].合計_B && d[0].合計_A >= d[0].合計_C)
|
||||
{
|
||||
編號 = d[0].講師編號_A;
|
||||
姓名 = d[0].講師姓名_A;
|
||||
}
|
||||
else if (d[0].合計_B >= d[0].合計_A && d[0].合計_B >= d[0].合計_C)
|
||||
{
|
||||
編號 = d[0].講師編號_B;
|
||||
姓名 = d[0].講師姓名_B;
|
||||
}
|
||||
else
|
||||
{
|
||||
編號 = d[0].講師編號_C;
|
||||
姓名 = d[0].講師姓名_C;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (編號 > 0)
|
||||
return new DAC_講師(conn).Get姓名(編號);
|
||||
|
||||
return 姓名 ?? "";
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 講師遴選 資料集合類別
|
||||
///</summary>
|
||||
public partial class 講師遴選List : List<講師遴選>
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 講師遴選 資料紀錄類別
|
||||
///</summary>
|
||||
public partial class 講師遴選
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user