Proposition d'architecture pour la partie API

master
lchandellier 4 years ago
parent 1ef62fbedb
commit ea194447a5
  1. 12
      .config/dotnet-tools.json
  2. 40
      BDAccess/APIAccess.cs
  3. 47
      BDAccess/BDaccess.cs
  4. 20
      Controllers/CollaborateurController/CollaborateurControlleur.cs
  5. 15
      Controllers/EpController/EPController.cs
  6. 15
      Controllers/FormationController/FormationController.cs
  7. 15
      Controllers/ProfilController/ProfilController.cs
  8. 39
      Controllers/WeatherForecastController.cs
  9. 4
      EPAServeur.csproj
  10. 29
      Modele/CollaborateurModele/Collaborateur.cs
  11. 11
      Modele/EpModele/EP.cs
  12. 11
      Modele/FormationModele/Formation.cs
  13. 11
      Modele/ProfilModele/Profil.cs
  14. 5
      Program.cs
  15. 11
      Properties/launchSettings.json
  16. 15
      WeatherForecast.cs

@ -0,0 +1,12 @@
{
"version": 1,
"isRoot": true,
"tools": {
"dotnet-ef": {
"version": "3.1.5",
"commands": [
"dotnet-ef"
]
}
}
}

@ -0,0 +1,40 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Runtime.CompilerServices;
using System.Text.Json;
using System.Threading.Tasks;
namespace EPAServeur.BDAccess
{
public class APIAccess
{
private static APIAccess instance = null;
private string serveur = "http://localhost:3000";
private APIAccess()
{
}
public static APIAccess getInstance()
{
return instance;
}
public static List<T> requestAPI<T>(string query)
{
if (instance == null)
{
instance = new APIAccess();
}
List<T> result = new List<T>();
WebClient client = new WebClient();
result = JsonSerializer.Deserialize<List<T>>(client.DownloadString(instance.serveur+query));
return result;
}
}
}

@ -0,0 +1,47 @@
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Threading.Tasks;
namespace EPAServeur.BDAccess
{
public class BDAccess
{
private static BDAccess instance = null;
private MySqlConnection connection;
private BDAccess()
{
MySqlConnectionStringBuilder infoConnection = new MySqlConnectionStringBuilder()
{
Server = "localhost",
Port = 3306,
Database = "evaluationprofessionelle",
UserID = "dev",
Password = "dev"
};
this.connection = new MySqlConnection(infoConnection.ConnectionString);
}
public static BDAccess getInstance()
{
return instance;
}
public static MySqlDataReader executeQuery(string query)
{
if (instance == null)
{
instance = new BDAccess();
}
MySqlCommand command = new MySqlCommand(query, instance.connection);
command.Connection.Open();
return command.ExecuteReader();
}
}
}

@ -0,0 +1,20 @@
using System.Collections.Generic;
using EPAServeur.BDAccess;
using EPAServeur.CollaborateurModele.Collaborateur;
using Microsoft.AspNetCore.Mvc;
using MySql.Data.MySqlClient;
namespace EPAServeur.Controllers.CollaborateurController
{
[Route("api/")]
[ApiController]
public class CollaborateurControlleur : ControllerBase
{
[HttpGet("collaborateurs")]
public IEnumerable<Collaborateur> Get()
{
List<Collaborateur> liste = APIAccess.requestAPI<Collaborateur>("/personne");
return liste;
}
}
}

@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace EPAServeur.Controllers.EpController
{
[Route("api/[controller]")]
[ApiController]
public class EPController : ControllerBase
{
}
}

@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace EPAServeur.Controllers.FormationController
{
[Route("api/[controller]")]
[ApiController]
public class FormationController : ControllerBase
{
}
}

@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace EPAServeur.Controllers.ProfilController
{
[Route("api/[controller]")]
[ApiController]
public class ProfilController : ControllerBase
{
}
}

@ -1,39 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
namespace EPAServeur.Controllers
{
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
private static readonly string[] Summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
private readonly ILogger<WeatherForecastController> _logger;
public WeatherForecastController(ILogger<WeatherForecastController> logger)
{
_logger = logger;
}
[HttpGet]
public IEnumerable<WeatherForecast> Get()
{
var rng = new Random();
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateTime.Now.AddDays(index),
TemperatureC = rng.Next(-20, 55),
Summary = Summaries[rng.Next(Summaries.Length)]
})
.ToArray();
}
}
}

@ -4,5 +4,9 @@
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="MySql.Data" Version="8.0.20" />
</ItemGroup>
</Project>

@ -0,0 +1,29 @@
using Org.BouncyCastle.Crypto.Digests;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace EPAServeur.CollaborateurModele.Collaborateur
{
public class Collaborateur
{
public int id { get; set; }
public string nom { get; set; }
public string prenom { get; set; }
public string mail { get; set; }
public Collaborateur()
{
}
public Collaborateur(int id, string nom, string prenom, string mail)
{
this.id = id;
this.nom = nom;
this.prenom = prenom;
this.mail = mail;
}
}
}

@ -0,0 +1,11 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace EPAServeur.Modele.EpModele
{
public class EP
{
}
}

@ -0,0 +1,11 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace EPAServeur.Modele.FormationModele
{
public class Formation
{
}
}

@ -0,0 +1,11 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace EPAServeur.Modele.ProfilModele
{
public class Profil
{
}
}

@ -1,11 +1,13 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using MySql.Data.MySqlClient;
namespace EPAServeur
{
@ -13,7 +15,8 @@ namespace EPAServeur
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>

@ -12,16 +12,7 @@
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "weatherforecast",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"EPAServeur": {
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "weatherforecast",
"applicationUrl": "https://localhost:5001;http://localhost:5000",
"launchUrl": "api/collaborateurs",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}

@ -1,15 +0,0 @@
using System;
namespace EPAServeur
{
public class WeatherForecast
{
public DateTime Date { get; set; }
public int TemperatureC { get; set; }
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
public string Summary { get; set; }
}
}
Loading…
Cancel
Save