using System;

namespace JiaZhiQuan.Common.Models.GrowModel {
    public class GrowthRepositoryModel {
        public enum PrizeType {
            point = 0,
            medal = 1,
            /// <summary>
            /// 虚拟商品
            /// </summary>
            virtualGoods = 2,

            /// <summary>
            /// 实体商品
            /// </summary>
            normalGoods = 3
        }
        public enum PrizeStatus {
            rewarding = 0, //待领取
            rewarded = 1, //已领取
            expired = 2, //已过期
            outOfStock = 3 //缺货
        }
        public class UserGrow {
            public long id { get; set; }

            public int growLevel { get; set; }

            public int growNowExperience { get; set; }

            public int growSumExperience { get; set; }
        }

        public class GrowLevel {
            public int id { get; set; }

            public string code { get; set; }

            public int level { get; set; }

            public int experience { get; set; }

            public int startToNowExperience { get; set; }
        }

        public class LevelPrize {
            public int id { get; set; }

            public string levelCode { get; set; }

            public int type { get; set; }

            public string name { get; set; }

            public string image { get; set; }

            public long prizeId { get; set; }

            public int points { get; set; }

            public int expirationDays { get; set; }

            public int displayOrder { get; set; }
        }

        public class UserLevelLog {
            public string code { get; set; }

            public int versionId { get; set; }

            public long userId { get; set; }

            public int levelId { get; set; }

            public int level { get; set; }

            public int levelUpNeedExperience { get; set; }

            public int nowLevelSumExperience { get; set; }

            public int nowExperience { get; set; }

            public int pushStatus { get; set; } = 0;
        }

        public class UserLevelPrizeLog {
            public int versionId { get; set; }
            public long userId { get; set; }
            public int levelId { get; set; }
            public int levelPrizeId { get; set; }
            public string levelLogCode { get; set; }
            public int level { get; set; }
            public int status { get; set; } = 0;
            public DateTime expireTime { get; set; }
            public int points { get; set; }
            public int displayOrder { get; set; }
            public int type { get; set; }
            public string name { get; set; }
            public string thumbnails { get; set; }

            public long prizeId { get; set; }

        }

        public class OnceTaskLog {
            public long userId { get; set; }
            public DateTime? completeSelfDataTime { get; set; }
            public DateTime? realNameAuthTime { get; set; }
            public DateTime? authorAuthTime { get; set; }
            public DateTime? withdrawalTime { get; set; }
            public DateTime now { get; set;}
        }

        public class UserGradeInfo {
            public string userId;
            public int versionId;
            public int levelId;
            public int level;
            //public string levelCode ;
            public int levelUpNeedExperience;
            public int levelStart;
            public int toNextExp;
            public int levelExp;
        }

        public class UserTaskInfo {
            public int id;
            public int versionId;
            public string groupName;
            public string taskName;
            //public string levelCode ;
            public string groupCode;
            /// <summary>
            /// 组排序
            /// </summary>
            public int gOrder;

            /// <summary>
            /// 任务排序
            /// </summary>
            public int tOrder;

            /// <summary>
            /// 任务事件id
            /// </summary>
            public int taskEventId;

            /// <summary>
            /// 每日任务完成次数
            /// </summary>
            public int taskCompleteNeedCount;

            /// <summary>
            /// 任务缩略图
            /// </summary>
            public string thumbnails;

            /// <summary>
            /// 任务描述
            /// </summary>
            public string desc;

            /// <summary>
            /// 任务完成可加的经验值
            /// </summary>
            public int experience;

            /// <summary>
            /// 任务类型（0：一次性任务 1：每日任务）
            /// </summary>
            public int type;

            /// <summary>
            /// 任务事件编码
            /// </summary>
            public string eventCode;

            /// <summary>
            /// 事件名称
            /// </summary>
            public string eventName;

            /// <summary>
            /// 事件路由
            /// </summary>
            public string route;

            /// <summary>
            /// 任务完成状态（0：未完成 1：已完成
            /// </summary>
            public int completeState;

            /// <summary>
            /// 是否展示（0：不展示 1：展示）
            /// </summary>
            public int needShow;
        }

        public class EquityInfo {
            public long prizeOrderId;
            public long userId;
            public int levelId;
            public int level;
            public int status;
            public DateTime? expireTime;
            public long? orderId;
            public long prizeId;
            public int points;
            public int type;
            public string name;
            public long levelPrizeId;
            public string thumbnails;
        }
    }
}
