using Knoks.Framework.DataAccess;
using Newtonsoft.Json;
using System;
using System.ComponentModel.DataAnnotations;

namespace Knoks.Core.Entities.Args
{
    public class CreateUserArgs : IApiArgs
    {
        [JsonIgnore, AutoInitField]
        public string HttpRequestInfo { get; set; }

        [JsonIgnore, AutoInitField]
        public int ApiConsumerId { get; set; }

        [JsonIgnore, AutoInitField]
        public string CreateIPAddress { get; set; }

        [JsonIgnore]
        public int UserTypeId { get; set; }

        // User Details
        public string UserName { get; set; }
        [EmailAddressAttribute]
        public string Email { get; set; }
        [ProcParamIgnore]
        public string Password { get; set; }
        //public int CountryId { get; set; }
        //[JsonIgnore]
        //public byte LanguageId { get; set; }
        //[ProcParamIgnore, JsonProperty(PropertyName ="languageId")]
        //public int _languageId { get { return LanguageId; } set { LanguageId = (byte)value; } }//fix for Swashbuckle error
        // Personal Details
        //public string FirstName { get; set; }
        //public string LastName { get; set; }
        //public DateTime BirthDate { get; set; }
        //public string Address { get; set; }
        //public string City { get; set; }
        //public string Gender { get; set; }
        //public string ZipCode { get; set; }
        //public string PhonePrefix { get; set; }
        //public string Phone { get; set; }
        //public bool IsUSTaxEntity { get; set; }
        //public bool KYCApproved { get; set; }
        //public bool PhoneVerified { get; set; }
        //public bool MailVerfied { get; set; }
        //public bool TermsOfServiceChecked { get; set; }
        //[JsonIgnore]
        //public string CreateOrigin { get; set; }
        //[JsonIgnore]
        //public string Source { get; set; }
        //[JsonIgnore]
        //public decimal NewUserFreeCreditAmount { get; set; }
    }
}

