using Knoks.Core.Entities.Interfaces;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Text;

namespace Knoks.Core.Entities
{
    public class KnokOwnData : IApiResult
    {
        public FeedUser Knoker { get; set; }
        public FeedStatus Status { get; set; }
    }

    public class KnokFeed : IApiResult
    {
        public FeedUser Knoker { get; set; }
        public FeedKnok Knok { get; set; }
        public FeedStatus Status { get; set; }
        public List<ChartData> Chart { get; set; }
        public int Purcase { get; set; }
        
    }

    public class FeedUser {
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
        public long? UserId { get; set; }
        public string Href { get; set; }
        public string UserName { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public bool HasAvatar { get; set; }
        public int UserFollowers { get; set; }//May be other structure for followers
        public UserRank KnokserRank { get; set; }
    }

    public class FeedKnok
    {
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
        public long? KnokId { get; set; }
        public string Currency1 { get; set; }
        public string Currency2 { get; set; }
        public string Currency { get; set; }
        public string MarketDisplayName { get; set; }
        public int ExchangeId { get; set; }
        public string ExchangeName { get; set; }
        [JsonIgnore]
        public decimal PotentialProfitValue { get; set; }
        public PotentialProfit PotentialProfit { get; set; }
        public bool HasTechnical { get; set; }
        public bool HasFundamental { get; set; }
        public DateTime? PublishedDate { get; set; }
        //public DateTime? TouchTime { get; set; }
        public DateTime? FinishTime { get; set; }
        public DateTime? SellFinishTime { get; set; }
        public DateTime CreateDate { get; set; }
        public decimal Price { get; set; }
        public decimal DollarPrice { get; set; }
        public bool EntryPriceTouched { get; set; }
        public bool IsFollowed { get; set; }
        public bool? Active { get; set; }
        public bool? IsBought { get; set; }
        public int MinutesLeftOnFeed { get; set; }
    }

    public class FeedStatus
    {
        public int UserActiveKnoks { get; set; }
        public int Purchases { get; set; }
    }

    public class ChartData
    {
        public string CRTD_PairSymbol { get; set; }
        public decimal? CRTD_BidOpeningValue { get; set; }
        public decimal? CRTD_BidClosingValue { get; set; }
        public decimal? CRTD_BidLowValue { get; set; }
        public decimal? CRTD_BidHighValue { get; set; }


    }
}
