Пример #1
0
 public StoricoController(Utente u, ISession session)
 {
     _session = session;
     using (ITransaction t = _session.BeginTransaction()) {
         List <Models.Model.Profilo.Spesa> spese = _session.Query <Models.Model.Profilo.Spesa>()
                                                   .Where(s => s.Username == u.Username).ToList();
         _storico = new Storico(spese);
         t.Commit();
     }
 }
Пример #2
0
 public WindowEdit(Storico stor)
 {
     InitializeComponent();
     type       = "stor";
     storToEdit = stor;
     setVisibility();
     datePickerStorico.SelectedDate = stor.Data;
     textBoxDescrStorico.Text       = stor.Descr;
     textBoxFatturaStorico.Text     = stor.Fattura;
     textBoxImportoStorico.Text     = stor.Importo.ToString();
 }
Пример #3
0
 private void btnModificaStorico_Click(object sender, RoutedEventArgs e)
 {
     if (utenteCorrente != null && gridStoricoUtente.SelectedItem != null)
     {
         Storico    stor       = (Storico)gridStoricoUtente.SelectedItem;
         WindowEdit windowEdit = new WindowEdit(stor);
         windowEdit.ShowDialog();
         utenteCorrente.ListStorico = DBSqlLite.readStorico(utenteCorrente.Identifier);
         loadStoricoTabella();
         listVariazioni = DBSqlLite.readVariazioni();
         loadVariazioni();
     }
 }
Пример #4
0
 private void btnEliminaStorico_Click(object sender, RoutedEventArgs e)
 {
     if (utenteCorrente != null && gridStoricoUtente.SelectedItem != null)
     {
         Storico stor = (Storico)gridStoricoUtente.SelectedItem;
         if (stor != null)
         {
             MessageBoxResult res = System.Windows.MessageBox.Show("Eliminare riga: " + stor.Data + "," + stor.Descr + "," + stor.Fattura, "", MessageBoxButton.YesNo);
             if (res == MessageBoxResult.Yes)
             {
                 DBSqlLite.eliminaStorico(stor);
                 utenteCorrente.ListStorico = DBSqlLite.readStorico(utenteCorrente.Identifier);
                 loadStoricoTabella();
             }
         }
     }
 }
Пример #5
0
        public static void eliminaStorico(Storico storico)
        {
            try
            {
                m_dbConnection.Open();

                string sql = " DELETE FROM storico "
                             + " where idabbonamento = " + storico.Idstorico;
                SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection);
                command.ExecuteNonQuery();
                Helper.loggerDBOperation(sql);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: {0}", ex.ToString());
            }
            finally
            {
                m_dbConnection.Close();
            }
        }
Пример #6
0
        private void btnInserisciStorico_Click(object sender, RoutedEventArgs e)
        {
            double  importo = Double.Parse(txtImportoStorico.Text);
            Storico stor    = new Storico();

            stor.Data      = datePickerStorico.SelectedDate.Value;
            stor.Descr     = txtDescrStorico.Text;
            stor.Fattura   = txtFattura.Text;
            stor.Importo   = importo;
            stor.Idcliente = utenteCorrente.Identifier;

            VariazioneEconomica varEco = new VariazioneEconomica(stor.Data, stor.Descr + " Fattura " + stor.Fattura, importo, true);


            DBSqlLite.aggiungiVariazione(varEco);
            stor.Idvariazione = varEco.IdVariazione;
            DBSqlLite.aggiungiStorico(stor);
            utenteCorrente.ListStorico = DBSqlLite.readStorico(utenteCorrente.Identifier);
            loadStoricoTabella();
            listVariazioni = DBSqlLite.readVariazioni();
            loadVariazioni();
        }
Пример #7
0
        public static void modificaStorico(Storico storico)
        {
            try
            {
                m_dbConnection.Open();

                string sql = " UPDATE storico SET data = '" + storico.Data.ToString("dd-MM-yyyy") +
                             "',descr = '" + storico.Descr + "',importo = '" + storico.Importo + "',fattura = '" + storico.Fattura + "'"
                             + ",idcliente = '" + storico.Idcliente + "'"
                             + " where idabbonamento = " + storico.Idstorico;
                SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection);
                command.ExecuteNonQuery();
                Helper.loggerDBOperation(sql);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: {0}", ex.ToString());
            }
            finally
            {
                m_dbConnection.Close();
            }
        }
Пример #8
0
        public static SortedList <int, Storico> readStorico(string idcliente)
        {
            SortedList <int, Storico> listStorico = new SortedList <int, Storico>();

            try
            {
                m_dbConnection.Open();

                string           sql     = "SELECT idabbonamento,idcliente,data,descr,importo,fattura,idvariazione FROM storico WHERE idcliente ='" + idcliente + "'";
                SQLiteCommand    command = new SQLiteCommand(sql, m_dbConnection);
                SQLiteDataReader rdr     = command.ExecuteReader();

                while (rdr.Read())
                {
                    Storico stor = new Storico();
                    stor.Idstorico    = Convert.ToInt32(rdr["idabbonamento"]);
                    stor.Idcliente    = rdr["idcliente"].ToString();
                    stor.Data         = Convert.ToDateTime(rdr["data"]);
                    stor.Descr        = rdr["descr"].ToString();
                    stor.Importo      = Convert.ToDouble(rdr["importo"]);
                    stor.Fattura      = rdr["fattura"].ToString();
                    stor.Idvariazione = Convert.ToInt32(rdr["idvariazione"]);
                    listStorico.Add(stor.Idstorico, stor);
                }
            }
            catch (Exception ex)
            {
                MethodBase site       = ex.TargetSite;
                string     methodName = site == null ? null : site.Name;
                Helper.Logger("class=DBSqlLite readStorico -" + ex.Message);
            }
            finally
            {
                m_dbConnection.Close();
            }
            return(listStorico);
        }
Пример #9
0
        public static void aggiungiStorico(Storico storico)
        {
            try
            {
                m_dbConnection.Open();

                string sql = "insert into storico (idcliente,data,descr,fattura,importo,idvariazione) " +
                             "VALUES('" + storico.Idcliente + "','" + storico.Data.ToString("dd-MM-yyyy") + "','" +
                             storico.Descr + "','" + storico.Fattura + "','" + storico.Importo.ToString() + "','" + storico.Idvariazione + "')";


                SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection);
                command.ExecuteNonQuery();
                Helper.loggerDBOperation(sql);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: {0}", ex.ToString());
            }
            finally
            {
                m_dbConnection.Close();
            }
        }
Пример #10
0
        private void butCalcola_Click(object sender, EventArgs e)
        {
            //Se è necessario avvio il timer
            if (Timer && !timer1.Enabled)
            {
                timer1.Start();
            }

            //Setto a false l'allarme, poi controllo se attivarlo o no
            pictureBoxAllarme.Image   = OPC_CTPACK_Software.Properties.Resources.e;
            pictureBoxAllarme.Enabled = false;

            //Cancello i punti del grafico precedente
            chartCreg.Series["CregAttuale"].Points.Clear();

            //Prima parte//

            //Attraverso l'OPC mi interefaccio col PLC, tiro giu i dati e li salvo su CSV
            double[] PosNow = new double[Global.NumeroCampioni];
            double[] VelNow = new double[Global.NumeroCampioni];
            double[] CorNow = new double[Global.NumeroCampioni];
            int[]    Tempo  = new int[Global.NumeroCampioni];

            //Leggo la velocità a cui sta andando la macchina
            int PpmNow = (int)Com_Functions.RsLinx_OPC_Client_Read($"[{Global.TopicName}]Ppm_Run").Value;

            //Controllo che la lettura sia andata a buon fine
            if (PpmNow == -1)
            {
                return;
            }

            //Setto Ppm_Start al valore appena letto di Ppm_Run per far capire al PLC che deve partire col campionamento
            Com_Functions.RsLinx_OPC_Client_Write($"[{Global.TopicName}]Ppm_Start", PpmNow);

            while (true)
            {
                int Controllo = (int)Com_Functions.RsLinx_OPC_Client_Read($"[{Global.TopicName}]Ppm_Start").Value;

                //Controllo che la lettura sia andata a buon fine
                if (Controllo == -1)
                {
                    return;
                }

                //Attendo che il plc finisca di fare i campionamenti, quando finisce mette Ppm_Start a 0
                if (Controllo == 0)
                {
                    break;
                }
                Thread.Sleep(500);
            }

            //Ne creo una nuova istanza per non aver problemi visto che le classi vengono passate per riferimento
            Formato FormatoAttuale = new Formato(this.CregInit.CregTot[0].Formato.Nome, this.CregInit.CregTot[0].Formato.Motore, this.CregInit.CregTot[0].Formato.Kv, this.CregInit.CregTot[0].Formato.Kt, PpmNow, this.CregInit.CregTot[0].Formato.PpmI, this.CregInit.CregTot[0].Formato.PpmF, this.CregInit.CregTot[0].Formato.Passo);

            float[] Temp;

            for (int i = 0; i < PosNow.Length / Global.LengthArray; i++)
            {
                Temp = (float[])Com_Functions.RsLinx_OPC_Client_Read_Array($"[{Global.TopicName}]Posizione[{i * Global.LengthArray}]", Global.LengthArray)[0].Value;

                //Controllo che la lettura sia andata a buon fine
                if (Temp[0] == -1)
                {
                    return;
                }
                Temp.CopyTo(PosNow, i * Global.LengthArray);

                Temp = (float[])Com_Functions.RsLinx_OPC_Client_Read_Array($"[{Global.TopicName}]Velocita[{i * Global.LengthArray}]", Global.LengthArray)[0].Value;

                //Controllo che la lettura sia andata a buon fine
                if (Temp[0] == -1)
                {
                    return;
                }
                Temp.CopyTo(VelNow, i * Global.LengthArray);

                Temp = (float[])Com_Functions.RsLinx_OPC_Client_Read_Array($"[{Global.TopicName}]Corrente[{i * Global.LengthArray}]", Global.LengthArray)[0].Value;

                //Controllo che la lettura sia andata a buon fine
                if (Temp[0] == -1)
                {
                    return;
                }
                Temp.CopyTo(CorNow, i * Global.LengthArray);
            }

            for (int i = 0; i < Tempo.Length; i++)
            {
                //Creo l'array Tempo
                Tempo[i] = (int)(i * (Global.TempoCampionamento * 1000));
            }

            //Mi salvo le variabili che arrivano dal PLC e creo il .CSV con le informazioni alla velocità i
            StreamWriter FileInfoAsse = new StreamWriter($"{Global.PathTrend}{FormatoAttuale.PpmA}_{FormatoAttuale.Nome}.CSV");

            FileInfoAsse.WriteLine($"Formato\t{FormatoAttuale.Nome}");
            FileInfoAsse.WriteLine($"Motore\t{FormatoAttuale.Motore.GetModel()}");
            FileInfoAsse.WriteLine($"TempoCampionamento\t{Global.TempoCampionamento}");
            FileInfoAsse.WriteLine("Time\tPosizione\tVelocità\tCorrente");

            for (int k = 0; k < PosNow.Length; k++)
            {
                FileInfoAsse.WriteLine($"{Tempo[k]}\t{PosNow[k]}\t{VelNow[k]}\t{CorNow[k]}");
            }

            //Chiudo il File
            FileInfoAsse.Close();

            //Seconda parte//

            //Apro il CSV appena salvato, calcolo il Creg e lo grafico
            Creg CregAttuale = new Creg(FormatoAttuale, Global.PathTrend, this.CregInit.CregTot[0].Periodi);

            //Disegno il punto del CregAttuale sul grafico
            chartCreg.Series["CregAttuale"].Points.AddXY(CregAttuale.Formato.PpmA, CregAttuale.CregAttuale);

            //Visualizzo il valore di CregAttuale
            textBoxCreg.Text = CregAttuale.CregAttuale.ToString();

            //Scrivo il valore calcolato di Creg sull'array
            Com_Functions.RsLinx_OPC_Client_Write($"[{Global.TopicName}]Creg_Attuale", (float)CregAttuale.CregAttuale);

            //Ottengo il valore di CregTeo relativo ai Ppm attuali necessario per il confronto
            double CregTeo = 0;

            if (CregAttuale.Formato.PpmA == CregInit.CregTot[0].Formato.PpmA)
            {
                CregTeo = CregInit.CregTot[0].CregAttuale;
            }
            else
            {
                for (int i = 1; i < CregInit.CregTot.Length; i++)
                {
                    if (CregAttuale.Formato.PpmA == CregInit.CregTot[i].Formato.PpmA)
                    {
                        CregTeo = CregInit.CregTot[i].CregAttuale;
                        break;
                    }
                    else if ((CregAttuale.Formato.PpmA > CregInit.CregTot[i - 1].Formato.PpmA) && (CregAttuale.Formato.PpmA < CregInit.CregTot[i].Formato.PpmA))
                    {
                        CregTeo = ((CregInit.CregTot[i - 1].CregAttuale * (CregInit.CregTot[i].Formato.PpmA - CregAttuale.Formato.PpmA)) + (CregInit.CregTot[i].CregAttuale * (CregAttuale.Formato.PpmA - CregInit.CregTot[i - 1].Formato.PpmA))) / CregInit.CregTot[i].Formato.Passo;
                        break;
                    }
                }
            }

            //Controllo se il CregAttuale è nelle soglie, se così non è attivo allarme
            if (CregAttuale.CregAttuale >= (CregTeo + (CregTeo * CregInit.OffsetPos) / 100))
            {
                pictureBoxAllarme.Enabled = true;
            }

            if (CregAttuale.CregAttuale <= (CregTeo + (CregTeo * CregInit.OffsetNeg) / 100))
            {
                pictureBoxAllarme.Enabled = true;
            }

            //Scrivo il valore del CregAttuale sul file per lo storico con PPM
            StreamWriter Storico;

            if (File.Exists($"{Global.PathStorico}{CregAttuale.Formato.PpmA}_{CregAttuale.Formato.Nome}_Storico_Creg.txt"))
            {
                //Se il file esiste già lo apro in append
                Storico = File.AppendText($"{Global.PathStorico}{CregAttuale.Formato.PpmA}_{CregAttuale.Formato.Nome}_Storico_Creg.txt");
            }
            else
            {
                //Se non esiste lo creo e scrivo l'intestazione
                Storico = new StreamWriter($"{Global.PathStorico}{CregAttuale.Formato.PpmA}_{CregAttuale.Formato.Nome}_Storico_Creg.txt");

                Storico.WriteLine($"Tolleranza\t{this.CregInit.OffsetPos}");
                Storico.WriteLine($"CregTeo\t{CregTeo}");
                Storico.WriteLine("");
                Storico.WriteLine("DateTime\t\tCreg");
            }

            //Scrivo il CregAttuale e chiudo il file
            Storico.WriteLine($"{DateTime.Now}\t{CregAttuale.CregAttuale}");
            Storico.Close();

            //Scrivo il valore del CregAttuale sul file per lo storico Totale
            StreamWriter StoricoTot;

            if (File.Exists($"{Global.PathStorico}TOT_{CregAttuale.Formato.Nome}_Storico_Creg.txt"))
            {
                //Se il file esiste già lo apro in append
                StoricoTot = File.AppendText($"{Global.PathStorico}TOT_{CregAttuale.Formato.Nome}_Storico_Creg.txt");
            }
            else
            {
                //Se non esiste lo creo e scrivo l'intestazione
                StoricoTot = new StreamWriter($"{Global.PathStorico}TOT_{CregAttuale.Formato.Nome}_Storico_Creg.txt");

                StoricoTot.WriteLine($"Tolleranza\t{this.CregInit.OffsetPos}");
                StoricoTot.WriteLine("");
                StoricoTot.WriteLine("DateTime\t\tCreg\t\t\tCregTeo\t\t\tPpm");
            }

            //Scrivo il CregAttuale e chiudo il file
            StoricoTot.WriteLine($"{DateTime.Now}\t{CregAttuale.CregAttuale}\t{CregTeo}\t{CregAttuale.Formato.PpmA}");
            StoricoTot.Close();
        }