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.
 
 
 
 
 

640 lines
25 KiB

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)
/// <summary>
/// 預訂維護(單筆查詢 call BookingMaintainQryService QueryOne)
/// </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 oEntity = db.Queryable<SETB_SAL_BookingOnline, OTB_SYS_Members, OTB_SYS_Members, SETB_PDT_ONSiteBaseInfo, SETB_CMS_Member, SETB_SCM_Supplier>
((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 確認 拒絕
/// <summary>
/// 確認
/// </summary>
/// <param name="i_crm"></param>
/// <returns></returns>
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<SETB_SAL_BookingOnline, SETB_CMS_Member>((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<EmailTo>(); //收件人
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 修改狀態
/// <summary>
/// 供應商管理編輯(修改)
/// </summary>
/// <param name="i_crm">todo: describe i_crm parameter on UpdImportCustomers</param>
/// <returns></returns>
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<SETB_SAL_BookingOnline>(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 預訂維護(新增)
/// <summary>
/// 預訂維護(新增)
/// </summary>
/// <param name="i_crm">todo: describe i_crm parameter on UpdImportCustomers</param>
/// <returns></returns>
/// 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 預訂維護(修改)
/// <summary>
/// 預訂維護(修改)
/// </summary>
/// <param name="i_crm">todo: describe i_crm parameter on UpdImportCustomers</param>
/// <returns></returns>
/// 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 預訂維護(刪除)
/// <summary>
/// 預訂維護(刪除)
/// </summary>
/// <param name="i_crm">todo: describe i_crm parameter on UpdImportCustomers</param>
/// <returns></returns>
/// 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<SETB_SAL_Booking>().Single(x => x.OrgID == i_crm.ORIGID && x.BookingID == sBookingID);
//HardDeleteAll(i_crm, oEntity);
//var iRel = db.Deleteable<SETB_SAL_Booking>()
//.Where(t1 => t1.BookingID == sBookingID)
//.ExecuteCommand();
// Soft delete
var iRel = db.Updateable<SETB_SAL_Booking>()
.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<SETB_SAL_Booking>()
.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 預訂維護(更新排序)
/// <summary>
/// 預訂維護(更新排序)
/// </summary>
/// <param name="i_crm">todo: describe i_crm parameter on UpdImportCustomers</param>
/// <returns></returns>
/// 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<SETB_SAL_Booking>().Single(x => x.OrgID == i_crm.ORIGID && x.BookingID == sBookingID);
if (iNewOrderByValue > iOldOrderByValue)
{
var iRelUp = db.Updateable<SETB_SAL_Booking>()
.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<SETB_SAL_Booking>()
.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)
/// <summary>
/// 預訂維護(查詢筆數 call BookingMaintain_QryService QueryCout)
/// </summary>
/// <param name="i_crm"></param>
/// <returns></returns>
/// 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)
/// <summary>
/// 預訂維護(List 預訂狀態選單查詢 call BookingMaintain_QryService QueryBookingStatusList)
/// </summary>
/// <param name="i_crm"></param>
/// <returns></returns>
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)
/// <summary>
/// 預訂維護(List 供應商狀態選單查詢 call BookingMaintain_QryService QuerySupplierStatusList)
/// </summary>
/// <param name="i_crm"></param>
/// <returns></returns>
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)
/// <summary>
/// 預訂維護(List 付款狀態選單查詢 call BookingMaintain_QryService QueryPaymentStatusList)
/// </summary>
/// <param name="i_crm"></param>
/// <returns></returns>
///
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)
/// <summary>
/// 預訂維護(List 幣別列表 call BookingMaintain_QryService QueryCurrencyList)
/// </summary>
/// <param name="i_crm"></param>
/// <returns></returns>
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)
}
}