private void multipleDealersOrder(List <Dealers.DealerInfo> dealersCandidates, PharmacyOrders.PharmacyOrders pharmacyOrder)
        {
            double price = double.MaxValue;

            Dealers.DealerInfo dealersInfoMin = null;
            int drugInfoIndex = -1;

            foreach (Dealers.DealerInfo dealerInfo in dealersCandidates)
            {
                for (int i = 0; i < dealerInfo.drugsList.Count; i++)
                {
                    if (dealerInfo.drugsList[i].Name == pharmacyOrder.DrugName)
                    {
                        for (int j = 0; j < dealerInfo.drugsInfoList.Count; j++)
                        {
                            if (dealerInfo.drugsInfoList[j].DrugID == dealerInfo.drugsList[i].ID)
                            {
                                if (dealerInfo.drugsInfoList[j].Price <= price)
                                {
                                    price          = dealerInfo.drugsInfoList[j].Price;
                                    dealersInfoMin = new Dealers.DealerInfo();
                                    dealersInfoMin = dealerInfo;
                                    drugInfoIndex  = j;
                                }
                            }
                        }
                    }
                }
            }

            if (dealersInfoMin != null)
            {
                price = dealersInfoMin.drugsInfoList[drugInfoIndex].Price * pharmacyOrder.NumberOrders;
                MessageBoxResult result = MessageBox.Show("Минимална цена на поръчка - " + price + " лв. Желаете ли да изпълните поръчката?", "Поръчка", MessageBoxButton.OKCancel, MessageBoxImage.Information);
                if (result == MessageBoxResult.OK)
                {
                    dealersInfoMin.drugsInfoList[drugInfoIndex].Number -= pharmacyOrder.NumberOrders;
                    MessageBoxes.ShowInfo("Поръчката е изпълнена успешно!");
                    if (dealersInfoMin.drugsInfoList[drugInfoIndex].Number == 0)
                    {
                        drugsInfoData.DeleteWhereID(dealersInfoMin.drugsInfoList[drugInfoIndex].ID);
                    }
                    else
                    {
                        dealersData.UpdateWhereID(dealersInfoMin.dealer.ID, dealersInfoMin);
                    }

                    if (!pharmacyOrdersData.DeleteWhereID(pharmacyOrder.ID))
                    {
                        MessageBoxes.ShowError(MessageBoxes.DeleteErrorMessage);
                        return;
                    }

                    pharmacyOrdersView.itemsSource.RemoveAt(pharmacyOrdersView.SelectedIndex);
                }
            }
        }
        private void findDealer_Click(object sender, RoutedEventArgs e)
        {
            List <Dealers.DealerInfo> dealersInfoList = new List <Dealers.DealerInfo>();

            PharmacyOrders.PharmacyOrders pharmacyOrder = (PharmacyOrders.PharmacyOrders)pharmacyOrdersView.GetSelectedItem();
            if (pharmacyOrder == null)
            {
                MessageBoxes.ShowError("Моля изберете поръчка!");
                return;
            }

            List <Dealers.Dealers> dealersList = new List <Dealers.Dealers>();

            if (!dealersData.SelectAll(dealersList))
            {
                MessageBoxes.ShowError(MessageBoxes.LoadDataErrorMessage);
                return;
            }

            foreach (Dealers.Dealers dealer in dealersList)
            {
                Dealers.DealerInfo dealerInfo = new Dealers.DealerInfo();
                dealerInfo.dealer = dealer;

                List <DrugsInfo.DrugsInfo> drugsInfoList = new List <DrugsInfo.DrugsInfo>();

                if (!dealersData.SelectAllDrugsInfo(drugsInfoList, dealer.ID))
                {
                    MessageBoxes.ShowError(MessageBoxes.LoadDataErrorMessage);
                    return;
                }

                dealerInfo.drugsInfoList = drugsInfoList;

                List <Drugs.Drugs> drugsList = new List <Drugs.Drugs>();
                Drugs.Drugs        drug      = new Drugs.Drugs();
                foreach (DrugsInfo.DrugsInfo drugInfo in dealerInfo.drugsInfoList)
                {
                    if (!dealersData.SelectDrugWhereID(out drug, drugInfo.DrugID))
                    {
                        MessageBoxes.ShowError(MessageBoxes.LoadDataErrorMessage);
                        return;
                    }
                    drugsList.Add(drug);
                }

                dealerInfo.drugsList = drugsList;

                dealersInfoList.Add(dealerInfo);
            }

            findDealerMethod(pharmacyOrder, dealersInfoList);
        }
        private void oneDealerOrder(Dealers.DealerInfo dealersCandidates, PharmacyOrders.PharmacyOrders pharmacyOrder)
        {
            for (int i = 0; i < dealersCandidates.drugsList.Count; i++)
            {
                if (dealersCandidates.drugsList[i].Name == pharmacyOrder.DrugName)
                {
                    for (int j = 0; j < dealersCandidates.drugsInfoList.Count; j++)
                    {
                        if (dealersCandidates.drugsInfoList[j].DrugID == dealersCandidates.drugsList[i].ID)
                        {
                            double           price  = dealersCandidates.drugsInfoList[j].Price * pharmacyOrder.NumberOrders;
                            MessageBoxResult result = MessageBox.Show("Цена на поръчка - " + price + " лв. Желаете ли да изпълните поръчката?", "Поръчка", MessageBoxButton.OKCancel, MessageBoxImage.Information);
                            if (result == MessageBoxResult.OK)
                            {
                                dealersCandidates.drugsInfoList[j].Number -= pharmacyOrder.NumberOrders;
                                MessageBoxes.ShowInfo("Поръчката е изпълнена успешно!");
                                if (dealersCandidates.drugsInfoList[j].Number == 0)
                                {
                                    drugsInfoData.DeleteWhereID(dealersCandidates.drugsInfoList[j].ID);
                                }
                                else
                                {
                                    dealersData.UpdateWhereID(dealersCandidates.dealer.ID, dealersCandidates);
                                }

                                if (!pharmacyOrdersData.DeleteWhereID(pharmacyOrder.ID))
                                {
                                    MessageBoxes.ShowError(MessageBoxes.DeleteErrorMessage);
                                    return;
                                }

                                pharmacyOrdersView.itemsSource.RemoveAt(pharmacyOrdersView.SelectedIndex);
                            }
                            return;
                        }
                    }
                }
            }
        }