Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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;
        }