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.
 
 
 
 
 

430 lines
16 KiB

using EasyBL.WebApi;
using EasyBL.WebApi.Common;
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.IO;
using System.Linq;
using System.Net.Http;
using System.Web;
namespace EasyBL.WEBAPP.SYS
{
public class BookingService : ServiceBase
{
#region 類別選單(List 類別選單查詢)
/// <summary>
/// 類別選單(List 類別選單查詢)
/// </summary>
/// <returns></returns>
///
public HttpResponseMessage GetArgumentClassList(string sArgumentClassID)
{
SuccessResponseMessage srm = null;
string sError = null;
var db = SugarBase.GetIntance();
try
{
do
{
var saStatus = db.Queryable<OTB_SYS_Arguments>()
//搜尋條件
.Where(t1 => t1.DelStatus != "Y" && t1.Effective == "Y")
.Where(t1 => t1.ArgumentClassID == sArgumentClassID)
.ToList();
srm = new SuccessResponseMessage(null, null);
srm.DATA.Add(BLWording.REL, saStatus);
} while (false);
}
catch (Exception ex)
{
sError = Util.GetLastExceptionMsg(ex);
srm = new SuccessResponseMessage(null, null)
{
STATUSCODE = (int)StatusCodeEnum.Error,
MSG = StatusCodeEnum.Error.GetEnumText()
};
srm.DATA.Add(BLWording.REL, "");
}
return HttpResponseExtension.ToJson(JsonConvert.SerializeObject(srm));
}
#endregion 類別選單(List 類別選單查詢)
#region 子類別查詢API (服務有包含該類別才列出)
/// <summary>
/// 子類別查詢API (服務有包含該類別才列出)
/// </summary>
/// <returns></returns>
///
public HttpResponseMessage GetBookingCategory(string Account, string LangType)
{
SuccessResponseMessage srm = null;
string sError = null;
var db = SugarBase.GetIntance();
try
{
do
{
//用Account取Member的MemberID
MemberMaintain_QryService member_qry = new MemberMaintain_QryService();
var member = member_qry.QueryOneByAccount(Account);
//取Member所有的訂單
BookingMaintain_QryService booking_qry = new BookingMaintain_QryService();
var allBookingServiceList = booking_qry.FindAllByIDsAsDictionary("", "", member.MemberID).Values.ToList()
.Where(w => !string.IsNullOrEmpty(w.ServiceID))
.Select(s => s.ServiceID).ToList();
//取所有category
ServiceSubCategoryMaintain_QryService serviceSub_qry = new ServiceSubCategoryMaintain_QryService();
var subCategory = serviceSub_qry.FindAllByIDsAsDictionary("", LangType);
//取得所有OnSiteService
ONSiteMaintain_QryService onSiteService_qry = new ONSiteMaintain_QryService();
var allService = onSiteService_qry.FindAllByIDsAsDictionary(LangType, "");
var ServiceIDSet = new HashSet<string>(); //去重複值
var CategoryDic = new Dictionary<string, CategoryDTO>();
foreach (var ServiceID in allBookingServiceList)
{
SETB_PDT_ONSiteBaseInfo Service = new SETB_PDT_ONSiteBaseInfo();
if (allService.ContainsKey(ServiceID))
{
Service = allService[ServiceID];
}
var SubCategoryIDList = new List<string>();
if (!string.IsNullOrEmpty(Service.SubCategoryID))
{
SubCategoryIDList = JsonConvert.DeserializeObject<List<string>>(Service.SubCategoryID);
}
foreach (var subCategoryID in SubCategoryIDList)
{
SETB_SYS_Category category = new SETB_SYS_Category();
if (subCategory.ContainsKey(subCategoryID))
{
category = subCategory[subCategoryID]; //用subCategoryID在subCategory內找
}
CategoryDTO categoryDTO = new CategoryDTO();
categoryDTO.CategoryID = category.CategoryID;
categoryDTO.CategoryName = category.CategoryName;
CategoryDic[categoryDTO.CategoryID] = categoryDTO; //把categoryDTO.CategoryID當作key,把value(categoryDTO)存進CategoryDic
//存到Dictionary內會去重複值。不用額外用HashSet
}
}
srm = new SuccessResponseMessage(null, null);
srm.DATA.Add(BLWording.REL, CategoryDic.Values.ToList());
} while (false);
}
catch (Exception ex)
{
sError = Util.GetLastExceptionMsg(ex);
srm = new SuccessResponseMessage(null, null)
{
STATUSCODE = (int)StatusCodeEnum.Error,
MSG = StatusCodeEnum.Error.GetEnumText()
};
srm.DATA.Add(BLWording.REL, "");
}
return HttpResponseExtension.ToJson(JsonConvert.SerializeObject(srm));
}
#endregion 子類別查詢API (服務有包含該類別才列出)
public HttpResponseMessage GetBookings(string sAccount, string sLanguage, List<string> SubCategoryIDs, List<string> BookingStatuses, List<string> PaymentStatuses ) {
SuccessResponseMessage srm = null;
string sError = null;
var db = SugarBase.GetIntance();
try
{
do
{
BookingMaintain_QryService bm_qry = new BookingMaintain_QryService();
MemberMaintain_QryService mm_qry = new MemberMaintain_QryService();
var rsMember = mm_qry.QueryOneByAccount(sAccount);
var rsResult = bm_qry.QueryAllBooking(sLanguage, rsMember.MemberID, SubCategoryIDs, BookingStatuses, PaymentStatuses);
srm = new SuccessResponseMessage(null, null);
srm.DATA.Add(BLWording.REL, rsResult.Values.ToList());
} while (false);
}
catch (Exception ex)
{
sError = Util.GetLastExceptionMsg(ex);
srm = new SuccessResponseMessage(null, null)
{
STATUSCODE = (int)StatusCodeEnum.Error,
MSG = StatusCodeEnum.Error.GetEnumText()
};
srm.DATA.Add(BLWording.REL, "");
}
return HttpResponseExtension.ToJson(JsonConvert.SerializeObject(srm));
}
public HttpResponseMessage GetBookingCardList(string sAccount, string sLanguage, List<string> SubCategoryIDs, List<string> BookingStatuses, List<string> PaymentStatuses)
{
SuccessResponseMessage srm = null;
string sError = null;
var db = SugarBase.GetIntance();
try
{
do
{
BookingMaintain_QryService bm_qry = new BookingMaintain_QryService();
MemberMaintain_QryService mm_qry = new MemberMaintain_QryService();
var rsMember = mm_qry.QueryOneByAccount(sAccount);
// var rsResult = bm_qry.QueryBookingCardList(sLanguage, rsMember.MemberID, SubCategoryIDs, BookingStatuses, PaymentStatuses);
srm = new SuccessResponseMessage(null, null);
srm.DATA.Add(BLWording.REL, rsMember);
} while (false);
}
catch (Exception ex)
{
sError = Util.GetLastExceptionMsg(ex);
srm = new SuccessResponseMessage(null, null)
{
STATUSCODE = (int)StatusCodeEnum.Error,
MSG = StatusCodeEnum.Error.GetEnumText()
};
srm.DATA.Add(BLWording.REL, "");
}
return HttpResponseExtension.ToJson(JsonConvert.SerializeObject(srm));
}
#region 訂單管理(BookingDTO API 以ID查詢單筆訂單)
/// <summary>
/// 訂單管理(BookingDTO API 以ID查詢單筆訂單)
/// </summary>
/// <param name="i_crm"></param>
/// <returns></returns>
public HttpResponseMessage GetOneDetailBooking(string sLanguageID, string sAccount, string sBookingID, string sBookingNo) {
SuccessResponseMessage srm = null;
string sError = null;
var db = SugarBase.GetIntance();
try
{
do
{
MemberMaintain_QryService mm_qry = new MemberMaintain_QryService();
var Member = mm_qry.QueryOneByAccount(sAccount);
BookingMaintain_QryService bm_qry = new BookingMaintain_QryService();
if (string.IsNullOrEmpty(sLanguageID)) {
sLanguageID = WebAppGlobalConstWord.DEFAULT_LANGUAGE;
}
var rsBooking = bm_qry.QueryOneDetailBooking(sLanguageID, Member.MemberID, sBookingID, sBookingNo);
srm = new SuccessResponseMessage(null, null);
srm.DATA.Add(BLWording.REL, rsBooking);
} while (false);
}
catch (Exception ex)
{
sError = Util.GetLastExceptionMsg(ex);
srm = new SuccessResponseMessage(null, null)
{
STATUSCODE = (int)StatusCodeEnum.Error,
MSG = StatusCodeEnum.Error.GetEnumText()
};
srm.DATA.Add(BLWording.REL, "");
}
return HttpResponseExtension.ToJson(JsonConvert.SerializeObject(srm));
}
#endregion 訂單管理(BookingDTO API 以ID查詢單筆訂單)
public HttpResponseMessage SaveBooking(string sAccount, SETB_SAL_Booking Booking) {
SuccessResponseMessage srm = null;
string sError = null;
try
{
do
{
MemberMaintain_QryService mm_qry = new MemberMaintain_QryService();
var Member = mm_qry.QueryOneByAccount(sAccount);
Booking.MemberID = Member.MemberID;
BookingMaintain_UpdService bm_upd = new BookingMaintain_UpdService();
var rsResult = bm_upd.SaveBooking(Booking);
//返回token信息
srm = new SuccessResponseMessage(null, null);
srm.DATA.Add(BLWording.REL, rsResult.DATA[BLWording.REL]);
} while (false);
}
catch (Exception ex)
{
sError = Util.GetLastExceptionMsg(ex);
srm = new SuccessResponseMessage(null, null)
{
STATUSCODE = (int)StatusCodeEnum.Error,
MSG = StatusCodeEnum.Error.GetEnumText()
};
srm.DATA.Add(BLWording.REL, "");
}
return HttpResponseExtension.ToJson(JsonConvert.SerializeObject(srm));
}
public static BookingDTO EntityToDTO(SETB_SAL_Booking entityBooking, string sLanguageID) {
if (string.IsNullOrEmpty(sLanguageID)) {
sLanguageID = WebAppGlobalConstWord.DEFAULT_LANGUAGE;
}
BookingDTO dtoBooking = new BookingDTO();
dtoBooking.BookingID = entityBooking.BookingID;
dtoBooking.BookingNo = entityBooking.BookingNo;
dtoBooking.BookingDate = entityBooking.BookingDate;
dtoBooking.LanguageID = entityBooking.LanguageID;
dtoBooking.BookingDetail = entityBooking.BookingDetail;
// OnSiteService
OnSiteServiceDTO dtoOnSiteService = new OnSiteServiceDTO();
ONSiteMaintain_QryService osm_qry = new ONSiteMaintain_QryService();
if (!string.IsNullOrEmpty(entityBooking.ServiceID)) {
var entityOnSiteService = osm_qry.FindAllByIDsAsDictionary(sLanguageID, entityBooking.ServiceID).Values.FirstOrDefault();
//dtoOnSiteService = OnsiteService.EntityToDTO(entityOnSiteService);
}
dtoBooking.OnSiteService = dtoOnSiteService;
dtoBooking.BookingStatus = entityBooking.BookingStatus;
dtoBooking.OtherDetail = entityBooking.OtherDetail;
//dtoBooking.TotalPrice = entityBooking.TotalPrice;
CurrencyMaintain_QryService cm_qry = new CurrencyMaintain_QryService();
var sLanguage = entityBooking.LanguageID;
if (string.IsNullOrEmpty(sLanguage)) {
sLanguage = WebAppGlobalConstWord.DEFAULT_LANGUAGE;
}
OnSiteServiceDTO Service = new OnSiteServiceDTO();
//if (entityBooking.OnSiteService != null) {
// Service.ServiceID = entityBooking.OnSiteService.ServiceName;
// Service.ServiceName = entityBooking.OnSiteService.ServiceName;
// Service.ServiceStartDate = entityBooking.ServiceStartDate;
// Service.ServiceEndDate = entityBooking.ServiceEndDate;
// Service.Logo = entityBooking.OnSiteService.PreviewFile;
// ProviderDTO Provider = new ProviderDTO();
// Provider.ProviderID = entityBooking.Provider.SupplierID;
// Provider.ProviderName = entityBooking.Provider.CompanyName;
// Service.Provider = Provider;
// dtoBooking.OnSiteService = Service;
//}
//if (entityBooking.Payment != null) {
// var CurrencyDic = cm_qry.FindAllByIDsAsDictionary(sLanguage);
// PaymentDTO Payment = new PaymentDTO();
// Payment.PaymentID = entityBooking.Payment.PaymentID;
// Payment.PaymentMethod = entityBooking.Payment.PaymentMethod;
// Payment.PaymentStatus = entityBooking.Payment.PaymentStatus;
// Payment.PaymentTerms = entityBooking.Payment.PaymentTerms;
// Payment.Amount = entityBooking.Payment.Amount;
// if (CurrencyDic.ContainsKey(entityBooking.CurrencyID))
// {
// Payment.Currency = CurrencyDic[entityBooking.CurrencyID];
// }
// dtoBooking.Payment = Payment;
//}
//dtoBooking.CancellationPolicy = entityBooking.CancellationPolicy;
//ContactDTO Contact = new ContactDTO();
//Contact.ContactID = entityBooking.ContactID;
//Contact.FirstName = entityBooking.ContactFirstName;
//Contact.LastName = entityBooking.ContactLastName;
//Contact.Email = entityBooking.ContactEmail;
//Contact.Phone = entityBooking.ContactPhone;
//dtoBooking.Contact = Contact;
return dtoBooking;
}
}
}