using System;
using System.Text;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Collections.Generic;
using Sample.Common.Data;
using Sample.Common.Exception;
using Sample.Model.Administration;
using Sample.MsSqlDal.Util;
using Sample.IDal;
using Sample.IDal.Administration;
using Sample.Common.Util;
using Sample.Common.Administration;
namespace Sample.MsSqlDal.Administration
{
public partial class UserServiceDal : IUserServiceDal
{
public UserServiceDal()
{
}
#region Sql queries constants
private const string GET_USER_INFO_BY_ID =
@"SELECT ID, UID, Login, Password, CreatedDate, FirstName, LastName, Email, CountryID, ReferralBy, Gender FROM [tblAdministration.User] WHERE ID = @ID";
private const string INSERT_USER_INFO =
@"DECLARE @ID UNIQUEIDENTIFIER; SET @ID = NEWID(); INSERT INTO [tblAdministration.User](ID, UID, Login, Password, CreatedDate, FirstName, LastName, Email, CountryID, ReferralBy, Gender) VALUES (@ID, @UID, @Login, @Password, @CreatedDate, @FirstName, @LastName, @Email, @CountryID, @ReferralBy, @Gender); SELECT @ID, @@ERROR;";
private const string UPDATE_USER_INFO =
@"UPDATE [tblAdministration.User] SET ID=@ID, UID=@UID, Login=@Login, Password=@Password, CreatedDate=@CreatedDate, FirstName=@FirstName, LastName=@LastName, Email=@Email, CountryID=@CountryID, ReferralBy=@ReferralBy, Gender=@Gender WHERE ID = @ID; SELECT @@ERROR";
private const string DELETE_USER_INFO_BY_ID =
@"DELETE FROM [tblAdministration.User] WHERE ID = @ID; SELECT @@ERROR;";
private const string GET_USER_BY_LOGIN =
@"SELECT * FROM [tblAdministration.User] WHERE Login = @Login";
private const string IS_LOGIN_USED =
@"IF EXISTS(SELECT 1 * FROM [tblAdministration.User] WHERE (Login = @Login) AND (Rowguid <> @UserId OR @UserId IS NULL))
BEGIN
SELECT CAST(1 AS BIT)
END
ELSE
BEGIN
SELECT CAST(0 AS BIT)
END";
private const string IS_EMAIL_USED =
@"IF EXISTS(SELECT 1 * FROM [tblAdministration.User] WHERE (Email = @Email) AND (Rowguid <> @UserId OR @UserId IS NULL))
BEGIN
SELECT CAST(1 AS BIT)
END
ELSE
BEGIN
SELECT CAST(0 AS BIT)
END";
private const string IS_UIDUSED =
@"IF EXISTS(SELECT 1 * FROM [tblAdministration.User] WHERE UID = @UID)
BEGIN
SELECT CAST(1 AS BIT)
END
ELSE
BEGIN
SELECT CAST(0 AS BIT)
END";
private const string GET_USER_ROLE_LIST_BY_USER_ID =
@"SELECT ADMRL.*
FROM [tblAdministration.UserRole] AS ADMUR
INNER JOIN [tblAdministration.Role] AS ADMRL ON ADMRL.rowguid = ADMUR.RoleId
WHERE UserId = @UserId";
private const string INSERT_USER_ROLE =
@"INSERT INTO [tblAdministration.UserRole] ([UserId], [RoleId]) VALUES (@UserId, @RoleId); SELECT @@ERROR;";
private const string DELETE_USER_ROLE =
@"DELETE FROM [tblAdministration.UserRole] WHERE UserId = @UserId AND RoleId = @RoleId; SELECT @@ERROR;";
private const string DELETE_USER_ROLES =
@"DELETE FROM [tblAdministration.UserRole] WHERE UserId = @UserId; SELECT @@ERROR;";
#endregion
public UserInfoModel GetUserInfoById(ISession session, Guid id)
{
SqlParameter prm = SqlHelperParameterCacheMy.GetSpParameter(GET_USER_INFO_BY_ID);
if (prm == null)
{
prm = new SqlParameter("ID", SqlDbType.UniqueIdentifier, 16);
SqlHelperParameterCacheMy.CacheParameter(GET_USER_INFO_BY_ID, prm);
}
prm.Value = id;
Session sqlSession = Session.GetSqlSession(session);
SqlDataReader reader = sqlSession.ExecuteReader(CommandType.Text, GET_USER_INFO_BY_ID, prm);
if (reader.HasRows)
{
return GetUserInfoModelFromDataReader(reader, true);
}
else
{
reader.Close();
return null;
}
}
public void DeleteUserInfoById(ISession session, Guid id)
{
SqlParameter prm = SqlHelperParameterCacheMy.GetSpParameter(DELETE_USER_INFO_BY_ID);
if (prm == null)
{
prm = new SqlParameter("ID", SqlDbType.UniqueIdentifier, 16);
SqlHelperParameterCacheMy.CacheParameter(DELETE_USER_INFO_BY_ID, prm);
}
prm.Value = id;
Session sqlSession = Session.GetSqlSession(session);
SqlDataReader reader = sqlSession.ExecuteReader(CommandType.Text, DELETE_USER_INFO_BY_ID, prm);
if (reader.Read())
{
int error = DataConvertHelper.GetInt32Value(reader[0]);
reader.Close();
if (error != 0)
{
throw new SqlDalException(String.Concat("MS SQL Server error code = ", error.ToString()));
}
}
else
{
reader.Close();
}
}
public void InsertUserInfo(ISession session, UserInfoModel _userInfo)
{
SqlParameter[] prms = SqlHelperParameterCacheMy.GetSpParameterSet(INSERT_USER_INFO);
if (prms == null)
{
prms = new SqlParameter[10];
prms[0] = new SqlParameter("UID", SqlDbType.NChar, 10);
prms[1] = new SqlParameter("Login", SqlDbType.NVarChar, 50);
prms[2] = new SqlParameter("Password", SqlDbType.NVarChar, 100);
prms[3] = new SqlParameter("CreatedDate", SqlDbType.DateTime, 8);
prms[4] = new SqlParameter("FirstName", SqlDbType.NVarChar, 50);
prms[5] = new SqlParameter("LastName", SqlDbType.NVarChar, 50);
prms[6] = new SqlParameter("Email", SqlDbType.NVarChar, 50);
prms[7] = new SqlParameter("CountryID", SqlDbType.UniqueIdentifier, 16);
prms[8] = new SqlParameter("ReferralBy", SqlDbType.Int, 4);
prms[9] = new SqlParameter("Gender", SqlDbType.Int, 4);
SqlHelperParameterCacheMy.CacheParameterSet(INSERT_USER_INFO, prms);
}
prms[0].Value = DataConvertHelper.GetDbValue(_userInfo.UID);
prms[1].Value = DataConvertHelper.GetDbValue(_userInfo.Login);
prms[2].Value = DataConvertHelper.GetDbValue(_userInfo.Password);
prms[3].Value = DataConvertHelper.GetDbValue(_userInfo.CreatedDate);
prms[4].Value = DataConvertHelper.GetDbValue(_userInfo.FirstName);
prms[5].Value = DataConvertHelper.GetDbValue(_userInfo.LastName);
prms[6].Value = DataConvertHelper.GetDbValue(_userInfo.Email);
prms[7].Value = DataConvertHelper.GetDbValue(_userInfo.CountryID);
prms[8].Value = DataConvertHelper.GetDbValue(_userInfo.ReferralBy);
prms[9].Value = DataConvertHelper.GetDbValue(_userInfo.Gender);
Session sqlSession = Session.GetSqlSession(session);
SqlDataReader reader = sqlSession.ExecuteReader(CommandType.Text, INSERT_USER_INFO, prms);
if (reader.Read())
{
_userInfo.Id = DataConvertHelper.GetGuidValue(reader[0]);
int error = DataConvertHelper.GetInt32Value(reader[1]);
reader.Close();
if (error != 0)
{
throw new SqlDalException(String.Concat("MS SQL Server error code = ", error.ToString()));
}
}
else
{
reader.Close();
}
}
public void UpdateUserInfo(ISession session, UserInfoModel _userInfo)
{
SqlParameter[] prms = SqlHelperParameterCacheMy.GetSpParameterSet(UPDATE_USER_INFO);
if (prms == null)
{
prms = new SqlParameter[11];
prms[0] = new SqlParameter("ID", SqlDbType.UniqueIdentifier, 16);
prms[1] = new SqlParameter("UID", SqlDbType.NChar, 10);
prms[2] = new SqlParameter("Login", SqlDbType.NVarChar, 50);
prms[3] = new SqlParameter("Password", SqlDbType.NVarChar, 100);
prms[4] = new SqlParameter("CreatedDate", SqlDbType.DateTime, 8);
prms[5] = new SqlParameter("FirstName", SqlDbType.NVarChar, 50);
prms[6] = new SqlParameter("LastName", SqlDbType.NVarChar, 50);
prms[7] = new SqlParameter("Email", SqlDbType.NVarChar, 50);
prms[8] = new SqlParameter("CountryID", SqlDbType.UniqueIdentifier, 16);
prms[9] = new SqlParameter("ReferralBy", SqlDbType.Int, 4);
prms[10] = new SqlParameter("Gender", SqlDbType.Int, 4);
SqlHelperParameterCacheMy.CacheParameterSet(UPDATE_USER_INFO, prms);
}
prms[0].Value = DataConvertHelper.GetDbValue(_userInfo.Id);
prms[1].Value = DataConvertHelper.GetDbValue(_userInfo.UID);
prms[2].Value = DataConvertHelper.GetDbValue(_userInfo.Login);
prms[3].Value = DataConvertHelper.GetDbValue(_userInfo.Password);
prms[4].Value = DataConvertHelper.GetDbValue(_userInfo.CreatedDate);
prms[5].Value = DataConvertHelper.GetDbValue(_userInfo.FirstName);
prms[6].Value = DataConvertHelper.GetDbValue(_userInfo.LastName);
prms[7].Value = DataConvertHelper.GetDbValue(_userInfo.Email);
prms[8].Value = DataConvertHelper.GetDbValue(_userInfo.CountryID);
prms[9].Value = DataConvertHelper.GetDbValue(_userInfo.ReferralBy);
prms[10].Value = DataConvertHelper.GetDbValue(_userInfo.Gender);
Session sqlSession = Session.GetSqlSession(session);
SqlDataReader reader = sqlSession.ExecuteReader(CommandType.Text, UPDATE_USER_INFO, prms);
if (reader.Read())
{
int error = DataConvertHelper.GetInt32Value(reader[0]);
reader.Close();
if (error != 0)
{
throw new SqlDalException(String.Concat("MS SQL Server error code = ", error.ToString()));
}
}
else
{
reader.Close();
}
}
internal static UserInfoModel GetUserInfoModelFromDataReader(SqlDataReader reader, bool needReaderClose)
{
UserInfoModel _userInfo = null;
if (!reader.IsClosed)
{
reader.Read();
int ordId = reader.GetOrdinal("ID"); Guid _id = reader.IsDBNull(ordId) ? Guid.Empty : reader.GetGuid(ordId);
int ordUID = reader.GetOrdinal("UID"); string _uID = reader.IsDBNull(ordUID) ? String.Empty : reader.GetString(ordUID);
int ordLogin = reader.GetOrdinal("Login"); string _login = reader.IsDBNull(ordLogin) ? String.Empty : reader.GetString(ordLogin);
int ordPassword = reader.GetOrdinal("Password"); string _password = null; if (!reader.IsDBNull(ordPassword)) _password = reader.GetString(ordPassword);
int ordCreatedDate = reader.GetOrdinal("CreatedDate"); DateTime _createdDate = reader.IsDBNull(ordCreatedDate) ? DateTime.MinValue : reader.GetDateTime(ordCreatedDate);
int ordFirstName = reader.GetOrdinal("FirstName"); string _firstName = reader.IsDBNull(ordFirstName) ? String.Empty : reader.GetString(ordFirstName);
int ordLastName = reader.GetOrdinal("LastName"); string _lastName = reader.IsDBNull(ordLastName) ? String.Empty : reader.GetString(ordLastName);
int ordEmail = reader.GetOrdinal("Email"); string _email = reader.IsDBNull(ordEmail) ? String.Empty : reader.GetString(ordEmail);
int ordCountryID = reader.GetOrdinal("CountryID"); Guid? _countryID = null; if (!reader.IsDBNull(ordCountryID)) _countryID = reader.GetGuid(ordCountryID);
int ordReferralBy = reader.GetOrdinal("ReferralBy"); int? _referralBy = null; if (!reader.IsDBNull(ordReferralBy)) _referralBy = reader.GetInt32(ordReferralBy);
int ordGender = reader.GetOrdinal("Gender"); int _gender = reader.IsDBNull(ordGender) ? Int32.MinValue : reader.GetInt32(ordGender);
_userInfo = new UserInfoModel(_id, _uID, _login, _password, _createdDate, _firstName, _lastName, _email, _countryID, _referralBy, _gender);
if (needReaderClose)
{
reader.Close();
}
}
else
{
_userInfo = new UserInfoModel();
}
return _userInfo;
}
internal static IList<UserInfoModel> GetUserInfoModelListFromDataReader(SqlDataReader reader, bool needReaderClose)
{
IList<UserInfoModel> list = new List<UserInfoModel>();
if (!reader.IsClosed)
{
while (reader.Read())
{
int ordId = reader.GetOrdinal("ID"); Guid _id = reader.IsDBNull(ordId) ? Guid.Empty : reader.GetGuid(ordId);
int ordUID = reader.GetOrdinal("UID"); string _uID = reader.IsDBNull(ordUID) ? String.Empty : reader.GetString(ordUID);
int ordLogin = reader.GetOrdinal("Login"); string _login = reader.IsDBNull(ordLogin) ? String.Empty : reader.GetString(ordLogin);
int ordPassword = reader.GetOrdinal("Password"); string _password = null; if (!reader.IsDBNull(ordPassword)) _password = reader.GetString(ordPassword);
int ordCreatedDate = reader.GetOrdinal("CreatedDate"); DateTime _createdDate = reader.IsDBNull(ordCreatedDate) ? DateTime.MinValue : reader.GetDateTime(ordCreatedDate);
int ordFirstName = reader.GetOrdinal("FirstName"); string _firstName = reader.IsDBNull(ordFirstName) ? String.Empty : reader.GetString(ordFirstName);
int ordLastName = reader.GetOrdinal("LastName"); string _lastName = reader.IsDBNull(ordLastName) ? String.Empty : reader.GetString(ordLastName);
int ordEmail = reader.GetOrdinal("Email"); string _email = reader.IsDBNull(ordEmail) ? String.Empty : reader.GetString(ordEmail);
int ordCountryID = reader.GetOrdinal("CountryID"); Guid? _countryID = null; if (!reader.IsDBNull(ordCountryID)) _countryID = reader.GetGuid(ordCountryID);
int ordReferralBy = reader.GetOrdinal("ReferralBy"); int? _referralBy = null; if (!reader.IsDBNull(ordReferralBy)) _referralBy = reader.GetInt32(ordReferralBy);
int ordGender = reader.GetOrdinal("Gender"); int _gender = reader.IsDBNull(ordGender) ? Int32.MinValue : reader.GetInt32(ordGender);
UserInfoModel item = new UserInfoModel(_id, _uID, _login, _password, _createdDate, _firstName, _lastName, _email, _countryID, _referralBy, _gender);
list.Add(item);
}
if (needReaderClose)
{
reader.Close();
}
}
return list;
}
internal static UserRoleInfoModel GetUserRoleInfoModelFromDataReader(SqlDataReader reader, bool needReaderClose)
{
UserRoleInfoModel _userRoleInfo = null;
if (!reader.IsClosed)
{
reader.Read();
int ordUserID = reader.GetOrdinal("UserID"); Guid _userID = reader.IsDBNull(ordUserID) ? Guid.Empty : reader.GetGuid(ordUserID);
int ordRoleID = reader.GetOrdinal("RoleID"); Guid _roleID = reader.IsDBNull(ordRoleID) ? Guid.Empty : reader.GetGuid(ordRoleID);
_userRoleInfo = new UserRoleInfoModel(_userID, _roleID);
if (needReaderClose)
{
reader.Close();
}
}
else
{
_userRoleInfo = new UserRoleInfoModel();
}
return _userRoleInfo;
}
internal static IList<UserRoleInfoModel> GetUserRoleInfoModelListFromDataReader(SqlDataReader reader, bool needReaderClose)
{
IList<UserRoleInfoModel> list = new List<UserRoleInfoModel>();
if (!reader.IsClosed)
{
while (reader.Read())
{
int ordUserID = reader.GetOrdinal("UserID"); Guid _userID = reader.IsDBNull(ordUserID) ? Guid.Empty : reader.GetGuid(ordUserID);
int ordRoleID = reader.GetOrdinal("RoleID"); Guid _roleID = reader.IsDBNull(ordRoleID) ? Guid.Empty : reader.GetGuid(ordRoleID);
UserRoleInfoModel item = new UserRoleInfoModel(_userID, _roleID);
list.Add(item);
}
if (needReaderClose)
{
reader.Close();
}
}
return list;
}
public UserInfoModel GetUserByLogin(ISession session, string login)
{
SqlParameter prm = SqlHelperParameterCacheMy.GetSpParameter(GET_USER_BY_LOGIN);
if (prm == null)
{
prm = new SqlParameter("Login", SqlDbType.NVarChar, 20);
SqlHelperParameterCacheMy.CacheParameter(GET_USER_BY_LOGIN, prm);
}
prm.Value = DataConvertHelper.GetDbValue(login);
Session sqlSession = Session.GetSqlSession(session);
SqlDataReader reader = sqlSession.ExecuteReader(CommandType.Text, GET_USER_BY_LOGIN, prm);
if (reader.HasRows)
{
return GetUserInfoModelFromDataReader(reader, true);
}
else
{
reader.Close();
return null;
}
}
public bool IsLoginUsed(ISession session, string login, Guid userId)
{
SqlParameter[] prms = SqlHelperParameterCacheMy.GetSpParameterSet(IS_LOGIN_USED);
if (prms == null)
{
prms = new SqlParameter[2];
prms[0] = new SqlParameter("Login", SqlDbType.NVarChar, 30);
prms[1] = new SqlParameter("UserId", SqlDbType.UniqueIdentifier, 16);
SqlHelperParameterCacheMy.CacheParameterSet(IS_LOGIN_USED, prms);
}
prms[0].Value = DataConvertHelper.GetDbValue(login);
prms[1].Value = DataConvertHelper.GetDbValue(userId);
Session sqlSession = Session.GetSqlSession(session);
SqlDataReader reader = sqlSession.ExecuteReader(CommandType.Text, IS_LOGIN_USED, prms);
if (reader.Read())
{
bool val = DataConvertHelper.GetBoolValue(reader[0]);
reader.Close();
return val;
}
else
{
reader.Close();
return false;
}
}
public bool IsEmailUsed(ISession session, string email, Guid userId)
{
SqlParameter[] prms = SqlHelperParameterCacheMy.GetSpParameterSet(IS_EMAIL_USED);
if (prms == null)
{
prms = new SqlParameter[2];
prms[0] = new SqlParameter("Email", SqlDbType.NVarChar, 50);
prms[1] = new SqlParameter("UserId", SqlDbType.UniqueIdentifier, 16);
SqlHelperParameterCacheMy.CacheParameterSet(IS_EMAIL_USED, prms);
}
prms[0].Value = DataConvertHelper.GetDbValue(email);
prms[1].Value = DataConvertHelper.GetDbValue(userId);
Session sqlSession = Session.GetSqlSession(session);
SqlDataReader reader = sqlSession.ExecuteReader(CommandType.Text, IS_EMAIL_USED, prms);
if (reader.Read())
{
bool val = DataConvertHelper.GetBoolValue(reader[0]);
reader.Close();
return val;
}
else
{
reader.Close();
return false;
}
}
public bool IsUIDUsed(ISession session, string uID)
{
SqlParameter prm = SqlHelperParameterCacheMy.GetSpParameter(IS_UIDUSED);
if (prm == null)
{
prm = new SqlParameter("UID", SqlDbType.NChar, 10);
SqlHelperParameterCacheMy.CacheParameter(IS_UIDUSED, prm);
}
prm.Value = DataConvertHelper.GetDbValue(uID);
Session sqlSession = Session.GetSqlSession(session);
SqlDataReader reader = sqlSession.ExecuteReader(CommandType.Text, IS_UIDUSED, prm);
if (reader.Read())
{
bool val = DataConvertHelper.GetBoolValue(reader[0]);
reader.Close();
return val;
}
else
{
reader.Close();
return false;
}
}
public IList<RoleInfoModel> GetUserRoleListByUserId(ISession session, Guid userId)
{
SqlParameter prm = SqlHelperParameterCacheMy.GetSpParameter(GET_USER_ROLE_LIST_BY_USER_ID);
if (prm == null)
{
prm = new SqlParameter("UserId", SqlDbType.UniqueIdentifier, 16);
SqlHelperParameterCacheMy.CacheParameter(GET_USER_ROLE_LIST_BY_USER_ID, prm);
}
prm.Value = DataConvertHelper.GetDbValue(userId);
Session sqlSession = Session.GetSqlSession(session);
SqlDataReader reader = sqlSession.ExecuteReader(CommandType.Text, GET_USER_ROLE_LIST_BY_USER_ID, prm);
return RoleServiceDal.GetRoleInfoModelListFromDataReader(reader, true);
}
public void InsertUserRole(ISession session, Guid userId, Guid roleId)
{
SqlParameter[] prms = SqlHelperParameterCacheMy.GetSpParameterSet(INSERT_USER_ROLE);
if (prms == null)
{
prms = new SqlParameter[2];
prms[0] = new SqlParameter("UserId", SqlDbType.UniqueIdentifier, 16);
prms[1] = new SqlParameter("RoleId", SqlDbType.UniqueIdentifier, 16);
SqlHelperParameterCacheMy.CacheParameterSet(INSERT_USER_ROLE, prms);
}
prms[0].Value = DataConvertHelper.GetDbValue(userId);
prms[1].Value = DataConvertHelper.GetDbValue(roleId);
Session sqlSession = Session.GetSqlSession(session);
SqlDataReader reader = sqlSession.ExecuteReader(CommandType.Text, INSERT_USER_ROLE, prms);
if (reader.Read())
{
int error = DataConvertHelper.GetInt32Value(reader[0]);
reader.Close();
if (error != 0)
{
throw new SqlDalException(String.Concat("MS SQL Server error code = ", error.ToString()));
}
}
reader.Close();
}
public void DeleteUserRole(ISession session, Guid userId, Guid roleId)
{
SqlParameter[] prms = SqlHelperParameterCacheMy.GetSpParameterSet(DELETE_USER_ROLE);
if (prms == null)
{
prms = new SqlParameter[2];
prms[0] = new SqlParameter("UserId", SqlDbType.UniqueIdentifier, 16);
prms[1] = new SqlParameter("RoleId", SqlDbType.UniqueIdentifier, 16);
SqlHelperParameterCacheMy.CacheParameterSet(DELETE_USER_ROLE, prms);
}
prms[0].Value = DataConvertHelper.GetDbValue(userId);
prms[1].Value = DataConvertHelper.GetDbValue(roleId);
Session sqlSession = Session.GetSqlSession(session);
SqlDataReader reader = sqlSession.ExecuteReader(CommandType.Text, DELETE_USER_ROLE, prms);
if (reader.Read())
{
int error = DataConvertHelper.GetInt32Value(reader[0]);
reader.Close();
if (error != 0)
{
throw new SqlDalException(String.Concat("MS SQL Server error code = ", error.ToString()));
}
}
reader.Close();
}
public void DeleteUserRoles(ISession session, Guid userId)
{
SqlParameter prm = SqlHelperParameterCacheMy.GetSpParameter(DELETE_USER_ROLES);
if (prm == null)
{
prm = new SqlParameter("UserId", SqlDbType.UniqueIdentifier, 16);
SqlHelperParameterCacheMy.CacheParameter(DELETE_USER_ROLES, prm);
}
prm.Value = DataConvertHelper.GetDbValue(userId);
Session sqlSession = Session.GetSqlSession(session);
SqlDataReader reader = sqlSession.ExecuteReader(CommandType.Text, DELETE_USER_ROLES, prm);
if (reader.Read())
{
int error = DataConvertHelper.GetInt32Value(reader[0]);
reader.Close();
if (error != 0)
{
throw new SqlDalException(String.Concat("MS SQL Server error code = ", error.ToString()));
}
}
reader.Close();
}
}
}