public async Task <IActionResult> GetMembershipByMemberUserName(Guid groupId, string memberUserName) { User loggedOnUser = await _identityBusiness.GetUserAsync(User); var loggedOnUserIsGroupOwner = await _taskBookBusiness.IsUserGroupOwner(loggedOnUser.Id, groupId); if (!loggedOnUserIsGroupOwner) { return(NotFound()); } User memberUser = await _identityBusiness.FindByNameAsync(memberUserName); if (memberUser == null) { return(NotFound()); } UserGroup membership = await _taskBookBusiness.GetGroupMembership(memberUser.Id, groupId); if (membership == null) { return(NotFound()); } var viewModel = _mapper.Map <GroupMembershipViewModel>(membership); return(Ok(viewModel)); }
public async Task <IActionResult> UpdateUserGroup(Guid groupId, [FromBody] UpdateUserGroupParameters parameters) { if (parameters == null) { return(BadRequest()); } User loggedOnUser = await _identityBusiness.GetUserAsync(User); if (!ModelState.IsValid) { return(UnprocessableEntity(ModelState)); } UserGroup groupToUpdateGroup = await _taskBookBusiness.GetUserGroupByGroupId(loggedOnUser.Id, groupId); if (groupToUpdateGroup == null) { return(NotFound()); } if (groupToUpdateGroup.RelationType != UserGroupRelationType.Owner) { return(Forbid()); } UserGroup updatedGroup = await _taskBookBusiness.UpdateGroup(loggedOnUser.Id, groupId, parameters.GroupName, parameters.IsActive); var viewModel = _mapper.Map <UserGroupViewModel>(updatedGroup); return(Ok(viewModel)); }
public async Task <IActionResult> DeleteMembership(Guid groupId, string memberUserName) { User loggedOnUser = await _identityBusiness.GetUserAsync(User); var loggedOnUserIsGroupOwner = await _taskBookBusiness.IsUserGroupOwner(loggedOnUser.Id, groupId); if (!loggedOnUserIsGroupOwner) { return(NotFound()); } User memberUser = await _identityBusiness.FindByNameAsync(memberUserName); if (memberUser == null) { return(NotFound()); } UserGroup membership = await _taskBookBusiness.GetGroupMembership(memberUser.Id, groupId); if (membership == null) { return(NotFound()); } if (membership.RelationType != UserGroupRelationType.Member) { return(Forbid()); } await _taskBookBusiness.DeleteGroupMembership(memberUser.Id, groupId); return(NoContent()); }
public async Task <IActionResult> GetUserGroupById(Guid groupId) { User loggedOnUser = await _identityBusiness.GetUserAsync(User); UserGroup userGroup = await _taskBookBusiness.GetUserGroupByGroupId(loggedOnUser.Id, groupId); if (userGroup == null) { return(NotFound()); } var viewModel = _mapper.Map <UserGroupViewModel>(userGroup); return(Ok(viewModel)); }
public async Task <IActionResult> CreateUserGroup([FromBody] CreateUserGroupParameters parameters) { if (parameters == null) { return(BadRequest()); } User loggedOnUser = await _identityBusiness.GetUserAsync(User); if (!ModelState.IsValid) { return(UnprocessableEntity(ModelState)); } UserGroup createdGroup = await _taskBookBusiness.CreateUserGroup(loggedOnUser.Id, parameters.GroupName, parameters.IsActive); var viewModel = _mapper.Map <UserGroupViewModel>(createdGroup); return(CreatedAtRoute(nameof(GetUserGroupById), new { viewModel.GroupId }, viewModel)); }
public async Task <IActionResult> DeleteUserGroup(Guid groupId) { User loggedOnUser = await _identityBusiness.GetUserAsync(User); UserGroup groupToDelete = await _taskBookBusiness.GetUserGroupByGroupId(loggedOnUser.Id, groupId); if (groupToDelete == null) { return(NotFound()); } if (groupToDelete.RelationType != UserGroupRelationType.Owner) { return(Forbid()); } await _taskBookBusiness.DeleteGroup(groupId); return(NoContent()); }
public async Task <IActionResult> CreateMembership(Guid groupId, [FromBody] CreateGroupMembershipParameters parameters) { if (parameters == null) { return(BadRequest()); } User loggedOnUser = await _identityBusiness.GetUserAsync(User); var loggedOnUserIsGroupOwner = await _taskBookBusiness.IsUserGroupOwner(loggedOnUser.Id, groupId); if (!loggedOnUserIsGroupOwner) { return(NotFound()); } if (!ModelState.IsValid) { return(UnprocessableEntity(ModelState)); } User memberUser = await _identityBusiness.FindByNameAsync(parameters.UserName); if (memberUser == null) { return(NotFound()); } UserGroup existingMembership = await _taskBookBusiness.GetGroupMembership(memberUser.Id, groupId); if (existingMembership != null) { return(Conflict($"'{memberUser.UserName}' is already member of '{existingMembership.Group.Name}'.")); } UserGroup membership = await _taskBookBusiness.CrateGroupMembership(memberUser.Id, groupId); var viewModel = _mapper.Map <GroupMembershipViewModel>(membership); return(CreatedAtRoute(nameof(GetMembershipByMemberUserName), new { memberUserName = memberUser.UserName }, viewModel)); }