예제 #1
0
		public int login(Client client)
		{
			return login(client.Username, client.Password);
		}
예제 #2
0
		// Получить клиента по 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?");
		}
예제 #3
0
		// Добавить новый емаил
		public void addEmail(Client client, int email)
		{
			addEmail(client.Id, email);
		}
예제 #4
0
		// Удалить все телефоны клиента
		public void deleteClientEmails(Client client)
		{
			deleteClientEmails(client.Id);
		}
예제 #5
0
		// Добавить новый телефон
		public void addPhone(Client client, string number)
		{
			addPhone(client.Id, number);
		}
예제 #6
0
		// Удалить все телефоны клиента
		public void deleteClientPhones(Client client)
		{
			deleteClientPhones(client.Id);
		}
예제 #7
0
		// Обновить информацию о клиенте
		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();
		}
예제 #8
0
		// Получить банковские счета клиента
		public BankAccount[] getBankAccountsByClient(Client client)
		{
			return getBankAccountsByClient(client.Id);
		}
예제 #9
0
		// событие на нажатие кнопки
		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;
			}
		}
예제 #10
0
		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();
		}
예제 #11
0
		// событие на нажате кнопки входа
		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;
			}
            
		}