public async Task <IActionResult> DeleteProductAttributeValue([FromBody] ProductAttributeValueCrudRequest request)
        {
            try
            {
                var response = new ProductAttributeValueCrudResponse();
                var validate = ProductAttributeValueRequestValidator.ValidateModel(request);
                if (validate.IsValid)
                {
                    // Đổi trạng thái về Lock để ẩn thuộc tính
                    request.Status = EnumDefine.StatusEnum.Lock;

                    response = await _productAttributeValueAppService.AddOrUpdate(request);
                }
                else
                {
                    response.SetFail(validate.Errors.Select(p => p.ToString()));
                }
                return(Json(response));
            }
            catch (Exception e)
            {
                _logger.LogError(e, Common.Common.GetMethodName(), request);
                throw;
            }
        }
        public async Task <ProductAttributeValueCrudResponse> AddOrUpdate(ProductAttributeValueCrudRequest request)
        {
            var response = new ProductAttributeValueCrudResponse();

            try
            {
                var user = await _context.GetCurrentCustomer();

                var command = request.ToCommand(user.Id);
                var result  = await _productAttributeValue.SendCommand(command);

                if (result.IsSucess)
                {
                    response.SetSucess();
                }
                else
                {
                    response.SetFail(result.Message);
                }
            }
            catch (Exception e)
            {
                response.SetFail(e);
                _logger.LogError(e, e.Message, request);
            }
            return(response);
        }
        public static ProductAttributeValueCommand ToCommand(this ProductAttributeValueCrudRequest request, string userId)
        {
            if (request == null)
            {
                return(null);
            }

            if (!string.IsNullOrEmpty(request.Id))
            {
                return(new ProductAttributeValueCommand()
                {
                    AttributeValueId = request.Id,
                    AttributeId = request.AttributeId,
                    Value = request.Value,
                    AttributeValueStatus = request.Status,
                    UnitId = request.UnitId,
                    DisplayOrder = request.Order,
                    UpdatedOnUtc = Extensions.GetCurrentDateUtc(),
                    UpdatedUserId = userId
                });
            }
            else
            {
                return(new ProductAttributeValueCommand()
                {
                    AttributeId = request.AttributeId,
                    Value = request.Value,
                    AttributeValueStatus = request.Status,
                    UnitId = request.UnitId,
                    DisplayOrder = request.Order,
                    CreatedOnUtc = Extensions.GetCurrentDateUtc(),
                    CreatedUserId = userId
                });
            }
        }