namespace DevExpress.DevAV.ViewModels {
    using System;
    using System.Drawing;
    using DevExpress.DevAV.ViewModels;
    using DevExpress.Mvvm.DataAnnotations;
    using DevExpress.Mvvm.POCO;

    public class CustomerMapViewModel : CustomerViewModel, ISalesMapViewModel {
        public virtual Period Period { get; set; }
        [Command]
        public void SetLifetimePeriod() {
            Period = Period.Lifetime;
        }
        public bool CanSetLifetimePeriod() {
            return Period != Period.Lifetime;
        }
        [Command]
        public void SetThisYearPeriod() {
            Period = Period.ThisYear;
        }
        public bool CanSetThisYearPeriod() {
            return Period != Period.ThisYear;
        }
        [Command]
        public void SetThisMonthPeriod() {
            Period = Period.ThisMonth;
        }
        public bool CanSetThisMonthPeriod() {
            return Period != Period.ThisMonth;
        }
        protected virtual void OnPeriodChanged() {
            this.RaiseCanExecuteChanged(x => x.SetLifetimePeriod());
            this.RaiseCanExecuteChanged(x => x.SetThisYearPeriod());
            this.RaiseCanExecuteChanged(x => x.SetThisMonthPeriod());
            RaisePeriodChanged();
        }
        public event EventHandler PeriodChanged;
        void RaisePeriodChanged() {
            EventHandler handler = PeriodChanged;
            if(handler != null) 
                handler(this, EventArgs.Empty);
        }
        #region Properties
        public string Name {
            get { return (Entity != null) ? Entity.Name : null; }
        }
        public Image Image {
            get { return (Entity != null) ? Entity.Image : null; }
        }
        public string AddressLine1 {
            get { return (Entity != null) ? Entity.HomeOffice.Line : null; }
        }
        public string AddressLine2 {
            get { return (Entity != null) ? Entity.HomeOffice.CityLine : null; }
        }
        #endregion
    }
}