public int login(Client client) { return login(client.Username, client.Password); }
// Получить клиента по ID public Client getClientById(int id) { var sql = String.Format("SELECT * FROM clients WHERE id='{0}' LIMIT 1", id); var cmd = new MySqlCommand(sql, mySqlConnection); MySqlDataReader reader; try { reader = cmd.ExecuteReader(); } catch (Exception ex) { throw new Exception(ex.Message, ex); } if (reader.Read()) { var client = new Client { Id = Convert.ToInt32(reader["id"]), Username = Convert.ToString(reader["username"]), Password = Convert.ToString(reader["password"]), Passport = Convert.ToString(reader["passport"]), LastName = Convert.ToString(reader["lastName"]), Name = Convert.ToString(reader["name"]), MiddleName = Convert.ToString(reader["middleName"]), Address = Convert.ToString(reader["address"]) }; var date = reader["birthDate"].ToString().Split('-'); if (date.Length == 3) client.BirthDate = new DateTime(Convert.ToInt32(date[0]), Convert.ToInt32(date[1]), Convert.ToInt32(date[2])); reader.Close(); // Телефоны клиента var phones = new List<string>(); sql = String.Format("SELECT number FROM phones WHERE client='{0}'", id); cmd = new MySqlCommand(sql, mySqlConnection); reader = cmd.ExecuteReader(); while (reader.Read()) { phones.Add(Convert.ToString(reader[0])); } reader.Close(); // Емаилы клиента var emails = new List<string>(); sql = String.Format("SELECT email FROM emails WHERE client='{0}'", id); cmd = new MySqlCommand(sql, mySqlConnection); reader = cmd.ExecuteReader(); while (reader.Read()) { emails.Add(Convert.ToString(reader[0])); } // ==== client.PhoneNumbers = phones; client.Emails = emails; reader.Close(); return client; } reader.Close(); throw new ArgumentException("Can't read client from database. Invalid id?"); }
// Добавить новый емаил public void addEmail(Client client, int email) { addEmail(client.Id, email); }
// Удалить все телефоны клиента public void deleteClientEmails(Client client) { deleteClientEmails(client.Id); }
// Добавить новый телефон public void addPhone(Client client, string number) { addPhone(client.Id, number); }
// Удалить все телефоны клиента public void deleteClientPhones(Client client) { deleteClientPhones(client.Id); }
// Обновить информацию о клиенте public void updateClient(Client client) { var sql = String.Format("UPDATE clients SET username='******',passport='{1}',lastName='{2}',name='{3}',middleName='{4}',address='{5}',birthDate='{6}-{7}-{8}' WHERE id='{9}'", client.Username, client.Passport, client.LastName, client.Name, client.MiddleName, client.Address, client.BirthDate.Year, client.BirthDate.Month, client.BirthDate.Day, client.Id); var cmd = new MySqlCommand(sql, mySqlConnection); cmd.ExecuteNonQuery(); }
// Получить банковские счета клиента public BankAccount[] getBankAccountsByClient(Client client) { return getBankAccountsByClient(client.Id); }
// событие на нажатие кнопки private void button4_Click(object sender, EventArgs e) { switch (button4.Text) { case "": break; case "5000 руб.": if (isGive) GiveMoney(5000, Acc); else transMoney(5000, baRecip); break; case "Перевести деньги": mainWindow.Visible = false; mainLb.Visible = true; mainLb.Items.Clear(); backButton(); LoadBankAccounts(); button4.Text = "Выбрать"; isGive = false; break; case "Выбрать": if (mainLb.SelectedIndex == -1) { button4.Text = "Перевести деньги"; button4_Click(sender, e); break; } Acc = mainLb.SelectedIndex; mainLb.Items.Clear(); mainLb.Visible = false; mainWindow.Visible = true; mainWindow.Text = "Выберите получателя:"; backButton(); button2.Text = "Свой счет"; button3.Text = "Чужой счет"; break; case "Ввести": try { baRecip = DatabaseManager.Instance.getBankAccount(Convert.ToInt32(TbLogin.Text)); } catch(Exception exp) { if (exp.Message == "Can't read bank account from database. Invalid id?") { mainWindow.Text = "Данный счет не существует, повторите попытку"; TbLogin.Text = ""; } else { mainWindow.Text = "Неверный ввод, повторите попытку"; TbLogin.Text = ""; } } mainLb.Items.Clear(); mainLb.Visible = false; mainWindow.Visible = true; Recip = DatabaseManager.Instance.getClientById(baRecip.ClientId); mainWindow.Text = "Получатель: "+Recip.LastName+" "+Recip.Name+" "+Recip.MiddleName+".\nВведите нужную сумму:"; label1.Text = "Cумма:"; label1.Visible = true; TbLogin.Visible = true; TbLogin.Text = ""; backButton(); button4.Text = "Перевести"; break; case "Перевести": try { if(ba[Acc].Amount > Convert.ToDouble(TbLogin.Text)) { ba[Acc].Amount -= Convert.ToDouble(TbLogin.Text); DatabaseManager.Instance.updateBankAccount(ba[Acc]); transMoney(Convert.ToDouble(TbLogin.Text), baRecip); } else { mainWindow.Text = "Недостаточно средств"; TbLogin.Text = ""; break; } mainLb.Items.Clear(); mainLb.Visible = false; mainWindow.Visible = true; mainWindow.Text = "Операция произошла успешно"; backButton(); label1.Visible = false; TbLogin.Visible = false; } catch (Exception exp) { TbLogin.Text = ""; break; } break; } }
void TCommandATMTest1() { StreamWriter sw = new StreamWriter("log1.txt"); sw.WriteLine("Проверяем создаются ли объекты:"); try { client = new Client(); ba = new BankAccount[2]; } catch(Exception e) { sw.WriteLine("Объекты не созданы"); } sw.WriteLine("Объекты созданы"); btnEntry_Click(new object(), new EventArgs()); sw.WriteLine("Просмотрим состояние объектов после вызова функций getClientById и getBankAccountsByClient "); sw.WriteLine("client: id=" + client.Id + ", lastname=" + client.LastName + ", name=" + client.Name+", middlename="+ client.MiddleName); sw.WriteLine("bankAccounts:"); for(var i=0; i< ba.Length; i++) { sw.WriteLine((i + 1) + ": number=" + ba[i].Id + ", amount=" + ba[i].Amount); } sw.Close(); }
// событие на нажате кнопки входа private void btnEntry_Click(object sender, EventArgs e) { /*StringBuilder c=new StringBuilder().Append(TbPass.Text), b=new StringBuilder(); RSA a = new RSA(); a.Initiate(); a.Encrypt(c, b);*/ if ((idClient = DatabaseManager.Instance.login(TbLogin.Text, TbPass.Text)) == 0) { mainWindow.Text = "Неверно введен логин или пароль.\nПовторите попытку"; } else { client = DatabaseManager.Instance.getClientById(idClient); ba = DatabaseManager.Instance.getBankAccountsByClient(idClient); mainOperations(); label1.Visible = false; label2.Visible = false; TbLogin.Visible = false; TbPass.Visible = false; btnEntry.Visible = false; } }