using EasyBL.WebApi.Message; using EasyBL.WEBAPP.SYS; using Entity.Sugar; using Entity.ViewModels; using SqlSugar; using SqlSugar.Base; using System; using System.Collections.Generic; namespace EasyBL.WEBAPP.WSM { public class BookingMaintain_UpdService : ServiceBase { #region 預訂維護(單筆查詢 call BookingMaintainQryService QueryOne) /// /// 預訂維護(單筆查詢 call BookingMaintainQryService QueryOne) /// /// /// /// 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 oEntity = db.Queryable ((t1, t2, t3, t4, t5, t6) => new object[] { JoinType.Left, t1.OrgID == t2.OrgID && t1.CreateUser == t2.MemberID, JoinType.Left, t1.OrgID == t3.OrgID && t1.ModifyUser == t3.MemberID, JoinType.Left, t1.ServiceID == t4.ServiceID && t1.OrgID==t4.OrgID && t1.LangType==t4.LangID, JoinType.Left, t1.OrgID == t5.OrgID && t1.Account == t5.Account , JoinType.Left, t1.OrgID == t6.OrgID && t4.SupplierID == t6.SupplierID && t4.LangID == t6.LangType } ) .Where((t1, t2, t3, t4, t5, t6) => t1.OrgID == i_crm.ORIGID && t1.BookingID == sBookingID) .Select((t1, t2, t3, t4, t5, t6) => new View_SAL_BookingOnline { ServiceID = SqlFunc.GetSelfAndAutoFill(t1.ServiceID), CreateUserName = t2.MemberName, ModifyUserName = t3.MemberName, MemberName = t5.LastName + t5.FirstName, MemberEmail=t5.Email, ServiceName=t4.ServiceName, SupplierName=t6.CompanyName }) .Single(); rm = new SuccessResponseMessage(null, i_crm); rm.DATA.Add(BLWording.REL, oEntity); } while (false); } catch (Exception ex) { sMsg = Util.GetLastExceptionMsg(ex); LogAndSendEmail(sMsg + "Params:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(BookingMaintain_UpdService), "", "QueryOne(Onsite管理編輯(單筆查詢))", "", "", ""); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } } return rm; } #endregion 預訂維護(單筆查詢 call BookingMaintainQryService QueryOne) #region 確認 拒絕 /// /// 確認 /// /// /// public ResponseMessage UpdateBookingStatus(RequestMessage i_crm) { ResponseMessage rm = null; string sMsg = null; string sError = null; try { rm = SugarBase.ExecTran(db => { do { var sPayType = _fetchString(i_crm, @"PayType"); var sBookingNo = _fetchString(i_crm, @"BookingNo"); var sBookingID = _fetchString(i_crm, @"BookingID"); var sSupplierStatus = _fetchString(i_crm, @"SupplierStatus"); var sBookingStatus = _fetchString(i_crm, @"BookingStatus"); var oBookingOnline = new SETB_SAL_BookingOnline { SupplierStatus= sSupplierStatus, BookingStatus= sBookingStatus, ModifyUser = i_crm.USERID, ModifyDate = DateTime.Now }; var iRel = db.Updateable(oBookingOnline) .UpdateColumns(it => new { it.SupplierStatus, it.BookingStatus, it.ModifyUser, it.ModifyDate }) .Where(x => x.BookingID == sBookingID && x.OrgID == i_crm.ORIGID).ExecuteCommand(); if (iRel > 0) { //if (sSupplierStatus == "01") { // //當時確認訂單后,需要產生一筆賬單資料 // var PayPayment = new SETB_SAL_Payment(); // PayPayment.PaymentID = Guid.NewGuid().ToString(); // PayPayment.BookingID = sBookingID; // PayPayment.PaymentNo = sBookingNo + "-01"; // PayPayment.PaymentMethod = sPayType; // PayPayment.CreateDate = DateTime.Now; // PayPayment.ModifyDate = DateTime.Now; // iRel = db.Insertable(PayPayment).ExecuteCommand(); //} //確認 后給會員發信息講已確認 var saDataList = db.Queryable((t1, t2) => new object[] { JoinType.Left, t1.OrgID == t2.OrgID && t1.BookingID == sBookingID && t1.Account == t2.Account, }) .Where((t1, t2) => t1.OrgID == i_crm.ORIGID && t1.BookingID == sBookingID) .Select((t1, t2) => new SETB_CMS_Member { MemberID = SqlFunc.GetSelfAndAutoFill(t2.MemberID) }).ToList(); if (saDataList.Count > 0){ try { //開始寄信 var oEmail = new Emails(); //寄件人 var toEmail = new List(); //收件人 foreach (var Contactor in saDataList) { var oEmailTo = new EmailTo //收件人資訊 { ToUserName = Contactor.LastName+ Contactor.FirstName, ToEmail = Contactor.Email, Type = "to" }; toEmail.Add(oEmailTo); } oEmail.Title = sSupplierStatus=="01"? "訂單確認通知": "訂單取消通知"; //取fonfig oEmail.EmailBody = sSupplierStatus == "01"? "您好,恭喜您,您預定的項目已被確認,請您與5天内完成匯款,感謝!": "您好,非常抱歉,您預定的項目未審核通過。"; oEmail.IsCCSelf = false; oEmail.Attachments = null; oEmail.EmailTo = toEmail; var bSend = new MailService(i_crm.ORIGID, true).MailFactory(oEmail, out sError); } catch (Exception) { throw; } } } rm = new SuccessResponseMessage(null, i_crm); rm.DATA.Add(BLWording.REL, iRel); } while (false); return rm; }); } catch (Exception ex) { sMsg = Util.GetLastExceptionMsg(ex); LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(BookingMaintain_UpdService), @"Onsite管理編輯", @"Update(Onsite管理編輯(修改))", @"", @"", @""); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } } return rm; } #endregion Onsite管理其他資訊編輯(修改) #region 修改狀態 /// /// 供應商管理編輯(修改) /// /// todo: describe i_crm parameter on UpdImportCustomers /// public ResponseMessage Update(RequestMessage i_crm) { ResponseMessage rm = null; string sMsg = null; try { rm = SugarBase.ExecTran(db => { do { var sBookingID = _fetchString(i_crm, @"BookingID"); var oNewEntity = _fetchEntity(i_crm); var oBookingOnline = new SETB_SAL_BookingOnline { PaymentStatus = oNewEntity.PaymentStatus, BookingStatus = oNewEntity.BookingStatus, Message= oNewEntity.Message, ModifyUser = i_crm.USERID, ModifyDate = DateTime.Now }; var iRel = db.Updateable(oBookingOnline) .UpdateColumns(it => new { it.PaymentStatus, it.BookingStatus, it.Message, it.ModifyUser, it.ModifyDate }) .Where(x => x.BookingID == sBookingID && x.OrgID == i_crm.ORIGID).ExecuteCommand(); rm = new SuccessResponseMessage(null, i_crm); rm.DATA.Add(BLWording.REL, iRel); } while (false); return rm; }); } 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); } } return rm; } #endregion 供應商管理編輯(修改) //public ResponseMessage SaveBooking(SETB_SAL_Booking Booking) { // ResponseMessage rsResult = null; // if (string.IsNullOrEmpty(Booking.BookingID)) // { // // insert // rsResult = Insert(Booking); // } // else { // // update // rsResult = UpdateBooking(Booking); // } // return rsResult; //} public ResponseMessage SaveBooking(SETB_SAL_BookingOnline Booking) { ResponseMessage rsResult = null; //if (string.IsNullOrEmpty(Booking.BookingID)) //{ // // insert // rsResult = Insert(Booking); //} //else //{ // // update // rsResult = UpdateBooking(Booking); //} return rsResult; } #region 預訂維護(新增) /// /// 預訂維護(新增) /// /// todo: describe i_crm parameter on UpdImportCustomers /// /// Origtek framwork API public ResponseMessage Insert(SETB_SAL_Booking Booking) { ResponseMessage rm = null; string sMsg = null; try { rm = SugarBase.ExecTran(db => { do { var sBookingID = Guid.NewGuid().ToString(); Booking.BookingID = sBookingID; Booking.DelStatus = "N"; Booking.Effective = "Y"; var iRel = db.Insertable(Booking).ExecuteCommand(); rm = new SuccessResponseMessage(null, null); rm.DATA.Add(BLWording.REL, iRel); } while (false); return rm; }); } catch (Exception ex) { sMsg = Util.GetLastExceptionMsg(ex); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, null); } } return rm; } #endregion 預訂維護(新增) #region 預訂維護(修改) /// /// 預訂維護(修改) /// /// todo: describe i_crm parameter on UpdImportCustomers /// /// Origtek framwork API public ResponseMessage UpdateBooking(SETB_SAL_Booking Booking) { ResponseMessage rm = null; string sMsg = null; try { rm = SugarBase.ExecTran(db => { do { var iRel = db.Updateable(Booking) .IgnoreColumns(x => new { x.CreateUser, x.CreateDate }).ExecuteCommand(); rm = new SuccessResponseMessage(null, null); rm.DATA.Add(BLWording.REL, iRel); } while (false); return rm; }); } catch (Exception ex) { sMsg = Util.GetLastExceptionMsg(ex); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, null); } } return rm; } #endregion 預訂維護(修改) #region 預訂維護(刪除) /// /// 預訂維護(刪除) /// /// todo: describe i_crm parameter on UpdImportCustomers /// /// Origtek framwork API public ResponseMessage Delete(RequestMessage i_crm) { ResponseMessage rm = null; string sMsg = null; try { rm = SugarBase.ExecTran(db => { do { string sBookingID = ""; if (!String.IsNullOrEmpty(_fetchString(i_crm, @"BookingID"))) { sBookingID = _fetchString(i_crm, @"BookingID"); } var oEntity = db.Queryable().Single(x => x.OrgID == i_crm.ORIGID && x.BookingID == sBookingID); //HardDeleteAll(i_crm, oEntity); //var iRel = db.Deleteable() //.Where(t1 => t1.BookingID == sBookingID) //.ExecuteCommand(); // Soft delete var iRel = db.Updateable() .UpdateColumns(x => new SETB_SAL_Booking { DelStatus = "Y" }) .Where(t1 => t1.OrgID == i_crm.ORIGID) .Where(t1 => t1.BookingID == sBookingID) .ExecuteCommand(); var iRelUp = db.Updateable() .UpdateColumns(x => new SETB_SAL_Booking { OrderByValue = x.OrderByValue - 1 }) .Where(x => x.OrgID == oEntity.OrgID && x.BookingID == oEntity.BookingID && x.OrderByValue > oEntity.OrderByValue) .ExecuteCommand(); rm = new SuccessResponseMessage(null, i_crm); rm.DATA.Add(BLWording.REL, iRel); } while (false); return rm; }); } catch (Exception ex) { sMsg = Util.GetLastExceptionMsg(ex); LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(BookingMaintain_UpdService), "", "Delete 預訂維護(刪除)", "", "", ""); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } } return rm; } #endregion 預訂維護(刪除) #region 預訂維護(更新排序) /// /// 預訂維護(更新排序) /// /// todo: describe i_crm parameter on UpdImportCustomers /// /// Origtek framwork API public ResponseMessage UpdateOrderByValue(RequestMessage i_crm) { ResponseMessage rm = null; string sMsg = null; try { rm = SugarBase.ExecTran(db => { do { string sBookingID = ""; sBookingID = _fetchString(i_crm, @"Id"); if (!String.IsNullOrEmpty(_fetchString(i_crm, @"BookingID"))) { sBookingID = _fetchString(i_crm, @"BookingID"); } var iOldOrderByValue = _fetchInt(i_crm, @"OldOrderByValue"); var iNewOrderByValue = _fetchInt(i_crm, @"NewOrderByValue"); var oOrderEntity = db.Queryable().Single(x => x.OrgID == i_crm.ORIGID && x.BookingID == sBookingID); if (iNewOrderByValue > iOldOrderByValue) { var iRelUp = db.Updateable() .UpdateColumns(x => new SETB_SAL_Booking { OrderByValue = x.OrderByValue - 1 }) .Where(x => x.OrgID == oOrderEntity.OrgID && x.OrderByValue <= iNewOrderByValue && x.OrderByValue > iOldOrderByValue) .ExecuteCommand(); } else { var iRelDown = db.Updateable() .UpdateColumns(x => new SETB_SAL_Booking { OrderByValue = x.OrderByValue + 1 }) .Where(x => x.OrgID == oOrderEntity.OrgID && x.OrderByValue >= iNewOrderByValue && x.OrderByValue < iOldOrderByValue) .ExecuteCommand(); } var iRelSelf = db.Updateable(new SETB_SAL_Booking { OrderByValue = iNewOrderByValue }) .UpdateColumns(x => x.OrderByValue) .Where(x => x.OrgID == i_crm.ORIGID && x.BookingID == sBookingID).ExecuteCommand(); rm = new SuccessResponseMessage(null, i_crm); rm.DATA.Add(BLWording.REL, iRelSelf); } while (false); return rm; }); } catch (Exception ex) { sMsg = Util.GetLastExceptionMsg(ex); LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(BookingMaintain_UpdService), "", "UpdateOrderByValue 預訂維護(更新排序)", "", "", ""); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } } return rm; } #endregion 預訂維護(更新排序) #region 預訂維護(查詢筆數 call BookingMaintain_QryService QueryCout) /// /// 預訂維護(查詢筆數 call BookingMaintain_QryService QueryCout) /// /// /// /// Origtek framwork API public ResponseMessage QueryCout(RequestMessage i_crm) { BookingMaintain_QryService bm_qry = new BookingMaintain_QryService(); ResponseMessage rm = bm_qry.QueryCout(i_crm); return rm; } #endregion 預訂維護(查詢筆數 call BookingMaintain_QryService QueryCout) #region 預訂維護(List 預訂狀態選單查詢 call BookingMaintain_QryService QueryBookingStatusList) /// /// 預訂維護(List 預訂狀態選單查詢 call BookingMaintain_QryService QueryBookingStatusList) /// /// /// public ResponseMessage QueryBookingStatusList(RequestMessage i_crm) { BookingMaintain_QryService bm_qry = new BookingMaintain_QryService(); ResponseMessage rm = bm_qry.QueryBookingStatusList(i_crm); return rm; } #endregion 預訂維護(List 預訂狀態選單查詢 call BookingMaintain_QryService QueryBookingStatusList) #region 預訂維護(List 供應商狀態選單查詢 call BookingMaintain_QryService QuerySupplierStatusList) /// /// 預訂維護(List 供應商狀態選單查詢 call BookingMaintain_QryService QuerySupplierStatusList) /// /// /// public ResponseMessage QuerySupplierStatusList(RequestMessage i_crm) { BookingMaintain_QryService bm_qry = new BookingMaintain_QryService(); ResponseMessage rm = bm_qry.QuerySupplierStatusList(i_crm); return rm; } #endregion 預訂維護(List 供應商狀態選單查詢 call BookingMaintain_QryService QuerySupplierStatusList) #region 預訂維護(List 付款狀態選單查詢 call BookingMaintain_QryService QueryPaymentStatusList) /// /// 預訂維護(List 付款狀態選單查詢 call BookingMaintain_QryService QueryPaymentStatusList) /// /// /// /// public ResponseMessage QueryPaymentStatusList(RequestMessage i_crm) { BookingMaintain_QryService bm_qry = new BookingMaintain_QryService(); ResponseMessage rm = bm_qry.QueryPaymentStatusList(i_crm); return rm; } #endregion 預訂維護(List 付款狀態選單查詢 call BookingMaintain_QryService QueryPaymentStatusList) #region 預訂維護(List 幣別列表 call BookingMaintain_QryService QueryCurrencyList) /// /// 預訂維護(List 幣別列表 call BookingMaintain_QryService QueryCurrencyList) /// /// /// public ResponseMessage QueryCurrencyList(RequestMessage i_crm) { BookingMaintain_QryService bm_qry = new BookingMaintain_QryService(); ResponseMessage rm = bm_qry.QueryCurrencyList(i_crm); return rm; } #endregion 預訂維護(List 幣別列表 call BookingMaintain_QryService QueryCurrencyList) } }