Free cookie consent management tool by TermsFeed Policy Generator

source: trunk/sources/HeuristicLab.Hive.Server.Core/UserRoleManager.cs @ 962

Last change on this file since 962 was 952, checked in by msteinbi, 15 years ago

Implementation of UserRoleManager (#417)

File size: 6.6 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using HeuristicLab.Hive.Contracts.Interfaces;
6using HeuristicLab.Hive.Contracts.BusinessObjects;
7using HeuristicLab.Hive.Server.Core.InternalInterfaces.DataAccess;
8using System.Resources;
9using System.Reflection;
10using HeuristicLab.Hive.Contracts;
11
12namespace HeuristicLab.Hive.Server.Core {
13  class UserRoleManager: IUserRoleManager {
14
15    IUserAdapter userAdapter;
16    IUserGroupAdapter userGroupAdapter;
17    IPermissionOwnerAdapter permissionOwnerAdapter;
18
19    public UserRoleManager() {
20      userAdapter = ServiceLocator.GetUserAdapter();
21      userGroupAdapter = ServiceLocator.GetUserGroupAdapter();
22    }
23
24    #region IUserRoleManager Members
25
26    public ResponseList<User> GetAllUsers() {
27      ResponseList<User> response = new ResponseList<User>();
28
29      List<User> allUsers = new List<User>(userAdapter.GetAllUsers());
30      response.List = allUsers;
31      response.Success = true;
32      response.StatusMessage = ApplicationConstants.RESPONSE_USERROLE_GET_ALL_USERS;
33
34      return response;
35    }
36
37    public ResponseObject<User> AddNewUser(User user) {
38      ResponseObject<User> response = new ResponseObject<User>();
39
40      if (user.PermissionOwnerId != 0) {
41        response.Success = false;
42        response.StatusMessage = ApplicationConstants.RESPONSE_USERROLE_ID_MUST_NOT_BE_SET;
43        return response;
44      }
45      userAdapter.UpdateUser(user);
46      response.Obj = user;
47      response.Success = true;
48      response.StatusMessage = ApplicationConstants.RESPONSE_USERROLE_USER_SUCCESSFULLY_ADDED;
49     
50      return response;
51    }
52
53    public ResponseList<UserGroup> GetAllUserGroups() {
54      ResponseList<UserGroup> response = new ResponseList<UserGroup>();
55
56      response.List = new List<UserGroup>(userGroupAdapter.GetAllUserGroups());
57      response.Success = true;
58      response.StatusMessage = ApplicationConstants.RESPONSE_USERROLE_GET_ALL_USERGROUPS;
59
60      return response;
61    }
62
63    public Response RemoveUser(long userId) {
64      Response response = new Response();
65      User user = userAdapter.GetUserById(userId);
66      if (user == null) {
67        response.Success = false;
68        response.StatusMessage = ApplicationConstants.RESPONSE_USERROLE_USER_DOESNT_EXIST;
69        return response;
70      }
71      userAdapter.DeleteUser(user);
72      response.Success = true;
73      response.StatusMessage = ApplicationConstants.RESPONSE_USERROLE_USER_REMOVED;
74                         
75      return response;
76    }
77
78    public ResponseObject<UserGroup> AddNewUserGroup(UserGroup userGroup) {
79      ResponseObject<UserGroup> response = new ResponseObject<UserGroup>();
80     
81      if (userGroup.PermissionOwnerId != 0) {
82        response.Success = false;
83        response.StatusMessage = ApplicationConstants.RESPONSE_USERROLE_ID_MUST_NOT_BE_SET;
84        return response;
85      }
86      userGroupAdapter.UpdateUserGroup(userGroup);
87      response.Obj = userGroup;
88      response.Success = false;
89      response.StatusMessage = ApplicationConstants.RESPONSE_USERROLE_USERGROUP_ADDED;
90
91      return response;
92    }
93
94    public Response RemoveUserGroup(long groupId) {
95      Response response = new Response();
96
97      UserGroup userGroupFromDb = userGroupAdapter.GetUserGroupById(groupId);
98      if (userGroupFromDb == null) {
99        response.Success = false;
100        response.StatusMessage = ApplicationConstants.RESPONSE_USERROLE_USERGROUP_DOESNT_EXIST;
101        return response;
102      }
103      userGroupAdapter.DeleteUserGroup(userGroupFromDb);
104      response.Success = false;
105      response.StatusMessage = ApplicationConstants.RESPONSE_USERROLE_USERGROUP_ADDED;
106
107      return response;
108    }
109
110    public Response AddUserToGroup(long groupId, long userId) {
111      Response response = new Response();
112
113      User user = userAdapter.GetUserById(userId);
114      if (user == null) {
115        response.Success = false;
116        response.StatusMessage = ApplicationConstants.RESPONSE_USERROLE_USER_DOESNT_EXIST;
117        return response;
118      }
119
120      UserGroup userGroup = userGroupAdapter.GetUserGroupById(groupId);
121      if (userGroup == null) {
122        response.Success = false;
123        response.StatusMessage = ApplicationConstants.RESPONSE_USERROLE_USERGROUP_DOESNT_EXIST;
124        return response;
125      }
126      userGroup.Members.Add(user);
127      userGroupAdapter.UpdateUserGroup(userGroup);
128
129      response.Success = true;
130      response.StatusMessage = ApplicationConstants.RESPONSE_USERROLE_PERMISSIONOWNER_ADDED;
131
132      return response;
133    }
134
135    public Response AddUserGroupToGroup(long groupId, long groupToAddId) {
136      Response response = new Response();
137
138      UserGroup userGroup = userGroupAdapter.GetUserGroupById(groupId);
139      UserGroup userGroupToAdd = userGroupAdapter.GetUserGroupById(groupToAddId);
140
141      if (userGroup == null || userGroupToAdd == null) {
142        response.Success = false;
143        response.StatusMessage = ApplicationConstants.RESPONSE_USERROLE_USERGROUP_DOESNT_EXIST;
144        return response;
145      }
146      userGroup.Members.Add(userGroupToAdd);
147      response.Success = true;
148      response.StatusMessage = ApplicationConstants.RESPONSE_USERROLE_USERGROUP_ADDED_TO_USERGROUP;
149
150      return response;
151    }
152
153    public Response RemovePermissionOwnerFromGroup(long groupId, long permissionOwnerId) {
154      Response response = new Response();
155
156      UserGroup userGroup = userGroupAdapter.GetUserGroupById(groupId);
157      if (userGroup == null) {
158        response.Success = false;
159        response.StatusMessage = ApplicationConstants.RESPONSE_USERROLE_USERGROUP_DOESNT_EXIST;
160        return response;
161      }
162      User user = userAdapter.GetUserById(permissionOwnerId);
163      if (user == null) {
164        response.Success = false;
165        response.StatusMessage = ApplicationConstants.RESPONSE_USERROLE_PERMISSIONOWNER_DOESNT_EXIST;
166        return response;
167      }
168      foreach (PermissionOwner permissionOwner in userGroup.Members) {
169        if (permissionOwner.PermissionOwnerId == permissionOwnerId) {
170          userGroup.Members.Remove(permissionOwner);
171          userGroupAdapter.UpdateUserGroup(userGroup);
172          response.Success = true;
173          response.StatusMessage = ApplicationConstants.RESPONSE_USERROLE_PERMISSIONOWNER_REMOVED;
174          return response;
175        }
176      }
177      response.Success = false;
178      response.StatusMessage = ApplicationConstants.RESPONSE_USERROLE_PERMISSIONOWNER_DOESNT_EXIST;
179     
180      return response;
181    }
182
183    #endregion
184  }
185}
Note: See TracBrowser for help on using the repository browser.