private void AggiungiAgevolazioneEccezionale(object sender, EventArgs args) { ElementoNoleggio elementoNoleggio = (ElementoNoleggio)Adapter <ElementoNoleggio, ElementoNoleggioAdapted> .Revert((ElementoNoleggioAdapted)_target.ElementiNoleggioDataGridView.CurrentRow.DataBoundItem); using (ChooseForm form = new ChooseForm()) { //creazione filtro (che in realtà è solo un messaggio) Label messaggio = new Label(); messaggio.Text = "Seleziona l'agevolazione eccezionale"; messaggio.Width = 300; Panel p = new Panel(); p.Controls.Add(messaggio); form.AddFilter(p); //form form.DataGridView.MultiSelect = false; //popolamento tabella form.DataGridView.DataSource = Negozio.GetInstance().AgevolazioniEccezionali.Cast <Agevolazione>().ToList(); if (form.ShowDialog() == DialogResult.OK) { elementoNoleggio.AgevolazioneEccezionale = (IAgevolazioneEccezionale)form.DataGridView.CurrentRow.DataBoundItem; Console.WriteLine((elementoNoleggio.AgevolazioneEccezionale as Agevolazione).Nome); _target.ElementiNoleggioDataGridView.Refresh(); /*La nuova agevolazione eccezionale non è visualizzata nella tabella perchè è un'interfaccia, * anche se da come si vede dalla stampa su console l'oggetto viene aggiornato*/ _target.PrezzoTotaleLabel.Text = string.Format("Prezzo totale: {0}", _noleggio.CalcolaPrezzo(_durataEffettiva, Negozio.MINUTI_TOLLERANZA).ToEuroString()); } ShowPrezzoSingoloElemento(this, EventArgs.Empty); } }
private void SostituisciElementi(object sender, EventArgs e) { if (_noleggiTabPresenter.DataGridView.CurrentRow != null) { Noleggio noleggio = ((NoleggioAdapted)_noleggiTabPresenter.DataGridView.CurrentRow.DataBoundItem).GetWrapped(); Console.WriteLine(noleggio.DataOraInizio); Label message = new Label(); message.Width = 1000; message.Text = "Scegli l'elemento del noleggio da sostituire."; ChooseForm chooseForm = new ChooseForm(); chooseForm.DataGridView.MultiSelect = false; chooseForm.Text = "Scelta elemento da sostituire"; chooseForm.AddFilter(message); chooseForm.DataGridView.DataSource = Adapter <ElementoNoleggio, ElementoNoleggioAdapted> .Convert(noleggio.ElementiNoleggio); chooseForm.ShowDialog(); IEnumerator rowEnum = chooseForm.DataGridView.SelectedRows.GetEnumerator(); rowEnum.MoveNext(); if (chooseForm.DialogResult == DialogResult.OK && rowEnum.Current != null) { ElementoNoleggio elementoNoleggio = ((ElementoNoleggioAdapted)((DataGridViewRow)rowEnum.Current).DataBoundItem).GetWrapped(); Elemento daSostituire = elementoNoleggio.Originario; Console.WriteLine("Tipo da cercare: " + daSostituire.GetType()); List <Elemento> validi = new List <Elemento>(); foreach (Elemento elemento in Negozio.Elementi) { if (elemento.IsLibero && elemento.GetType().Equals(daSostituire.GetType())) { validi.Add(elemento); } } if (validi.Count == 0) { MessageBox.Show("Nel negozio non sono presenti elementi per la sostituzione", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } message.Text = "Scegli l'elemento con cui sostituire " + daSostituire.Id + "."; chooseForm.Text = "Scelta nuovo elemento"; chooseForm.DataGridView.DataSource = Adapter <Elemento, ElementoAdapted> .Convert(validi); chooseForm.FormClosing += delegate(object inSender, FormClosingEventArgs inE) { if (MessageBox.Show("Confermare la sostituzione di " + daSostituire.Id + " ?", "Conferma sostituzione", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.Cancel) { inE.Cancel = true; } }; chooseForm.ShowDialog(); Elemento sostituto; rowEnum = chooseForm.DataGridView.SelectedRows.GetEnumerator(); rowEnum.MoveNext(); if (chooseForm.DialogResult == DialogResult.OK && rowEnum.Current != null) { sostituto = ((ElementoAdapted)((DataGridViewRow)rowEnum.Current).DataBoundItem).GetWrapped(); Console.WriteLine("Sostituisco " + daSostituire.Id + " con " + sostituto.Id); elementoNoleggio.SostituisciCon(sostituto, DateTime.Now, Logged.User); } } } }