﻿Imports DevExpress.Web
Imports DevExpress.Web.Data
Imports System.Data.SqlClient
Public Class Prodotti
    Inherits System.Web.UI.Page

    Dim tmpSQL As String

    Private copiedValues As Hashtable = Nothing
    Private copiedFields() As String = {"IDProdotto", "Descrizione", "IDCategoriaProdotto", "Codice", "EAN", "IDCodiceIva", "QtaConfezione", "IDValuta", "UnitaMisura", "IDAzienda"}

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        '********************************************************
        '--- Controllo Autenticazione per accesso alla pagina ---
        If Not Session("Autenticato") Then
            Response.Redirect("LoginUser.aspx")
        End If
        '********************************************************


        '--- imposta la connessione al database sui datasource
        dsProdotti.ConnectionString = Session("sConnectionString")
        dsCategorieProdotti.ConnectionString = Session("sConnectionString")
        dsValute.ConnectionString = Session("sConnectionString")
        dsCodiciIva.ConnectionString = Session("sConnectionString")
        dsAziende.ConnectionString = Session("sConnectionString")

        '--- considera il filtro sull'IDAzienda, se è stato passato...
        If Val(Session("sIDAzienda")) > 0 Then
            FiltraDataSource_Prodotti(Session("sIDAzienda"))
            '--- Aggiorna il Titolo...
            titoloLabel.Text = "Prodotti dell'Azienda " & Session("sDescrizioneAzienda").ToString.Trim
        Else
            titoloLabel.Text = "Elenco Generale Prodotti"
        End If


    End Sub
    Sub FiltraDataSource_Prodotti(pIDAzienda)

        '--- filtra i dati in base al parametro, SE IL PARAMETRO > 0 ---
        Dim sqlCmd = "SELECT * from Prodotti"

        If Val(pIDAzienda) > 0 Then
            sqlCmd += " WHERE IDAzienda = " & pIDAzienda
        End If

        dsProdotti.SelectCommand = sqlCmd
        dsProdotti.DataBind()
        ASPxGridView1.DataBind()

        '--- Aggiorna il Titolo...
        If Val(pIDAzienda) > 0 Then
            titoloLabel.Text = "Prodotti dell'Azienda " & Session("sDescrizioneAzienda").ToString.Trim
        Else
            titoloLabel.Text = "Elenco Generale dei Prodotti"
        End If


    End Sub

    Private Sub ASPxGridView1_InitNewRow(sender As Object, e As ASPxDataInitNewRowEventArgs) Handles ASPxGridView1.InitNewRow

        '--- se è stato passato l'IDCliente da un'altra pagina, propone quello in inserimento nuova riga
        If Val(Session("sIDAzienda")) > 0 Then
            Dim xIDAzienda As Integer = Val(Session("sIDAzienda"))
            e.NewValues("IDAzienda") = xIDAzienda
        End If

        '--- Prende la valuta di default (EURO)
        Dim xIDValuta As Integer = LeggiDefault_IDValuta()
        If xIDValuta > 0 Then
            e.NewValues("IDValuta") = xIDValuta
        End If

        '--- Prende il CODICE IVA di default (22)
        Dim xIDAliquotaIva As Integer = LeggiDefault_IDAliquotaIva()
        If xIDAliquotaIva > 0 Then
            e.NewValues("IDCodiceIva") = xIDAliquotaIva
        End If


    End Sub
    Function LeggiDefault_IDValuta()
        '-----------------------------------------------------------------------
        '--- Prende la valuta di default (EURO)
        '-----------------------------------------------------------------------
        Dim xID As Integer = 0

        Dim connection = New SqlConnection(ConfigurationManager.ConnectionStrings("pa_data_userConnectionString").ConnectionString)
        connection.Open()
        Dim tmpSQL = "SELECT IDValuta FROM valute WHERE UPPER(Descrizione) = 'EURO'"
        Dim SqlCommand = New SqlCommand(tmpSQL, connection)
        Dim dr = SqlCommand.ExecuteReader()

        If dr.HasRows Then
            dr.Read()
            xID = dr.Item("IDValuta")        '--- prende l'ID della tabella
        End If

        connection.Close()
        LeggiDefault_IDValuta = xID
    End Function
    Function LeggiDefault_IDAliquotaIva()
        '-----------------------------------------------------------------------
        '--- Prende il CODICE IVA di default (22)
        '-----------------------------------------------------------------------
        Dim xID As Integer = 0

        Dim connection = New SqlConnection(ConfigurationManager.ConnectionStrings("pa_data_userConnectionString").ConnectionString)
        connection.Open()
        Dim tmpSQL = "SELECT IDAliquotaIva FROM codiciiva WHERE Aliquota = 22"
        Dim SqlCommand = New SqlCommand(tmpSQL, connection)
        Dim dr = SqlCommand.ExecuteReader()

        If dr.HasRows Then
            dr.Read()
            xID = dr.Item("IDAliquotaIva")        '--- prende l'ID della tabella
        End If

        connection.Close()
        LeggiDefault_IDAliquotaIva = xID

    End Function
    Private Sub ASPxGridView1_RowInserting(sender As Object, e As ASPxDataInsertingEventArgs) Handles ASPxGridView1.RowInserting
        '----------------------------------------------------------------
        '--- aggiorna i dati in fase di inserimento di una nuova riga ---
        '----------------------------------------------------------------
        Dim xDateTime = DateTime.Now
        e.NewValues("Ins_DataOra") = xDateTime
        e.NewValues("Upd_DataOra") = xDateTime
        e.NewValues("Ins_Utente") = Session("sUtente_UserName")       '--- mettere la variabile di sessione
        e.NewValues("Upd_Utente") = Session("sUtente_UserName")        '--- mettere la variabile di sessione
        e.NewValues("LivelloAutorizzazione") = Session("sUtente_Livello")    '--- mettere la variabile di sessione

    End Sub

    Private Sub ASPxGridView1_RowUpdating(sender As Object, e As ASPxDataUpdatingEventArgs) Handles ASPxGridView1.RowUpdating
        '----------------------------------------------------------------
        '--- aggiorna i dati in fase di inserimento di una nuova riga ---
        '----------------------------------------------------------------
        Dim xDateTime = DateTime.Now
        e.NewValues("Upd_DataOra") = xDateTime
        e.NewValues("Upd_Utente") = Session("sUtente_UserName")        '--- mettere la variabile di sessione

    End Sub

    Protected Sub RefreshButton_Click(sender As Object, e As EventArgs) Handles RefreshButton.Click

        '--- azzera la variabile di sessione per non filtrare più i dati
        Session("sIDAzienda") = ""
        Session("sDescrizioneAzienda") = ""
        FiltraDataSource_Prodotti("")

    End Sub
    Protected Sub grid_CustomButtonCallback(ByVal sender As Object, ByVal e As ASPxGridViewCustomButtonCallbackEventArgs)
        If e.ButtonID <> "Clone" Then
            Return
        End If
        copiedValues = New Hashtable()
        For Each fieldName As String In copiedFields
            copiedValues(fieldName) = ASPxGridView1.GetRowValues(e.VisibleIndex, fieldName)
        Next fieldName
        ASPxGridView1.AddNewRow()

    End Sub

    Protected Sub grid_InitNewRow(ByVal sender As Object, ByVal e As DevExpress.Web.Data.ASPxDataInitNewRowEventArgs)
        If copiedValues Is Nothing Then
            Return
        End If
        For Each fieldName As String In copiedFields
            e.NewValues(fieldName) = copiedValues(fieldName)
        Next fieldName
    End Sub

End Class