public async Task <ActionResult <GoodInStock> > DoOPeration([FromRoute] int idOperation, [FromBody] GoodInStock goodInStock)
        {
            var operation = await _operationTypeRepository.GetByIdAsync(idOperation);

            bool valid = _goodInStockRepository.ValidateGood(goodInStock);

            try
            {
                if (!ModelState.IsValid)
                {
                    _logger.LogError("Invalid model state.");
                    return(BadRequest());
                }
                if (valid == true && (operation.Name == "Расход" || operation.Name == "Приход" || operation.Name == "Внутреннее перемещение"))
                {
                    return(BadRequest());
                }
                else
                {
                    await _goodInStockRepository.DoOperation(idOperation, goodInStock);

                    return(Created($"/api/goodInStock/{goodInStock.Id}", goodInStock));
                }
            }
            catch (Exception ex)
            {
                _logger.LogError("Exception adding new goodInStock: " + ex.Message);
                return(BadRequest());
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="idOperation"></param>
        /// <param name="goodInStock"></param>
        /// <returns>do operations in stocks</returns>
        public async Task DoOperation(int idOperation, GoodInStock goodInStock)
        {
            var operation = await _operationTypeRepository.GetByIdAsync(idOperation);

            var duplicate = await _context.GoodInStocks.Where(i => i.GoodId == goodInStock.GoodId && i.StockId == goodInStock.StockId).FirstOrDefaultAsync();

            var duplicateTo = await _context.GoodInStocks.Where(i => i.GoodId == goodInStock.GoodId && i.StockId == goodInStock.StockIdTo).FirstOrDefaultAsync();


            if (operation.Name == "Приход")
            {
                if (duplicate == null)
                {
                    goodInStock.DateAdded = DateTime.Now;
                    await CreateAsync(goodInStock);

                    OperationLog(idOperation);
                }
                else
                {
                    duplicate.DateEdited = DateTime.Now;
                    duplicate.Quantity  += goodInStock.Quantity;
                    await UpdateAsync(duplicate);

                    OperationLog(idOperation);
                }
            }
            else if (operation.Name == "Расход" && duplicate != null)
            {
                duplicate.DateEdited = DateTime.Now;
                duplicate.Quantity  -= goodInStock.Quantity;
                await UpdateAsync(duplicate);

                OperationLog(idOperation);
            }
            else
            {
                if (duplicateTo == null)
                {
                    var goodInStockTo = new GoodInStock
                    {
                        Quantity  = goodInStock.Quantity,
                        GoodId    = goodInStock.GoodId,
                        StockId   = goodInStock.StockIdTo,
                        DateAdded = DateTime.Now
                    };
                    await CreateAsync(goodInStockTo);

                    OperationLog(idOperation);
                }
                else
                {
                    duplicateTo.DateEdited = DateTime.Now;
                    duplicateTo.Quantity  += goodInStock.Quantity;
                    await UpdateAsync(duplicateTo);

                    OperationLog(idOperation);
                }

                duplicate.Quantity  -= goodInStock.Quantity;
                duplicate.DateEdited = DateTime.Now;
                await UpdateAsync(duplicate);
            }
        }