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(); } }
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(); } }
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); } } } }
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); }
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; }
public virtual float ApplyDiscount(Rezervare rezervare, Zbor zbor) { if (rezervare == null || zbor == null) { throw new ArgumentNullException(); } else { return(Discount(rezervare, zbor)); } }
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); }
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); }
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()); } }
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); } }
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(); } }
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(); } }
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); } }
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)); }
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); } }
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(); }
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++; }