Esempio n. 1
0
        public async Task <WordGroupDto> CreateWordGroup(WordGroupDto wordGroup)
        {
            var dbWordGroup = await _db.WordGroups.FirstOrDefaultAsync(w => w.Name == wordGroup.Name);

            if (dbWordGroup != null)
            {
                throw new ApiException("WordGroup with this name already exists");
            }

            dbWordGroup = wordGroup.ToEntity <WordGroup, WordGroupDto>();
            _db.WordGroups.Add(dbWordGroup);
            await _db.SaveChangesAsync();

            return(dbWordGroup.ToEntityDto <WordGroupDto, WordGroup>());
        }
Esempio n. 2
0
        public async Task <WordGroupDto> DeleteWordGroup(WordGroupDto wordGroup)
        {
            var dbWordGroup = await _db.WordGroups.FirstOrDefaultAsync(x => x.Id == wordGroup.Id);

            if (dbWordGroup == null)
            {
                throw new ApiException("WordGroup not found");
            }

            // removing all references from children
            await _db.Words.Where(x => x.WordGroupId == dbWordGroup.Id).ForEachAsync(item => item.WordGroupId = null);

            await _db.SaveChangesAsync();

            _db.WordGroups.Remove(dbWordGroup);
            await _db.SaveChangesAsync();

            return(dbWordGroup.ToEntityDto <WordGroupDto, WordGroup>());
        }
Esempio n. 3
0
        public async Task <WordGroupDto> UpdateWordGroup(WordGroupDto wordGroup)
        {
            var dbWordGroup = await _db.WordGroups.FirstOrDefaultAsync(x => x.Id == wordGroup.Id);

            if (dbWordGroup == null)
            {
                throw new ApiException("WordGroup not found");
            }
            if (await _db.WordGroups.AnyAsync(x => x.Id != wordGroup.Id && x.Name == wordGroup.Name))
            {
                throw new ApiException("WordGroup with this name already exists");
            }

            dbWordGroup.Name        = wordGroup.Name;
            dbWordGroup.Description = wordGroup.Description;
            _db.WordGroups.Update(dbWordGroup);
            await _db.SaveChangesAsync();

            return(dbWordGroup.ToEntityDto <WordGroupDto, WordGroup>());
        }
 public async Task <IActionResult> Delete([FromBody] WordGroupDto input)
 {
     return(new JsonResult(await _wordGroupService.DeleteWordGroup(input)));
 }