narsil/Tanshu.Accounts.SqlDAO/BusinessLayer/UserBI.cs

116 lines
3.7 KiB
C#

using System;
using System.Collections.Generic;
//using System.Linq;
using System.Text;
using Tanshu.Accounts.Contracts;
using System.Data.SqlClient;
using Tanshu.Data.DAO;
using Tanshu.Accounts.Entities;
using Tanshu.Accounts.SqlDAO;
using NHibernate.Criterion;
using Tanshu.Accounts.Entities.Auth;
namespace Tanshu.Accounts.Repository
{
public static class UserBI
{
public static void Insert(User user)
{
using (var session = SessionManager.Session)
{
session.Save(user);
}
}
public static void Update(User user)
{
using (var session = SessionManager.Session)
{
session.Update(user);
}
}
public static void Delete(int userID)
{
using (var session = SessionManager.Session)
{
session.Delete(new User() { UserID = userID });
}
}
public static User GetUser(int userID)
{
using (var session = SessionManager.Session)
{
return session.Get<User>(userID);
}
}
public static User GetUserFromName(string name)
{
using (var session = SessionManager.Session)
{
return (User)session.CreateCriteria<User>()
.Add(Restrictions.Eq("Name", name))
.UniqueResult();
}
}
public static IList<User> GetUsers()
{
using (var session = SessionManager.Session)
{
return session.CreateCriteria<User>()
.List<User>();
}
}
public static IList<User> GetFilteredUsers(Dictionary<string, string> filter)
{
using (var session = SessionManager.Session)
{
return session.CreateCriteria<User>()
.Add(Restrictions.Like("Name", string.Format("%{0}%", filter["Name"])))
.List<User>();
}
}
public static bool ChangePassword(User userData, string newPassword)
{
using (var session = SessionManager.Session)
{
using (var trans = session.BeginTransaction())
{
var dbUser = session.CreateCriteria<User>()
.Add(Restrictions.Eq("Name", userData.Name))
.Add(Restrictions.Eq("Password", userData.Password))
.UniqueResult<User>();
if (dbUser == null)
return false;
dbUser.Password = newPassword;
session.Update(dbUser);
trans.Commit();
}
return true;
}
}
public static bool Exists(string userName)
{
using (var session = SessionManager.Session)
{
var count = session.CreateCriteria<User>()
.Add(Restrictions.Eq("Name", userName))
.SetProjection(Projections.Count("UserID")).UniqueResult();
return (int)count > 0;
}
}
public static bool ValidateUser(string name, string password)
{
using (var session = SessionManager.Session)
{
var count = session.CreateCriteria<User>()
.Add(Restrictions.Eq("Name", name))
.Add(Restrictions.Eq("Password", password))
.SetProjection(Projections.Count("UserID")).UniqueResult();
return (int)count > 0;
}
}
}
}