public IActionResult RemoveSubgroupMember(long id) { var userToSubgroup = new UserToSubgroup { SubgroupId = id }; if (userToSubgroup == null) { _logger.LogError($"Invalid client request: object was null"); return(BadRequest("Invalid client request: object was null")); } var userMail = AuthControllerExtensions.JwtNameExtractor(Request.Headers["Authorization"]); var dbUser = _repository.User.GetUserByEmail(userMail); try { var subgroup = _repository.Subgroup.GetSubgroupById(userToSubgroup.SubgroupId); var allSubgroupMembers = _repository.UserToSubgroup.GetMembersForSubgroup(subgroup).ToList(); var isMember = false; foreach (var mem in allSubgroupMembers) { if (mem.Id.Equals(dbUser.Id)) { isMember = true; break; } } if (isMember) { var allUserToSubgroups = _repository.UserToSubgroup.GetMembershipsForSubgroup(subgroup).ToList(); foreach (var ms in allUserToSubgroups) { if (ms.UserId.Equals(dbUser.Id)) { _repository.UserToSubgroup.DeleteMembership(ms); _repository.Save(); return(Accepted()); } } } return(BadRequest("User is not member of this subgroup")); } catch (Exception e) { _logger.LogError($"Something went wrong inside RemoveSubgroupMember: {e.Message}"); return(StatusCode(500, $"Something went wrong while deleting subgroup member")); } }
public IActionResult CreateSubgroup([FromBody] Subgroup subgroup) { if (subgroup == null) { _logger.LogError("Invalid object: subgroup was null"); return(BadRequest("Invalid client request")); } if (!ModelState.IsValid) { _logger.LogError("Invalid subgroup object sent from client."); return(BadRequest("Invalid subgroup object sent from client.")); } if (!subgroup.ValidateCreateSubgroup()) { return(BadRequest("Sent object was not valid!")); } try { var userMail = AuthControllerExtensions.JwtNameExtractor(Request.Headers["Authorization"]); var dbUser = _repository.User.GetUserByEmail(userMail); var mainGroup = _repository.Group.GetGroupById(subgroup.Main_group); if (mainGroup.AdminUserId.Equals(dbUser.Id)) { _repository.Subgroup.Create(subgroup); _repository.Save(); var adminMemberShip = new UserToSubgroup { UserId = dbUser.Id, SubgroupId = subgroup.Id }; _repository.UserToSubgroup.AddMembership(adminMemberShip); _repository.Save(); return(Ok(_repository.Subgroup.GetSubgroupById(subgroup.Id))); } return(BadRequest("Only admin can add a subgroup to a group!")); } catch (Exception e) { _logger.LogError($"Something went wrong inside CreateSubgroup: {e.Message}"); return(StatusCode(500, "Something went wrong during creating subgroup")); } }
public IActionResult AddMembers([FromBody] UserToSubgroup userToSubgroup) { if (userToSubgroup == null) { _logger.LogError($"Invalid client request: object was null"); return(BadRequest("Invalid client request: object was null")); } if (!ModelState.IsValid) { _logger.LogError($"Invalid client request: object was invalid"); return(BadRequest("Invalid client request: object was invalid")); } try { var userMail = AuthControllerExtensions.JwtNameExtractor(Request.Headers["Authorization"]); var dbUser = _repository.User.GetUserByEmail(userMail); var subgroup = _repository.Subgroup.GetSubgroupById(userToSubgroup.SubgroupId); if (subgroup == null) { _logger.LogError("The subgroup was not found!"); return(BadRequest("The subgroup was not found!")); } var mainGroup = _repository.Group.GetGroupById(subgroup.Main_group); var allMainGroupMembers = _repository.UserToGroup.GetMembersForGroup(mainGroup); var userIsMemberOfGroup = false; foreach (var user in allMainGroupMembers) { if (user.Id.Equals(dbUser.Id)) { userIsMemberOfGroup = true; break; } } if (!userIsMemberOfGroup) { return(BadRequest("User is not member of group so user cant be member of subgroup")); } var allSubgroupMembers = _repository.UserToSubgroup.GetMembersForSubgroup(subgroup); var userIsMemberOfSubgroup = false; foreach (var user in allSubgroupMembers) { if (user.Id.Equals(dbUser.Id)) { userIsMemberOfSubgroup = true; break; } } if (userIsMemberOfSubgroup) { return(BadRequest("User is already member of subgroup")); } UserToSubgroup _userToSubgroup = new UserToSubgroup() { SubgroupId = subgroup.Id, UserId = dbUser.Id }; _repository.UserToSubgroup.Create(_userToSubgroup); _repository.Save(); return(Accepted()); } catch (Exception e) { _logger.LogError($"Something went wrong inside AddMembers {e.Message}"); return(StatusCode(500, $"Something went wrong while saving new subgroup member")); } }