chore: 首次簽入 Thinkyu ASP.NET 專案

- 加入 Visual Studio / ASP.NET .gitignore
- 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
This commit is contained in:
2026-09-10 09:42:37 +08:00
commit 577060bc78
2496 changed files with 501389 additions and 0 deletions
+49
View File
@@ -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>
{
}
}
+62
View File
@@ -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;
}
}
}
+178
View File
@@ -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; }
}
}
+69
View File
@@ -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;
}
}
}
+40
View File
@@ -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);
}
}
}
+860
View File
@@ -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
}
}
+178
View File
@@ -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; }
}
}
+122
View File
@@ -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);
}
}
}
+698
View File
@@ -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
}
}
+152
View File
@@ -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
{
// 有另外加上去的屬性及方法,請加在這裡
}
}
+686
View File
@@ -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
}
}
+176
View File
@@ -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; }
}
}
+923
View File
@@ -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
}
}
+512
View File
@@ -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; } }
}
}
+174
View File
@@ -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;
}
}
}
+44
View File
@@ -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; }
}
}