public async ValueTask <(bool isSuccess, string error)> DeleteProduct(string categoryId, string subcategoryId, string productId) { var product = await _repository.GetProduct(categoryId, subcategoryId, productId); if (product is null) { return( false, $"Что-то пошло не так, не удалось найти товар.\n\tКатегория: {categoryId}\n\tПодкатегория: {subcategoryId}\n\tТовар: {productId}" ); } foreach (var photo in product.Photos) { await _photoSaver.RemoveFileFromRepository(photo, updateDB : false); } await _repository.DeleteProduct(product); return(true, null); }
public async Task <IActionResult> GetProduct([FromQuery] string categoryId, [FromQuery] string subcategoryId, [FromQuery] string productId) { if (String.IsNullOrEmpty(categoryId) || String.IsNullOrEmpty(subcategoryId) || String.IsNullOrEmpty(productId)) { var msg = "Что-то пошло не так, необходимо выбрать категорию, подкатегорию и товар."; _logger.LogError(msg); return(BadRequest(msg)); } var product = await _repository.GetProduct(categoryId, subcategoryId, productId); if (product == null) { var msg = $"Что-то пошло не так, не удалось найти выбранный товар. Категория: \"{categoryId}\". Подкатегория: \"{subcategoryId}\". Товар: \"{productId}\"\nREQUEST-PATH: {Request.Path}{Request.QueryString}"; _logger.LogError(msg); return(BadRequest(msg)); } return(Success(product)); }
public async Task <IActionResult> AddOrUpdate([FromForm] ProductDTO productDTO) { const string API_LOCATE = CONTROLLER_LOCATE + ".AddOrUpdate"; var error = ERROR; try { bool isSuccess; if ( String.IsNullOrEmpty(productDTO?.CategoryId) || String.IsNullOrEmpty(productDTO?.SubcategoryId) || String.IsNullOrEmpty(productDTO?.ProductId) ) { (isSuccess, error) = await _service.AddProduct(productDTO); } else { var oldProduct = await _repository.GetProduct(productDTO.CategoryId, productDTO.SubcategoryId, productDTO.ProductId); if (oldProduct is null) { return(LogBadRequest( _logger, API_LOCATE, customError: $"Что-то пошло не так, не удалось найти товар.\n\tКатегория: {productDTO.CategoryId}\n\tПодкатегория: {productDTO.SubcategoryId}\n\tТовар: {productDTO.ProductId}" )); } if ( productDTO.Alias.TransformToId() != oldProduct.Alias.TransformToId() || productDTO.CategoryId != productDTO.NewCategoryId || productDTO.SubcategoryId != productDTO.NewSubcategoryId ) { (isSuccess, error) = await _service.FullUpdateProduct(productDTO, oldProduct); } else { (isSuccess, error) = await _service.UpdateProduct(productDTO, oldProduct); } } if (!isSuccess) { return(LogBadRequest( _logger, API_LOCATE, customError: error )); } return(Success(isSuccess)); } catch (Exception ex) { return(LogBadRequest( _logger, API_LOCATE, exception: ex, customError: error )); } }