You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1105 lines
60 KiB
1105 lines
60 KiB
using System;
|
|
using System.Linq;
|
|
using System.Web;
|
|
using System.Web.Services;
|
|
using System.Web.Services.Protocols;
|
|
using System.Xml.Linq;
|
|
using System.Data;
|
|
using System.Data.Sql;
|
|
using System.Data.SqlClient;
|
|
using System.Collections;
|
|
using System.Text;
|
|
using System.Configuration;
|
|
using System.Web.Script.Services;
|
|
using System.Collections.Generic;
|
|
using Newtonsoft.Json;
|
|
using OT.Common;
|
|
|
|
#region 程式異動記錄
|
|
///程式代號:WebService1
|
|
///程式名稱:
|
|
///程式說明:
|
|
///xx.YYYY/MM/DD VER AUTHOR COMMENTS(說明修改的內容)
|
|
///01.2014/04/24 1.0 Gary CREATE
|
|
///02.2014/06/18 1.1 Gary Code
|
|
///03.2014/07/12 1.2 Gary Code
|
|
///04.2014/09/29 1.3 Dean Modify LoginVerification
|
|
#endregion
|
|
|
|
namespace OT_Web
|
|
{
|
|
public class MyList
|
|
{
|
|
public string Name { get; set; }
|
|
public int hit { get; set; }
|
|
}
|
|
/// <summary>
|
|
/// WebService1 的摘要描述
|
|
/// </summary>
|
|
[WebService(Namespace = "http://tempuri.org/")]
|
|
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
|
|
[System.Web.Script.Services.ScriptService]
|
|
public class WebService1 : System.Web.Services.WebService
|
|
{
|
|
#region LoginVerification
|
|
/// <summary>
|
|
/// 取回參團資訊
|
|
/// </summary>
|
|
[WebMethod]
|
|
public string LoginVerification(string strUserId, string strPwd)
|
|
{
|
|
SqlConnection cn = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString()); //從Web.config取得伺服器資訊
|
|
SqlCommand cmd = new SqlCommand("SELECT MemberID,Password FROM OTB_SYS_Members WHERE MemberID like @id", cn); //設定相關資訊
|
|
cmd.Parameters.AddWithValue("@id", strUserId.Trim()); //丟入所需參數
|
|
cn.Open();
|
|
SqlDataReader dr = cmd.ExecuteReader();
|
|
DataTable tbl = new DataTable("DepartmentUser");
|
|
string pwd = SecurityUtil.DESEncrypt(strPwd, System.Configuration.ConfigurationManager.AppSettings["DefaultCryptionKey"].Trim(), System.Configuration.ConfigurationManager.AppSettings["DefaultCryptionIV"].Trim());
|
|
tbl.Load(dr); //載入資訊
|
|
int intCount = tbl.Rows.Count; //取得總數
|
|
string ChkPwd = string.Empty;
|
|
string strreturn = string.Empty;
|
|
if (intCount == 0) //如果Count等於0,代表使用者帳號有錯誤
|
|
{
|
|
strreturn = "A00068"; //設定須回傳代碼
|
|
}
|
|
else //如果Coutn不等於0代表有找到相關的人員
|
|
{
|
|
ChkPwd = tbl.Rows[0]["Password"].ToString(); //取得人員的密碼
|
|
}
|
|
//string strreturn = (intCount == 0) ? "A00068" : (ChkPwd != pwd) ? "A00069" : "ok"; 這裡需再多判斷科威格式,所以這裡先移除
|
|
if (ChkPwd != pwd) //如果帳號密碼不符合,則判斷科威格式
|
|
{
|
|
try
|
|
{
|
|
//僅以帳號密碼測試是否科威帳號
|
|
//之後可以直接使用與修正
|
|
//WMPWENCODER.Encoder objPWD = new WMPWENCODER.Encoder();
|
|
//string p_pwd = strPwd.Trim();
|
|
//string newpwd = objPWD.chkPwd(p_pwd);
|
|
|
|
//cmd = new SqlCommand("select *,dept_nm=(select top 1 a.dept_nm from trdept a,tremp b where b.dept_cd = a.dept_cd and b.emp_cd=trusr.usr_id) from trusr where usr_id=@id and usr_passwd=@pwd", cn); //設定相關資訊
|
|
//cmd.Parameters.AddWithValue("@id", strUserId.Trim());
|
|
//cmd.Parameters.AddWithValue("@pwd", newpwd); //丟入所需參數
|
|
//dr = cmd.ExecuteReader();
|
|
//tbl = new DataTable("User");
|
|
//tbl.Load(dr); //載入資訊
|
|
//intCount = tbl.Rows.Count; //取得總數
|
|
//if (intCount == 0) //如果Count等於0,代表使用者帳號有錯誤
|
|
//{
|
|
strreturn = "A00069";
|
|
//}
|
|
//else { strreturn = "ok"; }
|
|
|
|
//EGCHKUSRPWD.CHKPWDClass oClass = new EGCHKUSRPWD.CHKPWDClass(); //科威的插件
|
|
//oClass.iCOMPUTER_NM = "";
|
|
//oClass.iPWD = strPwd;
|
|
//oClass.iSYS_FG = "";
|
|
//oClass.iUID = strUserId;
|
|
//oClass.iUSER_QT = 0;
|
|
//oClass.MAIN();
|
|
//if (string.IsNullOrEmpty(oClass.oErrMsg) && oClass.iUID == oClass.oUSR_ID)
|
|
//{
|
|
// //如果沒有登入錯誤並且正確取到登入用戶信息則認為科威登入成功!
|
|
// strreturn = "ok";
|
|
//}
|
|
//else
|
|
//{
|
|
// strreturn = "A00069";
|
|
//}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
strreturn = "A00069";
|
|
return strreturn;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
strreturn = "ok";
|
|
}
|
|
cn.Close();
|
|
return strreturn;
|
|
}
|
|
#endregion
|
|
|
|
#region GetGroupNm
|
|
/// <summary>
|
|
/// 取回參團資訊
|
|
/// </summary>
|
|
[WebMethod]
|
|
public string GetGroupNm(string strGrup_cd, string type)
|
|
{
|
|
//連線SQL資料庫
|
|
SqlConnection cn = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString()); //從Web.config取得伺服器資訊
|
|
SqlCommand cmd = new SqlCommand("SELECT GRUP_CD,GRUP_SNM,leav_dt FROM trdata.dbo.TRGRUP where (GRUP_CD like @GRUP_CD OR @GRUP_CD IS NULL OR @GRUP_CD='%%') and GRUP_TP='3' ", cn);//設定相關資訊
|
|
cmd.Parameters.AddWithValue("@GRUP_CD", "%" + strGrup_cd.Trim() + "%");//丟入所需參數
|
|
cn.Open();
|
|
SqlDataReader dr = cmd.ExecuteReader();
|
|
DataTable tbl = new DataTable("DepartmentUser");
|
|
tbl.Load(dr);//將查詢的資料傳到tbl資料表輸出
|
|
int intCount = tbl.Rows.Count;
|
|
string strGrup = string.Empty;
|
|
if (intCount == 1) //如果只有一筆,代表資料完全符合,可回傳
|
|
{
|
|
strGrup = tbl.Rows[0]["GRUP_CD"].ToString() + "$$$" + tbl.Rows[0]["GRUP_SNM"].ToString() + "$$$" + tbl.Rows[0]["leav_dt"].ToString();
|
|
}
|
|
else //如果為多筆或沒有,則回傳SearchGroup,以便知道需重新搜尋
|
|
{
|
|
strGrup = "SearchGroup";
|
|
}
|
|
cn.Close();
|
|
return strGrup;
|
|
}
|
|
#endregion
|
|
|
|
#region GetAllHit
|
|
/// <summary>
|
|
/// 取回點擊率
|
|
/// </summary>
|
|
[WebMethod]
|
|
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
|
|
public MyList[] GetAllHit(string strArea)
|
|
{
|
|
SqlConnection cn = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString()); //從Web.config取得伺服器資訊
|
|
//SqlCommand cmd = new SqlCommand(" select b.CHIN_WD ,count(*) as click_qt from trdata.dbo.tvlpageclick as a inner join (SELECT CHIN_WD,ENGL_WD FROM trdata.dbo.TRWORD where CLS_CD ='TvlPageClass') as b on a.page_cd = b.ENGL_WD group by page_cd ,b.CHIN_WD order by page_cd ", cn);//設定相關資訊
|
|
SqlCommand cmd = new SqlCommand(" SELECT Page_Cd,Count(0) FROM trdata.dbo.tvlpageclick GROUP BY Page_Cd ", cn);//設定相關資訊
|
|
cn.Open();
|
|
SqlDataReader dr = cmd.ExecuteReader();
|
|
DataTable tbl = new DataTable("DepartmentUser");
|
|
tbl.Load(dr); //將查詢的資料傳到tbl資料表輸出
|
|
List<MyList> res = new List<MyList>();
|
|
for (int intTblCount = 0; intTblCount < tbl.Rows.Count; intTblCount++) //跑迴圈製造出JsonAry的資料
|
|
{
|
|
res.Add(new MyList { Name = tbl.Rows[intTblCount][0].ToString(), hit = int.Parse(tbl.Rows[intTblCount][1].ToString()) });
|
|
}
|
|
cn.Close();
|
|
return res.ToArray();
|
|
}
|
|
#endregion
|
|
|
|
#region GetLocHit
|
|
/// <summary>
|
|
/// 取回點擊率
|
|
/// </summary>
|
|
[WebMethod]
|
|
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
|
|
public MyList[] GetLocHit(string strArea)
|
|
{
|
|
SqlConnection cn = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString());//從Web.config取得伺服器資訊
|
|
//SqlCommand cmd =new SqlCommand("select B.CHIN_WD,REPLACE(REPLACE(REPLACE(REPLACE(area_cd,'A1','促銷'),'A2','大圖'),'A3','先知'),'A4','行程')AS area_cd,count(*) as click_qt from trdata.dbo.tvlpageclick AS A inner join (SELECT CHIN_WD,ENGL_WD FROM trdata.dbo.TRWORD where CLS_CD ='TvlPageClass') as b on a.page_cd = b.ENGL_WD where B.CHIN_WD = @Area group by B.CHIN_WD,page_cd,area_cd order by page_cd,area_cd", cn);//設定相關資訊
|
|
SqlCommand cmd =new SqlCommand("select Page_Cd,REPLACE(REPLACE(REPLACE(REPLACE(area_cd,'A1','促銷'),'A2','大圖'),'A3','先知'),'A4','行程')AS area_cd,count(*) as click_qt from trdata.dbo.tvlpageclick AS A where Page_Cd= @Area group by page_cd,area_cd order by page_cd,area_cd", cn);//設定相關資訊
|
|
cmd.Parameters.AddWithValue("@Area", strArea.Trim()); //丟入參數
|
|
cn.Open();
|
|
SqlDataReader dr = cmd.ExecuteReader();
|
|
DataTable tbl = new DataTable("DepartmentUser");
|
|
tbl.Load(dr);//將查詢的資料傳到tbl資料表輸出
|
|
List<MyList> res = new List<MyList>();
|
|
for (int intTblCount = 0; intTblCount < tbl.Rows.Count; intTblCount++) //跑迴圈製造出JsonAry的資料
|
|
{
|
|
res.Add(new MyList { Name = tbl.Rows[intTblCount][1].ToString(), hit = int.Parse(tbl.Rows[intTblCount][2].ToString()) });
|
|
}
|
|
cn.Close();
|
|
return res.ToArray();
|
|
}
|
|
#endregion
|
|
|
|
#region GetRepArgJson
|
|
/// <summary>
|
|
/// 取回旅遊區域資料
|
|
/// </summary>
|
|
[WebMethod]
|
|
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
|
|
public string GetRepArgJson(string strParentID)
|
|
{
|
|
SqlConnection cn = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString()); //從Web.config取得伺服器資訊
|
|
//string strSql = " SELECT Rep.ArgumentClassID,Rep.ArgumentID,Rep.ArgumentValue,Rep.OrderByValue,Rep.DelStatus,Rep.Effective,Sort.[Level],dbo.OFN_Cms_GetCmsAreaUsedCount(Sort.ArgumentID) As Used "; //SQL語法
|
|
//strSql += " FROM OTB_CMS_RepArguments As Rep";
|
|
//strSql += " Left Join OVW_Cms_AreaSort As Sort On Rep.ArgumentClassID=Sort.ArgumentID";
|
|
//strSql += " WHERE ArgumentClassID=@ParentID";
|
|
//strSql += " ORDER BY OrderByValue";
|
|
string strSql = " SELECT ArgumentClassID,ArgumentID,ArgumentValue,OrderByValue,DelStatus,Effective,dbo.OFN_Cms_GetCmsAreaUsedCount(ArgumentID) As Used "; //SQL語法
|
|
strSql += " FROM OTB_CMS_RepArguments";
|
|
strSql += " WHERE ArgumentClassID=@ParentID";
|
|
strSql += " ORDER BY OrderByValue";
|
|
SqlCommand cmd = new SqlCommand(strSql, cn); //設定SqlCommand所需資訊
|
|
cmd.Parameters.AddWithValue("@ParentID", strParentID.Trim()); //丟入參數
|
|
cn.Open();
|
|
SqlDataReader dr = cmd.ExecuteReader();
|
|
DataTable tbl = new DataTable();
|
|
tbl.Load(dr);
|
|
string str_json = JsonConvert.SerializeObject(tbl, Formatting.Indented); //把DataTable轉成Json字串
|
|
cn.Close();
|
|
return str_json; //回傳字串
|
|
}
|
|
#endregion
|
|
|
|
#region GetRepArgLastModify
|
|
/// <summary>
|
|
/// 取回旅遊區域最後的修改資料
|
|
/// </summary>
|
|
///取得此父層最後的修改人及修改時間,這部分可以從改為成從Qry頁直接送過來,這裡會這樣寫是因為當時考量新增時
|
|
///父層是可以更變,所以只要改變父層,就從WebService重新抓取資料,但目前不會有新增功能,父層代碼也不會被改變,所以這部分可以考慮從Qry頁直接取得,減少Sever負擔。
|
|
[WebMethod]
|
|
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
|
|
public string GetRepArgLastModify(string strParentID)
|
|
{
|
|
SqlConnection cn = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString());//從Web.config取得伺服器資訊
|
|
string strSql = " SELECT MemberName As ModifyName,CONVERT(VARCHAR(10), ModifyDate, 111) + ' ' + CONVERT(VARCHAR(8), ModifyDate, 108) As ModifyDate"; //SQL語法
|
|
strSql += " FROM (";
|
|
strSql += " SELECT distinct ArgumentClassID";
|
|
strSql += " ,(SELECT TOP 1 ModifyUser";
|
|
strSql += " FROM OTB_CMS_RepArguments AS T2";
|
|
strSql += " WHERE T2.ArgumentClassID = T1.ArgumentClassID";
|
|
strSql += " group by ModifyUser,ModifyDate";
|
|
strSql += " ORDER BY ModifyDate DESC";
|
|
strSql += " ) AS ModifyUser";
|
|
strSql += " ,(SELECT TOP 1 ModifyDate";
|
|
strSql += " FROM OTB_CMS_RepArguments AS T2";
|
|
strSql += " WHERE T2.ArgumentClassID = T1.ArgumentClassID";
|
|
strSql += " group by ModifyUser,ModifyDate";
|
|
strSql += " ORDER BY ModifyDate DESC";
|
|
strSql += " ) AS ModifyDate";
|
|
strSql += " FROM ";
|
|
strSql += " OTB_CMS_RepArguments";
|
|
strSql += " As T1";
|
|
strSql += " ) As Class";
|
|
strSql += " Left Join (SELECT ArgumentID,ArgumentValue FROM OTB_CMS_RepArguments) As Value On Class.ArgumentClassID = Value.ArgumentID";
|
|
strSql += " Left Join (SELECT MemberID,MemberName FROM OTB_SYS_Members) As Name On Class.ModifyUser=Name.MemberID";
|
|
strSql += " WHERE ArgumentClassID=@ParentID";
|
|
SqlCommand cmd = new SqlCommand(strSql, cn); //設定SqlCommand所需資訊
|
|
cmd.Parameters.AddWithValue("@ParentID", strParentID.Trim()); //丟入參數
|
|
cn.Open();
|
|
SqlDataReader dr = cmd.ExecuteReader();
|
|
DataTable tbl = new DataTable();
|
|
tbl.Load(dr);
|
|
string str_json = JsonConvert.SerializeObject(tbl, Formatting.Indented); //把DataTable轉成Json字串
|
|
cn.Close();
|
|
return str_json; //回傳字串
|
|
}
|
|
#endregion
|
|
|
|
#region GetAllRepArg
|
|
/// <summary>
|
|
/// 取回所有旅遊區域,包含顯示階層
|
|
/// </summary>
|
|
[WebMethod]
|
|
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
|
|
public string GetAllRepArg()
|
|
{
|
|
SqlConnection cn = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString());//從Web.config取得伺服器資訊
|
|
string strSql = "SELECT ParentID As ArgumentClassID,ArgumentID,'第'+Cast([Level] As Varchar)+'層 '+ArgumentValue As ArgumentValue FROM OVW_Cms_AreaSort";
|
|
SqlCommand cmd = new SqlCommand(strSql, cn); //設定SqlCommand所需資訊
|
|
cn.Open();
|
|
SqlDataReader dr = cmd.ExecuteReader();
|
|
DataTable tbl = new DataTable();
|
|
tbl.Load(dr);
|
|
string str_json = JsonConvert.SerializeObject(tbl, Formatting.Indented); //把DataTable轉成Json字串
|
|
cn.Close();
|
|
return str_json; //回傳字串
|
|
}
|
|
#endregion
|
|
|
|
#region GetCmsAreaSort
|
|
/// <summary>
|
|
/// 取回所有旅遊區域,包含顯示階層
|
|
/// </summary>
|
|
[WebMethod]
|
|
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
|
|
public string GetCmsAreaSort()
|
|
{
|
|
SqlConnection cn = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString());//從Web.config取得伺服器資訊
|
|
string strSql = "SELECT ArgumentID,ArgumentValue,ParentID,[Level],AccountNameSort,ParentIDSort FROM OVW_Cms_AreaSort ORDER BY [level],OrderByValue";
|
|
SqlCommand cmd = new SqlCommand(strSql, cn); //設定SqlCommand所需資訊
|
|
cn.Open();
|
|
SqlDataReader dr = cmd.ExecuteReader();
|
|
DataTable tbl = new DataTable();
|
|
tbl.Load(dr);
|
|
string str_json = JsonConvert.SerializeObject(tbl, Formatting.Indented); //把DataTable轉成Json字串
|
|
cn.Close();
|
|
return str_json; //回傳字串
|
|
}
|
|
#endregion
|
|
|
|
#region GroupFreeList
|
|
/// <summary>
|
|
/// 取回所有自由行區域,包含顯示階層
|
|
/// </summary>
|
|
[WebMethod]
|
|
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
|
|
public string GroupFreeList()
|
|
{
|
|
SqlConnection cn = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString());//從Web.config取得伺服器資訊
|
|
string strSql = " SELECT * FROM [dbo].[OFN_Sys_GroupFreeList]('台北出發','TPE')";
|
|
strSql += " Union All";
|
|
strSql += " SELECT * FROM [dbo].[OFN_Sys_GroupFreeList]('台中出發','TXG')";
|
|
strSql += " Union All";
|
|
strSql += " SELECT * FROM [dbo].[OFN_Sys_GroupFreeList]('高雄出發','KHH')";
|
|
strSql += " Order By [Level]";
|
|
SqlCommand cmd = new SqlCommand(strSql, cn); //設定SqlCommand所需資訊
|
|
cn.Open();
|
|
SqlDataReader dr = cmd.ExecuteReader();
|
|
DataTable tbl = new DataTable();
|
|
tbl.Load(dr);
|
|
string str_json = JsonConvert.SerializeObject(tbl, Formatting.Indented); //把DataTable轉成Json字串
|
|
cn.Close();
|
|
return str_json; //回傳字串
|
|
}
|
|
#endregion
|
|
|
|
#region GetAnnouncement
|
|
/// <summary>
|
|
/// 取回公告資料
|
|
/// </summary>
|
|
[WebMethod]
|
|
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
|
|
public string GetAnnouncement(string strMemberID)
|
|
{
|
|
SqlConnection cn = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString());//從Web.config取得伺服器資訊
|
|
string strSql = " DECLARE @strSQL NVARCHAR(1000)";
|
|
strSql += " DECLARE @Conditions NVARCHAR(1000)";
|
|
strSql += " SET @Conditions = STUFF((SELECT ' Or Roles Like '+'''%'+RuleID+ '%'''";
|
|
strSql += " FROM OTB_SYS_MembersToRule";
|
|
strSql += " WHERE MemberID=@MemberID FOR XML PATH('')),1,3,'') ";
|
|
strSql += " BEGIN";
|
|
strSql += " BEGIN";
|
|
strSql += " SET @strSQL=N'SELECT * From OTB_MNG_Announcement Where (GetDate() between ShowBD And ShowED) And ( Roles Like'+'''%All%'''";
|
|
strSql += " IF @Conditions <>''";
|
|
strSql += " BEGIN";
|
|
strSql += " SET @strSQL =@strSQL + ' Or ' + @Conditions";
|
|
strSql += " END";
|
|
strSql += " SET @strSQL =@strSQL + ' )' ";
|
|
strSql += " exec sp_executesql @strSQL";
|
|
strSql += " END";
|
|
strSql += " END";
|
|
SqlCommand cmd = new SqlCommand(strSql, cn); //設定SqlCommand所需資訊
|
|
cmd.Parameters.AddWithValue("@MemberID", strMemberID.Trim()); //丟入參數
|
|
cn.Open();
|
|
SqlDataReader dr = cmd.ExecuteReader();
|
|
DataTable tbl = new DataTable();
|
|
tbl.Load(dr);
|
|
string str_json = JsonConvert.SerializeObject(tbl, Formatting.Indented); //把DataTable轉成Json字串
|
|
cn.Close();
|
|
return str_json; //回傳字串
|
|
}
|
|
#endregion
|
|
|
|
#region GetArgJson
|
|
/// <summary>
|
|
/// 取回旅遊區域資料
|
|
/// </summary>
|
|
[WebMethod]
|
|
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
|
|
public string GetArgJson(string strParentID)
|
|
{
|
|
SqlConnection cn = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString()); //從Web.config取得伺服器資訊
|
|
string strSql = " SELECT ArgumentClassID,ArgumentID,ArgumentValue,OrderByValue,DelStatus,Effective "; //SQL語法
|
|
strSql += " ,dbo.[OFN_Cms_GetUsedCountByArgumentID](ArgumentClassID,ArgumentID) As Used ";
|
|
strSql += " FROM OTB_CMS_Arguments";
|
|
strSql += " WHERE ArgumentClassID=@ParentID";
|
|
strSql += " ORDER BY OrderByValue";
|
|
SqlCommand cmd = new SqlCommand(strSql, cn); //設定SqlCommand所需資訊
|
|
cmd.Parameters.AddWithValue("@ParentID", strParentID.Trim()); //丟入參數
|
|
cn.Open();
|
|
SqlDataReader dr = cmd.ExecuteReader();
|
|
DataTable tbl = new DataTable();
|
|
tbl.Load(dr);
|
|
string str_json = JsonConvert.SerializeObject(tbl, Formatting.Indented); //把DataTable轉成Json字串
|
|
cn.Close();
|
|
return str_json; //回傳字串
|
|
}
|
|
#endregion
|
|
|
|
#region GetArgLastModify
|
|
/// <summary>
|
|
/// 取回最後的修改資料
|
|
/// </summary>
|
|
[WebMethod]
|
|
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
|
|
public string GetArgLastModify(string strParentID)
|
|
{
|
|
SqlConnection cn = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString());//從Web.config取得伺服器資訊
|
|
string strSql = " SELECT MemberName As ModifyName,CONVERT(VARCHAR(10), ModifyDate, 111) + ' ' + CONVERT(VARCHAR(8), ModifyDate, 108) As ModifyDate"; //SQL語法
|
|
strSql += " FROM (";
|
|
strSql += " SELECT distinct ArgumentClassID";
|
|
strSql += " ,(SELECT TOP 1 ModifyUser";
|
|
strSql += " FROM OTB_CMS_Arguments AS T2";
|
|
strSql += " WHERE T2.ArgumentClassID = T1.ArgumentClassID";
|
|
strSql += " group by ModifyUser,ModifyDate";
|
|
strSql += " ORDER BY ModifyDate DESC";
|
|
strSql += " ) AS ModifyUser";
|
|
strSql += " ,(SELECT TOP 1 ModifyDate";
|
|
strSql += " FROM OTB_CMS_Arguments AS T2";
|
|
strSql += " WHERE T2.ArgumentClassID = T1.ArgumentClassID";
|
|
strSql += " group by ModifyUser,ModifyDate";
|
|
strSql += " ORDER BY ModifyDate DESC";
|
|
strSql += " ) AS ModifyDate";
|
|
strSql += " FROM ";
|
|
strSql += " OTB_CMS_Arguments";
|
|
strSql += " As T1";
|
|
strSql += " ) As Class";
|
|
strSql += " Left Join (SELECT ArgumentID,ArgumentValue FROM OTB_CMS_Arguments) As Value On Class.ArgumentClassID = Value.ArgumentID";
|
|
strSql += " Left Join (SELECT MemberID,MemberName FROM OTB_SYS_Members) As Name On Class.ModifyUser=Name.MemberID";
|
|
strSql += " WHERE ArgumentClassID=@ParentID";
|
|
SqlCommand cmd = new SqlCommand(strSql, cn); //設定SqlCommand所需資訊
|
|
cmd.Parameters.AddWithValue("@ParentID", strParentID.Trim()); //丟入參數
|
|
cn.Open();
|
|
SqlDataReader dr = cmd.ExecuteReader();
|
|
DataTable tbl = new DataTable();
|
|
tbl.Load(dr);
|
|
string str_json = JsonConvert.SerializeObject(tbl, Formatting.Indented); //把DataTable轉成Json字串
|
|
cn.Close();
|
|
return str_json; //回傳字串
|
|
}
|
|
#endregion
|
|
|
|
#region GetSubClassification
|
|
/// <summary>
|
|
/// 取回該大分類之小分類
|
|
/// </summary>
|
|
[WebMethod]
|
|
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
|
|
public string GetSubClassification(string strClassification)
|
|
{
|
|
SqlConnection cn = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString());//從Web.config取得伺服器資訊
|
|
string strSql = " SELECT Sub.Classification,ClassificationName,SubClassification,SubClassificationName";
|
|
strSql += " FROM ";
|
|
strSql += " (";
|
|
strSql += " SELECT Cls_Cd As Classification,DATA_VALUE As SubClassification,CHIN_WD As SubClassificationName,SORT_SQ ";
|
|
strSql += " FROM Trdata.Dbo.TrWord Where Cls_Cd=@Classification";
|
|
strSql += " ) As Sub";
|
|
strSql += " Inner Join ";
|
|
strSql += " (";
|
|
strSql += " SELECT DATA_VALUE As Classification,CHIN_WD As ClassificationName";
|
|
strSql += " FROM Trdata.Dbo.TrWord Where Cls_Cd='tvl_area' And Data_Value=@Classification";
|
|
strSql += " ) As Main";
|
|
strSql += " On Sub.Classification=Main.Classification";
|
|
strSql += " ORDER BY SORT_SQ";
|
|
SqlCommand cmd = new SqlCommand(strSql, cn); //設定SqlCommand所需資訊
|
|
cmd.Parameters.AddWithValue("@Classification", strClassification.Trim()); //丟入參數
|
|
cn.Open();
|
|
SqlDataReader dr = cmd.ExecuteReader();
|
|
DataTable tbl = new DataTable();
|
|
tbl.Load(dr);
|
|
string str_json = JsonConvert.SerializeObject(tbl, Formatting.Indented); //把DataTable轉成Json字串
|
|
cn.Close();
|
|
return str_json; //回傳字串
|
|
}
|
|
#endregion
|
|
|
|
#region GetSubClassByTvlShop
|
|
/// <summary>
|
|
/// 取回該館之小分類
|
|
/// </summary>
|
|
[WebMethod]
|
|
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
|
|
public string GetSubClassByTvlShop(string strTvlShop)
|
|
{
|
|
SqlConnection cn = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString());//從Web.config取得伺服器資訊
|
|
string strSql = " Declare @Classifications Nvarchar(500)";
|
|
strSql += " Set @Classifications =(SELECT Classifications FROM OTB_ADV_TvlShop WHERE ShopCode=@TvlShop);";
|
|
strSql += " DECLARE @xmlSplit XML ";
|
|
strSql += " SET @xmlSplit = '<i>' + REPLACE( @Classifications, '|', '</i><i>') + '</i>'";
|
|
strSql += " SELECT Classification,ClassificationName,SubClassification,SubClassificationName,ShowField,Effective,Region,OrderByValue";
|
|
strSql += " FROM ";
|
|
strSql += " (";
|
|
strSql += " SELECT ";
|
|
strSql += " IsNull(Main.Classification,Base.Classification) As Classification";
|
|
strSql += " ,IsNull(Main.ClassificationName,Base.ClassificationName) As ClassificationName";
|
|
strSql += " ,IsNull(Main.SubClassification,Base.SubClassification) As SubClassification";
|
|
strSql += " ,IsNull(Main.SubClassificationName,Base.SubClassificationName) As SubClassificationName";
|
|
strSql += " ,IsNull(ShowField,'') As ShowField";
|
|
strSql += " ,IsNull(Region,'') As Region";
|
|
strSql += " ,IsNull(Effective,'N') As Effective";
|
|
strSql += " ,ROW_NUMBER() OVER (ORDER BY IsNull(OrderByValue,5000)) AS OrderByValue";
|
|
strSql += " FROM (";
|
|
strSql += " SELECT Classification,Main.Chin_Wd As ClassificationName,SubClassification,Sub.Chin_Wd As SubClassificationName,ShowField,Effective,Region,OrderByValue";
|
|
strSql += " FROM OTB_ADV_TvlShopClass As Class";
|
|
strSql += " Inner Join Trdata.dbo.TrWord As Sub On Sub.Cls_Cd=Classification And Sub.Data_Value =SubClassification";
|
|
strSql += " Inner Join Trdata.dbo.TrWord As Main On Main.Cls_Cd='TVL_Area' And Main.Data_Value =Classification";
|
|
strSql += " WHERE ShopCode=@TvlShop";
|
|
strSql += " ) As Main";
|
|
strSql += " Full Join";
|
|
strSql += " (";
|
|
strSql += " SELECT Classification ,Main.Chin_WD As ClassificationName,SubClassification,SubClassificationName";
|
|
strSql += " FROM (";
|
|
strSql += " SELECT Cls_CD As Classification ,Data_Value As SubClassification,Chin_WD As SubClassificationName";
|
|
strSql += " FROM Trdata.dbo.TrWord WHERE Cls_Cd In (SELECT xmlSplit.i.value('.', 'VARCHAR(10)') FROM @xmlSplit.nodes('//i') xmlSplit(i))";
|
|
strSql += " ) As Class";
|
|
strSql += " Inner Join Trdata.dbo.TrWord As Main On Main.Cls_Cd='TVL_Area' And Main.Data_Value =Classification";
|
|
strSql += " ) As Base On Main.Classification=Base.Classification And Main.SubClassification=Base.SubClassification ";
|
|
strSql += " ) As Main";
|
|
strSql += " ORDER BY OrderByValue";
|
|
|
|
SqlCommand cmd = new SqlCommand(strSql, cn); //設定SqlCommand所需資訊
|
|
cmd.Parameters.AddWithValue("@TvlShop", strTvlShop.Trim()); //丟入參數
|
|
cn.Open();
|
|
SqlDataReader dr = cmd.ExecuteReader();
|
|
DataTable tbl = new DataTable();
|
|
tbl.Load(dr);
|
|
string str_json = JsonConvert.SerializeObject(tbl, Formatting.Indented); //把DataTable轉成Json字串
|
|
cn.Close();
|
|
return str_json; //回傳字串
|
|
}
|
|
#endregion
|
|
|
|
#region GetRegionByTvlShop
|
|
/// <summary>
|
|
/// 取回該館之區塊
|
|
/// </summary>
|
|
[WebMethod]
|
|
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
|
|
public string GetRegionByTvlShop(string strTvlShop)
|
|
{
|
|
SqlConnection cn = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString());//從Web.config取得伺服器資訊
|
|
string strSql = " SELECT Region,RegionColumn";
|
|
strSql += " FROM OTB_ADV_TvlShopRegion";
|
|
strSql += " WHERE ShopCode=@TvlShop";
|
|
strSql += " ORDER BY OrderByValue";
|
|
|
|
SqlCommand cmd = new SqlCommand(strSql, cn); //設定SqlCommand所需資訊
|
|
cmd.Parameters.AddWithValue("@TvlShop", strTvlShop.Trim()); //丟入參數
|
|
cn.Open();
|
|
SqlDataReader dr = cmd.ExecuteReader();
|
|
DataTable tbl = new DataTable();
|
|
tbl.Load(dr);
|
|
string str_json = JsonConvert.SerializeObject(tbl, Formatting.Indented); //把DataTable轉成Json字串
|
|
cn.Close();
|
|
return str_json; //回傳字串
|
|
}
|
|
#endregion
|
|
|
|
#region SaleReport
|
|
/// <summary>
|
|
/// 業績報表資料
|
|
/// </summary>
|
|
[WebMethod]
|
|
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
|
|
public string SaleReport(string strStartDate,string strEndDate,string strDepId,string strGroupStatus,string strOpStatus,string strPaxTp,string strUsrId)
|
|
{
|
|
SqlConnection cn = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString());//從Web.config取得伺服器資訊
|
|
string strSql = " Declare @intNatnCount int";
|
|
strSql += " Set @intNatnCount=(SELECT Count(0) FROM OTB_CMS_Arguments WHERE ArgumentClassID = 'GareaLine' AND DelStatus = 'N' AND Effective = 'Y' AND ArgumentID <> 'N000')";
|
|
strSql += " ;WITH EmpTb";
|
|
strSql += " AS (SELECT dep.DEPT_CD,";
|
|
strSql += " dep.DEPT_NM,";
|
|
strSql += " Isnull(emp.EMP_CD, '7777') AS EMP_CD,";
|
|
strSql += " Isnull(emp.EMP_CNM, 'PAK') AS EMP_CNM,";
|
|
strSql += " emp.out_dt,";
|
|
strSql += " Row_number()";
|
|
strSql += " OVER(";
|
|
strSql += " ORDER BY OrderByValue,dep.DEPT_CD, emp.EMP_CD ) AS RowId";
|
|
strSql += " FROM (SELECT Isnull(ArgumentID, Dept_Cd) AS Dept_Cd,";
|
|
strSql += " Isnull(ArgumentValue, Dept_Nm) AS Dept_Nm,IsNull(OrderByValue,9999) AS OrderByValue, ";
|
|
strSql += " CASE WHEN ArgumentID IS NULL THEN 'No' ELSE 'Yes' END AS [Default]";
|
|
strSql += " FROM (SELECT Dept_Cd, Dept_Nm";
|
|
strSql += " FROM TrData.Dbo.TrDept) AS Dept";
|
|
strSql += " FULL JOIN (SELECT ArgumentID,ArgumentValue,OrderByValue";
|
|
strSql += " FROM OTB_CMS_Arguments";
|
|
strSql += " WHERE ArgumentClassID = 'AchiRP01' AND DelStatus = 'N' AND Effective = 'Y') AS Args";
|
|
strSql += " ON Dept.Dept_Cd = Args.ArgumentID) AS dep";
|
|
strSql += " LEFT JOIN TREMP AS emp";
|
|
strSql += " ON dep.DEPT_CD = emp.DEPT_CD";
|
|
strSql += " WHERE ( emp.out_dt = ''";
|
|
strSql += " OR emp.out_dt >= @StartDate )";
|
|
strSql += " AND ( Replace(emp.EMP_CNM, '-', '') LIKE @UsrId OR @UsrId IS NULL OR @UsrId = '' )";
|
|
strSql += " AND ( ( Charindex(emp.DEPT_CD, @DepId) > 0 )";
|
|
strSql += " OR @DepId IS NULL OR @DepId = '' )";
|
|
//strSql += " OR ( Isnull(emp.EMP_CD, '7777') IN ( '7777', '8888' ) )),"; //顯示會有問題 Delete By Gary 2014/12/31
|
|
strSql += " OR ( emp.EMP_CD IN ( '7777', '8888' ) )),";
|
|
strSql += " ArgGrup";
|
|
strSql += " AS (SELECT ArgumentID,ArgumentValue ";
|
|
strSql += " FROM OTB_CMS_Arguments";
|
|
strSql += " WHERE ArgumentClassID = 'AchiRP01' AND DelStatus = 'N' AND Effective = 'Y'),";
|
|
strSql += " ArgLine";
|
|
strSql += " AS (SELECT ArgumentID,ArgumentValue,";
|
|
strSql += " OrderByValue,";
|
|
strSql += " 'Y' As Natn, ";
|
|
strSql += " Row_number() OVER(ORDER BY OrderByValue) AS RowId";
|
|
strSql += " FROM OTB_CMS_Arguments";
|
|
strSql += " WHERE ArgumentClassID = 'GareaLine'";
|
|
strSql += " AND DelStatus = 'N'";
|
|
strSql += " AND Effective = 'Y'";
|
|
strSql += " AND ArgumentID <> 'N000')";
|
|
strSql += " SELECT ''AS GroupNo";
|
|
strSql += " ,'' AS GroupStatus";
|
|
strSql += " ,''AS MinClassId";
|
|
strSql += " ,'' AS OpId";
|
|
strSql += " ,'' AS OpStatus";
|
|
strSql += " ,Isnull(emp.DEPT_CD, '000') AS DepId";
|
|
strSql += " ,Isnull(emp.EMP_CD, '7777') AS UsrId";
|
|
strSql += " ,''AS PaxId";
|
|
strSql += " ,''AS PaxCn";
|
|
strSql += " ,''AS PaxTp";
|
|
strSql += " ,''AS DorpFg";
|
|
strSql += " ,''AS PaxStatus";
|
|
strSql += " ,Isnull(LEFT(Replace(emp.DEPT_NM, '-', ''), 5), N'台北總公司') AS DepCn";
|
|
strSql += " ,Isnull(emp.EMP_CNM, N'PAK') AS UsrCn";
|
|
strSql += " ,Isnull(lin.ArgumentID, 'N003') AS MaxClassId";
|
|
//strSql += " ,@intNatnCount As NatnCount";
|
|
strSql += " ,Case When emp.RowId Is Null Then 0 Else @intNatnCount End As NatnCount";
|
|
strSql += " ,Isnull(Natn,'N') As Natn";
|
|
strSql += " ,Isnull(lin.ArgumentValue, N'香港')AS MaxClassCn";
|
|
strSql += " ,( CASE WHEN emp.DEPT_NM LIKE '%企業%' THEN '企客' WHEN emp.DEPT_NM LIKE '%團體%' OR emp.DEPT_NM LIKE '%PAK%' THEN '同業' ELSE '直客' END ) AS CusClass";
|
|
strSql += " ,0 AS SouceCount";
|
|
strSql += " ,0 AS IsFlag";
|
|
strSql += " ,0 AS IsFlagTrue";
|
|
strSql += " ,Isnull(emp.RowId, 999) AS OrderByValue";
|
|
strSql += " ,Isnull(lin.OrderByValue, 999) AS MaxClassOrderByValue";
|
|
strSql += " FROM (SELECT RowId";
|
|
strSql += " FROM EmpTb";
|
|
strSql += " UNION";
|
|
strSql += " SELECT RowId";
|
|
strSql += " FROM ArgLine) AS AllRowId";
|
|
strSql += " LEFT JOIN EmpTb AS emp";
|
|
strSql += " ON AllRowId.RowId = emp.RowId";
|
|
strSql += " LEFT JOIN ArgGrup AS argropu";
|
|
strSql += " ON emp.DEPT_CD = argropu.ArgumentID";
|
|
strSql += " LEFT JOIN ArgLine AS lin";
|
|
strSql += " ON lin.RowId = AllRowId.RowId";
|
|
strSql += " UNION ALL ";
|
|
strSql += " SELECT";
|
|
strSql += " gp.GRUP_CD AS GroupNo";
|
|
strSql += " ,gp.GRUP_TP AS GroupStatus";
|
|
strSql += " ,gp.GAREA_CD AS MinClassId";
|
|
strSql += " ,gor.OP_SQ AS OpId";
|
|
strSql += " ,pax.GRUP_ST AS OpStatus";
|
|
strSql += " ,gor.DEPT_CD AS DepId";
|
|
strSql += " ,gor.EMP_CD AS UsrId ";
|
|
strSql += " ,pax.PAX_CD AS PaxId";
|
|
strSql += " ,pax.PAX_CNM AS PaxCn";
|
|
strSql += " ,pax.JOIN_TP AS PaxTp";
|
|
strSql += " ,pax.DORD_FG AS DorpFg";
|
|
strSql += " ,pax.STUS_CD AS PaxStatus";
|
|
strSql += " ,emp.DepCn";
|
|
strSql += " ,emp.UsrCn";
|
|
strSql += " ,(CASE ISNULL(sal.GAREA_LINE,'') WHEN '' THEN 'N000' ELSE sal.GAREA_LINE END ) AS MaxClassId";
|
|
strSql += " ,0";
|
|
strSql += " ,'N'";
|
|
strSql += " ,(CASE ISNULL(arg.ArgumentValue,'') WHEN '' THEN N'請選擇' ELSE arg.ArgumentValue END ) AS MaxClassCn";
|
|
strSql += " ,emp.CusClass";
|
|
strSql += " , 1 AS SouceCount";
|
|
strSql += " , emp.IsFlag";
|
|
strSql += " ,(CASE WHEN emp.IsFlag =0 THEN 0 ELSE (CASE WHEN ISNULL(pax.DORD_FG,0)=1 THEN 1 ELSE 0 END ) END ) AS IsFlagTrue ";
|
|
strSql += " ,emp.OrderByValue AS OrderByValue";
|
|
strSql += " ,IsNull(arg.OrderByValue,0) AS MaxClassOrderByValue";
|
|
strSql += " FROM [trdata].dbo.TRGRUP AS gp";
|
|
strSql += " INNER JOIN [trdata].dbo.TRREC AS gor ON gp.GRUP_CD = gor.GRUP_CD";
|
|
strSql += " INNER JOIN [trdata].dbo.TRGPAX AS pax ON gor.GRUP_CD = pax.GRUP_CD AND gor.OP_SQ = pax.OP_SQ";
|
|
strSql += " INNER JOIN ";
|
|
strSql += " ( ";
|
|
strSql += " SELECT DISTINCT emp1.DEPT_CD ";
|
|
strSql += " ,EMP_CD ";
|
|
strSql += " ,REPLACE(emp1.EMP_CNM,'-','') AS UsrCn ";
|
|
strSql += " ,LEFT(REPLACE(argropu.DepCn,'-','') ,5) AS DepCn";
|
|
strSql += " ,IsNull(argropu.OrderByValue,0) AS OrderByValue";
|
|
strSql += " ,(case when DepCn like '%企業%' then '企客' when DepCn like '%團體%' OR DepCn like '%PAK%' then '同業' else '直客' end ) AS CusClass ";
|
|
strSql += " ,(CASE WHEN ISNULL( emp1.EMP_CD,'')='8888' THEN 0 WHEN ISNULL( emp1.EMP_CD,'')='7777' THEN 0 ELSE 1 END ) AS IsFlag ";
|
|
strSql += " FROM [trdata].dbo.TREMP AS emp1 ";
|
|
strSql += " LEFT JOIN (SELECT DEPT_CD,IsNull(ArgumentValue,DEPT_NM) As DepCn,Isnull(orderbyvalue,Cast (dept_cd as int)+1000) as OrderByValue";
|
|
strSql += " FROM trdata.dbo.TRDept";
|
|
strSql += " Left Join OTB_CMS_Arguments As argropu On DEPT_CD=ArgumentID and argropu.ArgumentClassID='AchiRP01'";
|
|
strSql += " AND argropu.DelStatus='N' AND argropu.Effective='Y' ) AS argropu ON argropu.DEPT_CD=emp1.DEPT_CD";
|
|
strSql += " WHERE ";
|
|
strSql += " ( emp1.out_dt ='' OR emp1.out_dt >=@StartDate)";
|
|
strSql += " AND (REPLACE(emp1.EMP_CNM,'-','') like @UsrId OR @UsrId IS NULL OR @UsrId='')";
|
|
strSql += " AND ( Charindex(emp1.DEPT_CD, @DepId) > 0 OR @DepId IS NULL OR @DepId = '' )";
|
|
strSql += " OR ( emp1.EMP_CD IN ('7777','8888')) ";
|
|
strSql += " ) AS emp ON gor.EMP_CD = emp.EMP_CD ";
|
|
strSql += " INNER JOIN [trdata].dbo.TRGAREA AS gar ON gp.GAREA_CD = gar.GAREA_CD ";
|
|
strSql += " LEFT JOIN RITDB.dbo.Sales_Report_Line AS sal ON gp.GAREA_CD = sal.GAREA_CD";
|
|
strSql += " LEFT JOIN dbo.OTB_CMS_Arguments AS arg ON arg.ArgumentID = sal.GAREA_LINE ";
|
|
strSql += " WHERE ((CHARINDEX(GRUP_TP,@GroupStatus)>0) OR @GroupStatus IS NULL OR @GroupStatus='')";
|
|
strSql += " AND LEAV_DT between @StartDate AND @EndDate";
|
|
strSql += " AND ((CHARINDEX(pax.GRUP_ST,@OpStatus)>0) OR @OpStatus IS NULL OR @OpStatus='')";
|
|
strSql += " AND pax.STUS_CD=1";
|
|
strSql += " AND ((CHARINDEX(pax.JOIN_TP,@PaxTp)>0) OR @PaxTp IS NULL OR @PaxTp='') ";
|
|
strSql += " AND ( arg.ArgumentClassID='GareaLine' AND arg.DelStatus='N' And arg.Effective='Y' And ArgumentID<>'N000' )";
|
|
SqlCommand cmd = new SqlCommand(strSql, cn); //設定SqlCommand所需資訊
|
|
cmd.Parameters.AddWithValue("@StartDate", strStartDate.Trim()); //丟入參數
|
|
cmd.Parameters.AddWithValue("@EndDate", strEndDate.Trim()); //丟入參數
|
|
cmd.Parameters.AddWithValue("@DepId", strDepId.Trim()); //丟入參數
|
|
cmd.Parameters.AddWithValue("@GroupStatus", strGroupStatus.Trim()); //丟入參數
|
|
cmd.Parameters.AddWithValue("@OpStatus", strOpStatus.Trim()); //丟入參數
|
|
cmd.Parameters.AddWithValue("@PaxTp", strPaxTp.Trim()); //丟入參數
|
|
cmd.Parameters.AddWithValue("@UsrId", strUsrId.Trim()); //丟入參數
|
|
cn.Open();
|
|
SqlDataReader dr = cmd.ExecuteReader();
|
|
DataTable tbl = new DataTable();
|
|
tbl.Load(dr);
|
|
string str_json = JsonConvert.SerializeObject(tbl, Formatting.Indented); //把DataTable轉成Json字串
|
|
cn.Close();
|
|
return str_json; //回傳字串
|
|
}
|
|
#endregion
|
|
|
|
#region IsMGroup
|
|
/// <summary>
|
|
/// 判斷是否為母團
|
|
/// </summary>
|
|
[WebMethod]
|
|
public bool IsMGroup(string strGroupCode)
|
|
{
|
|
bool MGroup = false;
|
|
SqlConnection cn = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString());//從Web.config取得伺服器資訊
|
|
string strSql = " SELECT MGrup_Cd FROM TrData.Dbo.TrMGrup WHERE MGrup_Cd=@GrupCD";
|
|
SqlCommand cmd = new SqlCommand(strSql, cn); //設定SqlCommand所需資訊
|
|
cmd.Parameters.AddWithValue("@GrupCD", strGroupCode.Trim()); //丟入參數
|
|
cn.Open();
|
|
SqlDataReader dr = cmd.ExecuteReader();
|
|
DataTable tbl = new DataTable();
|
|
tbl.Load(dr);
|
|
if (tbl.Rows.Count > 0) {
|
|
MGroup = true;
|
|
}
|
|
return MGroup; //回傳字串
|
|
}
|
|
#endregion
|
|
|
|
#region GetIDXECHeadInfo
|
|
/// <summary>
|
|
/// 取回IDXECHead資料
|
|
/// </summary>
|
|
[WebMethod]
|
|
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
|
|
public string GetIDXECHeadInfo(string strProject, string strArea)
|
|
{
|
|
SqlConnection cn = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString());//從Web.config取得伺服器資訊
|
|
string strSql = " SELECT ID,Project,Area,Region,Title,TitleColor,TitlePercent,Statement,StatementColor,URL,URL2,URL3,URL4,URL5";
|
|
strSql += " ,Picture,PictureGUID,PictureALT,WebSite,Status,StartDate,EndDate,OrderByValue,Effective";
|
|
strSql += " ,IsNull(CTR.rowcounts,0) As CtrHits";
|
|
strSql += " ,CreateUser,CreateDate,ModifyUser,ModifyDate";
|
|
strSql += " FROM OTB_IDX_ECShelve As ECShelve";
|
|
strSql += " Left Join (";
|
|
strSql += " select key_sub,count(0) as rowcounts from OTB_CMS_CTR ";
|
|
strSql += " WHERE key_sub In (select ID FROM OTB_IDX_ECShelve WHERE Project=@Project And Area=@Area)";
|
|
strSql += " GROUP BY key_sub";
|
|
strSql += " ) As CTR On ECShelve.ID = CTR.key_sub";
|
|
strSql += " WHERE Project=@Project And Area=@Area";
|
|
strSql += " ORDER BY OrderByValue";
|
|
SqlCommand cmd = new SqlCommand(strSql, cn); //設定SqlCommand所需資訊
|
|
cmd.Parameters.AddWithValue("@Project", strProject.Trim()); //丟入參數
|
|
cmd.Parameters.AddWithValue("@Area", strArea.Trim()); //丟入參數
|
|
cn.Open();
|
|
SqlDataReader dr = cmd.ExecuteReader();
|
|
DataTable tbl = new DataTable();
|
|
tbl.Load(dr);
|
|
string str_json = JsonConvert.SerializeObject(tbl, Formatting.Indented); //把DataTable轉成Json字串
|
|
cn.Close();
|
|
return str_json; //回傳字串
|
|
}
|
|
#endregion
|
|
|
|
#region GetIDXECCommodityInfo
|
|
/// <summary>
|
|
/// 取回IDXECCommodity資料
|
|
/// </summary>
|
|
[WebMethod]
|
|
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
|
|
public string GetIDXECCommodityInfo(string strParentGUID)
|
|
{
|
|
SqlConnection cn = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString());//從Web.config取得伺服器資訊
|
|
string strSql = " SELECT GUID,ParentGUID,Type,PromCd,MGroupCode,MGroupName,MGroupDetail";
|
|
strSql += " ,URL,URL2,URL3,URL4,URL5,Picture,PictureGUID,PictureALT,Title,ShowName,ShowDetail,ShopName";
|
|
strSql += " ,ShopURL,ShopURL2,ShopURL3,ShopURL4,ShopURL5,MinMoney,Unit,RandomFixed";
|
|
strSql += " ,ShowStartDate,ShowEndDate,StartDate,EndDate,WebSite,Commodity.Memo,OrderByValue,Status,Commodity.Effective";
|
|
strSql += " ,IsNull(CTR.rowcounts,0) As CTRHits ";
|
|
strSql += " ,Commodity.CreateUser,Commodity.CreateDate,Commodity.ModifyUser,Commodity.ModifyDate";
|
|
strSql += " ,members.MemberName ";
|
|
strSql += " FROM OTB_IDX_Commodity As Commodity";
|
|
strSql += " Left Join OTB_SYS_Members As Members On Commodity.ModifyUser=members.MemberID";
|
|
strSql += " Left Join (";
|
|
strSql += " select key_middle,count(0) as rowcounts from OTB_CMS_CTR ";
|
|
strSql += " WHERE key_middle In (select [GUID] FROM OTB_IDX_Commodity WHERE ParentGUID=@ParentGUID)";
|
|
strSql += " GROUP BY key_middle";
|
|
strSql += " ) As CTR On Commodity.[GUID] = CTR.key_middle";
|
|
strSql += " WHERE ParentGUID=@ParentGUID";
|
|
strSql += " ORDER BY OrderByValue";
|
|
|
|
SqlCommand cmd = new SqlCommand(strSql, cn); //設定SqlCommand所需資訊
|
|
cmd.Parameters.AddWithValue("@ParentGUID", strParentGUID.Trim()); //丟入參數
|
|
cn.Open();
|
|
SqlDataReader dr = cmd.ExecuteReader();
|
|
DataTable tbl = new DataTable();
|
|
tbl.Load(dr);
|
|
string str_json = JsonConvert.SerializeObject(tbl, Formatting.Indented); //把DataTable轉成Json字串
|
|
cn.Close();
|
|
return str_json; //回傳字串
|
|
}
|
|
#endregion
|
|
|
|
#region ViewCommodityInfo
|
|
/// <summary>
|
|
/// 取回IDXECCommodity資料
|
|
/// </summary>
|
|
[WebMethod]
|
|
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
|
|
public string ViewCommodityInfo(string strWebSite, string[] GroupList, string[] TypeList,string Date)
|
|
{
|
|
SqlConnection cn = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString());//從Web.config取得伺服器資訊
|
|
string strSql = " With FreePrice (Grup_CD,MinAgt_AM,MinCurr_AM)";
|
|
strSql += " As (";
|
|
strSql += " SELECT GRUP_CD,MIN(AGT_AM) As MinAGT_AM,MIN(CURR_AM) As MinCURR_AM ";
|
|
strSql += " FROM trdata.dbo.TRPGSUBD ";
|
|
strSql += " where Grup_Cd In (SELECT Grup_cd FROM OTB_IDX_trgrup where PACK_FG=1 And ORDER_DL>=@Date )";
|
|
strSql += " And BED_TP = 1 And(CURR_AM>0 Or @WebSite='B2B') And(AGT_AM>0 Or @WebSite<>'B2B' ) ";
|
|
strSql += " GROUP BY GRUP_CD";
|
|
strSql += " ),GrupPrice (Grup_CD,MinAgt_AM,MinCurr_AM) ";
|
|
strSql += " As (";
|
|
strSql += " SELECT GRUP_CD,MIN(AGT_AM) As MinAGT_AM,MIN(CURR_AM) As MinCURR_AM ";
|
|
strSql += " FROM trdata.dbo.trsubd ";
|
|
strSql += " WHERE Grup_cd in (SELECT Grup_cd FROM OTB_IDX_trgrup where ORDER_DL>=@Date)";
|
|
strSql += " And join_tp='1' and sub_cd='GO' and bed_tp='1' And(CURR_AM>0 Or @WebSite='B2B') And(AGT_AM>0 Or @WebSite<>'B2B' ) ";
|
|
strSql += " GROUP BY GRUP_CD";
|
|
strSql += " ),MainGrup as(";
|
|
int intLens = GroupList.Length;
|
|
if (intLens > 0)
|
|
{
|
|
for (int intTime = 0; intTime < intLens; intTime++)
|
|
{
|
|
if (intTime != 0)
|
|
{
|
|
strSql += "Union all";
|
|
}
|
|
strSql += " SELECT '" + GroupList[intTime] + "' As MGroupCode,'" + TypeList[intTime] + "' As [Type]";
|
|
}
|
|
}
|
|
else {
|
|
strSql += " SELECT '' As MGroupCode,'' As [Type]";
|
|
}
|
|
strSql += " )";
|
|
strSql += " SELECT ";
|
|
strSql += " MainGrup.MGroupCode,MainGrup.[Type],Case MainGrup.[Type] When 'MGroup' Then GroupMinPrice.MinAGT_AM ";
|
|
strSql += " When 'Group' Then GrupPrice.MinAGT_AM ";
|
|
strSql += " When 'MFree' Then FreeMinPrice.MinAGT_AM ";
|
|
strSql += " Else FreePrice.MinAGT_AM END As MinAGT_AM";
|
|
strSql += " ,Case MainGrup.[Type] When 'MGroup' Then GroupMinPrice.MinCURR_AM ";
|
|
strSql += " When 'Group' Then GrupPrice.MinCURR_AM ";
|
|
strSql += " When 'MFree' Then FreeMinPrice.MinCURR_AM ";
|
|
strSql += " Else FreePrice.MinAGT_AM END As MinCURR_AM";
|
|
strSql += " FROM MainGrup ";
|
|
strSql += " Left Join FreePrice On MainGrup.MGroupCode=FreePrice.GRUP_CD And MainGrup.[Type]='Free'";
|
|
strSql += " Left Join GrupPrice On MainGrup.MGroupCode=GrupPrice.GRUP_CD And MainGrup.[Type]='Group'";
|
|
strSql += " Left Join (";
|
|
strSql += " SELECT Grup.MGrup_Cd,MIN(MinAGT_AM) As MinAGT_AM,MIN(MinCURR_AM) As MinCURR_AM ";
|
|
strSql += " FROM FreePrice As Main";
|
|
strSql += " Left Join (SELECT MGrup_Cd,Grup_Cd FROM Trdata.dbo.OTB_IDX_TRGRUP) As Grup On Grup.GRUP_CD=Main.GRUP_CD";
|
|
strSql += " GROUP BY Grup.MGrup_Cd";
|
|
strSql += " ) As FreeMinPrice On MainGrup.MGroupCode=FreeMinPrice.MGrup_Cd And MainGrup.[Type]='MFree'";
|
|
strSql += " Left Join (";
|
|
strSql += " SELECT Grup.MGrup_Cd,MIN(MinAGT_AM) As MinAGT_AM,MIN(MinCURR_AM) As MinCURR_AM ";
|
|
strSql += " FROM GrupPrice As Main";
|
|
strSql += " Left Join (SELECT MGrup_Cd,Grup_Cd FROM Trdata.dbo.OTB_IDX_TRGRUP) As Grup On Grup.GRUP_CD=Main.GRUP_CD";
|
|
strSql += " GROUP BY Grup.MGrup_Cd";
|
|
strSql += " ) As GroupMinPrice On MainGrup.MGroupCode=GroupMinPrice.MGrup_Cd And MainGrup.[Type]='MGroup'";
|
|
|
|
SqlCommand cmd = new SqlCommand(strSql, cn); //設定SqlCommand所需資訊
|
|
cmd.Parameters.AddWithValue("@WebSite", strWebSite.Trim()); //丟入參數
|
|
cmd.Parameters.AddWithValue("@Date", Date.Trim()); //丟入參數
|
|
cn.Open();
|
|
SqlDataReader dr = cmd.ExecuteReader();
|
|
DataTable tbl = new DataTable();
|
|
tbl.Load(dr);
|
|
string str_json = JsonConvert.SerializeObject(tbl, Formatting.Indented); //把DataTable轉成Json字串
|
|
cn.Close();
|
|
return str_json; //回傳字串
|
|
}
|
|
#endregion
|
|
|
|
#region GetIDXECDeptCity
|
|
/// <summary>
|
|
/// 取回IDXDeptCity資料
|
|
/// </summary>
|
|
[WebMethod]
|
|
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
|
|
public string GetIDXECDeptCity()
|
|
{
|
|
SqlConnection cn = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString());//從Web.config取得伺服器資訊
|
|
string strSql = " SELECT GUID,DeptCode,DeptName,DeptComdition,OrderByValue,Effective";
|
|
strSql += " ,(SELECT COUNT(0) As DeptCount FROM OTB_IDX_SGroupClass WHERE OTB_IDX_DeptCity.DeptCode=DeptCity GROUP BY DeptCity) As DeptCount";
|
|
strSql += " ,CreateUser,CreateDate,ModifyUser,ModifyDate FROM OTB_IDX_DeptCity ORDER BY OrderByValue";
|
|
SqlCommand cmd = new SqlCommand(strSql, cn); //設定SqlCommand所需資訊
|
|
cn.Open();
|
|
SqlDataReader dr = cmd.ExecuteReader();
|
|
DataTable tbl = new DataTable();
|
|
tbl.Load(dr);
|
|
string str_json = JsonConvert.SerializeObject(tbl, Formatting.Indented); //把DataTable轉成Json字串
|
|
cn.Close();
|
|
return str_json; //回傳字串
|
|
}
|
|
#endregion
|
|
|
|
#region GetIDXECSGroupRegion
|
|
/// <summary>
|
|
/// 取回IDXECSGroupRegion資料
|
|
/// </summary>
|
|
[WebMethod]
|
|
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
|
|
public string GetIDXECSGroupRegion(string strAreaCd)
|
|
{
|
|
SqlConnection cn = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString());//從Web.config取得伺服器資訊
|
|
string strSql = " SELECT AreaCD,[GUID],Region,RegionCode,RegionClass,[Type],[Columns],WebSite,OrderByValue,CreateUser,CreateDate,ModifyUser,ModifyDate";
|
|
strSql += " FROM OTB_IDX_SGroupRegion WHERE AreaCD=@AreaCd ORDER BY OrderByValue";
|
|
SqlCommand cmd = new SqlCommand(strSql, cn); //設定SqlCommand所需資訊
|
|
cmd.Parameters.AddWithValue("@AreaCd", strAreaCd.Trim()); //丟入參數
|
|
cn.Open();
|
|
SqlDataReader dr = cmd.ExecuteReader();
|
|
DataTable tbl = new DataTable();
|
|
tbl.Load(dr);
|
|
string str_json = JsonConvert.SerializeObject(tbl, Formatting.Indented); //把DataTable轉成Json字串
|
|
cn.Close();
|
|
return str_json; //回傳字串
|
|
}
|
|
#endregion
|
|
|
|
#region GetIDXECSGroupClass
|
|
/// <summary>
|
|
/// 取回IDXECSGroupClass資料
|
|
/// </summary>
|
|
[WebMethod]
|
|
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
|
|
public string GetIDXECSGroupClass(string strAreaCd)
|
|
{
|
|
SqlConnection cn = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString());//從Web.config取得伺服器資訊
|
|
string strSql = " SELECT ROW_NUMBER() Over(Order By DeptCity.OrderByValue,Region.OrderByValue,Class.OrderByValue)As RowNo";
|
|
strSql += " ,Class.[GUID],ParentGUID,SubClassification,dbo.OFN_IDX_GetSubClassNameList(SubClassification) As SubClassificationName,ShowName,DeptCity,Hide,Class.[Type]";
|
|
strSql += " ,Class.WebSite,Class.OrderByValue,Class.Effective,Class.CreateUser,Class.CreateDate,Class.ModifyUser,Class.ModifyDate";
|
|
strSql += " FROM OTB_IDX_SGroupClass As Class";
|
|
strSql += " Inner Join OTB_IDX_SGroupRegion As Region On Region.[GUID]=Class.[ParentGUID] And Region.AreaCD=@AreaCd";
|
|
strSql += " Inner Join OTB_IDX_DeptCity As DeptCity On DeptCity.DeptCode=Class.DeptCity";
|
|
strSql += " WHERE DeptCity <>'ALL' ";
|
|
strSql += " ORDER BY DeptCity.OrderByValue,Region.OrderByValue,Class.OrderByValue";
|
|
SqlCommand cmd = new SqlCommand(strSql, cn); //設定SqlCommand所需資訊
|
|
cmd.Parameters.AddWithValue("@AreaCd", strAreaCd.Trim()); //丟入參數
|
|
cn.Open();
|
|
SqlDataReader dr = cmd.ExecuteReader();
|
|
DataTable tbl = new DataTable();
|
|
tbl.Load(dr);
|
|
string str_json = JsonConvert.SerializeObject(tbl, Formatting.Indented); //把DataTable轉成Json字串
|
|
cn.Close();
|
|
return str_json; //回傳字串
|
|
}
|
|
#endregion
|
|
|
|
#region GetClassifications
|
|
/// <summary>
|
|
/// 取回GetClassifications資料
|
|
/// </summary>
|
|
[WebMethod]
|
|
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
|
|
public string GetClassifications()
|
|
{
|
|
SqlConnection cn = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString());//從Web.config取得伺服器資訊
|
|
string strSql = " SELECT ClassCode As '大分類代碼',ClassName As '大分類',SubClassCode As '小分類代碼',SubClassName As '小分類' ";
|
|
strSql += " FROM ";
|
|
strSql += " (SELECT DATA_VALUE As ClassCode,CHIN_WD As ClassName FROM Trdata.dbo.TRWORD WHERE CLS_CD='TVL_AREA') As Main";
|
|
strSql += " Left Join ";
|
|
strSql += " (SELECT DATA_VALUE As SubClassCode,CHIN_WD As SubClassName,CLS_CD FROM Trdata.dbo.TRWORD) As Sub On Main.ClassCode=Sub.CLS_CD";
|
|
strSql += " ORDER BY ClassCode,SubClassCode";
|
|
SqlCommand cmd = new SqlCommand(strSql, cn); //設定SqlCommand所需資訊
|
|
cn.Open();
|
|
SqlDataReader dr = cmd.ExecuteReader();
|
|
DataTable tbl = new DataTable();
|
|
tbl.Load(dr);
|
|
string str_json = JsonConvert.SerializeObject(tbl, Formatting.Indented); //把DataTable轉成Json字串
|
|
cn.Close();
|
|
return str_json; //回傳字串
|
|
}
|
|
#endregion
|
|
|
|
[WebMethod]
|
|
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
|
|
public string GetMaxNumberByType(string strTitle, string strType, string Flag, string strModifyUser, int intLen)
|
|
{
|
|
string strReturn;
|
|
OT.BLL.CommonClass o_CommonClass_BLL = new OT.BLL.CommonClass();
|
|
strReturn = "{ \"MaxNumber\":\"" + strTitle + o_CommonClass_BLL.GetMaxNumberByType(strType, Flag, strModifyUser, intLen) + "\" }";
|
|
|
|
return strReturn;
|
|
}
|
|
|
|
#region ChangeEmp
|
|
/// <summary>
|
|
/// 更改旅客業務
|
|
/// </summary>
|
|
[WebMethod]
|
|
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
|
|
public string ChangeEmp(string strPaxCDList,string strEmpCD)
|
|
{
|
|
SqlConnection cn = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString());//從Web.config取得伺服器資訊
|
|
string strSql = " UPDATE TRPAX ";
|
|
strSql += " SET EMP_CD=@EmpCD ";
|
|
strSql += " where PAX_CD in (" + strPaxCDList + ")";
|
|
strSql += " Select @@ROWCOUNT As ChangeCount";
|
|
SqlCommand cmd = new SqlCommand(strSql, cn); //設定SqlCommand所需資訊
|
|
cmd.Parameters.AddWithValue("@EmpCD", strEmpCD.Trim()); //丟入參數
|
|
cn.Open();
|
|
SqlDataReader dr = cmd.ExecuteReader();
|
|
DataTable tbl = new DataTable();
|
|
tbl.Load(dr);
|
|
string str_json = JsonConvert.SerializeObject(tbl, Formatting.Indented); //把DataTable轉成Json字串
|
|
cn.Close();
|
|
return str_json; //回傳字串
|
|
}
|
|
#endregion
|
|
|
|
#region ChangeOMan
|
|
/// <summary>
|
|
/// 更改旅客的相關業務
|
|
/// </summary>
|
|
[WebMethod]
|
|
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
|
|
public string ChangeOMan(string strPaxCDList, string strEmpCD)
|
|
{
|
|
SqlConnection cn = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString());//從Web.config取得伺服器資訊
|
|
string strSql = " UPDATE TRPAX ";
|
|
strSql += " SET O_MAN=@EmpCD ";
|
|
strSql += " where PAX_CD in (" + strPaxCDList + ")";
|
|
strSql += " Select @@ROWCOUNT As ChangeCount";
|
|
SqlCommand cmd = new SqlCommand(strSql, cn); //設定SqlCommand所需資訊
|
|
cmd.Parameters.AddWithValue("@EmpCD", strEmpCD.Trim()); //丟入參數
|
|
cn.Open();
|
|
SqlDataReader dr = cmd.ExecuteReader();
|
|
DataTable tbl = new DataTable();
|
|
tbl.Load(dr);
|
|
string str_json = JsonConvert.SerializeObject(tbl, Formatting.Indented); //把DataTable轉成Json字串
|
|
cn.Close();
|
|
return str_json; //回傳字串
|
|
}
|
|
#endregion
|
|
|
|
#region GetEmpInfo
|
|
/// <summary>
|
|
/// 取回GetEmpInfo資料
|
|
/// </summary>
|
|
[WebMethod]
|
|
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
|
|
public string GetEmpInfo()
|
|
{
|
|
SqlConnection cn = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString());//從Web.config取得伺服器資訊
|
|
string strSql = " SELECT ";
|
|
strSql += " MemberID,MemberName,RuleList,RuleNmList";
|
|
strSql += " FROM ";
|
|
strSql += " (";
|
|
strSql += " SELECT Emp_Cd As MemberID";
|
|
strSql += " ,Emp_Cnm As MemberName";
|
|
strSql += " ,Dept_Cd As RuleList";
|
|
strSql += " FROM Trdata.Dbo.TrEmp ";
|
|
strSql += " ) As Emp";
|
|
strSql += " Inner Join ";
|
|
strSql += " (";
|
|
strSql += " SELECT Dept_Cd,Dept_Nm As RuleNmList FROM TrData.Dbo.TrDept";
|
|
strSql += " ) As Dept On Dept_Cd=RuleList";
|
|
SqlCommand cmd = new SqlCommand(strSql, cn); //設定SqlCommand所需資訊
|
|
cn.Open();
|
|
SqlDataReader dr = cmd.ExecuteReader();
|
|
DataTable tbl = new DataTable();
|
|
tbl.Load(dr);
|
|
string str_json = JsonConvert.SerializeObject(tbl, Formatting.Indented); //把DataTable轉成Json字串
|
|
cn.Close();
|
|
return str_json; //回傳字串
|
|
}
|
|
#endregion
|
|
|
|
}
|
|
}
|