using System;
using System.Data;
using System.Data.SqlClient;
namespace session
{
/// <summary>
/// OrderSystem 的摘要说明。
/// </summary>
public class OrderSystem
{
public OrderSystem()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public void CalcPaySummary(ref Order orderData)
{
foreach(OrderItem myorderitem in orderData.Orderofhashtable.Values)
{
orderData.SubItemTotal+=myorderitem.ItemCount*myorderitem.ItemPrice;
}
orderData.ShippingPay=(decimal)orderData.SubItemTotal*(decimal)0.15;
orderData.Total=orderData.ShippingPay+orderData.SubItemTotal;
}
public bool InsertOrder(Order orderData)
{
int customerid=orderData.CustomerId;
decimal subitemprice=orderData.SubItemTotal;
decimal shippingpay=orderData.ShippingPay;
decimal total=orderData.Total;
SqlConnection conn=new SqlConnection();
conn.ConnectionString = System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"];
SqlCommand command=conn.CreateCommand();
// command.CommandText=string.Format("insert into Order values('{0}''{1}''{2}''{3}')",customerid,subitemprice,shippingpay,total);
command.CommandText="InsertOrder";
command.CommandType=CommandType.StoredProcedure;
command.Parameters.Add("@PKId",SqlDbType.Int);
command.Parameters["@PKId"].Direction=ParameterDirection.Output;
command.Parameters.Add("@CustomerId",SqlDbType.Int);
command.Parameters.Add("@SubItemPrice",SqlDbType.Money);
command.Parameters.Add("@ShippingPay",SqlDbType.Money);
command.Parameters.Add("@Total",SqlDbType.Money);
command.Parameters["@CustomerId"].Value=orderData.CustomerId;
command.Parameters["@SubItemPrice"].Value=orderData.SubItemTotal;
command.Parameters["@ShippingPay"].Value=orderData.ShippingPay;
command.Parameters["@Total"].Value=orderData.Total;
conn.Open();
SqlTransaction POORDIABLOsqltransaction=conn.BeginTransaction();
command.Transaction=POORDIABLOsqltransaction;
bool sureask=true;
try
{
command.ExecuteNonQuery();
int id=(int)command.Parameters["@PKId"].Value;
command.CommandText="InsertOrderItem";
command.Parameters.Clear();
command.Parameters.Add("@OrderId",SqlDbType.Int);
command.Parameters.Add("@ProductId",SqlDbType.Int);
command.Parameters.Add("@ItemCount",SqlDbType.Int);
command.Parameters.Add("@ItemPrice",SqlDbType.Money);
foreach(OrderItem myorderitem in orderData.Orderofhashtable.Values)
{
myorderitem.OrderId=id;
command.Parameters["@OrderId"].Value=myorderitem.OrderId;
command.Parameters["@ProductId"].Value=myorderitem.ProductId;
command.Parameters["@ItemCount"].Value=myorderitem.ItemCount;
command.Parameters["@ItemPrice"].Value=myorderitem.ItemPrice;
command.ExecuteNonQuery();
}
POORDIABLOsqltransaction.Commit();
}
catch
{
sureask=false;
POORDIABLOsqltransaction.Rollback();
}
finally
{
conn.Close();
}
return sureask;
}
}
}