/// <summary> /// Xử lý calc. /// </summary> /// <param name="inputObject">DataModel</param> /// <returns>DataModel</returns> public CalcDataModel Execute(CalcDataModel inputObject) { // Kiểm tra thông tin Check(inputObject); // Lấy thông tin var resultObject = GetInfo(inputObject); // Kết quả trả về return resultObject; }
/// <summary> /// Kiểm tra thông tin. /// </summary> /// <param name="inputObject">DataModel</param> private void Check(CalcDataModel inputObject) { // Khởi tạo biến cục bộ var masterDataCom = new MasterDataCom(); // Kiểm tra bắt buộc if (DataCheckHelper.IsNull(inputObject.TypeCd)) { throw new SysIgnoreException(); } if (DataCheckHelper.IsNull(inputObject.DateFrom)) { throw new SysIgnoreException(); } if (DataCheckHelper.IsNull(inputObject.DateTo)) { throw new SysIgnoreException(); } if (DataCheckHelper.IsNull(inputObject.RoomQty)) { throw new SysIgnoreException(); } // Kiểm tra dữ liệu tồn tại var isExist = masterDataCom.IsExistRoomType( WebContextHelper.LocaleCd, inputObject.TypeCd, false); if (!isExist) { throw new SysIgnoreException(); } }
/// <summary> /// Lấy thông tin. /// </summary> /// <param name="inputObject">DataModel</param> /// <returns>DataModel</returns> private CalcDataModel GetInfo(CalcDataModel inputObject) { // Khởi tạo biến cục bộ var getResult = new CalcDataModel(); var masterDataCom = new MasterDataCom(); var parameterCom = new ParameterCom(); var total = decimal.Zero; var pickUpPrice = decimal.Zero; var seeOffPrice = decimal.Zero; // Map dữ liệu DataHelper.CopyObject(inputObject, getResult); // Lấy thông tin var dataInfo = masterDataCom.GetInfoRoomType( WebContextHelper.LocaleCd, inputObject.TypeCd, false); // Lấy giá phòng và số ngày thuê var price = dataInfo.Price.Value; var roomQty = inputObject.RoomQty.Value; var days = GetDays(inputObject.DateFrom.Value, inputObject.DateTo.Value); // Lấy số tiền dưa đón khách if (inputObject.HasPickUp.HasValue && inputObject.HasPickUp.Value) { pickUpPrice = parameterCom.GetNumber(W150901Logics.CD_PARAM_CD_BOOKING_PICKUP, true).Value; } if (inputObject.HasSeeOff.HasValue && inputObject.HasSeeOff.Value) { seeOffPrice = parameterCom.GetNumber(W150901Logics.CD_PARAM_CD_BOOKING_SEEOFF, true).Value; } // Tiến hành tính toán tổng tiền total = (price * roomQty * days) + pickUpPrice + seeOffPrice; // Gán giá trị trả về getResult.Total = total; getResult.Price = price; getResult.Days = days; getResult.PickUpPrice = pickUpPrice; getResult.SeeOffPrice = seeOffPrice; // Kết quả trả về return getResult; }