public async Task UpdateAsync(long id, AttributeTypePatchDTO attributeTypePatchDTO) { var attributeType = await ValidateAndReturnAttributeTypeAsync(id, attributeTypePatchDTO); attributeType.Name = attributeTypePatchDTO.Name; attributeType.DefaultCustomValue = attributeTypePatchDTO.DefaultCustomValue; attributeType.DefaultUnitId = attributeTypePatchDTO.DefaultUnitId; attributeType.DefaultValueId = attributeTypePatchDTO.DefaultValueId; attributeType.DataType = (DAL.App.DTO.Enums.AttributeDataType)attributeTypePatchDTO.DataType; foreach (var valuePatchDTO in attributeTypePatchDTO.Values.OrderBy(dto => dto.PatchOption)) { await HandleValuePatch(valuePatchDTO, attributeType); } foreach (var unitPatchDTO in attributeTypePatchDTO.Units.OrderBy(dto => dto.PatchOption)) { await HandleUnitPatch(unitPatchDTO, attributeType); } await UnitOfWork.AttributeTypes.UpdateAsync(attributeType); await UnitOfWork.SaveChangesAsync(); }
private async Task <AttributeType> ValidateAndReturnAttributeTypeAsync(long id, AttributeTypePatchDTO attributeTypePatchDTO) { if (id != attributeTypePatchDTO.Id) { throw new ValidationException("Идентификаторы должны совпадать"); } var attributeType = await UnitOfWork.AttributeTypes.FirstOrDefaultNoTrackAsync(id); if (attributeType == null) { throw new NotFoundException("Тип атрибута не найдет"); } if (attributeType.SystemicType) { throw new NotFoundException("Нельзя менять системный атрибут"); } if (attributeTypePatchDTO.DefaultCustomValue == null && !attributeType.UsesDefinedValues) { throw new ValidationException("У атрибута должно быть значение по умолчанию"); } if (attributeType.UsesDefinedValues && await UnitOfWork.AttributeTypeValues.FirstOrDefaultNoTrackAsync(attributeTypePatchDTO.DefaultValueId) == null) { throw new ValidationException("Неверный идентификатор значения по умолчанию"); } if (attributeType.UsesDefinedUnits && await UnitOfWork.AttributeTypeUnits.FirstOrDefaultNoTrackAsync(attributeTypePatchDTO.DefaultUnitId) == null) { throw new ValidationException("Неверный идентификатор единицы измерения по умолчанию"); } return(attributeType); }
public async Task <IActionResult> Update(long id, AttributeTypePatchDTO attributeTypePatchDTO) { await _bll.AttributeTypes.UpdateAsync(id, attributeTypePatchDTO); return(NoContent()); }