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); } }
public ChiusuraNoleggioPresenter(NoleggioFormEditOrView target, Noleggio noleggio) { _noleggio = noleggio; _cliente = _noleggio.Cliente; _target = target; _target.Text = "Chiusura noleggio"; //Eventi _target.AggiungiAgevolazioneEccezionale.Click += AggiungiAgevolazioneEccezionale; _target.ElementiNoleggioDataGridView.SelectionChanged += ShowPrezzoSingoloElemento; //Popolamento tabella elementi noleggiati _target.ElementiNoleggioDataGridView.DataSource = Adapter <ElementoNoleggio, ElementoNoleggioAdapted> .Convert(_noleggio.ElementiNoleggio); //Comunicazione della durata e del noleggio _fineEffettiva = DateTime.Now; _durataEffettiva = _fineEffettiva - _noleggio.DataOraInizio; _target.DurataLabel.Text = string.Format("Durata noleggio: {0} giorni, {1} ore, {2} minuti", _durataEffettiva.Days, _durataEffettiva.Hours, _durataEffettiva.Minutes); //Comunicazione del prezzo del noleggio _target.PrezzoTotaleLabel.Text = string.Format("Prezzo totale: {0}", _noleggio.CalcolaPrezzo(_durataEffettiva, Negozio.MINUTI_TOLLERANZA).ToEuroString()); //Popolamento dati cliente TableLayoutPanel clientePanel = _target.DatiClientePanel; foreach (PropertyInfo info in _cliente.GetType().GetProperties()) { Label nomeProprietà = new Label(); nomeProprietà.Text = (info.GetCustomAttributes(typeof(EditableAttribute), false)[0] as EditableAttribute).Label; Label valoreProprietà = new Label(); valoreProprietà.Text = info.GetValue(_cliente).ToString(); clientePanel.Controls.Add(nomeProprietà); clientePanel.Controls.Add(valoreProprietà); } _target.FormClosing += CheckFascia; }