private void ConsegnaElementi(object sender, EventArgs e) { if (_noleggiTabPresenter.DataGridView.CurrentRow != null) { Noleggio daTerminare = ((NoleggioAdapted)_noleggiTabPresenter.DataGridView.CurrentRow.DataBoundItem).GetWrapped(); if (daTerminare.IsChiuso) { MessageBox.Show("Noleggio già concluso!", "Operazione non permessa", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } NoleggioFormEditOrView form = new NoleggioFormEditOrView(); ChiusuraNoleggioPresenter presenter = new ChiusuraNoleggioPresenter(form, daTerminare); if (form.ShowDialog() == DialogResult.OK) { Negozio.ConcludiNoleggio(daTerminare, Logged.User); } } }
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; }