public LoginHistory GetOneLoginHistory(int loginHistoryId)
   {
       var loginHistory = (LoginHistory)null;
       List<Dictionary<string, string>> list = _database.Query("Select * from LoginHistory where Id = @id", new Dictionary<string, object>()
 {
   {
     "@id",
     loginHistoryId
   }
 });
       if (list != null && list.Count == 1)
       {
           var dictionary = list[0];
           loginHistory = new LoginHistory
                          {
                              Id = int.Parse(dictionary["Id"]),
                              Type = int.Parse(dictionary["Type"]),
                              UserName = dictionary["UserName"],
                              LoginTime = DateTime.Parse(dictionary["LoginTime"]),
                              LoginStatus = int.Parse(dictionary["LoginStatus"]),
                              RefreshToken = dictionary["RefreshToken"],
                              AppId = dictionary["AppId"],
                              ClientUri = dictionary["ClientUri"],
                              ClientIP = dictionary["ClientIP"],
                              ClientUA = dictionary["ClientUA"],
                              ClientDevice = dictionary["ClientDevice"],
                              ClientApiKey = dictionary["ClientApiKey"],
                              Created = DateTime.Parse(dictionary["Created"])
                          };
       }
       return loginHistory;
   }
        public static async Task< long> InsertHistory(LoginHistory input)
        {
            string commandText = @" INSERT INTO LoginHistory(Id, Type, UserName, LoginTime, LoginStatus, RefreshToken, AppId, ClientUri, ClientIP, ClientUA,  ClientDevice, ClientApiKey, Created)
                                    VALUES( @Id, @Type, @UserName, @LoginTime, @LoginStatus, @RefreshToken, @AppId, @ClientUri, @ClientIP, @ClientUA, @ClientDevice, @ClientApiKey, @Created)";
            var parameters = new DynamicParameters();
            parameters.Add("@Id", (object)null);
            parameters.Add("@Type", (object)input.Type);
            parameters.Add("@UserName", (object)input.UserName);
            parameters.Add("@LoginTime", (object)input.LoginTime);
            parameters.Add("@LoginStatus", (object)input.LoginStatus);
            parameters.Add("@RefreshToken", (object)input.RefreshToken);
            parameters.Add("@AppId", (object)input.AppId);
            parameters.Add("@ClientUri", (object)input.ClientUri);
            parameters.Add("@ClientIP", (object)input.ClientIP);
            parameters.Add("@ClientUA", (object)input.ClientUA);
            parameters.Add("@ClientDevice", (object)input.ClientDevice);
            parameters.Add("@ClientApiKey", (object)input.ClientApiKey);
            parameters.Add("@Created", (object)DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
           
            long results;

            using (var conn = await DataAccessBase.GetOpenAsync(DataAccessBase.QuangAuthConn))
            {

                var id = await conn.QueryAsync<long>(commandText, parameters);
                results = id.Single();
            }

            return results;
        }
 public int InsertHistory(LoginHistory input)
 {
     try
     {
         return this._database.Execute("INSERT INTO LoginHistory\n                (   Id,\n                    Type,\n                    UserName,\n                    LoginTime,\n                    LoginStatus,\n                    RefreshToken,\n                    AppId,\n                    ClientUri,\n                    ClientIP,\n                    ClientUA,\n                    ClientDevice,\n                    ClientApiKey,\n                    Created)\n                VALUES(\n                    @Id,\n                    @Type,\n                    @UserName,\n                    @LoginTime,\n                    @LoginStatus,\n                    @RefreshToken,\n                    @AppId,\n                    @ClientUri,\n                    @ClientIP,\n                    @ClientUA,\n                    @ClientDevice,\n                    @ClientApiKey,\n                    @Created)", new Dictionary<string, object>()
 {
   {
     "@Id",            null
   },
   {
     "@Type",            input.Type
   },
   {
     "@UserName",            input.UserName
   },
   {
     "@LoginTime",
     input.LoginTime
   },
   {
     "@LoginStatus",
     input.LoginStatus
   },
   {
     "@RefreshToken",
     input.RefreshToken
   },
   {
     "@AppId",
     input.AppId
   },
   {
     "@ClientUri",
     input.ClientUri
   },
   {
     "@ClientIP",
     input.ClientIP
   },
   {
     "@ClientUA",
     input.ClientUA
   },
   {
     "@ClientDevice",
     input.ClientDevice
   },
   {
     "@ClientApiKey",
     input.ClientApiKey
   },
   {
     "@Created",
     DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
   }
 });
     }
     catch (Exception ex)
     {
     }
     return -1;
 }
 public static async Task<long> InsertLoginHistory(LoginHistory input)
 {
     
     return await (LoginHistoryDal.InsertHistory(input));
 }