示例#1
0
        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();
        }
示例#2
0
        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);
        }
示例#3
0
        public async Task <IActionResult> Update(long id, AttributeTypePatchDTO attributeTypePatchDTO)
        {
            await _bll.AttributeTypes.UpdateAsync(id, attributeTypePatchDTO);

            return(NoContent());
        }