forked from emreeren/SambaPOS-3
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathUserRoleViewModel.cs
83 lines (72 loc) · 2.72 KB
/
UserRoleViewModel.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
using System;
using System.Collections.Generic;
using FluentValidation;
using SamplePrism.Domain.Models.Tickets;
using SamplePrism.Domain.Models.Users;
using SamplePrism.Localization.Properties;
using SamplePrism.Presentation.Common.ModelBase;
using SamplePrism.Presentation.Services.Common;
using SamplePrism.Services;
using System.Linq;
namespace SamplePrism.Modules.UserModule
{
public class UserRoleViewModel : EntityViewModelBase<UserRole>
{
private IEnumerable<PermissionViewModel> _permissions;
public IEnumerable<PermissionViewModel> Permissions
{
get { return _permissions ?? (_permissions = GetPermissions()); }
}
private IEnumerable<PermissionViewModel> GetPermissions()
{
var missingPermissions = Model.Permissions.Where(x => PermissionRegistry.PermissionNames.All(y => y.Key != x.Name));
missingPermissions.ToList().ForEach(x =>
{
Model.Permissions.Remove(x);
Workspace.Delete(x);
});
if (Model.Permissions.Count() < PermissionRegistry.PermissionNames.Count)
{
foreach (var pName in PermissionRegistry.PermissionNames.Keys.Where(pName => Model.Permissions.SingleOrDefault(x => x.Name == pName) == null).ToList())
{
Model.Permissions.Add(new Permission { Name = pName, Value = 0 });
}
}
return Model.Permissions.Select(x => new PermissionViewModel(x));
}
private IEnumerable<Department> _departments;
public IEnumerable<Department> Departments
{
get { return _departments ?? (_departments = Workspace.All<Department>()); }
}
public int DepartmentId
{
get { return Model.DepartmentId; }
set { Model.DepartmentId = value; }
}
public bool IsAdmin
{
get { return Model.IsAdmin; }
set { Model.IsAdmin = value || Model.Id == 1; }
}
public override Type GetViewType()
{
return typeof(UserRoleView);
}
public override string GetModelTypeString()
{
return Resources.UserRole;
}
protected override AbstractValidator<UserRole> GetValidator()
{
return new UserRoleValidator();
}
}
internal class UserRoleValidator : EntityValidator<UserRole>
{
public UserRoleValidator()
{
RuleFor(x => x.DepartmentId).GreaterThan(0);
}
}
}