public async Task UpdateAsync(long id, AttributePatchDTO attributePatchDTO) { if (id != attributePatchDTO.Id) { throw new ValidationException("Идентификаторы должны совпадать"); } var attribute = await UnitOfWork.Attributes.FirstOrDefaultNoTrackAsync(id); if (attribute == null) { throw new NotFoundException("Aтрибут не найдет"); } attribute.Name = attributePatchDTO.Name; if (attributePatchDTO.AttributeTypeId != null) { var orderAttributes = await UnitOfWork.OrderAttributes.GetAllByAttributeIdAsync(id); if (orderAttributes.Any() && attribute.AttributeTypeId != attributePatchDTO.AttributeTypeId) { throw new ValidationException("Нельзя изменить тип используемого атрибута"); } var type = await UnitOfWork.AttributeTypes.FirstOrDefaultNoTrackAsync(attributePatchDTO.AttributeTypeId .Value); if (type == null) { throw new NotFoundException("Тип атрибута не найдет"); } attribute.AttributeTypeId = attributePatchDTO.AttributeTypeId.Value; } await UnitOfWork.Attributes.UpdateAsync(attribute); await UnitOfWork.SaveChangesAsync(); }
public async Task <IActionResult> Update(long id, AttributePatchDTO attributePatchDTO) { await _bll.Attributes.UpdateAsync(id, attributePatchDTO); return(NoContent()); }