﻿using System;
using System.Collections.Generic;

namespace AsmodeeDigital.CrossPromo.Plugin.Domain
{
    public class AnalyticsScreenDisplayItem : AnalyticsItem
    {
        public string ScreenPrevious
        {
            get
            {
                return Headers["screen_previous"] as string;
            }
            set
            {
                Headers["screen_previous"] = value;
            }
        }

        public string ScreenCurrent
        {
            get
            {
                return Headers["screen_current"] as string;
            }
            set
            {
                Headers["screen_current"] = value;
            }
        }

        public uint ScreenCount
        {
            get
            {
                return (uint)Headers["screen_count"];
            }
            set
            {
                Headers["screen_count"] = value;
            }
        }

        public string ScreenPreviousNavAction
        {
            get
            {
                return Headers["screen_previous_nav_action"] as string;
            }
            set
            {
                Headers["screen_previous_nav_action"] = value;
            }
        }

        public float TimeScreenPreviousSec
        {
            get
            {
                return (float)Headers["time_screen_previous_sec"];
            }
            set
            {
                Headers["time_screen_previous_sec"] = value;
            }
        }

        public Product Product { get; set; }

        public string Context { get; set; }

        public uint ScreenCountContext { get; set; }

        public AnalyticsScreenDisplayItem(Dictionary<string, object> headers)
            : base(headers)
        {
            MetricName = "screen_display";
            ScreenCurrent = "not_applicable";
        }

        public override Dictionary<string, object> ToDictionary()
        {
            Dictionary<string, object> dic = new Dictionary<string, object>(Headers);

            if (Product != null)
            {
                dic.Add("product_name", Product.name);
            }

            if (Context != null)
            {
                dic.Add("context", Context);
                dic.Add("screen_count_context", ScreenCountContext);
            }

            return dic;
        }
    }
}

