chore: 首次簽入 Thinkyu ASP.NET 專案
- 加入 Visual Studio / ASP.NET .gitignore - 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
|
||||
namespace 報到系統
|
||||
{
|
||||
/// <summary>
|
||||
/// 簽到簽退紀錄項目
|
||||
/// </summary>
|
||||
public class CheckInItem
|
||||
{
|
||||
public int ID { get; set; }
|
||||
|
||||
public int CourseID { get; set; }
|
||||
|
||||
public string Name { get; set; }
|
||||
|
||||
public string Mobile { get; set; }
|
||||
|
||||
public string SignUpType { get; set; }
|
||||
|
||||
public string IDNumber { get; set; }
|
||||
|
||||
public string IDType { get; set; }
|
||||
|
||||
public string MealType { get; set; }
|
||||
|
||||
public string Email { get; set; }
|
||||
|
||||
public int? LossJobTimes { get; set; }
|
||||
|
||||
public string Gender { get; set; }
|
||||
|
||||
public string AgreementStatus { get; set; }
|
||||
|
||||
public string CheckInType { get; set; }
|
||||
|
||||
public string CheckInTime { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 簽到簽退紀錄清單
|
||||
/// </summary>
|
||||
public class CheckInList : List<CheckInItem>
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Web;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
using System.ComponentModel;
|
||||
using WebLib;
|
||||
|
||||
namespace 報到系統
|
||||
{
|
||||
[DataObject]
|
||||
public class DAC_BPAA : DAC
|
||||
{
|
||||
public DAC_BPAA()
|
||||
{ }
|
||||
|
||||
public DAC_BPAA(DbConnection conn)
|
||||
: base(conn)
|
||||
{ }
|
||||
|
||||
/// <summary>
|
||||
/// 搜尋專案 - 用於自動完成
|
||||
/// </summary>
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public NameValueList Select(string keyword)
|
||||
{
|
||||
if (string.IsNullOrEmpty(keyword))
|
||||
return new NameValueList();
|
||||
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText =
|
||||
@"select BPPYN as Value, BPPYM as Name
|
||||
from BPAA
|
||||
where (BPPYN like @BPPYN or BPPYM like @BPPYM)";
|
||||
|
||||
AddParam(cmdSelect, "BPPYN", $"%{keyword}%");
|
||||
AddParam(cmdSelect, "BPPYM", $"%{keyword}%");
|
||||
|
||||
cmdSelect.CommandText += " order by BPPYN";
|
||||
|
||||
var result = new NameValueList();
|
||||
var list = result as IDataList;
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
public string SelectProjectName(string value)
|
||||
{
|
||||
if (string.IsNullOrEmpty(value))
|
||||
return string.Empty;
|
||||
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText =
|
||||
@"select BPPYM as Name
|
||||
from BPAA
|
||||
where BPPYN = @BPPYN";
|
||||
AddParam(cmdSelect, "BPPYN", value);
|
||||
ExecuteScalar(cmdSelect, out string name);
|
||||
return name;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,178 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Web;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
using System.ComponentModel;
|
||||
using WebLib;
|
||||
|
||||
namespace 報到系統
|
||||
{
|
||||
[DataObject]
|
||||
public class DAC_BPSN : DAC
|
||||
{
|
||||
public DAC_BPSN()
|
||||
{ }
|
||||
|
||||
public DAC_BPSN(DbConnection conn)
|
||||
: base(conn)
|
||||
{ }
|
||||
|
||||
public string Get員工姓名(object BPENO)
|
||||
{
|
||||
if (BPENO == null)
|
||||
BPENO = DBNull.Value;
|
||||
|
||||
DbCommand cmd = NewCommand();
|
||||
cmd.CommandText = @"SELECT BPNME FROM BPSNView WHERE BPENO=@BPENO";
|
||||
AddParam(cmd, "BPENO", BPENO);
|
||||
string result;
|
||||
ExecuteScalar(cmd, out result);
|
||||
return result;
|
||||
}
|
||||
|
||||
public string Get電子郵件(object BPENO)
|
||||
{
|
||||
if (BPENO == null)
|
||||
BPENO = DBNull.Value;
|
||||
|
||||
DbCommand cmd = NewCommand();
|
||||
cmd.CommandText = @"SELECT BPEML FROM BPSNView WHERE BPENO=@BPENO";
|
||||
AddParam(cmd, "BPENO", BPENO);
|
||||
string result;
|
||||
ExecuteScalar(cmd, out result);
|
||||
return result;
|
||||
}
|
||||
|
||||
public string Get公司電話(object BPENO)
|
||||
{
|
||||
if (BPENO == null)
|
||||
BPENO = DBNull.Value;
|
||||
|
||||
DbCommand cmd = NewCommand();
|
||||
cmd.CommandText = @"SELECT BPOTL FROM BPSNView WHERE BPENO=@BPENO";
|
||||
AddParam(cmd, "BPENO", BPENO);
|
||||
string result;
|
||||
ExecuteScalar(cmd, out result);
|
||||
return result;
|
||||
}
|
||||
|
||||
public bool Is群組(string BPENO, string BPGLP)
|
||||
{
|
||||
if (BPENO == null)
|
||||
return false;
|
||||
|
||||
DbCommand cmd = NewCommand();
|
||||
cmd.CommandText = @"SELECT COUNT(1) FROM BWEH WHERE BPENO=@BPENO AND BPGLP=@BPGLP";
|
||||
AddParam(cmd, "BPENO", BPENO);
|
||||
AddParam(cmd, "BPGLP", BPGLP);
|
||||
int i;
|
||||
ExecuteScalar(cmd, out i);
|
||||
return i > 0;
|
||||
}
|
||||
|
||||
public bool Is系統管理群組(string BPENO)
|
||||
{
|
||||
return Is群組(BPENO, PublicVariable.SystemManagerGroup);
|
||||
}
|
||||
|
||||
public bool Is客戶管理群組(string BPENO)
|
||||
{
|
||||
return Is群組(BPENO, PublicVariable.CustomManagerGroup);
|
||||
}
|
||||
|
||||
public bool Is現場工作群組(string BPENO)
|
||||
{
|
||||
return Is群組(BPENO, PublicVariable.FieldStaffGroup);
|
||||
}
|
||||
|
||||
public bool Is查詢群組(string BPENO)
|
||||
{
|
||||
return Is群組(BPENO, PublicVariable.QueryGroup);
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public NameValueList Select(string keyword)
|
||||
{
|
||||
if (string.IsNullOrEmpty(keyword))
|
||||
return null;
|
||||
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText =
|
||||
@"select BPENO as Value, BPNME as Name
|
||||
from BPSNView
|
||||
where BPEDY is null ";
|
||||
|
||||
cmdSelect.CommandText += " and (BPENO like @BPENO or BPNME like @BPNME)";
|
||||
AddParam(cmdSelect, "BPENO", $"%{keyword}%");
|
||||
AddParam(cmdSelect, "BPNME", $"%{keyword}%");
|
||||
|
||||
cmdSelect.CommandText += " order by BPENO";
|
||||
|
||||
var result = new NameValueList();
|
||||
var list = result as IDataList;
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 客戶端下載員工名單使用
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public BPSNList SelectForClient()
|
||||
{
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText =
|
||||
@"SELECT
|
||||
A.BPENO,
|
||||
A.BPNME,
|
||||
'' AS BPAWD,
|
||||
MAX(CASE WHEN B.BPGLP = 'SG01' THEN 1 ELSE 0 END) AS Is系統管理群組,
|
||||
MAX(CASE WHEN B.BPGLP = 'SG02' THEN 1 ELSE 0 END) AS Is客戶管理群組,
|
||||
MAX(CASE WHEN B.BPGLP = 'SG03' THEN 1 ELSE 0 END) AS Is現場工作群組,
|
||||
MAX(CASE WHEN B.BPGLP = 'SG04' THEN 1 ELSE 0 END) AS Is查詢群組
|
||||
FROM BPSNView A
|
||||
LEFT JOIN BWEH B ON A.BPENO = B.BPENO AND B.BPGLP IN ('SG01','SG02','SG03','SG04')
|
||||
WHERE A.BPEDY IS NULL
|
||||
GROUP BY A.BPENO, A.BPNME, A.BPAWD";
|
||||
var result = new BPSNList();
|
||||
var list = result as IDataList;
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class BPSNList : List<BPSNItem>, IDataList
|
||||
{
|
||||
public void Fill(DbDataReader reader)
|
||||
{
|
||||
DAC.FillData<BPSNItem>(reader, this);
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class BPSNItem
|
||||
{
|
||||
[DataObjectField(true, false, false)]
|
||||
public string BPENO { get; set; }
|
||||
|
||||
[DataObjectField(false, false, true)]
|
||||
public string BPNME { get; set; }
|
||||
|
||||
[DataObjectField(false, false, true)]
|
||||
public string BPAWD { get; set; }
|
||||
|
||||
[DataObjectField(false, false, true)]
|
||||
public int Is系統管理群組 { get; set; }
|
||||
|
||||
[DataObjectField(false, false, true)]
|
||||
public int Is客戶管理群組 { get; set; }
|
||||
|
||||
[DataObjectField(false, false, true)]
|
||||
public int Is現場工作群組 { get; set; }
|
||||
|
||||
[DataObjectField(false, false, true)]
|
||||
public int Is查詢群組 { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data.Common;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using WebLib;
|
||||
|
||||
namespace 報到系統
|
||||
{
|
||||
public class DAC_BWEH: DAC
|
||||
{
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public NameValueList SelectByGroupId(string groupId)
|
||||
{
|
||||
if (string.IsNullOrEmpty(groupId))
|
||||
return null;
|
||||
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText =
|
||||
@"select A.BPENO as Value, B.BPNME as Name
|
||||
from BWEH A
|
||||
join BPSNView B on A.BPENO=B.BPENO and B.BPEDY is null
|
||||
where A.BPGLP=@BPGLP
|
||||
order by A.BPENO";
|
||||
AddParam(cmdSelect, "BPGLP", groupId);
|
||||
cmdSelect.CommandText += " ";
|
||||
|
||||
var result = new NameValueList();
|
||||
var list = result as IDataList;
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Insert)]
|
||||
public bool AddMemberToGroup(string groupId, string employeeId)
|
||||
{
|
||||
if (string.IsNullOrEmpty(groupId) || string.IsNullOrEmpty(employeeId))
|
||||
return false;
|
||||
|
||||
DbCommand cmd = NewCommand();
|
||||
cmd.CommandText = @"
|
||||
IF NOT EXISTS (SELECT 1 FROM BWEH WHERE BPGLP=@BPGLP AND BPENO=@BPENO)
|
||||
BEGIN
|
||||
INSERT INTO BWEH (BPGLP, BPENO) VALUES (@BPGLP, @BPENO)
|
||||
END";
|
||||
AddParam(cmd, "BPGLP", groupId);
|
||||
AddParam(cmd, "BPENO", employeeId);
|
||||
|
||||
int result = ExecuteNonQuery(cmd);
|
||||
return result >= 0;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Delete)]
|
||||
public bool RemoveMemberFromGroup(string groupId, string employeeId)
|
||||
{
|
||||
if (string.IsNullOrEmpty(groupId) || string.IsNullOrEmpty(employeeId))
|
||||
return false;
|
||||
|
||||
DbCommand cmd = NewCommand();
|
||||
cmd.CommandText = @"DELETE FROM BWEH WHERE BPGLP=@BPGLP AND BPENO=@BPENO";
|
||||
AddParam(cmd, "BPGLP", groupId);
|
||||
AddParam(cmd, "BPENO", employeeId);
|
||||
|
||||
int result = ExecuteNonQuery(cmd);
|
||||
return result > 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
using System.Data.Common;
|
||||
using WebLib;
|
||||
|
||||
namespace 報到系統
|
||||
{
|
||||
/// <summary>
|
||||
/// BWEX 系統設定資料存取類別
|
||||
/// </summary>
|
||||
public class DAC_BWEX : DAC
|
||||
{
|
||||
public DAC_BWEX() : base() { }
|
||||
|
||||
public DAC_BWEX(DbConnection conn) : base(conn) { }
|
||||
|
||||
/// <summary>依 KeyName 取得 KeyValue</summary>
|
||||
public string GetKeyValue(string keyName)
|
||||
{
|
||||
DbCommand cmd = NewCommand();
|
||||
cmd.CommandText = "select [BSNAM] from [BWEX] where [BSNUM] = @KeyName and [BSITM] = ' 1'";
|
||||
AddParam(cmd, "KeyName", keyName);
|
||||
string result;
|
||||
ExecuteScalar(cmd, out result);
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>更新 KeyValue(若不存在則 INSERT)</summary>
|
||||
public void SetKeyValue(string keyName, string keyValue)
|
||||
{
|
||||
DbCommand cmd = NewCommand();
|
||||
cmd.CommandText =
|
||||
"if exists (select 1 from [BWEX] where [BSNUM] = @KeyName and [BSITM] = ' 1') " +
|
||||
" update [BWEX] set [BSNAM] = @KeyValue where [BSNUM] = @KeyName and [BSITM] = ' 1'" +
|
||||
"else " +
|
||||
" insert into [BWEX] ([BSNUM], [BSITM], [BSNAM]) values (@KeyName, ' 1', @KeyValue)";
|
||||
AddParam(cmd, "KeyName", keyName);
|
||||
AddParam(cmd, "KeyValue", keyValue);
|
||||
ExecuteNonQuery(cmd);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,860 @@
|
||||
//
|
||||
// 這個檔案是 Classes 資料表的資料存取類別 檔案一
|
||||
// 請不要修改這個檔案,重新產生資料存取類別時,這個檔案會被覆蓋掉
|
||||
//
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
using System.Linq;
|
||||
using System.Transactions;
|
||||
using WebLib;
|
||||
using System.Data.SqlClient;
|
||||
|
||||
namespace 報到系統
|
||||
{
|
||||
///<summary>
|
||||
/// Classes 資料存取類別
|
||||
///</ summary>
|
||||
[DataObject]
|
||||
public partial class DAC_Classes : WebLib.DAC
|
||||
{
|
||||
private const string _tableName = "[Classes]";
|
||||
private const string _allFields = "[ID], [CourseCode], [CourseName], [CourseDate], [CourseLocation], [NotificationTitle], [NotificationTemplate], [Closed], [ProjectID], [StartTime], [EndTime], [Teacher], [AgreedTerms], [DB_APPNO], [DB_CRDAT], [DB_CRUSR], [DB_TRDAT], [DB_TRUSR]";
|
||||
private string _orderBy = "[ID]";
|
||||
private string _select = "select " + _allFields;
|
||||
private string _insert = "[CourseCode], [CourseName], [CourseDate], [CourseLocation], [NotificationTitle], [NotificationTemplate], [Closed], [ProjectID], [StartTime], [EndTime], [Teacher], [AgreedTerms], [DB_APPNO], [DB_CRDAT], [DB_CRUSR], [DB_TRDAT], [DB_TRUSR]";
|
||||
private string _insertBak = "[ID], [CourseCode], [CourseName], [CourseDate], [CourseLocation], [NotificationTitle], [NotificationTemplate], [Closed], [ProjectID], [StartTime], [EndTime], [Teacher], [AgreedTerms], [DB_APPNO], [DB_CRDAT], [DB_CRUSR], [DB_TRDAT], [DB_TRUSR], [DB_TRMOD]";
|
||||
private string _insertValue = "@CourseCode, @CourseName, @CourseDate, @CourseLocation, @NotificationTitle, @NotificationTemplate, @Closed, @ProjectID, @StartTime, @EndTime, @Teacher, @AgreedTerms, @DB_APPNO, @DB_CRDAT, @DB_CRUSR, @DB_TRDAT, @DB_TRUSR";
|
||||
private string _insertBakValue = "@ID, @CourseCode, @CourseName, @CourseDate, @CourseLocation, @NotificationTitle, @NotificationTemplate, @Closed, @ProjectID, @StartTime, @EndTime, @Teacher, @AgreedTerms, @DB_APPNO, @DB_CRDAT, @DB_CRUSR, @DB_TRDAT, @DB_TRUSR, @DB_TRMOD";
|
||||
private string _from = " from " + _tableName + " ";
|
||||
private string _where = " where 1=1 ";
|
||||
private string _order = " order by [ID] ";
|
||||
|
||||
public const string OrderBy_2 = "[CourseCode]";
|
||||
public const string OrderBy_1 = "[CourseDate]";
|
||||
|
||||
public DAC_Classes()
|
||||
: base()
|
||||
{
|
||||
}
|
||||
|
||||
public DAC_Classes(DbConnection conn)
|
||||
: base(conn)
|
||||
{
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public ClassesList SelectAll(string orderBy = "")
|
||||
{
|
||||
ClassesList result = new ClassesList();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where + (orderBy == null || orderBy.Length == 0 ? _order : " order by " + orderBy);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
public int SelectAllCount()
|
||||
{
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = "select count(1) " + _from;
|
||||
int i;
|
||||
ExecuteScalar(cmdSelect, out i);
|
||||
return i;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public ClassesList SelectAllPage(int startRowIndex, int maximumRows, string orderBy = "")
|
||||
{
|
||||
ClassesList result = new ClassesList();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText =
|
||||
String.Format("select top {0} * from (", maximumRows)
|
||||
+ "select " + _allFields
|
||||
+ ", row_number() over (order by " + (orderBy == null || orderBy.Length == 0 ? _orderBy : orderBy) + ") as rowid "
|
||||
+ _from + _where
|
||||
+ ") as TMP1 where rowid > @startRowIndex ";
|
||||
AddParam(cmdSelect, "startRowIndex", startRowIndex);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public ClassesList SelectOne(int ID)
|
||||
{
|
||||
ClassesList result = new ClassesList();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where
|
||||
+ " and ID = @ID "
|
||||
;
|
||||
AddParam(cmdSelect, "ID", ID);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 給查詢畫面用的增加 Where 條件的方法
|
||||
///</summary>
|
||||
private void AddWhere(DbCommand cmdSelect, ref bool noInput, string CourseCode, string CourseName, DateTime? CourseDate_1, DateTime? CourseDate_2, string CourseLocation, bool? Closed, string ProjectID)
|
||||
{
|
||||
if (CourseCode != null && CourseCode.Length > 0)
|
||||
{
|
||||
noInput = false;
|
||||
cmdSelect.CommandText += " and CourseCode like @CourseCode ";
|
||||
AddParam(cmdSelect, "CourseCode", "%" + CourseCode + "%");
|
||||
}
|
||||
|
||||
if (CourseName != null && CourseName.Length > 0)
|
||||
{
|
||||
noInput = false;
|
||||
cmdSelect.CommandText += " and CourseName like @CourseName ";
|
||||
AddParam(cmdSelect, "CourseName", "%" + CourseName + "%");
|
||||
}
|
||||
|
||||
if (CourseDate_1.HasValue && CourseDate_2.HasValue)
|
||||
{
|
||||
noInput = false;
|
||||
cmdSelect.CommandText += " and CourseDate >= @CourseDate_1 and CourseDate < @CourseDate_2 ";
|
||||
AddParam(cmdSelect, "CourseDate_1", CourseDate_1);
|
||||
AddParam(cmdSelect, "CourseDate_2", CourseDate_2.Value.AddDays(1));
|
||||
}
|
||||
else if (CourseDate_1.HasValue && !CourseDate_2.HasValue)
|
||||
{
|
||||
noInput = false;
|
||||
cmdSelect.CommandText += " and CourseDate >= @CourseDate_1 ";
|
||||
AddParam(cmdSelect, "CourseDate_1", CourseDate_1);
|
||||
}
|
||||
else if (!CourseDate_1.HasValue && CourseDate_2.HasValue)
|
||||
{
|
||||
noInput = false;
|
||||
cmdSelect.CommandText += " and CourseDate < @CourseDate_2 ";
|
||||
AddParam(cmdSelect, "CourseDate_2", CourseDate_2.Value.AddDays(1));
|
||||
}
|
||||
if (CourseLocation != null && CourseLocation.Length > 0)
|
||||
{
|
||||
noInput = false;
|
||||
cmdSelect.CommandText += " and CourseLocation like @CourseLocation ";
|
||||
AddParam(cmdSelect, "CourseLocation", "%" + CourseLocation + "%");
|
||||
}
|
||||
|
||||
if (Closed != null)
|
||||
{
|
||||
noInput = false;
|
||||
cmdSelect.CommandText += " and Closed = @Closed ";
|
||||
AddParam(cmdSelect, "Closed", Closed);
|
||||
}
|
||||
|
||||
if (ProjectID != null && ProjectID.Length > 0)
|
||||
{
|
||||
noInput = false;
|
||||
cmdSelect.CommandText += " and ProjectID like @ProjectID ";
|
||||
AddParam(cmdSelect, "ProjectID", "%" + ProjectID + "%");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 給查詢畫面用的 Select 方法
|
||||
///</summary>
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public ClassesList Select(bool noInputReturnAll, string CourseCode, string CourseName, DateTime? CourseDate_1, DateTime? CourseDate_2, string CourseLocation, bool? Closed, string ProjectID, string orderBy = "")
|
||||
{
|
||||
ClassesList result = new ClassesList();
|
||||
bool noInput = true;
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where;
|
||||
AddWhere(cmdSelect, ref noInput, CourseCode, CourseName, CourseDate_1, CourseDate_2, CourseLocation, Closed, ProjectID);
|
||||
cmdSelect.CommandText += (orderBy == null || orderBy.Length == 0 ? _order : " order by " + orderBy);
|
||||
|
||||
if (!noInputReturnAll && noInput)
|
||||
return result;
|
||||
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 給查詢畫面用的 SelectCount 方法
|
||||
///</summary>
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public int SelectCount(bool noInputReturnAll, string CourseCode, string CourseName, DateTime? CourseDate_1, DateTime? CourseDate_2, string CourseLocation, bool? Closed, string ProjectID, string orderBy = "")
|
||||
{
|
||||
bool noInput = true;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = "select count(1) " + _from + _where;
|
||||
AddWhere(cmdSelect, ref noInput, CourseCode, CourseName, CourseDate_1, CourseDate_2, CourseLocation, Closed, ProjectID);
|
||||
|
||||
if (!noInputReturnAll && noInput)
|
||||
return 0;
|
||||
|
||||
int i;
|
||||
ExecuteScalar(cmdSelect, out i);
|
||||
return i;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 給查詢畫面用的 SelectPage 方法
|
||||
///</summary>
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public ClassesList SelectPage(bool noInputReturnAll, int startRowIndex, int maximumRows, string CourseCode, string CourseName, DateTime? CourseDate_1, DateTime? CourseDate_2, string CourseLocation, bool? Closed, string ProjectID, string orderBy = "")
|
||||
{
|
||||
ClassesList result = new ClassesList();
|
||||
bool noInput = true;
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
|
||||
cmdSelect.CommandText =
|
||||
String.Format("select top {0} * from (", maximumRows)
|
||||
+ "select " + _allFields
|
||||
+ ", row_number() over (order by " + (orderBy == null || orderBy.Length == 0 ? _orderBy : orderBy) + ") as rowid "
|
||||
+ _from + _where;
|
||||
AddWhere(cmdSelect, ref noInput, CourseCode, CourseName, CourseDate_1, CourseDate_2, CourseLocation, Closed, ProjectID);
|
||||
cmdSelect.CommandText += ") as TMP1 where rowid > @startRowIndex ";
|
||||
AddParam(cmdSelect, "startRowIndex", startRowIndex);
|
||||
|
||||
if (!noInputReturnAll && noInput)
|
||||
return result;
|
||||
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Insert)]
|
||||
public ClassesItem InsertOne(ClassesItem value)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeInsertOne(value))
|
||||
return value;
|
||||
DbCommand cmdInsert = NewCommand();
|
||||
cmdInsert.CommandText =
|
||||
"insert into [Classes]"
|
||||
+ " (" + _insert + ")"
|
||||
+ "values "
|
||||
+ " (" + _insertValue + ");" + "select @@identity"
|
||||
;
|
||||
AddParam(cmdInsert, "CourseCode", value.CourseCode);
|
||||
AddParam(cmdInsert, "CourseName", value.CourseName);
|
||||
AddParam(cmdInsert, "CourseDate", value.CourseDate);
|
||||
AddParam(cmdInsert, "CourseLocation", value.CourseLocation);
|
||||
AddParam(cmdInsert, "NotificationTitle", value.NotificationTitle);
|
||||
AddParam(cmdInsert, "NotificationTemplate", value.NotificationTemplate);
|
||||
AddParam(cmdInsert, "Closed", value.Closed);
|
||||
AddParam(cmdInsert, "ProjectID", value.ProjectID);
|
||||
AddParam(cmdInsert, "StartTime", value.StartTime);
|
||||
AddParam(cmdInsert, "EndTime", value.EndTime);
|
||||
AddParam(cmdInsert, "Teacher", value.Teacher);
|
||||
AddParam(cmdInsert, "AgreedTerms", value.AgreedTerms);
|
||||
AddParam(cmdInsert, "DB_APPNO", 1);
|
||||
AddParam(cmdInsert, "DB_CRDAT", DateTime.Now);
|
||||
AddParam(cmdInsert, "DB_CRUSR", CurrentUserId);
|
||||
AddParam(cmdInsert, "DB_TRDAT", DBNull.Value);
|
||||
AddParam(cmdInsert, "DB_TRUSR", DBNull.Value);
|
||||
int newId;
|
||||
ExecuteScalar(cmdInsert, out newId);
|
||||
value.ID = newId;
|
||||
AfterInsertOne(value);
|
||||
ts.Complete();
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
bool handled;
|
||||
OnInsertOneError(error, out handled);
|
||||
if(!handled)
|
||||
throw error;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Update)]
|
||||
public ClassesItem UpdateOne(ClassesItem value)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeUpdateOne(value))
|
||||
return value;
|
||||
|
||||
ClassesList oldValues = SelectOne(value.ID);
|
||||
if (oldValues.Count == 0 || oldValues[0].DB_APPNO != value.DB_APPNO)
|
||||
{
|
||||
throw new DBConcurrencyException("在更新 \"Classes\" 資料表時發生並行例外:找不到要更新的資料列");
|
||||
}
|
||||
else
|
||||
{
|
||||
DoBackup(oldValues[0], "UPDATE");
|
||||
}
|
||||
|
||||
DbCommand cmdUpdate = NewCommand();
|
||||
cmdUpdate.CommandText =
|
||||
@"update [Classes]
|
||||
set
|
||||
[CourseCode] = @CourseCode ,
|
||||
[CourseName] = @CourseName ,
|
||||
[CourseDate] = @CourseDate ,
|
||||
[CourseLocation] = @CourseLocation ,
|
||||
[NotificationTitle] = @NotificationTitle ,
|
||||
[NotificationTemplate] = @NotificationTemplate ,
|
||||
[Closed] = @Closed ,
|
||||
[ProjectID] = @ProjectID ,
|
||||
[StartTime] = @StartTime ,
|
||||
[EndTime] = @EndTime ,
|
||||
[Teacher] = @Teacher ,
|
||||
[AgreedTerms] = @AgreedTerms ,
|
||||
DB_APPNO = DB_APPNO + 1,
|
||||
DB_TRDAT = @DB_TRDAT,
|
||||
DB_TRUSR = @DB_TRUSR
|
||||
where 1=1
|
||||
and [ID] = @original_ID
|
||||
and DB_APPNO = @original_DB_APPNO
|
||||
";
|
||||
AddParam(cmdUpdate, "CourseCode", value.CourseCode);
|
||||
AddParam(cmdUpdate, "CourseName", value.CourseName);
|
||||
AddParam(cmdUpdate, "CourseDate", value.CourseDate);
|
||||
AddParam(cmdUpdate, "CourseLocation", value.CourseLocation);
|
||||
AddParam(cmdUpdate, "NotificationTitle", value.NotificationTitle);
|
||||
AddParam(cmdUpdate, "NotificationTemplate", value.NotificationTemplate);
|
||||
AddParam(cmdUpdate, "Closed", value.Closed);
|
||||
AddParam(cmdUpdate, "ProjectID", value.ProjectID);
|
||||
AddParam(cmdUpdate, "StartTime", value.StartTime);
|
||||
AddParam(cmdUpdate, "EndTime", value.EndTime);
|
||||
AddParam(cmdUpdate, "Teacher", value.Teacher);
|
||||
AddParam(cmdUpdate, "AgreedTerms", value.AgreedTerms);
|
||||
AddParam(cmdUpdate, "DB_TRDAT", DateTime.Now);
|
||||
AddParam(cmdUpdate, "DB_TRUSR", CurrentUserId);
|
||||
AddParam(cmdUpdate, "original_ID", value.ID);
|
||||
AddParam(cmdUpdate, "original_DB_APPNO", value.DB_APPNO);
|
||||
ExecuteNonQuery(cmdUpdate);
|
||||
AfterUpdateOne(value);
|
||||
ts.Complete();
|
||||
return value;
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
bool handled;
|
||||
OnUpdateOneError(error, out handled);
|
||||
if(!handled)
|
||||
throw error;
|
||||
return value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Update)]
|
||||
public ClassesItem UpdateOne(ClassesItem value, ClassesItem original_value)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeUpdateOne(value, original_value))
|
||||
return value;
|
||||
|
||||
ClassesList oldValues = SelectOne(original_value.ID);
|
||||
if (oldValues.Count == 0 || oldValues[0].DB_APPNO != value.DB_APPNO)
|
||||
{
|
||||
throw new DBConcurrencyException("在更新 \"Classes\" 資料表時發生並行例外:找不到要更新的資料列");
|
||||
}
|
||||
else
|
||||
{
|
||||
DoBackup(oldValues[0], "UPDATE");
|
||||
}
|
||||
|
||||
DbCommand cmdUpdate = NewCommand();
|
||||
cmdUpdate.CommandText =
|
||||
@"update [Classes]
|
||||
set
|
||||
[CourseCode] = @CourseCode ,
|
||||
[CourseName] = @CourseName ,
|
||||
[CourseDate] = @CourseDate ,
|
||||
[CourseLocation] = @CourseLocation ,
|
||||
[NotificationTitle] = @NotificationTitle ,
|
||||
[NotificationTemplate] = @NotificationTemplate ,
|
||||
[Closed] = @Closed ,
|
||||
[ProjectID] = @ProjectID ,
|
||||
[StartTime] = @StartTime ,
|
||||
[EndTime] = @EndTime ,
|
||||
[Teacher] = @Teacher ,
|
||||
[AgreedTerms] = @AgreedTerms ,
|
||||
DB_APPNO = DB_APPNO + 1,
|
||||
DB_TRDAT = @DB_TRDAT,
|
||||
DB_TRUSR = @DB_TRUSR
|
||||
where 1=1
|
||||
and [ID] = @original_ID
|
||||
and DB_APPNO = @original_DB_APPNO
|
||||
";
|
||||
AddParam(cmdUpdate, "CourseCode", value.CourseCode);
|
||||
AddParam(cmdUpdate, "CourseName", value.CourseName);
|
||||
AddParam(cmdUpdate, "CourseDate", value.CourseDate);
|
||||
AddParam(cmdUpdate, "CourseLocation", value.CourseLocation);
|
||||
AddParam(cmdUpdate, "NotificationTitle", value.NotificationTitle);
|
||||
AddParam(cmdUpdate, "NotificationTemplate", value.NotificationTemplate);
|
||||
AddParam(cmdUpdate, "Closed", value.Closed);
|
||||
AddParam(cmdUpdate, "ProjectID", value.ProjectID);
|
||||
AddParam(cmdUpdate, "StartTime", value.StartTime);
|
||||
AddParam(cmdUpdate, "EndTime", value.EndTime);
|
||||
AddParam(cmdUpdate, "Teacher", value.Teacher);
|
||||
AddParam(cmdUpdate, "AgreedTerms", value.AgreedTerms);
|
||||
AddParam(cmdUpdate, "DB_TRDAT", DateTime.Now);
|
||||
AddParam(cmdUpdate, "DB_TRUSR", CurrentUserId);
|
||||
AddParam(cmdUpdate, "original_ID", original_value.ID);
|
||||
AddParam(cmdUpdate, "original_DB_APPNO", original_value.DB_APPNO);
|
||||
ExecuteNonQuery(cmdUpdate);
|
||||
AfterUpdateOne(value, original_value);
|
||||
ts.Complete();
|
||||
return value;
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
bool handled;
|
||||
OnUpdateOneError(error, out handled);
|
||||
if(!handled)
|
||||
throw error;
|
||||
return value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Delete)]
|
||||
public int DeleteOne(int ID, int DB_APPNO)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeDeleteOne(ID, DB_APPNO))
|
||||
return -1;
|
||||
|
||||
ClassesList oldValues = SelectOne(ID);
|
||||
if (oldValues.Count == 0 || oldValues[0].DB_APPNO != DB_APPNO)
|
||||
{
|
||||
throw new DBConcurrencyException("在刪除 \"Classes\" 資料表時發生並行例外:找不到要刪除的資料列");
|
||||
}
|
||||
else
|
||||
{
|
||||
DoBackup(oldValues[0], "DELETE");
|
||||
}
|
||||
|
||||
DbCommand cmdDelete = NewCommand();
|
||||
cmdDelete.CommandText =
|
||||
@"delete from [Classes]
|
||||
where 1=1
|
||||
and ID = @ID
|
||||
and DB_APPNO = @DB_APPNO
|
||||
";
|
||||
AddParam(cmdDelete, "ID", ID);
|
||||
AddParam(cmdDelete, "DB_APPNO", DB_APPNO);
|
||||
int rowsAffected = ExecuteNonQuery(cmdDelete);
|
||||
AfterDeleteOne(ID, 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(ClassesItem value)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeDeleteOne(value))
|
||||
return -1;
|
||||
|
||||
ClassesList oldValues = SelectOne(value.ID);
|
||||
if (oldValues.Count == 0 || oldValues[0].DB_APPNO != value.DB_APPNO)
|
||||
{
|
||||
throw new DBConcurrencyException("在刪除 \"Classes\" 資料表時發生並行例外:找不到要刪除的資料列");
|
||||
}
|
||||
else
|
||||
{
|
||||
DoBackup(oldValues[0], "DELETE");
|
||||
}
|
||||
|
||||
DbCommand cmdDelete = NewCommand();
|
||||
cmdDelete.CommandText =
|
||||
@"delete from [Classes]
|
||||
where 1=1
|
||||
and ID = @ID
|
||||
and DB_APPNO = @DB_APPNO
|
||||
";
|
||||
AddParam(cmdDelete, "ID", value.ID);
|
||||
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 ID)
|
||||
{
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = "select count(1)" + _from + _where
|
||||
+ " and ID = @ID "
|
||||
;
|
||||
AddParam(cmdSelect, "ID", ID);
|
||||
int count;
|
||||
ExecuteScalar(cmdSelect, out count);
|
||||
return count > 0;
|
||||
}
|
||||
|
||||
public void DoBackup(ClassesItem value, string updateMode)
|
||||
{
|
||||
DbCommand cmdBak = NewCommand();
|
||||
cmdBak.CommandText =
|
||||
"insert into [Classes_BAK]"
|
||||
+ " (" + _insertBak + ")"
|
||||
+ "values "
|
||||
+ " (" + _insertBakValue + ");"
|
||||
;
|
||||
AddParam(cmdBak, "ID", value.ID);
|
||||
AddParam(cmdBak, "CourseCode", value.CourseCode);
|
||||
AddParam(cmdBak, "CourseName", value.CourseName);
|
||||
AddParam(cmdBak, "CourseDate", value.CourseDate);
|
||||
AddParam(cmdBak, "CourseLocation", value.CourseLocation);
|
||||
AddParam(cmdBak, "NotificationTitle", value.NotificationTitle);
|
||||
AddParam(cmdBak, "NotificationTemplate", value.NotificationTemplate);
|
||||
AddParam(cmdBak, "Closed", value.Closed);
|
||||
AddParam(cmdBak, "ProjectID", value.ProjectID);
|
||||
AddParam(cmdBak, "StartTime", value.StartTime);
|
||||
AddParam(cmdBak, "EndTime", value.EndTime);
|
||||
AddParam(cmdBak, "Teacher", value.Teacher);
|
||||
AddParam(cmdBak, "AgreedTerms", value.AgreedTerms);
|
||||
AddParam(cmdBak, "DB_APPNO", value.DB_APPNO);
|
||||
AddParam(cmdBak, "DB_CRDAT", value.DB_CRDAT);
|
||||
AddParam(cmdBak, "DB_CRUSR", value.DB_CRUSR);
|
||||
AddParam(cmdBak, "DB_TRDAT", DateTime.Now);
|
||||
AddParam(cmdBak, "DB_TRUSR", CurrentUserId);
|
||||
AddParam(cmdBak, "DB_TRMOD", updateMode);
|
||||
ExecuteNonQuery(cmdBak);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
///<summary>
|
||||
///Classes 資料集合類別
|
||||
///</summary>
|
||||
[Serializable]
|
||||
public partial class ClassesList : List<ClassesItem>, IDataList
|
||||
{
|
||||
public void Fill(DbDataReader reader)
|
||||
{
|
||||
DAC.FillData<ClassesItem>(reader, this);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
///<summary>
|
||||
/// Classes 資料紀錄類別
|
||||
///</summary>
|
||||
[Serializable]
|
||||
public partial class ClassesItem : DataItemBase
|
||||
{
|
||||
private int _ID;
|
||||
private string _CourseCode;
|
||||
private string _CourseName;
|
||||
private DateTime _CourseDate;
|
||||
private string _CourseLocation;
|
||||
private string _NotificationTitle;
|
||||
private string _NotificationTemplate;
|
||||
private bool _Closed;
|
||||
private string _ProjectID;
|
||||
private string _StartTime;
|
||||
private string _EndTime;
|
||||
private string _Teacher;
|
||||
private string _AgreedTerms;
|
||||
|
||||
#region 資料欄位
|
||||
///<summary>
|
||||
/// 流水號
|
||||
///</summary>
|
||||
[DataObjectField(true, false, false)]
|
||||
public int ID
|
||||
{
|
||||
get
|
||||
{
|
||||
return _ID;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _ID)
|
||||
{
|
||||
_ID = value;
|
||||
OnPropertyChanged("ID");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 課程編號
|
||||
///</summary>
|
||||
[DataObjectField(false, false, false, 20)]
|
||||
public string CourseCode
|
||||
{
|
||||
get
|
||||
{
|
||||
return _CourseCode;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _CourseCode)
|
||||
{
|
||||
_CourseCode = value;
|
||||
OnPropertyChanged("CourseCode");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 課程名稱
|
||||
///</summary>
|
||||
[DataObjectField(false, false, false, 100)]
|
||||
public string CourseName
|
||||
{
|
||||
get
|
||||
{
|
||||
return _CourseName;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _CourseName)
|
||||
{
|
||||
_CourseName = value;
|
||||
OnPropertyChanged("CourseName");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 課程日期
|
||||
///</summary>
|
||||
[DataObjectField(false, false, false)]
|
||||
public DateTime CourseDate
|
||||
{
|
||||
get
|
||||
{
|
||||
return _CourseDate;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _CourseDate)
|
||||
{
|
||||
_CourseDate = value;
|
||||
OnPropertyChanged("CourseDate");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 課程地點
|
||||
///</summary>
|
||||
[DataObjectField(false, false, false, 100)]
|
||||
public string CourseLocation
|
||||
{
|
||||
get
|
||||
{
|
||||
return _CourseLocation;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _CourseLocation)
|
||||
{
|
||||
_CourseLocation = value;
|
||||
OnPropertyChanged("CourseLocation");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 通知標題
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 100)]
|
||||
public string NotificationTitle
|
||||
{
|
||||
get
|
||||
{
|
||||
return _NotificationTitle;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _NotificationTitle)
|
||||
{
|
||||
_NotificationTitle = value;
|
||||
OnPropertyChanged("NotificationTitle");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 通知模板
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 500)]
|
||||
public string NotificationTemplate
|
||||
{
|
||||
get
|
||||
{
|
||||
return _NotificationTemplate;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _NotificationTemplate)
|
||||
{
|
||||
_NotificationTemplate = value;
|
||||
OnPropertyChanged("NotificationTemplate");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 結案
|
||||
///</summary>
|
||||
[DataObjectField(false, false, false)]
|
||||
public bool Closed
|
||||
{
|
||||
get
|
||||
{
|
||||
return _Closed;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _Closed)
|
||||
{
|
||||
_Closed = value;
|
||||
OnPropertyChanged("Closed");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 計畫代號
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 20)]
|
||||
public string ProjectID
|
||||
{
|
||||
get
|
||||
{
|
||||
return _ProjectID;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _ProjectID)
|
||||
{
|
||||
_ProjectID = value;
|
||||
OnPropertyChanged("ProjectID");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 課程開始時間
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 5)]
|
||||
public string StartTime
|
||||
{
|
||||
get
|
||||
{
|
||||
return _StartTime;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _StartTime)
|
||||
{
|
||||
_StartTime = value;
|
||||
OnPropertyChanged("StartTime");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 課程結束時間
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 5)]
|
||||
public string EndTime
|
||||
{
|
||||
get
|
||||
{
|
||||
return _EndTime;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _EndTime)
|
||||
{
|
||||
_EndTime = value;
|
||||
OnPropertyChanged("EndTime");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 老師
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 50)]
|
||||
public string Teacher
|
||||
{
|
||||
get
|
||||
{
|
||||
return _Teacher;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _Teacher)
|
||||
{
|
||||
_Teacher = value;
|
||||
OnPropertyChanged("Teacher");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 同意確認事項
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 100)]
|
||||
public string AgreedTerms
|
||||
{
|
||||
get
|
||||
{
|
||||
return _AgreedTerms;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _AgreedTerms)
|
||||
{
|
||||
_AgreedTerms = value;
|
||||
OnPropertyChanged("AgreedTerms");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,178 @@
|
||||
//
|
||||
// 這個檔案是 Classes 資料表的資料存取類別 檔案二
|
||||
// 您可以修改這個檔案,加入您自訂的屬性與方法
|
||||
//
|
||||
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 報到系統
|
||||
{
|
||||
///<summary>
|
||||
/// Classes 資料存取類別
|
||||
///</summary>
|
||||
public partial class DAC_Classes : WebLib.DAC
|
||||
{
|
||||
#region 自動產生的資料存取方法
|
||||
///<summary>
|
||||
/// InsertOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查或是自動編號等動作
|
||||
/// 回傳 false 會打斷 InsertOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeInsertOne(ClassesItem value)
|
||||
{
|
||||
value.CourseCode = Next單號(DateTime.Now, "Classes", "CourseCode", "\"A\"<999999>", "");
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// InsertOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterInsertOne(ClassesItem 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(ClassesItem value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查
|
||||
/// 回傳 false 會打斷 UpdateOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeUpdateOne(ClassesItem value, ClassesItem original_value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterUpdateOne(ClassesItem value)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterUpdateOne(ClassesItem value, ClassesItem 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(ClassesItem value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterDeleteOne(ClassesItem value)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查
|
||||
/// 回傳 false 會打斷 DeleteOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeDeleteOne(int ID, int DB_APPNO)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterDeleteOne(int ID, int DB_APPNO)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 發生錯誤時會執行此方法
|
||||
///</summary>
|
||||
///<param name="handled">錯誤是否已經處理妥當</param>
|
||||
protected virtual void OnDeleteOneError(Exception error, out bool handled)
|
||||
{
|
||||
handled = false;
|
||||
}
|
||||
#endregion
|
||||
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
|
||||
///<summary>
|
||||
///Classes 資料集合類別
|
||||
///</summary>
|
||||
public partial class ClassesList : List<ClassesItem>
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
|
||||
///<summary>
|
||||
///Classes 資料紀錄類別
|
||||
///</summary>
|
||||
public partial class ClassesItem
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
|
||||
/// <summary>
|
||||
/// 計畫名稱
|
||||
/// </summary>
|
||||
public string ProjectName { get; set; }
|
||||
/// <summary>
|
||||
/// 實到人數
|
||||
/// </summary>
|
||||
public int Actual { get; set; }
|
||||
/// <summary>
|
||||
/// 應到人數
|
||||
/// </summary>
|
||||
public int Expected { get; set; }
|
||||
/// <summary>
|
||||
/// 缺席人數
|
||||
/// </summary>
|
||||
public int Absent { get; set; }
|
||||
/// <summary>
|
||||
/// 異常人數
|
||||
/// </summary>
|
||||
public int Exception { get; set; }
|
||||
/// <summary>
|
||||
/// 現場人數
|
||||
/// </summary>
|
||||
public int OnSite { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,122 @@
|
||||
using System;
|
||||
using System.Data.Common;
|
||||
using System.Transactions;
|
||||
using WebLib;
|
||||
|
||||
namespace 報到系統
|
||||
{
|
||||
/// <summary>
|
||||
/// MMSPlatform 資料存取類別
|
||||
/// </summary>
|
||||
public class DAC_MMSPlatform : DAC
|
||||
{
|
||||
private const string _tableName = "[MMSPlatform]";
|
||||
private const string _allFields = "[ID], [PlatformCode], [PlatformName], [Account], [Password], [Remark], [DB_APPNO], [DB_CRDAT], [DB_CRUSR], [DB_TRDAT], [DB_TRUSR]";
|
||||
|
||||
public DAC_MMSPlatform() : base() { }
|
||||
|
||||
public DAC_MMSPlatform(DbConnection conn) : base(conn) { }
|
||||
|
||||
/// <summary>查詢所有平台</summary>
|
||||
public MMSPlatformList SelectAll()
|
||||
{
|
||||
MMSPlatformList result = new MMSPlatformList();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmd = NewCommand();
|
||||
cmd.CommandText = "select " + _allFields + " from " + _tableName + " order by [ID]";
|
||||
Select(cmd, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>依平台代碼查一筆</summary>
|
||||
public MMSPlatformItem SelectByCode(string platformCode)
|
||||
{
|
||||
MMSPlatformList result = new MMSPlatformList();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmd = NewCommand();
|
||||
cmd.CommandText = "select " + _allFields + " from " + _tableName + " where [PlatformCode] = @PlatformCode";
|
||||
AddParam(cmd, "PlatformCode", platformCode);
|
||||
Select(cmd, ref list);
|
||||
return result.Count > 0 ? result[0] : null;
|
||||
}
|
||||
|
||||
/// <summary>新增一筆平台設定</summary>
|
||||
public MMSPlatformItem InsertOne(MMSPlatformItem item)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
DbCommand cmd = NewCommand();
|
||||
cmd.CommandText =
|
||||
"insert into " + _tableName + " ([PlatformCode],[PlatformName],[Account],[Password],[Remark],[DB_APPNO],[DB_CRDAT],[DB_CRUSR],[DB_TRDAT],[DB_TRUSR]) " +
|
||||
"values (@PlatformCode,@PlatformName,@Account,@Password,@Remark,1,@DB_CRDAT,@DB_CRUSR,@DB_TRDAT,@DB_TRUSR); select @@identity";
|
||||
AddParam(cmd, "PlatformCode", item.PlatformCode);
|
||||
AddParam(cmd, "PlatformName", item.PlatformName);
|
||||
AddParam(cmd, "Account", (object)item.Account ?? DBNull.Value);
|
||||
AddParam(cmd, "Password", (object)item.Password ?? DBNull.Value);
|
||||
AddParam(cmd, "Remark", (object)item.Remark ?? DBNull.Value);
|
||||
AddParam(cmd, "DB_CRDAT", DateTime.Now);
|
||||
AddParam(cmd, "DB_CRUSR", CurrentUserId);
|
||||
AddParam(cmd, "DB_TRDAT", DateTime.Now);
|
||||
AddParam(cmd, "DB_TRUSR", CurrentUserId);
|
||||
int newId;
|
||||
ExecuteScalar(cmd, out newId);
|
||||
item.ID = newId;
|
||||
ts.Complete();
|
||||
return item;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>修改一筆平台設定(含 DB_APPNO 樂觀鎖定)</summary>
|
||||
public MMSPlatformItem UpdateOne(MMSPlatformItem item)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
// 備份舊值
|
||||
MMSPlatformItem old = SelectByCode(item.PlatformCode);
|
||||
if (old == null || old.DB_APPNO != item.DB_APPNO)
|
||||
throw new System.Data.DBConcurrencyException("在更新 \"MMSPlatform\" 資料表時發生並行例外:找不到要更新的資料列");
|
||||
|
||||
DoBackup(old, "UPDATE");
|
||||
|
||||
DbCommand cmd = NewCommand();
|
||||
cmd.CommandText =
|
||||
"update " + _tableName + " set " +
|
||||
" [PlatformName]=@PlatformName, [Account]=@Account, [Password]=@Password, [Remark]=@Remark, " +
|
||||
" [DB_APPNO]=DB_APPNO+1, [DB_TRDAT]=@DB_TRDAT, [DB_TRUSR]=@DB_TRUSR " +
|
||||
"where [ID]=@ID and [DB_APPNO]=@original_DB_APPNO";
|
||||
AddParam(cmd, "PlatformName", item.PlatformName);
|
||||
AddParam(cmd, "Account", (object)item.Account ?? DBNull.Value);
|
||||
AddParam(cmd, "Password", (object)item.Password ?? DBNull.Value);
|
||||
AddParam(cmd, "Remark", (object)item.Remark ?? DBNull.Value);
|
||||
AddParam(cmd, "DB_TRDAT", DateTime.Now);
|
||||
AddParam(cmd, "DB_TRUSR", CurrentUserId);
|
||||
AddParam(cmd, "ID", item.ID);
|
||||
AddParam(cmd, "original_DB_APPNO", item.DB_APPNO);
|
||||
ExecuteNonQuery(cmd);
|
||||
ts.Complete();
|
||||
return item;
|
||||
}
|
||||
}
|
||||
|
||||
private void DoBackup(MMSPlatformItem item, string updateMode)
|
||||
{
|
||||
DbCommand cmd = NewCommand();
|
||||
cmd.CommandText =
|
||||
"insert into [MMSPlatform_BAK] ([ID],[PlatformCode],[PlatformName],[Account],[Password],[Remark],[DB_APPNO],[DB_CRDAT],[DB_CRUSR],[DB_TRDAT],[DB_TRUSR],[DB_TRMOD]) " +
|
||||
"values (@ID,@PlatformCode,@PlatformName,@Account,@Password,@Remark,@DB_APPNO,@DB_CRDAT,@DB_CRUSR,@DB_TRDAT,@DB_TRUSR,@DB_TRMOD)";
|
||||
AddParam(cmd, "ID", item.ID);
|
||||
AddParam(cmd, "PlatformCode", item.PlatformCode);
|
||||
AddParam(cmd, "PlatformName", item.PlatformName);
|
||||
AddParam(cmd, "Account", (object)item.Account ?? DBNull.Value);
|
||||
AddParam(cmd, "Password", (object)item.Password ?? DBNull.Value);
|
||||
AddParam(cmd, "Remark", (object)item.Remark ?? DBNull.Value);
|
||||
AddParam(cmd, "DB_APPNO", item.DB_APPNO);
|
||||
AddParam(cmd, "DB_CRDAT", item.DB_CRDAT);
|
||||
AddParam(cmd, "DB_CRUSR", item.DB_CRUSR);
|
||||
AddParam(cmd, "DB_TRDAT", DateTime.Now);
|
||||
AddParam(cmd, "DB_TRUSR", CurrentUserId);
|
||||
AddParam(cmd, "DB_TRMOD", updateMode);
|
||||
ExecuteNonQuery(cmd);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,698 @@
|
||||
//
|
||||
// 這個檔案是 MessageLog 資料表的資料存取類別 檔案一
|
||||
// 請不要修改這個檔案,重新產生資料存取類別時,這個檔案會被覆蓋掉
|
||||
//
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
using System.Linq;
|
||||
using System.Transactions;
|
||||
using WebLib;
|
||||
using System.Data.SqlClient;
|
||||
|
||||
namespace 報到系統
|
||||
{
|
||||
///<summary>
|
||||
/// MessageLog 資料存取類別
|
||||
///</ summary>
|
||||
[DataObject]
|
||||
public partial class DAC_MessageLog : WebLib.DAC
|
||||
{
|
||||
private const string _tableName = "[MessageLog]";
|
||||
private const string _allFields = "[ID], [CourseID], [Status], [Name], [Mobile], [Subject], [Content], [FailMessage], [DB_APPNO], [DB_CRDAT], [DB_CRUSR], [DB_TRDAT], [DB_TRUSR]";
|
||||
private string _orderBy = "[ID]";
|
||||
private string _select = "select " + _allFields;
|
||||
private string _insert = "[CourseID], [Status], [Name], [Mobile], [Subject], [Content], [FailMessage], [DB_APPNO], [DB_CRDAT], [DB_CRUSR], [DB_TRDAT], [DB_TRUSR]";
|
||||
private string _insertBak = "[ID], [CourseID], [Status], [Name], [Mobile], [Subject], [Content], [FailMessage], [DB_APPNO], [DB_CRDAT], [DB_CRUSR], [DB_TRDAT], [DB_TRUSR], [DB_TRMOD]";
|
||||
private string _insertValue = "@CourseID, @Status, @Name, @Mobile, @Subject, @Content, @FailMessage, @DB_APPNO, @DB_CRDAT, @DB_CRUSR, @DB_TRDAT, @DB_TRUSR";
|
||||
private string _insertBakValue = "@ID, @CourseID, @Status, @Name, @Mobile, @Subject, @Content, @FailMessage, @DB_APPNO, @DB_CRDAT, @DB_CRUSR, @DB_TRDAT, @DB_TRUSR, @DB_TRMOD";
|
||||
private string _from = " from " + _tableName + " ";
|
||||
private string _where = " where 1=1 ";
|
||||
private string _order = " order by [ID] ";
|
||||
|
||||
public DAC_MessageLog()
|
||||
: base()
|
||||
{
|
||||
}
|
||||
|
||||
public DAC_MessageLog(DbConnection conn)
|
||||
: base(conn)
|
||||
{
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public MessageLogList SelectAll(string orderBy = "")
|
||||
{
|
||||
MessageLogList result = new MessageLogList();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where + (orderBy == null || orderBy.Length == 0 ? _order : " order by " + orderBy);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
public int SelectAllCount()
|
||||
{
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = "select count(1) " + _from;
|
||||
int i;
|
||||
ExecuteScalar(cmdSelect, out i);
|
||||
return i;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public MessageLogList SelectAllPage(int startRowIndex, int maximumRows, string orderBy = "")
|
||||
{
|
||||
MessageLogList result = new MessageLogList();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText =
|
||||
String.Format("select top {0} * from (", maximumRows)
|
||||
+ "select " + _allFields
|
||||
+ ", row_number() over (order by " + (orderBy == null || orderBy.Length == 0 ? _orderBy : orderBy) + ") as rowid "
|
||||
+ _from + _where
|
||||
+ ") as TMP1 where rowid > @startRowIndex ";
|
||||
AddParam(cmdSelect, "startRowIndex", startRowIndex);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public MessageLogList SelectOne(int ID)
|
||||
{
|
||||
MessageLogList result = new MessageLogList();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where
|
||||
+ " and ID = @ID "
|
||||
;
|
||||
AddParam(cmdSelect, "ID", ID);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 給查詢畫面用的增加 Where 條件的方法
|
||||
///</summary>
|
||||
private void AddWhere(DbCommand cmdSelect, ref bool noInput, int? CourseID, string Status, string Name, string Mobile)
|
||||
{
|
||||
if (CourseID != null)
|
||||
{
|
||||
noInput = false;
|
||||
cmdSelect.CommandText += " and CourseID = @CourseID ";
|
||||
AddParam(cmdSelect, "CourseID", CourseID);
|
||||
}
|
||||
|
||||
if (Status != null && Status.Length > 0)
|
||||
{
|
||||
noInput = false;
|
||||
cmdSelect.CommandText += " and Status like @Status ";
|
||||
AddParam(cmdSelect, "Status", "%" + Status + "%");
|
||||
}
|
||||
|
||||
if (Name != null && Name.Length > 0)
|
||||
{
|
||||
noInput = false;
|
||||
cmdSelect.CommandText += " and Name like @Name ";
|
||||
AddParam(cmdSelect, "Name", "%" + Name + "%");
|
||||
}
|
||||
|
||||
if (Mobile != null && Mobile.Length > 0)
|
||||
{
|
||||
noInput = false;
|
||||
cmdSelect.CommandText += " and Mobile like @Mobile ";
|
||||
AddParam(cmdSelect, "Mobile", "%" + Mobile + "%");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 給查詢畫面用的 Select 方法
|
||||
///</summary>
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public MessageLogList Select(bool noInputReturnAll, int? CourseID, string Status, string Name, string Mobile, string orderBy = "")
|
||||
{
|
||||
MessageLogList result = new MessageLogList();
|
||||
bool noInput = true;
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where;
|
||||
AddWhere(cmdSelect, ref noInput, CourseID, Status, Name, Mobile);
|
||||
cmdSelect.CommandText += (orderBy == null || orderBy.Length == 0 ? _order : " order by " + orderBy);
|
||||
|
||||
if (!noInputReturnAll && noInput)
|
||||
return result;
|
||||
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 給查詢畫面用的 SelectCount 方法
|
||||
///</summary>
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public int SelectCount(bool noInputReturnAll, int? CourseID, string Status, string Name, string Mobile, string orderBy = "")
|
||||
{
|
||||
bool noInput = true;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = "select count(1) " + _from + _where;
|
||||
AddWhere(cmdSelect, ref noInput, CourseID, Status, Name, Mobile);
|
||||
|
||||
if (!noInputReturnAll && noInput)
|
||||
return 0;
|
||||
|
||||
int i;
|
||||
ExecuteScalar(cmdSelect, out i);
|
||||
return i;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 給查詢畫面用的 SelectPage 方法
|
||||
///</summary>
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public MessageLogList SelectPage(bool noInputReturnAll, int startRowIndex, int maximumRows, int? CourseID, string Status, string Name, string Mobile, string orderBy = "")
|
||||
{
|
||||
MessageLogList result = new MessageLogList();
|
||||
bool noInput = true;
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
|
||||
cmdSelect.CommandText =
|
||||
String.Format("select top {0} * from (", maximumRows)
|
||||
+ "select " + _allFields
|
||||
+ ", row_number() over (order by " + (orderBy == null || orderBy.Length == 0 ? _orderBy : orderBy) + ") as rowid "
|
||||
+ _from + _where;
|
||||
AddWhere(cmdSelect, ref noInput, CourseID, Status, Name, Mobile);
|
||||
cmdSelect.CommandText += ") as TMP1 where rowid > @startRowIndex ";
|
||||
AddParam(cmdSelect, "startRowIndex", startRowIndex);
|
||||
|
||||
if (!noInputReturnAll && noInput)
|
||||
return result;
|
||||
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Insert)]
|
||||
public MessageLogItem InsertOne(MessageLogItem value)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeInsertOne(value))
|
||||
return value;
|
||||
DbCommand cmdInsert = NewCommand();
|
||||
cmdInsert.CommandText =
|
||||
"insert into [MessageLog]"
|
||||
+ " (" + _insert + ")"
|
||||
+ "values "
|
||||
+ " (" + _insertValue + ");" + "select @@identity"
|
||||
;
|
||||
AddParam(cmdInsert, "CourseID", value.CourseID);
|
||||
AddParam(cmdInsert, "Status", value.Status);
|
||||
AddParam(cmdInsert, "Name", value.Name);
|
||||
AddParam(cmdInsert, "Mobile", value.Mobile);
|
||||
AddParam(cmdInsert, "Subject", value.Subject);
|
||||
AddParam(cmdInsert, "Content", value.Content);
|
||||
AddParam(cmdInsert, "FailMessage", value.FailMessage);
|
||||
AddParam(cmdInsert, "DB_APPNO", 1);
|
||||
AddParam(cmdInsert, "DB_CRDAT", DateTime.Now);
|
||||
AddParam(cmdInsert, "DB_CRUSR", CurrentUserId);
|
||||
AddParam(cmdInsert, "DB_TRDAT", DBNull.Value);
|
||||
AddParam(cmdInsert, "DB_TRUSR", DBNull.Value);
|
||||
int newId;
|
||||
ExecuteScalar(cmdInsert, out newId);
|
||||
value.ID = newId;
|
||||
AfterInsertOne(value);
|
||||
ts.Complete();
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
bool handled;
|
||||
OnInsertOneError(error, out handled);
|
||||
if(!handled)
|
||||
throw error;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Update)]
|
||||
public MessageLogItem UpdateOne(MessageLogItem value)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeUpdateOne(value))
|
||||
return value;
|
||||
|
||||
MessageLogList oldValues = SelectOne(value.ID);
|
||||
if (oldValues.Count == 0 || oldValues[0].DB_APPNO != value.DB_APPNO)
|
||||
{
|
||||
throw new DBConcurrencyException("在更新 \"MessageLog\" 資料表時發生並行例外:找不到要更新的資料列");
|
||||
}
|
||||
else
|
||||
{
|
||||
DoBackup(oldValues[0], "UPDATE");
|
||||
}
|
||||
|
||||
DbCommand cmdUpdate = NewCommand();
|
||||
cmdUpdate.CommandText =
|
||||
@"update [MessageLog]
|
||||
set
|
||||
[CourseID] = @CourseID ,
|
||||
[Status] = @Status ,
|
||||
[Name] = @Name ,
|
||||
[Mobile] = @Mobile ,
|
||||
[Subject] = @Subject ,
|
||||
[Content] = @Content ,
|
||||
[FailMessage] = @FailMessage ,
|
||||
DB_APPNO = DB_APPNO + 1,
|
||||
DB_TRDAT = @DB_TRDAT,
|
||||
DB_TRUSR = @DB_TRUSR
|
||||
where 1=1
|
||||
and [ID] = @original_ID
|
||||
and DB_APPNO = @original_DB_APPNO
|
||||
";
|
||||
AddParam(cmdUpdate, "CourseID", value.CourseID);
|
||||
AddParam(cmdUpdate, "Status", value.Status);
|
||||
AddParam(cmdUpdate, "Name", value.Name);
|
||||
AddParam(cmdUpdate, "Mobile", value.Mobile);
|
||||
AddParam(cmdUpdate, "Subject", value.Subject);
|
||||
AddParam(cmdUpdate, "Content", value.Content);
|
||||
AddParam(cmdUpdate, "FailMessage", value.FailMessage);
|
||||
AddParam(cmdUpdate, "DB_TRDAT", DateTime.Now);
|
||||
AddParam(cmdUpdate, "DB_TRUSR", CurrentUserId);
|
||||
AddParam(cmdUpdate, "original_ID", value.ID);
|
||||
AddParam(cmdUpdate, "original_DB_APPNO", value.DB_APPNO);
|
||||
ExecuteNonQuery(cmdUpdate);
|
||||
AfterUpdateOne(value);
|
||||
ts.Complete();
|
||||
return value;
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
bool handled;
|
||||
OnUpdateOneError(error, out handled);
|
||||
if(!handled)
|
||||
throw error;
|
||||
return value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Update)]
|
||||
public MessageLogItem UpdateOne(MessageLogItem value, MessageLogItem original_value)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeUpdateOne(value, original_value))
|
||||
return value;
|
||||
|
||||
MessageLogList oldValues = SelectOne(original_value.ID);
|
||||
if (oldValues.Count == 0 || oldValues[0].DB_APPNO != value.DB_APPNO)
|
||||
{
|
||||
throw new DBConcurrencyException("在更新 \"MessageLog\" 資料表時發生並行例外:找不到要更新的資料列");
|
||||
}
|
||||
else
|
||||
{
|
||||
DoBackup(oldValues[0], "UPDATE");
|
||||
}
|
||||
|
||||
DbCommand cmdUpdate = NewCommand();
|
||||
cmdUpdate.CommandText =
|
||||
@"update [MessageLog]
|
||||
set
|
||||
[CourseID] = @CourseID ,
|
||||
[Status] = @Status ,
|
||||
[Name] = @Name ,
|
||||
[Mobile] = @Mobile ,
|
||||
[Subject] = @Subject ,
|
||||
[Content] = @Content ,
|
||||
[FailMessage] = @FailMessage ,
|
||||
DB_APPNO = DB_APPNO + 1,
|
||||
DB_TRDAT = @DB_TRDAT,
|
||||
DB_TRUSR = @DB_TRUSR
|
||||
where 1=1
|
||||
and [ID] = @original_ID
|
||||
and DB_APPNO = @original_DB_APPNO
|
||||
";
|
||||
AddParam(cmdUpdate, "CourseID", value.CourseID);
|
||||
AddParam(cmdUpdate, "Status", value.Status);
|
||||
AddParam(cmdUpdate, "Name", value.Name);
|
||||
AddParam(cmdUpdate, "Mobile", value.Mobile);
|
||||
AddParam(cmdUpdate, "Subject", value.Subject);
|
||||
AddParam(cmdUpdate, "Content", value.Content);
|
||||
AddParam(cmdUpdate, "FailMessage", value.FailMessage);
|
||||
AddParam(cmdUpdate, "DB_TRDAT", DateTime.Now);
|
||||
AddParam(cmdUpdate, "DB_TRUSR", CurrentUserId);
|
||||
AddParam(cmdUpdate, "original_ID", original_value.ID);
|
||||
AddParam(cmdUpdate, "original_DB_APPNO", original_value.DB_APPNO);
|
||||
ExecuteNonQuery(cmdUpdate);
|
||||
AfterUpdateOne(value, original_value);
|
||||
ts.Complete();
|
||||
return value;
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
bool handled;
|
||||
OnUpdateOneError(error, out handled);
|
||||
if(!handled)
|
||||
throw error;
|
||||
return value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Delete)]
|
||||
public int DeleteOne(int ID, int DB_APPNO)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeDeleteOne(ID, DB_APPNO))
|
||||
return -1;
|
||||
|
||||
MessageLogList oldValues = SelectOne(ID);
|
||||
if (oldValues.Count == 0 || oldValues[0].DB_APPNO != DB_APPNO)
|
||||
{
|
||||
throw new DBConcurrencyException("在刪除 \"MessageLog\" 資料表時發生並行例外:找不到要刪除的資料列");
|
||||
}
|
||||
else
|
||||
{
|
||||
DoBackup(oldValues[0], "DELETE");
|
||||
}
|
||||
|
||||
DbCommand cmdDelete = NewCommand();
|
||||
cmdDelete.CommandText =
|
||||
@"delete from [MessageLog]
|
||||
where 1=1
|
||||
and ID = @ID
|
||||
and DB_APPNO = @DB_APPNO
|
||||
";
|
||||
AddParam(cmdDelete, "ID", ID);
|
||||
AddParam(cmdDelete, "DB_APPNO", DB_APPNO);
|
||||
int rowsAffected = ExecuteNonQuery(cmdDelete);
|
||||
AfterDeleteOne(ID, 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(MessageLogItem value)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeDeleteOne(value))
|
||||
return -1;
|
||||
|
||||
MessageLogList oldValues = SelectOne(value.ID);
|
||||
if (oldValues.Count == 0 || oldValues[0].DB_APPNO != value.DB_APPNO)
|
||||
{
|
||||
throw new DBConcurrencyException("在刪除 \"MessageLog\" 資料表時發生並行例外:找不到要刪除的資料列");
|
||||
}
|
||||
else
|
||||
{
|
||||
DoBackup(oldValues[0], "DELETE");
|
||||
}
|
||||
|
||||
DbCommand cmdDelete = NewCommand();
|
||||
cmdDelete.CommandText =
|
||||
@"delete from [MessageLog]
|
||||
where 1=1
|
||||
and ID = @ID
|
||||
and DB_APPNO = @DB_APPNO
|
||||
";
|
||||
AddParam(cmdDelete, "ID", value.ID);
|
||||
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 ID)
|
||||
{
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = "select count(1)" + _from + _where
|
||||
+ " and ID = @ID "
|
||||
;
|
||||
AddParam(cmdSelect, "ID", ID);
|
||||
int count;
|
||||
ExecuteScalar(cmdSelect, out count);
|
||||
return count > 0;
|
||||
}
|
||||
|
||||
public void DoBackup(MessageLogItem value, string updateMode)
|
||||
{
|
||||
DbCommand cmdBak = NewCommand();
|
||||
cmdBak.CommandText =
|
||||
"insert into [MessageLog_BAK]"
|
||||
+ " (" + _insertBak + ")"
|
||||
+ "values "
|
||||
+ " (" + _insertBakValue + ");"
|
||||
;
|
||||
AddParam(cmdBak, "ID", value.ID);
|
||||
AddParam(cmdBak, "CourseID", value.CourseID);
|
||||
AddParam(cmdBak, "Status", value.Status);
|
||||
AddParam(cmdBak, "Name", value.Name);
|
||||
AddParam(cmdBak, "Mobile", value.Mobile);
|
||||
AddParam(cmdBak, "Subject", value.Subject);
|
||||
AddParam(cmdBak, "Content", value.Content);
|
||||
AddParam(cmdBak, "FailMessage", value.FailMessage);
|
||||
AddParam(cmdBak, "DB_APPNO", value.DB_APPNO);
|
||||
AddParam(cmdBak, "DB_CRDAT", value.DB_CRDAT);
|
||||
AddParam(cmdBak, "DB_CRUSR", value.DB_CRUSR);
|
||||
AddParam(cmdBak, "DB_TRDAT", DateTime.Now);
|
||||
AddParam(cmdBak, "DB_TRUSR", CurrentUserId);
|
||||
AddParam(cmdBak, "DB_TRMOD", updateMode);
|
||||
ExecuteNonQuery(cmdBak);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
///<summary>
|
||||
///MessageLog 資料集合類別
|
||||
///</summary>
|
||||
[Serializable]
|
||||
public partial class MessageLogList : List<MessageLogItem>, IDataList
|
||||
{
|
||||
public void Fill(DbDataReader reader)
|
||||
{
|
||||
DAC.FillData<MessageLogItem>(reader, this);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
///<summary>
|
||||
/// MessageLog 資料紀錄類別
|
||||
///</summary>
|
||||
[Serializable]
|
||||
public partial class MessageLogItem : DataItemBase
|
||||
{
|
||||
private int _ID;
|
||||
private int _CourseID;
|
||||
private string _Status;
|
||||
private string _Name;
|
||||
private string _Mobile;
|
||||
private string _Subject;
|
||||
private string _Content;
|
||||
private string _FailMessage;
|
||||
|
||||
#region 資料欄位
|
||||
///<summary>
|
||||
/// 流水號
|
||||
///</summary>
|
||||
[DataObjectField(true, false, false)]
|
||||
public int ID
|
||||
{
|
||||
get
|
||||
{
|
||||
return _ID;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _ID)
|
||||
{
|
||||
_ID = value;
|
||||
OnPropertyChanged("ID");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 課程ID
|
||||
///</summary>
|
||||
[DataObjectField(false, false, false)]
|
||||
public int CourseID
|
||||
{
|
||||
get
|
||||
{
|
||||
return _CourseID;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _CourseID)
|
||||
{
|
||||
_CourseID = value;
|
||||
OnPropertyChanged("CourseID");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 發送狀態
|
||||
/// SENT = 已發送
|
||||
/// FAILED = 發送失敗
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 10)]
|
||||
public string Status
|
||||
{
|
||||
get
|
||||
{
|
||||
return _Status;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _Status)
|
||||
{
|
||||
_Status = value;
|
||||
OnPropertyChanged("Status");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 學員姓名
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 100)]
|
||||
public string Name
|
||||
{
|
||||
get
|
||||
{
|
||||
return _Name;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _Name)
|
||||
{
|
||||
_Name = value;
|
||||
OnPropertyChanged("Name");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 手機號
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 20)]
|
||||
public string Mobile
|
||||
{
|
||||
get
|
||||
{
|
||||
return _Mobile;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _Mobile)
|
||||
{
|
||||
_Mobile = value;
|
||||
OnPropertyChanged("Mobile");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 簡訊主旨
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 100)]
|
||||
public string Subject
|
||||
{
|
||||
get
|
||||
{
|
||||
return _Subject;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _Subject)
|
||||
{
|
||||
_Subject = value;
|
||||
OnPropertyChanged("Subject");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 簡訊內容
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 500)]
|
||||
public string Content
|
||||
{
|
||||
get
|
||||
{
|
||||
return _Content;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _Content)
|
||||
{
|
||||
_Content = value;
|
||||
OnPropertyChanged("Content");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 發送失敗訊息
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 500)]
|
||||
public string FailMessage
|
||||
{
|
||||
get
|
||||
{
|
||||
return _FailMessage;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _FailMessage)
|
||||
{
|
||||
_FailMessage = value;
|
||||
OnPropertyChanged("FailMessage");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,152 @@
|
||||
//
|
||||
// 這個檔案是 MessageLog 資料表的資料存取類別 檔案二
|
||||
// 您可以修改這個檔案,加入您自訂的屬性與方法
|
||||
//
|
||||
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 報到系統
|
||||
{
|
||||
///<summary>
|
||||
/// MessageLog 資料存取類別
|
||||
///</summary>
|
||||
public partial class DAC_MessageLog : WebLib.DAC
|
||||
{
|
||||
#region 自動產生的資料存取方法
|
||||
///<summary>
|
||||
/// InsertOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查或是自動編號等動作
|
||||
/// 回傳 false 會打斷 InsertOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeInsertOne(MessageLogItem value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// InsertOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterInsertOne(MessageLogItem 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(MessageLogItem value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查
|
||||
/// 回傳 false 會打斷 UpdateOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeUpdateOne(MessageLogItem value, MessageLogItem original_value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterUpdateOne(MessageLogItem value)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterUpdateOne(MessageLogItem value, MessageLogItem 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(MessageLogItem value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterDeleteOne(MessageLogItem value)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查
|
||||
/// 回傳 false 會打斷 DeleteOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeDeleteOne(int ID, int DB_APPNO)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterDeleteOne(int ID, int DB_APPNO)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 發生錯誤時會執行此方法
|
||||
///</summary>
|
||||
///<param name="handled">錯誤是否已經處理妥當</param>
|
||||
protected virtual void OnDeleteOneError(Exception error, out bool handled)
|
||||
{
|
||||
handled = false;
|
||||
}
|
||||
#endregion
|
||||
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
|
||||
///<summary>
|
||||
///MessageLog 資料集合類別
|
||||
///</summary>
|
||||
public partial class MessageLogList : List<MessageLogItem>
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
|
||||
///<summary>
|
||||
///MessageLog 資料紀錄類別
|
||||
///</summary>
|
||||
public partial class MessageLogItem
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,686 @@
|
||||
//
|
||||
// 這個檔案是 MessageQueue 資料表的資料存取類別 檔案一
|
||||
// 請不要修改這個檔案,重新產生資料存取類別時,這個檔案會被覆蓋掉
|
||||
//
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
using System.Linq;
|
||||
using System.Transactions;
|
||||
using WebLib;
|
||||
using System.Data.SqlClient;
|
||||
|
||||
namespace 報到系統
|
||||
{
|
||||
///<summary>
|
||||
/// MessageQueue 資料存取類別
|
||||
///</ summary>
|
||||
[DataObject]
|
||||
public partial class DAC_MessageQueue : WebLib.DAC
|
||||
{
|
||||
private const string _tableName = "[MessageQueue]";
|
||||
private const string _allFields = "[ID], [CourseID], [Status], [Name], [Mobile], [Subject], [Content], [QRCode], [DB_APPNO], [DB_CRDAT], [DB_CRUSR], [DB_TRDAT], [DB_TRUSR]";
|
||||
private string _orderBy = "[ID]";
|
||||
private string _select = "select " + _allFields;
|
||||
private string _insert = "[CourseID], [Status], [Name], [Mobile], [Subject], [Content], [QRCode], [DB_APPNO], [DB_CRDAT], [DB_CRUSR], [DB_TRDAT], [DB_TRUSR]";
|
||||
private string _insertBak = "[ID], [CourseID], [Status], [Name], [Mobile], [Subject], [Content], [QRCode], [DB_APPNO], [DB_CRDAT], [DB_CRUSR], [DB_TRDAT], [DB_TRUSR], [DB_TRMOD]";
|
||||
private string _insertValue = "@CourseID, @Status, @Name, @Mobile, @Subject, @Content, @QRCode, @DB_APPNO, @DB_CRDAT, @DB_CRUSR, @DB_TRDAT, @DB_TRUSR";
|
||||
private string _insertBakValue = "@ID, @CourseID, @Status, @Name, @Mobile, @Subject, @Content, @QRCode, @DB_APPNO, @DB_CRDAT, @DB_CRUSR, @DB_TRDAT, @DB_TRUSR, @DB_TRMOD";
|
||||
private string _from = " from " + _tableName + " ";
|
||||
private string _where = " where 1=1 ";
|
||||
private string _order = " order by [ID] ";
|
||||
|
||||
public DAC_MessageQueue()
|
||||
: base()
|
||||
{
|
||||
}
|
||||
|
||||
public DAC_MessageQueue(DbConnection conn)
|
||||
: base(conn)
|
||||
{
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public MessageQueueList SelectAll(string orderBy = "")
|
||||
{
|
||||
MessageQueueList result = new MessageQueueList();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where + (orderBy == null || orderBy.Length == 0 ? _order : " order by " + orderBy);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
public int SelectAllCount()
|
||||
{
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = "select count(1) " + _from;
|
||||
int i;
|
||||
ExecuteScalar(cmdSelect, out i);
|
||||
return i;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public MessageQueueList SelectAllPage(int startRowIndex, int maximumRows, string orderBy = "")
|
||||
{
|
||||
MessageQueueList result = new MessageQueueList();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText =
|
||||
String.Format("select top {0} * from (", maximumRows)
|
||||
+ "select " + _allFields
|
||||
+ ", row_number() over (order by " + (orderBy == null || orderBy.Length == 0 ? _orderBy : orderBy) + ") as rowid "
|
||||
+ _from + _where
|
||||
+ ") as TMP1 where rowid > @startRowIndex ";
|
||||
AddParam(cmdSelect, "startRowIndex", startRowIndex);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public MessageQueueList SelectOne(int ID)
|
||||
{
|
||||
MessageQueueList result = new MessageQueueList();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where
|
||||
+ " and ID = @ID "
|
||||
;
|
||||
AddParam(cmdSelect, "ID", ID);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 給查詢畫面用的增加 Where 條件的方法
|
||||
///</summary>
|
||||
private void AddWhere(DbCommand cmdSelect, ref bool noInput, int? CourseID, string Status)
|
||||
{
|
||||
if (CourseID != null)
|
||||
{
|
||||
noInput = false;
|
||||
cmdSelect.CommandText += " and CourseID = @CourseID ";
|
||||
AddParam(cmdSelect, "CourseID", CourseID);
|
||||
}
|
||||
|
||||
if (Status != null && Status.Length > 0)
|
||||
{
|
||||
noInput = false;
|
||||
cmdSelect.CommandText += " and Status like @Status ";
|
||||
AddParam(cmdSelect, "Status", "%" + Status + "%");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 給查詢畫面用的 Select 方法
|
||||
///</summary>
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public MessageQueueList Select(bool noInputReturnAll, int? CourseID, string Status, string orderBy = "")
|
||||
{
|
||||
MessageQueueList result = new MessageQueueList();
|
||||
bool noInput = true;
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where;
|
||||
AddWhere(cmdSelect, ref noInput, CourseID, Status);
|
||||
cmdSelect.CommandText += (orderBy == null || orderBy.Length == 0 ? _order : " order by " + orderBy);
|
||||
|
||||
if (!noInputReturnAll && noInput)
|
||||
return result;
|
||||
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 給查詢畫面用的 SelectCount 方法
|
||||
///</summary>
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public int SelectCount(bool noInputReturnAll, int? CourseID, string Status, string orderBy = "")
|
||||
{
|
||||
bool noInput = true;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = "select count(1) " + _from + _where;
|
||||
AddWhere(cmdSelect, ref noInput, CourseID, Status);
|
||||
|
||||
if (!noInputReturnAll && noInput)
|
||||
return 0;
|
||||
|
||||
int i;
|
||||
ExecuteScalar(cmdSelect, out i);
|
||||
return i;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 給查詢畫面用的 SelectPage 方法
|
||||
///</summary>
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public MessageQueueList SelectPage(bool noInputReturnAll, int startRowIndex, int maximumRows, int? CourseID, string Status, string orderBy = "")
|
||||
{
|
||||
MessageQueueList result = new MessageQueueList();
|
||||
bool noInput = true;
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
|
||||
cmdSelect.CommandText =
|
||||
String.Format("select top {0} * from (", maximumRows)
|
||||
+ "select " + _allFields
|
||||
+ ", row_number() over (order by " + (orderBy == null || orderBy.Length == 0 ? _orderBy : orderBy) + ") as rowid "
|
||||
+ _from + _where;
|
||||
AddWhere(cmdSelect, ref noInput, CourseID, Status);
|
||||
cmdSelect.CommandText += ") as TMP1 where rowid > @startRowIndex ";
|
||||
AddParam(cmdSelect, "startRowIndex", startRowIndex);
|
||||
|
||||
if (!noInputReturnAll && noInput)
|
||||
return result;
|
||||
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Insert)]
|
||||
public MessageQueueItem InsertOne(MessageQueueItem value)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeInsertOne(value))
|
||||
return value;
|
||||
DbCommand cmdInsert = NewCommand();
|
||||
cmdInsert.CommandText =
|
||||
"insert into [MessageQueue]"
|
||||
+ " (" + _insert + ")"
|
||||
+ "values "
|
||||
+ " (" + _insertValue + ");" + "select @@identity"
|
||||
;
|
||||
AddParam(cmdInsert, "CourseID", value.CourseID);
|
||||
AddParam(cmdInsert, "Status", value.Status);
|
||||
AddParam(cmdInsert, "Name", value.Name);
|
||||
AddParam(cmdInsert, "Mobile", value.Mobile);
|
||||
AddParam(cmdInsert, "Subject", value.Subject);
|
||||
AddParam(cmdInsert, "Content", value.Content);
|
||||
AddParam(cmdInsert, "QRCode", value.QRCode);
|
||||
AddParam(cmdInsert, "DB_APPNO", 1);
|
||||
AddParam(cmdInsert, "DB_CRDAT", DateTime.Now);
|
||||
AddParam(cmdInsert, "DB_CRUSR", CurrentUserId);
|
||||
AddParam(cmdInsert, "DB_TRDAT", DBNull.Value);
|
||||
AddParam(cmdInsert, "DB_TRUSR", DBNull.Value);
|
||||
int newId;
|
||||
ExecuteScalar(cmdInsert, out newId);
|
||||
value.ID = newId;
|
||||
AfterInsertOne(value);
|
||||
ts.Complete();
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
bool handled;
|
||||
OnInsertOneError(error, out handled);
|
||||
if(!handled)
|
||||
throw error;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Update)]
|
||||
public MessageQueueItem UpdateOne(MessageQueueItem value)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeUpdateOne(value))
|
||||
return value;
|
||||
|
||||
MessageQueueList oldValues = SelectOne(value.ID);
|
||||
if (oldValues.Count == 0 || oldValues[0].DB_APPNO != value.DB_APPNO)
|
||||
{
|
||||
throw new DBConcurrencyException("在更新 \"MessageQueue\" 資料表時發生並行例外:找不到要更新的資料列");
|
||||
}
|
||||
else
|
||||
{
|
||||
DoBackup(oldValues[0], "UPDATE");
|
||||
}
|
||||
|
||||
DbCommand cmdUpdate = NewCommand();
|
||||
cmdUpdate.CommandText =
|
||||
@"update [MessageQueue]
|
||||
set
|
||||
[CourseID] = @CourseID ,
|
||||
[Status] = @Status ,
|
||||
[Name] = @Name ,
|
||||
[Mobile] = @Mobile ,
|
||||
[Subject] = @Subject ,
|
||||
[Content] = @Content ,
|
||||
[QRCode] = @QRCode ,
|
||||
DB_APPNO = DB_APPNO + 1,
|
||||
DB_TRDAT = @DB_TRDAT,
|
||||
DB_TRUSR = @DB_TRUSR
|
||||
where 1=1
|
||||
and [ID] = @original_ID
|
||||
and DB_APPNO = @original_DB_APPNO
|
||||
";
|
||||
AddParam(cmdUpdate, "CourseID", value.CourseID);
|
||||
AddParam(cmdUpdate, "Status", value.Status);
|
||||
AddParam(cmdUpdate, "Name", value.Name);
|
||||
AddParam(cmdUpdate, "Mobile", value.Mobile);
|
||||
AddParam(cmdUpdate, "Subject", value.Subject);
|
||||
AddParam(cmdUpdate, "Content", value.Content);
|
||||
AddParam(cmdUpdate, "QRCode", value.QRCode);
|
||||
AddParam(cmdUpdate, "DB_TRDAT", DateTime.Now);
|
||||
AddParam(cmdUpdate, "DB_TRUSR", CurrentUserId);
|
||||
AddParam(cmdUpdate, "original_ID", value.ID);
|
||||
AddParam(cmdUpdate, "original_DB_APPNO", value.DB_APPNO);
|
||||
ExecuteNonQuery(cmdUpdate);
|
||||
AfterUpdateOne(value);
|
||||
ts.Complete();
|
||||
return value;
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
bool handled;
|
||||
OnUpdateOneError(error, out handled);
|
||||
if(!handled)
|
||||
throw error;
|
||||
return value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Update)]
|
||||
public MessageQueueItem UpdateOne(MessageQueueItem value, MessageQueueItem original_value)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeUpdateOne(value, original_value))
|
||||
return value;
|
||||
|
||||
MessageQueueList oldValues = SelectOne(original_value.ID);
|
||||
if (oldValues.Count == 0 || oldValues[0].DB_APPNO != value.DB_APPNO)
|
||||
{
|
||||
throw new DBConcurrencyException("在更新 \"MessageQueue\" 資料表時發生並行例外:找不到要更新的資料列");
|
||||
}
|
||||
else
|
||||
{
|
||||
DoBackup(oldValues[0], "UPDATE");
|
||||
}
|
||||
|
||||
DbCommand cmdUpdate = NewCommand();
|
||||
cmdUpdate.CommandText =
|
||||
@"update [MessageQueue]
|
||||
set
|
||||
[CourseID] = @CourseID ,
|
||||
[Status] = @Status ,
|
||||
[Name] = @Name ,
|
||||
[Mobile] = @Mobile ,
|
||||
[Subject] = @Subject ,
|
||||
[Content] = @Content ,
|
||||
[QRCode] = @QRCode ,
|
||||
DB_APPNO = DB_APPNO + 1,
|
||||
DB_TRDAT = @DB_TRDAT,
|
||||
DB_TRUSR = @DB_TRUSR
|
||||
where 1=1
|
||||
and [ID] = @original_ID
|
||||
and DB_APPNO = @original_DB_APPNO
|
||||
";
|
||||
AddParam(cmdUpdate, "CourseID", value.CourseID);
|
||||
AddParam(cmdUpdate, "Status", value.Status);
|
||||
AddParam(cmdUpdate, "Name", value.Name);
|
||||
AddParam(cmdUpdate, "Mobile", value.Mobile);
|
||||
AddParam(cmdUpdate, "Subject", value.Subject);
|
||||
AddParam(cmdUpdate, "Content", value.Content);
|
||||
AddParam(cmdUpdate, "QRCode", value.QRCode);
|
||||
AddParam(cmdUpdate, "DB_TRDAT", DateTime.Now);
|
||||
AddParam(cmdUpdate, "DB_TRUSR", CurrentUserId);
|
||||
AddParam(cmdUpdate, "original_ID", original_value.ID);
|
||||
AddParam(cmdUpdate, "original_DB_APPNO", original_value.DB_APPNO);
|
||||
ExecuteNonQuery(cmdUpdate);
|
||||
AfterUpdateOne(value, original_value);
|
||||
ts.Complete();
|
||||
return value;
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
bool handled;
|
||||
OnUpdateOneError(error, out handled);
|
||||
if(!handled)
|
||||
throw error;
|
||||
return value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Delete)]
|
||||
public int DeleteOne(int ID, int DB_APPNO)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeDeleteOne(ID, DB_APPNO))
|
||||
return -1;
|
||||
|
||||
MessageQueueList oldValues = SelectOne(ID);
|
||||
if (oldValues.Count == 0 || oldValues[0].DB_APPNO != DB_APPNO)
|
||||
{
|
||||
throw new DBConcurrencyException("在刪除 \"MessageQueue\" 資料表時發生並行例外:找不到要刪除的資料列");
|
||||
}
|
||||
else
|
||||
{
|
||||
DoBackup(oldValues[0], "DELETE");
|
||||
}
|
||||
|
||||
DbCommand cmdDelete = NewCommand();
|
||||
cmdDelete.CommandText =
|
||||
@"delete from [MessageQueue]
|
||||
where 1=1
|
||||
and ID = @ID
|
||||
and DB_APPNO = @DB_APPNO
|
||||
";
|
||||
AddParam(cmdDelete, "ID", ID);
|
||||
AddParam(cmdDelete, "DB_APPNO", DB_APPNO);
|
||||
int rowsAffected = ExecuteNonQuery(cmdDelete);
|
||||
AfterDeleteOne(ID, 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(MessageQueueItem value)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeDeleteOne(value))
|
||||
return -1;
|
||||
|
||||
MessageQueueList oldValues = SelectOne(value.ID);
|
||||
if (oldValues.Count == 0 || oldValues[0].DB_APPNO != value.DB_APPNO)
|
||||
{
|
||||
throw new DBConcurrencyException("在刪除 \"MessageQueue\" 資料表時發生並行例外:找不到要刪除的資料列");
|
||||
}
|
||||
else
|
||||
{
|
||||
DoBackup(oldValues[0], "DELETE");
|
||||
}
|
||||
|
||||
DbCommand cmdDelete = NewCommand();
|
||||
cmdDelete.CommandText =
|
||||
@"delete from [MessageQueue]
|
||||
where 1=1
|
||||
and ID = @ID
|
||||
and DB_APPNO = @DB_APPNO
|
||||
";
|
||||
AddParam(cmdDelete, "ID", value.ID);
|
||||
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 ID)
|
||||
{
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = "select count(1)" + _from + _where
|
||||
+ " and ID = @ID "
|
||||
;
|
||||
AddParam(cmdSelect, "ID", ID);
|
||||
int count;
|
||||
ExecuteScalar(cmdSelect, out count);
|
||||
return count > 0;
|
||||
}
|
||||
|
||||
public void DoBackup(MessageQueueItem value, string updateMode)
|
||||
{
|
||||
//DbCommand cmdBak = NewCommand();
|
||||
//cmdBak.CommandText =
|
||||
// "insert into [MessageQueue_BAK]"
|
||||
// + " (" + _insertBak + ")"
|
||||
// + "values "
|
||||
// + " (" + _insertBakValue + ");"
|
||||
// ;
|
||||
//AddParam(cmdBak, "ID", value.ID);
|
||||
//AddParam(cmdBak, "CourseID", value.CourseID);
|
||||
//AddParam(cmdBak, "Status", value.Status);
|
||||
//AddParam(cmdBak, "Name", value.Name);
|
||||
//AddParam(cmdBak, "Mobile", value.Mobile);
|
||||
//AddParam(cmdBak, "Subject", value.Subject);
|
||||
//AddParam(cmdBak, "Content", value.Content);
|
||||
//AddParam(cmdBak, "QRCode", value.QRCode);
|
||||
//AddParam(cmdBak, "DB_APPNO", value.DB_APPNO);
|
||||
//AddParam(cmdBak, "DB_CRDAT", value.DB_CRDAT);
|
||||
//AddParam(cmdBak, "DB_CRUSR", value.DB_CRUSR);
|
||||
//AddParam(cmdBak, "DB_TRDAT", DateTime.Now);
|
||||
//AddParam(cmdBak, "DB_TRUSR", CurrentUserId);
|
||||
//AddParam(cmdBak, "DB_TRMOD", updateMode);
|
||||
//ExecuteNonQuery(cmdBak);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
///<summary>
|
||||
///MessageQueue 資料集合類別
|
||||
///</summary>
|
||||
[Serializable]
|
||||
public partial class MessageQueueList : List<MessageQueueItem>, IDataList
|
||||
{
|
||||
public void Fill(DbDataReader reader)
|
||||
{
|
||||
DAC.FillData<MessageQueueItem>(reader, this);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
///<summary>
|
||||
/// MessageQueue 資料紀錄類別
|
||||
///</summary>
|
||||
[Serializable]
|
||||
public partial class MessageQueueItem : DataItemBase
|
||||
{
|
||||
private int _ID;
|
||||
private int _CourseID;
|
||||
private string _Status;
|
||||
private string _Name;
|
||||
private string _Mobile;
|
||||
private string _Subject;
|
||||
private string _Content;
|
||||
private string _QRCode;
|
||||
|
||||
#region 資料欄位
|
||||
///<summary>
|
||||
/// 流水號
|
||||
///</summary>
|
||||
[DataObjectField(true, false, false)]
|
||||
public int ID
|
||||
{
|
||||
get
|
||||
{
|
||||
return _ID;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _ID)
|
||||
{
|
||||
_ID = value;
|
||||
OnPropertyChanged("ID");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 課程ID
|
||||
///</summary>
|
||||
[DataObjectField(false, false, false)]
|
||||
public int CourseID
|
||||
{
|
||||
get
|
||||
{
|
||||
return _CourseID;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _CourseID)
|
||||
{
|
||||
_CourseID = value;
|
||||
OnPropertyChanged("CourseID");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 發送狀態
|
||||
/// PENDING = 等候發送
|
||||
/// SENDING = 發送中
|
||||
/// SENT = 已發送
|
||||
/// FAILED = 發送失敗
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 10)]
|
||||
public string Status
|
||||
{
|
||||
get
|
||||
{
|
||||
return _Status;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _Status)
|
||||
{
|
||||
_Status = value;
|
||||
OnPropertyChanged("Status");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 學員姓名
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 100)]
|
||||
public string Name
|
||||
{
|
||||
get
|
||||
{
|
||||
return _Name;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _Name)
|
||||
{
|
||||
_Name = value;
|
||||
OnPropertyChanged("Name");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 手機號
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 20)]
|
||||
public string Mobile
|
||||
{
|
||||
get
|
||||
{
|
||||
return _Mobile;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _Mobile)
|
||||
{
|
||||
_Mobile = value;
|
||||
OnPropertyChanged("Mobile");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 簡訊主旨
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 100)]
|
||||
public string Subject
|
||||
{
|
||||
get
|
||||
{
|
||||
return _Subject;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _Subject)
|
||||
{
|
||||
_Subject = value;
|
||||
OnPropertyChanged("Subject");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 簡訊內容
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 500)]
|
||||
public string Content
|
||||
{
|
||||
get
|
||||
{
|
||||
return _Content;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _Content)
|
||||
{
|
||||
_Content = value;
|
||||
OnPropertyChanged("Content");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// QRCode 圖片的 BASE64
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public string QRCode
|
||||
{
|
||||
get
|
||||
{
|
||||
return _QRCode;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _QRCode)
|
||||
{
|
||||
_QRCode = value;
|
||||
OnPropertyChanged("QRCode");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,176 @@
|
||||
//
|
||||
// 這個檔案是 MessageQueue 資料表的資料存取類別 檔案二
|
||||
// 您可以修改這個檔案,加入您自訂的屬性與方法
|
||||
//
|
||||
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 報到系統
|
||||
{
|
||||
///<summary>
|
||||
/// MessageQueue 資料存取類別
|
||||
///</summary>
|
||||
public partial class DAC_MessageQueue : WebLib.DAC
|
||||
{
|
||||
#region 自動產生的資料存取方法
|
||||
///<summary>
|
||||
/// InsertOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查或是自動編號等動作
|
||||
/// 回傳 false 會打斷 InsertOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeInsertOne(MessageQueueItem value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// InsertOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterInsertOne(MessageQueueItem 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(MessageQueueItem value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查
|
||||
/// 回傳 false 會打斷 UpdateOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeUpdateOne(MessageQueueItem value, MessageQueueItem original_value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterUpdateOne(MessageQueueItem value)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterUpdateOne(MessageQueueItem value, MessageQueueItem 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(MessageQueueItem value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterDeleteOne(MessageQueueItem value)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查
|
||||
/// 回傳 false 會打斷 DeleteOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeDeleteOne(int ID, int DB_APPNO)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterDeleteOne(int ID, int DB_APPNO)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 發生錯誤時會執行此方法
|
||||
///</summary>
|
||||
///<param name="handled">錯誤是否已經處理妥當</param>
|
||||
protected virtual void OnDeleteOneError(Exception error, out bool handled)
|
||||
{
|
||||
handled = false;
|
||||
}
|
||||
#endregion
|
||||
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
public MessageQueueList SelectAllPendingOrSending(string orderBy = "")
|
||||
{
|
||||
MessageQueueList result = new MessageQueueList();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where + " and (Status='PENDING' or Status='SENDING') " + (orderBy == null || orderBy.Length == 0 ? _order : " order by " + orderBy);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
///MessageQueue 資料集合類別
|
||||
///</summary>
|
||||
public partial class MessageQueueList : List<MessageQueueItem>
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
|
||||
///<summary>
|
||||
///MessageQueue 資料紀錄類別
|
||||
///</summary>
|
||||
public partial class MessageQueueItem
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
|
||||
/// <summary>
|
||||
/// 簡訊帳號(由 SMSSendingService 填入,不對應 DB 欄位)
|
||||
/// </summary>
|
||||
public string MMSAccount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 簡訊密碼(由 SMSSendingService 填入,不對應 DB 欄位)
|
||||
/// </summary>
|
||||
public string MMSPassword { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 平台代碼(由 SMSSendingService 依計畫設定或系統預設填入,不對應 DB 欄位)
|
||||
/// </summary>
|
||||
public string PlatformCode { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,584 @@
|
||||
//
|
||||
// 這個檔案是 ProjectMMSAccount 資料表的資料存取類別 檔案一
|
||||
// 請不要修改這個檔案,重新產生資料存取類別時,這個檔案會被覆蓋掉
|
||||
//
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
using System.Linq;
|
||||
using System.Transactions;
|
||||
using WebLib;
|
||||
using System.Data.SqlClient;
|
||||
|
||||
namespace 報到系統
|
||||
{
|
||||
///<summary>
|
||||
/// ProjectMMSAccount 資料存取類別
|
||||
///</ summary>
|
||||
[DataObject]
|
||||
public partial class DAC_ProjectMMSAccount : WebLib.DAC
|
||||
{
|
||||
private const string _tableName = "[ProjectMMSAccount]";
|
||||
private const string _allFields = "[ID], [ProjectID], [MMSAccount], [MMSPassword], [PlatformCode], [DB_APPNO], [DB_CRDAT], [DB_CRUSR], [DB_TRDAT], [DB_TRUSR]";
|
||||
private string _orderBy = "[ID]";
|
||||
private string _select = "select " + _allFields;
|
||||
private string _insert = "[ProjectID], [MMSAccount], [MMSPassword], [PlatformCode], [DB_APPNO], [DB_CRDAT], [DB_CRUSR], [DB_TRDAT], [DB_TRUSR]";
|
||||
private string _insertBak = "[ID], [ProjectID], [MMSAccount], [MMSPassword], [PlatformCode], [DB_APPNO], [DB_CRDAT], [DB_CRUSR], [DB_TRDAT], [DB_TRUSR], [DB_TRMOD]";
|
||||
private string _insertValue = "@ProjectID, @MMSAccount, @MMSPassword, @PlatformCode, @DB_APPNO, @DB_CRDAT, @DB_CRUSR, @DB_TRDAT, @DB_TRUSR";
|
||||
private string _insertBakValue = "@ID, @ProjectID, @MMSAccount, @MMSPassword, @PlatformCode, @DB_APPNO, @DB_CRDAT, @DB_CRUSR, @DB_TRDAT, @DB_TRUSR, @DB_TRMOD";
|
||||
private string _from = " from " + _tableName + " ";
|
||||
private string _where = " where 1=1 ";
|
||||
private string _order = " order by [ID] ";
|
||||
|
||||
public DAC_ProjectMMSAccount()
|
||||
: base()
|
||||
{
|
||||
}
|
||||
|
||||
public DAC_ProjectMMSAccount(DbConnection conn)
|
||||
: base(conn)
|
||||
{
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public ProjectMMSAccountList SelectAll(string orderBy = "")
|
||||
{
|
||||
ProjectMMSAccountList result = new ProjectMMSAccountList();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where + (orderBy == null || orderBy.Length == 0 ? _order : " order by " + orderBy);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
public int SelectAllCount()
|
||||
{
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = "select count(1) " + _from;
|
||||
int i;
|
||||
ExecuteScalar(cmdSelect, out i);
|
||||
return i;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public ProjectMMSAccountList SelectAllPage(int startRowIndex, int maximumRows, string orderBy = "")
|
||||
{
|
||||
ProjectMMSAccountList result = new ProjectMMSAccountList();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText =
|
||||
String.Format("select top {0} * from (", maximumRows)
|
||||
+ "select " + _allFields
|
||||
+ ", row_number() over (order by " + (orderBy == null || orderBy.Length == 0 ? _orderBy : orderBy) + ") as rowid "
|
||||
+ _from + _where
|
||||
+ ") as TMP1 where rowid > @startRowIndex ";
|
||||
AddParam(cmdSelect, "startRowIndex", startRowIndex);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public ProjectMMSAccountList SelectOne(int ID)
|
||||
{
|
||||
ProjectMMSAccountList result = new ProjectMMSAccountList();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where
|
||||
+ " and ID = @ID "
|
||||
;
|
||||
AddParam(cmdSelect, "ID", ID);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 給查詢畫面用的增加 Where 條件的方法
|
||||
///</summary>
|
||||
private void AddWhere(DbCommand cmdSelect, ref bool noInput, string ProjectID, string PlatformCode = null)
|
||||
{
|
||||
if (ProjectID != null && ProjectID.Length > 0)
|
||||
{
|
||||
noInput = false;
|
||||
cmdSelect.CommandText += " and ProjectID like @ProjectID ";
|
||||
AddParam(cmdSelect, "ProjectID", "%" + ProjectID + "%");
|
||||
}
|
||||
if (PlatformCode != null && PlatformCode.Length > 0)
|
||||
{
|
||||
noInput = false;
|
||||
cmdSelect.CommandText += " and PlatformCode = @PlatformCode ";
|
||||
AddParam(cmdSelect, "PlatformCode", PlatformCode);
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 給查詢畫面用的 Select 方法
|
||||
///</summary>
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public ProjectMMSAccountList Select(bool noInputReturnAll, string ProjectID, string orderBy = "", string PlatformCode = null)
|
||||
{
|
||||
ProjectMMSAccountList result = new ProjectMMSAccountList();
|
||||
bool noInput = true;
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where;
|
||||
AddWhere(cmdSelect, ref noInput, ProjectID, PlatformCode);
|
||||
cmdSelect.CommandText += (orderBy == null || orderBy.Length == 0 ? _order : " order by " + orderBy);
|
||||
|
||||
if (!noInputReturnAll && noInput)
|
||||
return result;
|
||||
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 給查詢畫面用的 SelectCount 方法
|
||||
///</summary>
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public int SelectCount(bool noInputReturnAll, string ProjectID, string orderBy = "", string PlatformCode = null)
|
||||
{
|
||||
bool noInput = true;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = "select count(1) " + _from + _where;
|
||||
AddWhere(cmdSelect, ref noInput, ProjectID, PlatformCode);
|
||||
|
||||
if (!noInputReturnAll && noInput)
|
||||
return 0;
|
||||
|
||||
int i;
|
||||
ExecuteScalar(cmdSelect, out i);
|
||||
return i;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 給查詢畫面用的 SelectPage 方法
|
||||
///</summary>
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public ProjectMMSAccountList SelectPage(bool noInputReturnAll, int startRowIndex, int maximumRows, string ProjectID, string orderBy = "", string PlatformCode = null)
|
||||
{
|
||||
ProjectMMSAccountList result = new ProjectMMSAccountList();
|
||||
bool noInput = true;
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
|
||||
cmdSelect.CommandText =
|
||||
String.Format("select top {0} * from (", maximumRows)
|
||||
+ "select " + _allFields
|
||||
+ ", row_number() over (order by " + (orderBy == null || orderBy.Length == 0 ? _orderBy : orderBy) + ") as rowid "
|
||||
+ _from + _where;
|
||||
AddWhere(cmdSelect, ref noInput, ProjectID, PlatformCode);
|
||||
cmdSelect.CommandText += ") as TMP1 where rowid > @startRowIndex ";
|
||||
AddParam(cmdSelect, "startRowIndex", startRowIndex);
|
||||
|
||||
if (!noInputReturnAll && noInput)
|
||||
return result;
|
||||
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Insert)]
|
||||
public ProjectMMSAccountItem InsertOne(ProjectMMSAccountItem value)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeInsertOne(value))
|
||||
return value;
|
||||
DbCommand cmdInsert = NewCommand();
|
||||
cmdInsert.CommandText =
|
||||
"insert into [ProjectMMSAccount]"
|
||||
+ " (" + _insert + ")"
|
||||
+ "values "
|
||||
+ " (" + _insertValue + ");" + "select @@identity"
|
||||
;
|
||||
AddParam(cmdInsert, "ProjectID", value.ProjectID);
|
||||
AddParam(cmdInsert, "MMSAccount", value.MMSAccount);
|
||||
AddParam(cmdInsert, "MMSPassword", value.MMSPassword);
|
||||
AddParam(cmdInsert, "PlatformCode", (object)value.PlatformCode ?? DBNull.Value);
|
||||
AddParam(cmdInsert, "DB_APPNO", 1);
|
||||
AddParam(cmdInsert, "DB_CRDAT", DateTime.Now);
|
||||
AddParam(cmdInsert, "DB_CRUSR", CurrentUserId);
|
||||
AddParam(cmdInsert, "DB_TRDAT", DBNull.Value);
|
||||
AddParam(cmdInsert, "DB_TRUSR", DBNull.Value);
|
||||
int newId;
|
||||
ExecuteScalar(cmdInsert, out newId);
|
||||
value.ID = newId;
|
||||
AfterInsertOne(value);
|
||||
ts.Complete();
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
bool handled;
|
||||
OnInsertOneError(error, out handled);
|
||||
if(!handled)
|
||||
throw error;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Update)]
|
||||
public ProjectMMSAccountItem UpdateOne(ProjectMMSAccountItem value)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeUpdateOne(value))
|
||||
return value;
|
||||
|
||||
ProjectMMSAccountList oldValues = SelectOne(value.ID);
|
||||
if (oldValues.Count == 0 || oldValues[0].DB_APPNO != value.DB_APPNO)
|
||||
{
|
||||
throw new DBConcurrencyException("在更新 \"ProjectMMSAccount\" 資料表時發生並行例外:找不到要更新的資料列");
|
||||
}
|
||||
else
|
||||
{
|
||||
DoBackup(oldValues[0], "UPDATE");
|
||||
}
|
||||
|
||||
DbCommand cmdUpdate = NewCommand();
|
||||
cmdUpdate.CommandText =
|
||||
@"update [ProjectMMSAccount]
|
||||
set
|
||||
[ProjectID] = @ProjectID ,
|
||||
[MMSAccount] = @MMSAccount ,
|
||||
[MMSPassword] = @MMSPassword ,
|
||||
[PlatformCode] = @PlatformCode ,
|
||||
DB_APPNO = DB_APPNO + 1,
|
||||
DB_TRDAT = @DB_TRDAT,
|
||||
DB_TRUSR = @DB_TRUSR
|
||||
where 1=1
|
||||
and [ID] = @original_ID
|
||||
and DB_APPNO = @original_DB_APPNO
|
||||
";
|
||||
AddParam(cmdUpdate, "ProjectID", value.ProjectID);
|
||||
AddParam(cmdUpdate, "MMSAccount", value.MMSAccount);
|
||||
AddParam(cmdUpdate, "MMSPassword", value.MMSPassword);
|
||||
AddParam(cmdUpdate, "PlatformCode", (object)value.PlatformCode ?? DBNull.Value);
|
||||
AddParam(cmdUpdate, "DB_TRDAT", DateTime.Now);
|
||||
AddParam(cmdUpdate, "DB_TRUSR", CurrentUserId);
|
||||
AddParam(cmdUpdate, "original_ID", value.ID);
|
||||
AddParam(cmdUpdate, "original_DB_APPNO", value.DB_APPNO);
|
||||
ExecuteNonQuery(cmdUpdate);
|
||||
AfterUpdateOne(value);
|
||||
ts.Complete();
|
||||
return value;
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
bool handled;
|
||||
OnUpdateOneError(error, out handled);
|
||||
if(!handled)
|
||||
throw error;
|
||||
return value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Update)]
|
||||
public ProjectMMSAccountItem UpdateOne(ProjectMMSAccountItem value, ProjectMMSAccountItem original_value)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeUpdateOne(value, original_value))
|
||||
return value;
|
||||
|
||||
ProjectMMSAccountList oldValues = SelectOne(original_value.ID);
|
||||
if (oldValues.Count == 0 || oldValues[0].DB_APPNO != value.DB_APPNO)
|
||||
{
|
||||
throw new DBConcurrencyException("在更新 \"ProjectMMSAccount\" 資料表時發生並行例外:找不到要更新的資料列");
|
||||
}
|
||||
else
|
||||
{
|
||||
DoBackup(oldValues[0], "UPDATE");
|
||||
}
|
||||
|
||||
DbCommand cmdUpdate = NewCommand();
|
||||
cmdUpdate.CommandText =
|
||||
@"update [ProjectMMSAccount]
|
||||
set
|
||||
[ProjectID] = @ProjectID ,
|
||||
[MMSAccount] = @MMSAccount ,
|
||||
[MMSPassword] = @MMSPassword ,
|
||||
[PlatformCode] = @PlatformCode ,
|
||||
DB_APPNO = DB_APPNO + 1,
|
||||
DB_TRDAT = @DB_TRDAT,
|
||||
DB_TRUSR = @DB_TRUSR
|
||||
where 1=1
|
||||
and [ID] = @original_ID
|
||||
and DB_APPNO = @original_DB_APPNO
|
||||
";
|
||||
AddParam(cmdUpdate, "ProjectID", value.ProjectID);
|
||||
AddParam(cmdUpdate, "MMSAccount", value.MMSAccount);
|
||||
AddParam(cmdUpdate, "MMSPassword", value.MMSPassword);
|
||||
AddParam(cmdUpdate, "PlatformCode", (object)value.PlatformCode ?? DBNull.Value);
|
||||
AddParam(cmdUpdate, "DB_TRDAT", DateTime.Now);
|
||||
AddParam(cmdUpdate, "DB_TRUSR", CurrentUserId);
|
||||
AddParam(cmdUpdate, "original_ID", original_value.ID);
|
||||
AddParam(cmdUpdate, "original_DB_APPNO", original_value.DB_APPNO);
|
||||
ExecuteNonQuery(cmdUpdate);
|
||||
AfterUpdateOne(value, original_value);
|
||||
ts.Complete();
|
||||
return value;
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
bool handled;
|
||||
OnUpdateOneError(error, out handled);
|
||||
if(!handled)
|
||||
throw error;
|
||||
return value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Delete)]
|
||||
public int DeleteOne(int ID, int DB_APPNO)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeDeleteOne(ID, DB_APPNO))
|
||||
return -1;
|
||||
|
||||
ProjectMMSAccountList oldValues = SelectOne(ID);
|
||||
if (oldValues.Count == 0 || oldValues[0].DB_APPNO != DB_APPNO)
|
||||
{
|
||||
throw new DBConcurrencyException("在刪除 \"ProjectMMSAccount\" 資料表時發生並行例外:找不到要刪除的資料列");
|
||||
}
|
||||
else
|
||||
{
|
||||
DoBackup(oldValues[0], "DELETE");
|
||||
}
|
||||
|
||||
DbCommand cmdDelete = NewCommand();
|
||||
cmdDelete.CommandText =
|
||||
@"delete from [ProjectMMSAccount]
|
||||
where 1=1
|
||||
and ID = @ID
|
||||
and DB_APPNO = @DB_APPNO
|
||||
";
|
||||
AddParam(cmdDelete, "ID", ID);
|
||||
AddParam(cmdDelete, "DB_APPNO", DB_APPNO);
|
||||
int rowsAffected = ExecuteNonQuery(cmdDelete);
|
||||
AfterDeleteOne(ID, 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(ProjectMMSAccountItem value)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeDeleteOne(value))
|
||||
return -1;
|
||||
|
||||
ProjectMMSAccountList oldValues = SelectOne(value.ID);
|
||||
if (oldValues.Count == 0 || oldValues[0].DB_APPNO != value.DB_APPNO)
|
||||
{
|
||||
throw new DBConcurrencyException("在刪除 \"ProjectMMSAccount\" 資料表時發生並行例外:找不到要刪除的資料列");
|
||||
}
|
||||
else
|
||||
{
|
||||
DoBackup(oldValues[0], "DELETE");
|
||||
}
|
||||
|
||||
DbCommand cmdDelete = NewCommand();
|
||||
cmdDelete.CommandText =
|
||||
@"delete from [ProjectMMSAccount]
|
||||
where 1=1
|
||||
and ID = @ID
|
||||
and DB_APPNO = @DB_APPNO
|
||||
";
|
||||
AddParam(cmdDelete, "ID", value.ID);
|
||||
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 ID)
|
||||
{
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = "select count(1)" + _from + _where
|
||||
+ " and ID = @ID "
|
||||
;
|
||||
AddParam(cmdSelect, "ID", ID);
|
||||
int count;
|
||||
ExecuteScalar(cmdSelect, out count);
|
||||
return count > 0;
|
||||
}
|
||||
|
||||
public void DoBackup(ProjectMMSAccountItem value, string updateMode)
|
||||
{
|
||||
DbCommand cmdBak = NewCommand();
|
||||
cmdBak.CommandText =
|
||||
"insert into [ProjectMMSAccount_BAK]"
|
||||
+ " (" + _insertBak + ")"
|
||||
+ "values "
|
||||
+ " (" + _insertBakValue + ");"
|
||||
;
|
||||
AddParam(cmdBak, "ID", value.ID);
|
||||
AddParam(cmdBak, "ProjectID", value.ProjectID);
|
||||
AddParam(cmdBak, "MMSAccount", value.MMSAccount);
|
||||
AddParam(cmdBak, "MMSPassword", value.MMSPassword);
|
||||
AddParam(cmdBak, "PlatformCode", (object)value.PlatformCode ?? DBNull.Value);
|
||||
AddParam(cmdBak, "DB_APPNO", value.DB_APPNO);
|
||||
AddParam(cmdBak, "DB_CRDAT", value.DB_CRDAT);
|
||||
AddParam(cmdBak, "DB_CRUSR", value.DB_CRUSR);
|
||||
AddParam(cmdBak, "DB_TRDAT", DateTime.Now);
|
||||
AddParam(cmdBak, "DB_TRUSR", CurrentUserId);
|
||||
AddParam(cmdBak, "DB_TRMOD", updateMode);
|
||||
ExecuteNonQuery(cmdBak);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
///<summary>
|
||||
///ProjectMMSAccount 資料集合類別
|
||||
///</summary>
|
||||
[Serializable]
|
||||
public partial class ProjectMMSAccountList : List<ProjectMMSAccountItem>, IDataList
|
||||
{
|
||||
public void Fill(DbDataReader reader)
|
||||
{
|
||||
DAC.FillData<ProjectMMSAccountItem>(reader, this);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
///<summary>
|
||||
/// ProjectMMSAccount 資料紀錄類別
|
||||
///</summary>
|
||||
[Serializable]
|
||||
public partial class ProjectMMSAccountItem : DataItemBase
|
||||
{
|
||||
private int _ID;
|
||||
private string _ProjectID;
|
||||
private string _MMSAccount;
|
||||
private string _MMSPassword;
|
||||
|
||||
#region 資料欄位
|
||||
///<summary>
|
||||
/// 流水號
|
||||
///</summary>
|
||||
[DataObjectField(true, false, false)]
|
||||
public int ID
|
||||
{
|
||||
get
|
||||
{
|
||||
return _ID;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _ID)
|
||||
{
|
||||
_ID = value;
|
||||
OnPropertyChanged("ID");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 計畫代號
|
||||
///</summary>
|
||||
[DataObjectField(false, false, false, 20)]
|
||||
public string ProjectID
|
||||
{
|
||||
get
|
||||
{
|
||||
return _ProjectID;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _ProjectID)
|
||||
{
|
||||
_ProjectID = value;
|
||||
OnPropertyChanged("ProjectID");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 簡訊帳號
|
||||
///</summary>
|
||||
[DataObjectField(false, false, false, 50)]
|
||||
public string MMSAccount
|
||||
{
|
||||
get
|
||||
{
|
||||
return _MMSAccount;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _MMSAccount)
|
||||
{
|
||||
_MMSAccount = value;
|
||||
OnPropertyChanged("MMSAccount");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 簡訊密碼
|
||||
///</summary>
|
||||
[DataObjectField(false, false, false, 50)]
|
||||
public string MMSPassword
|
||||
{
|
||||
get
|
||||
{
|
||||
return _MMSPassword;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _MMSPassword)
|
||||
{
|
||||
_MMSPassword = value;
|
||||
OnPropertyChanged("MMSPassword");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 平台代碼;NULL 表示使用系統預設平台
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 20)]
|
||||
public string PlatformCode { get; set; }
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,159 @@
|
||||
//
|
||||
// 這個檔案是 ProjectMMSAccount 資料表的資料存取類別 檔案二
|
||||
// 您可以修改這個檔案,加入您自訂的屬性與方法
|
||||
//
|
||||
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 報到系統
|
||||
{
|
||||
///<summary>
|
||||
/// ProjectMMSAccount 資料存取類別
|
||||
///</summary>
|
||||
public partial class DAC_ProjectMMSAccount : WebLib.DAC
|
||||
{
|
||||
#region 自動產生的資料存取方法
|
||||
///<summary>
|
||||
/// InsertOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查或是自動編號等動作
|
||||
/// 回傳 false 會打斷 InsertOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeInsertOne(ProjectMMSAccountItem value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// InsertOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterInsertOne(ProjectMMSAccountItem 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(ProjectMMSAccountItem value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查
|
||||
/// 回傳 false 會打斷 UpdateOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeUpdateOne(ProjectMMSAccountItem value, ProjectMMSAccountItem original_value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterUpdateOne(ProjectMMSAccountItem value)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterUpdateOne(ProjectMMSAccountItem value, ProjectMMSAccountItem 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(ProjectMMSAccountItem value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterDeleteOne(ProjectMMSAccountItem value)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查
|
||||
/// 回傳 false 會打斷 DeleteOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeDeleteOne(int ID, int DB_APPNO)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterDeleteOne(int ID, int DB_APPNO)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 發生錯誤時會執行此方法
|
||||
///</summary>
|
||||
///<param name="handled">錯誤是否已經處理妥當</param>
|
||||
protected virtual void OnDeleteOneError(Exception error, out bool handled)
|
||||
{
|
||||
handled = false;
|
||||
}
|
||||
#endregion
|
||||
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
public const string EVERY8DPlatformCode = "EVERY8D";
|
||||
public const string MITAKEPlatformCode = "MITAKE";
|
||||
}
|
||||
|
||||
///<summary>
|
||||
///ProjectMMSAccount 資料集合類別
|
||||
///</summary>
|
||||
public partial class ProjectMMSAccountList : List<ProjectMMSAccountItem>
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
|
||||
///<summary>
|
||||
///ProjectMMSAccount 資料紀錄類別
|
||||
///</summary>
|
||||
public partial class ProjectMMSAccountItem
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
|
||||
/// <summary>
|
||||
/// 計畫名稱
|
||||
/// </summary>
|
||||
public string ProjectName { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,923 @@
|
||||
//
|
||||
// 這個檔案是 SignUp 資料表的資料存取類別 檔案一
|
||||
// 請不要修改這個檔案,重新產生資料存取類別時,這個檔案會被覆蓋掉
|
||||
//
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
using System.Linq;
|
||||
using System.Transactions;
|
||||
using WebLib;
|
||||
using System.Data.SqlClient;
|
||||
|
||||
namespace 報到系統
|
||||
{
|
||||
///<summary>
|
||||
/// SignUp 資料存取類別
|
||||
///</ summary>
|
||||
[DataObject]
|
||||
public partial class DAC_SignUp : WebLib.DAC
|
||||
{
|
||||
private const string _tableName = "[SignUp]";
|
||||
private const string _allFields = "[ID], [CourseID], [SeqNo], [Name], [Mobile], [IDNumber], [QRCode], [SignUpType], [CheckInTime], [CheckOutTime], [IDType], [MealType], [Email], [Gender], [LossJobTimes], [AgreementStatus], [DB_APPNO], [DB_CRDAT], [DB_CRUSR], [DB_TRDAT], [DB_TRUSR]";
|
||||
private string _orderBy = "[ID]";
|
||||
private string _select = "select " + _allFields;
|
||||
private string _insert = "[CourseID], [SeqNo], [Name], [Mobile], [IDNumber], [QRCode], [SignUpType], [CheckInTime], [CheckOutTime], [IDType], [MealType], [Email], [Gender], [LossJobTimes], [AgreementStatus], [DB_APPNO], [DB_CRDAT], [DB_CRUSR], [DB_TRDAT], [DB_TRUSR]";
|
||||
private string _insertBak = "[ID], [CourseID], [SeqNo], [Name], [Mobile], [IDNumber], [QRCode], [SignUpType], [CheckInTime], [CheckOutTime], [IDType], [MealType], [Email], [Gender], [LossJobTimes], [AgreementStatus], [DB_APPNO], [DB_CRDAT], [DB_CRUSR], [DB_TRDAT], [DB_TRUSR], [DB_TRMOD]";
|
||||
private string _insertValue = "@CourseID, @SeqNo, @Name, @Mobile, @IDNumber, @QRCode, @SignUpType, @CheckInTime, @CheckOutTime, @IDType, @MealType, @Email, @Gender, @LossJobTimes, @AgreementStatus, @DB_APPNO, @DB_CRDAT, @DB_CRUSR, @DB_TRDAT, @DB_TRUSR";
|
||||
private string _insertBakValue = "@ID, @CourseID, @SeqNo, @Name, @Mobile, @IDNumber, @QRCode, @SignUpType, @CheckInTime, @CheckOutTime, @IDType, @MealType, @Email, @Gender, @LossJobTimes, @AgreementStatus, @DB_APPNO, @DB_CRDAT, @DB_CRUSR, @DB_TRDAT, @DB_TRUSR, @DB_TRMOD";
|
||||
private string _from = " from " + _tableName + " ";
|
||||
private string _where = " where 1=1 ";
|
||||
private string _order = " order by [ID] ";
|
||||
|
||||
public const string OrderBy_1 = "[CourseID]";
|
||||
public const string OrderBy_2 = "[Name]";
|
||||
public const string OrderBy_3 = "[Mobile]";
|
||||
|
||||
public DAC_SignUp()
|
||||
: base()
|
||||
{
|
||||
}
|
||||
|
||||
public DAC_SignUp(DbConnection conn)
|
||||
: base(conn)
|
||||
{
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public SignUpList SelectAll(string orderBy = "")
|
||||
{
|
||||
SignUpList result = new SignUpList();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where + (orderBy == null || orderBy.Length == 0 ? _order : " order by " + orderBy);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
public int SelectAllCount()
|
||||
{
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = "select count(1) " + _from;
|
||||
int i;
|
||||
ExecuteScalar(cmdSelect, out i);
|
||||
return i;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public SignUpList SelectAllPage(int startRowIndex, int maximumRows, string orderBy = "")
|
||||
{
|
||||
SignUpList result = new SignUpList();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText =
|
||||
String.Format("select top {0} * from (", maximumRows)
|
||||
+ "select " + _allFields
|
||||
+ ", row_number() over (order by " + (orderBy == null || orderBy.Length == 0 ? _orderBy : orderBy) + ") as rowid "
|
||||
+ _from + _where
|
||||
+ ") as TMP1 where rowid > @startRowIndex ";
|
||||
AddParam(cmdSelect, "startRowIndex", startRowIndex);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public SignUpList SelectOne(int ID)
|
||||
{
|
||||
SignUpList result = new SignUpList();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where
|
||||
+ " and ID = @ID "
|
||||
;
|
||||
AddParam(cmdSelect, "ID", ID);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 給查詢畫面用的增加 Where 條件的方法
|
||||
///</summary>
|
||||
private void AddWhere(DbCommand cmdSelect, ref bool noInput, int? CourseID, int? SeqNo, string Name, string Mobile, string QRCode)
|
||||
{
|
||||
if (CourseID != null)
|
||||
{
|
||||
noInput = false;
|
||||
cmdSelect.CommandText += " and CourseID = @CourseID ";
|
||||
AddParam(cmdSelect, "CourseID", CourseID);
|
||||
}
|
||||
|
||||
if (SeqNo != null)
|
||||
{
|
||||
noInput = false;
|
||||
cmdSelect.CommandText += " and SeqNo = @SeqNo ";
|
||||
AddParam(cmdSelect, "SeqNo", SeqNo);
|
||||
}
|
||||
|
||||
if (Name != null && Name.Length > 0)
|
||||
{
|
||||
noInput = false;
|
||||
cmdSelect.CommandText += " and Name like @Name ";
|
||||
AddParam(cmdSelect, "Name", "%" + Name + "%");
|
||||
}
|
||||
|
||||
if (Mobile != null && Mobile.Length > 0)
|
||||
{
|
||||
noInput = false;
|
||||
cmdSelect.CommandText += " and Mobile like @Mobile ";
|
||||
AddParam(cmdSelect, "Mobile", "%" + Mobile + "%");
|
||||
}
|
||||
|
||||
if (QRCode != null && QRCode.Length > 0)
|
||||
{
|
||||
noInput = false;
|
||||
cmdSelect.CommandText += " and QRCode like @QRCode ";
|
||||
AddParam(cmdSelect, "QRCode", "%" + QRCode + "%");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 給查詢畫面用的 Select 方法
|
||||
///</summary>
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public SignUpList Select(bool noInputReturnAll, int? CourseID, int? SeqNo, string Name, string Mobile, string QRCode, string orderBy = "")
|
||||
{
|
||||
SignUpList result = new SignUpList();
|
||||
bool noInput = true;
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where;
|
||||
AddWhere(cmdSelect, ref noInput, CourseID, SeqNo, Name, Mobile, QRCode);
|
||||
cmdSelect.CommandText += (orderBy == null || orderBy.Length == 0 ? _order : " order by " + orderBy);
|
||||
|
||||
if (!noInputReturnAll && noInput)
|
||||
return result;
|
||||
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 給查詢畫面用的 SelectCount 方法
|
||||
///</summary>
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public int SelectCount(bool noInputReturnAll, int? CourseID, int? SeqNo, string Name, string Mobile, string QRCode, string orderBy = "")
|
||||
{
|
||||
bool noInput = true;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = "select count(1) " + _from + _where;
|
||||
AddWhere(cmdSelect, ref noInput, CourseID, SeqNo, Name, Mobile, QRCode);
|
||||
|
||||
if (!noInputReturnAll && noInput)
|
||||
return 0;
|
||||
|
||||
int i;
|
||||
ExecuteScalar(cmdSelect, out i);
|
||||
return i;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 給查詢畫面用的 SelectPage 方法
|
||||
///</summary>
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public SignUpList SelectPage(bool noInputReturnAll, int startRowIndex, int maximumRows, int? CourseID, int? SeqNo, string Name, string Mobile, string QRCode, string orderBy = "")
|
||||
{
|
||||
SignUpList result = new SignUpList();
|
||||
bool noInput = true;
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
|
||||
cmdSelect.CommandText =
|
||||
String.Format("select top {0} * from (", maximumRows)
|
||||
+ "select " + _allFields
|
||||
+ ", row_number() over (order by " + (orderBy == null || orderBy.Length == 0 ? _orderBy : orderBy) + ") as rowid "
|
||||
+ _from + _where;
|
||||
AddWhere(cmdSelect, ref noInput, CourseID, SeqNo, Name, Mobile, QRCode);
|
||||
cmdSelect.CommandText += ") as TMP1 where rowid > @startRowIndex ";
|
||||
AddParam(cmdSelect, "startRowIndex", startRowIndex);
|
||||
|
||||
if (!noInputReturnAll && noInput)
|
||||
return result;
|
||||
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Insert)]
|
||||
public SignUpItem InsertOne(SignUpItem value)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeInsertOne(value))
|
||||
return value;
|
||||
DbCommand cmdInsert = NewCommand();
|
||||
cmdInsert.CommandText =
|
||||
"insert into [SignUp]"
|
||||
+ " (" + _insert + ")"
|
||||
+ "values "
|
||||
+ " (" + _insertValue + ");" + "select @@identity"
|
||||
;
|
||||
AddParam(cmdInsert, "CourseID", value.CourseID);
|
||||
AddParam(cmdInsert, "SeqNo", value.SeqNo);
|
||||
AddParam(cmdInsert, "Name", value.Name);
|
||||
AddParam(cmdInsert, "Mobile", value.Mobile);
|
||||
AddParam(cmdInsert, "IDNumber", value.IDNumber);
|
||||
AddParam(cmdInsert, "QRCode", value.QRCode);
|
||||
AddParam(cmdInsert, "SignUpType", value.SignUpType);
|
||||
AddParam(cmdInsert, "CheckInTime", value.CheckInTime);
|
||||
AddParam(cmdInsert, "CheckOutTime", value.CheckOutTime);
|
||||
AddParam(cmdInsert, "IDType", value.IDType);
|
||||
AddParam(cmdInsert, "MealType", value.MealType);
|
||||
AddParam(cmdInsert, "Email", value.Email);
|
||||
AddParam(cmdInsert, "Gender", value.Gender);
|
||||
AddParam(cmdInsert, "LossJobTimes", value.LossJobTimes);
|
||||
AddParam(cmdInsert, "AgreementStatus", value.AgreementStatus);
|
||||
AddParam(cmdInsert, "DB_APPNO", 1);
|
||||
AddParam(cmdInsert, "DB_CRDAT", DateTime.Now);
|
||||
AddParam(cmdInsert, "DB_CRUSR", CurrentUserId);
|
||||
AddParam(cmdInsert, "DB_TRDAT", DBNull.Value);
|
||||
AddParam(cmdInsert, "DB_TRUSR", DBNull.Value);
|
||||
int newId;
|
||||
ExecuteScalar(cmdInsert, out newId);
|
||||
value.ID = newId;
|
||||
AfterInsertOne(value);
|
||||
ts.Complete();
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
bool handled;
|
||||
OnInsertOneError(error, out handled);
|
||||
if(!handled)
|
||||
throw error;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Update)]
|
||||
public SignUpItem UpdateOne(SignUpItem value)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeUpdateOne(value))
|
||||
return value;
|
||||
|
||||
SignUpList oldValues = SelectOne(value.ID);
|
||||
if (oldValues.Count == 0 || oldValues[0].DB_APPNO != value.DB_APPNO)
|
||||
{
|
||||
throw new DBConcurrencyException("在更新 \"SignUp\" 資料表時發生並行例外:找不到要更新的資料列");
|
||||
}
|
||||
else
|
||||
{
|
||||
DoBackup(oldValues[0], "UPDATE");
|
||||
}
|
||||
|
||||
DbCommand cmdUpdate = NewCommand();
|
||||
cmdUpdate.CommandText =
|
||||
@"update [SignUp]
|
||||
set
|
||||
[CourseID] = @CourseID ,
|
||||
[SeqNo] = @SeqNo ,
|
||||
[Name] = @Name ,
|
||||
[Mobile] = @Mobile ,
|
||||
[IDNumber] = @IDNumber ,
|
||||
[QRCode] = @QRCode ,
|
||||
[SignUpType] = @SignUpType ,
|
||||
[CheckInTime] = @CheckInTime ,
|
||||
[CheckOutTime] = @CheckOutTime ,
|
||||
[IDType] = @IDType ,
|
||||
[MealType] = @MealType ,
|
||||
[Email] = @Email ,
|
||||
[Gender] = @Gender ,
|
||||
[LossJobTimes] = @LossJobTimes ,
|
||||
[AgreementStatus] = @AgreementStatus ,
|
||||
DB_APPNO = DB_APPNO + 1,
|
||||
DB_TRDAT = @DB_TRDAT,
|
||||
DB_TRUSR = @DB_TRUSR
|
||||
where 1=1
|
||||
and [ID] = @original_ID
|
||||
and DB_APPNO = @original_DB_APPNO
|
||||
";
|
||||
AddParam(cmdUpdate, "CourseID", value.CourseID);
|
||||
AddParam(cmdUpdate, "SeqNo", value.SeqNo);
|
||||
AddParam(cmdUpdate, "Name", value.Name);
|
||||
AddParam(cmdUpdate, "Mobile", value.Mobile);
|
||||
AddParam(cmdUpdate, "IDNumber", value.IDNumber);
|
||||
AddParam(cmdUpdate, "QRCode", value.QRCode);
|
||||
AddParam(cmdUpdate, "SignUpType", value.SignUpType);
|
||||
AddParam(cmdUpdate, "CheckInTime", value.CheckInTime);
|
||||
AddParam(cmdUpdate, "CheckOutTime", value.CheckOutTime);
|
||||
AddParam(cmdUpdate, "IDType", value.IDType);
|
||||
AddParam(cmdUpdate, "MealType", value.MealType);
|
||||
AddParam(cmdUpdate, "Email", value.Email);
|
||||
AddParam(cmdUpdate, "Gender", value.Gender);
|
||||
AddParam(cmdUpdate, "LossJobTimes", value.LossJobTimes);
|
||||
AddParam(cmdUpdate, "AgreementStatus", value.AgreementStatus);
|
||||
AddParam(cmdUpdate, "DB_TRDAT", DateTime.Now);
|
||||
AddParam(cmdUpdate, "DB_TRUSR", CurrentUserId);
|
||||
AddParam(cmdUpdate, "original_ID", value.ID);
|
||||
AddParam(cmdUpdate, "original_DB_APPNO", value.DB_APPNO);
|
||||
ExecuteNonQuery(cmdUpdate);
|
||||
AfterUpdateOne(value);
|
||||
ts.Complete();
|
||||
return value;
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
bool handled;
|
||||
OnUpdateOneError(error, out handled);
|
||||
if(!handled)
|
||||
throw error;
|
||||
return value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Update)]
|
||||
public SignUpItem UpdateOne(SignUpItem value, SignUpItem original_value)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeUpdateOne(value, original_value))
|
||||
return value;
|
||||
|
||||
SignUpList oldValues = SelectOne(original_value.ID);
|
||||
if (oldValues.Count == 0 || oldValues[0].DB_APPNO != value.DB_APPNO)
|
||||
{
|
||||
throw new DBConcurrencyException("在更新 \"SignUp\" 資料表時發生並行例外:找不到要更新的資料列");
|
||||
}
|
||||
else
|
||||
{
|
||||
DoBackup(oldValues[0], "UPDATE");
|
||||
}
|
||||
|
||||
DbCommand cmdUpdate = NewCommand();
|
||||
cmdUpdate.CommandText =
|
||||
@"update [SignUp]
|
||||
set
|
||||
[CourseID] = @CourseID ,
|
||||
[SeqNo] = @SeqNo ,
|
||||
[Name] = @Name ,
|
||||
[Mobile] = @Mobile ,
|
||||
[IDNumber] = @IDNumber ,
|
||||
[QRCode] = @QRCode ,
|
||||
[SignUpType] = @SignUpType ,
|
||||
[CheckInTime] = @CheckInTime ,
|
||||
[CheckOutTime] = @CheckOutTime ,
|
||||
[IDType] = @IDType ,
|
||||
[MealType] = @MealType ,
|
||||
[Email] = @Email ,
|
||||
[Gender] = @Gender ,
|
||||
[LossJobTimes] = @LossJobTimes ,
|
||||
[AgreementStatus] = @AgreementStatus ,
|
||||
DB_APPNO = DB_APPNO + 1,
|
||||
DB_TRDAT = @DB_TRDAT,
|
||||
DB_TRUSR = @DB_TRUSR
|
||||
where 1=1
|
||||
and [ID] = @original_ID
|
||||
and DB_APPNO = @original_DB_APPNO
|
||||
";
|
||||
AddParam(cmdUpdate, "CourseID", value.CourseID);
|
||||
AddParam(cmdUpdate, "SeqNo", value.SeqNo);
|
||||
AddParam(cmdUpdate, "Name", value.Name);
|
||||
AddParam(cmdUpdate, "Mobile", value.Mobile);
|
||||
AddParam(cmdUpdate, "IDNumber", value.IDNumber);
|
||||
AddParam(cmdUpdate, "QRCode", value.QRCode);
|
||||
AddParam(cmdUpdate, "SignUpType", value.SignUpType);
|
||||
AddParam(cmdUpdate, "CheckInTime", value.CheckInTime);
|
||||
AddParam(cmdUpdate, "CheckOutTime", value.CheckOutTime);
|
||||
AddParam(cmdUpdate, "IDType", value.IDType);
|
||||
AddParam(cmdUpdate, "MealType", value.MealType);
|
||||
AddParam(cmdUpdate, "Email", value.Email);
|
||||
AddParam(cmdUpdate, "Gender", value.Gender);
|
||||
AddParam(cmdUpdate, "LossJobTimes", value.LossJobTimes);
|
||||
AddParam(cmdUpdate, "AgreementStatus", value.AgreementStatus);
|
||||
AddParam(cmdUpdate, "DB_TRDAT", DateTime.Now);
|
||||
AddParam(cmdUpdate, "DB_TRUSR", CurrentUserId);
|
||||
AddParam(cmdUpdate, "original_ID", original_value.ID);
|
||||
AddParam(cmdUpdate, "original_DB_APPNO", original_value.DB_APPNO);
|
||||
ExecuteNonQuery(cmdUpdate);
|
||||
AfterUpdateOne(value, original_value);
|
||||
ts.Complete();
|
||||
return value;
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
bool handled;
|
||||
OnUpdateOneError(error, out handled);
|
||||
if(!handled)
|
||||
throw error;
|
||||
return value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Delete)]
|
||||
public int DeleteOne(int ID, int DB_APPNO)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeDeleteOne(ID, DB_APPNO))
|
||||
return -1;
|
||||
|
||||
SignUpList oldValues = SelectOne(ID);
|
||||
if (oldValues.Count == 0 || oldValues[0].DB_APPNO != DB_APPNO)
|
||||
{
|
||||
throw new DBConcurrencyException("在刪除 \"SignUp\" 資料表時發生並行例外:找不到要刪除的資料列");
|
||||
}
|
||||
else
|
||||
{
|
||||
DoBackup(oldValues[0], "DELETE");
|
||||
}
|
||||
|
||||
DbCommand cmdDelete = NewCommand();
|
||||
cmdDelete.CommandText =
|
||||
@"delete from [SignUp]
|
||||
where 1=1
|
||||
and ID = @ID
|
||||
and DB_APPNO = @DB_APPNO
|
||||
";
|
||||
AddParam(cmdDelete, "ID", ID);
|
||||
AddParam(cmdDelete, "DB_APPNO", DB_APPNO);
|
||||
int rowsAffected = ExecuteNonQuery(cmdDelete);
|
||||
AfterDeleteOne(ID, 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(SignUpItem value)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeDeleteOne(value))
|
||||
return -1;
|
||||
|
||||
SignUpList oldValues = SelectOne(value.ID);
|
||||
if (oldValues.Count == 0 || oldValues[0].DB_APPNO != value.DB_APPNO)
|
||||
{
|
||||
throw new DBConcurrencyException("在刪除 \"SignUp\" 資料表時發生並行例外:找不到要刪除的資料列");
|
||||
}
|
||||
else
|
||||
{
|
||||
DoBackup(oldValues[0], "DELETE");
|
||||
}
|
||||
|
||||
DbCommand cmdDelete = NewCommand();
|
||||
cmdDelete.CommandText =
|
||||
@"delete from [SignUp]
|
||||
where 1=1
|
||||
and ID = @ID
|
||||
and DB_APPNO = @DB_APPNO
|
||||
";
|
||||
AddParam(cmdDelete, "ID", value.ID);
|
||||
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 ID)
|
||||
{
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = "select count(1)" + _from + _where
|
||||
+ " and ID = @ID "
|
||||
;
|
||||
AddParam(cmdSelect, "ID", ID);
|
||||
int count;
|
||||
ExecuteScalar(cmdSelect, out count);
|
||||
return count > 0;
|
||||
}
|
||||
|
||||
public void DoBackup(SignUpItem value, string updateMode)
|
||||
{
|
||||
DbCommand cmdBak = NewCommand();
|
||||
cmdBak.CommandText =
|
||||
"insert into [SignUp_BAK]"
|
||||
+ " (" + _insertBak + ")"
|
||||
+ "values "
|
||||
+ " (" + _insertBakValue + ");"
|
||||
;
|
||||
AddParam(cmdBak, "ID", value.ID);
|
||||
AddParam(cmdBak, "CourseID", value.CourseID);
|
||||
AddParam(cmdBak, "SeqNo", value.SeqNo);
|
||||
AddParam(cmdBak, "Name", value.Name);
|
||||
AddParam(cmdBak, "Mobile", value.Mobile);
|
||||
AddParam(cmdBak, "IDNumber", value.IDNumber);
|
||||
AddParam(cmdBak, "QRCode", value.QRCode);
|
||||
AddParam(cmdBak, "SignUpType", value.SignUpType);
|
||||
AddParam(cmdBak, "CheckInTime", value.CheckInTime);
|
||||
AddParam(cmdBak, "CheckOutTime", value.CheckOutTime);
|
||||
AddParam(cmdBak, "IDType", value.IDType);
|
||||
AddParam(cmdBak, "MealType", value.MealType);
|
||||
AddParam(cmdBak, "Email", value.Email);
|
||||
AddParam(cmdBak, "Gender", value.Gender);
|
||||
AddParam(cmdBak, "LossJobTimes", value.LossJobTimes);
|
||||
AddParam(cmdBak, "AgreementStatus", value.AgreementStatus);
|
||||
AddParam(cmdBak, "DB_APPNO", value.DB_APPNO);
|
||||
AddParam(cmdBak, "DB_CRDAT", value.DB_CRDAT);
|
||||
AddParam(cmdBak, "DB_CRUSR", value.DB_CRUSR);
|
||||
AddParam(cmdBak, "DB_TRDAT", DateTime.Now);
|
||||
AddParam(cmdBak, "DB_TRUSR", CurrentUserId);
|
||||
AddParam(cmdBak, "DB_TRMOD", updateMode);
|
||||
ExecuteNonQuery(cmdBak);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
///<summary>
|
||||
///SignUp 資料集合類別
|
||||
///</summary>
|
||||
[Serializable]
|
||||
public partial class SignUpList : List<SignUpItem>, IDataList
|
||||
{
|
||||
public void Fill(DbDataReader reader)
|
||||
{
|
||||
DAC.FillData<SignUpItem>(reader, this);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
///<summary>
|
||||
/// SignUp 資料紀錄類別
|
||||
///</summary>
|
||||
[Serializable]
|
||||
public partial class SignUpItem : DataItemBase
|
||||
{
|
||||
private int _ID;
|
||||
private int _CourseID;
|
||||
private int _SeqNo;
|
||||
private string _Name;
|
||||
private string _Mobile;
|
||||
private string _IDNumber;
|
||||
private string _QRCode;
|
||||
private string _SignUpType;
|
||||
private string _CheckInTime;
|
||||
private string _CheckOutTime;
|
||||
private string _IDType;
|
||||
private string _MealType;
|
||||
private string _Email;
|
||||
private string _Gender;
|
||||
private int? _LossJobTimes;
|
||||
private string _AgreementStatus;
|
||||
|
||||
#region 資料欄位
|
||||
///<summary>
|
||||
/// 流水號
|
||||
///</summary>
|
||||
[DataObjectField(true, false, false)]
|
||||
public int ID
|
||||
{
|
||||
get
|
||||
{
|
||||
return _ID;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _ID)
|
||||
{
|
||||
_ID = value;
|
||||
OnPropertyChanged("ID");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 課程ID
|
||||
///</summary>
|
||||
[DataObjectField(false, false, false)]
|
||||
public int CourseID
|
||||
{
|
||||
get
|
||||
{
|
||||
return _CourseID;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _CourseID)
|
||||
{
|
||||
_CourseID = value;
|
||||
OnPropertyChanged("CourseID");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 序號
|
||||
///</summary>
|
||||
[DataObjectField(false, false, false)]
|
||||
public int SeqNo
|
||||
{
|
||||
get
|
||||
{
|
||||
return _SeqNo;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _SeqNo)
|
||||
{
|
||||
_SeqNo = value;
|
||||
OnPropertyChanged("SeqNo");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 學員姓名
|
||||
///</summary>
|
||||
[DataObjectField(false, false, false, 100)]
|
||||
public string Name
|
||||
{
|
||||
get
|
||||
{
|
||||
return _Name;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _Name)
|
||||
{
|
||||
_Name = value;
|
||||
OnPropertyChanged("Name");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 手機號
|
||||
///</summary>
|
||||
[DataObjectField(false, false, false, 20)]
|
||||
public string Mobile
|
||||
{
|
||||
get
|
||||
{
|
||||
return _Mobile;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _Mobile)
|
||||
{
|
||||
_Mobile = value;
|
||||
OnPropertyChanged("Mobile");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 身分證字號
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 20)]
|
||||
public string IDNumber
|
||||
{
|
||||
get
|
||||
{
|
||||
return _IDNumber;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _IDNumber)
|
||||
{
|
||||
_IDNumber = value;
|
||||
OnPropertyChanged("IDNumber");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// QRCode內容
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 100)]
|
||||
public string QRCode
|
||||
{
|
||||
get
|
||||
{
|
||||
return _QRCode;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _QRCode)
|
||||
{
|
||||
_QRCode = value;
|
||||
OnPropertyChanged("QRCode");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 報名方式 (預約/現場)
|
||||
///</summary>
|
||||
[DataObjectField(false, false, false, 10)]
|
||||
public string SignUpType
|
||||
{
|
||||
get
|
||||
{
|
||||
return _SignUpType;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _SignUpType)
|
||||
{
|
||||
_SignUpType = value;
|
||||
OnPropertyChanged("SignUpType");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 簽到時間
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 20)]
|
||||
public string CheckInTime
|
||||
{
|
||||
get
|
||||
{
|
||||
return _CheckInTime;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _CheckInTime)
|
||||
{
|
||||
_CheckInTime = value;
|
||||
OnPropertyChanged("CheckInTime");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 簽退時間
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 20)]
|
||||
public string CheckOutTime
|
||||
{
|
||||
get
|
||||
{
|
||||
return _CheckOutTime;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _CheckOutTime)
|
||||
{
|
||||
_CheckOutTime = value;
|
||||
OnPropertyChanged("CheckOutTime");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 身分別
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 20)]
|
||||
public string IDType
|
||||
{
|
||||
get
|
||||
{
|
||||
return _IDType;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _IDType)
|
||||
{
|
||||
_IDType = value;
|
||||
OnPropertyChanged("IDType");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 餐點別
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 20)]
|
||||
public string MealType
|
||||
{
|
||||
get
|
||||
{
|
||||
return _MealType;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _MealType)
|
||||
{
|
||||
_MealType = value;
|
||||
OnPropertyChanged("MealType");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 電子郵件
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 100)]
|
||||
public string Email
|
||||
{
|
||||
get
|
||||
{
|
||||
return _Email;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _Email)
|
||||
{
|
||||
_Email = value;
|
||||
OnPropertyChanged("Email");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 性別
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 10)]
|
||||
public string Gender
|
||||
{
|
||||
get
|
||||
{
|
||||
return _Gender;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _Gender)
|
||||
{
|
||||
_Gender = value;
|
||||
OnPropertyChanged("Gender");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 失業給付認定次數
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public int? LossJobTimes
|
||||
{
|
||||
get
|
||||
{
|
||||
return _LossJobTimes;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _LossJobTimes)
|
||||
{
|
||||
_LossJobTimes = value;
|
||||
OnPropertyChanged("LossJobTimes");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 同意確認事項狀態 (同意/不同意)
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 10)]
|
||||
public string AgreementStatus
|
||||
{
|
||||
get
|
||||
{
|
||||
return _AgreementStatus;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _AgreementStatus)
|
||||
{
|
||||
_AgreementStatus = value;
|
||||
OnPropertyChanged("AgreementStatus");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,512 @@
|
||||
//
|
||||
// 這個檔案是 SignUp 資料表的資料存取類別 檔案二
|
||||
// 您可以修改這個檔案,加入您自訂的屬性與方法
|
||||
//
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
using System.Data.SqlClient;
|
||||
using System.Linq;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using WebLib;
|
||||
|
||||
namespace 報到系統
|
||||
{
|
||||
///<summary>
|
||||
/// SignUp 資料存取類別
|
||||
///</summary>
|
||||
public partial class DAC_SignUp : WebLib.DAC
|
||||
{
|
||||
#region 自動產生的資料存取方法
|
||||
///<summary>
|
||||
/// InsertOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查或是自動編號等動作
|
||||
/// 回傳 false 會打斷 InsertOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeInsertOne(SignUpItem value)
|
||||
{
|
||||
if (string.IsNullOrEmpty(value.SignUpType))
|
||||
value.SignUpType = "現場";
|
||||
|
||||
// 生成 QRCode
|
||||
value.QRCode = GenQRCodeText(value);
|
||||
|
||||
// 自動生成序號 - 如果 SeqNo 為 0 或未設定,則自動生成
|
||||
if (value.SeqNo <= 0)
|
||||
{
|
||||
// 查詢該活動的最大序號
|
||||
SignUpList existingList = this.Select(
|
||||
noInputReturnAll: true,
|
||||
CourseID: value.CourseID,
|
||||
SeqNo: null,
|
||||
Name: null,
|
||||
Mobile: null,
|
||||
QRCode: null,
|
||||
orderBy: "SeqNo DESC"
|
||||
);
|
||||
|
||||
int maxSeqNo = 0;
|
||||
if (existingList != null && existingList.Count > 0)
|
||||
{
|
||||
maxSeqNo = existingList[0].SeqNo;
|
||||
}
|
||||
|
||||
value.SeqNo = maxSeqNo + 1; // 設定新序號
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// InsertOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterInsertOne(SignUpItem 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(SignUpItem value)
|
||||
{
|
||||
if (string.IsNullOrEmpty(value.SignUpType))
|
||||
value.SignUpType = "現場";
|
||||
|
||||
// 補上 QRCode
|
||||
if (string.IsNullOrEmpty(value.QRCode))
|
||||
{
|
||||
value.QRCode = GenQRCodeText(value);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查
|
||||
/// 回傳 false 會打斷 UpdateOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeUpdateOne(SignUpItem value, SignUpItem original_value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterUpdateOne(SignUpItem value)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterUpdateOne(SignUpItem value, SignUpItem 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(SignUpItem value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterDeleteOne(SignUpItem value)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查
|
||||
/// 回傳 false 會打斷 DeleteOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeDeleteOne(int ID, int DB_APPNO)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterDeleteOne(int ID, int DB_APPNO)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 發生錯誤時會執行此方法
|
||||
///</summary>
|
||||
///<param name="handled">錯誤是否已經處理妥當</param>
|
||||
protected virtual void OnDeleteOneError(Exception error, out bool handled)
|
||||
{
|
||||
handled = false;
|
||||
}
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// 生成 QRCode 雜湊值 - 基於 CourseID、Name、Mobile 的 MD5 雜湊
|
||||
/// </summary>
|
||||
/// <param name="value"></param>
|
||||
/// <returns></returns>
|
||||
public static string GenQRCodeText(SignUpItem value)
|
||||
{
|
||||
// 生成 QRCode 雜湊值 - 基於 CourseID、Name、Mobile 的 MD5 雜湊
|
||||
if (value != null && string.IsNullOrEmpty(value.QRCode))
|
||||
{
|
||||
string input = value.CourseID.ToString() + "|" + (value.Name ?? "").Trim() + "|" + (value.Mobile ?? "").Trim();
|
||||
using (MD5 md5 = MD5.Create())
|
||||
{
|
||||
byte[] inputBytes = System.Text.Encoding.UTF8.GetBytes(input);
|
||||
byte[] hashBytes = md5.ComputeHash(inputBytes);
|
||||
return System.Convert.ToBase64String(hashBytes);
|
||||
}
|
||||
}
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 按 QRCode 查詢單筆記錄
|
||||
/// </summary>
|
||||
public SignUpList SelectByQRCode(string qrCode)
|
||||
{
|
||||
SignUpList result = new SignUpList();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = string.Format("select {0} from [SignUp] where 1=1 and QRCode = @QRCode", _allFields);
|
||||
AddParam(cmdSelect, "QRCode", qrCode);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 按 CourseID、Name、Mobile 查詢單筆記錄
|
||||
/// </summary>
|
||||
public SignUpList SelectByCourseNameMobile(int courseID, string name, string mobile)
|
||||
{
|
||||
SignUpList result = new SignUpList();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = string.Format("select {0} from [SignUp] where 1=1 and CourseID = @CourseID and Name = @Name and Mobile = @Mobile", _allFields);
|
||||
AddParam(cmdSelect, "CourseID", courseID);
|
||||
AddParam(cmdSelect, "Name", name);
|
||||
AddParam(cmdSelect, "Mobile", mobile);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 依照 courseId 刪除參加人員
|
||||
/// </summary>
|
||||
/// <param name="courseId"></param>
|
||||
/// <returns></returns>
|
||||
public int DeleteByCourseID(int courseId)
|
||||
{
|
||||
DbCommand cmdDelete = NewCommand(string.Format("delete from {0} where CourseID=@CourseID", _tableName));
|
||||
AddParam(cmdDelete, "CourseID", courseId);
|
||||
return ExecuteNonQuery(cmdDelete);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 進階搜尋參加人員(包含序號、身分別、身分證字號、餐點、電子郵件等條件)
|
||||
/// </summary>
|
||||
public SignUpList SelectPageAdvanced(
|
||||
bool noInputReturnAll,
|
||||
int startRowIndex,
|
||||
int maximumRows,
|
||||
int? CourseID,
|
||||
int? SeqNo,
|
||||
string Name,
|
||||
string Mobile,
|
||||
string IDType,
|
||||
string IDNumber,
|
||||
bool IDNumberEmpty,
|
||||
string MealType,
|
||||
string Email,
|
||||
bool EmailEmpty,
|
||||
string orderBy)
|
||||
{
|
||||
SignUpList result = new SignUpList();
|
||||
IDataList list = result as IDataList;
|
||||
|
||||
StringBuilder sqlWhere = new StringBuilder();
|
||||
DbCommand cmd = NewCommand();
|
||||
|
||||
if (!noInputReturnAll)
|
||||
{
|
||||
sqlWhere.Append(" where 1=1");
|
||||
|
||||
if (CourseID.HasValue && CourseID.Value > 0)
|
||||
{
|
||||
sqlWhere.Append(" and [CourseID] = @CourseID");
|
||||
AddParam(cmd, "CourseID", CourseID.Value);
|
||||
}
|
||||
|
||||
if (SeqNo.HasValue && SeqNo.Value > 0)
|
||||
{
|
||||
sqlWhere.Append(" and [SeqNo] = @SeqNo");
|
||||
AddParam(cmd, "SeqNo", SeqNo.Value);
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(Name))
|
||||
{
|
||||
sqlWhere.Append(" and [Name] like @Name");
|
||||
AddParam(cmd, "Name", "%" + Name + "%");
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(Mobile))
|
||||
{
|
||||
sqlWhere.Append(" and [Mobile] like @Mobile");
|
||||
AddParam(cmd, "Mobile", "%" + Mobile + "%");
|
||||
}
|
||||
|
||||
// 身分別過濾
|
||||
if (!string.IsNullOrEmpty(IDType))
|
||||
{
|
||||
if (IDType == "___EMPTY___")
|
||||
{
|
||||
// 查詢身分別為空的記錄
|
||||
sqlWhere.Append(" and ([IDType] is null or [IDType] = '')");
|
||||
}
|
||||
else
|
||||
{
|
||||
// 查詢特定身分別
|
||||
sqlWhere.Append(" and [IDType] = @IDType");
|
||||
AddParam(cmd, "IDType", IDType);
|
||||
}
|
||||
}
|
||||
|
||||
// 身分證字號過濾
|
||||
if (IDNumberEmpty)
|
||||
{
|
||||
// 查詢未輸入的記錄
|
||||
sqlWhere.Append(" and ([IDNumber] is null or [IDNumber] = '')");
|
||||
}
|
||||
else if (!string.IsNullOrEmpty(IDNumber))
|
||||
{
|
||||
// 查詢特定的身分證字號
|
||||
sqlWhere.Append(" and [IDNumber] = @IDNumber");
|
||||
AddParam(cmd, "IDNumber", IDNumber);
|
||||
}
|
||||
|
||||
// 餐點過濾
|
||||
if (!string.IsNullOrEmpty(MealType))
|
||||
{
|
||||
if (MealType == "___EMPTY___")
|
||||
{
|
||||
// 查詢餐點為空的記錄
|
||||
sqlWhere.Append(" and ([MealType] is null or [MealType] = '')");
|
||||
}
|
||||
else
|
||||
{
|
||||
// 查詢特定餐點
|
||||
sqlWhere.Append(" and [MealType] = @MealType");
|
||||
AddParam(cmd, "MealType", MealType);
|
||||
}
|
||||
}
|
||||
|
||||
// 電子郵件過濾
|
||||
if (EmailEmpty)
|
||||
{
|
||||
// 查詢未輸入的記錄
|
||||
sqlWhere.Append(" and ([Email] is null or [Email] = '')");
|
||||
}
|
||||
else if (!string.IsNullOrEmpty(Email))
|
||||
{
|
||||
// 查詢特定的電子郵件
|
||||
sqlWhere.Append(" and [Email] like @Email");
|
||||
AddParam(cmd, "Email", "%" + Email + "%");
|
||||
}
|
||||
}
|
||||
|
||||
string sqlCmd = string.Format("select {0} from {1} {2} {3} offset {4} rows fetch next {5} rows only",
|
||||
_allFields,
|
||||
_tableName,
|
||||
sqlWhere.ToString(),
|
||||
!string.IsNullOrEmpty(orderBy) ? "order by " + orderBy : "",
|
||||
startRowIndex,
|
||||
maximumRows);
|
||||
|
||||
cmd.CommandText = sqlCmd;
|
||||
Select(cmd, ref list);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 計算進階搜尋的結果筆數
|
||||
/// </summary>
|
||||
public int SelectCountAdvanced(
|
||||
bool noInputReturnAll,
|
||||
int? CourseID,
|
||||
int? SeqNo,
|
||||
string Name,
|
||||
string Mobile,
|
||||
string IDType,
|
||||
string IDNumber,
|
||||
bool IDNumberEmpty,
|
||||
string MealType,
|
||||
string Email,
|
||||
bool EmailEmpty)
|
||||
{
|
||||
StringBuilder sqlWhere = new StringBuilder();
|
||||
DbCommand cmd = NewCommand();
|
||||
|
||||
if (!noInputReturnAll)
|
||||
{
|
||||
sqlWhere.Append(" where 1=1");
|
||||
|
||||
if (CourseID.HasValue && CourseID.Value > 0)
|
||||
{
|
||||
sqlWhere.Append(" and [CourseID] = @CourseID");
|
||||
AddParam(cmd, "CourseID", CourseID.Value);
|
||||
}
|
||||
|
||||
if (SeqNo.HasValue && SeqNo.Value > 0)
|
||||
{
|
||||
sqlWhere.Append(" and [SeqNo] = @SeqNo");
|
||||
AddParam(cmd, "SeqNo", SeqNo.Value);
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(Name))
|
||||
{
|
||||
sqlWhere.Append(" and [Name] like @Name");
|
||||
AddParam(cmd, "Name", "%" + Name + "%");
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(Mobile))
|
||||
{
|
||||
sqlWhere.Append(" and [Mobile] like @Mobile");
|
||||
AddParam(cmd, "Mobile", "%" + Mobile + "%");
|
||||
}
|
||||
|
||||
// 身分別過濾
|
||||
if (!string.IsNullOrEmpty(IDType))
|
||||
{
|
||||
if (IDType == "___EMPTY___")
|
||||
{
|
||||
// 查詢身分別為空的記錄
|
||||
sqlWhere.Append(" and ([IDType] is null or [IDType] = '')");
|
||||
}
|
||||
else
|
||||
{
|
||||
// 查詢特定身分別
|
||||
sqlWhere.Append(" and [IDType] = @IDType");
|
||||
AddParam(cmd, "IDType", IDType);
|
||||
}
|
||||
}
|
||||
|
||||
// 身分證字號過濾
|
||||
if (IDNumberEmpty)
|
||||
{
|
||||
// 查詢未輸入的記錄
|
||||
sqlWhere.Append(" and ([IDNumber] is null or [IDNumber] = '')");
|
||||
}
|
||||
else if (!string.IsNullOrEmpty(IDNumber))
|
||||
{
|
||||
// 查詢特定的身分證字號
|
||||
sqlWhere.Append(" and [IDNumber] = @IDNumber");
|
||||
AddParam(cmd, "IDNumber", IDNumber);
|
||||
}
|
||||
|
||||
// 餐點過濾
|
||||
if (!string.IsNullOrEmpty(MealType))
|
||||
{
|
||||
if (MealType == "___EMPTY___")
|
||||
{
|
||||
// 查詢餐點為空的記錄
|
||||
sqlWhere.Append(" and ([MealType] is null or [MealType] = '')");
|
||||
}
|
||||
else
|
||||
{
|
||||
// 查詢特定餐點
|
||||
sqlWhere.Append(" and [MealType] = @MealType");
|
||||
AddParam(cmd, "MealType", MealType);
|
||||
}
|
||||
}
|
||||
|
||||
// 電子郵件過濾
|
||||
if (EmailEmpty)
|
||||
{
|
||||
// 查詢未輸入的記錄
|
||||
sqlWhere.Append(" and ([Email] is null or [Email] = '')");
|
||||
}
|
||||
else if (!string.IsNullOrEmpty(Email))
|
||||
{
|
||||
// 查詢特定的電子郵件
|
||||
sqlWhere.Append(" and [Email] like @Email");
|
||||
AddParam(cmd, "Email", "%" + Email + "%");
|
||||
}
|
||||
}
|
||||
|
||||
string sqlCmd = string.Format("select count(*) from {0} {1}", _tableName, sqlWhere.ToString());
|
||||
cmd.CommandText = sqlCmd;
|
||||
|
||||
ExecuteScalar(cmd, out int result);
|
||||
return result;
|
||||
}
|
||||
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
|
||||
///<summary>
|
||||
///SignUp 資料集合類別
|
||||
///</summary>
|
||||
public partial class SignUpList : List<SignUpItem>
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
|
||||
///<summary>
|
||||
///SignUp 資料紀錄類別
|
||||
///</summary>
|
||||
public partial class SignUpItem
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
|
||||
/// <summary>
|
||||
/// 簡訊發送狀況
|
||||
/// </summary>
|
||||
public string MessageSending { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 出席:有簽到時間
|
||||
/// </summary>
|
||||
public bool IsPresent { get { return !string.IsNullOrEmpty(CheckInTime); } }
|
||||
|
||||
/// <summary>
|
||||
/// 異常:沒有簽到時間只有簽退時間
|
||||
/// </summary>
|
||||
public bool IsException { get { return string.IsNullOrEmpty(CheckInTime) && !string.IsNullOrEmpty(CheckOutTime); } }
|
||||
|
||||
/// <summary>
|
||||
/// 現場報名
|
||||
/// </summary>
|
||||
public bool IsOnSite { get { return string.Compare(SignUpType, "現場") == 0; } }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,174 @@
|
||||
using System;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
using WebLib;
|
||||
|
||||
/// <summary>
|
||||
/// Summary description for Login
|
||||
/// </summary>
|
||||
namespace 報到系統
|
||||
{
|
||||
public class LoginBPSN : DAC
|
||||
{
|
||||
private string _userId = "";
|
||||
private string _password = "";
|
||||
private string _userName = "";
|
||||
private string _errMessage = "";
|
||||
private string _userLang = "";
|
||||
private bool _noPassword = false;
|
||||
private bool _isSystemManager;
|
||||
private bool _isCustomManager;
|
||||
private bool _isFieldStaffWorker;
|
||||
private bool _isQueryWorker;
|
||||
|
||||
public LoginBPSN()
|
||||
{
|
||||
}
|
||||
|
||||
public string UserId
|
||||
{
|
||||
get
|
||||
{
|
||||
return _userId;
|
||||
}
|
||||
set
|
||||
{
|
||||
_userId = value;
|
||||
}
|
||||
}
|
||||
|
||||
public string Password
|
||||
{
|
||||
get
|
||||
{
|
||||
return _password;
|
||||
}
|
||||
set
|
||||
{
|
||||
_password = value;
|
||||
}
|
||||
}
|
||||
|
||||
public string UserName
|
||||
{
|
||||
get
|
||||
{
|
||||
return _userName;
|
||||
}
|
||||
}
|
||||
|
||||
public string ErrorMessage
|
||||
{
|
||||
get
|
||||
{
|
||||
return _errMessage;
|
||||
}
|
||||
}
|
||||
|
||||
public bool NoPassword
|
||||
{
|
||||
get
|
||||
{
|
||||
return _noPassword;
|
||||
}
|
||||
}
|
||||
|
||||
public string UserLang
|
||||
{
|
||||
get
|
||||
{
|
||||
return _userLang;
|
||||
}
|
||||
set
|
||||
{
|
||||
_userLang = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 是否是管理員
|
||||
/// </summary>
|
||||
public bool IsSystemManager
|
||||
{
|
||||
get
|
||||
{
|
||||
return _isSystemManager;
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsCustomManager
|
||||
{
|
||||
get
|
||||
{
|
||||
return _isCustomManager;
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsFieldStaffWorker
|
||||
{
|
||||
get
|
||||
{
|
||||
return _isFieldStaffWorker;
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsQueryWorker
|
||||
{
|
||||
get
|
||||
{
|
||||
return _isQueryWorker;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取得是否登入成功
|
||||
/// </summary>
|
||||
/// <returns>登入成功與否。若回傳 false,錯誤訊息將儲存在 ErrorMessage 屬性中</returns>
|
||||
public bool GetResult()
|
||||
{
|
||||
DbCommand cmd = NewCommand("SELECT BPENO, BPNME, BPEDY, BPAWD FROM BPSNView WHERE BPENO=@BPENO");
|
||||
AddParam(cmd, "BPENO", _userId);
|
||||
DataTable rs = Select(cmd);
|
||||
_noPassword = false;
|
||||
|
||||
if (rs.Rows.Count == 0)
|
||||
{
|
||||
_errMessage = "無此使用者代號或是密碼錯誤";
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
string pwd1 = GetString(rs.Rows[0]["BPAWD"]);
|
||||
string pwd2 = EncDec.KeyDec(pwd1);
|
||||
|
||||
if (pwd1.CompareTo("\u007f\u007f\u007f\u007f") == 0)
|
||||
{
|
||||
_noPassword = true;
|
||||
pwd2 = "";
|
||||
}
|
||||
|
||||
if (_password.CompareTo(pwd2) != 0)
|
||||
{
|
||||
_errMessage = "無此使用者代號或是密碼錯誤";
|
||||
return false;
|
||||
}
|
||||
|
||||
if (rs.Rows[0]["BPEDY"] != DBNull.Value)
|
||||
{
|
||||
_errMessage = "您沒有使用這個系統的權限";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
_errMessage = "";
|
||||
_userName = GetString(rs.Rows[0]["BPNME"]);
|
||||
DAC_BPSN dacBPSN = new DAC_BPSN(conn);
|
||||
_isSystemManager = dacBPSN.Is系統管理群組(_userId);
|
||||
_isCustomManager = dacBPSN.Is客戶管理群組(_userId);
|
||||
_isFieldStaffWorker = dacBPSN.Is現場工作群組(_userId);
|
||||
_isQueryWorker = dacBPSN.Is查詢群組(_userId);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.Common;
|
||||
using WebLib;
|
||||
|
||||
namespace 報到系統
|
||||
{
|
||||
/// <summary>
|
||||
/// MMSPlatform 資料集合類別
|
||||
/// </summary>
|
||||
[Serializable]
|
||||
public partial class MMSPlatformList : List<MMSPlatformItem>, IDataList
|
||||
{
|
||||
public void Fill(DbDataReader reader)
|
||||
{
|
||||
DAC.FillData<MMSPlatformItem>(reader, this);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// MMSPlatform 資料紀錄類別
|
||||
/// </summary>
|
||||
[Serializable]
|
||||
public partial class MMSPlatformItem : DataItemBase
|
||||
{
|
||||
/// <summary>流水號</summary>
|
||||
public int ID { get; set; }
|
||||
|
||||
/// <summary>平台代碼(EVERY8D / MITAKE)</summary>
|
||||
public string PlatformCode { get; set; }
|
||||
|
||||
/// <summary>平台名稱</summary>
|
||||
public string PlatformName { get; set; }
|
||||
|
||||
/// <summary>主帳號</summary>
|
||||
public string Account { get; set; }
|
||||
|
||||
/// <summary>主密碼</summary>
|
||||
public string Password { get; set; }
|
||||
|
||||
/// <summary>備註</summary>
|
||||
public string Remark { get; set; }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user