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.
947 lines
33 KiB
947 lines
33 KiB
using EasyBL.WebApi.Message;
|
|
using EasyBL.WEBAPP.ShowEasy;
|
|
using EasyBL.WEBAPP.WSM;
|
|
using Entity.ShowEasyDtos;
|
|
using Entity.Sugar;
|
|
using Entity.ViewModels;
|
|
using Newtonsoft.Json;
|
|
using SqlSugar;
|
|
using SqlSugar.Base;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Globalization;
|
|
using System.Linq;
|
|
|
|
namespace EasyBL.WEBAPP.SYS
|
|
{
|
|
|
|
public class BookingMaintain_QryService : ServiceBase
|
|
{
|
|
|
|
#region 預訂管理(分頁查詢)
|
|
|
|
/// <summary>
|
|
/// 預訂管理(分頁查詢)
|
|
/// </summary>
|
|
/// <param name="i_crm"></param>
|
|
/// <returns></returns>
|
|
/// Origtek framwork API
|
|
public ResponseMessage QueryPage(RequestMessage i_crm)
|
|
{
|
|
ResponseMessage rm = null;
|
|
string sMsg = null;
|
|
var db = SugarBase.DB;
|
|
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 sLanguageID = _fetchString(i_crm, @"LanguageID");
|
|
|
|
if (string.IsNullOrEmpty(sLanguageID)) {
|
|
sLanguageID = WebAppGlobalConstWord.DEFAULT_LANGUAGE;
|
|
}
|
|
|
|
var sBookingNo = _fetchString(i_crm, @"BookingNo");
|
|
var sCustomer = _fetchString(i_crm, @"Customer");
|
|
|
|
var sBookingStatus = _fetchString(i_crm, @"BookingStatus");
|
|
var sSupplierStatus = _fetchString(i_crm, @"SupplierStatus");
|
|
var sPaymentStatus = _fetchString(i_crm, @"PaymentStatus");
|
|
|
|
var sBookingStartDate = _fetchString(i_crm, @"BookingStartDate");
|
|
var dateBookingStartDate = DateTime.Now.AddMonths(-1);
|
|
|
|
if (!string.IsNullOrEmpty(sBookingStartDate))
|
|
{
|
|
|
|
dateBookingStartDate = DateTime.ParseExact(sBookingStartDate, "yyyy-MM-dd", DateTimeFormatInfo.InvariantInfo);
|
|
|
|
}
|
|
|
|
var sBookingEndDate = _fetchString(i_crm, @"BookingEndDate");
|
|
var dateBookingEndDate = DateTime.Now;
|
|
|
|
if (!string.IsNullOrEmpty(sBookingEndDate))
|
|
{
|
|
|
|
dateBookingEndDate = DateTime.ParseExact(sBookingEndDate, "yyyy-MM-dd", DateTimeFormatInfo.InvariantInfo);
|
|
|
|
}
|
|
|
|
if (dateBookingStartDate > dateBookingEndDate)
|
|
{
|
|
|
|
var dateTemp = dateBookingEndDate;
|
|
dateBookingEndDate = dateBookingStartDate;
|
|
dateBookingStartDate = dateTemp;
|
|
|
|
}
|
|
|
|
var sServiceStartDate = _fetchString(i_crm, @"ServiceStartDate");
|
|
var dateServiceStartDate = DateTime.Now.AddMonths(-1);
|
|
|
|
if (!string.IsNullOrEmpty(sServiceStartDate))
|
|
{
|
|
|
|
dateServiceStartDate = DateTime.ParseExact(sServiceStartDate, "yyyy-MM-dd", DateTimeFormatInfo.InvariantInfo);
|
|
|
|
}
|
|
|
|
var sServiceEndDate = _fetchString(i_crm, @"ServiceEndDate");
|
|
var dateServiceEndDate = DateTime.Now;
|
|
|
|
if (!string.IsNullOrEmpty(sServiceEndDate))
|
|
{
|
|
|
|
dateServiceEndDate = DateTime.ParseExact(sServiceEndDate, "yyyy-MM-dd", DateTimeFormatInfo.InvariantInfo);
|
|
|
|
}
|
|
|
|
if (dateServiceStartDate > dateServiceEndDate)
|
|
{
|
|
|
|
var dateTemp = dateServiceEndDate;
|
|
dateServiceEndDate = dateServiceStartDate;
|
|
dateServiceStartDate = dateTemp;
|
|
|
|
}
|
|
|
|
var sEffective = _fetchString(i_crm, @"Effective");
|
|
var bExcel = _fetchBool(i_crm, @"Excel");
|
|
|
|
var BookingDic = FindAllDetailByIDsAsDictionary(sLanguageID, "", "", "");
|
|
|
|
var BookingList = db.Queryable<SETB_SAL_Booking, SETB_CMS_Member, SETB_PDT_ServiceBaseInfo>((t1, t2, t3) => new object[] {
|
|
|
|
JoinType.Left, t1.MemberID == t2.MemberID,
|
|
JoinType.Left, t1.ServiceID == t3.ServiceID,
|
|
|
|
})
|
|
|
|
|
|
.Where(t1 => t1.OrgID == i_crm.ORIGID && t1.DelStatus != "Y")
|
|
.WhereIF(!string.IsNullOrEmpty(sBookingNo), t1 => t1.BookingNo.Contains(sBookingNo))
|
|
.WhereIF(!string.IsNullOrEmpty(sBookingStatus), t1 => t1.BookingStatus == sBookingStatus)
|
|
.WhereIF(!string.IsNullOrEmpty(sSupplierStatus), t1 => t1.SupplierStatus == sSupplierStatus)
|
|
.WhereIF(!string.IsNullOrEmpty(sPaymentStatus), t1 => t1.PaymentStatus == sPaymentStatus)
|
|
.Where(t1 => SqlFunc.Between(t1.BookingDate, dateBookingStartDate, dateBookingEndDate))
|
|
.Where(t1 => SqlFunc.Between(t1.ServiceStartDate, dateServiceStartDate, dateServiceEndDate))
|
|
|
|
.WhereIF(!string.IsNullOrEmpty(sCustomer), (t1, t2) => t2.FirstName.Contains(sCustomer) || t2.LastName.Contains(sCustomer))
|
|
|
|
.Where(t1 => sEffective.Contains(t1.Effective))
|
|
|
|
.Select((t1, t2, t3) => new View_SAL_Booking
|
|
{
|
|
|
|
BookingID = SqlFunc.GetSelfAndAutoFill(t1.BookingID),
|
|
|
|
OrderCount = SqlFunc.Subqueryable<View_SAL_Booking>()
|
|
|
|
.Where(p => p.OrgID == t1.OrgID && p.DelStatus == "N")
|
|
.Count()
|
|
|
|
})
|
|
|
|
.MergeTable()
|
|
|
|
.OrderBy(sSortField, sSortOrder)
|
|
.ToPageList(pml.PageIndex, bExcel ? 100000 : pml.PageSize, ref iPageCount);
|
|
|
|
pml.Total = iPageCount;
|
|
|
|
var rsBookingDic = new Dictionary<string, View_SAL_Booking>();
|
|
|
|
foreach (var Booking in BookingList) {
|
|
|
|
if (BookingDic.ContainsKey(Booking.BookingID)) {
|
|
rsBookingDic[Booking.BookingID] = BookingDic[Booking.BookingID];
|
|
}
|
|
|
|
}
|
|
|
|
pml.DataList = rsBookingDic.Values.ToList();
|
|
|
|
rm = new SuccessResponseMessage(null, i_crm);
|
|
|
|
if (bExcel)
|
|
{
|
|
const string sFileName = "預訂管理";
|
|
var oHeader = new Dictionary<string, string>
|
|
{
|
|
{ "RowIndex", "項次" },
|
|
{ "BookingID","預訂編號" },
|
|
{ "BookingNo","預訂號碼" },
|
|
{ "Effective", "狀態(Y:有效;N:無效)" },
|
|
{ "OrderByValue", "排序" }
|
|
|
|
};
|
|
|
|
var dicAlain = ExcelService.GetExportAlain(oHeader, "Effective");
|
|
var saBooking = pml.DataList as List<View_SAL_Booking>;
|
|
|
|
|
|
var bOk = new ExcelService().CreateExcelByList(saBooking, out string sPath, oHeader, dicAlain, 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, nameof(BookingMaintain_QryService), "", "QueryPage 預訂管理(分頁查詢)", "", "", "");
|
|
System.Diagnostics.Debug.WriteLine("預訂管理 sMsg" + ": " + sMsg);
|
|
|
|
}
|
|
|
|
finally
|
|
{
|
|
|
|
if (null != sMsg)
|
|
{
|
|
|
|
rm = new ErrorResponseMessage(sMsg, i_crm);
|
|
}
|
|
}
|
|
return rm;
|
|
|
|
}
|
|
|
|
#endregion 預訂管理(分頁查詢)
|
|
|
|
#region 預訂管理(單筆查詢)
|
|
|
|
/// <summary>
|
|
/// 預訂管理(單筆查詢)
|
|
/// </summary>
|
|
/// <param name="i_crm"></param>
|
|
/// <returns></returns>
|
|
/// Origtek framwork API
|
|
public ResponseMessage QueryOne(RequestMessage i_crm)
|
|
{
|
|
ResponseMessage rm = null;
|
|
string sMsg = null;
|
|
var db = SugarBase.GetIntance();
|
|
try
|
|
{
|
|
do
|
|
{
|
|
|
|
var sBookingID = _fetchString(i_crm, @"BookingID");
|
|
var sLanguageID = _fetchString(i_crm, @"LanguageID");
|
|
|
|
if (string.IsNullOrEmpty(sLanguageID)) {
|
|
sLanguageID = WebAppGlobalConstWord.DEFAULT_LANGUAGE;
|
|
}
|
|
|
|
var rsBooking = QueryOneDetailBooking(sLanguageID, "", sBookingID, "");
|
|
|
|
rm = new SuccessResponseMessage(null, i_crm);
|
|
rm.DATA.Add(BLWording.REL, rsBooking);
|
|
|
|
} while (false);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
sMsg = Util.GetLastExceptionMsg(ex);
|
|
LogAndSendEmail(sMsg + "Params:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(BookingMaintain_QryService), "", "QueryOne 預訂管理(單筆查詢)", "", "", "");
|
|
}
|
|
finally
|
|
{
|
|
if (null != sMsg)
|
|
{
|
|
rm = new ErrorResponseMessage(sMsg, i_crm);
|
|
}
|
|
}
|
|
return rm;
|
|
}
|
|
|
|
#endregion 預訂管理(單筆查詢)
|
|
|
|
#region 預訂管理(查詢筆數)
|
|
|
|
/// <summary>
|
|
/// 預訂管理(查詢筆數)
|
|
/// </summary>
|
|
/// <param name="i_crm"></param>
|
|
/// <returns></returns>
|
|
/// Origtek framwork API
|
|
public ResponseMessage QueryCout(RequestMessage i_crm)
|
|
{
|
|
ResponseMessage rm = null;
|
|
string sMsg = null;
|
|
var db = SugarBase.GetIntance();
|
|
try
|
|
{
|
|
do
|
|
{
|
|
|
|
int iCount = QueryIntCount(i_crm);
|
|
|
|
rm = new SuccessResponseMessage(null, i_crm);
|
|
rm.DATA.Add(BLWording.REL, iCount);
|
|
|
|
} while (false);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
sMsg = Util.GetLastExceptionMsg(ex);
|
|
LogAndSendEmail(sMsg + "Params:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(BookingMaintain_QryService), "", "QueryCout 預訂管理(查詢筆數)", "", "", "");
|
|
}
|
|
finally
|
|
{
|
|
if (null != sMsg)
|
|
{
|
|
rm = new ErrorResponseMessage(sMsg, i_crm);
|
|
}
|
|
}
|
|
return rm;
|
|
}
|
|
#endregion 預訂管理(查詢筆數)
|
|
|
|
#region 預訂管理(查詢int筆數)
|
|
|
|
/// <summary>
|
|
/// 預訂管理(查詢int筆數)
|
|
/// </summary>
|
|
/// <param name="i_crm"></param>
|
|
/// <returns></returns>
|
|
public int QueryIntCount(RequestMessage i_crm)
|
|
{
|
|
ResponseMessage rm = null;
|
|
string sMsg = null;
|
|
var db = SugarBase.GetIntance();
|
|
|
|
int iCount = 0;
|
|
|
|
try
|
|
{
|
|
do
|
|
{
|
|
|
|
var sBookingNo = _fetchString(i_crm, @"BookingNo");
|
|
|
|
iCount = db.Queryable<SETB_SAL_Booking>()
|
|
.Where(x => x.OrgID == i_crm.ORIGID && x.DelStatus != "Y")
|
|
.WhereIF(!string.IsNullOrEmpty(sBookingNo), x => x.BookingNo == sBookingNo)
|
|
.Count();
|
|
|
|
rm = new SuccessResponseMessage(null, i_crm);
|
|
rm.DATA.Add(BLWording.REL, iCount);
|
|
|
|
} while (false);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
sMsg = Util.GetLastExceptionMsg(ex);
|
|
LogAndSendEmail(sMsg + "Params:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(BookingMaintain_QryService), "", "QueryIntCount 預訂管理(查詢int筆數)", "", "", "");
|
|
}
|
|
finally
|
|
{
|
|
if (null != sMsg)
|
|
{
|
|
rm = new ErrorResponseMessage(sMsg, i_crm);
|
|
}
|
|
}
|
|
return iCount;
|
|
}
|
|
#endregion 預訂管理(查詢int筆數)
|
|
|
|
#region 預訂管理(更新排序 call BookingMaintain_UpdService UpdateOrderByValue)
|
|
|
|
/// <summary>
|
|
/// 預訂管理(更新排序 call BookingMaintain_UpdService UpdateOrderByValue)
|
|
/// </summary>
|
|
/// <param name="i_crm">todo: describe i_crm parameter on UpdImportCustomers</param>
|
|
/// <returns></returns>
|
|
/// Origtek framwork API
|
|
public ResponseMessage UpdateOrderByValue(RequestMessage i_crm)
|
|
{
|
|
|
|
BookingMaintain_UpdService bm_upd = new BookingMaintain_UpdService();
|
|
|
|
ResponseMessage rm = bm_upd.UpdateOrderByValue(i_crm);
|
|
|
|
return rm;
|
|
}
|
|
|
|
#endregion 預訂管理(更新排序 call BookingMaintain_UpdService UpdateOrderByValue)
|
|
|
|
#region 預訂管理(List 預訂狀態選單查詢)
|
|
|
|
/// <summary>
|
|
/// 預訂管理(List 預訂狀態選單查詢)
|
|
/// </summary>
|
|
/// <param name="i_crm"></param>
|
|
/// <returns></returns>
|
|
///
|
|
public ResponseMessage QueryBookingStatusList(RequestMessage i_crm)
|
|
{
|
|
ResponseMessage rm = null;
|
|
string sMsg = null;
|
|
var db = SugarBase.GetIntance();
|
|
try
|
|
{
|
|
do
|
|
{
|
|
|
|
var sArgumentClassID = "BookingStatus";
|
|
var saBookingStatus = db.Queryable<OTB_SYS_Arguments>()
|
|
|
|
|
|
//搜尋條件
|
|
.Where(t1 => t1.OrgID == i_crm.ORIGID && t1.DelStatus != "Y" && t1.Effective == "Y")
|
|
.Where(t1 => t1.ArgumentClassID == sArgumentClassID)
|
|
.ToList();
|
|
|
|
rm = new SuccessResponseMessage(null, i_crm);
|
|
rm.DATA.Add(BLWording.REL, saBookingStatus);
|
|
} while (false);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
|
|
sMsg = Util.GetLastExceptionMsg(ex);
|
|
LogAndSendEmail(sMsg + "Params:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(BookingMaintain_QryService), "", "QueryBookingStatusList 預訂管理(List 預訂狀態選單查詢)", "", "", "");
|
|
}
|
|
finally
|
|
{
|
|
if (null != sMsg)
|
|
{
|
|
rm = new ErrorResponseMessage(sMsg, i_crm);
|
|
}
|
|
}
|
|
return rm;
|
|
}
|
|
|
|
#endregion 預訂管理(List 預訂狀態選單查詢)
|
|
|
|
#region 預訂管理(List 供應商狀態選單查詢)
|
|
|
|
/// <summary>
|
|
/// 預訂管理(List 供應商狀態選單查詢)
|
|
/// </summary>
|
|
/// <param name="i_crm"></param>
|
|
/// <returns></returns>
|
|
///
|
|
public ResponseMessage QuerySupplierStatusList(RequestMessage i_crm)
|
|
{
|
|
ResponseMessage rm = null;
|
|
string sMsg = null;
|
|
var db = SugarBase.GetIntance();
|
|
try
|
|
{
|
|
do
|
|
{
|
|
|
|
var sArgumentClassID = "SupplierStatus";
|
|
var saBookingStatus = db.Queryable<OTB_SYS_Arguments>()
|
|
|
|
|
|
//搜尋條件
|
|
.Where(t1 => t1.OrgID == i_crm.ORIGID && t1.DelStatus != "Y" && t1.Effective == "Y")
|
|
.Where(t1 => t1.ArgumentClassID == sArgumentClassID)
|
|
.ToList();
|
|
|
|
rm = new SuccessResponseMessage(null, i_crm);
|
|
rm.DATA.Add(BLWording.REL, saBookingStatus);
|
|
} while (false);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
|
|
sMsg = Util.GetLastExceptionMsg(ex);
|
|
LogAndSendEmail(sMsg + "Params:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(BookingMaintain_QryService), "", "QuerySupplierStatusList 預訂管理(List 供應商狀態選單查詢)", "", "", "");
|
|
}
|
|
finally
|
|
{
|
|
if (null != sMsg)
|
|
{
|
|
rm = new ErrorResponseMessage(sMsg, i_crm);
|
|
}
|
|
}
|
|
return rm;
|
|
}
|
|
|
|
#endregion 預訂管理(List 供應商狀態選單查詢)
|
|
|
|
#region 預訂管理(List 付款狀態選單查詢)
|
|
|
|
/// <summary>
|
|
/// 預訂管理(List 付款狀態選單查詢)
|
|
/// </summary>
|
|
/// <param name="i_crm"></param>
|
|
/// <returns></returns>
|
|
///
|
|
public ResponseMessage QueryPaymentStatusList(RequestMessage i_crm)
|
|
{
|
|
ResponseMessage rm = null;
|
|
string sMsg = null;
|
|
var db = SugarBase.GetIntance();
|
|
try
|
|
{
|
|
do
|
|
{
|
|
|
|
var sArgumentClassID = "PaymentStatus";
|
|
var saBookingStatus = db.Queryable<OTB_SYS_Arguments>()
|
|
|
|
|
|
//搜尋條件
|
|
.Where(t1 => t1.OrgID == i_crm.ORIGID && t1.DelStatus != "Y" && t1.Effective == "Y")
|
|
.Where(t1 => t1.ArgumentClassID == sArgumentClassID)
|
|
.ToList();
|
|
|
|
rm = new SuccessResponseMessage(null, i_crm);
|
|
rm.DATA.Add(BLWording.REL, saBookingStatus);
|
|
} while (false);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
|
|
sMsg = Util.GetLastExceptionMsg(ex);
|
|
LogAndSendEmail(sMsg + "Params:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(BookingMaintain_QryService), "", "QueryPaymentStatusList 預訂管理(List 付款狀態選單查詢)", "", "", "");
|
|
}
|
|
finally
|
|
{
|
|
if (null != sMsg)
|
|
{
|
|
rm = new ErrorResponseMessage(sMsg, i_crm);
|
|
}
|
|
}
|
|
return rm;
|
|
}
|
|
|
|
#endregion 預訂管理(List 付款狀態選單查詢)
|
|
|
|
#region 預訂管理(List 幣別列表 call ServiceMaintain_UpdService QueryCurrencyList)
|
|
|
|
/// <summary>
|
|
/// 預訂管理(List 幣別列表 call ServiceMaintain_UpdService QueryCurrencyList)
|
|
/// </summary>
|
|
/// <param name="i_crm"></param>
|
|
/// <returns></returns>
|
|
public ResponseMessage QueryCurrencyList(RequestMessage i_crm)
|
|
{
|
|
|
|
ServiceMaintain_QryService sm_qry = new ServiceMaintain_QryService();
|
|
|
|
ResponseMessage rm = sm_qry.QueryCurrencyList(i_crm);
|
|
|
|
return rm;
|
|
}
|
|
|
|
#endregion 預訂管理(List 幣別列表 call ServiceMaintain_UpdService QueryCurrencyList)
|
|
|
|
//QueryALLBookingAsDic
|
|
public Dictionary<string, View_SAL_Booking> FindAllByIDsAsDictionary(string sBookingID, string sBookingNo, string sMemberID)
|
|
{
|
|
|
|
string sMsg = null;
|
|
var db = SugarBase.GetIntance();
|
|
|
|
Dictionary<string, View_SAL_Booking> saBookingDic = new Dictionary<string, View_SAL_Booking>();
|
|
|
|
try
|
|
{
|
|
do
|
|
{
|
|
var saBookingList = db.Queryable<SETB_SAL_Booking>()
|
|
.Where(t1 => t1.DelStatus == "N" && t1.Effective == "Y")
|
|
.WhereIF(!string.IsNullOrEmpty(sBookingID), t1 => t1.BookingID == sBookingID)
|
|
.WhereIF(!string.IsNullOrEmpty(sBookingNo), t1 => t1.BookingNo == sBookingNo)
|
|
.WhereIF(!string.IsNullOrEmpty(sMemberID), t1 => t1.MemberID == sMemberID)
|
|
.Select(t1 => new View_SAL_Booking {
|
|
|
|
BookingID = SqlFunc.GetSelfAndAutoFill(t1.BookingID)
|
|
|
|
})
|
|
.ToList();
|
|
|
|
foreach (var booking in saBookingList)
|
|
{
|
|
saBookingDic[booking.BookingID] = booking;
|
|
}
|
|
|
|
return saBookingDic;
|
|
|
|
} while (false);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
sMsg = Util.GetLastExceptionMsg(ex);
|
|
|
|
}
|
|
|
|
return saBookingDic;
|
|
|
|
}
|
|
|
|
public Dictionary<string, View_SAL_Booking> FindAllDetailByIDsAsDictionary(string sLanguageID, string sBookingID, string sBookingNo, string sMemberID) {
|
|
|
|
var rsBookingDic = new Dictionary<string, View_SAL_Booking>();
|
|
|
|
var BookingDic = FindAllByIDsAsDictionary(sBookingID, sBookingNo, sMemberID);
|
|
|
|
MemberMaintain_QryService mm_qry = new MemberMaintain_QryService();
|
|
var MemberDic = mm_qry.FindAllByIDsAsDictionary(sMemberID, "");
|
|
|
|
ContactMaintain_QryService cm_qry = new ContactMaintain_QryService();
|
|
var ContactDic = cm_qry.FindAllByIDsAsDictionary("", "");
|
|
|
|
CompanyMaintain_QryService com_cry = new CompanyMaintain_QryService();
|
|
var CompanyDic = com_cry.FindAllByIDsAsDictionary("", "");
|
|
|
|
ONSiteMaintain_QryService osm_qry = new ONSiteMaintain_QryService();
|
|
var OnSiteServiceDic = osm_qry.FindAllDetailByIDsAsDictionary(sLanguageID, "");
|
|
|
|
PaymentMaintain_QryService pm_qry = new PaymentMaintain_QryService();
|
|
var PaymentDic = pm_qry.FindAllByIDsAsDictionary("", sBookingID);
|
|
|
|
foreach (var Booking in BookingDic.Values) {
|
|
|
|
// set Member
|
|
if (!string.IsNullOrEmpty(Booking.MemberID))
|
|
{
|
|
|
|
if (MemberDic.ContainsKey(Booking.MemberID))
|
|
{
|
|
Booking.Member = MemberDic[Booking.MemberID];
|
|
}
|
|
|
|
}
|
|
|
|
// set PurchaserContact
|
|
if (!string.IsNullOrEmpty(Booking.PurchaserID))
|
|
{
|
|
|
|
if (MemberDic.ContainsKey(Booking.PurchaserID))
|
|
{
|
|
Booking.PurchaserContact = ContactDic[Booking.PurchaserID];
|
|
}
|
|
|
|
}
|
|
|
|
// set Contact
|
|
if (!string.IsNullOrEmpty(Booking.ContactID))
|
|
{
|
|
|
|
if (ContactDic.ContainsKey(Booking.ContactID))
|
|
{
|
|
Booking.BookingContact = ContactDic[Booking.ContactID];
|
|
}
|
|
|
|
}
|
|
|
|
// set OnSiteContact
|
|
if (!string.IsNullOrEmpty(Booking.OnSiteContactID))
|
|
{
|
|
|
|
if (ContactDic.ContainsKey(Booking.OnSiteContactID))
|
|
{
|
|
Booking.OnSiteContact = ContactDic[Booking.OnSiteContactID];
|
|
}
|
|
|
|
}
|
|
|
|
// set PurchaserCompany
|
|
if (!string.IsNullOrEmpty(Booking.PurchaserCompanyID))
|
|
{
|
|
|
|
if (CompanyDic.ContainsKey(Booking.PurchaserCompanyID))
|
|
{
|
|
Booking.PurchaserCompany = CompanyDic[Booking.PurchaserCompanyID];
|
|
}
|
|
|
|
}
|
|
|
|
// set OnSiteService
|
|
if (!string.IsNullOrEmpty(Booking.ServiceID))
|
|
{
|
|
|
|
if (OnSiteServiceDic.ContainsKey(Booking.ServiceID))
|
|
{
|
|
|
|
Booking.OnSiteService = OnSiteServiceDic[Booking.ServiceID];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// set Payment
|
|
if (!string.IsNullOrEmpty(Booking.PaymentID))
|
|
{
|
|
|
|
if (PaymentDic.ContainsKey(Booking.PaymentID))
|
|
{
|
|
Booking.Payment = PaymentDic[Booking.PaymentID];
|
|
}
|
|
|
|
}
|
|
|
|
rsBookingDic[Booking.BookingID] = Booking;
|
|
|
|
}
|
|
|
|
return rsBookingDic;
|
|
|
|
}
|
|
|
|
public View_SAL_Booking QueryOneDetailBooking(string sLanguageID, string sMemberID, string sBookingID, string sBookingNo) {
|
|
|
|
var Booking = FindAllDetailByIDsAsDictionary(sLanguageID, sBookingID, sBookingNo, sMemberID).Values.ToList()
|
|
.FirstOrDefault();
|
|
|
|
return Booking;
|
|
|
|
}
|
|
|
|
public Dictionary<string, View_SAL_Booking> QueryAllBooking(
|
|
string sLanguageID,
|
|
string sMemberID,
|
|
List<string> SubCategoryIDs,
|
|
List<string> BookingStatus,
|
|
List<string> PaymentStatus) {
|
|
|
|
if (string.IsNullOrEmpty(sLanguageID)) {
|
|
sLanguageID = WebAppGlobalConstWord.DEFAULT_LANGUAGE;
|
|
}
|
|
|
|
var BookingDic = FindAllDetailByIDsAsDictionary(sLanguageID, "", "", sMemberID);
|
|
|
|
BookingDic = FilterByMemberID(BookingDic, sMemberID);
|
|
|
|
if (SubCategoryIDs.Count > 0) {
|
|
BookingDic = FilterBySubCateogyIDs(BookingDic, SubCategoryIDs);
|
|
}
|
|
|
|
if (BookingStatus.Count > 0)
|
|
{
|
|
BookingDic = FilterByBookingStatus(BookingDic, BookingStatus);
|
|
}
|
|
|
|
if (PaymentStatus.Count > 0)
|
|
{
|
|
BookingDic = FilterByPaymentStatus(BookingDic, PaymentStatus);
|
|
}
|
|
|
|
return BookingDic;
|
|
|
|
}
|
|
|
|
public Dictionary<string, View_SAL_Booking> FilterByMemberID(Dictionary<string, View_SAL_Booking> BookingDic, string sMemberID) {
|
|
|
|
Dictionary<string, View_SAL_Booking> rsBookingDic = new Dictionary<string, View_SAL_Booking>();
|
|
|
|
var BookingList = BookingDic.Values.ToList().Where(w => w.Member.MemberID == sMemberID).ToList();
|
|
|
|
foreach (var Booking in BookingList) {
|
|
rsBookingDic[Booking.BookingID] = Booking;
|
|
}
|
|
|
|
return rsBookingDic;
|
|
}
|
|
|
|
public Dictionary<string, View_SAL_Booking> FilterBySubCateogyIDs(Dictionary<string, View_SAL_Booking> BookingDic, List<string> SubCategoryIDs) {
|
|
|
|
Dictionary<string, View_SAL_Booking> rsBookingDic = new Dictionary<string, View_SAL_Booking>();
|
|
|
|
foreach (var Booking in BookingDic.Values) {
|
|
|
|
List<string> rsSubCategoryIDs = new List<string>();
|
|
|
|
if (Booking.OnSiteService != null) {
|
|
|
|
if (Booking.OnSiteService.SubCategoryID != null) {
|
|
|
|
rsSubCategoryIDs = JsonConvert.DeserializeObject<List<string>>(Booking.OnSiteService.SubCategoryID);
|
|
}
|
|
}
|
|
|
|
bool hasMatch = rsSubCategoryIDs.Intersect(SubCategoryIDs).Any();
|
|
|
|
if (hasMatch)
|
|
{
|
|
rsBookingDic[Booking.BookingID] = Booking;
|
|
}
|
|
}
|
|
|
|
|
|
return rsBookingDic;
|
|
}
|
|
|
|
public Dictionary<string, View_SAL_Booking> FilterByBookingStatus(Dictionary<string, View_SAL_Booking> BookingDic, List<string> BookingStatuses)
|
|
{
|
|
|
|
Dictionary<string, View_SAL_Booking> rsBookingDic = new Dictionary<string, View_SAL_Booking>();
|
|
|
|
var rsBookingList = BookingDic.Values.Where(w => !string.IsNullOrEmpty(w.BookingStatus)).ToList();
|
|
|
|
foreach (var Booking in rsBookingList)
|
|
{
|
|
|
|
bool hasMatch = BookingStatuses.Contains(Booking.BookingStatus);
|
|
|
|
if (hasMatch)
|
|
{
|
|
rsBookingDic[Booking.BookingID] = Booking;
|
|
}
|
|
}
|
|
|
|
return rsBookingDic;
|
|
}
|
|
|
|
public Dictionary<string, View_SAL_Booking> FilterByPaymentStatus(Dictionary<string, View_SAL_Booking> BookingDic, List<string> PaymentStatuses)
|
|
{
|
|
|
|
Dictionary<string, View_SAL_Booking> rsBookingDic = new Dictionary<string, View_SAL_Booking>();
|
|
|
|
var rsBookingList = BookingDic.Values.Where(w => !string.IsNullOrEmpty(w.PaymentStatus)).ToList();
|
|
|
|
foreach (var Booking in rsBookingList)
|
|
{
|
|
|
|
bool hasMatch = PaymentStatuses.Contains(Booking.PaymentStatus);
|
|
|
|
if (hasMatch)
|
|
{
|
|
rsBookingDic[Booking.BookingID] = Booking;
|
|
}
|
|
}
|
|
|
|
return rsBookingDic;
|
|
}
|
|
|
|
public Dictionary<string, BookingDTO> QueryBookingCardList (
|
|
string sLanguageID,
|
|
string sMemberID,
|
|
List<string> SubCategoryIDs,
|
|
List<string> BookingStatus,
|
|
List<string> PaymentStatus)
|
|
{
|
|
|
|
Dictionary<string, BookingDTO> rsBookingDic = new Dictionary<string, BookingDTO>();
|
|
FileMaintain_QryService fm_qry = new FileMaintain_QryService();
|
|
|
|
if (string.IsNullOrEmpty(sLanguageID))
|
|
{
|
|
sLanguageID = WebAppGlobalConstWord.DEFAULT_LANGUAGE;
|
|
}
|
|
|
|
var BookingDic = FindAllDetailByIDsAsDictionary(sLanguageID, "", "", sMemberID);
|
|
|
|
BookingDic = FilterByMemberID(BookingDic, sMemberID);
|
|
|
|
if (SubCategoryIDs.Count > 0)
|
|
{
|
|
BookingDic = FilterBySubCateogyIDs(BookingDic, SubCategoryIDs);
|
|
}
|
|
|
|
if (BookingStatus.Count > 0)
|
|
{
|
|
BookingDic = FilterByBookingStatus(BookingDic, BookingStatus);
|
|
}
|
|
|
|
if (PaymentStatus.Count > 0)
|
|
{
|
|
BookingDic = FilterByPaymentStatus(BookingDic, PaymentStatus);
|
|
}
|
|
|
|
CurrencyMaintain_QryService cm_qry = new CurrencyMaintain_QryService();
|
|
var CurrencyDic = cm_qry.FindAllByIDsAsDictionary(sLanguageID);
|
|
|
|
SupplierMaintain_QryService sm_qry = new SupplierMaintain_QryService();
|
|
var ProviderDic = sm_qry.FindAllByIDsAsDictionary(sLanguageID);
|
|
|
|
foreach (var Booking in BookingDic.Values) {
|
|
|
|
var rsBooking = new BookingDTO();
|
|
rsBooking.BookingID = Booking.BookingID;
|
|
rsBooking.BookingNo = Booking.BookingNo;
|
|
rsBooking.BookingStatus = Booking.BookingStatus;
|
|
rsBooking.BookingDate = Booking.BookingDate;
|
|
rsBooking.BookingDetail = Booking.BookingDetail;
|
|
rsBooking.TotalPrice = Booking.TotalPrice;
|
|
rsBooking.Memo = Booking.Memo;
|
|
|
|
OnSiteServiceDTO rsOnSiteService = new OnSiteServiceDTO();
|
|
rsOnSiteService.ServiceID = Booking.OnSiteService.ServiceID;
|
|
rsOnSiteService.ServiceName = Booking.OnSiteService.ServiceName;
|
|
rsOnSiteService.ServiceStartDate = Booking.ServiceStartDate;
|
|
rsOnSiteService.ServiceEndDate = Booking.ServiceEndDate;
|
|
rsOnSiteService.Logo = fm_qry.FindOneImageURL(Booking.OnSiteService.PreviewFile);
|
|
|
|
if (!string.IsNullOrEmpty(Booking.OnSiteService.SupplierID)) {
|
|
|
|
if (ProviderDic.ContainsKey(Booking.OnSiteService.SupplierID)) {
|
|
|
|
var Provider = ProviderDic[Booking.OnSiteService.SupplierID];
|
|
ProviderDTO rsProvider = new ProviderDTO();
|
|
rsProvider.ProviderID = Provider.SupplierID;
|
|
rsProvider.ProviderName = Provider.CompanyName;
|
|
rsProvider.Logo = fm_qry.FindOneImageURL(Provider.LogoFile);
|
|
|
|
rsOnSiteService.Provider = rsProvider;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
rsBooking.OnSiteService = rsOnSiteService;
|
|
|
|
rsBooking.OtherDetail = Booking.OtherDetail;
|
|
|
|
PaymentDTO rsPayment = new PaymentDTO();
|
|
rsPayment.PaymentID = Booking.PaymentID;
|
|
rsPayment.PaymentStatus = Booking.PaymentStatus;
|
|
rsPayment.Amount = Booking.TotalPrice;
|
|
|
|
if (!string.IsNullOrEmpty(Booking.CurrencyID)) {
|
|
|
|
if (CurrencyDic.ContainsKey(Booking.CurrencyID)) {
|
|
rsPayment.Currency = CurrencyDic[Booking.CurrencyID];
|
|
}
|
|
|
|
}
|
|
|
|
rsBooking.Payment = rsPayment;
|
|
|
|
ContactDTO Contact = new ContactDTO();
|
|
Contact.ContactID = Booking.ContactID;
|
|
Contact.FirstName = Booking.ContactFirstName;
|
|
Contact.LastName = Booking.ContactLastName;
|
|
Contact.Phone = Booking.ContactPhone;
|
|
Contact.Email = Booking.ContactEmail;
|
|
|
|
rsBooking.Contact = Contact;
|
|
|
|
rsBooking.CancellationPolicy = Booking.CancellationPolicy;
|
|
|
|
rsBookingDic[rsBooking.BookingID] = rsBooking;
|
|
|
|
}
|
|
|
|
return rsBookingDic;
|
|
}
|
|
|
|
|
|
}
|
|
}
|