public async Task <ServiceResponse <RemoveWarehouseItemDto> > RemoveItemFromTransactionAsync(int warehouseTransactionId, RemoveWarehouseItemDto dto) { var response = new ServiceResponse <RemoveWarehouseItemDto>(); try { Expression <Func <WarehouseTransactionItem, bool> > condition = x => dto.ProductId.HasValue ? x.ProductId == dto.ProductId : x.Id == dto.WarehouseTransactionItemId; var dbTransactionItem = await _context.WarehouseTransactionItems .Include(x => x.WarehouseTransaction) .FirstOrDefaultAsync(condition); if (dbTransactionItem == null) { throw new WarehouseTransactionItemNotFoundException(); } if (!dbTransactionItem.WarehouseTransaction?.CanModify() ?? true) { throw new WarehouseTransactionModifiedException(); } dbTransactionItem.IsDeleted = true; _context.WarehouseTransactionItems.Update(dbTransactionItem); await _context.SaveChangeWithValidationAsync(); response.Data = dto; return(response); } catch (BaseServiceException ex) { response.Success = false; response.Code = ex.Code; response.Message = ex.ErrorMessage; _logger.LogError(ex.Message, ex.StackTrace); return(response); } catch (Exception ex) { response.Success = false; response.Code = ErrorCode.WAREHOUSE_TRANSACTION_ITEM_UNEXPECTED_ERROR; response.Message = ex.Message; _logger.LogError(ex.Message, ex.StackTrace); return(response); } }
public async Task <IActionResult> RemoveItemFromTransaction([FromRoute] int warehouseTransactionId, [FromBody] RemoveWarehouseItemDto dto) { var res = await _service.RemoveItemFromTransactionAsync(warehouseTransactionId, dto); if (res.Success) { return(Ok(res)); } return(BadRequest(res)); }