using System.Data;
using System.Data.Common;
using SiberTek.Xenta.Data.Entities;
using SiberTek.Xenta.Data.Entities.Collections;
using SiberTek.Xenta.Data.Utils;
using System;
namespace SiberTek.Xenta.Data.Providers
{
public class UserSessionDataProvider : DataProviderBase, IUserSessionDataProvider
{
#region Methods
public bool InsertUserSession(int userID, DateTime createdOn, DateTime accessedOn, DateTime updatedOn, out int sessionID)
{
bool res = false;
sessionID = 0;
using(DbCommand cmd = DataBase.GetStoredProcCommand("UserSessions_Insert"))
{
DbCommandHelper.AddInt32(DataBase, cmd, "UserID", userID);
DbCommandHelper.AddDateTime(DataBase, cmd, "CreatedOn", createdOn);
DbCommandHelper.AddDateTime(DataBase, cmd, "AccessedOn", accessedOn);
DbCommandHelper.AddDateTime(DataBase, cmd, "UpdatedOn", updatedOn);
DbCommandHelper.AddOutInt32(DataBase, cmd, "SessionID");
res = (DataBase.ExecuteNonQuery(cmd) > 0);
if(res)
{
sessionID = DbCommandHelper.GeInt32(DataBase, cmd, "@SessionID");
}
}
return res;
}
public UserSessionData GetUserSession(int sessionID)
{
UserSessionData data = null;
if(sessionID > 0)
{
using(DbCommand cmd = DataBase.GetStoredProcCommand("UserSessions_Select"))
{
DbCommandHelper.AddInt32(DataBase, cmd, "SessionID", sessionID);
using(IDataReader reader = DataBase.ExecuteReader(cmd))
{
if(reader.Read())
{
data = ReadData(reader);
}
}
}
}
return data;
}
public UserSessionData GetUserSessionByUserID(int userID)
{
UserSessionData data = null;
if(userID > 0)
{
using(DbCommand cmd = DataBase.GetStoredProcCommand("UserSessions_SelectByUserID"))
{
DbCommandHelper.AddInt32(DataBase, cmd, "UserID", userID);
using(IDataReader reader = DataBase.ExecuteReader(cmd))
{
if(reader.Read())
{
data = ReadData(reader);
}
}
}
}
return data;
}
public UserSessionDataCollection GetAllUserSessions(DateTime? createdOnStart, DateTime? createdOnEnd, DateTime? accessedOnStart, DateTime? accessedOnEnd, int startIndex, int count, out int totalCount)
{
UserSessionDataCollection dataCollection = new UserSessionDataCollection();
using(DbCommand cmd = DataBase.GetStoredProcCommand("UserSessions_SelectAll"))
{
if(createdOnStart.HasValue)
{
DbCommandHelper.AddDateTime(DataBase, cmd, "CreatedOnStart", createdOnStart.Value);
}
if(createdOnEnd.HasValue)
{
DbCommandHelper.AddDateTime(DataBase, cmd, "CreatedOnEnd", createdOnEnd.Value);
}
if(accessedOnStart.HasValue)
{
DbCommandHelper.AddDateTime(DataBase, cmd, "AccessedOnStart", accessedOnStart.Value);
}
if(accessedOnEnd.HasValue)
{
DbCommandHelper.AddDateTime(DataBase, cmd, "AccessedOnEnd", accessedOnEnd.Value);
}
DbCommandHelper.AddInt32(DataBase, cmd, "StartIndex", startIndex);
DbCommandHelper.AddInt32(DataBase, cmd, "Count", count);
DbCommandHelper.AddOutInt32(DataBase, cmd, "TotalCount");
using(IDataReader reader = DataBase.ExecuteReader(cmd))
{
while(reader.Read())
{
dataCollection.Add(ReadData(reader));
}
}
totalCount = DbCommandHelper.GeInt32(DataBase, cmd, "@TotalCount");
}
return dataCollection;
}
public bool UpdateUserSession(int sessionID, int userID, DateTime createdOn, DateTime accessedOn, DateTime updatedOn)
{
bool res = false;
if(sessionID > 0)
{
using(DbCommand cmd = DataBase.GetStoredProcCommand("UserSessions_Update"))
{
DbCommandHelper.AddInt32(DataBase, cmd, "SessionID", sessionID);
DbCommandHelper.AddInt32(DataBase, cmd, "UserID", userID);
DbCommandHelper.AddDateTime(DataBase, cmd, "CreatedOn", createdOn);
DbCommandHelper.AddDateTime(DataBase, cmd, "AccessedOn", accessedOn);
DbCommandHelper.AddDateTime(DataBase, cmd, "UpdatedOn", updatedOn);
res = DataBase.ExecuteNonQuery(cmd) > 0;
}
}
return res;
}
public bool DeleteUserSession(int sessionID)
{
bool res = false;
if(sessionID > 0)
{
using(DbCommand cmd = DataBase.GetStoredProcCommand("UserSessions_Delete"))
{
DbCommandHelper.AddInt32(DataBase, cmd, "SessionID", sessionID);
res = DataBase.ExecuteNonQuery(cmd) > 0;
}
}
return res;
}
#endregion
#region Utilities
private static UserSessionData ReadData(IDataReader reader)
{
UserSessionData data = new UserSessionData();
data.SessionID = DataReaderHelper.ReadInt32(reader, "SessionID");
data.UserID = DataReaderHelper.ReadInt32(reader, "UserID");
data.CreatedOn = DataReaderHelper.ReadDateTime(reader, "CreatedOn");
data.AccessedOn = DataReaderHelper.ReadDateTime(reader, "AccessedOn");
data.UpdatedOn = DataReaderHelper.ReadDateTime(reader, "UpdatedOn");
return data;
}
#endregion
}
}