﻿Imports System.Data.SqlClient

Public Class ClienteAziendeEdit
    Inherits System.Web.UI.Page

    Dim tmpSQL As String
    Dim connection


    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
        dsClientiAziende.ConnectionString = Session("sConnectionString")
        dsClienti.ConnectionString = Session("sConnectionString")
        dsListini.ConnectionString = Session("sConnectionString")
        dsPagamenti.ConnectionString = Session("sConnectionString")

        If Val(Session("sIDClientiAziende")) = 0 Then
            '================================================
            '--- è un inserimento, azzerare tutti i campi ---
            '================================================
            Dim sqlCmd = "SELECT * from ClientiAziende where IDClientiAziende is null"  'select che ritornerà sempre 0 record
            dsClientiAziende.SelectCommand = sqlCmd
            dsClientiAziende.DataBind()
            'Me.Text = "Scheda Aziende del Cliente " & Session("sDescrizioneCliente").ToString.Trim '--- Aggiorna il Titolo...
        Else
            '--- filtra i dati in base al parametro, SE IL PARAMETRO > 0 ---
            Dim sqlCmd = "SELECT * from ClientiAziende where IDClientiAziende = " & Val(Session("sIDClientiAziende")).ToString   'select che ritornerà il record richiesto dal parametro
            dsClientiAziende.SelectCommand = sqlCmd
            dsClientiAziende.DataBind()
        End If

    End Sub

    Protected Sub ASPxButton1_Click(sender As Object, e As EventArgs) Handles RegistraButton.Click

        registraRiga()
        Response.Redirect("ClientiAziende.aspx")
    End Sub


    Protected Sub RegistraButton0_Click(sender As Object, e As EventArgs) Handles AnnullaButton.Click
        Response.Redirect("ClientiAziende.aspx")
    End Sub

    Function registraRiga() As Boolean
        registraRiga = False
        Dim comandoSQL As String = ""


        '----------------------------------------------------------------
        '--- aggiorna i dati in fase di inserimento di una nuova riga ---
        '----------------------------------------------------------------
        Dim xDateTime = DateTime.Now.ToString("MM-dd-yyyy")  '"12/3/2016 10:42:00" 'time.ToString(format).Replace(".", ":")

        If Val(Session("sIDClientiAziende")) = 0 Then
            Try
                '--- controlla se duplicato ---
                If controllaSeRecordDuplicato(IDClienteComboBox.Value, IDAziendaComboBox.Value) = True Then
                    Exit Function
                End If

                '--- crea la stringa per l'insert ---
                comandoSQL = "Insert into ClientiAziende (IDCliente, IDAzienda, CodiceClienteDitta, Banca, IDPagamento, Trasporto, Imballo, Note, "
                comandoSQL = comandoSQL & "Fido, IDListino, Abi, Cab, BicSwift, Iban, Cin, ContoCorrente, Attivo, "
                comandoSQL = comandoSQL & "Ins_DataOra, Upd_DataOra, Ins_Utente, Upd_Utente, LivelloAutorizzazione)"
                comandoSQL = comandoSQL & " VALUES (@IDCliente,  @IDAzienda, @CodiceClienteDitta, @Banca, @IDPagamento, @Trasporto, @Imballo, @Note, "
                comandoSQL = comandoSQL & " @Fido, @IDListino, @Abi, @Cab, @BicSwift, @Iban, @Cin, @ContoCorrente, @Attivo, "
                comandoSQL = comandoSQL & " @Ins_DataOra, @Upd_DataOra, @Ins_Utente, @Upd_Utente, @LivelloAutorizzazione)"

                dsClientiAziende.InsertCommandType = SqlDataSourceCommandType.Text
                dsClientiAziende.InsertCommand = comandoSQL

                '--- imposta i parametri per l'insert ---
                dsClientiAziende.InsertParameters.Add("IDCliente", IDClienteComboBox.Value)
                dsClientiAziende.InsertParameters.Add("IDAzienda", IDAziendaComboBox.Value)
                dsClientiAziende.InsertParameters.Add("CodiceClienteDitta", CodiceClienteDittaTextBox.Text)
                dsClientiAziende.InsertParameters.Add("Banca", BancaTextBox.Text)
                dsClientiAziende.InsertParameters.Add("IDPagamento", IDPagamentoComboBox.Value)
                dsClientiAziende.InsertParameters.Add("Trasporto", TrasportoTextBox.Text)
                dsClientiAziende.InsertParameters.Add("Imballo", ImballoTextBox.Text)
                dsClientiAziende.InsertParameters.Add("Note", NoteTextBox.Text)
                '---------------------
                dsClientiAziende.InsertParameters.Add("Fido", CDbl(FidoSpin.Value))
                dsClientiAziende.InsertParameters.Add("IDListino", IDListinoComboBox.Value)
                dsClientiAziende.InsertParameters.Add("Abi", AbiTextBox.Text)
                dsClientiAziende.InsertParameters.Add("Cab", CabTextBox.Text)
                dsClientiAziende.InsertParameters.Add("BicSwift", BicSwiftTextBox.Text)
                dsClientiAziende.InsertParameters.Add("Iban", IbanTextBox.Text)
                dsClientiAziende.InsertParameters.Add("Cin", CinTextBox.Text)
                dsClientiAziende.InsertParameters.Add("ContoCorrente", CCTextBox.Text)
                If AttivoCheckBox.Checked Then
                    dsClientiAziende.InsertParameters.Add("Attivo", 1)
                Else
                    dsClientiAziende.InsertParameters.Add("Attivo", 0)
                End If
                '---------------------
                dsClientiAziende.InsertParameters.Add("Ins_DataOra", xDateTime)
                dsClientiAziende.InsertParameters.Add("Upd_DataOra", xDateTime)
                dsClientiAziende.InsertParameters.Add("Ins_Utente", Session("sUtente_UserName"))
                dsClientiAziende.InsertParameters.Add("Upd_Utente", Session("sUtente_UserName"))
                dsClientiAziende.InsertParameters.Add("LivelloAutorizzazione", Session("sUtente_Livello"))

                dsClientiAziende.Insert()
                registraRiga = True

            Catch ex As Exception
                Session("ErrorMessage") = ex.Message
                Response.Redirect("Errorx.aspx")
            End Try

        Else
            Try
                '--- crea la stringa per l'update ---
                comandoSQL = "update ClientiAziende set IDCliente=@IDCliente, IDAzienda=@IDAzienda, CodiceClienteDitta=@CodiceClienteDitta, Banca=@Banca, IDPagamento=@IDPagamento,"
                comandoSQL = comandoSQL & "Trasporto=@Trasporto, Imballo=@Imballo,Note=@Note,"
                comandoSQL = comandoSQL & "Fido=@Fido, IDListino=@IDListino, Abi=@Abi, Cab=@Cab, BicSwift=@BicSwift, Iban=@Iban, Cin=@Cin, ContoCorrente=@ContoCorrente, Attivo=@Attivo,"
                comandoSQL = comandoSQL & " Upd_DataOra=@Upd_DataOra, Upd_Utente=@Upd_Utente"
                comandoSQL = comandoSQL & " where IDClientiAziende = " & Session("sIDClientiAziende").ToString

                dsClientiAziende.UpdateCommandType = SqlDataSourceCommandType.Text
                dsClientiAziende.UpdateCommand = comandoSQL

                '--- imposta i parametri per l'update ---
                dsClientiAziende.UpdateParameters.Add("IDCliente", IDClienteComboBox.Value)
                dsClientiAziende.UpdateParameters.Add("IDAzienda", IDAziendaComboBox.Value)
                dsClientiAziende.UpdateParameters.Add("CodiceClienteDitta", CodiceClienteDittaTextBox.Text)
                dsClientiAziende.UpdateParameters.Add("Banca", BancaTextBox.Text)
                dsClientiAziende.UpdateParameters.Add("IDPagamento", IDPagamentoComboBox.Value)
                dsClientiAziende.UpdateParameters.Add("Trasporto", TrasportoTextBox.Text)
                dsClientiAziende.UpdateParameters.Add("Imballo", ImballoTextBox.Text)
                dsClientiAziende.UpdateParameters.Add("Note", NoteTextBox.Text)
                dsClientiAziende.UpdateParameters.Add("Fido", CDbl(FidoSpin.Value))
                dsClientiAziende.UpdateParameters.Add("IDListino", IDListinoComboBox.Value)
                dsClientiAziende.UpdateParameters.Add("Abi", AbiTextBox.Text)
                dsClientiAziende.UpdateParameters.Add("Cab", CabTextBox.Text)
                dsClientiAziende.UpdateParameters.Add("BicSwift", BicSwiftTextBox.Text)
                dsClientiAziende.UpdateParameters.Add("Iban", IbanTextBox.Text)
                dsClientiAziende.UpdateParameters.Add("Cin", CinTextBox.Text)
                dsClientiAziende.UpdateParameters.Add("ContoCorrente", CCTextBox.Text)
                If AttivoCheckBox.Checked Then
                    dsClientiAziende.UpdateParameters.Add("Attivo", 1)
                Else
                    dsClientiAziende.UpdateParameters.Add("Attivo", 0)
                End If
                'dsClientiAziende.UpdateParameters.Add("Ins_DataOra", xDateTime)
                dsClientiAziende.UpdateParameters.Add("Upd_DataOra", xDateTime)
                'dsClientiAziende.UpdateParameters.Add("Ins_Utente", Session("sUtente_UserName"))
                dsClientiAziende.UpdateParameters.Add("Upd_Utente", Session("sUtente_UserName"))
                'dsClientiAziende.UpdateParameters.Add("LivelloAutorizzazione", Session("sUtente_Livello"))

                dsClientiAziende.Update()
                registraRiga = True


            Catch ex As Exception
                Session("ErrorMessage") = ex.Message
                Response.Redirect("Error.aspx")
            End Try

        End If

    End Function

    Protected Sub IDAziendaComboBox_SelectedIndexChanged(sender As Object, e As EventArgs) Handles IDAziendaComboBox.SelectedIndexChanged

    End Sub
    Protected Sub IDAziendaComboBox_SelectionChanged()

        '--- aggiorna i listini in base all'azienda selezionata nella combo
        If Val(IDAziendaComboBox.SelectedItem.Value) = 0 Then
            '================================================
            '--- è un inserimento, azzerare tutti i campi ---
            '================================================
            Dim sqlCmd = "SELECT * from ClientiAziende where IDlistino is null"  'select che ritornerà sempre 0 record
            dsListini.SelectCommand = sqlCmd
            dsListini.DataBind()
            'Me.Text = "Scheda Aziende del Cliente " & Session("sDescrizioneCliente").ToString.Trim '--- Aggiorna il Titolo...
        Else
            '--- filtra i dati in base al parametro, SE IL PARAMETRO > 0 ---
            Dim sqlCmd = "SELECT * from ClientiAziende where IDlistino = " & Val(IDAziendaComboBox.SelectedItem.Value).ToString   'select che ritornerà il record richiesto dal parametro
            dsListini.SelectCommand = sqlCmd
            dsListini.DataBind()
        End If

    End Sub

    '==============================================
    '--- ritorna TRUE se il record è duplicato ---
    '==============================================
    Private Function controllaSeRecordDuplicato(IDCliente, IDAzienda)

        controllaSeRecordDuplicato = False

        If IDCliente.ToString = "" Or IDAzienda.ToString = "" Then Exit Function


        Dim connectionDup = New SqlConnection(ConfigurationManager.ConnectionStrings("pa_data_userConnectionString").ConnectionString)

        Try

            connectionDup.Open()
            tmpSQL = "SELECT IDClientiAziende FROM ClientiAziende WHERE IDCliente = " & IDCliente.ToString & " and IDAzienda = " & IDAzienda.ToString
            Dim SqlCommand = New SqlCommand(tmpSQL, connectionDup)
            Dim dr = SqlCommand.ExecuteReader()

            If dr.HasRows Then
                '--- esiste già un cliente con quella partita iva...
                dr.Read()
                controllaSeRecordDuplicato = True
                connectionDup.Close()
                Exit Function
            End If

            connectionDup.Close()

        Catch ex As Exception
            connectionDup.Close()
            Session("ErrorMessage") = ex.Message
            ErrorLabel.Text = ex.Message
            'Response.Redirect("Error.aspx")
        End Try
    End Function

End Class