public async Task <IActionResult> AddMovementStock([FromQuery] AddMovementStockDto newmovementstock) { return(Ok(await _stock.AddMovementStock(newmovementstock))); }
public async Task <ServiceResponse <List <GetMovementStockDto> > > AddMovementStock(AddMovementStockDto newMovementStock) { try { //validate product var prod = _dBContext.Products.FirstOrDefault(x => x.Id == newMovementStock.ProductId); if (prod is null) { return(ResponseResult.Failure <List <GetMovementStockDto> >($"Product Id {newMovementStock.ProductId} not found")); } //validate movement type var moveType = _dBContext.MovementTypes.FirstOrDefault(x => x.Id == newMovementStock.MovementTypeId); if (moveType is null) { return(ResponseResult.Failure <List <GetMovementStockDto> >($"Movement Type {newMovementStock.MovementTypeId} not found")); } //Validate product StockCount <= new quantity if (moveType.Id == 2) { if (newMovementStock.Quantity > prod.StockCount) { return(ResponseResult.Failure <List <GetMovementStockDto> >($"New quantity product less than quantity in stock.")); } } Models.MovementStock stockDb = new Models.MovementStock(); stockDb.ProductId = newMovementStock.ProductId; stockDb.MovementTypeId = newMovementStock.MovementTypeId; stockDb.Quantity = newMovementStock.Quantity; stockDb.QuantityOld = prod.StockCount; stockDb.CreateById = Guid.Parse(GetUserId()); stockDb.CreateDate = Now(); stockDb.ExpiredDate = Now(); stockDb.Remark = newMovementStock.Remark; _dBContext.MovementStocks.Add(stockDb); await _dBContext.SaveChangesAsync(); //Update on Product Table prod.StockCount = GetTotalQuantity(moveType.Id, prod.StockCount, newMovementStock.Quantity); _dBContext.Products.Update(prod); await _dBContext.SaveChangesAsync(); //_dBContext.SaveChanges(); // var gStock = await _dBContext.MovementStocks.Include(x => x.Product). // Include(x => x.MovementType). // AsNoTracking().ToListAsync(); // List<GetMovementStockDto> stockDto = _mapper.Map<List<GetMovementStockDto>>(gStock); return(ResponseResult.Success(await GetMovementStockDtosList())); } catch (System.Exception ex) { //Write log _log.LogError($"AddMovementStock is error detail: {ex.Message}"); //Return return(ResponseResult.Failure <List <GetMovementStockDto> >($"AddMovementStock error detail: {ex.Message}")); } }