From 26fdad3ef83e712ab3e19a409479520c861c88c6 Mon Sep 17 00:00:00 2001 From: pasquizzat Date: Wed, 15 Mar 2023 19:32:54 +0100 Subject: [PATCH] =?UTF-8?q?api=20:=20franchement=20je=20vais=20=C3=AAtre?= =?UTF-8?q?=20franc,=20faut=20avancer=20la=20partie=20EF,=20elle=20bloque?= =?UTF-8?q?=20la=20partie=20api?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Sources/ApiDePaul/ApiDePaul.csproj | 1 + .../Controllers/ChampionController.cs | 19 ++++----- .../ApiDePaul/Controllers/RuneController.cs | 37 +++++++++++++++++ .../ApiDePaul/Conversion/ChampionMapping.cs | 10 +++-- Sources/ApiDePaul/Conversion/RuneMapping.cs | 38 ++++++++++++++++++ Sources/ApiDePaul/Conversion/SkillMapping.cs | 33 +++++++++++++++ Sources/ApiDePaul/DTO/ChampionDto.cs | 2 +- Sources/ApiDePaul/DTO/RuneDto.cs | 11 +++++ Sources/ApiDePaul/DTO/SkillDto.cs | 9 +++++ Sources/ApiDePaul/Program.cs | 4 +- Sources/ApiDePaul/laBdd.db | Bin 0 -> 20480 bytes Sources/ApiDePaul/laBdd.db-shm | Bin 0 -> 32768 bytes Sources/ApiDePaul/laBdd.db-wal | 0 Sources/LeagueOfLegends.sln | 1 + Sources/TrucAuMilieu/TrucAuMilieu.csproj | 1 - 15 files changed, 151 insertions(+), 15 deletions(-) create mode 100644 Sources/ApiDePaul/Controllers/RuneController.cs create mode 100644 Sources/ApiDePaul/Conversion/RuneMapping.cs create mode 100644 Sources/ApiDePaul/Conversion/SkillMapping.cs create mode 100644 Sources/ApiDePaul/DTO/RuneDto.cs create mode 100644 Sources/ApiDePaul/DTO/SkillDto.cs create mode 100644 Sources/ApiDePaul/laBdd.db create mode 100644 Sources/ApiDePaul/laBdd.db-shm create mode 100644 Sources/ApiDePaul/laBdd.db-wal diff --git a/Sources/ApiDePaul/ApiDePaul.csproj b/Sources/ApiDePaul/ApiDePaul.csproj index eb51bcd..d21f91b 100644 --- a/Sources/ApiDePaul/ApiDePaul.csproj +++ b/Sources/ApiDePaul/ApiDePaul.csproj @@ -12,6 +12,7 @@ + diff --git a/Sources/ApiDePaul/Controllers/ChampionController.cs b/Sources/ApiDePaul/Controllers/ChampionController.cs index 694d211..02ce262 100644 --- a/Sources/ApiDePaul/Controllers/ChampionController.cs +++ b/Sources/ApiDePaul/Controllers/ChampionController.cs @@ -15,9 +15,10 @@ namespace ApiDePaul.Controllers private readonly ILogger _logger; - public ChampionController(ILogger logger) + public ChampionController(ILogger logger,IDataManager datamgr) { _logger = logger; + this.donnees = datamgr; } [HttpGet] @@ -92,16 +93,16 @@ namespace ApiDePaul.Controllers return CreatedAtAction(nameof(GetChampId), new { id = donnees.ChampionsMgr.GetNbItems().Result - 1 }, ca.ChampToDto()); } - - [HttpPost("Ajouter")] + /* en fait cet ajouter sert à rien, vu que la liste peut contenir un champion + [HttpPost("AjouterUnSeul")] public async Task PostChamp([FromBody] ChampionDto c) { Champion ca = c.DtoToChamp(); //return Ok(await donnees.ChampionsMgr.AddItem(ca)); await donnees.ChampionsMgr.AddItem(ca); return CreatedAtAction(nameof(GetChampId), new { id = donnees.ChampionsMgr.GetNbItems().Result - 1 }, ca.ChampToDto()); - } - [HttpPost("AjouterPlus")] + }*/ + [HttpPost("Ajouter")] public async Task PostChamps([FromBody] List lc) { foreach(ChampionDto c in lc) @@ -127,16 +128,16 @@ namespace ApiDePaul.Controllers return BadRequest(); } - - [HttpPut("{id}/Modifier")] + /* pareil que pour ajouter, pas besoin de faire qu'un seul champion quand une liste suffit + [HttpPut("{id}/ModifierUnSeul")] public async Task PutChamp(int id, [FromBody] ChampionDto c) { IEnumerable oldChamp = await donnees.ChampionsMgr.GetItems(id, 1); Champion champion1 = oldChamp.First(); Champion champion2 = c.DtoToChamp(); return Ok(await donnees.ChampionsMgr.UpdateItem(champion1, champion2)); - } - [HttpPut("{id}/ModifierPlus")] + }*/ + [HttpPut("{id}/Modifier")] public async Task PutChamps(int id, [FromBody] List lc) { IEnumerable oldChamp = await donnees.ChampionsMgr.GetItems(id, lc.Count()); diff --git a/Sources/ApiDePaul/Controllers/RuneController.cs b/Sources/ApiDePaul/Controllers/RuneController.cs new file mode 100644 index 0000000..0690758 --- /dev/null +++ b/Sources/ApiDePaul/Controllers/RuneController.cs @@ -0,0 +1,37 @@ +using ApiDePaul.Conversion; +using ApiDePaul.DTO; +using Microsoft.AspNetCore.Mvc; +using Model; +using StubLib; +using System.Collections.Generic; +using System.Diagnostics; + +namespace ApiDePaul.Controllers +{ + [ApiController] + [Route("[controller]")] + public class RuneController : ControllerBase + { + IDataManager donnees = new StubData(); + + private readonly ILogger _logger; + + public RuneController(ILogger logger, IDataManager datamgr) + { + _logger = logger; + //this.donnees = datamgr; + } + + [HttpGet] + public async Task> GetRunes() + { + IEnumerable lrun = await donnees.RunesMgr.GetItems(0, donnees.RunesMgr.GetNbItems().Result); + + List runes = new List(); + + lrun.ToList().ForEach(r => runes.Add(r.RuneToDto())); + + return Ok(runes); + } + } +} \ No newline at end of file diff --git a/Sources/ApiDePaul/Conversion/ChampionMapping.cs b/Sources/ApiDePaul/Conversion/ChampionMapping.cs index 4b86fd4..e5dcbad 100644 --- a/Sources/ApiDePaul/Conversion/ChampionMapping.cs +++ b/Sources/ApiDePaul/Conversion/ChampionMapping.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Reflection.PortableExecutable; using System.Text; using System.Threading.Tasks; +using ApiDePaul.Conversion; using ApiDePaul.DTO; using Model; using static System.Net.Mime.MediaTypeNames; @@ -24,13 +25,16 @@ namespace ApiDePaul { champ.Characteristics.Add(new Tuple(ch.Key, ch.Value)); } - //Characteristics = c.Characteristics.ToDictionary(x => x.Key, x => x.Value) + foreach(var sk in c.Skills) + { + champ.Skills.Add(sk.SkillToDto()); + } return champ; } public static Champion DtoToChamp(this ChampionDto c) { Champion champ = new Champion(c.Name); - string[] classes = { "Unknown", "Assassin", "Fighter", "Mage", "Marksman", "Support", "Tank" }; + var classes = Enum.GetNames(typeof(ChampionClass)); if (classes.ToList().Contains(c.Class)) { champ.Class=(ChampionClass)Enum.Parse(typeof(ChampionClass), c.Class); @@ -45,7 +49,7 @@ namespace ApiDePaul foreach(var s in c.Skills) { - champ.AddSkill(s); + champ.AddSkill(s.DtoToSkill()); } champ.AddCharacteristics(c.Characteristics.ToArray()); /* diff --git a/Sources/ApiDePaul/Conversion/RuneMapping.cs b/Sources/ApiDePaul/Conversion/RuneMapping.cs new file mode 100644 index 0000000..51a68a5 --- /dev/null +++ b/Sources/ApiDePaul/Conversion/RuneMapping.cs @@ -0,0 +1,38 @@ +using ApiDePaul.DTO; +using Model; + +namespace ApiDePaul.Conversion +{ + public static class RuneMapping + { + public static RuneDto RuneToDto(this Rune r) + { + RuneDto run = new RuneDto(); + run.Name = r.Name; + run.Description = r.Description; + run.Icon = r.Icon; + run.Image = r.Image.ToString(); + run.Family = r.Family.ToString(); + return run; + } + public static Rune DtoToRune(this RuneDto r) + { + RuneFamily fam; + string[] families = { "Unknown", "Precision", "Domination" }; + if (families.ToList().Contains(r.Family)) + { + fam = (RuneFamily)Enum.Parse(typeof(RuneFamily), r.Family); + } + else + { + fam = 0; + } + Rune run = new Rune(r.Name, fam); + run.Icon = r.Icon; + run.Image = new LargeImage(r.Image); + run.Description = r.Description; + + return run; + } + } +} \ No newline at end of file diff --git a/Sources/ApiDePaul/Conversion/SkillMapping.cs b/Sources/ApiDePaul/Conversion/SkillMapping.cs new file mode 100644 index 0000000..52e88d4 --- /dev/null +++ b/Sources/ApiDePaul/Conversion/SkillMapping.cs @@ -0,0 +1,33 @@ +using ApiDePaul.DTO; +using Model; + +namespace ApiDePaul.Conversion +{ + public static class SkillMapping + { + public static SkillDto SkillToDto(this Skill s) + { + SkillDto ski = new SkillDto(); + ski.Name = s.Name; + ski.Type = s.Type.ToString(); + ski.Description = s.Description; + return ski; + } + public static Skill DtoToSkill(this SkillDto ski) + { + var types = Enum.GetNames(typeof(SkillType)).ToList(); + SkillType type; + if (types.Contains(ski.Type.ToString())) + { + type = (SkillType)Enum.Parse(typeof(SkillType), ski.Type); + } + else + { + type = 0; + } + Skill s = new Skill(ski.Name, type,ski.Description); + + return s; + } + } +} diff --git a/Sources/ApiDePaul/DTO/ChampionDto.cs b/Sources/ApiDePaul/DTO/ChampionDto.cs index dc8ad8a..5c0128d 100644 --- a/Sources/ApiDePaul/DTO/ChampionDto.cs +++ b/Sources/ApiDePaul/DTO/ChampionDto.cs @@ -12,6 +12,6 @@ namespace ApiDePaul.DTO public string Image { get; set; } public List Skins { get; set; } public List> Characteristics { get; set; } - public HashSet Skills { get; set; } + public List Skills { get; set; } } } diff --git a/Sources/ApiDePaul/DTO/RuneDto.cs b/Sources/ApiDePaul/DTO/RuneDto.cs new file mode 100644 index 0000000..289f7e9 --- /dev/null +++ b/Sources/ApiDePaul/DTO/RuneDto.cs @@ -0,0 +1,11 @@ +namespace ApiDePaul.DTO +{ + public class RuneDto + { + public string Name { get; set; } + public string Description { get; set; } + public string Family { get; set; } + public string Icon { get; set; } + public string Image { get; set; } + } +} diff --git a/Sources/ApiDePaul/DTO/SkillDto.cs b/Sources/ApiDePaul/DTO/SkillDto.cs new file mode 100644 index 0000000..f0403a5 --- /dev/null +++ b/Sources/ApiDePaul/DTO/SkillDto.cs @@ -0,0 +1,9 @@ +namespace ApiDePaul.DTO +{ + public class SkillDto + { + public string Name { get; set; } + public string Type { get; set; } + public string Description { get; set; } + } +} diff --git a/Sources/ApiDePaul/Program.cs b/Sources/ApiDePaul/Program.cs index a3ec0d0..ffe4a40 100644 --- a/Sources/ApiDePaul/Program.cs +++ b/Sources/ApiDePaul/Program.cs @@ -1,5 +1,6 @@ using Model; using StubLib; +using TrucAuMilieu; var builder = WebApplication.CreateBuilder(args); @@ -9,7 +10,8 @@ builder.Services.AddControllers(); // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); -builder.Services.AddScoped(); +//builder.Services.AddScoped(); +builder.Services.AddScoped(); var app = builder.Build(); // Configure the HTTP request pipeline. diff --git a/Sources/ApiDePaul/laBdd.db b/Sources/ApiDePaul/laBdd.db new file mode 100644 index 0000000000000000000000000000000000000000..ff72a771167482ab8bf17144b3d50555e8c9e99c GIT binary patch literal 20480 zcmeI(OK%cE00;2d2Std}X~Kcvg$WI@MnhO=LT^gR8cBIcSJNKMW(zBB11#?s@|&;6<`Q zWSKnRoDd?57!ffHle`*c#IH1yUY3+e&b&q0FQU?Ovi^yEpy%uFmo-K?1Rwwb2tWV= z5P$##AOHaftVrM_t3;EjlysU6tfRhNd0`Dk{`9U^+Ird0xl!J&={z$n%;|>f7usrtfn;%+>89>M5Z>KFmiGrMU$nHblSYwlxgY@>rT(J z0>>Ttj~qX6y*CRB<-fPQu+1NVt1+wHxdqQdEE#BlOUrY+<4*9@_I$C}xnYGvRbERz zD=l+aIFG3 -