/// <summary> /// Updates the existing tag. /// </summary> public async Task UpdateAsync(int id, TagVM vm) { await ValidateAsync(vm, id); var tag = await _db.Tags.GetAsync(x => x.Id == id, $"Tag #{id} does not exist."); _mapper.Map(vm, tag); await _db.SaveChangesAsync(); }
/// <summary> /// Creates a new tag. /// </summary> public async Task <TagVM> CreateAsync(TagVM vm) { await ValidateAsync(vm, null); var tag = _mapper.Map <Tag>(vm); _db.Tags.Add(tag); await _db.SaveChangesAsync(); return(_mapper.Map <TagVM>(tag)); }
/// <summary> /// Ensures that the request is correct. /// </summary> private async Task ValidateAsync(TagVM vm, int?id) { if (string.IsNullOrEmpty(vm.Caption)) { throw new OperationException($"Required field {nameof(vm.Caption)} is not set."); } if (!Enum.IsDefined(typeof(TagType), vm.Type)) { throw new OperationException($"Tag type '{vm.Type}' is unknown."); } if (await _db.Tags.AnyAsync(x => x.Caption.ToLower() == vm.Caption.ToLower() && x.Id != id)) { throw new OperationException($"Tag '{vm.Caption}' already exists."); } }