public async Task <object> CreateGroup([FromBody] CcGroup request) { request.Owner = _userService.CurrentUser.Id; var sameNameCount = await _dbService.Groups .CountDocumentsAsync(i => i.Name == request.Name && i.Owner == request.Owner); if (sameNameCount > 0) { return(new { code = 403, message = "Groups with this name already exists" }); } var newGroup = CheckGroup(request); _dbService.Groups.Add(newGroup); return(new { code = 200 }); }
private CcGroup CheckGroup(CcGroup request) { var student = _userService.CurrentUser.Id; var newGroup = new CcGroup { Id = request.Id == ObjectId.Empty ? ObjectId.GenerateNewId() : request.Id, Name = request.Name, Owner = student, Status = CcUserGroupStatus.NotConfirmed, Users = request.Users .Where(i => !string.IsNullOrWhiteSpace(i.Name)) .Concat(new CcUserGroup[] { new CcUserGroup { Name = student, Status = CcUserGroupStatus.Confirmed } }) .GroupBy(i => i.Name) .Select(i => i.First()) .ToList() }; return(newGroup); }
public async Task <object> EditGroup([FromBody] CcGroup request) { var student = _userService.CurrentUser.Id; var id = ObjectId.Parse(request.Oid); var group = await _dbService.Groups.SingleOrDefaultAsync(id); if (group == null) { return(new { code = 400 }); } if (group.Owner != student) { return(new { code = 500 }); } request.Id = id; var newGroup = CheckGroup(request); await _dbService.Groups.UpdateDocumentAsync(newGroup); return(new { code = 200 }); }