public TierIIData getTierIIData_old(TierIIData.TierIIDataRequest Request)
        {
            BaseUnit = _setBaseUnit("kg", "Unit_Weight");
            CswNbtObjClassUnitOfMeasure PoundsUnit = _setBaseUnit("lb", "Unit_Weight");
            CswNbtUnitConversion        Conversion = (BaseUnit != null && PoundsUnit != null) ?
                                                     new CswNbtUnitConversion(_CswNbtResources, BaseUnit.NodeId, PoundsUnit.NodeId) :
                                                     new CswNbtUnitConversion();

            LocationIds = _setLocationIds(Request.LocationId);
            DataTable MaterialsTable = _getTierIIMaterials(Request);

            foreach (DataRow MaterialRow in MaterialsTable.Rows)
            {
                CswPrimaryKey BaseUnitId = CswConvert.ToPrimaryKey("nodes_" + MaterialRow["unitid"]);
                if (null != BaseUnit && BaseUnit.NodeId != BaseUnitId)
                {
                    //Theoretically, this should never happen
                    //(unless we decide, one day, to change the unit in which we're storing TierII quantity data)
                    BaseUnit = _CswNbtResources.Nodes.GetNode(BaseUnitId);
                    Conversion.setOldUnitProps(BaseUnit);
                }
                Double MaxQty     = Math.Round(Conversion.convertUnit(CswConvert.ToDouble(MaterialRow["maxqty"])), 3);
                Double AverageQty = Math.Round(Conversion.convertUnit(CswConvert.ToDouble(MaterialRow["avgqty"])), 3);

                TierIIData.TierIIMaterial Material = new TierIIData.TierIIMaterial
                {
                    MaterialId          = MaterialRow["materialid"].ToString(),
                    TradeName           = MaterialRow["tradename"].ToString(),
                    CASNo               = MaterialRow["casno"].ToString(),
                    MaterialType        = MaterialRow["materialtype"].ToString(),
                    PhysicalState       = MaterialRow["physicalstate"].ToString(),
                    EHS                 = MaterialRow["specialflags"].ToString().Contains("EHS"),
                    TradeSecret         = MaterialRow["specialflags"].ToString().Contains("Trade Secret"),
                    MaxQty              = MaxQty,
                    MaxQtyRangeCode     = _getRangeCode(MaxQty),
                    AverageQty          = AverageQty,
                    AverageQtyRangeCode = _getRangeCode(AverageQty),
                    DaysOnSite          = CswConvert.ToInt32(MaterialRow["daysonsite"]),
                    Unit                = PoundsUnit != null ? PoundsUnit.Name.Text : "lb"
                };
                CswCommaDelimitedString Hazards = new CswCommaDelimitedString();
                Hazards.FromString(MaterialRow["hazardcategories"].ToString());
                foreach (String Hazard in Hazards)
                {
                    Material.HazardCategories.Add(Hazard);
                }
                DataTable ContainerStorageCodesTable = _getContainerStorageProps(Material.MaterialId, Request);
                foreach (DataRow ContainerPropsRow in ContainerStorageCodesTable.Rows)
                {
                    TierIIData.StorageCodes StorageCodes = new TierIIData.StorageCodes
                    {
                        Pressure    = ContainerPropsRow["pressure"].ToString(),
                        Temperature = ContainerPropsRow["temperature"].ToString(),
                        UseType     = ContainerPropsRow["usetype"].ToString()
                    };
                    Material.Storage.Add(StorageCodes);
                }
                DataTable ContainerLocationsTable = _getContainerLocations(Material.MaterialId, Request);
                foreach (DataRow ContainerLocsRow in ContainerLocationsTable.Rows)
                {
                    TierIIData.StorageLocations Location = new TierIIData.StorageLocations
                    {
                        LocationId = ContainerLocsRow["locationid"].ToString(),
                        Location   = ContainerLocsRow["fulllocation"].ToString()
                    };
                    Material.Locations.Add(Location);
                }
                Data.Materials.Add(Material);
            }

            return(Data);
        }
        public TierIIData getTierIIData(TierIIData.TierIIDataRequest Request)
        {
            CswArbitrarySelect TierIISelect = _CswNbtResources.makeCswArbitrarySelect("Tier II Material Select",
                                                                                      "select * from table(TIER_II_DATA_MANAGER.GET_TIER_II_DATA(" + CswConvert.ToPrimaryKey(Request.LocationId).PrimaryKey +
                                                                                      ", " + _CswNbtResources.getDbNativeDate(DateTime.Parse(Request.StartDate)) +
                                                                                      ", " + _CswNbtResources.getDbNativeDate(DateTime.Parse(Request.EndDate)) + ")) where casno is not null");
            DataTable TierIITable = TierIISelect.getTable();

            foreach (DataRow MaterialRow in TierIITable.Rows)
            {
                TierIIData.TierIIMaterial Material = new TierIIData.TierIIMaterial
                {
                    MaterialId          = MaterialRow["materialid"].ToString(),
                    TradeName           = MaterialRow["tradename"].ToString(),
                    CASNo               = MaterialRow["casno"].ToString(),
                    MaterialType        = MaterialRow["materialtype"].ToString(),
                    PhysicalState       = MaterialRow["physicalstate"].ToString(),
                    EHS                 = CswConvert.ToBoolean(MaterialRow["ehs"].ToString()),
                    TradeSecret         = CswConvert.ToBoolean(MaterialRow["tradesecret"].ToString()),
                    MaxQty              = Math.Round(CswConvert.ToDouble(MaterialRow["maxqty"]), 3),
                    MaxQtyRangeCode     = MaterialRow["maxqtyrangecode"].ToString(),
                    AverageQty          = Math.Round(CswConvert.ToDouble(MaterialRow["avgqty"]), 3),
                    AverageQtyRangeCode = MaterialRow["avgqtyrangecode"].ToString(),
                    DaysOnSite          = CswConvert.ToInt32(MaterialRow["daysonsite"]),
                    Unit                = "lb"
                };
                CswCommaDelimitedString Hazards = new CswCommaDelimitedString();
                Hazards.FromString(MaterialRow["hazardcategories"].ToString());
                foreach (String Hazard in Hazards)
                {
                    Material.HazardCategories.Add(Hazard);
                }
                int ContainerPropRows;
                CswCommaDelimitedString Pressures = new CswCommaDelimitedString();
                Pressures.FromString(MaterialRow["pressure"].ToString());
                ContainerPropRows = Pressures.Count;
                CswCommaDelimitedString Temperatures = new CswCommaDelimitedString();
                Temperatures.FromString(MaterialRow["temperature"].ToString());
                ContainerPropRows = Temperatures.Count > ContainerPropRows ? Temperatures.Count : ContainerPropRows;
                CswCommaDelimitedString UseTypes = new CswCommaDelimitedString();
                UseTypes.FromString(MaterialRow["usetype"].ToString());
                ContainerPropRows = UseTypes.Count > ContainerPropRows ? UseTypes.Count : ContainerPropRows;
                for (int i = 0; i < ContainerPropRows; i++)
                {
                    int p = Pressures.Count - 1 < i ? Pressures.Count : i;
                    int t = Pressures.Count - 1 < i ? Pressures.Count : i;
                    int u = Pressures.Count - 1 < i ? Pressures.Count : i;
                    TierIIData.StorageCodes StorageCodes = new TierIIData.StorageCodes
                    {
                        Pressure    = Pressures[p],
                        Temperature = Temperatures[t],
                        UseType     = UseTypes[u]
                    };
                    Material.Storage.Add(StorageCodes);
                }
                CswCommaDelimitedString Locations = new CswCommaDelimitedString();
                Locations.FromString(MaterialRow["storagelocations"].ToString());
                foreach (String Location in Locations)
                {
                    Material.Locations.Add(new TierIIData.StorageLocations
                    {
                        Location = Location
                    });
                }
                Data.Materials.Add(Material);
            }

            return(Data);
        }