using System;

using System.Data;

using System.Data.SqlTypes;

using System.Data.SqlClient;

using YellowbridgeSoftwareInc.Info;

 

namespace YellowbridgeSoftwareInc.BusinessBase

{

      /// <summary>

      /// Purpose: Business base class for the table 'Orders'.

      /// </summary>

      public class Orders

      {

            #region Class Member Declarations

                  string _connectionString;

                  SqlConnection _cn;

                  private SqlInt32 _OrderID;

                  private SqlString _CustomerID;

                  private SqlInt32 _EmployeeID;

                  private SqlDateTime _OrderDate;

                  private SqlDateTime _RequiredDate;

                  private SqlDateTime _ShippedDate;

                  private SqlInt32 _ShipVia;

                  private SqlMoney _Freight;

                  private SqlString _ShipName;

                  private SqlString _ShipAddress;

                  private SqlString _ShipCity;

                  private SqlString _ShipRegion;

                  private SqlString _ShipPostalCode;

                  private SqlString _ShipCountry;

                       

            #endregion

           

            public Orders(  string connectionString )

            {

                  _connectionString = connectionString ;

            }

           

            // Create a new BusinessBase.Orders object and fill it with data by it's primary key

            public Orders(  string connectionString, int OrderID  )

            {

                  _connectionString = connectionString ;

                 

                  // Fill the object with data by primary key

                  SelectOne( OrderID  );

            }

           

            public Orders(  SqlConnection cn )

            {

                  _cn = cn;

            }

           

            // Create a new BusinessBase.Orders object and fill it with data by it's primary key

            public Orders(  SqlConnection cn, int OrderID  )

            {

                  _cn = cn;

                 

                  // Fill the object with data by primary key

                  SelectOne( OrderID  );

            }

           

            public void SelectOne(  int OrderID  )

            {

                  // Get new transport object

                  OrdersInfo info = new OrdersInfo();

                 

                  // Get a Persist.Orders

                  Persist.Orders persist;

                  if ( _cn == null )

                        persist = new Persist.Orders( _connectionString );

                  else

                        persist = new Persist.Orders( _cn );

                 

                  // Fill the transport

                  persist.SelectOne( ref info, OrderID  );

                 

                  // Fill the fields

                  FillFromTransport( info );

                 

            }

           

            public DataTable SelectOne_DataTable( int OrderID  )

            {

                  // Get a Persist.Orders

                  Persist.Orders persist;

                  if ( _cn == null )

                        persist = new Persist.Orders( _connectionString );

                  else

                        persist = new Persist.Orders( _cn );

                       

                  return persist.SelectOne_DataTable( OrderID  );

           

            }

           

            public SqlDataReader SelectOne_DataReader( int OrderID  )

            {

                  // Get a Persist.Orders

                  Persist.Orders persist;

                  if ( _cn == null )

                        persist = new Persist.Orders( _connectionString );

                  else

                        persist = new Persist.Orders( _cn );

                       

                  return persist.SelectOne_DataReader( OrderID  );

           

            }

           

            public OrdersInfoCollection SelectAll()

            {

                  // Create a collection

                  OrdersInfoCollection infoCollection = new OrdersInfoCollection();

                 

                  // Create a ersist.Orders

                  Persist.Orders persist;

                  if ( _cn == null )

                        persist = new Persist.Orders( _connectionString );

                  else

                        persist = new Persist.Orders( _cn );

                       

                  // Fill the info collection

                  persist.SelectAll( ref infoCollection );

                 

                  // Return the collection

                  return infoCollection;

            }

           

            public DataTable SelectAll_DataTable()

            {

                  // Create a Persist.Orders

                  Persist.Orders persist;

                  if ( _cn == null )

                        persist = new Persist.Orders( _connectionString );

                  else

                        persist = new Persist.Orders( _cn );

                       

                  return persist.SelectAll_DataTable( );

            }

           

            public SqlDataReader SelectAll_DataReader()

            {

                  // Create a Persist.Orders

                  Persist.Orders persist;

                  if ( _cn == null )

                        persist = new Persist.Orders( _connectionString );

                  else

                        persist = new Persist.Orders( _cn );

                       

                  return persist.SelectAll_DataReader( );

            }

 

            public Order_DetailsInfoCollection GetOrder_DetailsByOrderID()

            {

                  // Create the where clause

                  string whereClause = "[Order Details].[OrderID] = " + _OrderID.ToString() ;

           

                  // Create a collection

                  Order_DetailsInfoCollection infoCollection = new Order_DetailsInfoCollection();

                 

                  // Create a Persist.Orders

                  Persist.Order_Details persist;

                  if ( _cn == null )

                        persist = new Persist.Order_Details( _connectionString );

                  else

                        persist = new Persist.Order_Details( _cn );

                 

                  // Fill the collection 

                  persist.SelectWhere( ref infoCollection, whereClause );

                 

                  // Return the collection

                  return infoCollection;

           

            }

           

            public DataTable GetDataTableByOrderID()

            {

                  // Create the where clause

                  string whereClause = "[Order Details].[OrderID] = " + _OrderID.ToString() ;

           

                  // Create a DataTable

                  DataTable dt;

                 

                  // Create a Persist.Orders

                  Persist.Order_Details persist;

                  if ( _cn == null )

                        persist = new Persist.Order_Details( _connectionString );

                  else

                        persist = new Persist.Order_Details( _cn );

                 

                  // Get the DataTable   

                  dt = persist.SelectWhere_DataTable( whereClause );

                 

                  // Return the DataTable

                  return dt;

           

            }

           

            public SqlDataReader GetDataReaderByOrderID()

            {

                  // Create the where clause

                  string whereClause = "[Order Details].[OrderID] = " + _OrderID.ToString() ;

           

                  // Create a DataReader

                  SqlDataReader dr;

                 

                  // Create a Persist.Orders

                  Persist.Order_Details persist;

                  if ( _cn == null )

                        persist = new Persist.Order_Details( _connectionString );

                  else

                        persist = new Persist.Order_Details( _cn );

                 

                  // Get the SqlDataReader

                  dr = persist.SelectWhere_DataReader( whereClause );

                 

                  // Return the DataReader

                  return dr;

           

            }

 

           

           

           

            public OrdersInfoCollection SelectWhere( string whereClause )

            {

                  // Create a collection

                  OrdersInfoCollection infoCollection = new OrdersInfoCollection();

                 

                  // Create a Persist.Orders

                  Persist.Orders persist;

                  if ( _cn == null )

                        persist = new Persist.Orders( _connectionString );

                  else

                        persist = new Persist.Orders( _cn );

                 

                  // Fill the collection 

                  persist.SelectWhere( ref infoCollection, whereClause );

                 

                  // Return the collection

                  return infoCollection;

            }

           

            public DataTable SelectWhere_DataTable( string whereClause )

            {

                  // Create a Persist.Orders

                  Persist.Orders persist;

                  if ( _cn == null )

                        persist = new Persist.Orders( _connectionString );

                  else

                        persist = new Persist.Orders( _cn );

 

                  // Return the DataTable

                  return persist.SelectWhere_DataTable( whereClause );

                 

            }

           

            public SqlDataReader SelectWhere_DataReader( string whereClause )

            {

                  // Create a Persist.Orders

                  Persist.Orders persist;

                  if ( _cn == null )

                        persist = new Persist.Orders( _connectionString );

                  else

                        persist = new Persist.Orders( _cn );

 

                  // Return the DataTable

                  return persist.SelectWhere_DataReader( whereClause );

                 

            }

           

           

           

            public bool Insert ()

            {

                  OrdersInfo info = PackageTransport();

                 

                  Persist.Orders persist;

                  if ( _cn == null )

                        persist = new Persist.Orders( _connectionString );

                  else

                        persist = new Persist.Orders( _cn );

                       

                  bool insertSuccess = persist.Insert( ref info );

                 

                  // Fill the fields

                  FillFromTransport( info );

                 

                  return insertSuccess;

            }

           

            public bool Update ()

            {

                  OrdersInfo info = PackageTransport();

                 

                  Persist.Orders persist;

                  if ( _cn == null )

                        persist = new Persist.Orders( _connectionString );

                  else

                        persist = new Persist.Orders( _cn );

                       

                  bool updateSuccess = persist.Update( ref info );

                 

                  // Fill the fields

                  FillFromTransport( info );

                 

                  return updateSuccess;

            }

           

            public bool Delete()

            {

                  Persist.Orders persist;

                  if ( _cn == null )

                        persist = new Persist.Orders( _connectionString );

                  else

                        persist = new Persist.Orders( _cn );

                       

                  bool deleteSuccess = persist.Delete( OrderID   );

                 

                  return deleteSuccess;

            }

                 

           

            public void SetCustomerIDNull()

            {

                  _CustomerID = SqlString.Null;

                  }

           

                  public bool IsCustomerIDNull()

              {

                  return _CustomerID.IsNull;

              }

                 

            public void SetEmployeeIDNull()

            {

                  _EmployeeID = SqlInt32.Null;

                  }

           

                  public bool IsEmployeeIDNull()

              {

                  return _EmployeeID.IsNull;

              }

                 

            public void SetOrderDateNull()

            {

                  _OrderDate = SqlDateTime.Null;

                  }

           

                  public bool IsOrderDateNull()

              {

                  return _OrderDate.IsNull;

              }

                 

            public void SetRequiredDateNull()

            {

                  _RequiredDate = SqlDateTime.Null;

                  }

           

                  public bool IsRequiredDateNull()

              {

                  return _RequiredDate.IsNull;

              }

                 

            public void SetShippedDateNull()

            {

                  _ShippedDate = SqlDateTime.Null;

                  }

           

                  public bool IsShippedDateNull()

              {

                  return _ShippedDate.IsNull;

              }

                 

            public void SetShipViaNull()

            {

                  _ShipVia = SqlInt32.Null;

                  }

           

                  public bool IsShipViaNull()

              {

                  return _ShipVia.IsNull;

              }

                 

            public void SetFreightNull()

            {

                  _Freight = SqlMoney.Null;

                  }

            

                  public bool IsFreightNull()

              {

                  return _Freight.IsNull;

              }

                 

            public void SetShipNameNull()

            {

                  _ShipName = SqlString.Null;

                  }

           

                  public bool IsShipNameNull()

              {

                  return _ShipName.IsNull;

              }

                 

            public void SetShipAddressNull()

            {

                  _ShipAddress = SqlString.Null;

                  }

           

                  public bool IsShipAddressNull()

              {

                  return _ShipAddress.IsNull;

              }

                 

            public void SetShipCityNull()

            {

                  _ShipCity = SqlString.Null;

                  }

           

                  public bool IsShipCityNull()

              {

                  return _ShipCity.IsNull;

              }

                 

            public void SetShipRegionNull()

            {

                  _ShipRegion = SqlString.Null;

                  }

           

                  public bool IsShipRegionNull()

              {

                  return _ShipRegion.IsNull;

              }

                 

            public void SetShipPostalCodeNull()

            {

                  _ShipPostalCode = SqlString.Null;

                  }

           

                  public bool IsShipPostalCodeNull()

              {

                  return _ShipPostalCode.IsNull;

              }

                 

            public void SetShipCountryNull()

            {

                  _ShipCountry = SqlString.Null;

                  }

           

                  public bool IsShipCountryNull()

              {

                  return _ShipCountry.IsNull;

              }

                 

                 

                 

            // Packages fields into OrdersTransport

            private OrdersInfo PackageTransport()

            {

                  // Get a new transport

                  OrdersInfo transport = new OrdersInfo();

                 

                  // Fill transport

                  transport.OrderID = _OrderID;

                  transport.CustomerID = _CustomerID;

                  transport.EmployeeID = _EmployeeID;

                  transport.OrderDate = _OrderDate;

                  transport.RequiredDate = _RequiredDate;

                  transport.ShippedDate = _ShippedDate;