710 lines
29 KiB
C#
710 lines
29 KiB
C#
//
|
||
// 這個檔案是 講師 資料表的資料存取類別 檔案二
|
||
// 您可以修改這個檔案,加入您自訂的屬性與方法
|
||
//
|
||
using NPOI.SS.Formula.Functions;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.ComponentModel;
|
||
using System.Data;
|
||
using System.Data.Common;
|
||
using System.Data.SqlClient;
|
||
using System.EnterpriseServices.Internal;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Web.UI.WebControls;
|
||
using WebLib;
|
||
|
||
namespace Education
|
||
{
|
||
///<summary>
|
||
/// 講師 資料存取類別
|
||
///</summary>
|
||
public partial class DAC_講師 : WebLib.DAC
|
||
{
|
||
///<summary>
|
||
/// 給查詢畫面用的 Select 方法
|
||
///</summary>
|
||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||
public 講師List Select講師遴選(string 姓名, string 電話, string 手機)
|
||
{
|
||
講師List result = new 講師List();
|
||
IDataList list = result as IDataList;
|
||
DbCommand cmdSelect = NewCommand();
|
||
cmdSelect.CommandText = _select + _from + _where + " and 合作狀態 <> 'X' ";
|
||
|
||
if (姓名 != null && 姓名.Length > 0)
|
||
{
|
||
cmdSelect.CommandText += " and 姓名 like @姓名 ";
|
||
AddParam(cmdSelect, "姓名", 姓名 + "%");
|
||
}
|
||
if (電話 != null && 電話.Length > 0)
|
||
{
|
||
cmdSelect.CommandText += " and 電話 like @電話 ";
|
||
AddParam(cmdSelect, "電話", 電話 + "%");
|
||
}
|
||
if (手機 != null && 手機.Length > 0)
|
||
{
|
||
cmdSelect.CommandText += " and 手機 like @手機 ";
|
||
AddParam(cmdSelect, "手機", 手機 + "%");
|
||
}
|
||
|
||
cmdSelect.CommandText += _order;
|
||
Select(cmdSelect, ref list);
|
||
return result;
|
||
}
|
||
|
||
///<summary>
|
||
/// InsertOne 之前會執行此方法
|
||
/// 在這裡可以做一些檢查或是自動編號等動作
|
||
/// 回傳 false 會打斷 InsertOne 的執行
|
||
///</summary>
|
||
protected virtual bool BeforeInsertOne(講師 value)
|
||
{
|
||
return true;
|
||
}
|
||
|
||
///<summary>
|
||
/// InsertOne 之後會執行此方法
|
||
///</summary>
|
||
protected virtual void AfterInsertOne(講師 value)
|
||
{
|
||
}
|
||
|
||
///<summary>
|
||
/// InsertOne 錯誤時會觸發的方法
|
||
///</summary>
|
||
protected virtual void OnInsertOneError(Exception error, out bool handled)
|
||
{
|
||
handled = false;
|
||
}
|
||
|
||
///<summary>
|
||
/// UpdateOne 之前會執行此方法
|
||
/// 在這裡可以做一些檢查
|
||
/// 回傳 false 會打斷 UpdateOne 的執行
|
||
///</summary>
|
||
protected virtual bool BeforeUpdateOne(講師 value)
|
||
{
|
||
return true;
|
||
}
|
||
/// UpdateOne 之前會執行此方法
|
||
/// 在這裡可以做一些檢查
|
||
/// 回傳 false 會打斷 UpdateOne 的執行
|
||
///</summary>
|
||
protected virtual bool BeforeUpdateOne(講師 value, 講師 original_value)
|
||
{
|
||
return true;
|
||
}
|
||
|
||
///<summary>
|
||
/// UpdateOne 之後會執行此方法
|
||
///</summary>
|
||
protected virtual void AfterUpdateOne(講師 value)
|
||
{
|
||
}
|
||
///<summary>
|
||
/// UpdateOne 之後會執行此方法
|
||
///</summary>
|
||
protected virtual void AfterUpdateOne(講師 value, 講師 original_value)
|
||
{
|
||
}
|
||
|
||
///<summary>
|
||
/// UpdateOne 發生錯誤時會執行此方法
|
||
///</summary>
|
||
protected virtual void OnUpdateOneError(Exception error, out bool handled)
|
||
{
|
||
handled = false;
|
||
}
|
||
|
||
///<summary>
|
||
/// DeleteOne 之前會執行此方法
|
||
/// 在這裡可以做一些檢查
|
||
/// 回傳 false 會打斷 DeleteOne 的執行
|
||
///</summary>
|
||
protected virtual bool BeforeDeleteOne(講師 value)
|
||
{
|
||
return true;
|
||
}
|
||
|
||
///<summary>
|
||
/// DeleteOne 之後會執行此方法
|
||
///</summary>
|
||
protected virtual void AfterDeleteOne(講師 value)
|
||
{
|
||
}
|
||
|
||
///<summary>
|
||
/// DeleteOne 之前會執行此方法
|
||
/// 在這裡可以做一些檢查
|
||
/// 回傳 false 會打斷 DeleteOne 的執行
|
||
///</summary>
|
||
protected virtual bool BeforeDeleteOne(int 編號, int DB_APPNO)
|
||
{
|
||
return true;
|
||
}
|
||
|
||
///<summary>
|
||
/// DeleteOne 之後會執行此方法
|
||
///</summary>
|
||
protected virtual void AfterDeleteOne(int 編號, int DB_APPNO)
|
||
{
|
||
}
|
||
|
||
///<summary>
|
||
/// DeleteOne 發生錯誤時會執行此方法
|
||
///</summary>
|
||
protected virtual void OnDeleteOneError(Exception error, out bool handled)
|
||
{
|
||
handled = false;
|
||
}
|
||
|
||
// 有另外加上去的屬性及方法,請加在這裡
|
||
public string Get姓名(object 編號)
|
||
{
|
||
DbCommand cmdSelect = NewCommand();
|
||
cmdSelect.CommandText = "SELECT 姓名 " + _from + " WHERE 編號 = @編號 ";
|
||
AddParam(cmdSelect, "編號", 編號);
|
||
string s;
|
||
ExecuteScalar(cmdSelect, out s);
|
||
return s;
|
||
}
|
||
|
||
public NameValueList Select地區ForDropDown()
|
||
{
|
||
NameValueList result = new NameValueList();
|
||
DbCommand cmd = NewCommand("SELECT DISTINCT 居住地址_縣市 FROM " + _tableName + " ORDER BY 居住地址_縣市");
|
||
|
||
result.Add("(請選擇)", "");
|
||
result.Fill(Select(cmd), "居住地址_縣市", "居住地址_縣市", false);
|
||
|
||
return result;
|
||
}
|
||
|
||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||
public 講師List 查詢作業(bool noInputReturnAll, int startRowIndex, int maximumRows,
|
||
string 姓名, string 地區, string 授課專長領域, string 學歷, int 滿意度1, int 滿意度2,
|
||
string 合作狀態, string 關鍵字, string 關鍵字欄位, string 推薦授課主題, int 講師評鑑1, int 講師評鑑2)
|
||
{
|
||
講師List result = new 講師List();
|
||
|
||
if (!noInputReturnAll
|
||
&& string.IsNullOrEmpty(姓名)
|
||
&& string.IsNullOrEmpty(地區)
|
||
&& string.IsNullOrEmpty(授課專長領域)
|
||
&& string.IsNullOrEmpty(學歷)
|
||
&& 滿意度1 == 0
|
||
&& 滿意度2 == 0
|
||
&& 講師評鑑1 == 0
|
||
&& 講師評鑑2 == 0
|
||
&& string.IsNullOrEmpty(合作狀態)
|
||
&& string.IsNullOrEmpty(關鍵字)
|
||
&& string.IsNullOrEmpty(推薦授課主題))
|
||
return result;
|
||
|
||
IDataList list = result as IDataList;
|
||
DbCommand cmdSelect = NewCommand();
|
||
|
||
var 符合度 = "";
|
||
if (!string.IsNullOrEmpty(關鍵字) && !string.IsNullOrEmpty(關鍵字欄位))
|
||
{
|
||
var k = 關鍵字.Split(' ');
|
||
var q = new List<string>();
|
||
for (int i = 0; i < k.Length; i++)
|
||
{
|
||
var w = new List<string>();
|
||
foreach (var f in 關鍵字欄位.Split('|'))
|
||
{
|
||
if (f == "居住地區")
|
||
{
|
||
q.Add(string.Format("isnull((select 1 from 講師 B where B.編號=A.編號 and (B.居住地址_縣市 like @關鍵字_{1} or B.居住地址_鄉鎮市區 like @關鍵字_{1}) ), 0)", f, i));
|
||
}
|
||
else
|
||
{
|
||
q.Add(string.Format("isnull((select 1 from 講師 B where B.編號=A.編號 and B.{0} like @關鍵字_{1} ), 0)", f, i));
|
||
}
|
||
}
|
||
}
|
||
符合度 = string.Format(" ({0}) AS 符合度 ", string.Join(" + ", q.ToArray()));
|
||
}
|
||
if (string.IsNullOrEmpty(符合度))
|
||
符合度 = " 0 AS 符合度 ";
|
||
|
||
var SQL = _select + ", 滿意度 as 平均滿意度, 講師評鑑, 學員滿意度, 最高學歷TXT, 符合度, ROW_NUMBER() over (order by [符合度] desc) AS ROWNUMBER " +
|
||
string.Format(@" FROM
|
||
( SELECT A.*,
|
||
ISNULL(( SELECT CAST(SUM(授課方式分數) + SUM(專業知識分數) AS FLOAT) / 2 / COUNT(1)
|
||
FROM 滿意度調查講師
|
||
WHERE 講師編號 = A.編號), 0) AS 滿意度,
|
||
ISNULL((SELECT AVG(cast(專業度 + 授課技巧 + 互動氛圍 + 內容切題 + 配合度 as float))
|
||
FROM 講師外訓滿意度
|
||
WHERE 講師編號 = A.編號), 0) AS 講師評鑑,
|
||
ISNULL((SELECT AVG(cast(學員滿意度 as float))
|
||
FROM 講師外訓滿意度
|
||
WHERE 講師編號 = A.編號), 0) AS 學員滿意度,
|
||
(SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BPSNSTP' AND BSCLS=A.最高學歷) AS 最高學歷TXT,
|
||
{0}
|
||
FROM 講師 A
|
||
) AS TMP1 ", 符合度)
|
||
+ _where;
|
||
|
||
if (姓名 != null && 姓名.Length > 0)
|
||
{
|
||
SQL += " and 姓名 like @姓名 ";
|
||
AddParam(cmdSelect, "姓名", "%" + 姓名 + "%");
|
||
}
|
||
if (地區 != null && 地區.Length > 0)
|
||
{
|
||
SQL += " and 授課區域 like @地區 ";
|
||
AddParam(cmdSelect, "地區", "%" + 地區 + "%");
|
||
}
|
||
if (授課專長領域 != null && 授課專長領域.Length > 0)
|
||
{
|
||
SQL += " and 授課專長領域 like @授課專長領域 ";
|
||
AddParam(cmdSelect, "授課專長領域", "%" + 授課專長領域 + "%");
|
||
}
|
||
if (學歷 != null && 學歷.Length > 0)
|
||
{
|
||
SQL += " and 最高學歷 = @學歷 ";
|
||
AddParam(cmdSelect, "學歷", 學歷);
|
||
}
|
||
if (滿意度1 != 0 && 滿意度2 != 0)
|
||
{
|
||
SQL += " and 滿意度 between @滿意度1 and @滿意度2 ";
|
||
AddParam(cmdSelect, "滿意度1", 滿意度1);
|
||
AddParam(cmdSelect, "滿意度2", 滿意度2);
|
||
}
|
||
else if (滿意度1 != 0 && 滿意度2 == 0)
|
||
{
|
||
SQL += " and 滿意度 >= @滿意度1 ";
|
||
AddParam(cmdSelect, "滿意度1", 滿意度1);
|
||
}
|
||
else if (滿意度1 == 0 && 滿意度2 != 0)
|
||
{
|
||
SQL += " and 滿意度 <= @滿意度2 ";
|
||
AddParam(cmdSelect, "滿意度2", 滿意度2);
|
||
}
|
||
if (!string.IsNullOrEmpty(合作狀態))
|
||
{
|
||
SQL += " and 合作狀態 = @合作狀態 ";
|
||
AddParam(cmdSelect, "合作狀態", 合作狀態);
|
||
}
|
||
if (推薦授課主題 != null && 推薦授課主題.Length > 0)
|
||
{
|
||
SQL += " and 推薦授課主題 like @推薦授課主題 ";
|
||
AddParam(cmdSelect, "推薦授課主題", "%" + 推薦授課主題 + "%");
|
||
}
|
||
if (講師評鑑1 != 0 && 講師評鑑2 != 0)
|
||
{
|
||
SQL += " and 講師評鑑 between @講師評鑑1 and @講師評鑑2 ";
|
||
AddParam(cmdSelect, "講師評鑑1", 講師評鑑1);
|
||
AddParam(cmdSelect, "講師評鑑2", 講師評鑑2);
|
||
}
|
||
else if (講師評鑑1 != 0 && 講師評鑑2 == 0)
|
||
{
|
||
SQL += " and 講師評鑑 >= @講師評鑑1 ";
|
||
AddParam(cmdSelect, "講師評鑑1", 講師評鑑1);
|
||
}
|
||
else if (講師評鑑1 == 0 && 講師評鑑2 != 0)
|
||
{
|
||
SQL += " and 講師評鑑 <= @講師評鑑2 ";
|
||
AddParam(cmdSelect, "講師評鑑2", 講師評鑑2);
|
||
}
|
||
if (!string.IsNullOrEmpty(關鍵字) && !string.IsNullOrEmpty(關鍵字欄位))
|
||
{
|
||
var keywords = 關鍵字.Split(' ');
|
||
var keywordWhere = new List<string>();
|
||
for (int i = 0; i < keywords.Length; i++)
|
||
{
|
||
var and = keywords[i].StartsWith("+");
|
||
var keyword = keywords[i].Replace("+", "");
|
||
|
||
var oneWhere = new List<string>();
|
||
AddParam(cmdSelect, string.Format("關鍵字_{0}", i), string.Format("%{0}%", keyword));
|
||
foreach (var f in 關鍵字欄位.Split('|'))
|
||
{
|
||
if (f == "居住地區")
|
||
{
|
||
oneWhere.Add(string.Format("(居住地址_縣市 LIKE @關鍵字_{0} OR 居住地址_鄉鎮市區 LIKE @關鍵字_{0})", i));
|
||
}
|
||
else
|
||
{
|
||
oneWhere.Add(string.Format("{0} LIKE @關鍵字_{1}", f, i));
|
||
}
|
||
}
|
||
keywordWhere.Add(string.Format("{0} ({1})",
|
||
(i == 0 ? "" : (and ? "AND" : "OR")),
|
||
string.Join(" OR ", oneWhere.ToArray())));
|
||
}
|
||
SQL += string.Format(" and ({0}) ", string.Join(" ", keywordWhere.ToArray()));
|
||
}
|
||
|
||
SQL = string.Format("select * FROM ({0}) AS TMP2 where ROWNUMBER > {1} and ROWNUMBER <= {2} order by [編號]", SQL, startRowIndex, startRowIndex + maximumRows);
|
||
|
||
cmdSelect.CommandText = SQL;
|
||
Select(cmdSelect, ref list);
|
||
return result;
|
||
}
|
||
|
||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||
public int 查詢作業Count(bool noInputReturnAll,
|
||
string 姓名, string 地區, string 授課專長領域, string 學歷, int 滿意度1, int 滿意度2,
|
||
string 合作狀態, string 關鍵字, string 關鍵字欄位, string 推薦授課主題, int 講師評鑑1, int 講師評鑑2)
|
||
{
|
||
if (!noInputReturnAll
|
||
&& string.IsNullOrEmpty(姓名)
|
||
&& string.IsNullOrEmpty(地區)
|
||
&& string.IsNullOrEmpty(授課專長領域)
|
||
&& string.IsNullOrEmpty(學歷)
|
||
&& 滿意度1 == 0
|
||
&& 滿意度2 == 0
|
||
&& 講師評鑑1 == 0
|
||
&& 講師評鑑2 == 0
|
||
&& string.IsNullOrEmpty(合作狀態)
|
||
&& string.IsNullOrEmpty(關鍵字)
|
||
&& string.IsNullOrEmpty(推薦授課主題))
|
||
return 0;
|
||
|
||
DbCommand cmdSelect = NewCommand();
|
||
|
||
var 符合度 = "";
|
||
if (!string.IsNullOrEmpty(關鍵字) && !string.IsNullOrEmpty(關鍵字欄位))
|
||
{
|
||
var k = 關鍵字.Split(' ');
|
||
var q = new List<string>();
|
||
for (int i = 0; i < k.Length; i++)
|
||
{
|
||
var w = new List<string>();
|
||
foreach (var f in 關鍵字欄位.Split('|'))
|
||
{
|
||
if (f == "居住地區")
|
||
{
|
||
q.Add(string.Format("isnull((select 1 from 講師 B where B.編號=A.編號 and (B.居住地址_縣市 like @關鍵字_{1} or B.居住地址_鄉鎮市區 like @關鍵字_{1}) ), 0)", f, i));
|
||
}
|
||
else
|
||
{
|
||
q.Add(string.Format("isnull((select 1 from 講師 B where B.編號=A.編號 and B.{0} like @關鍵字_{1} ), 0)", f, i));
|
||
}
|
||
}
|
||
}
|
||
符合度 = string.Format(" ({0}) AS 符合度 ", string.Join(" + ", q.ToArray()));
|
||
}
|
||
if (string.IsNullOrEmpty(符合度))
|
||
符合度 = " 0 AS 符合度 ";
|
||
|
||
var SQL = _select + ", 滿意度 as 平均滿意度, 講師評鑑, 學員滿意度, 最高學歷TXT, 符合度 " +
|
||
string.Format(@" FROM
|
||
( SELECT A.*,
|
||
ISNULL(( SELECT CAST(SUM(授課方式分數) + SUM(專業知識分數) AS FLOAT) / 2 / COUNT(1)
|
||
FROM 滿意度調查講師
|
||
WHERE 講師編號 = A.編號), 0) AS 滿意度,
|
||
ISNULL((SELECT AVG(cast(專業度 + 授課技巧 + 互動氛圍 + 內容切題 + 配合度 as float))
|
||
FROM 講師外訓滿意度
|
||
WHERE 講師編號 = A.編號), 0) AS 講師評鑑,
|
||
ISNULL((SELECT AVG(cast(學員滿意度 as float))
|
||
FROM 講師外訓滿意度
|
||
WHERE 講師編號 = A.編號), 0) AS 學員滿意度,
|
||
(SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BPSNSTP' AND BSCLS=A.最高學歷) AS 最高學歷TXT,
|
||
{0}
|
||
FROM 講師 A
|
||
) AS TMP1 ", 符合度)
|
||
+ _where;
|
||
|
||
if (姓名 != null && 姓名.Length > 0)
|
||
{
|
||
SQL += " and 姓名 like @姓名 ";
|
||
AddParam(cmdSelect, "姓名", "%" + 姓名 + "%");
|
||
}
|
||
if (地區 != null && 地區.Length > 0)
|
||
{
|
||
SQL += " and 授課區域 like @地區 ";
|
||
AddParam(cmdSelect, "地區", "%" + 地區 + "%");
|
||
}
|
||
if (授課專長領域 != null && 授課專長領域.Length > 0)
|
||
{
|
||
SQL += " and 授課專長領域 like @授課專長領域 ";
|
||
AddParam(cmdSelect, "授課專長領域", "%" + 授課專長領域 + "%");
|
||
}
|
||
if (學歷 != null && 學歷.Length > 0)
|
||
{
|
||
SQL += " and 最高學歷 = @學歷 ";
|
||
AddParam(cmdSelect, "學歷", 學歷);
|
||
}
|
||
if (滿意度1 != 0 && 滿意度2 != 0)
|
||
{
|
||
SQL += " and 滿意度 between @滿意度1 and @滿意度2 ";
|
||
AddParam(cmdSelect, "滿意度1", 滿意度1);
|
||
AddParam(cmdSelect, "滿意度2", 滿意度2);
|
||
}
|
||
else if (滿意度1 != 0 && 滿意度2 == 0)
|
||
{
|
||
SQL += " and 滿意度 >= @滿意度1 ";
|
||
AddParam(cmdSelect, "滿意度1", 滿意度1);
|
||
}
|
||
else if (滿意度1 == 0 && 滿意度2 != 0)
|
||
{
|
||
SQL += " and 滿意度 <= @滿意度2 ";
|
||
AddParam(cmdSelect, "滿意度2", 滿意度2);
|
||
}
|
||
if (!string.IsNullOrEmpty(合作狀態))
|
||
{
|
||
SQL += " and 合作狀態 = @合作狀態 ";
|
||
AddParam(cmdSelect, "合作狀態", 合作狀態);
|
||
}
|
||
if (推薦授課主題 != null && 推薦授課主題.Length > 0)
|
||
{
|
||
SQL += " and 推薦授課主題 like @推薦授課主題 ";
|
||
AddParam(cmdSelect, "推薦授課主題", "%" + 推薦授課主題 + "%");
|
||
}
|
||
if (講師評鑑1 != 0 && 講師評鑑2 != 0)
|
||
{
|
||
SQL += " and 講師評鑑 between @講師評鑑1 and @講師評鑑2 ";
|
||
AddParam(cmdSelect, "講師評鑑1", 講師評鑑1);
|
||
AddParam(cmdSelect, "講師評鑑2", 講師評鑑2);
|
||
}
|
||
else if (講師評鑑1 != 0 && 講師評鑑2 == 0)
|
||
{
|
||
SQL += " and 講師評鑑 >= @講師評鑑1 ";
|
||
AddParam(cmdSelect, "講師評鑑1", 講師評鑑1);
|
||
}
|
||
else if (講師評鑑1 == 0 && 講師評鑑2 != 0)
|
||
{
|
||
SQL += " and 講師評鑑 <= @講師評鑑2 ";
|
||
AddParam(cmdSelect, "講師評鑑2", 講師評鑑2);
|
||
}
|
||
if (!string.IsNullOrEmpty(關鍵字) && !string.IsNullOrEmpty(關鍵字欄位))
|
||
{
|
||
var keywords = 關鍵字.Split(' ');
|
||
var keywordWhere = new List<string>();
|
||
for (int i = 0; i < keywords.Length; i++)
|
||
{
|
||
var and = keywords[i].StartsWith("+");
|
||
var keyword = keywords[i].Replace("+", "");
|
||
|
||
var oneWhere = new List<string>();
|
||
AddParam(cmdSelect, string.Format("關鍵字_{0}", i), string.Format("%{0}%", keyword));
|
||
foreach (var f in 關鍵字欄位.Split('|'))
|
||
{
|
||
if (f == "居住地區")
|
||
{
|
||
oneWhere.Add(string.Format("(居住地址_縣市 LIKE @關鍵字_{0} OR 居住地址_鄉鎮市區 LIKE @關鍵字_{0})", i));
|
||
}
|
||
else
|
||
{
|
||
oneWhere.Add(string.Format("{0} LIKE @關鍵字_{1}", f, i));
|
||
}
|
||
}
|
||
keywordWhere.Add(string.Format("{0} ({1})",
|
||
(i == 0 ? "" : (and ? "AND" : "OR")),
|
||
string.Join(" OR ", oneWhere.ToArray())));
|
||
}
|
||
SQL += string.Format(" and ({0}) ", string.Join(" ", keywordWhere.ToArray()));
|
||
}
|
||
|
||
SQL = string.Format("select COUNT(*) FROM ({0}) AS TMP2", SQL);
|
||
|
||
cmdSelect.CommandText = SQL;
|
||
ExecuteScalar(cmdSelect, out int count);
|
||
return count;
|
||
}
|
||
|
||
public DataTable Select滿意度統計(int 講師編號)
|
||
{
|
||
DbCommand cmdSelect = NewCommand(
|
||
@"SELECT
|
||
(SELECT COUNT(1) FROM 滿意度調查講師 WHERE 講師編號 = @講師編號 AND 授課方式填答 = 5) AS 授課滿意度5,
|
||
(SELECT COUNT(1) FROM 滿意度調查講師 WHERE 講師編號 = @講師編號 AND 授課方式填答 = 4) AS 授課滿意度4,
|
||
(SELECT COUNT(1) FROM 滿意度調查講師 WHERE 講師編號 = @講師編號 AND 授課方式填答 = 3) AS 授課滿意度3,
|
||
(SELECT COUNT(1) FROM 滿意度調查講師 WHERE 講師編號 = @講師編號 AND 授課方式填答 = 2) AS 授課滿意度2,
|
||
(SELECT COUNT(1) FROM 滿意度調查講師 WHERE 講師編號 = @講師編號 AND 授課方式填答 = 1) AS 授課滿意度1,
|
||
(SELECT ISNULL(AVG(CAST(授課方式分數 AS FLOAT)), 0) FROM 滿意度調查講師 WHERE 講師編號 = @講師編號) AS 授課滿意度總分,
|
||
(SELECT COUNT(1) FROM 滿意度調查講師 WHERE 講師編號 = @講師編號 AND 專業知識填答 = 5) AS 專業滿意度5,
|
||
(SELECT COUNT(1) FROM 滿意度調查講師 WHERE 講師編號 = @講師編號 AND 專業知識填答 = 4) AS 專業滿意度4,
|
||
(SELECT COUNT(1) FROM 滿意度調查講師 WHERE 講師編號 = @講師編號 AND 專業知識填答 = 3) AS 專業滿意度3,
|
||
(SELECT COUNT(1) FROM 滿意度調查講師 WHERE 講師編號 = @講師編號 AND 專業知識填答 = 2) AS 專業滿意度2,
|
||
(SELECT COUNT(1) FROM 滿意度調查講師 WHERE 講師編號 = @講師編號 AND 專業知識填答 = 1) AS 專業滿意度1,
|
||
(SELECT ISNULL(AVG(CAST(專業知識分數 AS FLOAT)), 0) FROM 滿意度調查講師 WHERE 講師編號 = @講師編號) AS 專業滿意度總分");
|
||
AddParam(cmdSelect, "講師編號", 講師編號);
|
||
return Select(cmdSelect);
|
||
}
|
||
|
||
public bool IsOccipued(int 講師編號)
|
||
{
|
||
DbCommand cmd = NewCommand(
|
||
@"SELECT
|
||
(SELECT COUNT(1) FROM 講師遴選 WHERE 講師編號_A = @講師編號 OR 講師編號_B = @講師編號 OR 講師編號_C = @講師編號)
|
||
+ (SELECT COUNT(1) FROM 講師異動 WHERE 講師編號 = @講師編號)");
|
||
AddParam(cmd, "講師編號", 講師編號);
|
||
int i;
|
||
ExecuteScalar(cmd, out i);
|
||
return i > 0;
|
||
}
|
||
|
||
public DataTable Select講師評鑑統計(int 講師編號)
|
||
{
|
||
DbCommand cmdSelect = NewCommand(
|
||
@"SELECT AVG(cast(專業度 as float)) AS 專業度,
|
||
AVG(cast(授課技巧 as float)) AS 授課技巧,
|
||
AVG(cast(互動氛圍 as float)) AS 互動氛圍,
|
||
AVG(cast(內容切題 as float)) AS 內容切題,
|
||
AVG(cast(配合度 as float)) AS 配合度,
|
||
AVG(cast(專業度 + 授課技巧 + 互動氛圍 + 內容切題 + 配合度 as float)) AS 總分,
|
||
AVG(cast(學員滿意度 as float)) AS 學員滿意度
|
||
FROM 講師外訓滿意度
|
||
WHERE 講師編號 = @講師編號");
|
||
AddParam(cmdSelect, "講師編號", 講師編號);
|
||
return Select(cmdSelect);
|
||
}
|
||
|
||
public bool Is身份證字號Dulicate(int 講師編號, string 身份證字號)
|
||
{
|
||
DbCommand cmd = NewCommand(
|
||
@"SELECT COUNT(1) FROM 講師 WHERE 編號<>@講師編號 AND 身份證字號=@身份證字號");
|
||
AddParam(cmd, "講師編號", 講師編號);
|
||
AddParam(cmd, "身份證字號", 身份證字號);
|
||
int i;
|
||
ExecuteScalar(cmd, out i);
|
||
return i > 0;
|
||
}
|
||
|
||
private static NameValueList _講師合作狀態 = new NameValueList
|
||
{
|
||
new NameValueItem { Value = "C", Name = "收服務費" },
|
||
new NameValueItem { Value = "F", Name = "不收服務費" },
|
||
new NameValueItem { Value = "X", Name = "不合作" },
|
||
new NameValueItem { Value = "B", Name = "暫不排課" },
|
||
};
|
||
|
||
public static NameValueList Select講師合作狀態ForEdit()
|
||
{
|
||
var result = new NameValueList();
|
||
result.Add("(請選擇)", "");
|
||
result.AddRange(_講師合作狀態);
|
||
return result;
|
||
}
|
||
|
||
public static string Get講師合作狀態Text(string Value)
|
||
{
|
||
return _講師合作狀態.GetName(Value);
|
||
}
|
||
|
||
public 講師List SelectByKeyword(string keyword)
|
||
{
|
||
講師List result = new 講師List();
|
||
keyword = !string.IsNullOrEmpty(keyword) ? keyword.Trim() : string.Empty;
|
||
if (string.IsNullOrEmpty(keyword))
|
||
return result;
|
||
|
||
IDataList list = result as IDataList;
|
||
DbCommand cmdSelect = NewCommand();
|
||
cmdSelect.CommandText = _select + _from + _where
|
||
// 20260317 用戶決定不要這個限制
|
||
// + " and 合作狀態 <> 'X' "
|
||
+ " and (姓名 like @keyword or 身份證字號 like @keyword) "
|
||
+ _order;
|
||
AddParam(cmdSelect, "keyword", "%" + keyword + "%");
|
||
Select(cmdSelect, ref list);
|
||
return result;
|
||
}
|
||
}
|
||
|
||
///<summary>
|
||
/// 講師 資料集合類別
|
||
///</summary>
|
||
public partial class 講師List : List<講師>
|
||
{
|
||
// 有另外加上去的屬性及方法,請加在這裡
|
||
}
|
||
|
||
///<summary>
|
||
/// 講師 資料紀錄類別
|
||
///</summary>
|
||
public partial class 講師
|
||
{
|
||
// 有另外加上去的屬性及方法,請加在這裡
|
||
public double 平均滿意度 { get; set; }
|
||
|
||
public string 最高學歷TXT { get; set; }
|
||
|
||
public string 異常標註符號
|
||
{
|
||
get
|
||
{
|
||
return string.IsNullOrEmpty(DAC.GetString(異常標註).Trim()) ? "" : "★";
|
||
}
|
||
}
|
||
|
||
public string 合作狀態TXT
|
||
{
|
||
get
|
||
{
|
||
return DAC_講師.Get講師合作狀態Text(合作狀態);
|
||
}
|
||
}
|
||
|
||
public string 合作狀態RPT
|
||
{
|
||
get
|
||
{
|
||
return String.Format("{0}{1}", 合作狀態TXT, 合作狀態說明);
|
||
}
|
||
}
|
||
|
||
public string 戶籍地址
|
||
{
|
||
get
|
||
{
|
||
return string.Format("{0}{1}{2}{3}", 戶籍地址_郵編, 戶籍地址_縣市, 戶籍地址_鄉鎮市區, 戶籍地址_街道地址);
|
||
}
|
||
}
|
||
|
||
public string 居住地址
|
||
{
|
||
get
|
||
{
|
||
return string.Format("{0}{1}{2}{3}", 居住地址_郵編, 居住地址_縣市, 居住地址_鄉鎮市區, 居住地址_街道地址);
|
||
}
|
||
}
|
||
|
||
public string 學歷
|
||
{
|
||
get
|
||
{
|
||
return string.Format("[{0}]{1}{2}", 最高學歷TXT, 最高學歷學校, 最高學歷科系);
|
||
}
|
||
}
|
||
|
||
private static DAC_BCLS BCLSDao = null;
|
||
|
||
public string 授課區域TXT
|
||
{
|
||
get
|
||
{
|
||
if (BCLSDao == null)
|
||
BCLSDao = new DAC_BCLS();
|
||
|
||
string[] arr = DAC.GetString(授課區域).Split(',');
|
||
string result = "";
|
||
foreach (string s in arr)
|
||
{
|
||
if (s != null && s.Length > 0)
|
||
result += BCLSDao.Get類別名稱("授課區域", s) + "/";
|
||
}
|
||
if (result.Length > 0)
|
||
result = result.Remove(result.Length - 1);
|
||
return result;
|
||
}
|
||
}
|
||
|
||
public double 講師評鑑 { get; set; }
|
||
|
||
public double 學員滿意度 { get; set; }
|
||
|
||
public int 符合度 { get; set; }
|
||
|
||
public string 付款設定講師編號 { get { return $"T{編號:0000}"; } }
|
||
}
|
||
|
||
}
|