//------------------------------------------------------------------------------
// <auto-generated>
//     Этот код создан по шаблону.
//
//     Изменения, вносимые в этот файл вручную, могут привести к непредвиденной работе приложения.
//     Изменения, вносимые в этот файл вручную, будут перезаписаны при повторном создании кода.
// </auto-generated>
//------------------------------------------------------------------------------

namespace WPF.Framework.Models
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations.Schema;
    using WPF.Framework.Models.Repository.Base;

    public partial class Agent : IEntity
    {
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
        public Agent()
        {
            this.AgentPriorityHistory = new HashSet<AgentPriorityHistory>();
            this.ProductSale = new HashSet<ProductSale>();
            this.Shop = new HashSet<Shop>();
        }
    
        public int ID { get; set; }
        public string Title { get; set; }
        public int AgentTypeID { get; set; }
        public string Address { get; set; }
        public string INN { get; set; }
        public string KPP { get; set; }
        public string DirectorName { get; set; }
        public string Phone { get; set; }
        public string Email { get; set; }
        public string Logo { get; set; }
        public int Priority { get; set; }
    
        [NotMapped]
        public int ProductSaledLastYear
        {
            get
            {
                int count = 0;
                foreach (var item in ProductSale)
                {
                    if((DateTime.Now - item.SaleDate).TotalDays >= 365)
                    {
                        count += item.ProductCount;
                    }
                }
                return count;
            }
        }

        [NotMapped]
        public int Discount
        {
            get
            {
                int value = 0;
                foreach (var item in ProductSale)
                {
                    value += item.ProductCount * item.ProductCount;
                }
                if (value >= 10000 && value < 50000)
                {
                    return 5;
                }
                if (value >= 50000 && value < 150000)
                {
                    return 10;
                }
                if (value >= 150000 && value < 500000)
                {
                    return 20;
                }
                if (value > 500000)
                {
                    return 25;
                }
                return 0;
            }
        }


        public virtual AgentType AgentType { get; set; }
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<AgentPriorityHistory> AgentPriorityHistory { get; set; }
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<ProductSale> ProductSale { get; set; }
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<Shop> Shop { get; set; }
    }
}
