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>()); }
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>()); }
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))); }