using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CLCarte
{
    public class CartaDebito : CartaConContoCorrente
    {
        private double limiteSpesaMensile;

        public double LimiteSpesaMensile
        {
            get { return limiteSpesaMensile; }
        }

        public CartaDebito()
        { }


        public CartaDebito(string nome, string cognome, int numero, int pin, double plafond, double costoApertura, int numeroOperazioneMese, double totaleSpeseMese, int contoCorrente, double limiteSpesaMensile)
            : base(nome, cognome, numero, pin, plafond, costoApertura, numeroOperazioneMese, totaleSpeseMese, contoCorrente)
        {
            this.limiteSpesaMensile = limiteSpesaMensile;
        }

        public override string ToString()
        {
            return base.ToString()+"\nlimite spesa mensile: "+limiteSpesaMensile;
        }

        public override void Transazione(double importo)
        {
            double differenzaResidua;

            if (totaleSpeseMeseCorrente+importo <= limiteSpesaMensile)
            {
                base.Transazione(importo);
            }
            else
            {
                string messaggio = "Raggiunto il limite di spesa.";

                differenzaResidua = limiteSpesaMensile - totaleSpeseMeseCorrente;

                if (differenzaResidua>0)
                {
                    messaggio += "\nSi può prelevare: " + differenzaResidua;
                }

                throw new Exception(messaggio);
            }

            
        }

    }
}
