⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 outputadapterlogic.cs

📁 很好呀!这是我们学校老师让做的学期末的课程设计
💻 CS
📖 第 1 页 / 共 2 页
字号:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Collections.Generic;
using System.Text;
using Orphean.WinFormHelper.Framework.BusinessLogic;

namespace DataModal.HidaKitDataSetTableAdapters
{

    public partial class OUTPUTSTableAdapter
    {
        public void InitLogic()
        {
            Adapter.RowUpdating += new SqlRowUpdatingEventHandler(Adapter_RowUpdating);
            Adapter.AcceptChangesDuringUpdate = false;
        }

        public void InitTransaction(SqlTransaction trans)
        {
            Adapter.InsertCommand.Transaction = trans;
            Adapter.DeleteCommand.Transaction = trans;
            Adapter.UpdateCommand.Transaction = trans;
            foreach (SqlCommand cmd in CommandCollection)
                cmd.Transaction = trans;
        }

        void Adapter_RowUpdating(object sender, SqlRowUpdatingEventArgs e)
        {
            if (e.StatementType == StatementType.Insert || e.StatementType == StatementType.Update)
            {
                SqlConnection conn = ConnectionHelper.GetConnection();
                try
                {
                    ORDERSTableAdapter adapter = HidaKitAdapterProxy.GetOrdersAdapter(conn);
                    HidaKitDataSet.ORDERSDataTable table = adapter.GetDataByOrderId((string)e.Row["ORDER_ID"]);
                    if (table.Count == 0)
                        throw new IDNotExistsException((string)e.Row["ORDER_ID"], string.Format(Resources.Messages.SOrderNotFound, e.Row["ORDER_ID"]));
                }
                finally
                {
                    ConnectionHelper.ReleaseConnection(conn);
                }
            }
        }
    }

    public partial class OUTPUT_DETAILTableAdapter
    {
        public void InitLogic()
        {
            Adapter.RowUpdating += new SqlRowUpdatingEventHandler(Adapter_RowUpdating);
            Adapter.AcceptChangesDuringUpdate = false;
        }

        public void InitTransaction(SqlTransaction trans)
        {
            Adapter.InsertCommand.Transaction = trans;
            Adapter.DeleteCommand.Transaction = trans;
            Adapter.UpdateCommand.Transaction = trans;
            foreach (SqlCommand cmd in CommandCollection)
                cmd.Transaction = trans;
        }

        void CheckRequired(SqlRowUpdatingEventArgs e)
        {
            HidaKitDataSet.PRODUCTSDataTable productTable = null;
            HidaKitDataSet.STOCKSDataTable stockTable = null;
            SqlConnection conn = ConnectionHelper.GetConnection();
            try
            {
                PRODUCTSTableAdapter productAdapter = HidaKitAdapterProxy.GetProductAdapter(conn);
                STOCKSTableAdapter stockAdapter = HidaKitAdapterProxy.GetStockAdapter(conn);

                if (e.StatementType == StatementType.Insert || e.StatementType == StatementType.Update)
                {
                    productTable = productAdapter.GetDataByProductId((string)e.Row["PRODUCT_ID"]);
                    if (productTable.Count == 0)
                        throw new IDNotExistsException((string)e.Row["PRODUCT_ID"],
                                                       string.Format("Product {0} is not exists.", e.Row["PRODUCT_ID"]));

                    stockTable = stockAdapter.GetStockByProductID((string)e.Row["PRODUCT_ID"]);
                    if (stockTable.Count == 0)
                        throw new IDNotExistsException((string)e.Row["PRODUCT_ID"],
                                                       string.Format(Resources.Messages.SProductNotFound, e.Row["PRODUCT_ID"]));
                }
            }
            finally
            {
                ConnectionHelper.ReleaseConnection(conn);
            }
        }

        void CheckStock(SqlRowUpdatingEventArgs e)
        {
            SqlConnection conn = ConnectionHelper.GetConnection();
            try
            {
                string product_id, order_id;
                STOCK_DETAILTableAdapter stockDetailAdapterForUpdate = HidaKitAdapterProxy.GetStockDetailAdapter(Connection);
                HidaKitDataSet.STOCK_DETAILDataTable stockDetailTable = null;
                HidaKitDataSet.OUTPUTSRow parentRow = null;
                int qty;
                if (Adapter.UpdateCommand.Transaction != null)
                    stockDetailAdapterForUpdate.InitTransaction(Adapter.UpdateCommand.Transaction);

                //check stock qty
                if (e.StatementType == StatementType.Insert || e.StatementType == StatementType.Update)
                {
                    product_id = (string)e.Row["PRODUCT_ID"];
                    stockDetailTable = stockDetailAdapterForUpdate.GetDataByProductID(product_id);

                    if (stockDetailTable.Rows.Count == 0)
                        throw new OutOfStockException(product_id, (string)e.Row["PRODUCT_NAME"], (int)e.Row["QTY"], 0,
                                                          string.Format(Resources.Messages.SStockOut, product_id));
                    DataRow row = null;
                    DataRow[] rows = null;

                    //recover qty
                    if (e.StatementType == StatementType.Update)
                    {
                        rows = stockDetailTable.Select(
                            string.Format("STOCK_ID = '{0}'", e.Row["STOCK_ID", DataRowVersion.Original]));

                        if (rows == null || rows.Length == 0)
                            throw new OutOfStockException(product_id, (string)e.Row["PRODUCT_NAME", DataRowVersion.Original], (int)e.Row["QTY", DataRowVersion.Original], 0,
                                                          string.Format(Resources.Messages.SStockOut, product_id));

                        row = rows[0];
                        qty = row["QTY", DataRowVersion.Original] == DBNull.Value ? 0 : Convert.ToInt32(row["QTY", DataRowVersion.Original]);
                        qty += (int)e.Row["QTY", DataRowVersion.Original];
                        row["QTY"] = qty;


                        rows = stockDetailTable.Select(
                            string.Format("STOCK_ID = '{0}'", e.Row["STOCK_ID"]));
                        if (rows == null || rows.Length == 0)
                            throw new OutOfStockException(product_id, (string)e.Row["PRODUCT_NAME"], (int)e.Row["QTY"], 0,
                                                          string.Format(Resources.Messages.SStockOut, product_id));

                        row = rows[0];
                        qty = row["QTY"] == DBNull.Value ? 0 : Convert.ToInt32(row["QTY"]);

                        qty -= (int)e.Row["QTY"];
                        row["QTY"] = qty;
                        if (qty < 0)
                            throw new OutOfStockException(product_id, (string)e.Row["PRODUCT_NAME"], (int)e.Row["QTY"], Convert.ToInt32(row["QTY"]),
                                                          string.Format(Resources.Messages.SStockOut, e.Row["PRODUCT_NAME"]));
                        stockDetailAdapterForUpdate.Update(stockDetailTable);
                    }
                    else
                    {
                        rows = stockDetailTable.Select(
                            string.Format("STOCK_ID = '{0}'", e.Row["STOCK_ID"]));

                        if (rows == null || rows.Length == 0)
                            throw new OutOfStockException(product_id, (string)e.Row["PRODUCT_NAME"], (int)e.Row["QTY"], 0,
                                                          string.Format(Resources.Messages.SStockOut, product_id));
                        row = rows[0];
                        qty = row["QTY"] == DBNull.Value ? 0 : Convert.ToInt32(row["QTY"]);

                        qty -= (int)e.Row["QTY"];
                        row["QTY"] = qty;
                        if (qty < 0)
                            throw new OutOfStockException(product_id, (string)e.Row["PRODUCT_NAME"], (int)e.Row["QTY"], Convert.ToInt32(row["QTY"]),
                                                          string.Format(Resources.Messages.SStockOut, e.Row["PRODUCT_NAME"]));
                        stockDetailAdapterForUpdate.Update(stockDetailTable);
                    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -