public async Task <ServiceResponse <GetMovementStockDto> > GetMovementStockById(int MovementStockId)
        {
            Models.MovementStock stock;
            try
            {
                //FirstOrDefaultAsync(x=> x.Id == productId) >>>> select with condition
                stock = await _dBContext.MovementStocks.Include(x => x.Product).
                        Include(x => x.MovementType).
                        FirstOrDefaultAsync(x => x.Id == MovementStockId);
            }
            catch (System.Exception ex)
            {
                //Write log
                _log.LogError($"Get MovementStockById({MovementStockId}) is error detail: {ex.Message}");
                //Return
                return(ResponseResult.Failure <GetMovementStockDto>($"{MovementStockId} is error to find"));
            }

            //Validate if null
            if (stock != null)
            {
                //mapping and return result
                GetMovementStockDto stockDto = _mapper.Map <GetMovementStockDto>(stock);
                return(ResponseResult.Success(stockDto));
            }
            else
            {
                //return not found result
                return(ResponseResult.Failure <GetMovementStockDto>($"{MovementStockId} is not found"));
            }
        }
        public async Task <ServiceResponse <GetMovementStockDto> > EditMovementStock(EditMovementStockDto MovementStock)
        {
            //Find product from id
            var stock = await _dBContext.MovementStocks.FirstOrDefaultAsync(x => x.Id == MovementStock.Id);

            //return if not found
            if (stock == null)
            {
                return(ResponseResult.Failure <GetMovementStockDto>($"MovementStock Id '{MovementStock.Id}' is not found"));
            }

            //Find Product id
            var product = await _dBContext.Products.FirstOrDefaultAsync(x => x.Id == MovementStock.ProductId);

            if (product == null)
            {
                return(ResponseResult.Failure <GetMovementStockDto>($"Product Id {MovementStock.ProductId} is not found"));
            }

            //Find MovementType id
            var moveType = await _dBContext.MovementTypes.FirstOrDefaultAsync(x => x.Id == MovementStock.MovementTypeId);

            if (moveType == null)
            {
                return(ResponseResult.Failure <GetMovementStockDto>($"MovementType Id {MovementStock.MovementTypeId} is not found"));
            }

            //let's update data
            try
            {
                stock.ProductId      = MovementStock.ProductId;
                stock.MovementTypeId = MovementStock.MovementTypeId;
                stock.Quantity       = MovementStock.Quantity;
                stock.CreateById     = Guid.Parse(GetUserId());
                stock.CreateDate     = Now();
                stock.ExpiredDate    = Now();
                stock.Remark         = MovementStock.Remark;
                //code update data
                _dBContext.Update(stock);
                //Save update above
                await _dBContext.SaveChangesAsync();


                //Get productDto to return
                GetMovementStockDto stockDto = _mapper.Map <GetMovementStockDto>(stock);
                return(ResponseResult.Success(stockDto));
            }
            catch (System.Exception ex)
            {
                //Write log
                _log.LogError($"Update MovementStock is error detail: {ex.Message}");
                //Return
                return(ResponseResult.Failure <GetMovementStockDto>($"Update MovementStock error detail: {ex.Message}"));
            }
        }