Пример #1
0
        private void UpdateRezervare(Rezervare rezervare)
        {
            string query = "UPDATE Rezervari SET Data=@data, Durata=@durata, Client=@client, Aparat1=@aparat1, Aparat2=@aparat2 WHERE Id=@id";

            using (SqliteConnection connection = new SqliteConnection(connectionString))
            {
                SqliteCommand command = new SqliteCommand(query, connection);
                command.Parameters.AddWithValue("@id", rezervare.Id);
                command.Parameters.AddWithValue("@data", rezervare.Data.ToString("g"));
                command.Parameters.AddWithValue("@durata", rezervare.Durata);
                command.Parameters.AddWithValue("@client", rezervare.Client.Id);
                command.Parameters.AddWithValue("@aparat1", rezervare.Aparat1.Id);
                if (rezervare.Aparat2 != null)
                {
                    command.Parameters.AddWithValue("@aparat2", rezervare.Aparat2.Id);
                }
                else
                {
                    command.Parameters.AddWithValue("@aparat2", 0);
                }

                connection.Open();

                command.ExecuteNonQuery();
            }
        }
Пример #2
0
        private void RemoveRezervare(Rezervare rezervare)
        {
            string query = "DELETE FROM Rezervari WHERE Id=@id";

            using (SqliteConnection connection = new SqliteConnection(connectionString))
            {
                SqliteCommand command = new SqliteCommand(query, connection);
                command.Parameters.AddWithValue("@id", rezervare.Id);

                connection.Open();
                command.ExecuteNonQuery();

                rezervari.Remove(rezervare);
            }

            rezervare.Client.NrRezervari--;
            string query2 = "UPDATE Clienti SET NrRezervari=NrRezervari-1 WHERE Id=@id";

            using (SqliteConnection connection = new SqliteConnection(connectionString))
            {
                SqliteCommand command = new SqliteCommand(query2, connection);
                command.Parameters.AddWithValue("@id", rezervare.Client.Id);

                connection.Open();
                command.ExecuteNonQuery();
            }
        }
Пример #3
0
        private void LoadRezervari()
        {
            string query = "SELECT * FROM Rezervari";

            using (SqliteConnection connection = new SqliteConnection(connectionString))
            {
                SqliteCommand command = new SqliteCommand(query, connection);

                connection.Open();
                using (SqliteDataReader reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        long     id        = (long)reader["Id"];
                        DateTime data      = DateTime.Parse((string)reader["Data"]);
                        long     durata    = (long)reader["Durata"];
                        long     idClient  = (long)reader["Client"];
                        long     idAparat1 = (long)reader["Aparat1"];
                        long     idAparat2 = (long)reader["Aparat2"];

                        Client client = null;
                        foreach (Client clientAux in clienti)
                        {
                            if (clientAux.Id == idClient)
                            {
                                client = clientAux;
                            }
                        }

                        Aparat aparat1 = null;
                        foreach (Aparat aparatAux in aparate)
                        {
                            if (aparatAux.Id == idAparat1)
                            {
                                aparat1 = aparatAux;
                            }
                        }

                        Aparat aparat2 = null;
                        if (idAparat2 != 0)
                        {
                            foreach (Aparat aparatAux in aparate)
                            {
                                if (aparatAux.Id == idAparat2)
                                {
                                    aparat2 = aparatAux;
                                }
                            }
                        }
                        else
                        {
                            aparat2 = null;
                        }

                        Rezervare rezervare = new Rezervare(data, (int)durata, aparat1, aparat2, client, (int)id);
                        rezervari.Add(rezervare);
                    }
                }
            }
        }
Пример #4
0
        public object Clone()
        {
            Rezervare rez = (Rezervare)this.MemberwiseClone();

            rez.RutaAeriana = (RutaAeriana)RutaAeriana.Clone();
            rez.Zbor        = (Zbor)Zbor.Clone();
            rez.Rezervant   = (Persoana)Rezervant.Clone();
            return(rez);
        }
Пример #5
0
 public FormRezervariEdit(List <Rezervare> rezervari, Rezervare rezervare, List <Aparat> aparate1, List <Aparat> aparate2, int index1, int index2)
 {
     InitializeComponent();
     this.rezervari = rezervari;
     this.rezervare = rezervare;
     this.aparate1  = aparate1;
     this.aparate2  = aparate2;
     this.index1    = index1;
     this.index2    = index2;
 }
Пример #6
0
 public virtual float ApplyDiscount(Rezervare rezervare, Zbor zbor)
 {
     if (rezervare == null || zbor == null)
     {
         throw new ArgumentNullException();
     }
     else
     {
         return(Discount(rezervare, zbor));
     }
 }
Пример #7
0
        protected override float Discount(Rezervare rezervare, Zbor zbor)
        {
            if (this.motivDiscount == MotivDiscount.CLIENT && !rezervare.Rezervant.EsteClient)
            {
                return(zbor.Cost);
            }
            float SumaDeDecontat = zbor.Cost;

            if (zbor.TimpDecolare >= dataInceput && zbor.TimpDecolare <= dataInceput + durata)
            {
                SumaDeDecontat -= SumaDeDecontat * procentDiscount;
                SumaDeDecontat -= sumaAditionala;
            }
            return(SumaDeDecontat);
        }
Пример #8
0
        protected override float Discount(Rezervare rezervare, Zbor zbor)
        {
            var sumaDeDecontat = zbor.Cost;

            for (int i = 1; i <= rezervare.NumarBilete; i++)
            {
                if (i == 1)
                {
                    sumaDeDecontat -= sumaDeDecontat * procentDiscount;
                }
                else
                {
                    sumaDeDecontat -= sumaDeDecontat * (procentDiscount / i);
                }
            }
            return(sumaDeDecontat);
        }
Пример #9
0
        public int CompareTo(object obj)
        {
            if (obj == null)
            {
                return(1);
            }
            Rezervare rezervare = obj as Rezervare;

            if (rezervare != null)
            {
                if (numarBilete == rezervare.numarBilete)
                {
                    if (Rezervant.CompareTo(rezervare.Rezervant) == 0)
                    {
                        if (RutaAeriana.CompareTo(rezervare.RutaAeriana) == 0)
                        {
                            if (Zbor.CompareTo(rezervare.Zbor) == 0)
                            {
                                return(0);
                            }
                            else
                            {
                                return(Zbor.CompareTo(rezervare.Zbor));
                            }
                        }
                        else
                        {
                            return(RutaAeriana.CompareTo(rezervare.RutaAeriana));
                        }
                    }
                    else
                    {
                        return(Rezervant.CompareTo(rezervare.Rezervant));
                    }
                }
                else
                {
                    return(numarBilete.CompareTo(rezervare.numarBilete));
                }
            }
            else
            {
                throw new ArgumentException("Object is not a " + this.GetType());
            }
        }
Пример #10
0
        public float ApplyDiscount(Rezervare rezervare, Zbor zbor)
        {
            float sumaMinima     = zbor.Cost - zbor.Cost * discountMaxim;
            var   zborCopie      = (Zbor)zbor.Clone();
            var   rezervareCopie = (Rezervare)rezervare.Clone();

            foreach (IDiscount discount in discounts)
            {
                zborCopie.Cost = discount.ApplyDiscount(rezervareCopie, zborCopie);
            }
            if (zborCopie.Cost < sumaMinima)
            {
                return(sumaMinima);
            }
            else
            {
                return(zborCopie.Cost);
            }
        }
Пример #11
0
        private void stergeToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (lvRezervari.SelectedItems.Count == 0)
            {
                MessageBox.Show("Nicio rezervare nu a fost selectata!", "Rezervare invalida", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            ListViewItem lvItem    = lvRezervari.SelectedItems[0];
            Rezervare    rezervare = (Rezervare)lvItem.Tag;

            DialogResult result = MessageBox.Show("Sigur doriti sa stergeti Rezervarea: " +
                                                  rezervare.ToString() + " ?\nAceasta optiune este ireversibila!", "Stergere rezervare",
                                                  MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning);

            if (result == DialogResult.Yes)
            {
                RemoveRezervare(rezervare);
                DisplayRezervari();
            }
        }
Пример #12
0
        private void editeazaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (lvRezervari.SelectedItems.Count == 0)
            {
                MessageBox.Show("Nicio rezervare nu a fost selectata!", "Rezervare invalida", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            ListViewItem lvItem    = lvRezervari.SelectedItems[0];
            Rezervare    rezervare = (Rezervare)lvItem.Tag;
            int          index1    = -1;
            int          index2    = -1;
            int          i         = 0;

            foreach (Aparat aparat in aparate)
            {
                if (aparat.ToString() == rezervare.Aparat1.ToString())
                {
                    index1 = i;
                }
                if (rezervare.Aparat2 == null)
                {
                    index2 = -1;
                }
                else
                if (aparat.ToString() == rezervare.Aparat2.ToString())
                {
                    index2 = i;
                }
                i++;
            }

            FormRezervariEdit formRezervariEdit = new FormRezervariEdit(rezervari, rezervare, aparate1, aparate2, index1, index2);

            if (formRezervariEdit.ShowDialog() == DialogResult.OK)
            {
                DisplayRezervari();
            }
        }
Пример #13
0
        private void AddRezervare(Rezervare rezervare)
        {
            string query = "INSERT INTO Rezervari(Data, Durata, Client, Aparat1, Aparat2) VALUES(@data, @durata, @client, @aparat1, @aparat2); SELECT last_insert_rowid()";

            using (SqliteConnection connection = new SqliteConnection(connectionString))
            {
                SqliteCommand command = new SqliteCommand(query, connection);
                command.Parameters.AddWithValue("@data", rezervare.Data.ToString("g"));
                command.Parameters.AddWithValue("@durata", rezervare.Durata);
                command.Parameters.AddWithValue("@client", rezervare.Client.Id);
                command.Parameters.AddWithValue("@aparat1", rezervare.Aparat1.Id);
                if (rezervare.Aparat2 != null)
                {
                    command.Parameters.AddWithValue("@aparat2", rezervare.Aparat2.Id);
                }
                else
                {
                    command.Parameters.AddWithValue("@aparat2", 0);
                }

                connection.Open();
                long id = (long)command.ExecuteScalar();
                rezervare.Id = (int)id;

                rezervari.Add(rezervare);
            }

            string query2 = "UPDATE Clienti SET NrRezervari=NrRezervari+1 WHERE Id=@id";

            using (SqliteConnection connection = new SqliteConnection(connectionString))
            {
                SqliteCommand command = new SqliteCommand(query2, connection);
                command.Parameters.AddWithValue("@id", rezervare.Client.Id);

                connection.Open();
                command.ExecuteNonQuery();
            }
        }
 public bool StergeRezervare(Rezervare rezervare)
 {
     if (rute.TryGetValue(rezervare.RutaAeriana, out var dateDecolare))
     {
         if (dateDecolare.TryGetValue(ExtractDate(rezervare.Zbor.TimpDecolare), out var zboruri))
         {
             var zborCautat = zboruri.Keys.ToList().Find(zborInput =>
             {
                 if (((ZborBasic)zborInput).Equals(rezervare.Zbor))
                 {
                     return(true);
                 }
                 else
                 {
                     return(false);
                 }
             });
             if (zborCautat != null)
             {
                 zboruri[zborCautat].Remove(rezervare.Rezervant.CNP);
                 zborCautat.LocuriDisponibile += rezervare.NumarBilete;
                 return(true);
             }
             else
             {
                 return(false);
             }
         }
         else
         {
             return(false);
         }
     }
     else
     {
         return(false);
     }
 }
Пример #15
0
        public override bool Equals(object obj)
        {
            if (obj == null)
            {
                return(false);
            }
            if (this.GetType() != obj.GetType())
            {
                return(false);
            }
            if (ReferenceEquals(this, obj))
            {
                return(true);
            }
            if (this.GetHashCode() != obj.GetHashCode())
            {
                return(false);
            }
            Rezervare rezervare = obj as Rezervare;

            //verificam egalitatea dupa id
            return(this.numarBilete == rezervare.numarBilete && this.RutaAeriana.Equals(rezervare.RutaAeriana) &&
                   this.Zbor.Equals(rezervare.Zbor) && this.Rezervant.Equals(rezervare.Rezervant));
        }
Пример #16
0
 protected abstract float Discount(Rezervare rezervare, Zbor zbor);
 public bool AdaugaRezervare(Rezervare rezervare, out float sumaDePlata)
 {
     if (this.rute.TryGetValue(rezervare.RutaAeriana, out var zboruri))                   //daca aceasta ruta exista
     {
         if (zboruri.TryGetValue(ExtractDate(rezervare.Zbor.TimpDecolare), out var zbor)) //daca exista acest zbor
         {
             var zborCautat = zbor.Keys.ToList().Find(zborInput =>
             {
                 if (((ZborBasic)zborInput).Equals(rezervare.Zbor))
                 {
                     return(true);
                 }
                 else
                 {
                     return(false);
                 }
             });
             if (zborCautat != null)                                           //daca zborul a fost gasit
             {
                 if (zborCautat.LocuriDisponibile - rezervare.NumarBilete > 0) //daca sunt locuri disponibile
                 {
                     //aplicam discount daca e posibil
                     float sumaPlatita = zborCautat.Cost;
                     if (this.discounts.TryGetValue(rezervare.RutaAeriana, out var discountManager))
                     {
                         sumaPlatita = discountManager.ApplyDiscount(rezervare, zborCautat);
                     }
                     sumaDePlata = sumaPlatita * rezervare.NumarBilete;
                     try
                     {
                         zbor[zborCautat].Add(rezervare.Rezervant.CNP, rezervare); //adaugam rezervarea
                         zborCautat -= rezervare.NumarBilete;
                     } catch
                     {
                         //rezervantul deja se afla in lista
                         sumaDePlata = -1;
                         return(false);
                     }
                     return(true); //succes
                 }
                 else
                 {
                     System.Windows.Forms.MessageBox.Show("Nu mai sunt locuri disponibile");
                     sumaDePlata = -1;
                     return(false);
                 }
             }
             else
             {
                 System.Windows.Forms.MessageBox.Show("Acest zbor nu exista");
                 sumaDePlata = -1;
                 return(false);
             }
         }
         else
         {
             System.Windows.Forms.MessageBox.Show("Pentru aceasta ruta nu exista zboruri pe data specificata");
             sumaDePlata = -1;
             return(false);
         }
     }
     else
     {
         System.Windows.Forms.MessageBox.Show("Compania " + Nume + " nu are zboruri pe ruta specificata ");
         sumaDePlata = -1;
         return(false);
     }
 }
Пример #18
0
 public override float ApplyDiscount(Rezervare rezervare, Zbor zbor)
 {
     return(base.ApplyDiscount(rezervare, zbor));
 }
        public void CitesteRuteXML()
        {
            if (!DBRepositoriesManager.OpenAirCompanyDB())
            {
                System.Windows.Forms.MessageBox.Show("Eroare la deschiderea bazei de date", "Eroare deschidere baza de date",
                                                     System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
                return;
            }


            XmlDocument document = new XmlDocument();

            try
            {
                document.Load(@Properties.Settings.Default.SerializationFilesPath + "RuteAeriene.xml");
            }
            catch (FileNotFoundException)
            {
                System.Windows.Forms.MessageBox.Show("Unnable to open rute.xml");
                return;
            }

            this.rute.Clear();
            RutaAeriana ruta;
            Hashtable   TabelaRezervari;
            SortedDictionary <DateTime, SortedDictionary <Zbor, Hashtable> > DicInfoRute;
            DateTime data;
            SortedDictionary <Zbor, Hashtable> DicZboruri;

            //nivelul cu rute
            foreach (XmlNode rutaNode in document.DocumentElement.ChildNodes)
            {
                //alocare dictionar pentru ruta
                DicInfoRute = new SortedDictionary <DateTime, SortedDictionary <Zbor, Hashtable> >();
                //alocare ruta
                ruta = new RutaAeriana(new Aeroport(rutaNode.Attributes["numeAeropDec"]?.InnerText,
                                                    rutaNode.Attributes["orasDec"]?.InnerText, rutaNode.Attributes["taraDec"]?.InnerText,
                                                    rutaNode.Attributes["codIATAAeropDec"]?.InnerText, rutaNode.Attributes["codICAOAeropDec"]?.InnerText),
                                       new Aeroport(rutaNode.Attributes["numeAeropAter"]?.InnerText, rutaNode.Attributes["orasAter"]?.InnerText,
                                                    rutaNode.Attributes["taraAter"]?.InnerText, rutaNode.Attributes["codIATAAeropAter"]?.InnerText,
                                                    rutaNode.Attributes["codICAOAeropAter"]?.InnerText));
                //nivelul cu zboruri pentru o data anumita
                foreach (XmlNode dataNode in rutaNode.ChildNodes)
                {
                    //alocare data
                    data = DateTime.ParseExact(dataNode.Attributes["data"]?.InnerText, "dd/MM/yyyy",
                                               System.Globalization.CultureInfo.InvariantCulture);
                    DicZboruri = new SortedDictionary <Zbor, Hashtable>();
                    //nivelul cu zboruri
                    foreach (XmlNode zborNode in dataNode.ChildNodes)
                    {
                        //alocam tabela de rezervari pentru zborul curent
                        TabelaRezervari = new Hashtable();

                        Zbor zbor = new Zbor(DateTime.ParseExact(zborNode.Attributes["dataPlecare"]?.InnerText,
                                                                 "dd/MM/yyyy HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture)
                                             , DateTime.ParseExact(zborNode.Attributes["dataSosire"]?.InnerText,
                                                                   "dd/MM/yyyy HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture)
                                             , float.Parse(zborNode.Attributes["cost"]?.InnerText),
                                             int.Parse(zborNode.Attributes["nrLocuriDisponibile"]?.InnerText));
                        zbor.NumarLocuri = int.Parse(zborNode.Attributes["nrLocuriTotal"]?.InnerText);
                        foreach (XmlNode rezervareNode in zborNode.ChildNodes)
                        {
                            var rezervare = new Rezervare(
                                ruta, zbor, int.Parse(rezervareNode.Attributes["nrBilete"]?.InnerText),
                                //new Persoana(rezervareNode.Attributes["persoana"]?.InnerText));
                                DBRepositoriesManager.AirCompanyDBGetPersoana(rezervareNode.Attributes["persoana"]?.InnerText));
                            TabelaRezervari.Add(rezervare.Rezervant.CNP, rezervare);
                        }
                        DicZboruri.Add(zbor, TabelaRezervari);
                    }
                    DicInfoRute.Add(data, DicZboruri);
                }
                //adauga ruta cu dictionarul ei in Rutele Companiei
                this.rute.Add(ruta, DicInfoRute);
            }

            DBRepositoriesManager.CloseAirCompanyDB();
        }
Пример #20
0
        private void btnAdaugaRezervare_Click(object sender, EventArgs e)
        {
            Rezervare rezervare = new Rezervare();

            if (dtpData.Value < DateTime.Now)
            {
                errorProvider.SetError(dtpData, "Data este invalida!");
                return;
            }
            else
            {
                errorProvider.SetError(dtpData, null);
                rezervare.Data = dtpData.Value;
            }
            if (cbDurata.SelectedItem == null)
            {
                errorProvider.SetError(cbDurata, "Selecteaza durata rezervarii!");
                return;
            }
            else
            {
                errorProvider.SetError(cbDurata, null);
                rezervare.Durata = int.Parse(cbDurata.SelectedItem.ToString());
            }
            if (cbClienti.SelectedItem == null)
            {
                errorProvider.SetError(cbClienti, "Selecteaza clientul!");
                return;
            }
            else
            {
                errorProvider.SetError(cbClienti, null);
                rezervare.Client = (Client)cbClienti.SelectedItem;
            }
            Aparat aparat1 = (Aparat)cbAparat1.SelectedItem;

            if (cbAparat1.SelectedItem == null)
            {
                errorProvider.SetError(cbAparat1, "Cel putin un aparat trebuie selectat");
                return;
            }
            else
            if (!aparat1.IsAvailable(rezervari, dtpData.Value, int.Parse(cbDurata.SelectedItem.ToString())))
            {
                errorProvider.SetError(cbAparat1, "Aparatul nu este disponibil!");
                return;
            }
            else
            {
                errorProvider.SetError(cbAparat1, null);
                rezervare.Aparat1 = (Aparat)cbAparat1.SelectedItem;
            }
            Aparat aparat2 = (Aparat)cbAparat2.SelectedItem;

            if (cbAparat2.SelectedItem == null)
            {
                rezervare.Aparat2 = null;
            }
            else
            if (!aparat2.IsAvailable(rezervari, dtpData.Value, int.Parse(cbDurata.SelectedItem.ToString())))
            {
                errorProvider.SetError(cbAparat2, "Aparatul nu este disponibil!");
                return;
            }
            else
            if (cbAparat2.SelectedItem.ToString() == cbAparat1.SelectedItem.ToString())
            {
                errorProvider.SetError(cbAparat2, "Alegeti un aparat2 diferit fata de aparat1!");
                return;
            }
            else
            {
                errorProvider.SetError(cbAparat2, null);
                rezervare.Aparat2 = (Aparat)cbAparat2.SelectedItem;
            }

            dtpData.ResetText();
            cbDurata.SelectedIndex  = -1;
            cbClienti.SelectedIndex = -1;
            cbAparat1.SelectedIndex = -1;
            cbAparat2.SelectedIndex = -1;

            AddRezervare(rezervare);
            DisplayRezervari();
            rezervare.Client.NrRezervari++;
        }