From 7759337bcfc19a552196db28144184201e1dcfb1 Mon Sep 17 00:00:00 2001 From: "emre.kartal" Date: Mon, 13 Mar 2023 17:19:18 +0100 Subject: [PATCH] just update Controllers :dvd: --- .vs/LolProject/v17/.wsuo | Bin 0 -> 12800 bytes .../ApiLol/Controllers/RunesController.cs | 186 ++++++- .../ApiLol/Controllers/SkinsController.cs | 404 ++++++++------- .../Controllers/v1/ChampionsController.cs | 14 + .../Controllers/v2/ChampionsController.cs | 460 +++++++++--------- .../Tests/ApiTests/SkinsControllerTest.cs | 8 +- 6 files changed, 640 insertions(+), 432 deletions(-) create mode 100644 .vs/LolProject/v17/.wsuo diff --git a/.vs/LolProject/v17/.wsuo b/.vs/LolProject/v17/.wsuo new file mode 100644 index 0000000000000000000000000000000000000000..6e8690e81d3fdb13319542c4a7fd7a4ccfcb7ed5 GIT binary patch literal 12800 zcmeHNOK%%h6h3KrB|J+ZKq*p$BB&5foz!_a6;)``2ZA(doF-iaA;+G$X`R@zCxk*- zz!Hfc0pbs^h8;^5WeE~Ozy_f%_yLH9@4MI6zMk0QJ5GWU;$zLso%{OkGxdTC%yge<(Q4w}!l&O{`>CrJ^(G$Hm1luikel)r&{vSUARn~orM|dVj#TkE zj{4HZZzqur_Elu?iCdIBMoC%l27~xkbVr8EB=e9Yvh{S@Q*zKq$$s&CsD?951vm~(vRY)3UTX3`jN^z z=VbEvd=BqsOm==Jy}wrAzm$LZCDoCC$i-gBKXn>83y+p$%fI19>I3QlTlP(v{d^Yn z_|AIAkfzQ*j*D}mjxc2%`R7XPf8sudUDWZxa_+gwBM+D~pX3kwy-|Aqugc*WVWa)A z^E&(g|K^4Buy_lwM%Q5Nmhg17dm-kEPQw1A-$y>-O6lD2`w0}Es#KW=ZW*}mz}79p z5>CktWrO>YQI>Hzyepyodjxf8tGeRT|DfGUqTNp`zXaPm4LkfI#*xQ+S&V1kVI;mx zVpQ~xJaw;)Y8?2~d7P6gKIMzpq$%{vnXXlOUQ}K{7P*@kK>_1f1?s9ouc7L;yvKo0 zT%NbC_|Ks39X1Aa_WyA2|Fq1>HF*Cia9CbRoaVJYOA<7vG`_#mhX4Hnx}tALx+?QP zCN?E54OzH_dk)etg(rRRw~=lhlXwmIN70Y*Lsh2^H`>d)MU*>3yVYluehfCBQQEQY z6jpZ``<_#4UV=Vg{3DHBC}LL_k?^rI&FK{M595Gl49#oSN*+ftTX_xQQy*tAf?}xF ztMvu`iyVI;?-~8y2w!XYEJl%4=R??dMu1Phhi8iG`ZI>o44>!EI&dkE8`ukChY{tE z>uKUIVRcOz<2gJ7NWuBn@NeTxT2_*&Yc{@{^^f9z)}Md%{5OsHt^t*CNc${o#)Gf7 zvHx8A`O0*H^KZ=m_DJg2Ap!iCkQIgh8FOp4{~C#wkd8#Y2}vl*G~O5=)VcNuz<*V2 zSN@}~&zK=;EnW7#(&lOJ@7bO|dOrV9=epl1OWO7lX{UYvHVdST(`W&9OtG^4k?(lj((Ug>-7eUy;i0M{D}T;vU$@jT_vZtI8fhiL81 z9CcT;gQ*Mqy-adsFqs{R4Uc+>Si&32#+HYNva!+hpcjv4vT-k&QH!G79X4K_;QRSl zYJNP9-$$8@H=Il?kHq4cGs##Ykr;|Cr-#O3gYnErBApra#*!-^Q(ia|L)Y(e2lzd} zcwo`^-}KY2{C4F3aLfNL*#FA@BVW6oKOOtuNbT-CjqTyO{x)jR@6&OP71$a%Wq;BK z(;lJSs+OkxMIB6=#ufiK>Y5{A1~%qRXz&~?zF>@HLB?u8O;RrdpY}Ahs4G70b;gWH zlQ?-8fhxo1ScUDmxos4>Ub8#mPm%4fF#C5=dA%7#!5D*TO?_?P(_S<7ziru01DjDW zdfz43UX$PeZHcbQCFIZ}DasYpV6;k)?p($G<~JqR_2=4CUyxk!O_YG#ShQA#@i*cc z(!GY?X#p7g6g;d<#nN~mebejX+=Fs4fCyy)GtVmi*ie2kQ80g@K6@S)$H2T+#8{oN z|D)iOPkrT~bDzi~A`@-wKgVjm|GW7=&1Xda->kjs{CC;^k1T)Od$az*`I~q!eeeU~ z|99=g|4(6-jQo?E=w*__=8(s@17kl|A@h_7>c(<4N?+rLu{QY6)_-C0KMT}#{J0Mn zF$P=jm=Q4k!t;ds%$5HbuQKuA;@1BWy#0@k}Zk8 zw~PK=RHwkY%s}IDH@FT#8fs(x>3?XSZ&%_!)w#Q_zrFuK`Rl}g$n*NtWh8d5<3Anw z*YQ?AE)o!cmn<&E-p zl4oP?b-K&ixpuJ3caTXLmnFo#%gW{}BhBwn{1(k)}Bx&GI2wcDOw ZS&2sPGGC2&>;IfAIZUYW{=3KT{{`Y9!ao22 literal 0 HcmV?d00001 diff --git a/src/EntityFramework_LoL/Sources/ApiLol/Controllers/RunesController.cs b/src/EntityFramework_LoL/Sources/ApiLol/Controllers/RunesController.cs index 9271650..b5225f3 100644 --- a/src/EntityFramework_LoL/Sources/ApiLol/Controllers/RunesController.cs +++ b/src/EntityFramework_LoL/Sources/ApiLol/Controllers/RunesController.cs @@ -1,43 +1,177 @@ -using Microsoft.AspNetCore.Mvc; - -// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860 - +using ApiLol.Mapper; +using DTO; +using Microsoft.AspNetCore.Mvc; +using Microsoft.IdentityModel.Tokens; +using Model; + +// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860 + namespace ApiLol.Controllers { [Route("api/[controller]")] [ApiController] public class RunesController : ControllerBase - { - // GET: api/ - [HttpGet] - public IEnumerable Get() + { + private readonly IDataManager _manager; + private readonly ILogger _logger; + + public RunesController(IDataManager dataManager, ILogger logger) { - return new string[] { "value1", "value2" }; + _logger = logger; + this._manager = dataManager; + } + + + // GET: api/ + [HttpGet] + public async Task Get([FromQuery] PageRequest pageRequest) + { + _logger.LogInformation("Executing {Action} - RUNE with parameters: {Parameters}", nameof(Get), pageRequest); + try + { + int nbTotal = await _manager.RunesMgr.GetNbItems(); + if (pageRequest.count == 0) + { + pageRequest = new PageRequest() { index = 0, count = nbTotal, orderingPropertyName = pageRequest.orderingPropertyName, descending = pageRequest.descending, name = pageRequest.name }; + } + else if (pageRequest.count * pageRequest.index >= nbTotal || pageRequest.count > nbTotal) + { + _logger.LogWarning("too many, maximum {number}", nbTotal); + return BadRequest($"Rune limit exceed, max {nbTotal}"); + } + + IEnumerable dtos; + if (pageRequest.name == null) + { + dtos = (await _manager.RunesMgr.GetItems(pageRequest.index, pageRequest.count, pageRequest.orderingPropertyName, pageRequest.descending)) + .Select(x => x.ToDto()); + } + else + { + dtos = (await _manager.RunesMgr.GetItemsByName(pageRequest.name, pageRequest.index, pageRequest.count, pageRequest.orderingPropertyName, pageRequest.descending)) + .Select(x => x.ToDto()); + } + return Ok(new { Data = dtos, index = pageRequest.index, count = pageRequest.count, total = nbTotal }); + + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } } // GET api//5 [HttpGet("{name}")] - public string Get(string name) - { - return "value"; + public async Task Get(string name) + { + _logger.LogInformation("method {Action} - RUNE call with {name}", nameof(Get), name); + try + { + var dtos = (await _manager.RunesMgr.GetItemByName(name, 0, await _manager.RunesMgr.GetNbItems())) + .Select(x => x.ToDto()); + if (dtos.IsNullOrEmpty()) + { + _logger.LogWarning($"{name} was not found"); + return NotFound($"{name} was not found"); + } + return Ok(dtos.First()); + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } } // POST api/ - [HttpPost] - public void Post([FromBody] string value) - { - } - - // PUT api//5 - [HttpPut("{id}")] - public void Put(int id, [FromBody] string value) - { + [HttpPost] + public async Task Post([FromBody] RuneDto rune) + { + _logger.LogInformation("method {Action} - RUNE call with {item}", nameof(Post), rune); + try + { + if (await _manager.RunesMgr.GetNbItemsByName(rune.Name) == 0) + { + return CreatedAtAction(nameof(Get), + (await _manager.RunesMgr.AddItem(rune.ToModel()))); + } + _logger.LogWarning($"Name : {rune.Name} is already exist"); + return BadRequest($"Name : {rune.Name} is already exist"); + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } + } + + // PUT api//5 + [HttpPut("{name}")] + public async Task Put(string name, [FromBody] RuneDto rune) + { + _logger.LogInformation("method {Action} - RUNE call with {name} and {item}", nameof(Put), name, rune); + try + { + var dtos = (await _manager.RunesMgr.GetItemByName(name, 0, await _manager.RunesMgr.GetNbItems())); + if (dtos.IsNullOrEmpty()) + { + return NotFound($"Name {name} not exist"); + } + // Checks if the new name exists + if (name != rune.Name) + { + var dtos2 = (await _manager.RunesMgr.GetItemByName(rune.Name, 0, await _manager.RunesMgr.GetNbItems())); + if (dtos2.IsNullOrEmpty() || dtos2.Count() > 0) + { + return BadRequest($"New Name {rune.Name} is already exist"); + } + } + return Ok(await _manager.RunesMgr.UpdateItem(dtos.First(),rune.ToModel())); + + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } } // DELETE api//5 - [HttpDelete("{id}")] - public void Delete(int id) - { - } - } + [HttpDelete("{name}")] + public async Task Delete(string name) + { + _logger.LogInformation("method {Action} - RUNE call with {name}", nameof(Delete), name); + try + { + var dtos = (await _manager.RunesMgr.GetItemByName(name, 0, await _manager.RunesMgr.GetNbItems())); + if (dtos.IsNullOrEmpty()) + { + _logger.LogWarning("{name} was not found", name); + return BadRequest(); + } + return Ok(await _manager.RunesMgr.DeleteItem(dtos.First())); + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } + } + + [HttpGet("/countRunes")] + public async Task> GetCountSkins() + { + try + { + return Ok(await _manager.RunesMgr.GetNbItems()); + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + + } + } + } } diff --git a/src/EntityFramework_LoL/Sources/ApiLol/Controllers/SkinsController.cs b/src/EntityFramework_LoL/Sources/ApiLol/Controllers/SkinsController.cs index 83d5fb2..7b9f0fd 100644 --- a/src/EntityFramework_LoL/Sources/ApiLol/Controllers/SkinsController.cs +++ b/src/EntityFramework_LoL/Sources/ApiLol/Controllers/SkinsController.cs @@ -1,183 +1,221 @@ -using ApiLol.Mapper; -using DTO; -using Microsoft.AspNetCore.Mvc; -using Microsoft.IdentityModel.Tokens; -using Model; - -// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860 - -namespace ApiLol.Controllers -{ - [Route("api/[controller]")] - [ApiController] - public class SkinsController : ControllerBase - { - private readonly IDataManager _manager; - private readonly ILogger _logger; - - public SkinsController(IDataManager dataManager, ILogger logger) - { - _logger = logger; - this._manager = dataManager; - } - - // GET: api/ - [HttpGet] - public async Task Get([FromQuery] PageRequest pageRequest) - { - _logger.LogInformation("Executing {Action} - SKIN with parameters: {Parameters}", nameof(Get), pageRequest.count); - try - { - int nbTotal = await _manager.SkinsMgr.GetNbItems(); - if (pageRequest.count == 0) - { - pageRequest = new PageRequest() { index = 0, count = nbTotal, orderingPropertyName = pageRequest.orderingPropertyName, descending = pageRequest.descending, name = pageRequest.name }; - } - else if (pageRequest.count * pageRequest.index >= nbTotal || pageRequest.count > nbTotal) - { - _logger.LogWarning("too many, maximum {number}", nbTotal); - return BadRequest($"Champion limit exceed, max {nbTotal}"); - } - - IEnumerable dtos; - if (pageRequest.name == null) - { - dtos = (await _manager.SkinsMgr.GetItems(pageRequest.index, pageRequest.count, pageRequest.orderingPropertyName, pageRequest.descending)) - .Select(x => x.ToDtoC()); - } - else - { - dtos = (await _manager.SkinsMgr.GetItemsByName(pageRequest.name, pageRequest.index, pageRequest.count, pageRequest.orderingPropertyName, pageRequest.descending)) - .Select(x => x.ToDtoC()); - } - return Ok(new { Data = dtos, index = pageRequest.index, count = pageRequest.count, total = nbTotal }); - - } - catch (Exception error) - { - _logger.LogError(error.Message); - return BadRequest(error.Message); - } - } - - // GET api//5 - [HttpGet("{name}")] - public async Task Get(string name) - { - _logger.LogInformation("method {Action} - SKIN call with {name}", nameof(Get), name); - try - { - var dtos = (await _manager.SkinsMgr.GetItemByName(name, 0, await _manager.ChampionsMgr.GetNbItems())) - .Select(x => x.ToDtoC()); - if (dtos.IsNullOrEmpty()) - { - _logger.LogWarning($"{name} was not found"); - return NotFound($"{name} was not found"); - } - return Ok(dtos.First()); - } - catch (Exception error) - { - _logger.LogError(error.Message); - return BadRequest(error.Message); - } - } - - // POST api/ - [HttpPost] - public async Task Post([FromBody] SkinDtoC skin) - { - _logger.LogInformation("method {Action} - SKIN call with {item}", nameof(Post), skin); - try - { - if (skin.ChampionName != null) - { - var dtos = (await _manager.ChampionsMgr.GetItemByName(skin.ChampionName, 0, await _manager.ChampionsMgr.GetNbItems())); - if (dtos.IsNullOrEmpty()) - { - _logger.LogWarning($"Champion Name : {skin.ChampionName} not exist"); - return BadRequest($"Champion Name : {skin.ChampionName} not exist"); - } - else - { - if (await _manager.SkinsMgr.GetNbItemsByName(skin.Name) == 0) - { - return CreatedAtAction(nameof(Get), - (await _manager.SkinsMgr.AddItem(skin.ToModelC(dtos.First()))).ToDtoC()); - } - _logger.LogWarning($"Name : {skin.Name} is already exist"); - return BadRequest($"Name : {skin.Name} is already exist"); - } - } - else - { - return BadRequest("Please fill in the name of the champion"); - } - } - catch (Exception error) - { - _logger.LogError(error.Message); - return BadRequest(error.Message); - } - } - - // PUT api//5 - [HttpPut("{name}")] - public async Task Put(string name, [FromBody] SkinDtoC skin) - { - _logger.LogInformation("method {Action} - SKIN call with {name} and {item}", nameof(Put), name, skin); - try - { - var dtos = (await _manager.SkinsMgr.GetItemByName(name, 0, await _manager.SkinsMgr.GetNbItems())); - if (dtos.IsNullOrEmpty()) - { - return NotFound($"Name {name} not exist"); - } - // Checks if the new name exists - if (name != skin.Name) - { - var dtos2 = (await _manager.SkinsMgr.GetItemByName(skin.Name, 0, await _manager.ChampionsMgr.GetNbItems())); - if (dtos2.IsNullOrEmpty() || dtos2.Count() > 0) - { - return BadRequest($"New Name {skin.Name} is already exist"); - } - } - var dtosChampion = (await _manager.ChampionsMgr.GetItemByName(skin.ChampionName, 0, await _manager.ChampionsMgr.GetNbItems())); - if (dtosChampion.IsNullOrEmpty()) - { - _logger.LogWarning($"Champion Name : {skin.ChampionName} not exist"); - return BadRequest($"Champion Name : {skin.ChampionName} not exist"); - } - return Ok((await _manager.SkinsMgr.UpdateItem(dtos.First(), skin.ToModelC(dtosChampion.First()))).ToDtoC()); - - } - catch (Exception error) - { - _logger.LogError(error.Message); - return BadRequest(error.Message); - } - } - - // DELETE api//5 - [HttpDelete("{name}")] - public async Task Delete(string name) - { - _logger.LogInformation("method {Action} - Skin call with {name}", nameof(Delete), name); - try - { - var dtos = (await _manager.SkinsMgr.GetItemByName(name, 0, await _manager.SkinsMgr.GetNbItems())); - if (dtos.IsNullOrEmpty()) - { - _logger.LogWarning("{name} was not found", name); - return BadRequest(); - } - return Ok(await _manager.SkinsMgr.DeleteItem(dtos.First())); - } - catch (Exception error) - { - _logger.LogError(error.Message); - return BadRequest(error.Message); - } - } - } -} +using ApiLol.Mapper; +using DTO; +using Microsoft.AspNetCore.Mvc; +using Microsoft.IdentityModel.Tokens; +using Model; + +// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860 + +namespace ApiLol.Controllers +{ + [Route("api/[controller]")] + [ApiController] + public class SkinsController : ControllerBase + { + private readonly IDataManager _manager; + private readonly ILogger _logger; + + public SkinsController(IDataManager dataManager, ILogger logger) + { + _logger = logger; + this._manager = dataManager; + } + + // GET: api/ + [HttpGet] + public async Task Get([FromQuery] PageRequest pageRequest) + { + _logger.LogInformation("Executing {Action} - SKIN with parameters: {Parameters}", nameof(Get), pageRequest); + try + { + int nbTotal = await _manager.SkinsMgr.GetNbItems(); + if (pageRequest.count == 0) + { + pageRequest = new PageRequest() { index = 0, count = nbTotal, orderingPropertyName = pageRequest.orderingPropertyName, descending = pageRequest.descending, name = pageRequest.name }; + } + else if (pageRequest.count * pageRequest.index >= nbTotal || pageRequest.count > nbTotal) + { + _logger.LogWarning("too many, maximum {number}", nbTotal); + return BadRequest($"Skin limit exceed, max {nbTotal}"); + } + + IEnumerable dtos; + if (pageRequest.name == null) + { + dtos = (await _manager.SkinsMgr.GetItems(pageRequest.index, pageRequest.count, pageRequest.orderingPropertyName, pageRequest.descending)) + .Select(x => x.ToDtoC()); + } + else + { + dtos = (await _manager.SkinsMgr.GetItemsByName(pageRequest.name, pageRequest.index, pageRequest.count, pageRequest.orderingPropertyName, pageRequest.descending)) + .Select(x => x.ToDtoC()); + } + return Ok(new { Data = dtos, index = pageRequest.index, count = pageRequest.count, total = nbTotal }); + + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } + } + + // GET api//5 + [HttpGet("{name}")] + public async Task Get(string name) + { + _logger.LogInformation("method {Action} - SKIN call with {name}", nameof(Get), name); + try + { + var dtos = (await _manager.SkinsMgr.GetItemByName(name, 0, await _manager.ChampionsMgr.GetNbItems())) + .Select(x => x.ToDtoC()); + if (dtos.IsNullOrEmpty()) + { + _logger.LogWarning($"{name} was not found"); + return NotFound($"{name} was not found"); + } + return Ok(dtos.First()); + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } + } + + // POST api/ + [HttpPost] + public async Task Post([FromBody] SkinDtoC skin) + { + _logger.LogInformation("method {Action} - SKIN call with {item}", nameof(Post), skin); + try + { + if (skin.ChampionName != null) + { + var dtos = (await _manager.ChampionsMgr.GetItemByName(skin.ChampionName, 0, await _manager.ChampionsMgr.GetNbItems())); + if (dtos.IsNullOrEmpty()) + { + _logger.LogWarning($"Champion Name : {skin.ChampionName} not exist"); + return BadRequest($"Champion Name : {skin.ChampionName} not exist"); + } + else + { + if (await _manager.SkinsMgr.GetNbItemsByName(skin.Name) == 0) + { + return CreatedAtAction(nameof(Get), + (await _manager.SkinsMgr.AddItem(skin.ToModelC(dtos.First()))).ToDtoC()); + } + _logger.LogWarning($"Name : {skin.Name} is already exist"); + return BadRequest($"Name : {skin.Name} is already exist"); + } + } + else + { + return BadRequest("Please fill in the name of the champion"); + } + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } + } + + // PUT api//5 + [HttpPut("{name}")] + public async Task Put(string name, [FromBody] SkinDtoC skin) + { + _logger.LogInformation("method {Action} - SKIN call with {name} and {item}", nameof(Put), name, skin); + try + { + var dtos = (await _manager.SkinsMgr.GetItemByName(name, 0, await _manager.SkinsMgr.GetNbItems())); + if (dtos.IsNullOrEmpty()) + { + return NotFound($"Name {name} not exist"); + } + // Checks if the new name exists + if (name != skin.Name) + { + var dtos2 = (await _manager.SkinsMgr.GetItemByName(skin.Name, 0, await _manager.SkinsMgr.GetNbItems())); + if (dtos2.IsNullOrEmpty() || dtos2.Count() > 0) + { + return BadRequest($"New Name {skin.Name} is already exist"); + } + } + var dtosChampion = (await _manager.ChampionsMgr.GetItemByName(skin.ChampionName, 0, await _manager.ChampionsMgr.GetNbItems())); + if (dtosChampion.IsNullOrEmpty()) + { + _logger.LogWarning($"Champion Name : {skin.ChampionName} not exist"); + return BadRequest($"Champion Name : {skin.ChampionName} not exist"); + } + return Ok((await _manager.SkinsMgr.UpdateItem(dtos.First(), skin.ToModelC(dtosChampion.First()))).ToDtoC()); + + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } + } + + [HttpGet("/{name}/champion")] + public async Task> GetChampionBySkinName(string name) + { + _logger.LogInformation("method {Action} - Skin call with {name}", nameof(GetChampionBySkinName), name); + try + { + var dtos = (await _manager.SkinsMgr.GetItemByName(name, 0, await _manager.ChampionsMgr.GetNbItems())) + .Select(x => x.ToDtoC()); + if (dtos.IsNullOrEmpty()) + { + _logger.LogWarning($"{name} was not found"); + return NotFound($"{name} was not found"); + } + var champion = (await _manager.ChampionsMgr.GetItemByName(dtos.First().ChampionName, 0, 1)); + return Ok(champion.First().ToDto()); + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } + } + + + [HttpGet("/countSkins")] + public async Task> GetCountSkins() + { + try + { + return Ok(await _manager.SkinsMgr.GetNbItems()); + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } + } + + // DELETE api//5 + [HttpDelete("{name}")] + public async Task Delete(string name) + { + _logger.LogInformation("method {Action} - SKIN call with {name}", nameof(Delete), name); + try + { + var dtos = (await _manager.SkinsMgr.GetItemByName(name, 0, await _manager.SkinsMgr.GetNbItems())); + if (dtos.IsNullOrEmpty()) + { + _logger.LogWarning("{name} was not found", name); + return BadRequest(); + } + return Ok(await _manager.SkinsMgr.DeleteItem(dtos.First())); + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } + } + } +} diff --git a/src/EntityFramework_LoL/Sources/ApiLol/Controllers/v1/ChampionsController.cs b/src/EntityFramework_LoL/Sources/ApiLol/Controllers/v1/ChampionsController.cs index 3511001..c565858 100644 --- a/src/EntityFramework_LoL/Sources/ApiLol/Controllers/v1/ChampionsController.cs +++ b/src/EntityFramework_LoL/Sources/ApiLol/Controllers/v1/ChampionsController.cs @@ -67,6 +67,20 @@ namespace ApiLol.Controllers.v1 } + [HttpGet("/countChampions")] + public async Task> GetCountChampions() + { + try + { + return Ok(await _manager.ChampionsMgr.GetNbItems()); + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } + } + // DELETE api//5 [HttpDelete("{name}")] public async Task Delete(string name) diff --git a/src/EntityFramework_LoL/Sources/ApiLol/Controllers/v2/ChampionsController.cs b/src/EntityFramework_LoL/Sources/ApiLol/Controllers/v2/ChampionsController.cs index 75d4f3c..457cb91 100644 --- a/src/EntityFramework_LoL/Sources/ApiLol/Controllers/v2/ChampionsController.cs +++ b/src/EntityFramework_LoL/Sources/ApiLol/Controllers/v2/ChampionsController.cs @@ -1,220 +1,242 @@ -using ApiLol.Mapper; -using Azure.Core; -using DTO; -using Microsoft.AspNetCore.Mvc; -using Microsoft.IdentityModel.Tokens; -using Model; - -// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860 - -namespace ApiLol.Controllers.v2 -{ - [ApiVersion("2.0")] - [ApiVersion("3.0")] - [Route("api/v{version:apiVersion}/[controller]")] - [ApiController] - public class ChampionsController : ControllerBase - { - private readonly IDataManager _manager; - private readonly ILogger _logger; - public ChampionsController(IDataManager dataManager, ILogger logger) - { - _logger = logger; - this._manager = dataManager; - } - - // GET: api/ - [HttpGet] - public async Task Get([FromQuery] PageRequest pageRequest) - { - _logger.LogInformation("Executing {Action} - CHAMPION - V2.0 with parameters: {Parameters}", nameof(Get), pageRequest.count); - try - { - int nbTotal = await _manager.ChampionsMgr.GetNbItems(); - if (pageRequest.count == 0) - { - pageRequest = new PageRequest() { index = 0, count = nbTotal, orderingPropertyName = pageRequest.orderingPropertyName, descending = pageRequest.descending, name = pageRequest.name }; - } - else if (pageRequest.count * pageRequest.index >= nbTotal) - { - _logger.LogWarning($"too many, maximum {nbTotal}"); - return BadRequest($"Champion limit exceed, max {nbTotal}"); - } - - IEnumerable dtos = (await _manager.ChampionsMgr.GetItems(pageRequest.index, pageRequest.count)) - .Select(x => x.ToDto()); - return Ok(dtos); - } - catch (Exception error) - { - return BadRequest(error.Message); - } - } - - // GET: api/ - [HttpGet, MapToApiVersion("3.0")] - public async Task GetV3([FromQuery] PageRequest pageRequest) - { - _logger.LogInformation("Executing {Action} - CHAMPION - V3.0 with parameters: {Parameters}", nameof(Get), pageRequest); - try - { - int nbTotal = await _manager.ChampionsMgr.GetNbItems(); - if (pageRequest.count == 0) - { - pageRequest = new PageRequest() { index = 0, count = nbTotal, orderingPropertyName = pageRequest.orderingPropertyName, descending = pageRequest.descending, name = pageRequest.name }; - } - else if (pageRequest.count * pageRequest.index >= nbTotal || pageRequest.count > nbTotal) - { - _logger.LogWarning("too many, maximum {number}", nbTotal); - return BadRequest($"Champion limit exceed, max {nbTotal}"); - } - - IEnumerable dtos; - if (pageRequest.name == null) - { - dtos = (await _manager.ChampionsMgr.GetItems(pageRequest.index, pageRequest.count, pageRequest.orderingPropertyName, pageRequest.descending)) - .Select(x => x.ToDto()); - } - else - { - dtos = (await _manager.ChampionsMgr.GetItemsByName(pageRequest.name, pageRequest.index, pageRequest.count, pageRequest.orderingPropertyName, pageRequest.descending)) - .Select(x => x.ToDto()); - } - return Ok(new { Data = dtos, index = pageRequest.index, count = pageRequest.count, total = nbTotal }); - } - catch (Exception error) - { - return BadRequest(error.Message); - } - } - - // GET api//5 - [HttpGet("{name}")] - public async Task Get(string name) - { - _logger.LogInformation("method {Action} - CHAMPION - V2.0 call with {name}", nameof(Get), name); - try - { - var dtos = (await _manager.ChampionsMgr.GetItemByName(name, 0, await _manager.ChampionsMgr.GetNbItems())) - .Select(x => x.ToDto()); - if (dtos.IsNullOrEmpty()) - { - _logger.LogWarning($"{name} was not found"); - return NotFound($"{name} was not found"); - } - return Ok(dtos.First()); - } - catch (Exception error) - { - return BadRequest(error.Message); - } - } - - // POST api/ - [HttpPost] - public async Task Post([FromBody] ChampionDto champion) - { - _logger.LogInformation("method {Action} - CHAMPION - V2.0 call with {item}", nameof(Post), champion); - try - { - if (await _manager.ChampionsMgr.GetNbItemsByName(champion.Name) == 0) - { - return CreatedAtAction(nameof(Get), - (await _manager.ChampionsMgr.AddItem(champion.ToModel())).ToDto()); - } - _logger.LogWarning($"Name : {champion.Name} is already exist"); - return BadRequest($"Name : {champion.Name} is already exist"); - } - catch (Exception error) - { - return BadRequest(error.Message); - } - } - - // PUT api//5 - [HttpPut("{name}")] - public async Task Put(string name, [FromBody] ChampionDto champion) - { - _logger.LogInformation("method {Action} - CHAMPION - V2.0 call with {name} and {item}", nameof(Put), name, champion); - try - { - var dtos = (await _manager.ChampionsMgr.GetItemByName(name, 0, await _manager.ChampionsMgr.GetNbItems())); - if (dtos.IsNullOrEmpty()) - { - return NotFound($"Name {name} not exist"); - } - // Checks if the new name exists - if (name != champion.Name) - { - var dtos2 = (await _manager.ChampionsMgr.GetItemByName(champion.Name, 0, await _manager.ChampionsMgr.GetNbItems())); - if (dtos2.IsNullOrEmpty() || dtos2.Count() > 0) - { - return BadRequest($"New Name {champion.Name} is already exist"); - } - } - return Ok((await _manager.ChampionsMgr.UpdateItem(dtos.First(), champion.ToModel())).ToDto()); - } - catch (Exception error) - { - return BadRequest(error.Message); - } - } - - [HttpGet("/{name}/skins")] - public async Task> GetChampionsSkins(string name) - { - _logger.LogInformation("method {Action} - CHAMPION - V2.0 call with {name}", nameof(GetChampionsSkins), name); - try - { - var champions = await _manager.ChampionsMgr.GetItemByName(name, 0, await _manager.ChampionsMgr.GetNbItems()); - //skinsDTO - IEnumerable res = champions.First().Skins.Select(e => e.ToDto()); - - return Ok(res); - } - catch (Exception error) - { - return BadRequest(error.Message); - } - } - - [HttpGet("/{name}/skills")] - public async Task> GetChampionsSkills(string name) - { - try - { - _logger.LogInformation("method {Action} - CHAMPION - V2.0 call with {name}", nameof(GetChampionsSkills), name); - var champions = await _manager.ChampionsMgr.GetItemByName(name, 0, await _manager.ChampionsMgr.GetNbItems()); - //SkillDTO - IEnumerable res = champions.First().Skills.Select(e => e.ToDto()); - - return Ok(res); - } - catch (Exception error) - { - return BadRequest(error.Message); - } - } - - // DELETE api//5 - [HttpDelete("{name}")] - public async Task Delete(string name) - { - _logger.LogInformation("method {Action} - CHAMPION - V2.0 call with {name}", nameof(Delete), name); - try - { - var dtos = (await _manager.ChampionsMgr.GetItemByName(name, 0, await _manager.ChampionsMgr.GetNbItems())); - if (dtos.IsNullOrEmpty()) - { - _logger.LogWarning("{name} was not found", name); - return BadRequest(); - } - return Ok(await _manager.ChampionsMgr.DeleteItem(dtos.First())); - } - catch (Exception error) - { - return BadRequest(error.Message); - } - } - } +using ApiLol.Mapper; +using Azure.Core; +using DTO; +using Microsoft.AspNetCore.Mvc; +using Microsoft.IdentityModel.Tokens; +using Model; + +// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860 + +namespace ApiLol.Controllers.v2 +{ + [ApiVersion("2.0")] + [ApiVersion("3.0")] + [Route("api/v{version:apiVersion}/[controller]")] + [ApiController] + public class ChampionsController : ControllerBase + { + private readonly IDataManager _manager; + private readonly ILogger _logger; + public ChampionsController(IDataManager dataManager, ILogger logger) + { + _logger = logger; + this._manager = dataManager; + } + + // GET: api/ + [HttpGet] + public async Task Get([FromQuery] PageRequest pageRequest) + { + _logger.LogInformation("Executing {Action} - CHAMPION - V2.0 with parameters: {Parameters}", nameof(Get), pageRequest); + try + { + int nbTotal = await _manager.ChampionsMgr.GetNbItems(); + if (pageRequest.count == 0) + { + pageRequest = new PageRequest() { index = 0, count = nbTotal, orderingPropertyName = pageRequest.orderingPropertyName, descending = pageRequest.descending, name = pageRequest.name }; + } + else if (pageRequest.count * pageRequest.index >= nbTotal) + { + _logger.LogWarning($"too many, maximum {nbTotal}"); + return BadRequest($"Champion limit exceed, max {nbTotal}"); + } + + IEnumerable dtos = (await _manager.ChampionsMgr.GetItems(pageRequest.index, pageRequest.count)) + .Select(x => x.ToDto()); + return Ok(dtos); + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } + } + + // GET: api/ + [HttpGet, MapToApiVersion("3.0")] + public async Task GetV3([FromQuery] PageRequest pageRequest) + { + _logger.LogInformation("Executing {Action} - CHAMPION - V3.0 with parameters: {Parameters}", nameof(Get), pageRequest); + try + { + int nbTotal = await _manager.ChampionsMgr.GetNbItems(); + if (pageRequest.count == 0) + { + pageRequest = new PageRequest() { index = 0, count = nbTotal, orderingPropertyName = pageRequest.orderingPropertyName, descending = pageRequest.descending, name = pageRequest.name }; + } + else if (pageRequest.count * pageRequest.index >= nbTotal || pageRequest.count > nbTotal) + { + _logger.LogWarning("too many, maximum {number}", nbTotal); + return BadRequest($"Champion limit exceed, max {nbTotal}"); + } + + IEnumerable dtos; + if (pageRequest.name == null) + { + dtos = (await _manager.ChampionsMgr.GetItems(pageRequest.index, pageRequest.count, pageRequest.orderingPropertyName, pageRequest.descending)) + .Select(x => x.ToDto()); + } + else + { + dtos = (await _manager.ChampionsMgr.GetItemsByName(pageRequest.name, pageRequest.index, pageRequest.count, pageRequest.orderingPropertyName, pageRequest.descending)) + .Select(x => x.ToDto()); + } + return Ok(new { Data = dtos, index = pageRequest.index, count = pageRequest.count, total = nbTotal }); + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } + } + + // GET api//5 + [HttpGet("{name}")] + public async Task Get(string name) + { + _logger.LogInformation("method {Action} - CHAMPION - V2.0 call with {name}", nameof(Get), name); + try + { + var dtos = (await _manager.ChampionsMgr.GetItemByName(name, 0, await _manager.ChampionsMgr.GetNbItems())) + .Select(x => x.ToDto()); + if (dtos.IsNullOrEmpty()) + { + _logger.LogWarning($"{name} was not found"); + return NotFound($"{name} was not found"); + } + return Ok(dtos.First()); + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } + } + + // POST api/ + [HttpPost] + public async Task Post([FromBody] ChampionDto champion) + { + _logger.LogInformation("method {Action} - CHAMPION - V2.0 call with {item}", nameof(Post), champion); + try + { + if (await _manager.ChampionsMgr.GetNbItemsByName(champion.Name) == 0) + { + return CreatedAtAction(nameof(Get), + (await _manager.ChampionsMgr.AddItem(champion.ToModel())).ToDto()); + } + _logger.LogWarning($"Name : {champion.Name} is already exist"); + return BadRequest($"Name : {champion.Name} is already exist"); + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } + } + + // PUT api//5 + [HttpPut("{name}")] + public async Task Put(string name, [FromBody] ChampionDto champion) + { + _logger.LogInformation("method {Action} - CHAMPION - V2.0 call with {name} and {item}", nameof(Put), name, champion); + try + { + var dtos = (await _manager.ChampionsMgr.GetItemByName(name, 0, await _manager.ChampionsMgr.GetNbItems())); + if (dtos.IsNullOrEmpty()) + { + return NotFound($"Name {name} not exist"); + } + // Checks if the new name exists + if (name != champion.Name) + { + var dtos2 = (await _manager.ChampionsMgr.GetItemByName(champion.Name, 0, await _manager.ChampionsMgr.GetNbItems())); + if (dtos2.IsNullOrEmpty() || dtos2.Count() > 0) + { + return BadRequest($"New Name {champion.Name} is already exist"); + } + } + return Ok((await _manager.ChampionsMgr.UpdateItem(dtos.First(), champion.ToModel())).ToDto()); + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } + } + + [HttpGet("/{name}/skins")] + public async Task> GetChampionsSkins(string name) + { + _logger.LogInformation("method {Action} - CHAMPION - V2.0 call with {name}", nameof(GetChampionsSkins), name); + try + { + var champions = await _manager.ChampionsMgr.GetItemByName(name, 0, await _manager.ChampionsMgr.GetNbItems()); + //skinsDTO + IEnumerable res = champions.First().Skins.Select(e => e.ToDto()); + + return Ok(res); + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } + } + + [HttpGet("/{name}/skills")] + public async Task> GetChampionsSkills(string name) + { + try + { + _logger.LogInformation("method {Action} - CHAMPION - V2.0 call with {name}", nameof(GetChampionsSkills), name); + var champions = await _manager.ChampionsMgr.GetItemByName(name, 0, await _manager.ChampionsMgr.GetNbItems()); + //SkillDTO + IEnumerable res = champions.First().Skills.Select(e => e.ToDto()); + + return Ok(res); + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } + } + + [HttpGet("/countChampions")] + public async Task> GetCountChampions() + { + try + { + return Ok(await _manager.ChampionsMgr.GetNbItems()); + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } + } + + // DELETE api//5 + [HttpDelete("{name}")] + public async Task Delete(string name) + { + _logger.LogInformation("method {Action} - CHAMPION - V2.0 call with {name}", nameof(Delete), name); + try + { + var dtos = (await _manager.ChampionsMgr.GetItemByName(name, 0, await _manager.ChampionsMgr.GetNbItems())); + if (dtos.IsNullOrEmpty()) + { + _logger.LogWarning("{name} was not found", name); + return BadRequest(); + } + return Ok(await _manager.ChampionsMgr.DeleteItem(dtos.First())); + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } + } + } } \ No newline at end of file diff --git a/src/EntityFramework_LoL/Sources/Tests/ApiTests/SkinsControllerTest.cs b/src/EntityFramework_LoL/Sources/Tests/ApiTests/SkinsControllerTest.cs index 1af73aa..1cc4c36 100644 --- a/src/EntityFramework_LoL/Sources/Tests/ApiTests/SkinsControllerTest.cs +++ b/src/EntityFramework_LoL/Sources/Tests/ApiTests/SkinsControllerTest.cs @@ -40,9 +40,9 @@ namespace ApiTests Assert.AreEqual(skinsResult.Count(), total); - } + }*/ - [TestMethod] +/* [TestMethod] public async Task TestPostSkin() { //Arange @@ -62,9 +62,9 @@ namespace ApiTests var champions = objectResult?.Value as Ski; Assert.IsNotNull(champions); - } + }*/ - [TestMethod] +/* [TestMethod] public async Task TestPutSkin() { //Arange