private void btnProcessFile_Click(object sender, RoutedEventArgs e) { FilePath_TxtBox.Text = string.Empty; WebOrderModel webOrderModel = new WebOrderModel(); try { webOrderModel = WebOrderHelpers.DeserializeToObject <WebOrderModel>(filePath); } catch (System.Exception exception) { MessageBox.Show($"There was an error in processing your file. Make sure it is the correct type and format. {Environment.NewLine}" + $"Error message: {exception.Message}"); } WebOrder webOrderView = new WebOrder(); if (webOrderModel.Equals(new WebOrderModel())) { MessageBox.Show("There seems to be an error with your input file. Check its structure and try again."); } else { webOrderView = new WebOrder(webOrderModel); Id.Content = webOrderView.ID == 0 ? "Wrong order ID" : webOrderView.ID.ToString(); Customer.Content = string.IsNullOrEmpty(webOrderView.Customer) ? "No customer name found." : webOrderView.Customer; Date.Content = webOrderView.Date.Equals(new System.DateTime(0001, 01, 01)) ? Date.Content = "Wrong date format" : webOrderView.Date; PriceAvg.Content = webOrderView.PriceAvg.Equals("000.000") ? "No items found" : webOrderView.PriceAvg; Total.Content = webOrderView.Total.Equals("000.000") ? "No items found" : webOrderView.Total; } }
public WebOrder(WebOrderModel webOrderModel) { double total, priceAvg; ID = webOrderModel.ID; Customer = webOrderModel.Customer; Date = WebOrderHelpers.GetParsedDate(webOrderModel.Date); Amount = webOrderModel.Items.Count != 0 ? webOrderModel.Items.Sum(i => i.Quantity) : 0; total = webOrderModel.Items.Count != 0 ? webOrderModel.Items.Select(x => x.Price * x.Quantity).Sum() : 0; Total = string.Format("{0: #,000.000}", total).Trim(); priceAvg = webOrderModel.Items.Count != 0 ? webOrderModel.Items.Average(i => i.Price) : 0; PriceAvg = string.Format("{0: #,000.000}", priceAvg).Trim(); }
public void DeserializationTest1(string inputXMLPath) { WebOrderModel WOModel = WebOrderHelpers.DeserializeToObject <WebOrderModel>(inputXMLPath); if ((WOModel.ID.GetType().Equals(typeof(int))) & (WOModel.Customer.GetType().Equals(typeof(string))) & (WOModel.Date.GetType().Equals(typeof(string))) & (WOModel.AvgUnitPrice.GetType().Equals(typeof(decimal))) & (WOModel.Total.GetType().Equals(typeof(decimal)))) { Assert.Pass(); } else { Assert.Fail(); } }
//網購傳回ATM訂單 public void orderATM(string callback) { MotaiDataEntities dbContext = new MotaiDataEntities(); List <string> enErrors = new List <string>(); Hashtable htFeedback = null; try { using (AllInOne oPayment = new AllInOne()) { oPayment.HashKey = "5294y06JbISpM5x9"; oPayment.HashIV = "v77hoKGq4kWxNNIS"; /* 取回付款結果 */ enErrors.AddRange(oPayment.CheckOutFeedback(ref htFeedback)); } // 取回所有資料 if (enErrors.Count() == 0) { /* 支付後的回傳的基本參數 */ string szMerchantID = String.Empty; string szMerchantTradeNo = String.Empty; string szPaymentType = String.Empty; string szRtnCode = String.Empty; string szRtnMsg = String.Empty; string szTradeAmt = String.Empty; string szTradeDate = String.Empty; string szTradeNo = String.Empty; string szBankCode = String.Empty; string szVirtualAccount = String.Empty; string szExpireDate = String.Empty; // 取得資料 foreach (string szKey in htFeedback.Keys) { switch (szKey) { /* 支付後的回傳的基本參數 */ case "MerchantID": szMerchantID = htFeedback[szKey].ToString(); break; case "MerchantTradeNo": szMerchantTradeNo = htFeedback[szKey].ToString(); break; case "RtnCode": szRtnCode = htFeedback[szKey].ToString(); break; case "RtnMsg": szRtnMsg = htFeedback[szKey].ToString(); break; case "TradeNo": szTradeNo = htFeedback[szKey].ToString(); break; case "TradeAmt": szTradeAmt = htFeedback[szKey].ToString(); break; case "PaymentType": szPaymentType = htFeedback[szKey].ToString(); break; case "TradeDate": szTradeDate = htFeedback[szKey].ToString(); break; case "BankCode": szBankCode = htFeedback[szKey].ToString(); break; case "vAccount": szVirtualAccount = htFeedback[szKey].ToString(); break; case "ExpireDate": szExpireDate = htFeedback[szKey].ToString(); break; default: break; } } WebOrderModel Trade = Session[szMerchantTradeNo] as WebOrderModel; //先建訂單 tOrder newOrder = new tOrder(); newOrder.oCustomerId = Trade.customer.CustomerId; newOrder.oDate = Trade.payDate; newOrder.oAddress = Trade.webpay.shipAddress; newOrder.oWarehouseName = 1; dbContext.tOrders.Add(newOrder); dbContext.SaveChanges(); tOrder CreateOrder = dbContext.tOrders.OrderByDescending(o => o.OrderId).FirstOrDefault(); foreach (var item in Trade.boughtList) { tOrderDetail orderDetail = new tOrderDetail(); orderDetail.oOrderId = CreateOrder.OrderId; orderDetail.oProductId = item.sProductId; orderDetail.oProductQty = item.sProductQty; dbContext.tOrderDetails.Add(orderDetail); dbContext.tStatus.Remove(item); } dbContext.SaveChanges(); } else { // 其他資料處理。 } } catch (Exception ex) { // 例外錯誤處理。 enErrors.Add(ex.Message); } finally { this.Response.Clear(); // 回覆成功訊息。 if (enErrors.Count() == 0) { this.Response.Write("1|OK"); } // 回覆錯誤訊息。 else { this.Response.Write(String.Format("0|{0}", String.Join("\\r\\n", enErrors))); } this.Response.Flush(); this.Response.End(); } }
public ActionResult test() { List <string> enErrors = new List <string>(); Hashtable htFeedback = null; try { using (AllInOne oPayment = new AllInOne()) { oPayment.HashKey = "5294y06JbISpM5x9"; oPayment.HashIV = "v77hoKGq4kWxNNIS"; /* 取回付款結果 */ enErrors.AddRange(oPayment.CheckOutFeedback(ref htFeedback)); //htFeedback.Values[]; } // 取回所有資料 if (enErrors.Count() == 0) { /* 支付後的回傳的基本參數 */ string szMerchantID = String.Empty; string szMerchantTradeNo = String.Empty; string szRtnCode = String.Empty; string szRtnMsg = String.Empty; /* 使用定期定額交易時,回傳的額外參數 */ string szPeriodType = String.Empty; string szFrequency = String.Empty; string szExecTimes = String.Empty; string szAmount = String.Empty; string szGwsr = String.Empty; string szProcessDate = String.Empty; string szAuthCode = String.Empty; string szFirstAuthAmount = String.Empty; string szTotalSuccessTimes = String.Empty; // 取得資料 foreach (string szKey in htFeedback.Keys) { switch (szKey) { /* 使用定期定額交易時回傳的參數 */ case "MerchantID": szMerchantID = htFeedback[szKey].ToString(); break; case "MerchantTradeNo": szMerchantTradeNo = htFeedback[szKey].ToString(); break; case "RtnCode": szRtnCode = htFeedback[szKey].ToString(); break; case "RtnMsg": szRtnMsg = htFeedback[szKey].ToString(); break; case "PeriodType": szPeriodType = htFeedback[szKey].ToString(); break; case "Frequency": szFrequency = htFeedback[szKey].ToString(); break; case "ExecTimes": szExecTimes = htFeedback[szKey].ToString(); break; case "Amount": szAmount = htFeedback[szKey].ToString(); break; case "Gwsr": szGwsr = htFeedback[szKey].ToString(); break; case "ProcessDate": szProcessDate = htFeedback[szKey].ToString(); break; case "AuthCode": szAuthCode = htFeedback[szKey].ToString(); break; case "FirstAuthAmount": szFirstAuthAmount = htFeedback[szKey].ToString(); break; case "TotalSuccessTimes": szTotalSuccessTimes = htFeedback[szKey].ToString(); break; default: break; } } WebOrderModel Trade = Session[szMerchantTradeNo] as WebOrderModel; } else { // 其他資料處理。 } } catch (Exception ex) { // 例外錯誤處理。 enErrors.Add(ex.Message); } finally { this.Response.Clear(); // 回覆成功訊息。 if (enErrors.Count() == 0) { this.Response.Write("1|OK"); } // 回覆錯誤訊息。 else { this.Response.Write(String.Format("0|{0}", String.Join("\\r\\n", enErrors))); } this.Response.Flush(); this.Response.End(); } return(View(htFeedback)); }