public static ExtraOptiune findExtraOptiuneById(long idExtraOptiune)
        {
            string       query        = "SELECT * FROM ExtraOptiuni where Id=@id";
            ExtraOptiune extraOptiune = null;

            using (SQLiteConnection connection = new SQLiteConnection(Connection.ConnectionString))
            {
                connection.Open();

                var command = new SQLiteCommand(query, connection);
                command.Parameters.AddWithValue("@id", idExtraOptiune);

                using (SQLiteDataReader sqlReader = command.ExecuteReader())
                {
                    while (sqlReader.Read())
                    {
                        long   id       = (long)sqlReader["Id"];
                        string denumire = (string)sqlReader["Denumire"];
                        int    minute   = Convert.ToInt32((long)sqlReader["Minute"]);
                        int    mesaje   = Convert.ToInt32((long)sqlReader["Mesaje"]);
                        int    net_MB   = Convert.ToInt32((long)sqlReader["Net_MB"]);
                        double pret     = (double)sqlReader["Pret"];

                        extraOptiune = new ExtraOptiune(id, denumire, minute, mesaje, net_MB, pret);
                    }
                }

                return(extraOptiune);
            }
        }
        public static List <ExtraOptiune> findAllExtraOptiune()
        {
            string query = "SELECT * FROM ExtraOptiuni";
            List <ExtraOptiune> extraOptiuni = new List <ExtraOptiune>();

            using (SQLiteConnection connection = new SQLiteConnection(Connection.ConnectionString))
            {
                connection.Open();

                var command = new SQLiteCommand(query, connection);

                using (SQLiteDataReader sqlReader = command.ExecuteReader())
                {
                    while (sqlReader.Read())
                    {
                        long   id       = (long)sqlReader["Id"];
                        string denumire = (string)sqlReader["Denumire"];
                        int    minute   = Convert.ToInt32((long)sqlReader["Minute"]);
                        int    mesaje   = Convert.ToInt32((long)sqlReader["Mesaje"]);
                        int    net_MB   = Convert.ToInt32((long)sqlReader["Net_MB"]);
                        double pret     = (double)sqlReader["Pret"];

                        ExtraOptiune extraOptiune = new ExtraOptiune(id, denumire, minute, mesaje, net_MB, pret);
                        extraOptiuni.Add(extraOptiune);
                    }
                }

                return(extraOptiuni);
            }
        }
        public static void deleteExtraOptiune(ExtraOptiune extraOptiune)
        {
            var query = "DELETE FROM ExtraOptiuni WHERE Id = @id";

            using (SQLiteConnection connection = new SQLiteConnection(Connection.ConnectionString))
            {
                var command = new SQLiteCommand(query, connection);
                command.Parameters.AddWithValue("@id", extraOptiune.Id);

                connection.Open();

                command.ExecuteNonQuery();
            }
        }
        private void BtnEdit_Click(object sender, EventArgs e)
        {
            if (lvExtraOptiuni.SelectedItems.Count != 1)
            {
                MessageBox.Show("Alegeti o extra-optiune!");
                return;
            }

            ListViewItem lvi     = lvExtraOptiuni.SelectedItems[0];
            ExtraOptiune optiune = (ExtraOptiune)lvi.Tag;

            EditExtraOptiuneForm editExtraOptiuneForm = new EditExtraOptiuneForm(optiune);

            if (editExtraOptiuneForm.ShowDialog() == DialogResult.OK)
            {
                ExtraOptiuneRepository.updateExtraOptiune(optiune);
                AfisareExtraOptiuni();
            }
        }
        private void BtnDelete_Click(object sender, EventArgs e)
        {
            if (lvExtraOptiuni.SelectedItems.Count != 1)
            {
                MessageBox.Show("Alegeti o extra-optiune!");
                return;
            }

            if (MessageBox.Show(
                    "Sinteti sigur de stergere?",
                    "Stergere extra-optiune",
                    MessageBoxButtons.YesNo,
                    MessageBoxIcon.Warning) == DialogResult.Yes)
            {
                ListViewItem lvi     = lvExtraOptiuni.SelectedItems[0];
                ExtraOptiune optiune = (ExtraOptiune)lvi.Tag;
                ExtraOptiuneRepository.deleteExtraOptiune(optiune);
                extraOptiuni.Remove(optiune);
                AfisareExtraOptiuni();
            }
        }
        public static void updateExtraOptiune(ExtraOptiune extraOptiune)
        {
            var query = "UPDATE ExtraOptiuni " +
                        "SET Denumire = @denumire, Minute = @minute, Mesaje = @mesaje, Net_MB = @net_MB, Pret = @pret " +
                        "WHERE Id = @id";

            using (SQLiteConnection connection = new SQLiteConnection(Connection.ConnectionString))
            {
                var command = new SQLiteCommand(query, connection);
                command.Parameters.AddWithValue("@denumire", extraOptiune.Name);
                command.Parameters.AddWithValue("@minute", extraOptiune.NoMinutes);
                command.Parameters.AddWithValue("@mesaje", extraOptiune.NoMessages);
                command.Parameters.AddWithValue("@net_MB", extraOptiune.NoNetMb);
                command.Parameters.AddWithValue("@pret", extraOptiune.Price);
                command.Parameters.AddWithValue("@id", extraOptiune.Id);

                connection.Open();

                command.ExecuteNonQuery();
            }
        }
        public void AfisareClienti()
        {
            lvClienti.Items.Clear();
            foreach (var client in clienti)
            {
                var lvi = new ListViewItem(client.Nume);
                lvi.SubItems.Add(client.Prenume);
                lvi.SubItems.Add(client.DataNasterii.ToShortDateString());

                TipAbonament abonament = TipAbonamentRepository.findTipAbonamentById(client.IdAbonament);
                lvi.SubItems.Add(abonament.Name);

                ExtraOptiune extraOptiune = ExtraOptiuneRepository.findExtraOptiuneById(client.IdExtraOptiune);
                lvi.SubItems.Add(extraOptiune.Name);

                Plata plata = PlataRepository.findPlataById(client.IdFactura);
                lvi.SubItems.Add(plata.Value.ToString());
                lvi.SubItems.Add(plata.DueDate.ToShortDateString());
                lvi.Tag = client;

                lvClienti.Items.Add(lvi);
            }
        }
        private void BtnAdd_Click(object sender, EventArgs e)
        {
            bool   isValid  = true;
            string denumire = tbDenumire.Text;

            if (denumire.Length < 3)
            {
                isValid = false;
                epDenumire.SetError(tbDenumire, "At least 3 chars!");
            }

            string minute = tbMinute.Text.Trim();

            if (minute.Length < 1 || (minute.StartsWith("0") && minute.Length > 1))
            {
                isValid = false;
                epMinute.SetError(tbMinute, "Invalid number!");
            }

            string mesaje = tbMesaje.Text;

            if (mesaje.Length < 1 || (mesaje.StartsWith("0") && mesaje.Length > 1))
            {
                isValid = false;
                epMesaje.SetError(tbMesaje, "Invalid quantity!");
            }

            string netMb = tbNetMb.Text;

            if (netMb.Length < 1 || (netMb.StartsWith("0") && netMb.Length > 1))
            {
                isValid = false;
                epNetMb.SetError(tbNetMb, "Invalid quantity!");
            }

            string pretExtraOptiune = tbPret.Text;

            if (pretExtraOptiune.Length < 1 ||
                (pretExtraOptiune.StartsWith("0") && ((pretExtraOptiune.Contains(".") && pretExtraOptiune.IndexOf('.') != 1) || (!pretExtraOptiune.Contains(".") && pretExtraOptiune.Length > 1))) ||
                (pretExtraOptiune.StartsWith("0") && pretExtraOptiune.Contains(".") && pretExtraOptiune.IndexOf('.') == 1 && pretExtraOptiune.Length < 3))
            {
                isValid = false;
                epPret.SetError(
                    tbPret,
                    "Invalid value!");
            }

            if (!isValid)
            {
                MessageBox.Show(
                    "Form contains errors!",
                    "Error",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Error);
            }
            else
            {
                try
                {
                    long id = ExtraOptiuneRepository.saveExtraOptiune(
                        denumire,
                        int.Parse(minute),
                        int.Parse(mesaje),
                        int.Parse(netMb),
                        double.Parse(pretExtraOptiune));

                    var extraOptiune = new ExtraOptiune(
                        id,
                        denumire,
                        int.Parse(minute),
                        int.Parse(mesaje),
                        int.Parse(netMb),
                        double.Parse(pretExtraOptiune));

                    extraOptiuni.Add(extraOptiune);

                    AfisareExtraOptiuni();
                    ClearForm();
                }
                catch
                {
                    MessageBox.Show("Error encountered!");
                }
            }
        }
 public EditExtraOptiuneForm(ExtraOptiune extraOptiune)
 {
     InitializeComponent();
     this.extraOptiune = extraOptiune;
 }