예제 #1
0
        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();
        }
예제 #2
0
        public async Task <IActionResult> Update(long id, AttributePatchDTO attributePatchDTO)
        {
            await _bll.Attributes.UpdateAsync(id, attributePatchDTO);

            return(NoContent());
        }