using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Text;
using System.Text.Json.Serialization;
using TEAMModelOS.SDK.Context.Attributes.Azure;
using TEAMModelOS.SDK.DI;

namespace TEAMModelOS.SDK.Models
{    
    public class OldStudent :CosmosEntity
    {       
        
        public OldStudent()
        {
          password = new Password();
          productToken = new List<ProductToken>();
          oauth = new List<Oauth>();
          //classroom = new Classroom();
        }
        
        /// <summary>
        /// 0 动态id  透過第三方申請，未認證手機號，TEAMModelId暫時為virtualId但是不顯示在介面上，當使用者驗證手機號後TEAMModelId會變為手機號。
        /// 1 动态id  透過手機號申請，TEAMModelId為手機號
        /// 2 學生ID，透過學校建立，TEAMModelId格式為 {學校簡碼}#{學號}
        /// </summary>
        [Required(ErrorMessage = "{0} 必须填写")]
        public int  type { get; set; }
        [Required(ErrorMessage = "{0} 必须填写")]
        public string name { get; set; }
        public string email { get; set; }
        public string cellphone { get; set; }
        public string countryCode { get; set; }
        public int verifyFlg { get; set; }
        public int status { get; set; } = 0;
        public long createDate { get; set; }
        public Password password { get; set; }
        public string exValue { get; set; }
        public string product { get; set; }
        public List<ProductToken> productToken { get; set; }
        public string shortCode { get; set; }
        public string profilePicture { get; set; }
        public string profilePictureUrl { get; set; }
        [JsonPropertyName("TEAMModelId")]
        [JsonProperty("TEAMModelId")]
        public string TEAMModelId { get; set; }
        public string loginTime { get; set; }
        public string virtualId { get; set; }
        public List<Oauth> oauth { get; set; } // 0 1
        public string haveDevice { get; set; }//2
        //public Classroom classroom { get; set; }
        public string classroomCode { get; set; }
        public string studentId { get; set; }
        public int seatNo { get; set; }   
    }
}
public class Password {
    public string value { get; set; }
    public bool isSet { get; set; } = false;
    public bool isReset { get; set; } = false;
}
public class ProductToken
{
    public string station { get; set; }
    public string url { get; set; }
    public string licenseStatus { get; set; }
    public string exp { get; set; }
    public string memberId { get; set; }
}
public class Oauth
{
    public string provider { get; set; }
    public string openId { get; set; }
}