using Dapper;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using Senparc.Weixin.Annotations;
using System;
using System.Collections.Generic;
using System.Linq;
using Wicture.DbRESTFul.Infrastructure.Repository;

namespace JiaZhiQuan.Common.Config
{
    public interface IConfigFromDbJsonModel
    {
    }

    public class MPStatisticWarningConfigItemValue
    {
        /// <summary>
        /// 多少小时内
        /// </summary>
        public int hours { get; set; }
        /// <summary>
        /// 达到多大值需要预警
        /// </summary>
        public int max { get; set; }
    }

    public class MPStatisticWarningConfigItem
    {
        /// <summary>
        /// 有效阅读
        /// </summary>
        public MPStatisticWarningConfigItemValue read { get; set; }
        /// <summary>
        /// 点赞
        /// </summary>
        public MPStatisticWarningConfigItemValue thumbsup { get; set; }
        /// <summary>
        /// 收藏
        /// </summary>
        public MPStatisticWarningConfigItemValue collection { get; set; }
        /// <summary>
        /// 评论
        /// </summary>
        public MPStatisticWarningConfigItemValue comment { get; set; }
        /// <summary>
        /// 分享
        /// </summary>
        public MPStatisticWarningConfigItemValue share { get; set; }
        /// <summary>
        /// 有效总计阅读量
        /// </summary>
        public MPStatisticWarningConfigItemValue totalRead { get; set; }
    }

    public class MPStatisticWarningConfig : IConfigFromDbJsonModel
    {
        public MPStatisticWarningConfigItem diary { get; set; }
        public MPStatisticWarningConfigItem standpoint { get; set; }
    }

    public class PlatformShopConfig : IConfigFromDbJsonModel
    {
        public string shopId { get; set; }
        public long userId { get; set; }
    }

    public class HuiFuCommonConfig: IConfigFromDbJsonModel {
        //商户号
        public string sys_id { get; set; }
        //产品号
        public string product_id { get; set; }
        //私钥
        public string app_secret_key { get; set;}
        //商户公钥
        public string app_pub_key { get; set;}
        //汇付公钥
        public string huifu_pub_key { get; set; }

        public bool isDev { get; set; }
    }

    public class InvitationAlarm : IConfigFromDbJsonModel
    {
        /// <summary>
        /// 分钟数，合作方多少分钟内，邀请达到多少人
        /// </summary>
        public int PartnerTime { get; set; }
        /// <summary>
        /// 人数，合作方多少分钟内，邀请达到多少人
        /// </summary>
        public int PartnerCount { get; set; }

        /// <summary>
        /// 分钟数，普通用户多少分钟内，邀请达到多少人
        /// </summary>
        public int UserTime { get; set; }
        /// <summary>
        /// 人数，普通用户多少分钟内，邀请达到多少人
        /// </summary>
        public int UserCount { get; set; }
    }

    public class InvitationPosterParams : IConfigFromDbJsonModel
    {
        public InvitationPosterParamsBackgroundImage BackgroundImage { get; set; }
        public InvitationPosterParamsHeadImage HeadImage { get; set; }
        public InvitationPosterParamsHeadImage QRImage { get; set; }
        public List<InvitationPosterParamsText> Texts { get; set; }
    }
    public class InvitationPosterParamsBackgroundImage
    {
        public string FileName { get; set; }
    }

    public class InvitationPosterParamsHeadImage
    {
        public int X { get; set; }

        public int Y { get; set; }

        public bool Fillet { get; set; }

        public int Width { get; set; }

        public int Height { get; set; }
    }

    public class InvitationPosterParamsText
    {
        public string Key { get; set; }

        public string Text { get; set; }

        public int X { get; set; }

        public int Y { get; set; }

        public int FontSize { get; set; }

        public string FamilyName { get; set; }

        public string Color { get; set; }
    }

    /// <summary>
    /// App首页自定义Tab项
    /// </summary>
    public class AppIndexCusTabItem
    {
        public int category { get; set; }
        public string type { get; set; }
        public string label { get; set; }
        public string activeImg { get; set; }
        public string deactiveImg { get; set; }
        public string data { get; set; }
    }
}
