/// <summary> /// Metoda która sprawdza czy dany login i hasło pasują do jakiegokolwiek użytkownika w pliku JSON i bazie danych. /// </summary> /// <param name="usersData"></param> /// <param name="login"></param> /// <param name="password"></param> private void CheckUser(UsersData usersData, string login, string password) { foreach (var item in usersData.Users) { if (login.Equals(item.Login) && password.Equals(item.Password)) { // Pobiera loginy z bazy i daje do nowej listy. var allLogins = new List <string>(); using (var context = new myShopContext()) { foreach (var logins in context.Clients) { allLogins.Add(logins.Login); } } // Sprawdza czy któryś login pasuje do podanego przez użytkownika. if (allLogins.Any(logs => logs.Equals(item.Login))) { // Odpalenie nowej formatki Sklep Hide(); var form = new MainForm(item.Login); form.Location = this.Location; form.StartPosition = FormStartPosition.CenterScreen; form.FormClosing += delegate { this.Close(); }; form.Show(); return; } } } MessageBox.Show("Nie ma takiego konta!", "Problem!?"); }
public MainForm(string login) { Login = login; InitializeComponent(); ControlSetter(null); _totalPrice = 0.0F; _charts = new List <Chart>(); _productsImages = new Dictionary <int, Image>(); using (var context = new myShopContext()) { _myOrders = context .Orders. Where(x => x.IdClient == context .Clients .Where(z => z.Login.Equals(MainForm.Login)) .FirstOrDefault().IdClient).OrderByDescending(desc => desc.IdOrder).ToList(); _me = context.Clients.Where(l => l.Login.Equals(MainForm.Login)).FirstOrDefault(); _categories = context.Categories.ToList(); _allProducts = context.Products.ToList(); } InitializeAllImages(); profileUserControl1.SetValues(); shoppingUserControl1.InitializeListBoxCategory(); shoppingUserControl1.InitializeProducts(); historyUserControl1.InitializeAllOrders(); }
/// <summary> /// Statyczna metoda do Update zalogowanego klienta wywoływana z ProfileUserControl. /// </summary> /// <param name="newClient"></param> public static void ChangeClient(Client newClient) { using (var context = new myShopContext()) { // Znajduje klienta obecnie zalogowanego po jego ID. var clientToUpdate = context.Clients.Where(f => f.IdClient == _me.IdClient).FirstOrDefault(); if (clientToUpdate != null) { clientToUpdate.Login = newClient.Login; clientToUpdate.FirstName = newClient.FirstName; clientToUpdate.LastName = newClient.LastName; clientToUpdate.City = newClient.City; clientToUpdate.Street = newClient.Street; clientToUpdate.Mail = newClient.Mail; clientToUpdate.Phone = newClient.Phone; clientToUpdate.ZIP = newClient.ZIP; clientToUpdate.Voivodeship = newClient.Voivodeship; clientToUpdate.HouseNumber = newClient.HouseNumber; clientToUpdate.MoneySpent = newClient.MoneySpent; clientToUpdate.Points = newClient.Points; } context.SaveChanges(); newClient.IdClient = _me.IdClient; _me = newClient; _changeClient = true; } }
/// <summary> /// Metoda która polega na stworzeniu nowego zamówienia, dodaniu do niego pozycji, /// ceny całkowitej. W przypadku zamówień uaktualnia zamówienia użytkownika, /// zmiena ilość produktów w magazynie. /// </summary> /// <param name="order"></param> public static void MakeOrder(Order order) { using (var context = new myShopContext()) { // Stworzenie zamówienia w bazie żeby powstało ID. context.Orders.Add(order); context.SaveChanges(); // Znalezienie tego zamówienia i jego ID a następnie dodanie wszystkich pozycji i update ceny całkowitej. var findThisOrder = context.Orders.OrderByDescending(x => x.IdOrder).FirstOrDefault(); foreach (var item in _charts) { findThisOrder.Charts.Add(item); } findThisOrder.TotalPrice = _totalPrice; context.SaveChanges(); // Pobranie aktualnej listy zamówień tego użytkownika _myOrders = context .Orders. Where(x => x.IdClient == context .Clients .Where(z => z.Login.Equals(MainForm.Login)) .FirstOrDefault().IdClient).OrderByDescending(desc => desc.IdOrder).ToList(); // Update ilości i sprzedanych produktów w magazynie. foreach (var item in _charts) { var tempProduct = context.Products.Where(p => p.IdProduct == item.IdProduct).FirstOrDefault(); tempProduct.UnitsInStock -= item.Units; tempProduct.UnitsSold += item.Units; } // Uaktualnienie listy produktów _allProducts = context.Products.ToList(); // Update Klienta i jego wydanych pieniędzy i punktów. var clnt = context.Clients.Where(id => id.Login.Equals(Login)).FirstOrDefault(); clnt.MoneySpent = _myOrders.Select(s => s.TotalPrice).Sum(); clnt.Points = Convert.ToInt32(clnt.MoneySpent / 1000.0f + 10.0f); ChangeClient(clnt); context.SaveChanges(); } _historyChange = true; }
public static void DatabaseInitializer() { using (var context = new myShopContext()) { //Kategorie context.Categories.Add(new Model.Category { Name = "Procesor", Description = "CPU do komputerów stacjonarnych." }); context.Categories.Add(new Model.Category { Name = "Karta Graficzna", Description = "GPU do komputerów stacjonarnych." }); context.Categories.Add(new Model.Category { Name = "Laptop", Description = "Przenośne urządzenia do pracy i rozrywki." }); context.Categories.Add(new Model.Category { Name = "RAM", Description = "Pamięć komputera przeznaczona do wykorzystania w chwili pracy." }); context.Categories.Add(new Model.Category { Name = "Dysk Twardy", Description = "Pamięć masowa przeznaczona do gromadzenia danych i zapisywania." }); context.SaveChanges(); // Produkty context.Products.Add(new Model.Product { Name = "Nitro 5", Discontinued = false, Manufacturer = "Acer", UnitsInStock = 12, UnitPrice = 3200, UnitsOrdered = 5, UnitsSold = 512, IdCategory = context.Categories.Where(cat => cat.Name.Equals("Laptop")).FirstOrDefault().IdCategory, ImageUrl = "https://i.ebayimg.com/images/g/xZYAAOSwzcpdijv8/s-l1600.jpg" }); context.Products.Add(new Model.Product { Name = "MacBook", Discontinued = false, Manufacturer = "Apple", UnitsInStock = 5, UnitPrice = 4000, UnitsOrdered = 2, UnitsSold = 100, IdCategory = context.Categories.Where(cat => cat.Name.Equals("Laptop")).FirstOrDefault().IdCategory, ImageUrl = "https://image.ceneostatic.pl/data/products/66886711/i-apple-macbook-pro-15-4-i7-16gb-512gb-macos-silver-mr972ze-a.jpg" }); context.Products.Add(new Model.Product { Name = "i5-8300H", Discontinued = false, Manufacturer = "Intel", UnitsInStock = 10, UnitPrice = 600, UnitsOrdered = 20, UnitsSold = 600, IdCategory = context.Categories.Where(cat => cat.Name.Equals("Procesor")).FirstOrDefault().IdCategory, ImageUrl = "https://www.notebookcheck.pl/fileadmin/_processed_/a/e/csm_8th_Gen_Intel_Core_i5_Badge_ee07502dbf.jpg" }); context.Products.Add(new Model.Product { Name = "GTX 1050", Discontinued = false, Manufacturer = "Nvidia", UnitsInStock = 50, UnitPrice = 800, UnitsOrdered = 90, UnitsSold = 1500, IdCategory = context.Categories.Where(cat => cat.Name.Equals("Karta Graficzna")).FirstOrDefault().IdCategory, ImageUrl = "https://images.morele.net/i1064/975580_0_i1064.jpg" }); context.Products.Add(new Model.Product { Name = "Predator RGB 8GB DDR4", Discontinued = false, Manufacturer = "HyperX", UnitsInStock = 14, UnitPrice = 1000, UnitsOrdered = 20, UnitsSold = 200, IdCategory = context.Categories.Where(cat => cat.Name.Equals("RAM")).FirstOrDefault().IdCategory, ImageUrl = "https://image.ceneostatic.pl/data/products/62977095/i-hyperx-predator-rgb-8gb-ddr4-2933mhz-cl15-hx429c15pb3a8.jpg" }); context.Products.Add(new Model.Product { Name = "Dysk CX 400", Discontinued = false, Manufacturer = "GOODRAM", UnitsInStock = 29, UnitPrice = 500, UnitsOrdered = 3, UnitsSold = 18, IdCategory = context.Categories.Where(cat => cat.Name.Equals("Dysk Twardy")).FirstOrDefault().IdCategory, ImageUrl = "https://www.mediaexpert.pl/media/cache/gallery/product/1/198/252/686/bqwt8jfi/images/13/1389913/Dysk-GOODRAM-CX400-512GB-skos.jpg" }); context.SaveChanges(); // Klient context.Clients.Add(new Model.Client { Login = "******", City = "Katowice", FirstName = "John", LastName = "Doe", Phone = "123-456-789", Mail = "*****@*****.**", ZIP = "43-000", Street = "Villowa", HouseNumber = "12B/2", Points = 150, MoneySpent = 3200, Voivodeship = "Śląsk", }); context.Clients.Add(new Model.Client { Login = "******", City = "Łodygowice", FirstName = "Piotr", LastName = "Tom", Phone = "111-222-333", Mail = "*****@*****.**", ZIP = "43-300", Street = "Villowa", HouseNumber = "1232E/13", Points = 2000, MoneySpent = 5000, Voivodeship = "Śląsk", }); context.SaveChanges(); //Zamówienie #1 context.Orders.Add(new Model.Order { IdClient = context.Clients.Where(a => a.Login.Equals("user")).FirstOrDefault().IdClient, OrderDate = DateTime.Now.AddDays(-50), OrderName = "Zamówienie user #1", OrderStreet = "Villowa", OrderHouseNumber = "12B/2", OrderCity = "Katowice", OrderVoivodeship = "Śląsk", OrderZIP = "43-000", TotalPrice = 3575, }); context.SaveChanges(); // Koszyk #1 context.Charts.Add(new Model.Chart { IdOrder = context.Orders.Where(z => z.IdOrder == 1).FirstOrDefault().IdOrder, IdProduct = context.Products.Where(x => x.Name.Equals("Nitro 5")).FirstOrDefault().IdProduct, Units = 1, Price = 3200, Discount = 0.0F, }); context.Charts.Add(new Model.Chart { IdOrder = context.Orders.Where(z => z.IdOrder == 1).FirstOrDefault().IdOrder, IdProduct = context.Products.Where(x => x.Name.Equals("Dysk CX 400")).FirstOrDefault().IdProduct, Units = 1, Price = 375, Discount = 0.25F, }); context.SaveChanges(); //Zamówienie #2 context.Orders.Add(new Model.Order { IdClient = context.Clients.Where(a => a.Login.Equals("user")).FirstOrDefault().IdClient, OrderDate = DateTime.Now.AddDays(-10), OrderName = "Zamówienie user #2", OrderStreet = "Villowa", OrderHouseNumber = "12B/2", OrderCity = "Katowice", OrderVoivodeship = "Śląsk", OrderZIP = "43-000", TotalPrice = 8000, }); context.SaveChanges(); // Koszyk #2 context.Charts.Add(new Model.Chart { IdOrder = context.Orders.Where(z => z.IdOrder == 2).FirstOrDefault().IdOrder, IdProduct = context.Products.Where(x => x.Name.Equals("MacBook")).FirstOrDefault().IdProduct, Units = 2, Price = 8000, Discount = 0.0F, }); context.SaveChanges(); } }
/// <summary> /// Przycisk sprawdza i analizuje podane dane czy są prawidłowe. /// Kiedy wszystko się zgadza to dodaje użytkownika do pliku JSON a następnie do bazy danych. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnSignUp_Click(object sender, EventArgs e) { var log = tBoxLogin.Text; var pass = tBoxPassword.Text; var pass2 = tBoxPassword2.Text; var list = JsonConvert.DeserializeObject <UsersData>(File.ReadAllText("UsersData.json")); bool newLogin = list.Users.Any(z => z.Login == log) ? false : true; bool areSamePasword = pass.Equals(pass2) && !string.IsNullOrEmpty(pass) && !string.IsNullOrWhiteSpace(pass) ? true : false; if (newLogin && !string.IsNullOrEmpty(log)) { if (chckBox.Checked) { if (areSamePasword) { list.Users.Add(new User { Login = log, Password = pass }); // Dodanie nowego klienta do bazy danych żeby mógł się logować. using (var contextAdd = new myShopContext()) { contextAdd.Clients.Add(new Model.Client { Login = log, FirstName = "-", LastName = "-", Street = "-", HouseNumber = "-", City = "-", Voivodeship = "-", ZIP = "-", Points = 0, MoneySpent = 0.0F, Phone = "-", Mail = "-" }); contextAdd.SaveChanges(); } var convertedJson = JsonConvert.SerializeObject(list, Formatting.Indented); File.WriteAllText("UsersData.json", convertedJson); this.Close(); } else { MessageBox.Show("Podane hasła nie zgadzają się!", "Błąd tworzenia nowego profilu."); } } else { MessageBox.Show("Musisz potwierdzić zapoznanie się z regulaminem!", "Błąd tworzenia nowego profilu."); } } else { MessageBox.Show("Login już zajęty. Wybierz inny.", "Błąd tworzenia nowego profilu."); } }