From 94598041ca08255a40c0156a5a9aace997c87fc5 Mon Sep 17 00:00:00 2001 From: berlin-tzen <berlintzen@gmail.com> Date: Wed, 22 Feb 2023 15:56:43 +0800 Subject: [PATCH] =?UTF-8?q?[WHAT]=20=E4=BF=AE=E6=94=B9Booking=20API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ShowEasy/BookingMaintain_QryService.cs | 19 ++--- .../ShowEasy/BookingMaintain_UpdService.cs | 79 +++++++------------ .../EasyBL.WEBAPP/ShowEasy/BookingService.cs | 57 ++++++++++--- EuroTran/Entity/ShowEasyDtos/ContactDTO.cs | 2 +- EuroTran/Entity/Sugar/SETB_SAL_Booking.cs | 8 ++ .../WebApp/Controllers/BookingController.cs | 60 +++----------- 6 files changed, 109 insertions(+), 116 deletions(-) diff --git a/EuroTran/EasyBL.WEBAPP/ShowEasy/BookingMaintain_QryService.cs b/EuroTran/EasyBL.WEBAPP/ShowEasy/BookingMaintain_QryService.cs index 1b5df39..ca53e84 100644 --- a/EuroTran/EasyBL.WEBAPP/ShowEasy/BookingMaintain_QryService.cs +++ b/EuroTran/EasyBL.WEBAPP/ShowEasy/BookingMaintain_QryService.cs @@ -118,7 +118,7 @@ namespace EasyBL.WEBAPP.SYS var sEffective = _fetchString(i_crm, @"Effective"); var bExcel = _fetchBool(i_crm, @"Excel"); - var BookingDic = FindAllDetailByIDsAsDictionary(sLanguageID, "", ""); + var BookingDic = FindAllDetailByIDsAsDictionary(sLanguageID, "", "", ""); var BookingList = db.Queryable<SETB_SAL_Booking, SETB_CMS_Member, SETB_PDT_ServiceBaseInfo>((t1, t2, t3) => new object[] { @@ -250,7 +250,7 @@ namespace EasyBL.WEBAPP.SYS sLanguageID = WebAppGlobalConstWord.DEFAULT_LANGUAGE; } - var rsBooking = QueryOneDetailBooking(sLanguageID, sBookingID); + var rsBooking = QueryOneDetailBooking(sLanguageID, sBookingID, ""); rm = new SuccessResponseMessage(null, i_crm); rm.DATA.Add(BLWording.REL, rsBooking); @@ -550,7 +550,7 @@ namespace EasyBL.WEBAPP.SYS #endregion 預訂管理(List 幣別列表 call ServiceMaintain_UpdService QueryCurrencyList) //QueryALLBookingAsDic - public Dictionary<string, View_SAL_Booking> FindAllByIDsAsDictionary(string sBookingID, string sMemberID) + public Dictionary<string, View_SAL_Booking> FindAllByIDsAsDictionary(string sBookingID, string sBookingNo, string sMemberID) { string sMsg = null; @@ -565,6 +565,7 @@ namespace EasyBL.WEBAPP.SYS 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 { @@ -592,11 +593,11 @@ namespace EasyBL.WEBAPP.SYS } - public Dictionary<string, View_SAL_Booking> FindAllDetailByIDsAsDictionary(string sLanguageID, string sBookingID, string sMemberID) { + 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, sMemberID); + var BookingDic = FindAllByIDsAsDictionary(sBookingID, sBookingNo, sMemberID); MemberMaintain_QryService mm_qry = new MemberMaintain_QryService(); var MemberDic = mm_qry.FindAllByIDsAsDictionary(sMemberID, ""); @@ -704,9 +705,9 @@ namespace EasyBL.WEBAPP.SYS } - public View_SAL_Booking QueryOneDetailBooking(string sLanguageID, string sBookingID) { + public View_SAL_Booking QueryOneDetailBooking(string sLanguageID, string sBookingID, string sBookingNo) { - var Booking = FindAllDetailByIDsAsDictionary(sLanguageID, sBookingID, "").Values.ToList() + var Booking = FindAllDetailByIDsAsDictionary(sLanguageID, sBookingID, sBookingNo, "").Values.ToList() .Where(w => w.BookingID == sBookingID) .FirstOrDefault(); @@ -725,7 +726,7 @@ namespace EasyBL.WEBAPP.SYS sLanguageID = WebAppGlobalConstWord.DEFAULT_LANGUAGE; } - var BookingDic = FindAllDetailByIDsAsDictionary(sLanguageID, "", sMemberID); + var BookingDic = FindAllDetailByIDsAsDictionary(sLanguageID, "", "", sMemberID); BookingDic = FilterByMemberID(BookingDic, sMemberID); @@ -846,7 +847,7 @@ namespace EasyBL.WEBAPP.SYS sLanguageID = WebAppGlobalConstWord.DEFAULT_LANGUAGE; } - var BookingDic = FindAllDetailByIDsAsDictionary(sLanguageID, "", sMemberID); + var BookingDic = FindAllDetailByIDsAsDictionary(sLanguageID, "", "", sMemberID); BookingDic = FilterByMemberID(BookingDic, sMemberID); diff --git a/EuroTran/EasyBL.WEBAPP/ShowEasy/BookingMaintain_UpdService.cs b/EuroTran/EasyBL.WEBAPP/ShowEasy/BookingMaintain_UpdService.cs index 73ea8ba..fb228b7 100644 --- a/EuroTran/EasyBL.WEBAPP/ShowEasy/BookingMaintain_UpdService.cs +++ b/EuroTran/EasyBL.WEBAPP/ShowEasy/BookingMaintain_UpdService.cs @@ -28,6 +28,24 @@ namespace EasyBL.WEBAPP.WSM #endregion 預訂維護(單筆查詢 call BookingMaintainQryService QueryOne) + public ResponseMessage SaveBooking(SETB_SAL_Booking Booking) { + + ResponseMessage rsResult = null; + + if (string.IsNullOrEmpty(Booking.BookingID)) + { + // insert + rsResult = Insert(Booking); + } + else { + // update + rsResult = Update(Booking); + } + + return rsResult; + + } + #region 預訂維護(新增) /// <summary> @@ -36,7 +54,7 @@ namespace EasyBL.WEBAPP.WSM /// <param name="i_crm">todo: describe i_crm parameter on UpdImportCustomers</param> /// <returns></returns> /// Origtek framwork API - public ResponseMessage Insert(RequestMessage i_crm) + public ResponseMessage Insert(SETB_SAL_Booking Booking) { ResponseMessage rm = null; string sMsg = null; @@ -49,27 +67,12 @@ namespace EasyBL.WEBAPP.WSM var sBookingID = Guid.NewGuid().ToString(); - var oEntity = _fetchEntity<View_SAL_Booking>(i_crm) as SETB_SAL_Booking; - - _setEntityBase(oEntity, i_crm); - oEntity.BookingID = sBookingID; - oEntity.DelStatus = "N"; - - - BookingMaintain_QryService bm_qry = new BookingMaintain_QryService(); - - var iOldCout = bm_qry.QueryIntCount(i_crm); - - if (oEntity.OrderByValue <= iOldCout) - { - var iRelUp = db.Updateable<SETB_SAL_Booking>() - .UpdateColumns(x => new SETB_SAL_Booking { OrderByValue = x.OrderByValue + 1 }) - .Where(x => x.OrgID == i_crm.ORIGID && x.BookingID == oEntity.BookingID && x.OrderByValue >= oEntity.OrderByValue) - .ExecuteCommand(); - } + Booking.BookingID = sBookingID; + Booking.DelStatus = "N"; + Booking.Effective = "Y"; - var iRel = db.Insertable(oEntity).ExecuteCommand(); - rm = new SuccessResponseMessage(null, i_crm); + var iRel = db.Insertable(Booking).ExecuteCommand(); + rm = new SuccessResponseMessage(null, null); rm.DATA.Add(BLWording.REL, iRel); } while (false); @@ -79,13 +82,12 @@ namespace EasyBL.WEBAPP.WSM catch (Exception ex) { sMsg = Util.GetLastExceptionMsg(ex); - LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(BookingMaintain_UpdService), "", "Insert 預訂維護(新增)", "", "", ""); } finally { if (null != sMsg) { - rm = new ErrorResponseMessage(sMsg, i_crm); + rm = new ErrorResponseMessage(sMsg, null); } } return rm; @@ -101,7 +103,7 @@ namespace EasyBL.WEBAPP.WSM /// <param name="i_crm">todo: describe i_crm parameter on UpdImportCustomers</param> /// <returns></returns> /// Origtek framwork API - public ResponseMessage Update(RequestMessage i_crm) + public ResponseMessage Update(SETB_SAL_Booking Booking) { ResponseMessage rm = null; string sMsg = null; @@ -111,34 +113,14 @@ namespace EasyBL.WEBAPP.WSM { do { - - var oNewEntity = _fetchEntity<View_SAL_Booking>(i_crm) as SETB_SAL_Booking; - - _setEntityBase(oNewEntity, i_crm); - oNewEntity.DelStatus = "N"; - - var oOldEntity = db.Queryable<SETB_SAL_Booking>().Single(x => x.OrgID == i_crm.ORIGID && x.BookingID == oNewEntity.BookingID); - - if (oNewEntity.OrderByValue > oOldEntity.OrderByValue) - { - var iRelUp = db.Updateable<SETB_SAL_Booking>() - .UpdateColumns(x => new SETB_SAL_Booking { OrderByValue = x.OrderByValue - 1 }) - .Where(x => x.OrgID == oNewEntity.OrgID && x.BookingID == oNewEntity.BookingID && x.OrderByValue <= oNewEntity.OrderByValue && x.OrderByValue > oOldEntity.OrderByValue).ExecuteCommand(); - } - else - { - var iRelDown = db.Updateable<SETB_SAL_Booking>() - .UpdateColumns(x => new SETB_SAL_Booking { OrderByValue = x.OrderByValue + 1 }) - .Where(x => x.OrgID == oNewEntity.OrgID && x.BookingID == oNewEntity.BookingID && x.OrderByValue >= oNewEntity.OrderByValue && x.OrderByValue < oOldEntity.OrderByValue).ExecuteCommand(); - } - - var iRel = db.Updateable(oNewEntity) + + var iRel = db.Updateable(Booking) .IgnoreColumns(x => new { x.CreateUser, x.CreateDate }).ExecuteCommand(); - rm = new SuccessResponseMessage(null, i_crm); + rm = new SuccessResponseMessage(null, null); rm.DATA.Add(BLWording.REL, iRel); } while (false); @@ -148,13 +130,12 @@ namespace EasyBL.WEBAPP.WSM catch (Exception ex) { sMsg = Util.GetLastExceptionMsg(ex); - LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(BookingMaintain_UpdService), "", "Update 預訂維護(修改)", "", "", ""); } finally { if (null != sMsg) { - rm = new ErrorResponseMessage(sMsg, i_crm); + rm = new ErrorResponseMessage(sMsg, null); } } return rm; diff --git a/EuroTran/EasyBL.WEBAPP/ShowEasy/BookingService.cs b/EuroTran/EasyBL.WEBAPP/ShowEasy/BookingService.cs index 96b46ee..88b27bc 100644 --- a/EuroTran/EasyBL.WEBAPP/ShowEasy/BookingService.cs +++ b/EuroTran/EasyBL.WEBAPP/ShowEasy/BookingService.cs @@ -3,6 +3,7 @@ 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; @@ -86,7 +87,9 @@ namespace EasyBL.WEBAPP.SYS //取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(); + 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(); @@ -240,7 +243,7 @@ namespace EasyBL.WEBAPP.SYS /// </summary> /// <param name="i_crm"></param> /// <returns></returns> - public HttpResponseMessage GetOneDetailBooking(string sLanguageID, string sBookingID) { + public HttpResponseMessage GetOneDetailBooking(string sLanguageID, string sBookingID, string sBookingNo) { SuccessResponseMessage srm = null; string sError = null; @@ -255,15 +258,10 @@ namespace EasyBL.WEBAPP.SYS sLanguageID = WebAppGlobalConstWord.DEFAULT_LANGUAGE; } - var rsBooking = bm_qry.QueryOneDetailBooking(sLanguageID, sBookingID); + var rsBooking = bm_qry.QueryOneDetailBooking(sLanguageID, sBookingID, sBookingNo); - if (rsBooking != null) { - - var Booking = EntityToDTO(rsBooking); - - srm = new SuccessResponseMessage(null, null); - srm.DATA.Add(BLWording.REL, Booking); - } + srm = new SuccessResponseMessage(null, null); + srm.DATA.Add(BLWording.REL, rsBooking); } while (false); } @@ -286,6 +284,45 @@ namespace EasyBL.WEBAPP.SYS #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)); + + } + private BookingDTO EntityToDTO(View_SAL_Booking entityBooking) { BookingDTO dtoBooking = new BookingDTO(); diff --git a/EuroTran/Entity/ShowEasyDtos/ContactDTO.cs b/EuroTran/Entity/ShowEasyDtos/ContactDTO.cs index 6ef49dc..d37cf05 100644 --- a/EuroTran/Entity/ShowEasyDtos/ContactDTO.cs +++ b/EuroTran/Entity/ShowEasyDtos/ContactDTO.cs @@ -13,7 +13,7 @@ namespace Entity.ShowEasyDtos public string LastName { get; set; } public string Email { get; set; } public string Phone { get; set; } - + public string MobilePhone { get; set; } } } diff --git a/EuroTran/Entity/Sugar/SETB_SAL_Booking.cs b/EuroTran/Entity/Sugar/SETB_SAL_Booking.cs index 3abfd15..9729dd3 100644 --- a/EuroTran/Entity/Sugar/SETB_SAL_Booking.cs +++ b/EuroTran/Entity/Sugar/SETB_SAL_Booking.cs @@ -65,6 +65,14 @@ namespace Entity.Sugar public string ServiceID { get; set; } public const string CN_SERVICEID = "ServiceID"; + /// <summary> + /// Desc: + /// Default: + /// Nullable:False + /// </summary> + public string NoticeDetail { get; set; } + public const string CN_NOTICEDETAIL = "NoticeDetail"; + /// <summary> /// Desc: /// Default: diff --git a/EuroTran/WebApp/Controllers/BookingController.cs b/EuroTran/WebApp/Controllers/BookingController.cs index ac9c273..3824ceb 100644 --- a/EuroTran/WebApp/Controllers/BookingController.cs +++ b/EuroTran/WebApp/Controllers/BookingController.cs @@ -7,6 +7,7 @@ using EasyBL.WEBAPP; using EasyBL.WEBAPP.SYS; using Entity.ShowEasyDtos; using Entity.Sugar; +using Entity.ViewModels; using Newtonsoft.Json; using SqlSugar.Base; using System; @@ -49,49 +50,6 @@ namespace WebApp.Controllers return new BookingService().GetBookingCategory(SEToken.Account, LangType); } - ///// <summary> - ///// - ///// </summary> - ///// <param name=""></param> - ///// <returns></returns> - //[HttpGet] - //[SEApiSecurityFilter] - //public HttpResponseMessage Bookings( - // string Lang, - // string SubCategoryIDs, - // string BookingStatuses, - // string PaymentStatuses) - //{ - - // List<string> rsSubCategoryIDs = new List<string>(); - // List<string> rsBookingStatuses = new List<string>(); - // List<string> rsPaymentStatuses = new List<string>(); - - // var SEToken = SETokenUtil.GetToken(this.Request); - - // if (!string.IsNullOrEmpty(SubCategoryIDs)) - // { - // rsSubCategoryIDs = JsonConvert.DeserializeObject<List<string>>(SubCategoryIDs); - // } - - // if (!string.IsNullOrEmpty(BookingStatuses)) - // { - // rsBookingStatuses = JsonConvert.DeserializeObject<List<string>>(BookingStatuses); - // } - - // if (!string.IsNullOrEmpty(PaymentStatuses)) - // { - // rsPaymentStatuses = JsonConvert.DeserializeObject<List<string>>(PaymentStatuses); - // } - - // return new BookingService().GetBookings(SEToken.Account, Lang, rsSubCategoryIDs, rsBookingStatuses, rsPaymentStatuses); - //} - - /// <summary> - /// - /// </summary> - /// <param name=""></param> - /// <returns></returns> [HttpGet] [SEApiSecurityFilter] public HttpResponseMessage BookingCardList( @@ -126,13 +84,21 @@ namespace WebApp.Controllers } [HttpGet] - //[SEApiSecurityFilter] - public HttpResponseMessage Booking (string Lang, string BookingID) + public HttpResponseMessage Booking(string Lang, string BookingID, string BookingNo) + { + return new BookingService().GetOneDetailBooking(Lang, BookingID, BookingNo); + } + + [HttpPost] + [SEApiSecurityFilter] + public HttpResponseMessage Booking(SETB_SAL_Booking Booking) { - //var SEToken = SETokenUtil.GetToken(this.Request); + var SEToken = SETokenUtil.GetToken(this.Request); + + Booking.OrgID = SEToken.OrgID; - return new BookingService().GetOneDetailBooking(Lang, BookingID); + return new BookingService().SaveBooking(SEToken.Account, Booking); } }