Imports System.Data
Imports System.Data.SqlClient
Imports System
Imports System.Collections
Imports System.ComponentModel
Imports System.Drawing
Imports System.Web
Imports System.Web.SessionState
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.HtmlControls
Imports CrystalDecisions.Shared
Imports CrystalDecisions.CrystalReports.Engine
Imports System.Configuration
Imports System.IO

Partial Class Admin_catalogue_details
    Inherits System.Web.UI.Page
    Shared tempimage As New DataTable
    Shared minus As Integer
    'Shared con As New SqlConnection("Data Source=DEVLOPER; User ID=sa; password=atcodev; Initial Catalog=Atco060208;connect timeout=360")

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not IsPostBack Then
            If Session("AdminID") = Nothing Then
                Response.Redirect("AdminLogin.aspx")
            End If
            If Not IsNothing(tempimage) Then
                tempimage.Rows.Clear()
                tempimage.Columns.Clear()
            End If
            createtable()
            minus = 1080
            fillcrystalreport()
        End If
    End Sub
    Protected Sub createtable()
        tempimage.Columns.Add("product_name", GetType(String))
        tempimage.Columns.Add("product_image", System.Type.GetType("System.Byte[]"))
        tempimage.Columns.Add("product_modelno", GetType(String))
        tempimage.Columns.Add("Product_Code", GetType(String))
        tempimage.Columns.Add("Product_AtcoPrice", GetType(Decimal))
        tempimage.Columns.Add("Product_SellQty", GetType(Decimal))
        tempimage.Columns.Add("Product_ShippingQty", GetType(Integer))
        tempimage.Columns.Add("Brand_Name", GetType(String))
        tempimage.Columns.Add("Product_Dimension", GetType(String))
        tempimage.Columns.Add("Product_PcsPerKg", GetType(String))
        tempimage.Columns.Add("Product_Weight", GetType(Decimal))
        tempimage.Columns.Add("Product_SellQtyType", GetType(String))
        tempimage.Columns.Add("Product_WeightUnitId", GetType(String))
        tempimage.Columns.Add("Product_DimensionUnitId", GetType(String))
        tempimage.Columns.Add("Product_ShippingQtyType", GetType(String))
        tempimage.Columns.Add("Keyword_Name", GetType(String))
        tempimage.Columns.Add("product_Description", GetType(String))
        tempimage.Columns.Add("ProdApp_Application", GetType(String))
        tempimage.Columns.Add("Product_Features", GetType(String))
        tempimage.Columns.Add("TechSpec_parameter", GetType(String))
        tempimage.Columns.Add("ProdSpecInstr_Instruction", GetType(String))
    End Sub
    Protected Sub fillcrystalreport()
        Try

     
            Dim Con As New SqlConnection(ConfigurationManager.AppSettings("ConnectionString"))  ' Declare connection Object
            Dim strqry As String = "SELECT   top 1 Product_Master.Product_SellQtyType,Product_Master.Product_DimensionUnitId,Product_Master.Product_ShippingQtyType,Product_Master.Product_WeightUnitId,ProductApplication.ProdApp_Application,ProductFeatures.ProdFeatures_Features,ProductSpecialNotesInstruction.ProdSpecInstr_Instruction,Product_Master.product_Description,Product_Master.Product_Kid, Product_Master.Product_Code, Product_Master.Product_Name, Brand_Master.Brand_Name,Product_Master.Product_ModelNo, Product_Master.Product_Image, Product_Master.Product_AtcoPrice, Product_Master.Product_Weight, Product_Master.Product_Dimension, Product_Master.Product_SellQty, Product_Master.Product_WeightUnitId,Product_Master.Product_DimensionUnitId, Product_Master.Product_ShippingQty, Product_Master.Product_ShippingQtyType, Product_Master.Product_PcsPerKg, ProductTechnicalSpecification.TechSpec_parameter, Product_Keyword.Keyword_Name,  Product_Master.Product_IsDeleted, Product_Master.Product_Approved FROM         Product_Master LEFT OUTER JOIN ProductApplication ON Product_Master.Product_Kid = ProductApplication.ProdApp_ProductId LEFT OUTER JOIN  ProductFeatures ON Product_Master.Product_Kid = ProductFeatures.ProdFeatures_ProductId LEFT OUTER JOIN   ProductSpecialNotesInstruction ON Product_Master.Product_Kid = ProductSpecialNotesInstruction.ProdSpecInstr_ProductId LEFT OUTER JOIN   ProductTechnicalSpecification ON Product_Master.Product_Kid = ProductTechnicalSpecification.TechSpec_ProductId LEFT OUTER JOIN    Product_Keyword ON Product_Master.Product_Kid = Product_Keyword.Keyword_ProductId LEFT OUTER JOIN  Brand_Master ON Product_Master.Product_BrandId = Brand_Master.Brand_Kid WHERE   (Product_Master.Product_Kid = '" & Request.QueryString("product_id").ToString.Trim & "')"
            Dim sda As New SqlDataAdapter(strqry, Con)
            Dim ds As New DataSet
            sda.Fill(ds, "product_master")
            Dim oRpt As New CrystalDecisions.CrystalReports.Engine.ReportDocument
            oRpt.Load(Server.MapPath("product-catalog.rpt"))
            Dim f1 As CrystalDecisions.CrystalReports.Engine.FieldObject = CType(oRpt.ReportDefinition.Sections(2).ReportObjects("ProductDescription1"), CrystalDecisions.CrystalReports.Engine.FieldObject)
            Dim t1 As CrystalDecisions.CrystalReports.Engine.TextObject = CType(oRpt.ReportDefinition.Sections(2).ReportObjects("Text1"), CrystalDecisions.CrystalReports.Engine.TextObject)
            Dim f2 As CrystalDecisions.CrystalReports.Engine.FieldObject = CType(oRpt.ReportDefinition.Sections(2).ReportObjects("ProdAppApplication1"), CrystalDecisions.CrystalReports.Engine.FieldObject)
            Dim t2 As CrystalDecisions.CrystalReports.Engine.TextObject = CType(oRpt.ReportDefinition.Sections(2).ReportObjects("Text24"), CrystalDecisions.CrystalReports.Engine.TextObject)
            Dim f3 As CrystalDecisions.CrystalReports.Engine.FieldObject = CType(oRpt.ReportDefinition.Sections(2).ReportObjects("ProductFeatures1"), CrystalDecisions.CrystalReports.Engine.FieldObject)
            Dim t3 As CrystalDecisions.CrystalReports.Engine.TextObject = CType(oRpt.ReportDefinition.Sections(2).ReportObjects("Text8"), CrystalDecisions.CrystalReports.Engine.TextObject)
            Dim f4 As CrystalDecisions.CrystalReports.Engine.FieldObject = CType(oRpt.ReportDefinition.Sections(2).ReportObjects("TechSpecparameter1"), CrystalDecisions.CrystalReports.Engine.FieldObject)
            Dim t4 As CrystalDecisions.CrystalReports.Engine.TextObject = CType(oRpt.ReportDefinition.Sections(2).ReportObjects("Text7"), CrystalDecisions.CrystalReports.Engine.TextObject)
            Dim f5 As CrystalDecisions.CrystalReports.Engine.FieldObject = CType(oRpt.ReportDefinition.Sections(2).ReportObjects("ProdSpecInstrInstruction1"), CrystalDecisions.CrystalReports.Engine.FieldObject)
            Dim t5 As CrystalDecisions.CrystalReports.Engine.TextObject = CType(oRpt.ReportDefinition.Sections(2).ReportObjects("Text9"), CrystalDecisions.CrystalReports.Engine.TextObject)
            Dim f6 As CrystalDecisions.CrystalReports.Engine.FieldObject = CType(oRpt.ReportDefinition.Sections(2).ReportObjects("ProductCode1"), CrystalDecisions.CrystalReports.Engine.FieldObject)
            Dim t6 As CrystalDecisions.CrystalReports.Engine.TextObject = CType(oRpt.ReportDefinition.Sections(2).ReportObjects("Text6"), CrystalDecisions.CrystalReports.Engine.TextObject)
            Dim f7 As CrystalDecisions.CrystalReports.Engine.FieldObject = CType(oRpt.ReportDefinition.Sections(2).ReportObjects("ProductModelNo1"), CrystalDecisions.CrystalReports.Engine.FieldObject)
            Dim t7 As CrystalDecisions.CrystalReports.Engine.TextObject = CType(oRpt.ReportDefinition.Sections(2).ReportObjects("Text2"), CrystalDecisions.CrystalReports.Engine.TextObject)
            Dim f8 As CrystalDecisions.CrystalReports.Engine.FieldObject = CType(oRpt.ReportDefinition.Sections(2).ReportObjects("BrandName1"), CrystalDecisions.CrystalReports.Engine.FieldObject)
            Dim t8 As CrystalDecisions.CrystalReports.Engine.TextObject = CType(oRpt.ReportDefinition.Sections(2).ReportObjects("Text12"), CrystalDecisions.CrystalReports.Engine.TextObject)
            Dim f9 As CrystalDecisions.CrystalReports.Engine.FieldObject = CType(oRpt.ReportDefinition.Sections(2).ReportObjects("ProductAtcoPrice1"), CrystalDecisions.CrystalReports.Engine.FieldObject)
            Dim t9 As CrystalDecisions.CrystalReports.Engine.TextObject = CType(oRpt.ReportDefinition.Sections(2).ReportObjects("Text10"), CrystalDecisions.CrystalReports.Engine.TextObject)
            Dim t91 As CrystalDecisions.CrystalReports.Engine.TextObject = CType(oRpt.ReportDefinition.Sections(2).ReportObjects("Text5"), CrystalDecisions.CrystalReports.Engine.TextObject)
            Dim f10 As CrystalDecisions.CrystalReports.Engine.FieldObject = CType(oRpt.ReportDefinition.Sections(2).ReportObjects("ProductSellQty1"), CrystalDecisions.CrystalReports.Engine.FieldObject)
            Dim f101 As CrystalDecisions.CrystalReports.Engine.FieldObject = CType(oRpt.ReportDefinition.Sections(2).ReportObjects("ProductSellQtyType1"), CrystalDecisions.CrystalReports.Engine.FieldObject)
            Dim t10 As CrystalDecisions.CrystalReports.Engine.TextObject = CType(oRpt.ReportDefinition.Sections(2).ReportObjects("Text14"), CrystalDecisions.CrystalReports.Engine.TextObject)
            Dim f11 As CrystalDecisions.CrystalReports.Engine.FieldObject = CType(oRpt.ReportDefinition.Sections(2).ReportObjects("ProductShippingQty1"), CrystalDecisions.CrystalReports.Engine.FieldObject)
            Dim f111 As CrystalDecisions.CrystalReports.Engine.FieldObject = CType(oRpt.ReportDefinition.Sections(2).ReportObjects("ProductShippingQtyType1"), CrystalDecisions.CrystalReports.Engine.FieldObject)
            Dim t11 As CrystalDecisions.CrystalReports.Engine.TextObject = CType(oRpt.ReportDefinition.Sections(2).ReportObjects("Text16"), CrystalDecisions.CrystalReports.Engine.TextObject)
            Dim f12 As CrystalDecisions.CrystalReports.Engine.FieldObject = CType(oRpt.ReportDefinition.Sections(2).ReportObjects("ProductWeightUnitId1"), CrystalDecisions.CrystalReports.Engine.FieldObject)
            Dim f121 As CrystalDecisions.CrystalReports.Engine.FieldObject = CType(oRpt.ReportDefinition.Sections(2).ReportObjects("ProductWeight1"), CrystalDecisions.CrystalReports.Engine.FieldObject)
            Dim t12 As CrystalDecisions.CrystalReports.Engine.TextObject = CType(oRpt.ReportDefinition.Sections(2).ReportObjects("Text20"), CrystalDecisions.CrystalReports.Engine.TextObject)
            Dim f13 As CrystalDecisions.CrystalReports.Engine.FieldObject = CType(oRpt.ReportDefinition.Sections(2).ReportObjects("ProductDimensionUnitId1"), CrystalDecisions.CrystalReports.Engine.FieldObject)
            Dim f131 As CrystalDecisions.CrystalReports.Engine.FieldObject = CType(oRpt.ReportDefinition.Sections(2).ReportObjects("ProductDimension1"), CrystalDecisions.CrystalReports.Engine.FieldObject)
            Dim t13 As CrystalDecisions.CrystalReports.Engine.TextObject = CType(oRpt.ReportDefinition.Sections(2).ReportObjects("Text19"), CrystalDecisions.CrystalReports.Engine.TextObject)
            Dim f14 As CrystalDecisions.CrystalReports.Engine.FieldObject = CType(oRpt.ReportDefinition.Sections(2).ReportObjects("ProductPcsPerKg1"), CrystalDecisions.CrystalReports.Engine.FieldObject)
            Dim t14 As CrystalDecisions.CrystalReports.Engine.TextObject = CType(oRpt.ReportDefinition.Sections(2).ReportObjects("Text21"), CrystalDecisions.CrystalReports.Engine.TextObject)
            Dim f15 As CrystalDecisions.CrystalReports.Engine.FieldObject = CType(oRpt.ReportDefinition.Sections(2).ReportObjects("KeywordName1"), CrystalDecisions.CrystalReports.Engine.FieldObject)
            Dim t15 As CrystalDecisions.CrystalReports.Engine.TextObject = CType(oRpt.ReportDefinition.Sections(2).ReportObjects("Text22"), CrystalDecisions.CrystalReports.Engine.TextObject)
            Dim dt As DataTable = ds.Tables("product_master")
            For Each row As DataRow In dt.Rows
                Dim drow As DataRow = tempimage.NewRow()
                If row("product_Description").ToString.Trim = "" Or row("product_Description").ToString.Trim = "&nbsp;" Then
                    setheightwidth(f2, t2)
                    setheightwidth(f3, t3)
                    setheightwidth(f4, t4)
                    setheightwidth(f5, t5)
                End If
                If row("ProdApp_Application").ToString.Trim = "" Or row("ProdApp_Application").ToString.Trim = "&nbsp;" Then
                    setheightwidth(f3, t3)
                    setheightwidth(f4, t4)
                    setheightwidth(f5, t5)
                End If
                If row("ProdFeatures_Features").ToString.Trim = "" Or row("ProdFeatures_Features").ToString.Trim = "&nbsp;" Then
                    setheightwidth(f4, t4)
                    setheightwidth(f5, t5)
                End If
                If row("TechSpec_parameter").ToString.Trim = "" Or row("TechSpec_parameter").ToString.Trim = "&nbsp;" Then
                    setheightwidth(f5, t5)
                End If
                minus = 360
                If row("Product_Code").ToString.Trim = "" Or row("Product_Code").ToString.Trim = "&nbsp;" Then
                    setheightwidth(f7, t7)
                    setheightwidth(f8, t8)
                    setheightwidth(f9, t9)
                    t91.Top = t91.Top - minus
                    setheightwidth(f10, t10)
                    f101.Top = f101.Top - minus
                    setheightwidth(f11, t11)
                    f111.Top = f111.Top - minus
                    setheightwidth(f12, t12)
                    f121.Top = f121.Top - minus
                    setheightwidth(f13, t13)
                    f131.Top = f131.Top - minus
                    setheightwidth(f14, t14)
                    setheightwidth(f15, t15)
                End If
                If row("Product_ModelNo").ToString.Trim = "" Or row("Product_ModelNo").ToString.Trim = "&nbsp;" Then
                    setheightwidth(f8, t8)
                    setheightwidth(f9, t9)
                    t91.Top = t91.Top - minus
                    setheightwidth(f10, t10)
                    f101.Top = f101.Top - minus
                    setheightwidth(f11, t11)
                    f111.Top = f111.Top - minus
                    setheightwidth(f12, t12)
                    f121.Top = f121.Top - minus
                    setheightwidth(f13, t13)
                    f131.Top = f131.Top - minus
                    setheightwidth(f14, t14)
                    setheightwidth(f15, t15)
                End If
                If row("Brand_Name").ToString.Trim = "" Or row("Brand_Name").ToString.Trim = "&nbsp;" Then
                    setheightwidth(f9, t9)
                    t91.Top = t91.Top - minus
                    setheightwidth(f10, t10)
                    f101.Top = f101.Top - minus
                    setheightwidth(f11, t11)
                    f111.Top = f111.Top - minus
                    setheightwidth(f12, t12)
                    f121.Top = f121.Top - minus
                    setheightwidth(f13, t13)
                    f131.Top = f131.Top - minus
                    setheightwidth(f14, t14)
                    setheightwidth(f15, t15)
                End If
                If Convert.ToInt32(row("Product_AtcoPrice")) = 0 Then
                    setheightwidth(f10, t10)
                    f101.Top = f101.Top - minus
                    setheightwidth(f11, t11)
                    f111.Top = f111.Top - minus
                    setheightwidth(f12, t12)
                    f121.Top = f121.Top - minus
                    setheightwidth(f13, t13)
                    f131.Top = f131.Top - minus
                    setheightwidth(f14, t14)
                    setheightwidth(f15, t15)
                End If
                If Convert.ToInt32(row("Product_SellQty")) = 0 Then
                    setheightwidth(f11, t11)
                    f111.Top = f111.Top - minus
                    setheightwidth(f12, t12)
                    f121.Top = f121.Top - minus
                    setheightwidth(f13, t13)
                    f131.Top = f131.Top - minus
                    setheightwidth(f14, t14)
                    setheightwidth(f15, t15)
                End If

                If Convert.ToInt32(row("Product_ShippingQty")) = 0 Then
                    setheightwidth(f12, t12)
                    f121.Top = f121.Top - minus
                    setheightwidth(f13, t13)
                    f131.Top = f131.Top - minus
                    setheightwidth(f14, t14)
                    setheightwidth(f15, t15)
                End If

                If Convert.ToInt32(row("Product_Weight")) = 0 Then
                    setheightwidth(f13, t13)
                    f131.Top = f131.Top - minus
                    setheightwidth(f14, t14)
                    setheightwidth(f15, t15)
                End If
                If row("Product_Dimension").ToString.Trim = "" Or row("Product_Dimension").ToString.Trim = "&nbsp;" Then
                    setheightwidth(f14, t14)
                    setheightwidth(f15, t15)
                End If
                If row("Product_PcsPerKg").ToString.Trim = "" Or row("Product_PcsPerKg").ToString.Trim = "&nbsp;" Then
                    setheightwidth(f15, t15)
                End If
                drow("product_name") = IsAvailable(Convert.ToString(row("product_name").ToString().Trim))
                drow("product_Description") = IsAvailable(Convert.ToString(row("product_Description")))
                drow("product_modelno") = IsAvailable(Convert.ToString(row("product_modelno")))
                drow("Product_Code") = IsAvailable(Convert.ToString(row("Product_Code")))
                drow("Product_AtcoPrice") = Convert.ToDecimal(row("Product_AtcoPrice"))
                drow("ProdSpecInstr_Instruction") = IsAvailable(Convert.ToString(row("ProdSpecInstr_Instruction")))
                drow("TechSpec_parameter") = IsAvailable(Convert.ToString(row("TechSpec_parameter")))
                drow("Product_Features") = IsAvailable(Convert.ToString(row("ProdFeatures_Features")))
                drow("Product_SellQty") = Convert.ToDecimal(row("Product_SellQty"))
                drow("Product_ShippingQty") = Convert.ToInt32(row("Product_ShippingQty"))
                drow("Brand_Name") = IsAvailable(Convert.ToString(row("Brand_Name")))
                drow("Product_Dimension") = Convert.ToString(row("Product_Dimension")).Trim
                drow("Product_PcsPerKg") = IsAvailable(Convert.ToString(row("Product_PcsPerKg")))
                drow("Product_Weight") = Convert.ToInt32(row("Product_Weight"))
                drow("Keyword_Name") = IsAvailable(Convert.ToString(row("Keyword_Name")))
                drow("ProdApp_Application") = IsAvailable(Convert.ToString(row("ProdApp_Application")))
                If Not IsDBNull(row("Product_SellQtyType")) Then
                    drow("Product_SellQtyType") = Unit_Name(row("Product_SellQtyType").ToString().Trim)
                Else
                    drow("Product_SellQtyType") = ""
                End If
                If Not IsDBNull(row("Product_DimensionUnitId")) Then
                    drow("Product_DimensionUnitId") = Unit_Name(row("Product_DimensionUnitId").ToString().Trim)
                Else
                    drow("Product_DimensionUnitId") = ""
                End If
                If Not IsDBNull(row("Product_ShippingQtyType")) Then
                    drow("Product_ShippingQtyType") = Unit_Name(row("Product_ShippingQtyType").ToString().Trim)
                Else
                    drow("Product_ShippingQtyType") = ""
                End If
                If Not IsDBNull(row("Product_WeightUnitId")) Then
                    drow("Product_WeightUnitId") = Unit_Name(row("Product_WeightUnitId").ToString().Trim)
                Else
                    drow("Product_WeightUnitId") = ""
                End If
                Dim cPicFileName As String = Server.MapPath("~\Upload Image\Product Image\UploadImages\") & row("product_image")
                ' Must create a stream and a reader, from the 
                ' System.IO namespace
                If File.Exists(cPicFileName) Then
                    Dim fsStream1 As New FileStream(cPicFileName, FileMode.Open, FileAccess.Read)
                    Dim br1 As New BinaryReader(fsStream1)
                    drow("product_image") = br1.ReadBytes(CInt(br1.BaseStream.Length))
                    br1.Close()
                    br1 = Nothing
                    fsStream1.Close()
                    fsStream1 = Nothing
                Else
                    drow("product_image") = Nothing
                End If
                ' create an instance of the new datarow
                ' Set the logo, and any other columns
                tempimage.Rows.Add(drow)
               
            Next
            oRpt.SetDataSource(tempimage)
            oRpt.ExportToHttpResponse(ExportFormatType.PortableDocFormat, Response, False, "ExportedReport")
            CrystalReportViewer1.ReportSource = oRpt
            CrystalReportViewer1.DataBind()
          
        Catch ex As Exception

        End Try
    End Sub
    Protected Sub setheightwidth(ByRef f As CrystalDecisions.CrystalReports.Engine.FieldObject, ByRef t As CrystalDecisions.CrystalReports.Engine.TextObject)
        f.Top = f.Top - minus
        t.Top = t.Top - minus
    End Sub
    Protected Function Unit_Name(ByVal str As String) As String
        Try
            con.ConnectionString = System.Configuration.ConfigurationManager.AppSettings("ConnectionString")
            cmd = New SqlCommand("select Unit_Name from unit_master where Unit_kid='" & str & "'", con)
            con.Open()
            dr = cmd.ExecuteReader
            While dr.Read
                If dr(0).ToString.Trim = "" Then
                    Return ""
                Else
                    Return dr(0).ToString
                End If

            End While


        Catch ex As Exception
        Finally
            dr.Close()
            con.Close()
        End Try


    End Function
    Protected Function IsAvailable(ByVal value As String) As String
        If value.ToString.Trim = "" Or value.ToString.Trim = "&nbsp;" Then
            Return "Not Available"
        Else
            Return value
        End If
    End Function
End Class
