/// <summary>
        ///     Wykonuje UPDATE na ilości leku
        /// </summary>
        /// <param name="medicine"></param>
        /// <param name="newAmount"></param>

        public void UpdateMedicineAmount(Medicine medicine, int newAmount)
        {
            sqlCommand.CommandText = $"UPDATE Medicines SET Amount = @Amount WHERE ID = @ID;";

            SqlParameter sqlAmountParam = new SqlParameter {
                ParameterName = "@Amount", Value = newAmount, DbType = System.Data.DbType.Int32
            };

            sqlCommand.Parameters.Add(sqlAmountParam);

            SqlParameter sqlIDParam = new SqlParameter {
                ParameterName = "@ID", Value = medicine.ID, DbType = System.Data.DbType.Int32
            };

            sqlCommand.Parameters.Add(sqlIDParam);

            sqlCommand.ExecuteNonQuery();

            sqlCommand.Parameters.Remove(sqlAmountParam);
            sqlCommand.Parameters.Remove(sqlIDParam);
        }
        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        // "Zamówienie" //
        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

        /// <summary>
        ///     Dodaje lek do zamówienia
        /// </summary>

        private static void AddToOrder()
        {
            OrderSqlTransaction orderSqlTransaction = new OrderSqlTransaction();

            ConsoleEx.WriteLineWithColor(" Zamówienie ".PadLeft(21, '-').PadRight(30, '-'), ConsoleColor.Cyan);

            // Pobranie leku
            Medicine medicine = GetMedicineByIndex();

            if (medicine == null)
            {
                ConsoleEx.WriteLineWithColor("Anulowano akcję!", ConsoleColor.Red);
                return;
            }

            // Pobranie ilości
            int quantity;

            Console.Write("Podaj ilość: ");
            try
            {
                quantity = int.Parse(Console.ReadLine().Trim());

                if (quantity > medicine.Amount)
                {
                    throw new QuantityException();
                }
            }
            catch (QuantityException)
            {
                ConsoleEx.WriteLineWithColor($"Brak wystarczającej ilości leku w bazie!!", ConsoleColor.Red);
                return;
            }
            catch (Exception e)
            {
                ConsoleEx.WriteLineWithColor($"Nastąpił wyjątek w pobieraniu ilości: {e.GetType().ToString()}: {e.Message}!!", ConsoleColor.Red);
                return;
            }

            // Scieżka recepty
            if (medicine.WithPrescription == true)
            {
                ConsoleEx.WriteLineWithColor($"\nTen lek jest na receptę!", ConsoleColor.Red);

                Console.Write("Czy recepta jest już w systemie? (Y/N): ");
                // Scieżka dla recepty w systemie
                if (Console.ReadLine().Trim().ToUpper() == "Y")
                {
                    // Pod wyświetlanie
                    Console.WriteLine();

                    // Pobranie recepty
                    Prescription prescription = GetPrescriptionWithConfirmation();

                    if (prescription == null)
                    {
                        return;
                    }

                    // Finalizacja zamówienia z receptą
                    OrderFinalization(orderSqlTransaction, prescription, medicine, quantity);
                }
                // Scieżka dla nowej recepty
                else
                {
                    // musimy takową pobrać
                    Console.Write("\nCzy klient posiada receptę? (Y/N): ");
                    if (Console.ReadLine().Trim().ToUpper() != "Y")
                    {
                        ConsoleEx.WriteLineWithColor("Anulowano akcję!", ConsoleColor.Red);
                        return;
                    }

                    Prescription prescription = GetPrescriptionFromUser();
                    if (prescription == null)
                    {
                        return;
                    }

                    // Finalizacja zamówienia z receptą
                    OrderFinalization(orderSqlTransaction, prescription, medicine, quantity);
                }
            }
            // Bez recepty
            else
            {
                // Finalizacja zamówienia z receptą
                OrderFinalization(orderSqlTransaction, null, medicine, quantity);
            }
        }
        /// <summary>
        ///     Finalizuje zamówienie - dla recepty
        ///     Wykorzystuje: AddToOrder()
        /// </summary>

        public static void OrderFinalization(OrderSqlTransaction orderSqlTransaction, Prescription prescription, Medicine medicine, int quantity)
        {
            try
            {
                // Dla nowej recepty bez ID
                if (prescription != null && prescription.ID == null)
                {
                    orderSqlTransaction.InsertPrescription(prescription);
                }

                // Update - odjęcie sprzedanej ilości
                orderSqlTransaction.UpdateMedicineAmount(medicine, (medicine.Amount - quantity));

                // Dla leku bez recepty
                if (prescription == null)
                {
                    orderSqlTransaction.InsertOrderWithoutPrescription(new Order(null, null, medicine.ID, DateTime.Now, quantity));
                }
                // Dla leku z receptą
                else
                {
                    orderSqlTransaction.InsertOrderWithPrescription(new Order(null, prescription.ID, medicine.ID, DateTime.Now, quantity));
                }

                // Upewnienie się
                Console.WriteLine($"\nSuma zamówienia: {medicine.Price * quantity}zł. Czy klient zapłacił? (Y/N): ");
                if (Console.ReadLine().Trim().ToUpper() != "Y")
                {
                    ConsoleEx.WriteLineWithColor("Anulowano akcję!", ConsoleColor.Red);
                    orderSqlTransaction.TransactionRollback();
                    return;
                }

                orderSqlTransaction.TransactionCommit();
                ConsoleEx.WriteLineWithColor("Sukces!", ConsoleColor.Green);
            }
            catch (Exception e)
            {
                ConsoleEx.WriteLineWithColor($"Wyjątek przy finalizacji: {e.GetType()}: {e.Message}", ConsoleColor.Red);
                orderSqlTransaction.TransactionRollback();
            }
        }