using Newtonsoft.Json;
using System;

using System.Collections.Generic;

namespace LifePayment.Domain.Shared
{
    public class CreateQrCodeInput
    {
        /// <summary>
        /// 最大32个可见字符,只支持数字,大小写英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~,
        /// 其它字符请自行编码为合法字符(因不支持%,中文无法使用 urlencode 处理,请使用其他编码方式)
        /// </summary>
        public string Scene { get; set; }

        /// <summary>
        /// 名片二维码扫描启动页
        /// </summary>
        public string Page { get; set; }

        /// <summary>
        /// 要打开的小程序版本。正式版为 "release",体验版为 "trial",开发版为 "develop"。默认是正式版。
        /// </summary>
        public string EnvVersion { get; set; } = "release";

        /// <summary>
        /// 默认是true,检查page 是否存在,为 true 时 page 必须是已经发布的小程序存在的页面(否则报错);
        /// 为 false 时允许小程序未发布或者 page 不存在, 但page 有数量上限(60000个)请勿滥用。
        /// </summary>
        public bool CheckPath { get; set; } = true;

        /// <summary>
        /// 默认430,二维码的宽度,单位 px,最小 280px,最大 1280px
        /// </summary>
        public int Width { get; set; } = 430;
    }

    public class WxMiniAppIndentity
    {
        /// <summary>
        /// 会话密钥
        /// </summary>
        [JsonProperty("session_key")]
        public string SessionKey { get; set; }

        /// <summary>
        /// 小程序OpenId
        /// </summary>
        [JsonProperty("openid")]
        public string OpenId { get; set; }

        public string UnionId { get; set; }
    }

    public class WxMiniAppUserInfo
    {
        public string OpenId { get; set; }

        public string PhoneNumber { get; set; }

        public string NickName { get; set; }

        public int Gender { get; set; }

        public string Language { get; set; }

        public string City { get; set; }

        public string Province { get; set; }

        public string Country { get; set; }

        public string AvatarUrl { get; set; }

        public string CountryCode { get; set; }
    }

    public class GetCgiWritingInput
    {
        [JsonProperty("access_token")]
        public string AccessToken { get; set; }

        [JsonProperty("offset")]
        public int Offset { get; set; } = 0;

        [JsonProperty("count")]
        public int Count { get; set; } = 20;

        [JsonProperty("no_content")]
        public int NoContent { get; set; } = 0;
    }


    public class GetCgiWritingResponse
    {
        [JsonProperty("total_count")]
        public int Total_count { get; set; }

        [JsonProperty("item_count")]
        public int Utem_count { get; set; }

        [JsonProperty("item")]
        public List<GetCgiWritingItemResponse> Item { get; set; }

    }

    public class GetCgiWritingItemResponse
    {
        [JsonProperty("article_id")]
        public string Article_id { get; set; }

        [JsonProperty("content")]
        public GetCgiWritingContentResponse Content { get; set; }

        [JsonProperty("create_time")]
        public long? Create_time { get; set; }

        [JsonProperty("update_time")]
        public long? Update_time { get; set; }


    }

    public class GetCgiWritingContentResponse
    {
        [JsonProperty("news_item")]
        public List<GetCgiWritingNewItemResponse> News_item { get; set; }

        [JsonProperty("create_time")]
        public long? Create_time { get; set; }

        [JsonProperty("update_time")]
        public long? Update_time { get; set; }

    }

    public class GetCgiWritingNewItemResponse
    {
        [JsonProperty("title")]
        public string Title { get; set; }

        [JsonProperty("author")]
        public string Author { get; set; }

        [JsonProperty("digest")]
        public string Digest { get; set; }

        [JsonProperty("content")]
        public string Content { get; set; }

        [JsonProperty("content_source_url")]
        public string Content_source_url { get; set; }

        [JsonProperty("thumb_media_id")]
        public string thumb_media_id { get; set; }

        [JsonProperty("thumb_url")]
        public string Thumb_url { get; set; }

        [JsonProperty("show_cover_pic")]
        public string show_cover_pic { get; set; }

        [JsonProperty("need_open_comment")]
        public string Meed_open_comment { get; set; }

    }
}