public static IQueryable ShowRecordsInProdDatabase(ConnectionDB_LINQDataContext db, int zam_index)
        {
            var results = from p in db.Produkty
                          where p.zm_id == zam_index
                          select new { p.pr_id, p.pr_nazwa, p.pr_cena, p.zm_id }; // tworzenie encji Produkty ze ściśle określonego zapytania (wyświetlanie danych);

            return(results);
        }
 public static void DeleteNRecords(ConnectionDB_LINQDataContext db, List <int> indexes_to_delete)
 {
     for (int i = 0; i < indexes_to_delete.Count; i++)            // pętla umożliwiająca usuwanie danych
     {
         try
         {
             var deleteOrder = (from zam in db.GetTable <Zamowienia>()
                                where zam.zm_id == indexes_to_delete[i]
                                select zam).Single <Zamowienia>();   // tworzenie encji Zamowienia ze ściśle określonego zapytania (usuwanie rekordu), jeśli nie ma dokładnie jednego elementu w sekwencji
             db.GetTable <Zamowienia>().DeleteOnSubmit(deleteOrder); // umieszcza encji (obiektu) Zamowienia w oczekiwaniu na usuwanie
             db.SubmitChanges();                                     // Oblicza zestaw zmodyfikowanych obiektów, które mają zostać usunięte, i wykonuje odpowiednie polecenia w celu zaimplementowania zmian w bazie danych
         }
         catch (Exception ex)
         {
             MessageBox.Show(ex.Message);       // wyświetl w oknie błąd
         }
     }
 }
        public static void InsertDataToZamDatabase(ConnectionDB_LINQDataContext db, Order order)
        {
            Zamowienia z = new Zamowienia();                     // tworzenie encji zamówienia

            z.zm_nr_zamowienia   = order.Get_Order_Nr();         // przypisanie wartości nr zamówienia w tabeli SQL
            z.zm_data_zamowienia = order.Get_Order_Date();       // przypisanie wartości daty zamówienia w tabeli SQL
            z.zm_koszt           = (float)order.CalculateCost(); // przypisanie wartości całkowitego kosztu zamówienia w tabeli SQL
            z.zm_email           = order.Email;
            db.Zamowienia.InsertOnSubmit(z);                     // dodaje obiekt w oczekiwaniu na zaakceptowanie dodania rekordów

            try
            {
                db.SubmitChanges();     // zatwierdź zmiany
            }
            catch (Exception exception) // wystąpi błąd wyświetl okno z zawartością błędu
            {
                MessageBox.Show(exception.Message, "Zamówienie",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Information);
            }
        }
        private void OrderRealization(object sender, EventArgs e) // funkcja realizująca zamówienie, która przesyła zawartość zamówienia na adres email i wstawia wartości do tabeli SQL
        {
            if (list_of_products.Count != 0)                      // gdy lista produktów nie jest pusta
            {
                User user = AppService.LoadSettings();

                if (user != null)
                {
                    Order order = new Order(list_of_products)
                    {
                        Email = user.Email_to
                    };// stwórz zamówienie (obiekt) z listy produktów


                    bool email_sent = MailSender.Email(MailSender.ContentEmail(order), user, order.Get_Order_Nr()); // prześlij zamówienie na maila

                    if (email_sent)
                    {
                        // dodawanie rekordów do tabeli
                        using (ConnectionDB_LINQDataContext db = new ConnectionDB_LINQDataContext()) //DataContext źródło wszystkich encji (Produkty, Zamowienia) mapowanych za pośrednictwem połączenia z bazą danych (connectionString)
                        {
                            AppService.InsertDataToZamDatabase(db, order);

                            // przeszukaj tabelę w celu znalezienia id zamówienia
                            var id_order = AppService.SearchForIdInZamDatabase(db, order.Get_Order_Nr());

                            // dla każdego produktu przypisz wartości poszczególnym kolumną
                            AppService.InsertDataToProdDatabase(db, list_of_products, id_order);
                        }
                    }
                }
            }
            else // gdy lista produktów jest pusta to wyświetl okno
            {
                MessageBox.Show("Dodaj coś do listy", "Zamówienie",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Information);
            }
        }
        public static void InsertDataToProdDatabase(ConnectionDB_LINQDataContext db, List <Product> list_of_products, int id_order)
        {
            // przeszukaj tabelę w celu znalezienia id zamówienia
            foreach (Product prod in list_of_products)
            {
                Produkty p = new Produkty();
                p.pr_nazwa = prod.GetName();
                p.pr_cena  = (float)prod.CalculateCost();
                p.zm_id    = id_order;
                db.Produkty.InsertOnSubmit(p);
            }

            try
            {
                db.SubmitChanges();     // zatwierdź zmiany
            }
            catch (Exception exception) // wystąpi błąd wyświetl okno z zawartością błędu
            {
                MessageBox.Show(exception.Message, "Zamówienie",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Information);
            }
        }
        public static IQueryable ShowRecordsInZamDatabase(ConnectionDB_LINQDataContext db)
        {
            var results = from z in db.Zamowienia select new { z.zm_id, z.zm_nr_zamowienia, z.zm_data_zamowienia, z.zm_koszt, z.zm_email };

            return(results);
        }
        // kod uzywany do dodawania usuwania i edycji danych w bazie
        #region CRD_DB

        public static int SearchForIdInZamDatabase(ConnectionDB_LINQDataContext table, int id)
        {
            var id_order = from zam in table.Zamowienia where zam.zm_nr_zamowienia == id select zam; // przeszukaj tabelę w celu znalezienia id zamówienia

            return(id_order.First().zm_id);
        }