public void Get_Package_Tariff_With_6000_Kw() { var packageProduct = new PackageProduct(); var cost = packageProduct.CostCalulation(6000); Assert.Equal(1400, cost); }
public void Get_Package_Tariff_With_Negitive_Kw() { var packageProduct = new PackageProduct(); var cost = packageProduct.CostCalulation(-1); Assert.Equal(0, cost); }
public void Get_Package_Tariff_With_Wrong_Kw() { var packageProduct = new PackageProduct(); var cost = packageProduct.CostCalulation(12); Assert.Equal(800, cost); }
public async Task <ActionResult <PackageProduct> > DeletePackProd(int id) { var result = new Result <PackageProduct>(); PackageProduct packageProduct = await _context.PackageProduct.FindAsync(id); if (packageProduct == null) { return(NotFound()); } else { result.Data = packageProduct; _context.PackageProduct.Remove(packageProduct); try { await _context.SaveChangesAsync(); } catch (Exception e) { result.ErrorMessage = e.Message; result.IsFound = false; return(BadRequest(result)); } return(Ok(result)); } }
public PackageProduct GetPackage(UserFavorite favorite) { PackageProduct data = _repository .GetAll <PackageProduct>() .First(x => x.PackageProductId == favorite.PackageProductId); return(data); }
public string GetVPHAPIDelivery(string OrderId, string LogisticsCode, string Waybill, XMOrderInfoApp xMorderInfoApp, string LogisticsName) { try { string AppKey = xMorderInfoApp.AppKey; string AppSecret = xMorderInfoApp.AppSecret; string CallbackUrl = xMorderInfoApp.CallbackUrl;//"http://www.hozest.com"; string AccessToken = xMorderInfoApp.AccessToken; string posturl = xMorderInfoApp.ServerUrl; DvdDeliveryServiceHelper.DvdDeliveryServiceClient client = new DvdDeliveryServiceHelper.DvdDeliveryServiceClient(); InvocationContext invocationContext = Factory.GetInstance(); invocationContext.SetAppKey(AppKey); invocationContext.SetAppSecret(AppSecret); invocationContext.SetAppURL(posturl); List <PackageProduct> packageProduct_list = new List <PackageProduct>(); PackageProduct packageProduct = new PackageProduct(); packageProduct.SetBarcode(""); packageProduct.SetAmount(1); packageProduct_list.Add(packageProduct); List <Package> package_list = new List <Package>(); Package package = new Package(); package.SetTransport_no(Waybill); package.SetPackage_product_list(packageProduct_list); package_list.Add(package); List <Ship> ship_list = new List <Ship>(); Ship ship = new Ship(); ship.SetOrder_id(OrderId); ship.SetCarrier_code(LogisticsCode); ship.SetCarrier_name(LogisticsName); ship.SetPackage_type("1"); ship.SetPackages(package_list); ship_list.Add(ship); ShipResult rsp = client.ship(6480, ship_list); if (rsp != null) { if (rsp.GetSuccess_num() > 0 && rsp.GetFail_num() == 0) { return(rsp.GetSuccess_num().ToString()); } else { return(null); } } } catch (Exception ex) { IoC.Resolve <IRecordErrorLogs>().WriteErrorLog("负责人:" + HozestERPContext.Current.User.CustomerID.ToString() + "; 方法名:GetVPHAPIDelivery; 异常提示:" + ex.Message.ToString() + "; InnerException:" + ex.InnerException); } return(null); }
public static PackageProductViewModel FromEntity(PackageProduct packageProduct) { return(new PackageProductViewModel { ProductId = packageProduct.ProductId, Quantity = packageProduct.Quantity, ProductViewModel = ProductViewModel.FromEntity(packageProduct.Product) }); }
public IHttpActionResult Save() { var httpRequest = HttpContext.Current.Request; var postOb = httpRequest["postOb"]; JsonSerializerSettings settings = new JsonSerializerSettings(); settings.NullValueHandling = NullValueHandling.Ignore; PackageProduct post = JsonConvert.DeserializeObject <PackageProduct>(postOb, settings); ResponseModel result = _packageProductRepository.SavePackageProduct(post); foreach (string file in httpRequest.Files) { var postedFile = httpRequest.Files[file]; if (postedFile != null && postedFile.ContentLength > 0) { int MaxContentLength = 1024 * 1024 * 1; //Size = 1 MB IList <string> AllowedFileExtensions = new List <string> { ".jpg", ".gif", ".png" }; var ext = postedFile.FileName.Substring(postedFile.FileName.LastIndexOf('.')); var extension = ext.ToLower(); if (!AllowedFileExtensions.Contains(extension)) { var message = string.Format("Please Upload image of type .jpg,.gif,.png."); } else if (postedFile.ContentLength > MaxContentLength) { var message = string.Format("Please Upload a file upto 1 mb."); } else { var fileExtension = Path.GetExtension(postedFile.FileName); var fileId = post.FileId; var picPath = HttpContext.Current.Server.MapPath(@"~\UploadFiles\"); if (!Directory.Exists(picPath)) { Directory.CreateDirectory(picPath); } if (!CommonHelper.IsValidFile(fileExtension)) { result.Message = "File Formate is not valid"; } var filePath = Path.Combine(picPath, fileId + fileExtension); if (post.Id != null) { if (System.IO.File.Exists(Path.Combine(picPath, post.FileId + Path.GetExtension(post.FileName)))) { System.IO.File.Delete(Path.Combine(picPath, post.FileId + Path.GetExtension(post.FileName))); } } postedFile.SaveAs(filePath); } } } return(Ok(result)); }
public int UpdatePackageProduct(PackageProduct packageProduct) { string updateSQL = $"UPDATE {DbTable.F_OUT_CASE_PRODUCT_NAME} SET " + $"{DbTable.F_Out_Case_Product.BINDING_STATE} = '{packageProduct.BindingState}' " + $"WHERE {DbTable.F_Out_Case_Product.OUT_CASE_CODE} = '{packageProduct.CaseCode}' AND " + $"{DbTable.F_Out_Case_Product.SN_OUTTER} = '{packageProduct.SnOutter}' "; LogHelper.LogInfo($"UpdatePackageProduct={updateSQL}"); return(SQLServer.ExecuteNonQuery(updateSQL)); }
public async Task <ActionResult> AddPackProd(PackageProductModel packProd) { var result = new Result <string>(); PackageProduct packageProduct = new PackageProduct(); var packprodcheck = _context.PackageProduct.Where(pp => pp.PackId == packProd.PackId && pp.ProdId == packProd.ProdId).FirstOrDefaultAsync(); if (packprodcheck.Result != null) { if (packProd.ProdDetailId == null) { result.ErrorMessage = "This product already exist in the package."; result.IsSuccess = false; return(BadRequest(result)); } else { var packProdDetailCheck = _context.PackageProduct.Where(pp => pp.PackId == packProd.PackId && pp.ProdId == packProd.ProdId && pp.ProdDetailId == packProd.ProdDetailId).FirstOrDefaultAsync(); if (packProdDetailCheck.Result != null) { result.ErrorMessage = "This product detail already exist in the package."; result.IsSuccess = false; return(BadRequest(result)); } else { _mapper.Map(packProd, packageProduct); packageProduct.CreateAt = DateTime.Now; } } } else { _mapper.Map(packProd, packageProduct); packageProduct.CreateAt = DateTime.Now; } await _context.PackageProduct.AddAsync(packageProduct); try { await _context.SaveChangesAsync(); } catch (Exception e) { result.ErrorMessage = e.Message; result.IsSuccess = false; return(BadRequest(result)); } return(Ok(result)); }
public int DeletePackageProduct(PackageProduct packageProduct) { string deleteSQL = ""; if (packageProduct.SnOutter == "" && packageProduct.CaseCode == "") { deleteSQL = $"DELETE FROM {DbTable.F_OUT_CASE_PRODUCT_NAME} "; } else { deleteSQL = $"DELETE FROM {DbTable.F_OUT_CASE_PRODUCT_NAME} " + $"WHERE {DbTable.F_Out_Case_Product.OUT_CASE_CODE} = '{packageProduct.CaseCode}' AND " + $"{DbTable.F_Out_Case_Product.SN_OUTTER} = '{packageProduct.SnOutter}'"; } return(SQLServer.ExecuteNonQuery(deleteSQL)); }
public DataSet SelectPackageProduct(PackageProduct packageProduct) { //箱子编码/追溯码查询 string selectSQL = ""; if (string.IsNullOrEmpty(packageProduct.CaseCode) && string.IsNullOrEmpty(packageProduct.SnOutter)) { selectSQL = $"SELECT * FROM {DbTable.F_OUT_CASE_PRODUCT_NAME} " + $"WHERE {DbTable.F_Out_Case_Product.BINDING_STATE} = '{packageProduct.BindingState}'"; } else { selectSQL = $"SELECT * FROM {DbTable.F_OUT_CASE_PRODUCT_NAME} WHERE " + $"{DbTable.F_Out_Case_Product.OUT_CASE_CODE} = '{packageProduct.CaseCode}' AND " + $"{DbTable.F_Out_Case_Product.SN_OUTTER} = '{packageProduct.SnOutter}' AND " + $"{DbTable.F_Out_Case_Product.BINDING_STATE} = '{packageProduct.BindingState}'"; } return(SQLServer.ExecuteDataSet(selectSQL)); }
public ActionResult CreatePackage(string packageName, string packagePrice, int[] productIds) { if (ModelState.IsValid) { var package = new Package(); package.PackageName = packageName; package.PackagePrice = Convert.ToDecimal(packagePrice); package.PackageKey = Guid.NewGuid().ToString(); unitOfWork.Packages.Insert(package); unitOfWork.Save(); var packageId = unitOfWork.Packages.Get(x => x.PackageKey == package.PackageKey).FirstOrDefault().PackageId; for (int i = 0; i < productIds.Length; i++) { var packageProduct = new PackageProduct(); packageProduct.PackageId = packageId; packageProduct.ProductId = productIds[i]; unitOfWork.PackageProducts.Insert(packageProduct); } unitOfWork.Save(); return(RedirectToAction("Index")); } return(View()); }
public int CommitPackageProduct(PackageProduct packageProduct) { string imageName = "@imageData"; string insertSQL = $"INSERT INTO {DbTable.F_OUT_CASE_PRODUCT_NAME}({DbTable.F_Out_Case_Product.OUT_CASE_CODE}," + $"{DbTable.F_Out_Case_Product.SN_OUTTER},{DbTable.F_Out_Case_Product.TYPE_NO}," + $"{DbTable.F_Out_Case_Product.PICTURE},{DbTable.F_Out_Case_Product.BINDING_STATE}," + $"{DbTable.F_Out_Case_Product.BINDING_DATE}) " + $"VALUES('{packageProduct.CaseCode}','{packageProduct.SnOutter}','{packageProduct.TypeNo}',{imageName}," + $"'{packageProduct.BindingState}','{packageProduct.BindingDate}')"; LogHelper.Log.Info($"CommitPackageProduct Init Insert={insertSQL}"); if (IsExistPackageProduct(packageProduct.CaseCode, packageProduct.SnOutter)) { //update return(UpdatePackageProduct(packageProduct)); } else { try { SqlParameter[] sqlParameters = new SqlParameter[1]; SqlParameter sqlParameter = new SqlParameter(); sqlParameter.ParameterName = imageName; sqlParameter.SqlDbType = SqlDbType.Binary; sqlParameter.Value = packageProduct.Picture; sqlParameters[0] = sqlParameter; return(SQLServer.ExecuteNonQuery(insertSQL, sqlParameters)); } catch (Exception ex) { LogHelper.Log.Error($"Err start ExecuteNonQuery={ex.Message}\r\n{ex.StackTrace}"); return(-1); } //return ExecuteSQL(insertSQL,packageProduct.Picture); } }
public PackageProduct <P> ConvertString2Object <P>(string jsonString, StringBuilder logMsg) { if (string.IsNullOrEmpty(jsonString)) { logMsg.AppendFormat(" [data not exists:{0}]", DateTime.Now.AddHours(8).ToString("yyyy-MM-dd HH:mm:ss")); PackageProduct <P> p = new PackageProduct <P>(); p.data = new List <P>(); return(p); } PackageProduct <P> instance = Activator.CreateInstance <PackageProduct <P> >(); string[] strTemp = jsonString.Split(new char[] { '[', ']' }, StringSplitOptions.RemoveEmptyEntries); if (strTemp.Length != 3) { logMsg.AppendFormat("[The data will not be updated from url:{0}]", DateTime.Now.AddHours(8).ToString("yyyy-MM-dd HH:mm:ss")); PackageProduct <P> p = new PackageProduct <P>(); p.data = new List <P>(); return(p); //throw new Exception("数据字符串不存在"); } string code = strTemp[0].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)[0].Split(new char[] { ':' }, StringSplitOptions.RemoveEmptyEntries)[1].Replace("\"", ""); string msg = strTemp[0].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)[1].Split(new char[] { ':' }, StringSplitOptions.RemoveEmptyEntries)[1].Replace("\"", ""); string data = strTemp[1]; int intCode; instance.code = string.IsNullOrEmpty(code) ? 0 : (int.TryParse(code, out intCode) ? intCode : 0); instance.msg = msg; data = data.Replace("{", "@").Replace("},", "@").Replace("}", "@"); string[] dataArray = data.Split(new char[] { '@' }, StringSplitOptions.RemoveEmptyEntries); if (dataArray.Length > 0) { instance.data = new List <P>(); } //创建JSON正则表达式; P item = default(P); int iy = dataArray.Length; for (int i = 0; i < dataArray.Length; i++) { item = Activator.CreateInstance <P>(); string[] jsonData = dataArray[i].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); /////////////////// int first = 0; string buf = string.Empty; ///////////////// for (int j = 0; j < jsonData.Length; j++) { if (jsonData[j].IndexOf(":") < 0) { ///////// if (first == 0) { first = j - 1; } buf += "," + jsonData[j]; ///////////////// //jsonData[j - 1] += "," + jsonData[j]; jsonData[j] = ""; } } jsonData[first] += buf; for (int j = 0; j < jsonData.Length; j++) { if (string.IsNullOrEmpty(jsonData[j])) { continue; } string propertyName = jsonData[j].Split(new char[] { ':' }, StringSplitOptions.RemoveEmptyEntries)[0].Replace("\"", ""); string pValue = string.Empty; string[] updateTime = jsonData[j].Split(new char[] { ':' }, StringSplitOptions.RemoveEmptyEntries); if (updateTime.Length == 2) { pValue = updateTime[1].Replace("\"", ""); } else { for (int k = 1; k < updateTime.Length; k++) { pValue += updateTime[k].Replace("\"", "") + ":"; } pValue = pValue.Substring(0, pValue.Length - 1); } var pros = item.GetType().GetProperties(); for (int k = 0; k < pros.Length; k++) { if (pros[k].Name == propertyName.Trim()) { if (pValue == "null") { pros[k].SetValue(item, null, null); } else { pros[k].SetValue(item, Convert.ChangeType(pValue, pros[k].PropertyType), null); } } } } instance.data.Add(item); } return(instance); }
private PackageMerchandise SearchPackage(Terms.Sales.Business.PackageSearchCondition searchCondition) { searchCondition.UserInfo = UserInfo; searchCondition.AirSearchCondition.UserInfo = UserInfo; searchCondition.HotelSearchCondition.UserInfo = UserInfo; if (searchCondition.HotelSearchCondition2 != null) searchCondition.HotelSearchCondition2.UserInfo = UserInfo; //��Cache�в��ҽ� PackageMerchandise packageMerchandise = (PackageMerchandise)MVMerchandisePool.Find(searchCondition); if (packageMerchandise == null) { DateTime SearchingBeginningTime = DateTime.Now; Utility.Transaction.Difference.To = "OnSearch1 End"; Utility.Transaction.Difference.EndTime = DateTime.Now; Utility.Transaction.Difference.From = "Search Package By Find"; Utility.Transaction.Difference.StarTime = DateTime.Now; PackageProductSearcher searcher = new PackageProductSearcher(); TERMS.Common.Search.PackageSearchCondition pkgCondition = new TERMS.Common.Search.PackageSearchCondition(); DateTime depDate = searchCondition.AirSearchCondition.GetAddTripCondition()[0].DepartureDate; DateTime rtnDate = new DateTime(); string fromAirportCode = searchCondition.AirSearchCondition.GetAddTripCondition()[0].Departure.Code; string toAirportCode = searchCondition.AirSearchCondition.GetAddTripCondition()[0].Destination.Code; string rtnFromAirportCode = string.Empty; string rtnToAirportCode = string.Empty; int adultNumber = searchCondition.AirSearchCondition.GetPassengerNumber(TERMS.Common.PassengerType.Adult); int childNumber = searchCondition.AirSearchCondition.GetPassengerNumber(TERMS.Common.PassengerType.Child); IList<PackageProduct> pkgs = new List<PackageProduct>(); if (searchCondition.AirSearchCondition.FlightType.ToLower().Equals("oneway")) { //û�� } else if (searchCondition.AirSearchCondition.FlightType.ToLower().Equals("roundtrip")) { rtnDate = searchCondition.AirSearchCondition.GetAddTripCondition()[1].DepartureDate; pkgCondition.AirCondition = new TERMS.Common.Search.AirSearchCondition(fromAirportCode, true, toAirportCode, true, depDate, true, rtnDate, true, adultNumber, childNumber, 0); } else { rtnDate = searchCondition.AirSearchCondition.GetAddTripCondition()[1].DepartureDate; rtnFromAirportCode = searchCondition.AirSearchCondition.GetAddTripCondition()[1].Departure.Code; rtnToAirportCode = searchCondition.AirSearchCondition.GetAddTripCondition()[1].Destination.Code; pkgCondition.AirCondition = new TERMS.Common.Search.AirSearchCondition(fromAirportCode, true, toAirportCode, true, depDate, true, rtnFromAirportCode, true, rtnToAirportCode, true, rtnDate, true, adultNumber, childNumber, 0); } if (ConfigurationManager.AppSettings.Get("IsOpenCommNetFareTicket") != null) pkgCondition.AirCondition.IsAvailableOnly = Convert.ToBoolean(ConfigurationManager.AppSettings.Get("IsOpenCommNetFareTicket").ToString()); //����Airlines if (searchCondition.AirSearchCondition.Airlines != null && searchCondition.AirSearchCondition.Airlines.Length > 0) pkgCondition.AirCondition.AddAirlines(searchCondition.AirSearchCondition.Airlines); //����Cabin for (int i = 0; i < pkgCondition.AirCondition.Trips.Count; i++) pkgCondition.AirCondition.Trips[i].Cabin = searchCondition.AirSearchCondition.AirTripCondition[i].Cabin; //ת��Hotel Search Condition pkgCondition.HotelCondition = ConvertHotelSearchCondition(searchCondition.HotelSearchCondition); pkgs = searcher.Search(pkgCondition); //Ϊ�̷߳�����Ӳ��� package PackageProduct pkg = package = pkgs[0]; Utility.Transaction.Difference.To = "Intel Search Over"; Utility.Transaction.Difference.EndTime = DateTime.Now; Utility.Transaction.Difference.From = "Return AIRItem Start"; Utility.Transaction.Difference.StarTime = DateTime.Now; //�����߳� ͬʱ��ѯ Air �� Hotel PackageThreadStar(); //IList<TERMS.Core.Product.Component> aa = pkg.AirGroup.Items; if (packageair == null || packageair.Count == 0) { m_Error = "Searching is not available in Web Searching now. Please choose another travel date or destination.(pa1)"; return null; } Utility.Transaction.Difference.To = "Return AIRItem End"; Utility.Transaction.Difference.EndTime = DateTime.Now; Utility.Transaction.Difference.From = "Return HotelItem Start"; Utility.Transaction.Difference.StarTime = DateTime.Now; //IList<TERMS.Core.Product.Component> BB = pkg.HotelGroup.Items; if (packagehotel == null || packagehotel.Count == 0) { m_Error = "Searching is not available in Web Searching now. Please choose another travel date or destination.(ph1)"; return null; } Utility.Transaction.Difference.To = "Return HotelItem End"; Utility.Transaction.Difference.EndTime = DateTime.Now; Utility.Transaction.Difference.From = "Convert Start"; Utility.Transaction.Difference.StarTime = DateTime.Now; TERMS.Business.Centers.ProductCenter.Profiles.PackageProfile packageProfile = (TERMS.Business.Centers.ProductCenter.Profiles.PackageProfile)pkg.Profile; packageProfile.SetParam("ADULT_NUMBER", adultNumber); packageProfile.SetParam("CHILD_NUMBER", childNumber); packageProfile.SetParam("CheckIn", searchCondition.HotelSearchCondition.CheckIn); packageProfile.SetParam("CheckOut", searchCondition.HotelSearchCondition.CheckOut); packageProfile.SetParam("Location", searchCondition.HotelSearchCondition.Location); try { packageMerchandise = new PackageMerchandise(packageProfile, pkg); if (packageMerchandise.Items[1] == null || ((HotelMerchandise)packageMerchandise.Items[1]).Items == null || ((HotelMerchandise)packageMerchandise.Items[1]).Items.Count == 0) { m_Error = "Searching is not available in Web Searching now. Please choose another travel date or destination."; return null; } for (int i = 1; i < packageMerchandise.Items.Count; i++) { HotelMerchandise hotelMerchandise = (HotelMerchandise)packageMerchandise.Items[i]; hotelMerchandise.Profile.CheckInDate = searchCondition.HotelSearchCondition.CheckIn; hotelMerchandise.Profile.CheckOutDate = searchCondition.HotelSearchCondition.CheckOut;// hotelMerchandise = ConvertHotelToMVHotel(searchCondition.HotelSearchCondition, hotelMerchandise); } //�ж� if (packageMerchandise.Items[1] == null || ((HotelMerchandise)packageMerchandise.Items[1]).Items == null || ((HotelMerchandise)packageMerchandise.Items[1]).Items.Count == 0) { m_Error = "Searching is not available in Web Searching now. Please choose another travel date or destination."; return null; } MVMerchandisePool.Cache(searchCondition.Clone(), packageMerchandise); //Cache if (searchCondition.OptionalHotelSearchConditions.Count > 0) { for (int j = 0; j < searchCondition.OptionalHotelSearchConditions.Count; j++) { packageMerchandise.Items.Add(SearchHotel(searchCondition.OptionalHotelSearchConditions[j])); } packageMerchandise.ReSetPMItems(); // �趨��Ĭ���������� } packageMerchandise.Reset();//��Ϊ��ʼ��packageMerchandise �е� CurrentItem } catch (Exception Ex) { throw new Exception(Ex.Message); } //��¼Searchʱ�� DateTime SearchingEndingTime = DateTime.Now; SearchingLogger searchingLogger = new SearchingLogger(); searchingLogger.Log(SearchingBeginningTime, SearchingEndingTime, searchCondition); } else { if (searchCondition.OptionalHotelSearchConditions.Count == packageMerchandise.CurrentItems.Count - 3) { packageMerchandise.Items.RemoveAt(packageMerchandise.Items.Count - 1); packageMerchandise.CurrentItems.RemoveAt(packageMerchandise.CurrentItems.Count - 1); packageMerchandise.CurrentHotelListNumber = 0; packageMerchandise.Reset(); packageMerchandise.ReSetPMItems(); } if (searchCondition.IsReset) //����packageMerchandise �е� CurrentItem { for (int i = 2; i < packageMerchandise.Items.Count; i++) { packageMerchandise.Items.Remove(packageMerchandise.Items[i]); } packageMerchandise.CurrentHotelListNumber = 0; packageMerchandise.Reset(); packageMerchandise.ReSetPMItems(); } } List<int> searchFaildHotelIndexs = new List<int>(); for (int i = 0; i < searchCondition.OptionalHotelSearchConditions.Count; i++) { HotelMerchandise hotelMerchandise = (HotelMerchandise)MVMerchandisePool.Find(searchCondition.OptionalHotelSearchConditions[i]); if (hotelMerchandise == null) { hotelMerchandise = SearchHotel(searchCondition.OptionalHotelSearchConditions[i]); if (hotelMerchandise == null) //Search Hotelʧ�� searchFaildHotelIndexs.Add(i); packageMerchandise.Items.Add(hotelMerchandise); packageMerchandise.Reset(i + 2); packageMerchandise.ReSetPMItems(); } else { if ((packageMerchandise.Items.Count - 1) >= (i + 2))//�ж��±�(i+2),��Items �����Ƿ���� packageMerchandise.Items[i + 2] = hotelMerchandise; else { packageMerchandise.Items.Add(hotelMerchandise); packageMerchandise.Reset(i + 2); packageMerchandise.ReSetPMItems(); } if (searchCondition.IsReset) //����packageMerchandise �е� CurrentItem[i+2] packageMerchandise.Reset(i + 2); } } if (searchFaildHotelIndexs.Count > 0) //Search Hotelʧ�� { for (int i = 0; i < searchFaildHotelIndexs.Count; i++) { //���Searchʧ�ܵ�Hotel Search Condition searchCondition.OptionalHotelSearchConditions.RemoveAt(searchFaildHotelIndexs[i] - i); packageMerchandise.Items.RemoveAt(searchFaildHotelIndexs[i] + 2 - i); packageMerchandise.CurrentItems.RemoveAt(searchFaildHotelIndexs[i] + 2 - i); } packageMerchandise.ReSetPMItems(); return null; } searchCondition.IsReset = false; Utility.Transaction.Difference.To = "Convert End"; Utility.Transaction.Difference.EndTime = DateTime.Now; Utility.Transaction.Difference.From = "Search End"; Utility.Transaction.Difference.StarTime = DateTime.Now; packageMerchandise.UserInfo = UserInfo.User.UserName; return packageMerchandise; }
public async Task <IActionResult> PostAsync([FromBody] RegisterPackage command) { if (ModelState.IsValid) { Package package = Mapper.Map <Package>(command); // Checklist for package, order and product List <Product> products = new List <Product>(); List <Order> orders = new List <Order>(); bool packageIsChecked = false; bool orderIsChecked = false; foreach (var order in package.Orders) { // Get the order from order repository var ord = await _orderRepo.GetOrderAsync(order.OrderId); if (ord != null) { // Create a "PackageOrder" entity and map the relationships with package and order var packageOrder = new PackageOrder { Package = package, Order = ord, }; // Add both "PackageOrder" and "Order" to the package package.PackageOrders.Add(packageOrder); orders.Add(ord); } else { return(NotFound()); } } // Check if ALL the orders have the same value in order "Destination" // (NOTE: Orders must have the same destination in order to be packaged) if (orders.Count != 0) { orderIsChecked = !package.Orders .Select(o => o.Destination) .Distinct() .Skip(1) .Any(); } else { return(BadRequest()); } foreach (var product in package.Products) { // Get the product from product repository var prod = await _productRepo.GetProductAsync(product.ProductId); if (prod != null) { // Add the total weight to the package from all products package.WeightInKgMax += prod.Weight; // Create a "PackageProduct" entity and map the relationships with package and product var packageProduct = new PackageProduct { Package = package, Product = prod, }; // Add both "PackageProduct" and "Product" to the package package.PackageProducts.Add(packageProduct); products.Add(prod); } else { return(NotFound()); } } // Replace the current package "Orders" and "Products" with correct ones if (orders.Count != 0 && products.Count != 0) { package.Orders = orders; package.Products = products; } // Check if the package is of the type "Letterbox" and its total weight is less or equal to 2 // (NOTE: This is a "Letterbox" package) if (package.TypeOfPackage == "Letterbox package" && package.WeightInKgMax <= 2) { packageIsChecked = true; } // Check if the package is NOT of type "Letterbox" and its total weight is greater then 2 and less or equal to 20 // (NOTE: This is a "Package" of any kind) if (package.TypeOfPackage != "Letterbox package" && package.WeightInKgMax > 2 && package.WeightInKgMax <= 20) { packageIsChecked = true; } if (packageIsChecked == true && orderIsChecked == true) { // Insert Package package.Region = package.Orders.Select(o => o.Destination).FirstOrDefault(); package.ShippingStatus = "IN STOCK"; package.Transport = null; await _packageRepo.AddPackageAsync(package); return(CreatedAtRoute("GetPackageById", new { packageId = package.PackageId }, package)); } return(BadRequest()); } return(BadRequest()); }
public OperationResult CreateOrder(UserForm userForm, OrderData data, out string productName) { var result = new OperationResult(); //尋找是否有可用Coupon CouponDetail couponDetail = CheckCoupon(data.AccountName, data.CouponDetailId); if (couponDetail == null) { data.CouponDetailId = null; } else { data.CouponDetailId = couponDetail.CouponDetailId; } byte?invoiceDonateTo; if (userForm.InvoiceDonateTo == null) { invoiceDonateTo = null; } else { invoiceDonateTo = byte.Parse(userForm.InvoiceDonateTo); } UserFavorite favorite = _repository.GetAll <UserFavorite>() .First(x => x.FavoriteId == data.FavoriteId); PackageProduct package = null; List <UserDefinedProduct> userDefinedList = null; if (favorite.IsPackage) { package = GetPackage(favorite); productName = package.Name; } else { userDefinedList = GetUserDefinedList(favorite); productName = userDefinedList[0].Name; } using (var transaction = _context.Database.BeginTransaction()) { try { Order order = new Order { OrderId = Guid.NewGuid(), AccountName = data.AccountName, FullName = userForm.FullName, Email = userForm.Email, Phone = userForm.Phone, DateService = DateTime.Parse(userForm.DateService), Address = $"{userForm.County}{userForm.District}{userForm.Address}", Remark = userForm.Remark == null ? string.Empty : userForm.Remark, OrderState = (byte)OrderState.Unpaid, Rate = null, Comment = string.Empty, CouponDetailId = data.CouponDetailId, PaymentType = string.Empty, InvoiceType = byte.Parse(userForm.InvoiceType), InvoiceDonateTo = invoiceDonateTo, MerchantTradeNo = data.MerchantTradeNo, TradeNo = string.Empty, CreateTime = data.Now, EditTime = data.Now, CreateUser = data.AccountName, EditUser = data.AccountName, }; _repository.Create <Order>(order); _context.SaveChanges(); OrderDetail od = new OrderDetail { OrderDetailId = Guid.NewGuid(), OrderId = order.OrderId, FavoriteId = data.FavoriteId, FinalPrice = data.FinalPrice, ProductName = productName, CreateTime = data.Now, EditTime = data.Now, CreateUser = data.AccountName, EditUser = data.AccountName, }; _repository.Create <OrderDetail>(od); _context.SaveChanges(); if (favorite.IsPackage) { List <int?> roomTypes = new List <int?> { package.RoomType, package.RoomType2 }; if (package.RoomType3 >= 0) { roomTypes.Add(package.RoomType3); } List <int?> squareFeets = new List <int?> { package.Squarefeet, package.Squarefeet2 }; if (package.Squarefeet3 >= 0) { squareFeets.Add(package.Squarefeet3); } OrderPackage orderPackage = new OrderPackage { OrderId = order.OrderId, RoomTypes = string.Join(",", roomTypes), SquareFeets = string.Join(",", squareFeets), ServiceItems = package.ServiceItem, Hour = package.Hour, Price = package.Price, CreateTime = data.Now, EditTime = data.Now, CreateUser = data.AccountName, EditUser = data.AccountName, }; _repository.Create <OrderPackage>(orderPackage); } else { foreach (var item in userDefinedList) { OrderUserDefined orderUserDefined = new OrderUserDefined { OrderId = order.OrderId, RoomType = item.RoomType, SquareFeet = item.Squarefeet, ServiceItems = item.ServiceItems, Hour = item.Hour, Price = item.Price, CreateTime = data.Now, EditTime = data.Now, CreateUser = data.AccountName, EditUser = data.AccountName, }; _repository.Create <OrderUserDefined>(orderUserDefined); } } _context.SaveChanges(); if (couponDetail != null) { couponDetail.State = (int)UseState.Used; _context.SaveChanges(); } result.IsSuccessful = true; transaction.Commit(); } catch (Exception ex) { result.IsSuccessful = false; result.Exception = ex; transaction.Rollback(); } } return(result); }
public IHttpActionResult Delete([FromBody] PackageProduct model) { return(Ok(_packageProductRepository.DeletePackageProduct(model))); }
public List <UserFavoriteViewModel> GetFavoriteUserFavoriteData(string username) { List <UserFavoriteViewModel> packageslist = new List <UserFavoriteViewModel>(); var userFavorites = _repository.GetAll <UserFavorite>().Where(x => x.AccountName == username).OrderBy(x => x.CreateTime).ToList(); foreach (var item in userFavorites) { if (item.IsDelete == false) { if (item.IsPackage) { PackageProduct p = _repository.GetAll <PackageProduct>().FirstOrDefault(x => x.PackageProductId == item.PackageProductId); UserFavoriteData ufdata = new UserFavoriteData { Hour = p.Hour, ServiceItem = p.ServiceItem, Price = p.Price, Title = p.Name, RoomType = $"{RoomTypeSwitch(p.RoomType)},{RoomTypeSwitch(p.RoomType2)},{RoomTypeSwitch(p.RoomType3)}", Squarefeet = $"{SquarefeetSwitch(p.Squarefeet)},{SquarefeetSwitch(p.Squarefeet2)},{SquarefeetSwitch(p.Squarefeet3)}", PhotoUrl = p.PhotoUrl, PackageProductId = p.PackageProductId }; UserFavoriteViewModel ufVM = new UserFavoriteViewModel { Data = new List <UserFavoriteData> { ufdata }, FavoriteId = item.FavoriteId, IsPackage = item.IsPackage }; packageslist.Add(ufVM); } else { var query = from udp in _repository.GetAll <UserDefinedProduct>() where udp.UserDefinedId == item.UserDefinedId join rt in _repository.GetAll <RoomType>() on udp.RoomType equals rt.Value select new UserFavoriteData { Hour = udp.Hour, PhotoUrl = rt.PhotoUrl, Price = udp.Price, RoomType = udp.RoomType.ToString(), ServiceItem = udp.ServiceItems, Squarefeet = udp.Squarefeet.ToString(), Title = udp.Name }; UserFavoriteViewModel ufVM = new UserFavoriteViewModel { Data = query.ToList(), FavoriteId = item.FavoriteId, IsPackage = item.IsPackage }; packageslist.Add(ufVM); } } } return(packageslist); }
public override void FetchAndFill(StringBuilder sb) { long maxUnix = (long)Math.Floor((GetMaxUnxi().AddHours(-8) - new DateTime(1970, 1, 1, 0, 0, 0)).TotalMilliseconds); string jsonData = GetRemoteDataFromUrl(DataUrlWithUnix.Replace("{unix}", maxUnix.ToString()), sb); PackageProduct <T> package = ConvertString2Object <T>(jsonData, sb); if (package.data.Count == 0) { //sb.Append(_tablename + " data Sync Rows:0 \n"); return; } sb.Append("Source [Type: URL, Address: " + DataUrlWithUnix.Replace("{unix}", maxUnix.ToString()) + "\n"); if (package.code != 1) { throw new Exception("get data failed"); } DataTable tb = CreateDataTableSchema(typeof(T)); tb = FillDataFromList(tb, package.data); tb.TableName = _tablename; int insertCount = 0; int updateCount = 0; //OracleConnection _conn = new OracleConnection(ConfigurationManager.AppSettings["CnECon"]); using (var con = new OracleConnection(ConfigurationManager.AppSettings["CnECon"])) { con.Open(); OracleCommand cmd = new OracleCommand("", con); foreach (DataRow dr in tb.Rows) { string existStr = "select count(*) from " + _tablename + " where id=" + dr["id"] + " and priceDate='" + dr["priceDate"] + "'"; cmd.CommandText = existStr; int cmdresult = 0; try { object obj = cmd.ExecuteScalar(); if (Equals(obj, null) || (Equals(obj, DBNull.Value))) { } else { cmdresult = int.Parse(obj.ToString()); } } catch (OracleException e) { con.Close(); throw new Exception(e.Message); } string operationSql; if (cmdresult == 0) { insertCount++; operationSql = CreateInsertSql(_tablename, tb.Columns, dr); } else { updateCount++; operationSql = CreateUpdateSql(_tablename, new[] { "id", "priceDate" }, tb.Columns, dr); } cmd.CommandText = operationSql; try { cmd.ExecuteNonQuery(); } catch (OracleException e) { con.Close(); throw new Exception(e.Message); } } con.Close(); } sb.Append("Table " + _tablename + " Insert Rows:" + insertCount + ",Update Rows:" + updateCount + " \r\n"); }