public async Task <IActionResult> Create([FromBody] CreateGroup model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var dto = _mapper.Map <DtoGroup>(model); var result = await _groupService.CreateAsync(dto, UserId); if (!result.Succeeded) { return(UnprocessableEntity(result.Errors)); } var newDto = result.Result; // TODO make GroupRole not by Id but by name await _groupMemberService.CreateAsync(new DtoGroupMember { GroupId = newDto.Id, UserId = UserId, GroupRoleId = 3 }, UserId); // TODO Error checking return(CreatedAtAction(nameof(GetById), new { id = newDto.Id }, newDto)); }
public async Task <IHttpActionResult> Create(GroupCreateModel createModel) { if (!_groupService.CanCreate()) { return(StatusCode(HttpStatusCode.Forbidden)); } var currentMemberId = await _memberService.GetCurrentMemberIdAsync(); var groupId = await _groupMemberService.CreateAsync(createModel, new GroupMemberSubscriptionModel { IsAdmin = true, MemberId = currentMemberId, }); return(Ok(_groupLinkProvider.GetGroupRoomLink(groupId))); }
public async Task <IActionResult> Create([FromBody] ViewUser model, [FromRoute] int groupId) { // TODO Error checking var userResult = await _groupMemberService.GetAllByGroupAndUserId(groupId, UserId); var user = userResult.Result; var userPolicy = await _groupRoleService.GetPoliceNameById(user.GroupRoleId); if (userPolicy.Result != GroupPoliceName.CanAddAndDeleteUser && userPolicy.Result != GroupPoliceName.CanEverything) { return(Unauthorized("You cannot do it in this group")); } var groupResult = await _groupService.GetById(groupId); if (!groupResult.Succeeded) { return(BadRequest(groupResult.Errors)); } //Todo Error checking var roleId = await _groupRoleService.GeIdByName(model.userRole); // TODO use UserService to find Id by Name var dto = new DtoGroupMember { Id = 0, GroupId = groupId, UserId = model.Id, GroupRoleId = roleId.Result, }; var dtoResult = await _groupMemberService.CreateAsync(dto, UserId); if (!dtoResult.Succeeded) { return(BadRequest(dtoResult.Errors)); } return(NoContent()); }