using EasyBL.WebApi.Message;
using Entity.Sugar;
using Entity.ViewModels;
using SqlSugar;
using SqlSugar.Base;
using System;
using System.Collections.Generic;
using System.Data;
namespace EasyBL.WEBAPP.OPM
{
public class Exhibition_QryService : ServiceBase
{
#region 展覽管理分頁查詢
///
/// 展覽管理分頁查詢
///
///
///
public ResponseMessage QueryPage(RequestMessage i_crm)
{
ResponseMessage rm = null;
string sMsg = null;
var db = SugarBase.GetIntance();
try
{
do
{
var pml = new PageModel
{
PageIndex = _fetchInt(i_crm, @"pageIndex"),
PageSize = _fetchInt(i_crm, @"pageSize")
};
var iPageCount = 0;
var sSortField = _fetchString(i_crm, @"sortField");
var sSortOrder = _fetchString(i_crm, @"sortOrder");
var sExhibitionCode = _fetchString(i_crm, @"ExhibitionCode");
var sExhibitioname = _fetchString(i_crm, @"Exhibitioname");
//var sExhibitionDateStart = _fetchString(i_crm, @"ExhibitionDateStart");
//var sExhibitionDateEnd = _fetchString(i_crm, @"ExhibitionDateEnd");
//var sCreateDateStart = _fetchString(i_crm, @"CreateDateStart");
//var sCreateDateEnd = _fetchString(i_crm, @"CreateDateEnd");
//var sModifyDateStart = _fetchString(i_crm, @"ModifyDateStart");
//var sModifyDateEnd = _fetchString(i_crm, @"ModifyDateEnd");
//var sIsShowWebSite = _fetchString(i_crm, @"IsShowWebSite");
var sCreateUser = _fetchString(i_crm, @"CreateUser");
//var sArea = _fetchString(i_crm, @"Area");
var sState = _fetchString(i_crm, @"State");
//var sExhibitionAddress = _fetchString(i_crm, @"ExhibitionAddress");
var sEffective = _fetchString(i_crm, @"Effective");
var sIsTransfer = _fetchString(i_crm, @"IsTransfer");
var sIsDeal = _fetchString(i_crm, @"IsDeal");
var bExcel = _fetchBool(i_crm, @"Excel");
var sExcelType = _fetchString(i_crm, @"ExcelType");
//var rExhibitionDateStart = new DateTime();
//var rExhibitionDateEnd = new DateTime();
//var rCreateDateStart = new DateTime();
//var rCreateDateEnd = new DateTime();
//var rModifyDateStart = new DateTime();
//var rModifyDateEnd = new DateTime();
//if (!string.IsNullOrEmpty(sExhibitionDateStart))
//{
// rExhibitionDateStart = SqlFunc.ToDate(sExhibitionDateStart);
//}
//if (!string.IsNullOrEmpty(sExhibitionDateEnd))
//{
// rExhibitionDateEnd = SqlFunc.ToDate(sExhibitionDateEnd).AddDays(1);
//}
//if (!string.IsNullOrEmpty(sCreateDateStart))
//{
// rCreateDateStart = SqlFunc.ToDate(sCreateDateStart);
//}
//if (!string.IsNullOrEmpty(sCreateDateEnd))
//{
// rCreateDateEnd = SqlFunc.ToDate(sCreateDateEnd).AddDays(1);
//}
//if (!string.IsNullOrEmpty(sModifyDateStart))
//{
// rModifyDateStart = SqlFunc.ToDate(sModifyDateStart);
//}
//if (!string.IsNullOrEmpty(sModifyDateEnd))
//{
// rModifyDateEnd = SqlFunc.ToDate(sModifyDateEnd).AddDays(1);
//}
var sIndustry = _fetchString(i_crm, @"Industry");
var sListSource = _fetchString(i_crm, @"ListSource");
var sResponsiblePerson = _fetchString(i_crm, @"ResponsiblePerson");
var sDateType = _fetchString(i_crm, @"DateType");
var sDateStart = _fetchString(i_crm, @"DateStart");
var sDateEnd = _fetchString(i_crm, @"DateEnd");
var rDateStart = new DateTime();
var rDateEnd = new DateTime();
if (!string.IsNullOrEmpty(sDateStart))
{
rDateStart = SqlFunc.ToDate(sDateStart);
}
if (!string.IsNullOrEmpty(sDateEnd))
{
rDateEnd = SqlFunc.ToDate(sDateEnd).AddDays(1);
}
pml.DataList = db.Queryable
((t1, t2, t3, t4, t5) =>
new object[] {
JoinType.Left, t1.OrgID == t2.OrgID && t1.CreateUser == t2.MemberID,
JoinType.Left, t1.OrgID == t3.OrgID && t1.Area == t3.ArgumentID && t3.ArgumentClassID == "Area",
JoinType.Left, t1.OrgID == t4.OrgID && t1.State == t4.ArgumentID && t4.ArgumentClassID == "Area",
JoinType.Left, t1.OrgID == t5.OrgID && t1.ExhibitionAddress == t5.ArgumentID && t5.ArgumentClassID == "EHalls"
}
)
.Where((t1, t2, t3, t4, t5) => t1.ExhibitionCode.Contains(sExhibitionCode) && sEffective.Contains(t1.Effective) && sIsTransfer.Contains(t1.IsTransfer) && (t1.Exhibitioname_EN.Contains(sExhibitioname) || t1.Exhibitioname_TW.Contains(sExhibitioname) || t1.Exhibitioname_CN.Contains(sExhibitioname) || t1.ExhibitioShotName_TW.Contains(sExhibitioname) || t1.ExhibitioShotName_CN.Contains(sExhibitioname) || t1.ExhibitioShotName_EN.Contains(sExhibitioname)))
//.WhereIF((i_crm.ORIGID == "SG" || i_crm.ORIGID == "SE"), (t1, t2, t3, t4, t5) => t1.OrgID == i_crm.ORIGID)
.WhereIF((i_crm.ORIGID != "TE" && i_crm.ORIGID != "TG"), (t1, t2, t3, t4, t5) => t1.OrgID == i_crm.ORIGID)
.WhereIF((i_crm.ORIGID == "TE" || i_crm.ORIGID == "TG"), (t1, t2, t3, t4, t5) => t1.OrgID == "TE" || t1.OrgID == "TG")
//.WhereIF(!string.IsNullOrEmpty(sExhibitionDateStart), (t1, t2, t3, t4, t5) => t1.ExhibitionDateStart >= rExhibitionDateStart.Date)
//.WhereIF(!string.IsNullOrEmpty(sExhibitionDateEnd), (t1, t2, t3, t4, t5) => t1.ExhibitionDateEnd <= rExhibitionDateEnd.Date)
//.WhereIF(!string.IsNullOrEmpty(sCreateDateStart), (t1, t2, t3, t4, t5) => t1.CreateDate >= rCreateDateStart.Date)
//.WhereIF(!string.IsNullOrEmpty(sCreateDateEnd), (t1, t2, t3, t4, t5) => t1.CreateDate <= rCreateDateEnd.Date)
//.WhereIF(!string.IsNullOrEmpty(sModifyDateStart), (t1, t2, t3, t4, t5) => t1.ModifyDate >= rModifyDateStart.Date)
//.WhereIF(!string.IsNullOrEmpty(sModifyDateEnd), (t1, t2, t3, t4, t5) => t1.ModifyDate <= rModifyDateEnd.Date)
.WhereIF(!string.IsNullOrEmpty(sDateStart) && sDateType == "1", (t1, t2) => t1.ExhibitionDateStart >= rDateStart.Date)
.WhereIF(!string.IsNullOrEmpty(sDateEnd) && sDateType == "1", (t1, t2) => t1.ExhibitionDateEnd <= rDateEnd.Date)
.WhereIF(!string.IsNullOrEmpty(sDateStart) && sDateType == "2", (t1, t2) => t1.CreateDate >= rDateStart.Date)
.WhereIF(!string.IsNullOrEmpty(sDateEnd) && sDateType == "2", (t1, t2) => t1.CreateDate <= rDateEnd.Date)
.WhereIF(!string.IsNullOrEmpty(sDateStart) && sDateType == "3", (t1, t2) => t1.ModifyDate >= rDateStart.Date)
.WhereIF(!string.IsNullOrEmpty(sDateEnd) && sDateType == "3", (t1, t2) => t1.ModifyDate <= rDateEnd.Date)
//.WhereIF(!string.IsNullOrEmpty(sArea), (t1, t2, t3, t4, t5) => t1.Area == sArea)
.WhereIF(!string.IsNullOrEmpty(sIndustry), (t1, t2, t3, t4, t5) => t1.Industry == sIndustry)
.WhereIF(!string.IsNullOrEmpty(sState), (t1, t2, t3, t4, t5) => t1.State == sState)
//.WhereIF(!string.IsNullOrEmpty(sExhibitionAddress), (t1, t2, t3, t4, t5) => t1.ExhibitionAddress == sExhibitionAddress)
.WhereIF(!string.IsNullOrEmpty(sCreateUser), (t1, t2, t3, t4, t5) => t1.CreateUser == sCreateUser)
.WhereIF(!string.IsNullOrEmpty(sResponsiblePerson), (t1, t2, t3, t4, t5) => t1.ResponsiblePerson == sResponsiblePerson)
.WhereIF(sIsDeal == "Y", t1 =>
(SqlFunc.Subqueryable().Where(p1 => p1.ExhibitionNO == t1.SN.ToString()).Count() > 0) ||
(SqlFunc.Subqueryable().Where(p2 => p2.ExhibitionNO == t1.SN.ToString()).Count() > 0) ||
(SqlFunc.Subqueryable().Where(p3 => p3.ExhibitionNO == t1.SN.ToString()).Count() > 0) ||
(SqlFunc.Subqueryable().Where(p4 => p4.ExhibitionNO == t1.SN.ToString()).Count() > 0)
)
.WhereIF(sIsDeal == "N", t1 =>
(SqlFunc.Subqueryable().Where(p5 => p5.ExhibitionNO == t1.SN.ToString()).Count() == 0) &&
(SqlFunc.Subqueryable().Where(p6 => p6.ExhibitionNO == t1.SN.ToString()).Count() == 0) &&
(SqlFunc.Subqueryable().Where(p7 => p7.ExhibitionNO == t1.SN.ToString()).Count() == 0) &&
(SqlFunc.Subqueryable().Where(p8 => p8.ExhibitionNO == t1.SN.ToString()).Count() == 0)
)
.WhereIF(!string.IsNullOrEmpty(sListSource), t1 =>
(SqlFunc.Subqueryable().Where(p9 => p9.ExhibitionNO == t1.SN.ToString() && p9.ListSource == sListSource).Count() > 0)
)
.Select((t1, t2, t3, t4, t5) => new View_OPM_Exhibition
{
SN = SqlFunc.GetSelfAndAutoFill(t1.SN),
CreateUserName = t2.MemberName,
AreaName = t3.ArgumentValue,
Area_CN = t3.ArgumentValue_CN,
Area_EN = t3.ArgumentValue_EN,
StateName = t4.ArgumentValue,
State_CN = t4.ArgumentValue_CN,
State_EN = t4.ArgumentValue_EN,
ExhibitionAddressName = t5.ArgumentValue,
ExhibitionAddress_CN = t5.ArgumentValue_CN,
ExhibitionAddress_EN = t5.ArgumentValue_EN,
ExhibitioFullName = SqlFunc.IIF(SqlFunc.HasValue(t1.ExhibitioShotName_TW), "(" + SqlFunc.IsNull(t1.ExhibitioShotName_TW, "") + ")", "") + t1.Exhibitioname_TW,
Exhibitioname = t1.Exhibitioname_CN + t1.Exhibitioname_EN,
//IsDeal = SqlFunc.IIF(SqlFunc.Subqueryable().Where(p1 => p1.ExhibitionNO == t1.SN.ToString()).Count() > 0, "Y", "N")
IsDeal = SqlFunc.MappingColumn(t1.OrgID, "dbo.[OFN_OPM_CheckExhibitionDeal](t1.SN)"),
ResponsiblePersonName = SqlFunc.MappingColumn(t1.OrgID, "dbo.[OFN_SYS_MemberNameByMemberIDwithoutOrgID](t1.ResponsiblePerson)")
//IsDeal = ((SqlFunc.Subqueryable().Where(p1 => p1.ExhibitionNO == t1.SN.ToString()).Count() > 0) ||
//(SqlFunc.Subqueryable().Where(p2 => p2.ExhibitionNO == t1.SN.ToString()).Count() > 0) ||
//(SqlFunc.Subqueryable().Where(p3 => p3.ExhibitionNO == t1.SN.ToString()).Count() > 0) ||
//(SqlFunc.Subqueryable().Where(p4 => p4.ExhibitionNO == t1.SN.ToString()).Count() > 0) ? "Y" : "N")
})
.MergeTable()
.OrderBy(sSortField, sSortOrder)
.ToPageList(pml.PageIndex, bExcel ? 100000 : pml.PageSize, ref iPageCount);
pml.Total = iPageCount;
rm = new SuccessResponseMessage(null, i_crm);
if (bExcel)
{
var sFileName = "";
var oHeader = new Dictionary();
var listMerge = new List>();
var dicAlain = new Dictionary();
var dt_new = new DataTable();
var saCustomers1 = pml.DataList;
var saExhibition = pml.DataList as List;
switch (sExcelType)
{
case "Exhibition_BasicInformation":
{
sFileName = "展覽管理基本資料";
oHeader = new Dictionary
{
{ "RowIndex", "項次" },
{ "ExhibitionCode", "專案代號" },
{ "ExhibitioShotName_TW", "活動/展覽簡稱" },
{ "Exhibitioname_TW", "活動/展覽名稱" },
{ "Exhibitioname_EN", "活動/展覽英文展名" },
{ "ExhibitionDateStart", "展覽期間" },
{ "CreateUserName", "創建人" },
{ "CreateDate", "創建時間" }
};
dt_new.Columns.Add("RowIndex");
dt_new.Columns.Add("ExhibitionCode");
dt_new.Columns.Add("ExhibitioShotName_TW");
dt_new.Columns.Add("Exhibitioname_TW");
dt_new.Columns.Add("Exhibitioname_EN");
dt_new.Columns.Add("ExhibitionDateStart");
dt_new.Columns.Add("CreateUserName");
dt_new.Columns.Add("CreateDate");
foreach (var exhibition in saExhibition)
{
var row_new = dt_new.NewRow();
var sStart = "";
var sEnd = "";
if (exhibition.ExhibitionDateStart != null)
{
sStart = Convert.ToDateTime(exhibition.ExhibitionDateStart).ToString("yyyy/MM/dd");
}
if (exhibition.ExhibitionDateEnd != null)
{
sEnd = Convert.ToDateTime(exhibition.ExhibitionDateEnd).ToString("yyyy/MM/dd");
}
if (exhibition.CreateDate != null)
{
row_new["CreateDate"] = Convert.ToDateTime(exhibition.CreateDate).ToString("yyyy/MM/dd HH:mm");
}
else
{
row_new["CreateDate"] = @"";
}
row_new["RowIndex"] = exhibition.RowIndex;
row_new["ExhibitionCode"] = exhibition.ExhibitionCode;
row_new["ExhibitioShotName_TW"] = exhibition.ExhibitioShotName_TW;
row_new["Exhibitioname_TW"] = exhibition.Exhibitioname_TW;
row_new["Exhibitioname_EN"] = exhibition.Exhibitioname_EN;
row_new["CreateUserName"] = exhibition.CreateUserName;
row_new["ExhibitionDateStart"] = sStart + "~" + sEnd;
dt_new.Rows.Add(row_new);
}
dicAlain = ExcelService.GetExportAlain(oHeader, "ExhibitionCode,ExhibitionDateStart,IsShowWebSite,CreateUserName,CreateDate");
}
break;
case "Exhibition_WenzhongPrjFile":
{
sFileName = "文中專案檔";
oHeader = new Dictionary
{
{ "RowIndex", "項次" },
{ "ExhibitionCode", "專案代號" },
{ "ExhibitioShotName_TW", "專案名稱" },
{ "CusField1", "專案負責人" },
{ "CusField2", "失效日期" }
};
dt_new.Columns.Add("RowIndex");
dt_new.Columns.Add("ExhibitionCode");
dt_new.Columns.Add("ExhibitioShotName_TW");
dt_new.Columns.Add("CusField1");
dt_new.Columns.Add("CusField2");
foreach (var exhibition in saExhibition)
{
var row_new = dt_new.NewRow();
row_new["RowIndex"] = exhibition.RowIndex;
row_new["ExhibitionCode"] = exhibition.ExhibitionCode;
row_new["ExhibitioShotName_TW"] = exhibition.ExhibitioShotName_TW;
row_new["CusField1"] = exhibition.CreateUser.Split('.')[0];
row_new["CusField2"] = "";
dt_new.Rows.Add(row_new);
}
dicAlain = ExcelService.GetExportAlain(oHeader, new string[] { "ExhibitionCode", "CusField1", "CusField2" });
}
break;
default:
{
break;
}
}
var bOk = new ExcelService().CreateExcelByTb(dt_new, out string sPath, oHeader, dicAlain, listMerge, sFileName);
rm.DATA.Add(BLWording.REL, sPath);
}
else
{
rm.DATA.Add(BLWording.REL, pml);
}
} while (false);
}
catch (Exception ex)
{
sMsg = Util.GetLastExceptionMsg(ex);
LogAndSendEmail(sMsg + "Params:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, "EasyBL.WEBAPP.OPM.Exhibition_QryService", "", "QueryPage(展覽管理分頁查詢)", "", "", "");
}
finally
{
if (null != sMsg)
{
rm = new ErrorResponseMessage(sMsg, i_crm);
}
}
return rm;
}
#endregion 展覽管理分頁查詢
#region 展覽管理單筆查詢
///
/// 展覽管理單筆查詢
///
///
///
public ResponseMessage QueryOne(RequestMessage i_crm)
{
ResponseMessage rm = null;
string sMsg = null;
var db = SugarBase.GetIntance();
try
{
do
{
var iId = _fetchInt(i_crm, @"Guid");
var oExportExhibition = db.Queryable
((t1, t2, t3, t4, t5) =>
new object[] {
JoinType.Left, t1.OrgID == t2.OrgID && t1.CreateUser == t2.MemberID,
JoinType.Left, t1.OrgID == t3.OrgID && t1.Area == t3.ArgumentID && t3.ArgumentClassID == "Area",
JoinType.Left, t1.OrgID == t4.OrgID && t1.State == t4.ArgumentID && t4.ArgumentClassID == "Area",
JoinType.Left, t1.OrgID == t5.OrgID && t1.ExhibitionAddress == t5.ArgumentID && t5.ArgumentClassID == "EHalls"
}
)
.Where((t1, t2, t3) => t1.SN == iId)
.Select((t1, t2, t3, t4, t5) => new View_OPM_Exhibition
{
SN = SqlFunc.GetSelfAndAutoFill(t1.SN),
CreateUserName = t2.MemberName,
AreaName = t3.ArgumentValue,
Area_CN = t3.ArgumentValue_CN,
Area_EN = t3.ArgumentValue_EN,
StateName = t4.ArgumentValue,
State_CN = t4.ArgumentValue_CN,
State_EN = t4.ArgumentValue_EN,
ExhibitionAddressName = t5.ArgumentValue,
ExhibitionAddress_CN = t5.ArgumentValue_CN,
ExhibitionAddress_EN = t5.ArgumentValue_EN,
ExhibitioFullName = SqlFunc.IIF(SqlFunc.HasValue(t1.ExhibitioShotName_TW), "(" + SqlFunc.IsNull(t1.ExhibitioShotName_TW, "") + ")", "") + t1.Exhibitioname_TW,
Exhibitioname = t1.Exhibitioname_CN + t1.Exhibitioname_EN
}).Single();
//,
//ListSource = SqlFunc.MappingColumn(t1.ExhibitionCode, "(select distinct ListSource + ',' from OTB_OPM_ExhibitionCustomers mr where mr.ExhibitionNO = t1.SN for xml path(''))")
rm = new SuccessResponseMessage(null, i_crm);
rm.DATA.Add(BLWording.REL, oExportExhibition);
} while (false);
}
catch (Exception ex)
{
sMsg = Util.GetLastExceptionMsg(ex);
LogAndSendEmail(sMsg + "Params:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, "EasyBL.WEBAPP.OPM.Exhibition_QryService", "", "QueryOne(展覽管理單筆查詢)", "", "", "");
}
finally
{
if (null != sMsg)
{
rm = new ErrorResponseMessage(sMsg, i_crm);
}
}
return rm;
}
#endregion 展覽管理單筆查詢
}
}