da929ad036
Breaking Change: Renamed Discontinued to IsActive and added NA field to products. Cleanup: Removed not used attributes Change: RoleConstants changed to simple string Feature: Table Create/Edit/Reorder and Modifier Create/Edit Form Feature: Bills now show the Tax name from the database and not a hack
85 lines
2.9 KiB
C#
85 lines
2.9 KiB
C#
using System;
|
|
using System.Linq;
|
|
using System.Collections.Generic;
|
|
using NHibernate;
|
|
using Tanshu.Accounts.Entities.Auth;
|
|
|
|
|
|
namespace Tanshu.Accounts.Repository
|
|
{
|
|
public class UserBI : UnitOfWork<User>
|
|
{
|
|
public IList<Group> GroupList()
|
|
{
|
|
return _session.QueryOver<Group>()
|
|
.OrderBy(x => x.Name).Asc
|
|
.List();
|
|
}
|
|
public IList<User> GetFilteredUsers(Dictionary<string, string> filter)
|
|
{
|
|
return _session.QueryOver<User>()
|
|
.WhereRestrictionOn(x => x.Name).IsLike(string.Format("%{0}%", filter["Name"]))
|
|
.List();
|
|
}
|
|
public bool ChangePassword(User userData, string newPassword)
|
|
{
|
|
var dbUser = Get(x => x.Name == userData.Name && x.Password == userData.Password);
|
|
if (dbUser == null)
|
|
return false;
|
|
dbUser.Password = newPassword;
|
|
_session.Update(dbUser);
|
|
return true;
|
|
}
|
|
public User ValidateUser(string name, string password)
|
|
{
|
|
return Get(x => x.Name == name && x.Password == password);
|
|
}
|
|
public User MsrValidateUser(string msrString)
|
|
{
|
|
return Get(x => x.MsrString == msrString);
|
|
}
|
|
public IList<User> ListActive(DateTime startDate, DateTime finishDate)
|
|
{
|
|
const string query = @"
|
|
select distinct(u) from Voucher v
|
|
inner join v.User u
|
|
where v.Date >= :startDate and v.Date <= :finishDate
|
|
order by u.Name";
|
|
return _session.CreateQuery(query)
|
|
.SetParameter("startDate", startDate)
|
|
.SetParameter("finishDate", finishDate)
|
|
.List<User>();
|
|
}
|
|
public void Update(User user, IEnumerable<Group> selectedGroups)
|
|
{
|
|
var roles = new Dictionary<Group, bool>();
|
|
foreach (var item in GroupList())
|
|
{
|
|
roles.Add(item, selectedGroups.Any(x => x.GroupID == item.GroupID));
|
|
}
|
|
foreach (var item in roles)
|
|
{
|
|
var id = item.Key.GroupID;
|
|
var ug = user.UserGroups.SingleOrDefault(x => x.Group.GroupID == id);
|
|
if (item.Value && ug == null)
|
|
{
|
|
var rg = new UserGroup() { User = user, Group = item.Key };
|
|
_session.Save(rg);
|
|
}
|
|
else if (!item.Value && ug != null)
|
|
{
|
|
user.UserGroups.Remove(ug);
|
|
_session.Delete(ug);
|
|
}
|
|
}
|
|
}
|
|
public bool IsUserInRole(Guid userID, string roleName)
|
|
{
|
|
var user = _session.QueryOver<User>()
|
|
.Where(x => x.UserID == userID)
|
|
.SingleOrDefault();
|
|
return user.UserGroups.SelectMany(x => x.Group.RoleGroups).Any(y=>y.Role.Name == roleName);
|
|
}
|
|
}
|
|
}
|