Ejemplo n.º 1
0
        public async Task <ChangeProductFrozenStatusResponse> ChangeFrozenStatusAsync(string productId, ChangeProductFrozenStatusRequest request)
        {
            var freezeInfo = _convertService.Convert <ProductFreezeInfoContract, ProductFreezeInfo>(request.FreezeInfo);

            var correlationId = this.TryGetCorrelationId();

            if (!request.IsFrozen && request.FreezeInfo != null)
            {
                return(new ChangeProductFrozenStatusResponse()
                {
                    ErrorCode = ProductsErrorCodesContract.CanOnlySetFreezeInfoForFrozenProduct,
                });
            }

            var result = await _productsService.ChangeFrozenStatus(productId, request.IsFrozen, request.IsForceFreeze(), freezeInfo, request.UserName, correlationId);

            var response = new ChangeProductFrozenStatusResponse();

            if (result.IsFailed)
            {
                response.ErrorCode =
                    _convertService.Convert <ProductsErrorCodes, ProductsErrorCodesContract>(
                        result.Error.GetValueOrDefault());
            }
            else
            {
                response.Product = _convertService.Convert <Product, ProductContract>(result.Value);
            }

            return(response);
        }
Ejemplo n.º 2
0
        public async Task <ChangeMultipleProductFrozenStatusResponse> ChangeFrozenStatusMultipleAsync(
            ChangeMultipleProductFrozenStatusRequest request)
        {
            var freezeInfo =
                _convertService.Convert <ProductFreezeInfoContract, ProductFreezeInfo>(request.FreezeParameters
                                                                                       .FreezeInfo);

            var correlationId = this.TryGetCorrelationId();

            if (!request.FreezeParameters.IsFrozen && request.FreezeParameters.FreezeInfo != null)
            {
                return(new ChangeMultipleProductFrozenStatusResponse
                {
                    ErrorCode = ProductsErrorCodesContract.CanOnlySetFreezeInfoForFrozenProduct,
                    Results = new Dictionary <string, ChangeProductFrozenStatusResponse>()
                });
            }

            var response = new ChangeMultipleProductFrozenStatusResponse
            {
                Results = new Dictionary <string, ChangeProductFrozenStatusResponse>()
            };

            foreach (var requestProductId in request.ProductIds)
            {
                var result = await _productsService.ChangeFrozenStatus(requestProductId,
                                                                       request.FreezeParameters.IsFrozen,
                                                                       request.FreezeParameters.IsForceFreeze(),
                                                                       freezeInfo,
                                                                       request.FreezeParameters.UserName,
                                                                       correlationId);

                var singleProductResponse = new ChangeProductFrozenStatusResponse();

                if (result.IsFailed)
                {
                    singleProductResponse.ErrorCode =
                        _convertService.Convert <ProductsErrorCodes, ProductsErrorCodesContract>(
                            result.Error.GetValueOrDefault());
                }
                else
                {
                    singleProductResponse.Product = _convertService.Convert <Product, ProductContract>(result.Value);
                }

                response.Results.Add(requestProductId, singleProductResponse);
            }

            return(response);
        }