Esempio n. 1
0
        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 });
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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 });
        }