public static List <TauxDevise> GetTauxDevisesFromAPI(DateTime date) { //TODO //Prevoir le cas où l'API répond pas string stringURL = $"https://api.exchangeratesapi.io/{date:yyyy-MM-dd}?base=EUR"; WebRequest request = WebRequest.Create(stringURL); request.Method = "GET"; HttpWebResponse response = null; response = (HttpWebResponse)request.GetResponse(); List <TauxDevise> tauxDevises = new List <TauxDevise>(); using (Stream stream = response.GetResponseStream()) { StreamReader streamReader = new StreamReader(stream); JObject json = JObject.Parse(streamReader.ReadToEnd()); foreach (JProperty rate in (JToken)json["rates"]) { TauxDevise tauxDevise = new TauxDevise(rate.Name, (float)rate.Value, date); tauxDevises.Add(tauxDevise); } streamReader.Close(); } return(tauxDevises); }
public float CalculateTotalFrais(int note_frais_id, DateTime date) { try { DataBaseManagerTauxDevises dataBaseManagerTauxDevises = new DataBaseManagerTauxDevises(); //Chercher les taux pour le mois List <TauxDevise> tauxDevises = dataBaseManagerTauxDevises.GetTauxDevises(date); List <Frais> allFrais = GetAllFraisOfNoteFrais(note_frais_id); float totalFrais = 0; foreach (Frais frais in allFrais) { if (frais.devise == "EUR") { totalFrais += frais.montant; } else { TauxDevise tauxDevise = tauxDevises.First(x => x.nom_taux == frais.devise); totalFrais += frais.montant * tauxDevise.taux; } } return(totalFrais); } catch (Exception e) { Console.WriteLine($"Generic Exception Handler: {e}"); return(-1); } }
public List<TauxDevise> GetTauxDevises(DateTime date) { date = date.AddMonths(1).AddDays(-1); List<TauxDevise> tauxDeviseList = new List<TauxDevise>(); this.connection.Open(); MySqlCommand cmd = this.connection.CreateCommand(); cmd.CommandText = $"SELECT * FROM taux_devises WHERE date = '{date:yyyy-MM-dd HH:mm:ss}'"; using (MySqlDataReader reader = cmd.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { TauxDevise tauxDevise = new TauxDevise(reader.GetString("nom_taux"), reader.GetFloat("taux"), reader.GetDateTime("date"), reader.GetInt32("id")); tauxDeviseList.Add(tauxDevise); } } else { tauxDeviseList = APITauxDevises.GetTauxDevisesFromAPI(date); SetTauxDevises(tauxDeviseList, date); } } this.connection.Close(); return tauxDeviseList; }