using System;
using System.Collections.Generic;

namespace Baza_Reklam.Classes.Model
{
    public class Subscription
    {
        private readonly int _id;
        private Guid _guid;
        private int _customerId;
        private int _titleId;
        private int _subscriptionTypeId;
        private int _subscriptionItems;
        private decimal _basePrice;
        private decimal _totalPrice;
        private decimal _discount;
        private decimal _vat;
        private string _currency;
        private DateTime _startDate;
        private int _orderId;
        private DateTime _createdOn;
        private int _createdBy;
        private DateTime _updatedOn;
        private int _updatedBy;
        private readonly SubscriptionType _subscriptionType;
        private readonly Customer _customer;
        private readonly Agent _agent;
        private List<SubscriptionDetail> _subscriptionDetails;

        public Subscription() { }

        public Subscription(int id)
        {
            _id = id;
        }

        public Subscription(int id, Guid guid, int customerId, int titleId, int subscriptionTypeId, int subscriptionItems, decimal basePrice, decimal totalPrice, decimal discount, decimal vat, string currency, int orderId, DateTime createdOn, int createdBy, DateTime updatedOn, int updatedBy, DateTime startDate)
        {
            _id = id;
            _titleId = titleId;
            _startDate = startDate;
            _updatedBy = updatedBy;
            _updatedOn = updatedOn;
            _createdBy = createdBy;
            _createdOn = createdOn;
            _orderId = orderId;
            _currency = currency;
            _basePrice = basePrice;
            _totalPrice = totalPrice;
            _vat = vat;
            _discount = discount;
            _subscriptionItems = subscriptionItems;
            _subscriptionTypeId = subscriptionTypeId;
            _customerId = customerId;
            _guid = guid;
        }

        public int Id
        {
            get { return _id; }
            //set { _id = value; }
        }

        public int TitleId
        {
            get { return _titleId; }
            set { _titleId = value; }
        }

        public Guid Guid
        {
            get { return _guid; }
            set { _guid = value; }
        }

        public int CustomerId
        {
            get { return _customerId; }
            set { _customerId = value; }
        }

        public int SubscriptionTypeId
        {
            get { return _subscriptionTypeId; }
            set { _subscriptionTypeId = value; }
        }

        public decimal BasePrice
        {
            get { return _basePrice; }
            set { _basePrice = value; }
        }

        public decimal TotalPrice
        {
            get { return _totalPrice; }
            set { _totalPrice = value; }
        }

        public decimal Discount
        {
            get { return _discount; }
            set { _discount = value; }
        }

        public decimal Vat
        {
            get { return _vat; }
            set { _vat = value; }
        }

        public string Currency
        {
            get { return _currency; }
            set { _currency = value; }
        }

        public int OrderId
        {
            get { return _orderId; }
            set { _orderId = value; }
        }

        public DateTime CreatedOn
        {
            get { return _createdOn; }
            set { _createdOn = value; }
        }

        public int CreatedBy
        {
            get { return _createdBy; }
            set { _createdBy = value; }
        }

        public DateTime UpdatedOn
        {
            get { return _updatedOn; }
            set { _updatedOn = value; }
        }

        public int UpdatedBy
        {
            get { return _updatedBy; }
            set { _updatedBy = value; }
        }

        public SubscriptionType SubscriptionType
        {
            get { return _subscriptionType; }
        }

        public Customer Customer
        {
            get { return _customer; }
        }

        public Agent Agent
        {
            get { return _agent; }
        }

        public DateTime StartDate
        {
            get { return _startDate; }
            set { _startDate = value; }
        }

        public int SubscriptionItems
        {
            get { return _subscriptionItems; }
            set { _subscriptionItems = value; }
        }

        public List<SubscriptionDetail> SubscriptionDetails
        {
            get { return _subscriptionDetails; }
        }

        public void AddSubscriptionDetail(SubscriptionDetail subscriptionDetail)
        {
            if (_subscriptionDetails == null)
                _subscriptionDetails = new List<SubscriptionDetail>();

            _subscriptionDetails.Add(subscriptionDetail);
        }
    }
}