Skip to content

Commit

Permalink
🎨 Improved Code
Browse files Browse the repository at this point in the history
  • Loading branch information
Sigmanificient committed May 20, 2022
1 parent 9474777 commit e01f816
Show file tree
Hide file tree
Showing 18 changed files with 310 additions and 308 deletions.
20 changes: 15 additions & 5 deletions src/APITest/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,25 @@

namespace APITest;

public class APIResponse
public class ApiResponse
{
public Currency Data;
public readonly Currency Data;
public ApiResponse(Currency data)
{
Data = data;
}
}

public class Currency
{
public string currency;
public Dictionary<string, double> Rates;
public readonly string CurrencyName;
public readonly Dictionary<string, double> Rates;

public Currency(string currency, Dictionary<string, double> rates)
{
CurrencyName = currency;
Rates = rates;
}
}

static class Program
Expand All @@ -21,7 +31,7 @@ public static void Main(string[] args)
HttpResponseMessage response = client.GetAsync("https://api.coinbase.com/v2/exchange-rates?currency=BTC").Result;

string str = response.Content.ReadAsStringAsync().Result;
APIResponse? r = JsonConvert.DeserializeObject<APIResponse>(str);
ApiResponse? r = JsonConvert.DeserializeObject<ApiResponse>(str);

if (r == null) return;
float btcVal = (float)(r.Data.Rates["EUR"]);
Expand Down
219 changes: 109 additions & 110 deletions src/Fulbank/Classes/Database.cs
Original file line number Diff line number Diff line change
@@ -1,136 +1,135 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data.MySqlClient;

namespace Fulbank.Classes
namespace Fulbank.Classes;

public class Database
{
public class Database
{
#region Attributes
private string _db;
private string _user;
private string _psswd;
private string _host;
private MySqlConnection _conn;
private string _db;
private string _user;
private string _password;
private string _host;
private MySqlConnection _conn;
#endregion

#region Getters
public string getName()
{
return _db;
}
public string getUser()
{
return _user;
}
public string getPassword()
{
return _psswd;
}
public string getHost()
{
return _host;
}
public MySqlConnection getConnection()
{
return _conn;
}
public string GetName()
{
return _db;
}
public string GetUser()
{
return _user;
}
public string GetPassword()
{
return _password;
}
public string GetHost()
{
return _host;
}
public MySqlConnection GetConnection()
{
return _conn;
}
#endregion

#region Setters
public void setName(string name)
{
_db = name;
}
public void setUser(string user)
{
_user = user;
}
public void setPassword(string password)
{
_psswd = password;
}
public void setHost(string host)
{
_host = host;
}
public void SetName(string name)
{
_db = name;
}
public void SetUser(string user)
{
_user = user;
}
public void SetPassword(string password)
{
_password = password;
}
public void SetHost(string host)
{
_host = host;
}
#endregion

#region Connection
public void createConnection()
{
_conn = new MySqlConnection("server=" + _host + ";database=" + _db + ";uid=" + _user + ";password=" + _psswd + ";SSL MODE='None'");
}
public void openConnection(MySqlConnection sql)
{
sql.Open();
}
public void closeConnection(MySqlConnection sql)
{
sql.Close();
}
public bool testConnection(MySqlConnection sql)
{
try
{
openConnection(sql);
closeConnection(sql);
MessageBox.Show("Database connected");
return true;
}
catch(Exception e)
{
MessageBox.Show("#ERROR# Can't connect to the database : " + e);
return false;
}
}
public void CreateConnection()
{
_conn = new MySqlConnection($"server={_host};database={_db};uid={_user};password={_password};SSL MODE='None'");
}
public static void OpenConnection(MySqlConnection sql)
{
sql.Open();
}
public static void CloseConnection(MySqlConnection sql)
{
sql.Close();
}
public bool TestConnection(MySqlConnection sql)
{
try
{
OpenConnection(sql);
CloseConnection(sql);
MessageBox.Show(@"Database connected");
return true;
}
catch(Exception e)
{
MessageBox.Show($@"#ERROR# Can't connect to the database : {e}");
return false;
}
}
#endregion

#region Fonctions
private string ToStr(Collection<string> list)
{
StringBuilder result = new StringBuilder(list[0]);
for (int i = 1 ; i < list.Count; i++ )
{
result.Append("," + list[i]);
}
return result.ToString();
}
private string[] ToList(string str)
{
return str.Split(',');
}
private string ToBind(Collection<string> list)
{
StringBuilder result = new StringBuilder("@val1");
for (int i = 1 ; i < list.Count; i++ )
{
result.Append(",@val" + (i + 1));
}
return result.ToString();
}
private static string ToStr(IReadOnlyList<string> list)
{
StringBuilder result = new StringBuilder(list[0]);
for (int i = 1 ; i < list.Count; i++ )
{
result.Append($",{list[i]}");
}
return result.ToString();
}
private static string[] ToList(string str)
{
return str.Split(',');
}
private static string ToBind(IReadOnlyCollection<string> list)
{
StringBuilder result = new StringBuilder("@val1");
for (int i = 1 ; i < list.Count; i++ )
{
result.Append($",@val{(i + 1)}");
}
return result.ToString();
}
#endregion

#region Queries
private void execute(MySqlCommand command, string[] bindvalues, Collection<string> values)
{
for (int i = 0 ; i < bindvalues.Length ; i++)
{
command.Parameters.AddWithValue(bindvalues[i],values[i]);
}
command.Prepare();
command.ExecuteReader();
}
private static void Execute(MySqlCommand command, IReadOnlyList<string> bindValues, IReadOnlyList<string> values)
{
for (int i = 0 ; i < bindValues.Count ; i++)
{
command.Parameters.AddWithValue(bindValues[i],values[i]);
}
command.Prepare();
command.ExecuteReader();
}

public void insert(MySqlConnection sql, string table, Collection<string> properties, Collection<string> values)
{
string bindValues = ToBind(values);
MySqlCommand query = new MySqlCommand("INSERT INTO " + table + " (" + ToStr(properties) + ") VALUES" + " (" + bindValues + ");", sql);
execute(query, ToList(bindValues), values);
}
#endregion
public void Insert(MySqlConnection sql, string table, Collection<string> properties, Collection<string> values)
{
string bindValues = ToBind(values);
MySqlCommand query = new MySqlCommand($"INSERT INTO {table} ({ToStr(properties)}) VALUES ({bindValues});", sql);
Execute(query, ToList(bindValues), values);
}
#endregion
}
36 changes: 18 additions & 18 deletions src/Fulbank/Classes/Entities/AccountType.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,71 +16,71 @@ public class AccountType : Meta
#region Constructor
public AccountType(int id, string name, string description, double interest, double ceil)
{
setId(id);
setName(name);
setDescription(description);
setInterest(interest);
setCeil(ceil);
SetId(id);
SetName(name);
SetDescription(description);
SetInterest(interest);
SetCeil(ceil);
_accounts = new Collection<BankAccount>();
}
#endregion

#region Getters
public int getId()
public int GetId()
{
return _id;
}
public string getName()
public string GetName()
{
return _name;
}
public string getDescription()
public string GetDescription()
{
return _description;
}
public double getInterest()
public double GetInterest()
{
return _interest;
}
public double getCeil()
public double GetCeil()
{
return _ceil;
}
public Collection<BankAccount> getAccounts()
public Collection<BankAccount> GetAccounts()
{
return _accounts;
}
#endregion

#region Setters
public void setId(int id)
public void SetId(int id)
{
_id = id;
}
public void setName(string name)
public void SetName(string name)
{
_name = name;
}
public void setDescription(string description)
public void SetDescription(string description)
{
_description = description;
}
public void setInterest(double interest)
public void SetInterest(double interest)
{
_interest = interest;
}
public void setCeil(double ceil)
public void SetCeil(double ceil)
{
_ceil = ceil;
}
#endregion

#region Fonctions
public void linkAccount(BankAccount account)
public void LinkAccount(BankAccount account)
{
_accounts.Add(account);
}
public void unlinkAccount(BankAccount account)
public void UnlinkAccount(BankAccount account)
{
_accounts.Remove(account);
}
Expand Down
Loading

0 comments on commit e01f816

Please sign in to comment.