private DeployProjectRoleAssignments UpdateAssignments(DeployProjectRoleAssignments assignments, DeployProjectRole role) { assignments = assignments??new DeployProjectRoleAssignments(); //if(string.IsNullOrEmpty(assignments.Id)) //{ // assignments.Id = Guid.NewGuid().ToString(); // assignments.CreatedByUserName = _userIdentity.UserName; // assignments.CreatedDateTimeUtc = DateTime.UtcNow; //} //assignments.ProjectId = role.ProjectId; //assignments.ProjectRoleId = role.Id; //assignments.UpdatedByUserName = _userIdentity.UserName; //assignments.UpdateDateTimeUtc = DateTime.UtcNow; return assignments; }
private DeployProjectRoleAssignments ValidateAssignments(DeployProjectRoleAssignments assignments) { assignments = assignments ?? new DeployProjectRoleAssignments(); var userNamesToRemove = new List<string>(); if(assignments.UserNameList != null) { foreach(var userName in assignments.UserNameList) { if(!_membershipRepository.UserNameExists(userName)) { assignments.UserNameList.Remove(userName); } } } foreach(var userName in userNamesToRemove) { assignments.UserNameList.Remove(userName); } return assignments; }
public DeployProjectRole() { this.Permissions = new DeployProjectRolePermissions(); this.Assignments = new DeployProjectRoleAssignments(); }
public DeployProjectRole UpdateRole(string roleId, string projectId, string roleName, DeployProjectRolePermissions permissions, DeployProjectRoleAssignments assignments, bool everyoneRoleIndicator) { var project = _projectRepository.GetProject(projectId); permissions = this.ValidatePermissions(permissions, roleId, project); assignments = this.ValidateAssignments(assignments); return _permissionRepository.UpdateProjectRole(roleId, projectId, project.ProjectName, roleName, permissions, assignments, everyoneRoleIndicator); }
public DeployProjectRole UpdateProjectRole(string roleId, string projectId, string projectName, string roleName, DeployProjectRolePermissions permissions, DeployProjectRoleAssignments assignments, bool everyoneRoleIndicator) { if (string.IsNullOrEmpty(projectId)) { throw new ArgumentNullException("projectId"); } if (string.IsNullOrEmpty(projectName)) { throw new ArgumentNullException("projectName"); } if (string.IsNullOrEmpty(roleName)) { throw new ArgumentNullException("roleName"); } permissions = permissions ?? new DeployProjectRolePermissions(); assignments = assignments ?? new DeployProjectRoleAssignments(); using(var db = _sqlConnectionInfo.GetDB()) { var count = db.ExecuteScalar<int>("SELECT COUNT(*) FROM DeployProjectRole WHERE ID<>@0 AND ProjectID=@1 AND RoleName=@2", roleId, projectId, roleName); if(count != 0) { throw new ArgumentException(string.Format("DeployProjectRole already exists for Project {0} and RoleName {1}", projectId, roleName)); } } var dbItem = this.GetDBItem(roleId); dbItem.ProjectId = projectId; dbItem.ProjectName = projectName; dbItem.RoleName = roleName; dbItem.EveryoneRoleIndicator = everyoneRoleIndicator; dbItem.PermissionsJson = permissions.ToJson(); dbItem.SetUpdatedFields(_userIdentity.UserName); var itemsToAdd = new List<string>(); var itemsToDelete = new List<SqlDeployProjectRoleUser>(); foreach(var userName in assignments.UserNameList) { if(!dbItem.UserList.Any(i=>i.UserName.Equals(userName))) { itemsToAdd.Add(userName); } } foreach(var item in dbItem.UserList) { if(!assignments.UserNameList.Contains(item.UserName, StringComparer.CurrentCultureIgnoreCase)) { itemsToDelete.Add(item); } } using(var db = _sqlConnectionInfo.GetDB()) { db.Update("DeployProjectRole", "ID", dbItem, dbItem.Id); foreach(var userName in itemsToAdd) { var newItem = new SqlDeployProjectRoleUser { ID = Guid.NewGuid().ToString(), DeployProjectRoleID = dbItem.Id, UserName = userName }; db.Insert("DeployProjectRoleUser", "ID", false, newItem); } foreach(var item in itemsToDelete) { db.Execute("DELETE FROM DeployProjectRoleUser WHERE ID=@0", item.ID); } } return this.GetProjectRole(roleId); }
public DeployProjectRole CreateProjectRole(string projectId, string projectName, string roleName, DeployProjectRolePermissions permissions, DeployProjectRoleAssignments assignments, bool everyoneRoleIndicator) { if (string.IsNullOrEmpty(projectId)) { throw new ArgumentNullException("projectId"); } if (string.IsNullOrEmpty(projectName)) { throw new ArgumentNullException("projectName"); } if (string.IsNullOrEmpty(roleName)) { throw new ArgumentNullException("roleName"); } using (var db = _sqlConnectionInfo.GetDB()) { var count = db.ExecuteScalar<int>("SELECT COUNT(*) FROM DeployProjectRole WHERE ProjectID=@0 AND RoleName=@1", projectId, roleName); if (count != 0) { throw new ArgumentException(string.Format("DeployProjectRole already exists for Project {0} and RoleName {1}", projectId, roleName)); } } permissions = permissions ?? new DeployProjectRolePermissions(); assignments = assignments ?? new DeployProjectRoleAssignments(); var dbItem = new SqlDeployProjectRole { Id = Guid.NewGuid().ToString(), ProjectId = projectId, ProjectName = projectName, RoleName = roleName, PermissionsJson = permissions.ToJson(), EveryoneRoleIndicator = everyoneRoleIndicator }; dbItem.UserList = assignments.UserNameList.Select(i=> new SqlDeployProjectRoleUser { ID = Guid.NewGuid().ToString(), DeployProjectRoleID = dbItem.Id, UserName = i }).ToList(); dbItem.SetCreatedFields(_userIdentity.UserName); using(var db = _sqlConnectionInfo.GetDB()) { db.Insert("DeployProjectRole", "ID", false, dbItem); foreach(var item in dbItem.UserList) { db.Insert("DeployProjectRoleUser", "ID", false, item); } } return this.GetProjectRole(dbItem.Id); }
public DeployProjectRole UpdateProjectRole(string roleId, string projectId, string projectName, string roleName, DeployProjectRolePermissions permissions, DeployProjectRoleAssignments assignments, bool everyoneRoleIndicator) { if(string.IsNullOrEmpty(projectId)) { throw new ArgumentNullException("projectId"); } if(string.IsNullOrEmpty(projectName)) { throw new ArgumentNullException("projectName"); } if(string.IsNullOrEmpty(roleName)) { throw new ArgumentNullException("roleName"); } var existingItem = _documentSession.QueryNoCacheNotStale<DeployProjectRole>().Any(i => i.Id != roleId && i.ProjectId == projectId && i.RoleName == roleName); if (existingItem) { throw new ArgumentException(string.Format("DeployProjectRole already exists for Project {0} and RoleName {1}", projectId, roleName)); } var item = this.GetProjectRole(roleId); item.ProjectId = projectId; item.ProjectName = projectName; item.RoleName = roleName; item.Permissions = this.UpdatePermissions(permissions, item); item.Assignments = this.UpdateAssignments(assignments, item); item.UpdatedByUserName = _userIdentity.UserName; item.UpdatedDateTimeUtc = DateTime.UtcNow; item.EveryoneRoleIndicator = everyoneRoleIndicator; _documentSession.SaveChanges(); return item; }
public DeployProjectRole CreateProjectRole(string projectId, string projectName, string roleName, DeployProjectRolePermissions permissions, DeployProjectRoleAssignments assignments, bool everyoneRoleIndicator) { if(string.IsNullOrEmpty(projectId)) { throw new ArgumentNullException("projectId"); } if(string.IsNullOrEmpty(projectName)) { throw new ArgumentNullException("projectName"); } if(string.IsNullOrEmpty(roleName)) { throw new ArgumentNullException("roleName"); } var existingItem = _documentSession.QueryNoCacheNotStale<DeployProjectRole>().Any(i=>i.ProjectId == projectId && i.RoleName == roleName); if(existingItem) { throw new ArgumentException(string.Format("DeployProjectRole already exists for Project {0} and RoleName {1}", projectId, roleName)); } var newItem = new DeployProjectRole { Id = Guid.NewGuid().ToString(), ProjectId = projectId, ProjectName = projectName, RoleName = roleName, EveryoneRoleIndicator = everyoneRoleIndicator, CreatedByUserName = _userIdentity.UserName, CreatedDateTimeUtc = DateTime.UtcNow, UpdatedByUserName = _userIdentity.UserName, UpdatedDateTimeUtc = DateTime.UtcNow }; newItem.Permissions = this.UpdatePermissions(permissions, newItem); newItem.Assignments = this.UpdateAssignments(assignments, newItem); _documentSession.Store(newItem); _documentSession.SaveChanges(); return newItem; }