public PkgEventsModel QueryPkgEvents([FromBody] QueryProductModel queryRQ) { Website.Instance.logger.Info($"WMS QueryEvent Start! B2D Xid:{queryRQ.company_xid},KKday ProdOid:{queryRQ.prod_no}"); PkgEventsModel pkg_events = PackageRepository.GetPkgEvents(queryRQ); return(pkg_events); }
/// <summary> /// Gets the package events. /// </summary> /// <returns>The package events.</returns> /// <param name="rq">Rq.</param> //取得套餐場次 public static PkgEventsModel GetPkgEvents(QueryProductModel rq) { PkgEventsModel pkgEvnt = new PkgEventsModel(); List <Event> et = new List <Event>(); try { JObject obj = PackageProxy.getEvents(rq); if (obj["content"]["result"].ToString() != "0000") { pkgEvnt.result = obj["content"]["result"].ToString(); pkgEvnt.result_msg = $"kkday event api response msg is not correct! {obj["content"]["msg"].ToString()}"; throw new Exception($"kkday event api response msg is not correct! {obj["content"]["msg"].ToString()}"); } #region --1.取回傳資料是否成功的訊息-- pkgEvnt.result = obj["content"]["result"].ToString(); pkgEvnt.result_msg = obj["content"]["msg"].ToString(); pkgEvnt.pkg_no = (int)obj["content"]["eventData"][0]["pkgOid"]; pkgEvnt.is_hl = obj["content"]["eventData"][0]["isBackup"].ToString(); #endregion #region --2.從傑森物件取『套餐場次列表』-- JArray jEt = (JArray)obj["content"]["eventData"][0]["events"]; for (int i = 0; i < jEt.Count; i++) { var model = new Event(); model.day = jEt[i]["day"].ToString(); model.event_times = jEt[i]["eventTimes"].ToString(); et.Add(model); } pkgEvnt.events = et; #endregion } catch (Exception ex) { pkgEvnt.result = "10001"; pkgEvnt.result_msg = $"Events ERROR :{ex.Message},{ex.StackTrace}"; Website.Instance.logger.FatalFormat($"Events ERROR:{ex.Message},{ex.StackTrace}"); } return(pkgEvnt); }
[HttpPost]//[AcceptVerbs("Post")] public IActionResult GetEventTime([FromBody] prodEvent prodEvent) { try { //B2d分銷商資料 var aesUserData = User.Identities.SelectMany(i => i.Claims.Where(c => c.Type == ClaimTypes.UserData).Select(c => c.Value)).FirstOrDefault(); var UserData = JsonConvert.DeserializeObject <B2dAccount>(AesCryptHelper.aesDecryptBase64(aesUserData, Website.Instance.AesCryptKey)); //取挖字 String json = TempData["ProdTitleKeep"] as string; if (string.IsNullOrEmpty(json)) { throw new Exception("資料錯誤,請重新讀取頁面"); } ProdTitleModel title = JsonConvert.DeserializeObject <ProdTitleModel>(json); TempData.Keep(); PkgEventsModel getEventTime = ProductRepostory.getEvent(UserData.COMPANY_XID, UserData.COUNRTY_CODE, UserData.LOCALE, UserData.CURRENCY, prodEvent.prodno, prodEvent.pkgno, title); if (getEventTime.result == "0000") { var result = getEventTime.events.Where(x => x.day == prodEvent.DateSelected); //result = new List<Event> { }; getEventTime.events = result.ToList(); return(Json(new { errMsg = "", data = result.ToList() })); } else { return(Json(new { errMsg = "false" })); } } catch (Exception ex) { //error Website.Instance.logger.Debug($"product_eventtime_err:{ex.ToString()}"); returnStatus status = new returnStatus(); status.status = "Error"; status.msgErr = "資料錯誤,請重新讀取頁面";//要改 return(Json(status)); } }
//套餐日期 public static String getPkgEventDate(PkgEventsModel pkgEvent, string inPkgOi, int?bookintQty) { //event 要有位控且位控>=訂購數 string dayTemp = ""; foreach (Event e in pkgEvent.events) { string[] times = e.event_times.Split(","); foreach (string s in times) { int qty = Convert.ToInt32(s.Split("_")[2]); DateTime day = DateTimeTool.yyyyMMdd2DateTime(e.day); if (qty >= bookintQty) { dayTemp = dayTemp + day.ToString("yyyy-MM-dd") + ","; } break; } } dayTemp = dayTemp.Substring(0, dayTemp.Length - 1); return(dayTemp); }
//組出booking 頁右邊顯示的內容 public static BookingShowProdModel setBookingShowProd(ProductModel prod, PkgDetailModel pkg, confirmPkgInfo confirm, string currency, PkgEventsModel pkgEvent, ProdTitleModel prodTitle) { BookingShowProdModel prodShow = new BookingShowProdModel(); prodShow.prodOid = prod.prod_no.ToString(); prodShow.prodName = prod.prod_name; prodShow.currency = currency; prodShow.sDate = DateTimeTool.yyyy_mm_dd(confirm.selDate); prodShow.price1Qty = confirm.price1Qty; prodShow.price2Qty = confirm.price2Qty; prodShow.price3Qty = confirm.price3Qty; prodShow.price4Qty = confirm.price4Qty; prodShow.price1 = pkg.price1; prodShow.price2 = pkg.price2; prodShow.price3 = pkg.price3; prodShow.price4 = pkg.price4; prodShow.eventOid = confirm.pkgEvent; if (prod.img_list.Count > 0) { prodShow.photoUrl = Website.Instance.Configuration["kkUrl:imgUrl"].ToString() + prod.img_list[0].img_kkday_url; } prodShow.isRank = pkg.is_unit_pirce == "RANK" ? true : false; prodShow.pkgOid = pkg.pkg_no; prodShow.pkgName = pkg.pkg_name; prodShow.totoalPrice = (prodShow.price1Qty * prodShow.price1) + (prodShow.price2Qty * prodShow.price2) + (prodShow.price3Qty * prodShow.price3) + (prodShow.price4Qty * prodShow.price4); prodShow.unitText = pkg.unit_txt; if (pkgEvent != null) { var eTemp = pkgEvent.events.Where(x => x.day.Equals(confirm.selDate)); foreach (Event e in eTemp) { string[] times = e.event_times.Split(","); foreach (string s in times) { string id = s.Split("_")[0]; if (id.Equals(confirm.pkgEvent)) { prodShow.eventTime = s.Split("_")[1]; break; } } } } //設定回覆確試時間 if (prod.confirm_order_time == 0) { prodShow.confirm_order_time = prodTitle.common_imm_confirm; } else { prodShow.confirm_order_time = prodTitle.booking_step3_check_confirm_hour.Replace("%d", prod.confirm_order_time.ToString()); } return(prodShow); }
// GET: /<controller>/ public IActionResult Index(string guid) { try { //B2d分銷商資料 var aesUserData = User.Identities.SelectMany(i => i.Claims.Where(c => c.Type == ClaimTypes.UserData).Select(c => c.Value)).FirstOrDefault(); var UserData = JsonConvert.DeserializeObject <B2dAccount>(AesCryptHelper.aesDecryptBase64(aesUserData, Website.Instance.AesCryptKey)); string ip = httpContextAccessor.HttpContext.Request.HttpContext.Connection.RemoteIpAddress.ToString().Replace("::1", "127.0.0.1"); //取挖字 Dictionary <string, string> uikey = CommonRepostory.getuiKey(RedisHelper, UserData.LOCALE);// RedisHelper.getuiKey(fakeContact.lang); ProdTitleModel title = JsonConvert.DeserializeObject <ProdTitleModel>(JsonConvert.SerializeObject(uikey)); if (guid == null) { throw new Exception(title.common_data_error); } confirmPkgInfo confirm = JsonConvert.DeserializeObject <confirmPkgInfo>(RedisHelper.getRedis("bid:ec:confirm:" + guid)); if (confirm == null) { throw new Exception(title.common_data_error); } //從 api取 ProductModuleModel module = ProductRepostory.getProdModule(UserData.COMPANY_XID, UserData.COUNRTY_CODE, UserData.LOCALE, UserData.CURRENCY, confirm.prodOid, confirm.pkgOid, title); ProductModel prod = ProductRepostory.getProdDtl(UserData.COMPANY_XID, UserData.COUNRTY_CODE, UserData.LOCALE, UserData.CURRENCY, confirm.prodOid, title); PackageModel pkgs = ProductRepostory.getProdPkg(UserData.COMPANY_XID, UserData.COUNRTY_CODE, UserData.LOCALE, UserData.CURRENCY, confirm.prodOid, title); if (prod.result != "0000") { Website.Instance.logger.Debug($"booking_index_getProdDtl_err:prodOid->{confirm.prodOid} ,msg-> {prod.result_msg}"); throw new Exception(title.result_code_9990); } if (pkgs.result != "0000") { Website.Instance.logger.Debug($"booking_index_getProdPkg_err:prodOid->{confirm.prodOid},pkgOid ->{confirm.pkgOid} ,msg-> {prod.result_msg}"); throw new Exception(title.result_code_9990); } string flightInfoType = ""; string sendInfoType = ""; PkgDetailModel pkg = null; PkgEventsModel pkgEvent = null; CusAgeRange cusAgeRange = null; string isEvent = "N"; string isHl = "N"; var pkgsTemp = pkgs.pkgs.Where(x => x.pkg_no == confirm.pkgOid).ToList(); if (pkgsTemp.Count() > 0) { foreach (PkgDetailModel p in pkgsTemp) { pkg = p; flightInfoType = p.module_setting.flight_info_type.value; sendInfoType = p.module_setting.send_info_type.value; cusAgeRange = BookingRepostory.getCusAgeRange(confirm, p); isEvent = p.is_event; isHl = p.is_hl; } } else { //丟錯誤頁 Website.Instance.logger.Debug($"booking_index_err:商編->{confirm.prodOid}即有pkgs找不到對應的pkgoid->{ confirm.pkgOid}"); throw new Exception(title.common_data_error); } //如果有event 但沒有傳 event id ,就error if (isEvent == "Y" && string.IsNullOrEmpty(confirm.pkgEvent)) { throw new Exception(title.common_data_error); } if (isEvent == "Y") { pkgEvent = ApiHelper.getPkgEvent(UserData.COMPANY_XID, UserData.COUNRTY_CODE, UserData.LOCALE, UserData.CURRENCY, confirm.prodOid, confirm.pkgOid, title); } //pmgw PmchLstResponse pmchRes = ApiHelper.getPaymentListRes(prod.countries, prod.prod_no.ToString(), DateTime.Now.ToString("yyyy-MM-dd"), DateTime.Now.ToString("yyyy-MM-dd"), DateTimeTool.yyyyMMdd2DateTime(confirm.selDate).ToString("yyyy-MM-dd"), DateTimeTool.yyyyMMdd2DateTime(confirm.selDate).ToString("yyyy-MM-dd"), UserData.COUNRTY_CODE, UserData.LOCALE, prod.prod_type, ip, prod.prod_hander, UserData.CURRENCY, title); Pmgw pmgw = null; if (UserData.CURRENCY == "TWD") { pmgw = pmchRes.pmchlist.Where(x => x.acctdocReceiveMethod == "ONLINE_CITI" && x.pmchCode == "B2D_CITI_TWD").FirstOrDefault(); } else { pmgw = pmchRes.pmchlist.Where(x => x.acctdocReceiveMethod == "ONLINE_HK_ADYEN").FirstOrDefault(); } //必須要設定人數 //var cusData = BookingRepostory.getCusDdate(); int totalCus = 0; if (module.module_cust_data != null) { if (module.module_cust_data.is_require == true) { totalCus = (module.module_cust_data.cus_type == "01") ? 1 : Convert.ToInt32(confirm.price1Qty + confirm.price2Qty + confirm.price3Qty + confirm.price4Qty); } } //滿足國家 List <Country> country = prod.countries; string nationName = ""; if (country.Count > 0) { nationName = country[0].name; } //將dataModel原型 以json str 帶到前台的hidden DataModel dm = DataSettingRepostory.getDefaultDataModel(totalCus, guid); dm.guidNo = guid; String dataModelStr = JsonConvert.SerializeObject(dm); //dm.travelerData[0].meal.mealType ViewData["dataModelStr"] = dataModelStr; VenueInfo venue = module.module_venue_info; if (venue == null) { venue = new VenueInfo(); venue.is_require = false; } RentCar rentCar = module.module_rent_car; if (rentCar == null) { rentCar = new RentCar(); rentCar.is_require = false; } ViewData["confirmPkgInfo"] = confirm; ViewData["contactInfo"] = UserData; ViewData["cusData"] = module.module_cust_data; ViewData["guide"] = module.module_guide_lang_list; ViewData["wifi"] = module.module_sim_wifi; ViewData["exchange"] = module.module_exchange_location_list; ViewData["flightInfo"] = module.module_flight_info; ViewData["venue"] = venue; // module.module_venue_info; ViewData["useDate"] = DateTimeTool.yyyy_mm_dd(confirm.selDate); //DateTimeTool.yyyy_mm_dd(); ViewData["rentCar"] = rentCar; // module.module_rent_car; ViewData["carPsgr"] = module.module_car_pasgr; //車輛資料 ViewData["sendData"] = module.module_send_data; ViewData["contactData"] = module.module_contact_data; ViewData["nationName"] = nationName; ViewData["guid"] = guid; ViewData["prodTitle"] = title; ViewData["totalCus"] = totalCus; ViewData["mainCat"] = prod.prod_type; ViewData["flightInfoType"] = flightInfoType; ViewData["sendInfoType"] = sendInfoType; ViewData["CutOfDay"] = prod.before_order_day; ViewData["cusAgeRange"] = cusAgeRange; BookingShowProdModel show = BookingRepostory.setBookingShowProd(prod, pkg, confirm, UserData.CURRENCY, pkgEvent, title); ViewData["prodShow"] = show; ViewData["isEvent"] = isEvent; // ViewData["isHl"] = isHl; //如果是N就不用做 ViewData["pkgCanUseDate"] = (isHl == "Y" && isEvent == "Y") ? BookingRepostory.getPkgEventDate(pkgEvent, confirm.pkgOid, (confirm.price1Qty + confirm.price2Qty + confirm.price3Qty + confirm.price4Qty)) : ""; //要把這個套餐可以用的日期全抓出來 ViewData["pmgw"] = pmgw; //放到session TempData["prod_" + guid] = JsonConvert.SerializeObject(prod); TempData["pkgEvent_" + guid] = (isHl == "Y" && isEvent == "Y") ? JsonConvert.SerializeObject(pkgEvent) : ""; TempData["module_" + guid] = JsonConvert.SerializeObject(module); TempData["confirm_" + guid] = JsonConvert.SerializeObject(confirm); TempData["ProdTitleKeep_" + guid] = JsonConvert.SerializeObject(title); TempData["pkg_" + guid] = JsonConvert.SerializeObject(pkg); TempData["pkgsDiscRule_" + guid] = JsonConvert.SerializeObject(pkgs.discount_rule); TempData["prodShow_" + guid] = JsonConvert.SerializeObject(show); TempData["pmgw_" + guid] = JsonConvert.SerializeObject(pmgw); return(View()); } catch (Exception ex) { ViewData["errMsg"] = ex.Message.ToString(); Website.Instance.logger.Debug($"booking_index_err:{ex.Message.ToString()}"); //導到錯誤頁 return(RedirectToAction("Index", "Error", new ErrorViewModel { ErrorType = ErrorType.Invalid_Common })); } }
public IActionResult getEvent([FromBody] EventQury Eventday) { returnBookingEventStatus status = new returnBookingEventStatus(); try { List <string> dayevent = new List <string>(); string day = Eventday.day.Replace("-", ""); string titleJson = (string)TempData["ProdTitleKeep_" + Eventday.guid]; string pkgEventJson = (string)TempData["pkgEvent_" + Eventday.guid]; string confirmJson = (string)TempData["confirm_" + Eventday.guid]; if (string.IsNullOrEmpty(titleJson)) { throw new Exception("資料錯誤,請重新讀取頁面"); } if (string.IsNullOrEmpty(pkgEventJson)) { throw new Exception("資料錯誤,請重新讀取頁面"); } if (string.IsNullOrEmpty(confirmJson)) { throw new Exception("資料錯誤,請重新讀取頁面"); } ProdTitleModel title = JsonConvert.DeserializeObject <ProdTitleModel>(titleJson); PkgEventsModel pkgEvent = JsonConvert.DeserializeObject <PkgEventsModel>(pkgEventJson); confirmPkgInfo confirm = JsonConvert.DeserializeObject <confirmPkgInfo>(confirmJson); var eTemp = pkgEvent.events.Where(x => x.day.Equals(day)); TempData.Keep(); int?BookingQty = (confirm.price1Qty + confirm.price2Qty + confirm.price3Qty + confirm.price4Qty); if (eTemp.Count() > 0) { foreach (Event e in eTemp) { string[] eventTime = e.event_times.Split(','); foreach (string s in eventTime) { string id = s.Split("_")[0]; int Qty = Convert.ToInt32(s.Split("_")[2]); if (Qty >= BookingQty && ((day != confirm.selDate) || (day == confirm.selDate && confirm.pkgEvent != id))) { dayevent.Add(s); } } } status.status = "OK"; status.msgErr = ""; status.dayevent = dayevent; return(Json(status)); } else { //再補回傳的格式 status.status = "FAIL"; status.msgErr = title.product_index_no_event_avalible; return(Json(status)); } } catch (Exception ex) { Website.Instance.logger.Debug($"bookingStep1_getEventerr:eventTime->{JsonConvert.SerializeObject(Eventday)} ,{ex.ToString()}"); //再補回傳的格式 status.status = "FAIL"; status.msgErr = "資料錯誤,請重新讀取頁面"; return(Json(status)); } }