From 6323399018d47c25a24571f56a64196c8e07dd1a Mon Sep 17 00:00:00 2001 From: tonyfages Date: Sat, 9 Mar 2024 09:52:37 +0100 Subject: [PATCH 01/19] ADD pagination + Filtrage --- Verax_API_EF/Verax_API_EF/API/API.csproj | 1 + .../API/Controllers/ArticleController.cs | 9 ++- .../API/Entity_FrameWork.Article.db | Bin 4096 -> 45056 bytes .../API/Entity_FrameWork.Article.db-shm | Bin 32768 -> 0 bytes .../API/Entity_FrameWork.Article.db-wal | Bin 49472 -> 0 bytes .../API_DbDataManager/DbManagerArticle.cs | 71 +++++++++++++++--- .../API_Services/IArticleService.cs | 11 ++- .../Model/ArticleOrderCriteria.cs | 6 ++ .../Verax_API_EF/Model/FormOrderCriteria.cs | 6 ++ .../Verax_API_EF/Model/UserOrderCriteria.cs | 6 ++ 10 files changed, 92 insertions(+), 18 deletions(-) delete mode 100644 Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-shm delete mode 100644 Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-wal create mode 100644 Verax_API_EF/Verax_API_EF/Model/ArticleOrderCriteria.cs create mode 100644 Verax_API_EF/Verax_API_EF/Model/FormOrderCriteria.cs create mode 100644 Verax_API_EF/Verax_API_EF/Model/UserOrderCriteria.cs diff --git a/Verax_API_EF/Verax_API_EF/API/API.csproj b/Verax_API_EF/Verax_API_EF/API/API.csproj index 01ea7d9..e993a90 100644 --- a/Verax_API_EF/Verax_API_EF/API/API.csproj +++ b/Verax_API_EF/Verax_API_EF/API/API.csproj @@ -26,6 +26,7 @@ + diff --git a/Verax_API_EF/Verax_API_EF/API/Controllers/ArticleController.cs b/Verax_API_EF/Verax_API_EF/API/Controllers/ArticleController.cs index d83ebb8..b5b096c 100644 --- a/Verax_API_EF/Verax_API_EF/API/Controllers/ArticleController.cs +++ b/Verax_API_EF/Verax_API_EF/API/Controllers/ArticleController.cs @@ -1,3 +1,4 @@ +using API_Mapping; using API_Services; using Microsoft.AspNetCore.Mvc; using Model; @@ -18,9 +19,9 @@ namespace API.Controllers } [HttpGet] - public async Task GetAllArticles() + public async Task GetAllArticles([FromQuery] int index = 0, [FromQuery] int count = 10, [FromQuery] ArticleOrderCriteria orderCriterium = ArticleOrderCriteria.None) { - var result = await _articleService.GetAllArticles(); + var result = (await _articleService.GetAllArticles(index, count, orderCriterium)).Select(a => a.ToDTO()); if (result == null) { return NotFound(); @@ -29,9 +30,9 @@ namespace API.Controllers } [HttpGet("/article/{id}")] - public async Task GetArticleById(int id) + public async Task GetArticleById(int id, [FromQuery] int index = 0, [FromQuery] int count = 10, [FromQuery] ArticleOrderCriteria orderCriterium = ArticleOrderCriteria.None) { - var result = await _articleService.GetArticleById(id); + var result = await _articleService.GetArticleById(id, index, count, orderCriterium); if (result == null) { return null; diff --git a/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db b/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db index 9a472209435d88229f65ab7a0ca30d67df87a462..2cd90a9663b869eae1efcea320e2fc466a3588bf 100644 GIT binary patch literal 45056 zcmeI*&u`mQ00(gYNa`e2>j_jvQxAL1#Avj3X;R7r2x(dCjA%(3k`#4^sY;XA#%f}B zwnOOwp^gdu0*;&!e+MTnpj|j|K!OPggaiV?0VH_Oaems_c0pRFueHoS-Y>t;dv@aF z*{!}^&>cz+Osi9O$hvSrkR;&-A%Y;t>@~|?{Yha9q5cY+izCa^7G>eu!B2B@J3>s^ z5au7we=v79_V3&a(MIIU$gZ*xnVXgn+aUk}2tWV=&z!*7PE?6szb@X-JN5lG-P_Z0 zMg7pKJGyDuZ|SyUTBm^UyRcn=OzEmTL^6kAT`IIa9VzzRJ+}7@_^s+2lX0zLH-l3Mwc6B1xSTY}*iQm00 z3cAsx@7ed-?32M>z3Z6ndT=Rw>A=Eg&4?0zV^KU?aMR{@_j2qLMwL2yJ2tg6!_l47 zeAC+&^;GhuEp3-1rbJGV?Gj0NNf=UMG^a%JEUqZ=?UZ=-X1~O&<>-wz9Yz}~+ZP(~ z?S(JOSO&fQ@x}4)*@qWrl=$MJ_)*mDEnW@0nKIrZhSlpe7;k#k%GxchGPU&wX-3+c zWOr)Y`4Y>#sFiA7>(^SeLnj*D3)-qXwA|fq>kYRP2S+OC#!+xc*{0p585}nB52{SB z{L%iLyFJ!dCi_f+1YhN!Q6)mS#w9=+lC2j{{$$5*gqLaM;Y-t6J9eSlIJizOdi2r2PYO8j`+Z5v-}`Zk2e+shX|IC`I^+6gat|9J4XwV#I_?g534HvO_M z+m)WhpqQjTTc+;Iw!eipfp1U8TVXOdIo1$f=wsXBDR+sp{=Z!!8=i^pq^6w&{YYuw zrWy8z72$7M_b#iY}aX-)65mw({ie4&SDZXqIgPstJHuPgUxlVMOm|cg|jV93@ z7S(A{vQKS?G+JiEY_qRJ34NDZnYB!2b&dUdwU(GOF4FvjF%wS%nqq`bf=|@ijeQHB5qo=exw_Rq(o0_qP2CqzE7PN$&f9bHhFpM zs}gDu^MGi^VVl>c$pVODHtVN^{h-gQRX?OW!fPAD%1DEv-0Oe!8$tb5{hrM*K>z{} zfB*y_009U<00Izz00ba#ZUkm!c~SJng~_uLTk(d9$n&DSBo2oz$i3_T6G45bex{zB zn+jq_ApijgKmY;|fB*y_009U<00QSh;F=r}78c?!zO=+f6cp2$^;g{S1$^a7@p6aV zL~*TQc8X^6i_h6@g{HMEdGQz6FZWd*-yJBxRvfc)qaUANgJ1uL)$auLZ}kuL7xhQBhzSA^fB*y_009U<00Izz00bZa zfpaDh4$Gn_%b}1Q73HwZSER7SW)k~Pjz(jwK4JA+e*OQu`m_22Tf_tb2tWV=5P$## zAOHafKmY;|fWSEtP(mWV_7Bg5M0W8Xa#tl;?#(4B6pBWpz48A?g8H@ksd{vdDu-Q# z00bZa0SG_<0uX=z1Rwwb2t1ntYwY2KbLrKK?v43mos2yBztwV%Ur(hD*x$%m=L7%w zt@~tMUSp3M9Hw9o{Tu$RfRPlLL5hr&Vowg_DWYx;=_x7FgB0oB@Bfbk^&j;w^*1&G z;L)>*hrNOT1Rwwb2tWV=5P$##AOHafK;Q`i?mYnBodA59{r1mp2MEdD_0(|^GuK%aVxv8fp_le*(}X$v0A3{rcK`qY diff --git a/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-shm b/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-shm deleted file mode 100644 index 5e1d0731e4700e9719d024cff0e22a037ec27e19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 zcmeI*J!%3`6b8`I7~@ZnfQ^eVyT}$|Be(!bk#)EVOP7)*m^M`)O>hB;_YNW0+Ri;6 zTpkR=%zJ10Zx$bqO{O2yYnq4qSf??o-RbbX-@d#(k3KiE_0xR*y8JnQy)Ul3KOWU4 zpZj}}zsvtiyu01QO{{~M+n8a@UCbzE9FzA{$%btedx&z_5y zvv=?8HJ3b~=&naAP=$ms` z?mE4fO1-)iInCz<^n<_FGpT+TE=w~#E*CZ;@k3u z!eMVY=Jdwh$;k>6i>)$KccyMmUQN6=`DnZzdznOl0|Gz*2mk>f00bT?0%lB*&d;#B z)4I{X*R!kD74i+EjIC;=i#v*8>DG;G!;OnCmz1=opsbovR*^g=vy2KVlHDRQnv;hm z$;n+w5Trti-F?!lG2OBBdJ7M-jno}TjRjf}$TA|pX-^6#sN=PkeNUh{@Xt|)4wNjeIBe{6lBP*j~DVtB1 z*3e~T4W%nuA*&MMc}3Oc9bsA%x3P>gWt9kWg}F(YnuUwK^_E_*S-NS2XUgfuW_U`m zi+c?-JZ-=~tTRsi!#!H*_sGWWw;36&6iQ0=l4^I;Zw08NtSBW#T~^A-HV{&rYJ^ms zr1q0hatg7u<#c&Dolz3W{i6{ zh{8iE9ajBZK29~k&!cLsXPI``<1o-}bs@lw{!oh1*?jLfZ;$-_Y1_Kow!26?=zj-UD^Bi<4hi3bh{00AHX1b_e#00KY&2mk>f00e-*At12M z3(To6&Bl-CAJ2cRiwwMjI=HTHVSgCuU1atwR5Kb#w@6m2iP1XlTBzPM>t>5AlOp^@ z+*v%cxOnOe`S%G&LJ2o&oWP`ZX4&IpnbodAFE&jBqlL49i1D>-*+oWc;5D<2%5B|h z>a4(I+oXz%9bDVgjcZ87J6)u-^loh(TTQfxGCFS1`p6OrHjuf26ysWp_NGA+kYzS% zHxT(lKkZiS8m1YZI6LSJ*RP5wm8XjJ_7PmET)eaK;ya(T*9F8^8S$R@N8*740zd!= z00AHX1b_e#00KY&2mk>f00a&Vfg?OW!@4`t_#+$%xLZs3DVCpQ2U{KJnt*)Erf(1R8ief1*teW1Oy=?Y!Ce*>^fM%k0c?ZvJWVm;N%%Z*MFh z0n2P(@bc3i|EJg(BTY-wNl7z}8!I&H3fVExr6G&FE?o0+ryFhEAh4non71zQ+F!oB z^Vq#_uhVsbsQ3p)yf6Msd`of00e*l5C8%|00;m9AOHjo5dk5>(lvqTM1&=a0uejN@x0@6TqF{=*98RH zC2zmL|JXNv9V-_9=$^Q5&tW`EB=G*7f00e*l5C8%|00_Jf0sAb0d!m58Cwm3Rv4RNioFkxT3F6+m zfO-2jU%!7Vu}#+nc<~-x7x*{vzySdu00e*l5C8%|00;m9AOHk_01yBI4*>z^x&dc# zz+D$$X}7#}fv-IG_VvH9U#pg{(|J|!MbU5Kcjca1;RH%BNNLdC9Nq)OJB?>NDj>- zqqzhkPVS4$He{qJs~S=Z7B`nVd>V5Y{QLW{BssY&34&BevAa)t zHM&n@8e|)(JCGU+v?7pYM1a$tK%QXBo<24qNHa6+GjZEm+#a}|FlrHl?l}shswY}j zE-9t4+V7Vc(l<(1v_e)T!t;u%x!NbsyKZBj(%qyCd0=<3x8Bn0wh@PC%IU^tcuKL0 zdkr%@ZNNXQGfw@(_Pla=#8&(^Bcqi(g3U0zOSltgm>Xhe`wDfZcdt($;00};_teFf6{qxT@)mfhmscnIn`h=&aK zkV=PDKNk=?@381slMIR_)B|F@7^;FmOGmZfPfm^~!cBdkE)LiviuHpviF9;As-(tE zfKLd{QYU$y4<$AUS!mg+}OVTgbfz|yx%V~tp2c(|Df@iZ)}AR zT-9ucClou_7?+kOSLuhBDw!?+BX=N*HWht39sbL&sd z-6r;b5pZSXaNX*4u%^@L-T!gn=1KRgrrGgTkw_9#rCS5~>jK@G@Bg@ce)GHb5A&lm z1so6n0zd!=00AHX1b_e#00KY&2mk>f@DLNAfBQe;?H73Q?XN!7`oi<~?8O3D7kG%( e4qXERKmZ5;0U!VbfB+Bx0zd!=00AJtF#iXf`BNnT diff --git a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerArticle.cs b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerArticle.cs index adf65c2..b37ea0f 100644 --- a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerArticle.cs +++ b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerArticle.cs @@ -14,8 +14,68 @@ public class DbManagerArticle : IArticleService { _context = context; } + public async Task> GetAllArticles(int index, int count, ArticleOrderCriteria orderCriterium) + { + List
articles = new List
(); + + switch (orderCriterium) + { + case ArticleOrderCriteria.None: + articles = _context.ArticleSet.Select(a => a.ToModel()).ToList(); + break; + case ArticleOrderCriteria.ByLectureTime: + articles = _context.ArticleSet.OrderBy(a => a.LectureTime).Select(a => a.ToModel()).ToList(); + break; + case ArticleOrderCriteria.ByTitle: + articles = _context.ArticleSet.OrderBy(a => a.Title).Select(a => a.ToModel()).ToList(); + break; + case ArticleOrderCriteria.ByAuthor: + articles = _context.ArticleSet.OrderBy(a => a.Author).Select(a => a.ToModel()).ToList(); + break; + case ArticleOrderCriteria.ByDatePublished: + articles = _context.ArticleSet.OrderBy(a => a.DatePublished).Select(a => a.ToModel()).ToList(); + break; + case ArticleOrderCriteria.ByDescription: + articles = _context.ArticleSet.OrderBy(a => a.Description).Select(a => a.ToModel()).ToList(); + break; + default: + articles = _context.ArticleSet.Select(a => a.ToModel()).ToList(); + break; + } + return await Task.FromResult(articles.AsEnumerable()); + } + public Task GetArticleById(int id, int index, int count, ArticleOrderCriteria orderCriterium) + { + List
articles = new List
(); + switch (orderCriterium) + { + case ArticleOrderCriteria.None: + articles = _context.ArticleSet.Where(a => a.Id == id).Select(a => a.ToModel()).ToList(); + break; + case ArticleOrderCriteria.ByLectureTime: + articles = _context.ArticleSet.Where(a => a.Id == id).OrderBy(a => a.LectureTime).Select(a => a.ToModel()).ToList(); + break; + case ArticleOrderCriteria.ByTitle: + articles = _context.ArticleSet.Where(a => a.Id == id).OrderBy(a => a.Title).Select(a => a.ToModel()).ToList(); + break; + case ArticleOrderCriteria.ByAuthor: + articles = _context.ArticleSet.Where(a => a.Id == id).OrderBy(a => a.Author).Select(a => a.ToModel()).ToList(); + break; + case ArticleOrderCriteria.ByDatePublished: + articles = _context.ArticleSet.Where(a => a.Id == id).OrderBy(a => a.DatePublished).Select(a => a.ToModel()).ToList(); + break; + case ArticleOrderCriteria.ByDescription: + articles = _context.ArticleSet.Where(a => a.Id == id).OrderBy(a => a.Description).Select(a => a.ToModel()).ToList(); + break; + default: + articles = _context.ArticleSet.Where(a => a.Id == id).Select(a => a.ToModel()).ToList(); + break; + } + return Task.FromResult(articles.FirstOrDefault()); + } + public async Task CreateArticle(long id, string title, string description, string author, string date, int lectureTime) { var entity = new Entities.ArticleEntity() @@ -56,14 +116,5 @@ public class DbManagerArticle : IArticleService return true; } - public Task GetArticleById(int id) - { - var entity = _context.ArticleSet.FirstOrDefault(a => a.Id == id); - return Task.FromResult(entity.ToModel()); - } - - public async Task> GetAllArticles() - { - return await Task.FromResult(_context.ArticleSet.Select(a => a.ToModel()).AsEnumerable()); - } + } \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/API_Services/IArticleService.cs b/Verax_API_EF/Verax_API_EF/API_Services/IArticleService.cs index 2bbeac2..28a2851 100644 --- a/Verax_API_EF/Verax_API_EF/API_Services/IArticleService.cs +++ b/Verax_API_EF/Verax_API_EF/API_Services/IArticleService.cs @@ -4,6 +4,12 @@ namespace API_Services { public interface IArticleService { + + Task> GetAllArticles(int index, int count, ArticleOrderCriteria orderCriterium); + + Task GetArticleById(int id, int index, int count, ArticleOrderCriteria orderCriterium); + + Task CreateArticle(long id, string title, string description, string author, string date, int lectureTime); @@ -11,9 +17,6 @@ namespace API_Services Task UpdateArticle(long id, Article? a); - Task GetArticleById(int id); - - Task> GetAllArticles(); - + } } diff --git a/Verax_API_EF/Verax_API_EF/Model/ArticleOrderCriteria.cs b/Verax_API_EF/Verax_API_EF/Model/ArticleOrderCriteria.cs new file mode 100644 index 0000000..bf34437 --- /dev/null +++ b/Verax_API_EF/Verax_API_EF/Model/ArticleOrderCriteria.cs @@ -0,0 +1,6 @@ +namespace Model; + +public enum ArticleOrderCriteria +{ + None, ByTitle, ByAuthor, ByLectureTime, ByDatePublished, ByDescription +} \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/Model/FormOrderCriteria.cs b/Verax_API_EF/Verax_API_EF/Model/FormOrderCriteria.cs new file mode 100644 index 0000000..f36ca89 --- /dev/null +++ b/Verax_API_EF/Verax_API_EF/Model/FormOrderCriteria.cs @@ -0,0 +1,6 @@ +namespace Model; + +public enum FormOrderCriteria +{ + None, ByTheme, ByDate, ByPseudo, ByLien +} \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/Model/UserOrderCriteria.cs b/Verax_API_EF/Verax_API_EF/Model/UserOrderCriteria.cs new file mode 100644 index 0000000..a7966db --- /dev/null +++ b/Verax_API_EF/Verax_API_EF/Model/UserOrderCriteria.cs @@ -0,0 +1,6 @@ +namespace Model; + +public enum UserOrderCriteria +{ + None, ByFirstName, ByLastName +} \ No newline at end of file From 660c6d8efbb6b83326e69689c79519e78d7e0b5f Mon Sep 17 00:00:00 2001 From: Louis LABORIE Date: Sat, 9 Mar 2024 10:27:55 +0100 Subject: [PATCH 02/19] =?UTF-8?q?Update=20Form=20&=20User=20services=20wit?= =?UTF-8?q?h=20filters=20&=20update=20Form=20&=20User=20controllers=20?= =?UTF-8?q?=F0=9F=94=A5=F0=9F=94=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../API/Controllers/FormulaireController.cs | 33 ++++++++++++------- .../API/Controllers/UserController.cs | 32 ++++++++++++------ .../API_DbDataManager/DbManagerFormulaire.cs | 26 +++++++++++++-- .../API_DbDataManager/DbManagerUser.cs | 22 +++++++++++-- .../API_Services/IFormulaireService.cs | 2 +- .../Verax_API_EF/API_Services/IUserService.cs | 2 +- 6 files changed, 90 insertions(+), 27 deletions(-) diff --git a/Verax_API_EF/Verax_API_EF/API/Controllers/FormulaireController.cs b/Verax_API_EF/Verax_API_EF/API/Controllers/FormulaireController.cs index db249bd..72c54b5 100644 --- a/Verax_API_EF/Verax_API_EF/API/Controllers/FormulaireController.cs +++ b/Verax_API_EF/Verax_API_EF/API/Controllers/FormulaireController.cs @@ -4,6 +4,7 @@ using Model; using System; using System.Collections.Generic; using System.Threading.Tasks; +using API_Mapping; namespace API.Controllers { @@ -18,34 +19,44 @@ namespace API.Controllers this._form = iform; } - [HttpGet("/forms/{id}")] - public Task> GetAllForm() + [HttpGet("/forms")] + public async Task GetAllForm([FromQuery] int index = 0, [FromQuery] int count = 10, [FromQuery] FormOrderCriteria orderCriteria = FormOrderCriteria.None) { - throw new NotImplementedException(); + var result = (await _form.GetAllForm(index, count, orderCriteria)).Select(f => f.ToDTO()); + if (result == null) + { + return NotFound(); + } + return Ok(result); } [HttpGet("{id}")] - public Task GetById(long id) + public async Task GetById(long id) { - throw new NotImplementedException(); + var result = (await _form.GetById(id)).ToDTO(); + if (result == null) + { + return NotFound(); + } + return Ok(result); } [HttpPost] - public Task CreateForm(Formulaire formulaire) + public async Task CreateForm(Formulaire formulaire) { - throw new NotImplementedException(); + return await _form.CreateForm(formulaire); } [HttpDelete("{id}")] - public Task DeleteForm(long id) + public async Task DeleteForm(long id) { - throw new NotImplementedException(); + return await _form.DeleteForm(id); } [HttpPut("{id}")] - public Task UpdateForm(long id, Formulaire formulaire) + public async Task UpdateForm(long id, Formulaire formulaire) { - throw new NotImplementedException(); + return await _form.UpdateForm(id, formulaire); } } } \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/API/Controllers/UserController.cs b/Verax_API_EF/Verax_API_EF/API/Controllers/UserController.cs index 6a90231..cdf20e7 100644 --- a/Verax_API_EF/Verax_API_EF/API/Controllers/UserController.cs +++ b/Verax_API_EF/Verax_API_EF/API/Controllers/UserController.cs @@ -2,6 +2,7 @@ using Microsoft.AspNetCore.Mvc; using API_Services; using Model; +using API_Mapping; namespace API.Controllers @@ -18,34 +19,45 @@ namespace API.Controllers } [HttpPost("/user")] - public Task Create(User user) + public async Task Create(User user) { - throw new NotImplementedException(); + return await _us.Create(user); } [HttpPut("/user/{pseudo}")] - public Task Update(User user) + public async Task Update(User user) { - throw new NotImplementedException(); + return await _us.Update(user); } [HttpDelete("/user/{pseudo}")] - public Task Delete(string pseudo) + public async Task Delete(string pseudo) { - throw new NotImplementedException(); + return await _us.Delete(pseudo); } [HttpGet("/user/{pseudo}")] - public Task GetByPseudo(string pseudo) + public async Task GetByPseudo(string pseudo) { - throw new NotImplementedException(); + var result = (await _us.GetByPseudo(pseudo)).ToDTO(); + if (result == null) + { + return NotFound(); + } + return Ok(result); } [HttpGet("/users")] - public Task> GetAll() + public async Task GetAll([FromQuery] int index = 0, [FromQuery] int count = 10, [FromQuery] UserOrderCriteria orderCriteria = UserOrderCriteria.None) { - throw new NotImplementedException(); + var result = (await _us.GetAll(index, count, orderCriteria)).Select(u => u.ToDTO()); + if (result == null) + { + return NotFound(); + } + return Ok(result); + } } } diff --git a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerFormulaire.cs b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerFormulaire.cs index b459078..2f879cd 100644 --- a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerFormulaire.cs +++ b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerFormulaire.cs @@ -15,9 +15,31 @@ public class DbManagerFormulaire : IFormulaireService _context = context; } - public async Task> GetAllForm() + public async Task> GetAllForm(int index, int count, FormOrderCriteria orderCriteria) { - return await Task.FromResult(_context.FormSet.Select(f => f.ToModel()).AsEnumerable()); + List formulaireList = new List(); + switch (orderCriteria) + { + case FormOrderCriteria.None: + formulaireList = _context.FormSet.Select(f => f.ToModel()).ToList(); + break; + case FormOrderCriteria.ByTheme: + formulaireList = _context.FormSet.OrderBy(f => f.Theme).Select(f => f.ToModel()).ToList(); + break; + case FormOrderCriteria.ByLien: + formulaireList = _context.FormSet.OrderBy(f => f.Link).Select(f => f.ToModel()).ToList(); + break; + case FormOrderCriteria.ByDate: + formulaireList = _context.FormSet.OrderBy(f => f.DatePublication).Select(f => f.ToModel()).ToList(); + break; + case FormOrderCriteria.ByPseudo: + formulaireList = _context.FormSet.OrderBy(f => f.Pseudo).Select(f => f.ToModel()).ToList(); + break; + default: + formulaireList = _context.FormSet.Select(f => f.ToModel()).ToList(); + break; + } + return await Task.FromResult(formulaireList.AsEnumerable()); } public async Task GetById(long id) diff --git a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerUser.cs b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerUser.cs index e7ce2c4..32326da 100644 --- a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerUser.cs +++ b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerUser.cs @@ -60,8 +60,26 @@ public class DbManagerUser: IUserService return await Task.FromResult(entity.ToModel()); } - public async Task> GetAll() + public async Task> GetAll(int index, int count, UserOrderCriteria orderCriteria) { - return await Task.FromResult(_context.UserSet.Select(u => u.ToModel()).AsEnumerable()); + List users = new List(); + switch(orderCriteria) + { + case UserOrderCriteria.None: + users = _context.UserSet.Select(u => u.ToModel()).ToList(); + break; + case UserOrderCriteria.ByFirstName: + users = _context.UserSet.OrderBy(u => u.Prenom).Select(u => u.ToModel()).ToList(); + break; + case UserOrderCriteria.ByLastName: + users = _context.UserSet.OrderBy(u => u.Nom).Select(u => u.ToModel()).ToList(); + break; + default: + users = _context.UserSet.Select(u => u.ToModel()).ToList(); + break; + + } + return await Task.FromResult(users.AsEnumerable()); + } } \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/API_Services/IFormulaireService.cs b/Verax_API_EF/Verax_API_EF/API_Services/IFormulaireService.cs index e3159c0..9374d8b 100644 --- a/Verax_API_EF/Verax_API_EF/API_Services/IFormulaireService.cs +++ b/Verax_API_EF/Verax_API_EF/API_Services/IFormulaireService.cs @@ -5,7 +5,7 @@ namespace API_Services; public interface IFormulaireService { - Task> GetAllForm(); + Task> GetAllForm(int index, int count, FormOrderCriteria orderCriteria); Task GetById(long id); diff --git a/Verax_API_EF/Verax_API_EF/API_Services/IUserService.cs b/Verax_API_EF/Verax_API_EF/API_Services/IUserService.cs index 480cb43..398d436 100644 --- a/Verax_API_EF/Verax_API_EF/API_Services/IUserService.cs +++ b/Verax_API_EF/Verax_API_EF/API_Services/IUserService.cs @@ -12,7 +12,7 @@ namespace API_Services Task GetByPseudo(string pseudo); - Task> GetAll(); + Task> GetAll(int index, int count, UserOrderCriteria orderCriteria); From c70cd3cc0d03f51533b100d22886d825a24e69af Mon Sep 17 00:00:00 2001 From: Louis LABORIE Date: Sat, 9 Mar 2024 10:39:10 +0100 Subject: [PATCH 03/19] =?UTF-8?q?Fix=20update=20method=20&=20put=20request?= =?UTF-8?q?=20for=20Users=20=F0=9F=94=A5=F0=9F=94=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../API/Controllers/UserController.cs | 4 ++-- .../API/Entity_FrameWork.Article.db-shm | Bin 0 -> 32768 bytes .../API/Entity_FrameWork.Article.db-wal | Bin 0 -> 12392 bytes .../API_DbDataManager/DbManagerUser.cs | 4 ++-- .../Verax_API_EF/API_Services/IUserService.cs | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) create mode 100644 Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-shm create mode 100644 Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-wal diff --git a/Verax_API_EF/Verax_API_EF/API/Controllers/UserController.cs b/Verax_API_EF/Verax_API_EF/API/Controllers/UserController.cs index cdf20e7..3b4a285 100644 --- a/Verax_API_EF/Verax_API_EF/API/Controllers/UserController.cs +++ b/Verax_API_EF/Verax_API_EF/API/Controllers/UserController.cs @@ -26,9 +26,9 @@ namespace API.Controllers [HttpPut("/user/{pseudo}")] - public async Task Update(User user) + public async Task Update(User user, string pseudo) { - return await _us.Update(user); + return await _us.Update(user,pseudo); } [HttpDelete("/user/{pseudo}")] diff --git a/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-shm b/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-shm new file mode 100644 index 0000000000000000000000000000000000000000..96623946a4b4bc58f4fe04bed83515e2f12f40a0 GIT binary patch literal 32768 zcmeI)F%AJi6b9h2tJ5gAbN~vqgl;e31Ww>c!cinnpx#ES5Ctu7WV6xggzryY-sH{X z72g4-I!#he5!Fj+SVkX2ZO_y7WxTo1XZyo#xhk)9GukbVP4(gXSoKQY`*=$`?pnU@ zx77_D2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB=CX6NulAgutH)6e<6>B?Jf%AV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72z;}^ E6DiRtGXMYp literal 0 HcmV?d00001 diff --git a/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-wal b/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-wal new file mode 100644 index 0000000000000000000000000000000000000000..f654cc2e62dc58070624013c771c3eb0673de1ce GIT binary patch literal 12392 zcmeI$y-UMD7zXf56Qoe|1PQT-LlNr-ZJ|}@Ae3~eNXejSS0%Ke2AUpR0^%gN`X9K6 zlXTPBO%YriT-?>Mf+Fbboi$*QIx9RcT$1%|=Y31VT&34qo zZfU*#>h;8y`hEYVXdaxNGh3j3~>}gZx0vcT-^p>8` z9r1yJ00bZa0SG_<0uX=z1Rwwb2tZ)CKt_v`MYMD_>Yz zw$j#IAe*!`<2znE*I>TInwMSfgpAL}zUK8B^KChA`(C&$nvnTsG%tVtvr3#8x}h%^ zHP+d!$kB?^as%0gVwtUIy4>`=j=0c3F2M4= Update(User user) + public async Task Update(User user, string pseudo) { - var entity = _context.UserSet.FirstOrDefault(u => u.Pseudo == user.Pseudo); + var entity = _context.UserSet.FirstOrDefault(u => u.Pseudo == pseudo); if (entity == null) return false; entity.Mdp = user.Mdp; entity.Mail = user.Mail; diff --git a/Verax_API_EF/Verax_API_EF/API_Services/IUserService.cs b/Verax_API_EF/Verax_API_EF/API_Services/IUserService.cs index 398d436..1e447d3 100644 --- a/Verax_API_EF/Verax_API_EF/API_Services/IUserService.cs +++ b/Verax_API_EF/Verax_API_EF/API_Services/IUserService.cs @@ -5,7 +5,7 @@ namespace API_Services public interface IUserService { Task Create(User user); - Task Update(User user); + Task Update(User user, string pseudo); Task Delete(string pseudo); From f5f94a3f807598d80bed306a9f4f4ce007010622 Mon Sep 17 00:00:00 2001 From: tonyfages Date: Mon, 11 Mar 2024 15:18:31 +0100 Subject: [PATCH 04/19] Add COnsole Tests EF Form + User --- .../API/Controllers/UserController.cs | 45 +-- .../API/Entity_FrameWork.Article.db | Bin 45056 -> 36864 bytes Verax_API_EF/Verax_API_EF/API/Program.cs | 4 +- .../DbContextLib/LibraryContext.cs | 10 + .../20240311132206_mrg1.Designer.cs} | 59 +++- .../Migrations/20240311132206_mrg1.cs} | 32 +- .../LibraryContextModelSnapshot.cs} | 59 +++- .../StubbedContextLib/StubTest.cs | 26 -- .../Entity_FrameWork.Article.db | Bin 0 -> 45056 bytes .../Entity_FrameWork.Article.db-shm | Bin 32768 -> 32768 bytes .../Entity_FrameWork.Article.db-wal | Bin 12392 -> 12392 bytes .../Verax_API_EF/Test_Console_EF/Program.cs | 83 ----- .../Test_Console_EF/Test_Console_Article.cs | 304 ++++++++++++++++++ 13 files changed, 470 insertions(+), 152 deletions(-) rename Verax_API_EF/Verax_API_EF/{StubbedContextLib/Migrations/20240307182411_mrg1.Designer.cs => DbContextLib/Migrations/20240311132206_mrg1.Designer.cs} (80%) rename Verax_API_EF/Verax_API_EF/{StubbedContextLib/Migrations/20240307182411_mrg1.cs => DbContextLib/Migrations/20240311132206_mrg1.cs} (83%) rename Verax_API_EF/Verax_API_EF/{StubbedContextLib/Migrations/StubbedContextModelSnapshot.cs => DbContextLib/Migrations/LibraryContextModelSnapshot.cs} (80%) delete mode 100644 Verax_API_EF/Verax_API_EF/StubbedContextLib/StubTest.cs create mode 100644 Verax_API_EF/Verax_API_EF/Test_Console_EF/Entity_FrameWork.Article.db rename Verax_API_EF/Verax_API_EF/{API => Test_Console_EF}/Entity_FrameWork.Article.db-shm (98%) rename Verax_API_EF/Verax_API_EF/{API => Test_Console_EF}/Entity_FrameWork.Article.db-wal (94%) delete mode 100644 Verax_API_EF/Verax_API_EF/Test_Console_EF/Program.cs create mode 100644 Verax_API_EF/Verax_API_EF/Test_Console_EF/Test_Console_Article.cs diff --git a/Verax_API_EF/Verax_API_EF/API/Controllers/UserController.cs b/Verax_API_EF/Verax_API_EF/API/Controllers/UserController.cs index 3b4a285..c7ed3c2 100644 --- a/Verax_API_EF/Verax_API_EF/API/Controllers/UserController.cs +++ b/Verax_API_EF/Verax_API_EF/API/Controllers/UserController.cs @@ -18,6 +18,28 @@ namespace API.Controllers this._us = us; } + [HttpGet("/users")] + public async Task GetAll([FromQuery] int index = 0, [FromQuery] int count = 10, [FromQuery] UserOrderCriteria orderCriteria = UserOrderCriteria.None) + { + var result = (await _us.GetAll(index, count, orderCriteria)).Select(u => u.ToDTO()); + if (result == null) + { + return NotFound(); + } + return Ok(result); + } + + [HttpGet("/user/{pseudo}")] + public async Task GetByPseudo(string pseudo) + { + var result = (await _us.GetByPseudo(pseudo)).ToDTO(); + if (result == null) + { + return NotFound(); + } + return Ok(result); + } + [HttpPost("/user")] public async Task Create(User user) { @@ -37,27 +59,8 @@ namespace API.Controllers return await _us.Delete(pseudo); } - [HttpGet("/user/{pseudo}")] - public async Task GetByPseudo(string pseudo) - { - var result = (await _us.GetByPseudo(pseudo)).ToDTO(); - if (result == null) - { - return NotFound(); - } - return Ok(result); - } - [HttpGet("/users")] - public async Task GetAll([FromQuery] int index = 0, [FromQuery] int count = 10, [FromQuery] UserOrderCriteria orderCriteria = UserOrderCriteria.None) - { - var result = (await _us.GetAll(index, count, orderCriteria)).Select(u => u.ToDTO()); - if (result == null) - { - return NotFound(); - } - return Ok(result); - - } + + } } diff --git a/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db b/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db index 2cd90a9663b869eae1efcea320e2fc466a3588bf..d1afbee0e70fb87729e26f8c4193e01e73c690e4 100644 GIT binary patch delta 257 zcmZp8z|^pSX@ayM69WSSClJE`+e95>StbU(v{$^mp$r@x5e$46`RaLNx&HGCaVB$| z%Qv{$^mp$uH?rVM-+`RaLNx&HGCaVB$| z1}exRtHGF_e>C+}xb8$+ILeDJL~P-qp=FGrcIWBr`v+*dw#JB)_Net3rsQlaH%{5>_=z3L0DrK%fLS(lbR#A;dKzM8VG=h(moQYw`=$ z{CKRk#2d!Pi(v6G_vQ$W>FSKklRxN-a53|jGw@&JU(R2?Sx_O9e{;EgX8;>7D6j=K Q3pU*6pEyC9jSGbf0KimyV*mgE diff --git a/Verax_API_EF/Verax_API_EF/API/Program.cs b/Verax_API_EF/Verax_API_EF/API/Program.cs index 9bf4f16..7ee0854 100644 --- a/Verax_API_EF/Verax_API_EF/API/Program.cs +++ b/Verax_API_EF/Verax_API_EF/API/Program.cs @@ -38,8 +38,8 @@ app.MapControllers(); using var scoped = app.Services.CreateScope(); var libraryContext = scoped.ServiceProvider.GetService(); -//libraryContext.Database.EnsureCreated(); -libraryContext.Database.Migrate(); +libraryContext.Database.EnsureCreated(); +//libraryContext.Database.Migrate(); app.Run(); diff --git a/Verax_API_EF/Verax_API_EF/DbContextLib/LibraryContext.cs b/Verax_API_EF/Verax_API_EF/DbContextLib/LibraryContext.cs index 58c2539..774ded2 100644 --- a/Verax_API_EF/Verax_API_EF/DbContextLib/LibraryContext.cs +++ b/Verax_API_EF/Verax_API_EF/DbContextLib/LibraryContext.cs @@ -19,6 +19,8 @@ public class LibraryContext : DbContext public DbSet UserSet { get; set; } public DbSet FormSet { get; set; } + public DbSet ArticleUserSet { get; set; } + protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { if (!optionsBuilder.IsConfigured) @@ -91,6 +93,14 @@ public class LibraryContext : DbContext new UserEntity { Id = 3, Nom = "M&M's", Prenom = "Red", Pseudo = "RedM", Mail = "M&M#mail.com", Mdp = "1234", Role = "Modérator" + }, + new UserEntity + { + Id = 4, Nom = "Cascarra", Prenom = "Cascarra", Pseudo = "Sha", Mail = "ShaCasca@gmail.com", Mdp = "1234", Role = "Admin" + }, + new UserEntity + { + Id = 5, Nom = "Sillard", Prenom = "Noa", Pseudo = "NoaSil", Mail = "", Mdp = "1234", Role = "Admin" } ); diff --git a/Verax_API_EF/Verax_API_EF/StubbedContextLib/Migrations/20240307182411_mrg1.Designer.cs b/Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/20240311132206_mrg1.Designer.cs similarity index 80% rename from Verax_API_EF/Verax_API_EF/StubbedContextLib/Migrations/20240307182411_mrg1.Designer.cs rename to Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/20240311132206_mrg1.Designer.cs index 1340e2b..6c21748 100644 --- a/Verax_API_EF/Verax_API_EF/StubbedContextLib/Migrations/20240307182411_mrg1.Designer.cs +++ b/Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/20240311132206_mrg1.Designer.cs @@ -1,16 +1,16 @@ // +using DbContextLib; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Migrations; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using StubbedContextLib; #nullable disable -namespace StubbedContextLib.Migrations +namespace DbContextLib.Migrations { - [DbContext(typeof(StubbedContext))] - [Migration("20240307182411_mrg1")] + [DbContext(typeof(LibraryContext))] + [Migration("20240311132206_mrg1")] partial class mrg1 { /// @@ -90,7 +90,7 @@ namespace StubbedContextLib.Migrations b.HasIndex("UserEntityId"); - b.ToTable("ArticleUserEntity"); + b.ToTable("ArticleUserSet"); b.HasData( new @@ -150,6 +150,35 @@ namespace StubbedContextLib.Migrations b.HasIndex("UserEntityId"); b.ToTable("FormSet"); + + b.HasData( + new + { + Id = 1L, + DatePublication = "Form 1 Description", + Link = "hhtp://form1.com", + Pseudo = "Form 1", + Theme = "", + UserEntityId = 1L + }, + new + { + Id = 2L, + DatePublication = "Form 2 Description", + Link = "hhtp://form2.com", + Pseudo = "Form 2", + Theme = "", + UserEntityId = 2L + }, + new + { + Id = 3L, + DatePublication = "Form 3 Description", + Link = "hhtp://form3.com", + Pseudo = "Form 3", + Theme = "", + UserEntityId = 3L + }); }); modelBuilder.Entity("Entities.UserEntity", b => @@ -216,6 +245,26 @@ namespace StubbedContextLib.Migrations Prenom = "Red", Pseudo = "RedM", Role = "Modérator" + }, + new + { + Id = 4L, + Mail = "ShaCasca@gmail.com", + Mdp = "1234", + Nom = "Cascarra", + Prenom = "Cascarra", + Pseudo = "Sha", + Role = "Admin" + }, + new + { + Id = 5L, + Mail = "", + Mdp = "1234", + Nom = "Sillard", + Prenom = "Noa", + Pseudo = "NoaSil", + Role = "Admin" }); }); diff --git a/Verax_API_EF/Verax_API_EF/StubbedContextLib/Migrations/20240307182411_mrg1.cs b/Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/20240311132206_mrg1.cs similarity index 83% rename from Verax_API_EF/Verax_API_EF/StubbedContextLib/Migrations/20240307182411_mrg1.cs rename to Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/20240311132206_mrg1.cs index a40c540..b9278d6 100644 --- a/Verax_API_EF/Verax_API_EF/StubbedContextLib/Migrations/20240307182411_mrg1.cs +++ b/Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/20240311132206_mrg1.cs @@ -4,7 +4,7 @@ #pragma warning disable CA1814 // Prefer jagged arrays over multidimensional -namespace StubbedContextLib.Migrations +namespace DbContextLib.Migrations { /// public partial class mrg1 : Migration @@ -48,7 +48,7 @@ namespace StubbedContextLib.Migrations }); migrationBuilder.CreateTable( - name: "ArticleUserEntity", + name: "ArticleUserSet", columns: table => new { UserEntityId = table.Column(type: "INTEGER", nullable: false), @@ -56,15 +56,15 @@ namespace StubbedContextLib.Migrations }, constraints: table => { - table.PrimaryKey("PK_ArticleUserEntity", x => new { x.ArticleEntityId, x.UserEntityId }); + table.PrimaryKey("PK_ArticleUserSet", x => new { x.ArticleEntityId, x.UserEntityId }); table.ForeignKey( - name: "FK_ArticleUserEntity_ArticleSet_ArticleEntityId", + name: "FK_ArticleUserSet_ArticleSet_ArticleEntityId", column: x => x.ArticleEntityId, principalTable: "ArticleSet", principalColumn: "Id", onDelete: ReferentialAction.Cascade); table.ForeignKey( - name: "FK_ArticleUserEntity_UserSet_UserEntityId", + name: "FK_ArticleUserSet_UserSet_UserEntityId", column: x => x.UserEntityId, principalTable: "UserSet", principalColumn: "Id", @@ -111,11 +111,13 @@ namespace StubbedContextLib.Migrations { { 1L, "tony@gmail.com", "1234", "Fages", "Tony", "TonyF", "Admin" }, { 2L, "tom@mail.com", "1234", "Smith", "Tom", "TomS", "User" }, - { 3L, "M&M#mail.com", "1234", "M&M's", "Red", "RedM", "Modérator" } + { 3L, "M&M#mail.com", "1234", "M&M's", "Red", "RedM", "Modérator" }, + { 4L, "ShaCasca@gmail.com", "1234", "Cascarra", "Cascarra", "Sha", "Admin" }, + { 5L, "", "1234", "Sillard", "Noa", "NoaSil", "Admin" } }); migrationBuilder.InsertData( - table: "ArticleUserEntity", + table: "ArticleUserSet", columns: new[] { "ArticleEntityId", "UserEntityId" }, values: new object[,] { @@ -126,9 +128,19 @@ namespace StubbedContextLib.Migrations { 3L, 3L } }); + migrationBuilder.InsertData( + table: "FormSet", + columns: new[] { "Id", "DatePublication", "Link", "Pseudo", "Theme", "UserEntityId" }, + values: new object[,] + { + { 1L, "Form 1 Description", "hhtp://form1.com", "Form 1", "", 1L }, + { 2L, "Form 2 Description", "hhtp://form2.com", "Form 2", "", 2L }, + { 3L, "Form 3 Description", "hhtp://form3.com", "Form 3", "", 3L } + }); + migrationBuilder.CreateIndex( - name: "IX_ArticleUserEntity_UserEntityId", - table: "ArticleUserEntity", + name: "IX_ArticleUserSet_UserEntityId", + table: "ArticleUserSet", column: "UserEntityId"); migrationBuilder.CreateIndex( @@ -141,7 +153,7 @@ namespace StubbedContextLib.Migrations protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.DropTable( - name: "ArticleUserEntity"); + name: "ArticleUserSet"); migrationBuilder.DropTable( name: "FormSet"); diff --git a/Verax_API_EF/Verax_API_EF/StubbedContextLib/Migrations/StubbedContextModelSnapshot.cs b/Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/LibraryContextModelSnapshot.cs similarity index 80% rename from Verax_API_EF/Verax_API_EF/StubbedContextLib/Migrations/StubbedContextModelSnapshot.cs rename to Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/LibraryContextModelSnapshot.cs index c4e950b..4e992dc 100644 --- a/Verax_API_EF/Verax_API_EF/StubbedContextLib/Migrations/StubbedContextModelSnapshot.cs +++ b/Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/LibraryContextModelSnapshot.cs @@ -1,15 +1,15 @@ // +using DbContextLib; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using StubbedContextLib; #nullable disable -namespace StubbedContextLib.Migrations +namespace DbContextLib.Migrations { - [DbContext(typeof(StubbedContext))] - partial class StubbedContextModelSnapshot : ModelSnapshot + [DbContext(typeof(LibraryContext))] + partial class LibraryContextModelSnapshot : ModelSnapshot { protected override void BuildModel(ModelBuilder modelBuilder) { @@ -87,7 +87,7 @@ namespace StubbedContextLib.Migrations b.HasIndex("UserEntityId"); - b.ToTable("ArticleUserEntity"); + b.ToTable("ArticleUserSet"); b.HasData( new @@ -147,6 +147,35 @@ namespace StubbedContextLib.Migrations b.HasIndex("UserEntityId"); b.ToTable("FormSet"); + + b.HasData( + new + { + Id = 1L, + DatePublication = "Form 1 Description", + Link = "hhtp://form1.com", + Pseudo = "Form 1", + Theme = "", + UserEntityId = 1L + }, + new + { + Id = 2L, + DatePublication = "Form 2 Description", + Link = "hhtp://form2.com", + Pseudo = "Form 2", + Theme = "", + UserEntityId = 2L + }, + new + { + Id = 3L, + DatePublication = "Form 3 Description", + Link = "hhtp://form3.com", + Pseudo = "Form 3", + Theme = "", + UserEntityId = 3L + }); }); modelBuilder.Entity("Entities.UserEntity", b => @@ -213,6 +242,26 @@ namespace StubbedContextLib.Migrations Prenom = "Red", Pseudo = "RedM", Role = "Modérator" + }, + new + { + Id = 4L, + Mail = "ShaCasca@gmail.com", + Mdp = "1234", + Nom = "Cascarra", + Prenom = "Cascarra", + Pseudo = "Sha", + Role = "Admin" + }, + new + { + Id = 5L, + Mail = "", + Mdp = "1234", + Nom = "Sillard", + Prenom = "Noa", + Pseudo = "NoaSil", + Role = "Admin" }); }); diff --git a/Verax_API_EF/Verax_API_EF/StubbedContextLib/StubTest.cs b/Verax_API_EF/Verax_API_EF/StubbedContextLib/StubTest.cs deleted file mode 100644 index 6e01d1f..0000000 --- a/Verax_API_EF/Verax_API_EF/StubbedContextLib/StubTest.cs +++ /dev/null @@ -1,26 +0,0 @@ -using Entities; -using Model; - -namespace StubbedContextLib; - -public class StubTest -{ - private List
_article; - - public List
StubArticle() - { - _article = new List
- { - new Article - { - Id = 1, - Title = "Test", - Description = "Test", - Author = "Test", - DatePublished = "Test", - LectureTime = 1 - } - }; - return _article; - } -} \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/Test_Console_EF/Entity_FrameWork.Article.db b/Verax_API_EF/Verax_API_EF/Test_Console_EF/Entity_FrameWork.Article.db new file mode 100644 index 0000000000000000000000000000000000000000..16746d575d690983803c342494bc39c7fa82814b GIT binary patch literal 45056 zcmeI*O>g7I83%AuluSvEJp~r3uyBGMDQIFLe$h*^Zkt0^vFTKZB|DO~*gX^mEzMf2 zB~c-%xIVPNZi4m`^w?{Q9{MSI>!C#t?J0)(k;#Wncm|`rG@Bth34|q@}k9v zv~}-qE9~D=QoSp!{)PQ+<<~3CXNrk0mj4;QqyB*cF+l(V5P$##o+JS?sit3DlkcaD zep~#ca_4xTK4KffIlgTROY1v^b5UvgVavO9t=!ajrM9Qt;n@WnXZc}`XZ<8uzMh@V zDVw{$oKVx1oP579F0pJmMyo5_&1MS@MkVLU55@=TJgP=;gZbLLdp)kE*Vg2pCmj8x zEBspfvxHw>v;6vjHr=Eorzu-$XNjVzy`j~4?Xbyfw+{~Z?qRLbtd}XAXOG?-Yi9XT zy;3dL@A5abyS#k6d044Y=2flM+!$rn?1-Mo@}_o&GV(L?qxN)191TypMoV`Lvmd_E zfzdw;k2$i%ux*CN1-fRgF{ARQTeLrEk!L;IU0J?=Sl23V)VyZS_B^j^`&wPA?P?9~ z4GK!`_6RxV+%dDK9cVPVcFT?3@}8E=z5BBzHJ!`Jzu58mCfJq1H8t2%!AL4&WPFv@ zX8p9|p+Dcn^D5NOvn5V<_xfC(8>9A5%E-;O$=vvB5iH zl;E6}^sdvnpfqjX(FcQz!p+Tmann7eZJPZHzOSDO`$SQt&7WoxH>xjGU!;P>Ik!a1 z7>L<*H&=7$c)1x4ZR$`-C&G4kt7EpzF5MZ%#XG{H?2B$O`J1C0>Y}YjRB8J>Bj2Dq z%e)edqmJ1Zyzt6gz~WK{UXox5O4ID|M$d3MhOA1J9u@JrCG<0+f68m(+~!)>u=Nw+ zba;{P8KUi$M|YKoJ~!`it$*5eZQ2yU9kZv!~ncszdKvr#*Vo<5tV;mD@d|pNYk#>#4PCE9si4H;k^EfM#9YYEyu>$<1h7 zx|VwGxk9?p(cSo6-EQfYrH|(n>@Ch@y`{vZR4RS#I~ls7pz0>{t}k#`UZ_4lu0_>s z|Ngi1*h14lxS2*$VxOuKO>P? zM3HGmm5wEn-ueGWGW(4EgMGx_XYYS=+k%=w00Izz00bZa0SG_<0uX=z1RyXkz&?}W zbnYKpipuWEzc-7-6g4Wlr~jk#|Iz*bXA=7p`xQH5>+`uF1OgC%00bZa0SG_<0uX=z z1R(HK3G8lXb~1@QL08-Nd0W`L`=UNP5tq*)>^RQA{{Hs%`T05BL-3B#cJCx`ue%>T zoG?!hCtN9PUiWUy=Ow-;?3QH=9K-B)I?jL+-ZQOU$xYLXQ literal 0 HcmV?d00001 diff --git a/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-shm b/Verax_API_EF/Verax_API_EF/Test_Console_EF/Entity_FrameWork.Article.db-shm similarity index 98% rename from Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-shm rename to Verax_API_EF/Verax_API_EF/Test_Console_EF/Entity_FrameWork.Article.db-shm index 96623946a4b4bc58f4fe04bed83515e2f12f40a0..edfc9f003c66ba865c091c0046b9e5913e6b4f5e 100644 GIT binary patch delta 145 zcmZo@U}|V!N|1P@%K!q55G=q9q`853$DjO^YkP9{AL`-}J5Ufcq1K~F<^8{09a7a# tOwizD1)9eRGI!&|OplEV{;+QT>^EbbLOw3FS%o``Nng9TankOj$ diff --git a/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-wal b/Verax_API_EF/Verax_API_EF/Test_Console_EF/Entity_FrameWork.Article.db-wal similarity index 94% rename from Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-wal rename to Verax_API_EF/Verax_API_EF/Test_Console_EF/Entity_FrameWork.Article.db-wal index f654cc2e62dc58070624013c771c3eb0673de1ce..e170424f429b735762cb9608735f3bf81b8652fe 100644 GIT binary patch literal 12392 zcmeI$ze>YE90%|um!`y6&q)-Q6hWt$e`=wdT6_U@aqFK*gH03CXh*?O5LCp?*;f!0 z6<@%~JV4#rr64#J@lt7V=>wF0e~{$v2j9SbZo12zN@twbn&-G#E~&Tk>ABb7;IjR7 z@nNsWdDcq(?=Szv_gC)Cb%r$wjXBz-pX`Hz00bZa0SG_<0uX=z1Rwwb2tZ(L1QbFR z`5iy>cAZF41UA`kI3b&)XLyq3H^ay+*Bmw%*^=aBS%dq6=hjkNxqaM9?gd0z;^;fQ zqepCjf&c^{009U<00Izz00bZa0SHXCz_y;vW#xk772Ud8aT;oErFdL&%ni-3G|RBo zs!8U-wP$WHQh z5=xHrs!a^xf5IA(u!ads(D}cF-2a0)B4G{_Cfiaac?S0a6~FiJ;yuMvtSQnCM|-qG uziD@}w;rp900bZa0SG_<0uX=z1Rwwb2#mdeNMv405uPU`c?$v|viu9FKzGal literal 12392 zcmeI$y-UMD7zXf56Qoe|1PQT-LlNr-ZJ|}@Ae3~eNXejSS0%Ke2AUpR0^%gN`X9K6 zlXTPBO%YriT-?>Mf+Fbboi$*QIx9RcT$1%|=Y31VT&34qo zZfU*#>h;8y`hEYVXdaxNGh3j3~>}gZx0vcT-^p>8` z9r1yJ00bZa0SG_<0uX=z1Rwwb2tZ)CKt_v`MYMD_>Yz zw$j#IAe*!`<2znE*I>TInwMSfgpAL}zUK8B^KChA`(C&$nvnTsG%tVtvr3#8x}h%^ zHP+d!$kB?^as%0gVwtUIy4>`=j=0c3F2M4= a.Author.Equals("Tony Fages")); - foreach (var article in articles) - { - Console.WriteLine($"{article.Author} - {article.Title} - {article.Description} - {article.DatePublished} - {article.LectureTime}"); - } - } -} - -// Allows to add an article to the db -void addArticle() -{ - using (var context = new LibraryContext()) - { - var article = new ArticleEntity - { - Title = "Louis is not sick anymore", - Description = "Louis is not sick anymore, he is now healthy and happy", - DatePublished = "16-02-2024", - LectureTime = 1, - Author = "Tony Fages" - }; - context.ArticleSet.Add(article); - context.SaveChanges(); - } -} - - -// Allows to modify an article from the db -void modifyArticle() -{ - using (var context = new LibraryContext()) - { - var article = context.ArticleSet.Where(a => a.Author.Equals("Tom Smith")); - - foreach (var articles in article) - { - articles.Title = "Demain des l'aube"; - context.SaveChanges(); - } - } -} - -// Allows to delete an article from the db -void deleteArticle() -{ - using (var context = new LibraryContext()) - { - var article = context.ArticleSet.Where(a => a.Author.Equals("M&M's Red")); - - foreach (var articles in article) - { - context.ArticleSet.Remove(articles); - context.SaveChanges(); - } - } -} \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/Test_Console_EF/Test_Console_Article.cs b/Verax_API_EF/Verax_API_EF/Test_Console_EF/Test_Console_Article.cs new file mode 100644 index 0000000..ae275db --- /dev/null +++ b/Verax_API_EF/Verax_API_EF/Test_Console_EF/Test_Console_Article.cs @@ -0,0 +1,304 @@ +// See https://aka.ms/new-console-template for more information + +using DbContextLib; +using Entities; + +//Article +//addArticle(); +listArticle(); +//modifyArticle(); +//deleteArticle(); +//listArticleByAuthor(); + +//Form +//addForm(); +listForms(); +//updateForm(); +//deleteForm(); + +//User +//listUser(); +//addUser(); +//updateUser(); +//deleteUser(); + +//ArticleUser +//listArticleUser(); +//addArticleUser(); +//updateArticleUser(); +//deleteArticleUser(); + +//FormUser +listFormUser(); +//addFormUser(); + + +// Allows to list all the articles from the db +void listArticle() +{ + using (var context = new LibraryContext()) + { + var articles = context.ArticleSet; + foreach (var article in articles) + { + Console.WriteLine($"{article.Author} - {article.Title} - {article.Description} - {article.DatePublished} - {article.LectureTime}"); + } + } +} + + +// Allows to list all the articles from the db by author +void listArticleByAuthor() +{ + using (var context = new LibraryContext()) + { + var articles = context.ArticleSet.Where(a => a.Author.Equals("Tony Fages")); + foreach (var article in articles) + { + Console.WriteLine($"{article.Author} - {article.Title} - {article.Description} - {article.DatePublished} - {article.LectureTime}"); + } + } +} + +// Allows to add an article to the db +void addArticle() +{ + using (var context = new LibraryContext()) + { + var article = new ArticleEntity + { + Title = "Louis is not sick anymore", + Description = "Louis is not sick anymore, he is now healthy and happy", + DatePublished = "16-02-2024", + LectureTime = 1, + Author = "Tony Fages" + }; + context.ArticleSet.Add(article); + context.SaveChanges(); + } +} + + +// Allows to modify an article from the db +void modifyArticle() +{ + using (var context = new LibraryContext()) + { + var article = context.ArticleSet.Where(a => a.Author.Equals("Tom Smith")); + + foreach (var articles in article) + { + articles.Title = "Demain des l'aube"; + context.SaveChanges(); + } + } +} + +// Allows to delete an article from the db +void deleteArticle() +{ + using (var context = new LibraryContext()) + { + var article = context.ArticleSet.Where(a => a.Author.Equals("M&M's Red")); + + foreach (var articles in article) + { + context.ArticleSet.Remove(articles); + context.SaveChanges(); + } + } +} + +// Allow to get all forms +void listForms() +{ + using (var context = new LibraryContext()) + { + var forms = context.FormSet; + foreach (var form in forms) + { + Console.WriteLine($"{form.Id} - {form.Link} - {form.DatePublication} - {form.Pseudo} - {form.Theme} - {form.UserEntityId}"); + } + } +} + +void addForm() +{ + using (var context = new LibraryContext()) + { + var form = new FormEntity + { + Id = 5, + Theme = "Covid", + DatePublication = "16-02-2024", + Link = "https://www.covid.com", + Pseudo = "Tony Fages", + UserEntityId = 1 + }; + context.FormSet.Add(form); + context.SaveChanges(); + } +} + +void updateForm() +{ + using (var context = new LibraryContext()) + { + var form = context.FormSet.Where(f => f.Id.Equals(5)); + + foreach (var forms in form) + { + forms.Theme = "Demain des l'aube"; + context.SaveChanges(); + } + } +} + +void deleteForm() +{ + using (var context = new LibraryContext()) + { + var form = context.FormSet.Where(f => f.Id.Equals(5)); + + foreach (var forms in form) + { + context.FormSet.Remove(forms); + context.SaveChanges(); + } + } +} + +void listUser() +{ + using (var context = new LibraryContext()) + { + var users = context.UserSet; + foreach (var user in users) + { + Console.WriteLine($"{user.Id} - {user.Pseudo} - {user.Nom} - {user.Prenom} - {user.Mail} - {user.Role}"); + } + } +} + +void addUser() +{ + using (var context = new LibraryContext()) + { + var user = new UserEntity + { + Id = 7, Nom = "Fages", Prenom = "Tony", Pseudo = "TonyF", Mail = "tony@gmail.com", Mdp = "1234", Role = "Admin" + }; + context.UserSet.Add(user); + context.SaveChanges(); + } + listUser(); +} + +void updateUser() +{ + using (var context = new LibraryContext()) + { + var user = context.UserSet.Where(u => u.Id.Equals(7)); + + foreach (var users in user) + { + users.Nom = "Thomas"; + context.SaveChanges(); + } + } + listUser(); +} + +void deleteUser() +{ + using (var context = new LibraryContext()) + { + var user = context.UserSet.Where(u => u.Id.Equals(7)); + + foreach (var users in user) + { + context.UserSet.Remove(users); + context.SaveChanges(); + } + } + listUser(); +} + +void listArticleUser() +{ + using (var context = new LibraryContext()) + { + var articleUsers = context.ArticleUserSet; + foreach (var articleUser in articleUsers) + { + Console.WriteLine($"{articleUser.ArticleEntityId} - {articleUser.UserEntityId}"); + } + } +} + +void addArticleUser() +{ + using (var context = new LibraryContext()) + { + var articleUser = new ArticleUserEntity + { + ArticleEntityId = 2, + UserEntityId = 1 + }; + context.ArticleUserSet.Add(articleUser); + context.SaveChanges(); + } + listArticleUser(); +} + +void updateArticleUser() +{ + using (var context = new LibraryContext()) + { + var articleUser = context.ArticleUserSet.FirstOrDefault(au => au.UserEntityId.Equals(2)); + if (articleUser != null) articleUser.UserEntityId = 3; + context.SaveChanges(); + } + listArticleUser(); +} + +void deleteArticleUser() +{ + using (var context = new LibraryContext()) + { + var articleUser = context.ArticleUserSet.Where(au => au.UserEntityId.Equals(1)).Where(u => u.ArticleEntityId.Equals(1)); + + foreach (var articleUsers in articleUser) + { + context.ArticleUserSet.Remove(articleUsers); + context.SaveChanges(); + } + } + listArticleUser(); +} + +void listFormUser() +{ + using (var context = new LibraryContext()) + { + var formUsers = context.FormSet; + foreach (var formUser in formUsers) + { + Console.WriteLine($"{formUser.UserEntityId}"); + } + } +} + +void addFormUser() +{ + using (var context = new LibraryContext()) + { + var formUser = new FormEntity + { + UserEntityId = 1 + }; + context.FormSet.Add(formUser); + context.SaveChanges(); + } +} + From 409edd4199df46280607dfe7eb1ce9b12a0139b1 Mon Sep 17 00:00:00 2001 From: tonyfages Date: Mon, 11 Mar 2024 19:42:46 +0100 Subject: [PATCH 05/19] fix problem Formualire --- .../API/Controllers/ArticleController.cs | 4 +-- .../API/Entity_FrameWork.Article.db | Bin 36864 -> 4096 bytes .../Entity_FrameWork.Article.db-shm | Bin 32768 -> 32768 bytes .../API/Entity_FrameWork.Article.db-wal | Bin 0 -> 86552 bytes .../API_DbDataManager/DbManagerArticle.cs | 13 ++++--- .../API_DbDataManager/DbManagerFormulaire.cs | 10 +++--- .../API_DbDataManager/Extensions.cs | 4 +-- .../API_Mapping/FormulaireMapping.cs | 4 +-- .../Verax_API_EF/API_Model/FormulaireDTO.cs | 2 +- .../API_Services/IArticleService.cs | 3 +- .../DbContextLib/LibraryContext.cs | 33 ++++++++---------- .../Entities/ArticleUserEntity.cs | 2 +- .../Verax_API_EF/Entities/FormEntity.cs | 7 ++-- .../Verax_API_EF/Entities/UserEntity.cs | 4 ++- Verax_API_EF/Verax_API_EF/Model/Formulaire.cs | 2 +- .../Verax_API_EF/StubbedContextLib/Class1.cs | 16 ++++----- .../Entity_FrameWork.Article.db | Bin 45056 -> 45056 bytes .../Entity_FrameWork.Article.db-wal | Bin 12392 -> 0 bytes .../Test_Console_EF/Test_Console_Article.cs | 29 ++++++++------- 19 files changed, 64 insertions(+), 69 deletions(-) rename Verax_API_EF/Verax_API_EF/{Test_Console_EF => API}/Entity_FrameWork.Article.db-shm (97%) create mode 100644 Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-wal delete mode 100644 Verax_API_EF/Verax_API_EF/Test_Console_EF/Entity_FrameWork.Article.db-wal diff --git a/Verax_API_EF/Verax_API_EF/API/Controllers/ArticleController.cs b/Verax_API_EF/Verax_API_EF/API/Controllers/ArticleController.cs index b5b096c..a7aae26 100644 --- a/Verax_API_EF/Verax_API_EF/API/Controllers/ArticleController.cs +++ b/Verax_API_EF/Verax_API_EF/API/Controllers/ArticleController.cs @@ -43,9 +43,9 @@ namespace API.Controllers [HttpPost("/article")] - public async Task CreateArticle(long id, string title, string description, string author, string date, int lectureTime) + public async Task CreateArticle(Article article) { - return await _articleService.CreateArticle(id, title, description, author, date, lectureTime); + return await _articleService.CreateArticle(article); } [HttpDelete("/article/{id}")] diff --git a/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db b/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db index d1afbee0e70fb87729e26f8c4193e01e73c690e4..9a472209435d88229f65ab7a0ca30d67df87a462 100644 GIT binary patch delta 33 ncmZozz|^2HL7J73fq{W>Vxv7bBZFSrD_$UvL143>!ZdyWecuN5 literal 36864 zcmeI*&2QUe90zc}Bu&z(^~4lKQZ(>>NPGLvNZqc#=k(%w%qGh0$L zx-HEU(gOL5P$##AOHafJXHdAG?I8_PQDvAtvY`2;IATnsny)I z4Sl$I(~Op6zMdqOs(xKBv*Koz6}L7v*y?7nQZ46bKTDQw^kkE)RL&Q2<(uq=ev{?4 zs+;*DWnR#W)x~aR)dp|zB&+J%l#!pAAGKzV$IIi}?BPTigy zH}Id-m~Q#QEn4rl$m1R#GfB3-S=RH{i(WIwM*%DA>v~x)uId%$4G>B$dW4EjiSe_h zZ|F4AR&$lr+?qa}x_>$pNu<;AN1I;X1bQ>DBRtw)fp{vci+!ACC;jBT^C8&RK_2Sx z355=K{X!ty#jZuam{c%ZQV(R?+atOlP}9*~7>`bkbc7%K*uFSsl?3bmJ0x=9sl--V zmb}Y|bE`?yqaCB;+FrQlFzDT#Ou$V{l%nEle(${Mo%#3U-stk{?yo|lBgx;}A3u{$ zmhm&cpJurGC!P6^J3kBc!^tOZ(QZwSD7CqDR9wL@o0C(O?dJH!XF6386@GZ=)*NKU=8r8_#0f7u=6 zcZ@5q=>{6#9q`FD?$p}m;n7#!{-xPzaQba9>FT|~Yi_5_tERZTkN>*x%gJ@zhTR@Z zKb@MPVXDr4DQO>TSz2L%00bZa0SG_<0uX=z1Rwwb2%G?cT{R*ty*D2_UwFRog2OC+ zo3(k(JmlkHW;)F7xXiHX%yj8cx53#icU)F$*fqOJZ-+Ae4sU0dv)QF(`gf(9Lz&kN zB_gG7&&%iO?NqM>v(&IH&N7z+JB}{p&`UB}f?Bm(tkN>whABs+e2a>>*5<~6Y3;Kj zzwI!+X*$L(cN;9r)=XX(<TN+YAB?}WHqdcfD%?{rO*#G7MrH_gtc$P{Qo!YXYB{t!~y{b zKmY;|fB*y_009U<00IzzzzGtFgk&-I4^M?;n*4{nprWeXwW5SVu~@A8{QrTZeWiV( z9h{)Xp{fvo00bZa0SG_<0uX=z1Rwx`CsSaVzMOC-vvk&bFrTfkp>O_gG~C0N)9F3> z8#ycD=>zfTK3h?j>8l0@DdX|ofYVLe`|CM_p zsp^47fdR_E%`#GF73auSFQqCx6lY!D4& z!^JmFRCU_?&F>%6=66y5m{^$^co~E@PW;Kl$g*+bUnWLYFv$ic*+C>X2Lm?)AARCr=NCnqbA%?ZTZ8z0I#ZT#TDv-zLXKc zT>H{4Ok35xz#sg9IspO+O_LCXP8tYlt3ZQE6NRZlMX-%+WfP(+{L!+Z_K&sNKfv#~ z7sux~X*#tiq2E)J^SwRy+~>KwG`~E*yU!j8JTCRW_en`wEs5dF9~}K=;gRp3{c7P- zx5**>FM%9?BwZLKKMR>o*ug}%aK8)pd6*ym2r z*eb7Ky46QTx@+IX_Kw3+sBMqb@u!X>?GqgjtdiP45vsMFrCAst009U<00I#BKNEN) z6pRc-<)iELa-Kgtx@+$U{VyZU&AmHoyqYYVx;Z;p<1=}~nI9gSN+vQ%Hkukv?qab; zHi)r_6pJ~V#n}2-bBVF|(MVe`vLh}ZO}KkcR82isooH zrjjGcsbp#>nP%1*LB)tBuurmBT%0t+$+0AzVnd1aP+~Y4jz6jSgOPY#{>E;rF}&^P zoeFrH#=DUAW1}wV&|}WV_C?UDQSEkUB%+pW-eqG0ub)?DpN-IXp~d3!%O!emx$dNB zgn9M!wn6jaxTgu6rA{l*QMPD-rPODkEB5A`5%&fHk%_o0S+|Ya!6N;7v^P6r8rHN6 z;#O(EOBXzPNVTr*Cx)!k$yv=A`Mf8PGq--`IH#%iQfa=p>l-z+y>rcu=PRwR#*|TN zy&Rf===AnAKl+h^VE(%NZNO_K^kFz00bZa0SG_<0uX=z1Rwwb2&@2s zX*DSIKiU&oGk(YToi$eGhgp^9^a^jDW_pboGbYQH^Gr8sRkOg^G_RQ~S1@u$k;0;k zAL7-)je~>z8|mLYb_r8FpH+g=hQmGb8Vajgd(bBfMwzpL>j~yqAi#iFXfb#wf9L zNjD3+9F#^&w2N(3o;{$K_p=l~Tw}?iUdv8%v%m(~u+H;he-uLDWoGPS$@2c9IGQ{y zV5X7J&NBK#zc{SyelAw{+~&E1QR=&*MpZ?_y8Q^=82t6Ai_gDuQp5!m?YyL2qHh== z009U<00Izz00bZa0SG_<0uWfK0;?1?Dm&fL)DBtgk>|QPh?szt1K`F5?*7l8*Z=bB z9$mx*{92Es{Z;#!_OLcVA2C1x0uX=z1Rwwb2tWV=5P$##ZaslM$}{SUbj2eXqdYq@ zFu3XN5&8psO-z~ewRL}q5-#q_8Kp$Nq?hmX1-rT;o$I>j5AtcTvi0|WnlO#hR(DO2 zOtD!Fc6Qx<`#>aJ$cpubvb9{cTFts+nr(e-D!*T`%kQC%3*%xts~dxuxMO^+TmHC_ z|ILYN)-bhT(5hyXaFX?F*`% zG6fn`F+;=U;XJjc7K7>A}(-&atU77PT$(JIC=;`00Izz00bZa0SG_<0uX?}vK9#W z70=;TLY9HwD6b}Ssn^?o^3JV3Z zvSq`DeY9YccyIyzuHUOPtV}N>n0vQj!^(s1%5uZX0}HG?;H*rC6cUH!#szu~e(U|p z_d4FJKVRTO?S1X<+BREtlm!6@KmY;|fB*y_009U<00I!WSpsctih%og0o8fD zfc3lqyBon=Mgi4AgaE>BTwv!*JIcGB+j6g%scIJ_?IZ0njW9p}0uX=z1Rwwb2tWV= z5P$##Ah41J+-DCuVEQsCz05zyiG*E1BBkVoL@FK}t};13>qVaNHf_7TMesJ{U9 z7C?W2WqAgnQV@Uu1Rwwb2tWV=5P$##AOL}-3pDo^pe=)Te*sk#;^q=(auZSCHjT|0uX=z1Rwwb2tWV=5P$##AOL}tDzHjXqq2CsVVax14q5Gy6ID~s z6**0dn1Cmb;NwN?wj{uQ@mD={GHv}L60SG_<0uX=z1Rwwb2rO5D zo0>I+ES-QArvv#OW(H-5MK3wZJf)*U$0srT&tlE@=awR3hJ!MWv%h`GvU%-<`khrh!>DTVzZ`I=hzeQZ&<1{a}fdB*`009U<00Izz00bZa0SGKAaJ_MX zHH*XrK22eP&d8cbo*z0?%O9#yt^j?fq=Af4o*lVXT)>k@5G}lQ`XN6z!rEm!kKlrK zPP?+`kzgSNAOHafKmY;|fB*y_009U<00PTZpgE6#>gi91)QD`w3>2F5ypQ0q?Ju@} zc;($^@IHd&+MuWx1Rwwb2tWV=5P$##AOHafK;XIr8sA6Yzt;N*zAb;H|BFBV+Eo!3 z@M*J(X5|sk!v-)w00Izz00bZa0SG_<0uX=z1R!wZ1g CreateArticle(long id, string title, string description, string author, string date, int lectureTime) + public async Task CreateArticle(Article article) { var entity = new Entities.ArticleEntity() { - Id = id, - Title = title, - Description = description, - Author = author, - DatePublished = date, - LectureTime = lectureTime, + Title = article.Title, + Description = article.Description, + Author = article.Author, + DatePublished = article.DatePublished, + LectureTime = article.LectureTime, }; _context.ArticleSet.Add(entity); await _context.SaveChangesAsync(); diff --git a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerFormulaire.cs b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerFormulaire.cs index 2f879cd..4cb5671 100644 --- a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerFormulaire.cs +++ b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerFormulaire.cs @@ -33,7 +33,7 @@ public class DbManagerFormulaire : IFormulaireService formulaireList = _context.FormSet.OrderBy(f => f.DatePublication).Select(f => f.ToModel()).ToList(); break; case FormOrderCriteria.ByPseudo: - formulaireList = _context.FormSet.OrderBy(f => f.Pseudo).Select(f => f.ToModel()).ToList(); + formulaireList = _context.FormSet.OrderBy(f => f.UserEntityPseudo).Select(f => f.ToModel()).ToList(); break; default: formulaireList = _context.FormSet.Select(f => f.ToModel()).ToList(); @@ -54,9 +54,10 @@ public class DbManagerFormulaire : IFormulaireService var entity = new FormEntity() { Id = formulaire.Id, - Pseudo = formulaire.Pseudo, + Link = formulaire.Lien, Theme = formulaire.Theme, - DatePublication = formulaire.Date + DatePublication = formulaire.Date, + UserEntityPseudo = formulaire.UserPseudo }; _context.FormSet.Add(entity); @@ -77,9 +78,10 @@ public class DbManagerFormulaire : IFormulaireService { var entity = _context.FormSet.FirstOrDefault(f => f.Id == id); if (entity == null) return false; - entity.Pseudo = formulaire.Pseudo; entity.Theme = formulaire.Theme; entity.DatePublication = formulaire.Date; + entity.Link = formulaire.Lien; + entity.UserEntityPseudo = formulaire.UserPseudo; await _context.SaveChangesAsync(); return true; } diff --git a/Verax_API_EF/Verax_API_EF/API_DbDataManager/Extensions.cs b/Verax_API_EF/Verax_API_EF/API_DbDataManager/Extensions.cs index 511f7da..d35d9b8 100644 --- a/Verax_API_EF/Verax_API_EF/API_DbDataManager/Extensions.cs +++ b/Verax_API_EF/Verax_API_EF/API_DbDataManager/Extensions.cs @@ -26,10 +26,10 @@ public static class Extensions => new User{ Pseudo = user.Pseudo, Mdp = user.Mdp, Prenom = user.Prenom, Nom = user.Nom, Mail = user.Mail, Role = user.Role}; public static FormEntity ToEntity(this Formulaire form) - => new FormEntity{ Id = form.Id, Pseudo = form.Pseudo, Theme = form.Theme, Link = form.Lien}; + => new FormEntity{ Id = form.Id, UserEntityPseudo = form.UserPseudo, Theme = form.Theme, Link = form.Lien}; public static Formulaire ToModel(this FormEntity form) - => new Formulaire{ Id = form.Id, Pseudo = form.Pseudo, Theme = form.Theme, Lien = form.Link}; + => new Formulaire{ Id = form.Id, UserPseudo = form.UserEntityPseudo, Theme = form.Theme, Lien = form.Link}; } \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/API_Mapping/FormulaireMapping.cs b/Verax_API_EF/Verax_API_EF/API_Mapping/FormulaireMapping.cs index eef95ef..8a0e631 100644 --- a/Verax_API_EF/Verax_API_EF/API_Mapping/FormulaireMapping.cs +++ b/Verax_API_EF/Verax_API_EF/API_Mapping/FormulaireMapping.cs @@ -11,7 +11,7 @@ public static class FormulaireMapping Theme = f.Theme, Date = f.Date, Lien = f.Lien, - Pseudo = f.Pseudo + UserPseudo = f.UserPseudo }; public static Formulaire ToModel(this FormulaireDTO f) => new() @@ -20,6 +20,6 @@ public static class FormulaireMapping Theme = f.Theme, Date = f.Date, Lien = f.Lien, - Pseudo = f.Pseudo + UserPseudo = f.UserPseudo }; } \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/API_Model/FormulaireDTO.cs b/Verax_API_EF/Verax_API_EF/API_Model/FormulaireDTO.cs index df256d4..67b5e38 100644 --- a/Verax_API_EF/Verax_API_EF/API_Model/FormulaireDTO.cs +++ b/Verax_API_EF/Verax_API_EF/API_Model/FormulaireDTO.cs @@ -6,7 +6,7 @@ public class FormulaireDTO public string Theme { get; set; } public string Date { get; set; } public string Lien { get; set; } - public string Pseudo { get; set; } + public string UserPseudo { get; set; } } \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/API_Services/IArticleService.cs b/Verax_API_EF/Verax_API_EF/API_Services/IArticleService.cs index 28a2851..c10505b 100644 --- a/Verax_API_EF/Verax_API_EF/API_Services/IArticleService.cs +++ b/Verax_API_EF/Verax_API_EF/API_Services/IArticleService.cs @@ -10,8 +10,7 @@ namespace API_Services Task GetArticleById(int id, int index, int count, ArticleOrderCriteria orderCriterium); - Task CreateArticle(long id, string title, string description, string author, string date, - int lectureTime); + Task CreateArticle(Article article); Task DeleteArticle(long id); diff --git a/Verax_API_EF/Verax_API_EF/DbContextLib/LibraryContext.cs b/Verax_API_EF/Verax_API_EF/DbContextLib/LibraryContext.cs index 774ded2..08e8dba 100644 --- a/Verax_API_EF/Verax_API_EF/DbContextLib/LibraryContext.cs +++ b/Verax_API_EF/Verax_API_EF/DbContextLib/LibraryContext.cs @@ -41,12 +41,12 @@ public class LibraryContext : DbContext modelBuilder.Entity() .HasMany(u => u.Forms) .WithOne(f => f.User) - .HasForeignKey(f => f.UserEntityId); + .HasForeignKey(f => f.UserEntityPseudo); modelBuilder.Entity() .HasOne(f => f.User) .WithMany(u => u.Forms) - .HasForeignKey(f => f.UserEntityId); + .HasForeignKey(f => f.UserEntityPseudo); modelBuilder.Entity().HasData( new ArticleEntity @@ -83,24 +83,24 @@ public class LibraryContext : DbContext modelBuilder.Entity().HasData( new UserEntity { - Id = 1, Nom = "Fages", Prenom = "Tony", Pseudo = "TonyF", Mail = "tony@gmail.com", Mdp = "1234", Role = "Admin" + Nom = "Fages", Prenom = "Tony", Pseudo = "TonyF", Mail = "tony@gmail.com", Mdp = "1234", Role = "Admin" }, new UserEntity { - Id = 2, Nom = "Smith", Prenom = "Tom", Pseudo = "TomS", Mail = "tom@mail.com", Mdp = "1234", + Nom = "Smith", Prenom = "Tom", Pseudo = "TomS", Mail = "tom@mail.com", Mdp = "1234", Role = "User" }, new UserEntity { - Id = 3, Nom = "M&M's", Prenom = "Red", Pseudo = "RedM", Mail = "M&M#mail.com", Mdp = "1234", Role = "Modérator" + Nom = "M&M's", Prenom = "Red", Pseudo = "RedM", Mail = "M&M#mail.com", Mdp = "1234", Role = "Modérator" }, new UserEntity { - Id = 4, Nom = "Cascarra", Prenom = "Cascarra", Pseudo = "Sha", Mail = "ShaCasca@gmail.com", Mdp = "1234", Role = "Admin" + Nom = "Cascarra", Prenom = "Cascarra", Pseudo = "Sha", Mail = "ShaCasca@gmail.com", Mdp = "1234", Role = "Admin" }, new UserEntity { - Id = 5, Nom = "Sillard", Prenom = "Noa", Pseudo = "NoaSil", Mail = "", Mdp = "1234", Role = "Admin" + Nom = "Sillard", Prenom = "Noa", Pseudo = "NoaSil", Mail = "", Mdp = "1234", Role = "Admin" } ); @@ -108,27 +108,27 @@ public class LibraryContext : DbContext new ArticleUserEntity { ArticleEntityId = 1, - UserEntityId = 1 + UserEntityPseudo = "TonyF" }, new ArticleUserEntity { ArticleEntityId = 2, - UserEntityId = 2 + UserEntityPseudo = "NoaSil" }, new ArticleUserEntity { ArticleEntityId = 3, - UserEntityId = 3 + UserEntityPseudo = "Sha" }, new ArticleUserEntity { ArticleEntityId = 3, - UserEntityId = 1 + UserEntityPseudo = "RedM" }, new ArticleUserEntity { ArticleEntityId = 2, - UserEntityId = 3 + UserEntityPseudo = "TomS" } ); @@ -136,26 +136,23 @@ public class LibraryContext : DbContext new FormEntity { Id = 1, - Pseudo= "Form 1", DatePublication = "Form 1 Description", Link = "hhtp://form1.com", - UserEntityId = 1 + UserEntityPseudo = "Sha" }, new FormEntity { Id = 2, - Pseudo= "Form 2", DatePublication = "Form 2 Description", Link = "hhtp://form2.com", - UserEntityId = 2 + UserEntityPseudo = "Sha" }, new FormEntity { Id = 3, - Pseudo= "Form 3", DatePublication = "Form 3 Description", Link = "hhtp://form3.com", - UserEntityId = 3 + UserEntityPseudo = "Sha" } ); } diff --git a/Verax_API_EF/Verax_API_EF/Entities/ArticleUserEntity.cs b/Verax_API_EF/Verax_API_EF/Entities/ArticleUserEntity.cs index 2faf6b7..74bb542 100644 --- a/Verax_API_EF/Verax_API_EF/Entities/ArticleUserEntity.cs +++ b/Verax_API_EF/Verax_API_EF/Entities/ArticleUserEntity.cs @@ -2,6 +2,6 @@ namespace Entities; public class ArticleUserEntity { - public long UserEntityId { get; set; } + public string UserEntityPseudo { get; set; } public long ArticleEntityId { get; set; } } \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/Entities/FormEntity.cs b/Verax_API_EF/Verax_API_EF/Entities/FormEntity.cs index 75b43e0..8a45973 100644 --- a/Verax_API_EF/Verax_API_EF/Entities/FormEntity.cs +++ b/Verax_API_EF/Verax_API_EF/Entities/FormEntity.cs @@ -6,11 +6,8 @@ public class FormEntity public string Theme { get; set; } = string.Empty; public string DatePublication { get; set; } = string.Empty; public string Link { get; set; } = string.Empty; - public string Pseudo { get; set; } = string.Empty; - - public long UserEntityId { get; set; } - public UserEntity User { get; set; } = null; - + public string UserEntityPseudo{ get; set; } + public UserEntity User { get; set; } = null!; } \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/Entities/UserEntity.cs b/Verax_API_EF/Verax_API_EF/Entities/UserEntity.cs index 7d8680a..d7604c0 100644 --- a/Verax_API_EF/Verax_API_EF/Entities/UserEntity.cs +++ b/Verax_API_EF/Verax_API_EF/Entities/UserEntity.cs @@ -1,8 +1,10 @@ +using System.ComponentModel.DataAnnotations; + namespace Entities; public class UserEntity { - public long Id { get; set; } + [Key] public string Pseudo { get; set; } = string.Empty; public string Mdp { get; set; } = string.Empty; diff --git a/Verax_API_EF/Verax_API_EF/Model/Formulaire.cs b/Verax_API_EF/Verax_API_EF/Model/Formulaire.cs index 9b883fb..6dee834 100644 --- a/Verax_API_EF/Verax_API_EF/Model/Formulaire.cs +++ b/Verax_API_EF/Verax_API_EF/Model/Formulaire.cs @@ -6,5 +6,5 @@ public class Formulaire public string Theme { get; set; } public string Date { get; set; } public string Lien { get; set; } - public string Pseudo { get; set; } + public string UserPseudo { get; set; } } \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/StubbedContextLib/Class1.cs b/Verax_API_EF/Verax_API_EF/StubbedContextLib/Class1.cs index b922036..6ef8d5f 100644 --- a/Verax_API_EF/Verax_API_EF/StubbedContextLib/Class1.cs +++ b/Verax_API_EF/Verax_API_EF/StubbedContextLib/Class1.cs @@ -45,16 +45,16 @@ public class StubbedContext : LibraryContext modelBuilder.Entity().HasData( new UserEntity { - Id = 1, Nom = "Fages", Prenom = "Tony", Pseudo = "TonyF", Mail = "tony@gmail.com", Mdp = "1234", Role = "Admin" + Nom = "Fages", Prenom = "Tony", Pseudo = "TonyF", Mail = "tony@gmail.com", Mdp = "1234", Role = "Admin" }, new UserEntity { - Id = 2, Nom = "Smith", Prenom = "Tom", Pseudo = "TomS", Mail = "tom@mail.com", Mdp = "1234", + Nom = "Smith", Prenom = "Tom", Pseudo = "TomS", Mail = "tom@mail.com", Mdp = "1234", Role = "User" }, new UserEntity { - Id = 3, Nom = "M&M's", Prenom = "Red", Pseudo = "RedM", Mail = "M&M#mail.com", Mdp = "1234", Role = "Modérator" + Nom = "M&M's", Prenom = "Red", Pseudo = "RedM", Mail = "M&M#mail.com", Mdp = "1234", Role = "Modérator" } ); @@ -62,27 +62,27 @@ public class StubbedContext : LibraryContext new ArticleUserEntity { ArticleEntityId = 1, - UserEntityId = 1 + UserEntityPseudo = "Sha" }, new ArticleUserEntity { ArticleEntityId = 2, - UserEntityId = 2 + UserEntityPseudo = "Sha" }, new ArticleUserEntity { ArticleEntityId = 3, - UserEntityId = 3 + UserEntityPseudo = "Sha" }, new ArticleUserEntity { ArticleEntityId = 3, - UserEntityId = 1 + UserEntityPseudo = "Sha" }, new ArticleUserEntity { ArticleEntityId = 2, - UserEntityId = 3 + UserEntityPseudo = "Sha" } ); } diff --git a/Verax_API_EF/Verax_API_EF/Test_Console_EF/Entity_FrameWork.Article.db b/Verax_API_EF/Verax_API_EF/Test_Console_EF/Entity_FrameWork.Article.db index 16746d575d690983803c342494bc39c7fa82814b..730f5f313fadef5a28a425a80dd2ed5741567cb9 100644 GIT binary patch delta 93 zcmZp8z|`=7X~QFbMz+n5{S^&(Soo6|_|Nmt<YE90%|um!`y6&q)-Q6hWt$e`=wdT6_U@aqFK*gH03CXh*?O5LCp?*;f!0 z6<@%~JV4#rr64#J@lt7V=>wF0e~{$v2j9SbZo12zN@twbn&-G#E~&Tk>ABb7;IjR7 z@nNsWdDcq(?=Szv_gC)Cb%r$wjXBz-pX`Hz00bZa0SG_<0uX=z1Rwwb2tZ(L1QbFR z`5iy>cAZF41UA`kI3b&)XLyq3H^ay+*Bmw%*^=aBS%dq6=hjkNxqaM9?gd0z;^;fQ zqepCjf&c^{009U<00Izz00bZa0SHXCz_y;vW#xk772Ud8aT;oErFdL&%ni-3G|RBo zs!8U-wP$WHQh z5=xHrs!a^xf5IA(u!ads(D}cF-2a0)B4G{_Cfiaac?S0a6~FiJ;yuMvtSQnCM|-qG uziD@}w;rp900bZa0SG_<0uX=z1Rwwb2#mdeNMv405uPU`c?$v|viu9FKzGal diff --git a/Verax_API_EF/Verax_API_EF/Test_Console_EF/Test_Console_Article.cs b/Verax_API_EF/Verax_API_EF/Test_Console_EF/Test_Console_Article.cs index ae275db..df969d9 100644 --- a/Verax_API_EF/Verax_API_EF/Test_Console_EF/Test_Console_Article.cs +++ b/Verax_API_EF/Verax_API_EF/Test_Console_EF/Test_Console_Article.cs @@ -117,7 +117,7 @@ void listForms() var forms = context.FormSet; foreach (var form in forms) { - Console.WriteLine($"{form.Id} - {form.Link} - {form.DatePublication} - {form.Pseudo} - {form.Theme} - {form.UserEntityId}"); + Console.WriteLine($"{form.Id} - {form.Link} - {form.DatePublication} - {form.Theme} - {form.UserEntityPseudo}"); } } } @@ -132,8 +132,7 @@ void addForm() Theme = "Covid", DatePublication = "16-02-2024", Link = "https://www.covid.com", - Pseudo = "Tony Fages", - UserEntityId = 1 + UserEntityPseudo = "Sha" }; context.FormSet.Add(form); context.SaveChanges(); @@ -175,7 +174,7 @@ void listUser() var users = context.UserSet; foreach (var user in users) { - Console.WriteLine($"{user.Id} - {user.Pseudo} - {user.Nom} - {user.Prenom} - {user.Mail} - {user.Role}"); + Console.WriteLine($" {user.Pseudo} - {user.Nom} - {user.Prenom} - {user.Mail} - {user.Role}"); } } } @@ -186,7 +185,7 @@ void addUser() { var user = new UserEntity { - Id = 7, Nom = "Fages", Prenom = "Tony", Pseudo = "TonyF", Mail = "tony@gmail.com", Mdp = "1234", Role = "Admin" + Nom = "Fages", Prenom = "Tony", Pseudo = "TonyF", Mail = "tony@gmail.com", Mdp = "1234", Role = "Admin" }; context.UserSet.Add(user); context.SaveChanges(); @@ -198,7 +197,7 @@ void updateUser() { using (var context = new LibraryContext()) { - var user = context.UserSet.Where(u => u.Id.Equals(7)); + var user = context.UserSet.Where(u => u.Pseudo.Equals("Sha")); foreach (var users in user) { @@ -213,7 +212,7 @@ void deleteUser() { using (var context = new LibraryContext()) { - var user = context.UserSet.Where(u => u.Id.Equals(7)); + var user = context.UserSet.Where(u => u.Pseudo.Equals("Sha")); foreach (var users in user) { @@ -231,7 +230,7 @@ void listArticleUser() var articleUsers = context.ArticleUserSet; foreach (var articleUser in articleUsers) { - Console.WriteLine($"{articleUser.ArticleEntityId} - {articleUser.UserEntityId}"); + Console.WriteLine($"{articleUser.ArticleEntityId} - {articleUser.UserEntityPseudo}"); } } } @@ -243,7 +242,7 @@ void addArticleUser() var articleUser = new ArticleUserEntity { ArticleEntityId = 2, - UserEntityId = 1 + UserEntityPseudo = "Sha" }; context.ArticleUserSet.Add(articleUser); context.SaveChanges(); @@ -255,8 +254,8 @@ void updateArticleUser() { using (var context = new LibraryContext()) { - var articleUser = context.ArticleUserSet.FirstOrDefault(au => au.UserEntityId.Equals(2)); - if (articleUser != null) articleUser.UserEntityId = 3; + var articleUser = context.ArticleUserSet.FirstOrDefault(au => au.UserEntityPseudo.Equals("Sha")); + if (articleUser != null) articleUser.UserEntityPseudo = "Sha"; context.SaveChanges(); } listArticleUser(); @@ -266,7 +265,7 @@ void deleteArticleUser() { using (var context = new LibraryContext()) { - var articleUser = context.ArticleUserSet.Where(au => au.UserEntityId.Equals(1)).Where(u => u.ArticleEntityId.Equals(1)); + var articleUser = context.ArticleUserSet.Where(au => au.UserEntityPseudo.Equals(1)).Where(u => u.ArticleEntityId.Equals(1)); foreach (var articleUsers in articleUser) { @@ -281,10 +280,10 @@ void listFormUser() { using (var context = new LibraryContext()) { - var formUsers = context.FormSet; + var formUsers = context.FormSet.Where(u => u.UserEntityPseudo.Equals(1)); foreach (var formUser in formUsers) { - Console.WriteLine($"{formUser.UserEntityId}"); + Console.WriteLine($"{formUser.UserEntityPseudo} - {formUser.Theme} - {formUser.Link}"); } } } @@ -295,7 +294,7 @@ void addFormUser() { var formUser = new FormEntity { - UserEntityId = 1 + UserEntityPseudo = "Sha", }; context.FormSet.Add(formUser); context.SaveChanges(); From 8a39e6321155dd4cf8b18419372c1ca17706974c Mon Sep 17 00:00:00 2001 From: tonyfages Date: Mon, 11 Mar 2024 21:01:48 +0100 Subject: [PATCH 06/19] add ArticleUser --- Verax_API_EF/Verax_API_EF/API/API.csproj | 1 + .../API/Controllers/ArticleController.cs | 96 +++++++++++--- .../API/Controllers/ArticleUserController.cs | 121 ++++++++++++++++++ .../API/Controllers/FormulaireController.cs | 106 ++++++++++++--- .../API/Controllers/UserController.cs | 99 +++++++++++--- .../API/Entity_FrameWork.Article.db-wal | Bin 86552 -> 94792 bytes Verax_API_EF/Verax_API_EF/API/Program.cs | 1 + .../API_DbDataManager/DbManagerArticle.cs | 32 +---- .../API_DbDataManager/DbManagerArticleUser.cs | 67 ++++++++++ .../API_DbDataManager/DbManagerFormulaire.cs | 12 +- .../API_DbDataManager/DbManagerUser.cs | 64 ++++----- .../Verax_API_EF/API_Mapping/ArticleMapper.cs | 2 +- .../API_Services/API_Services.csproj | 1 + .../API_Services/IArticleService.cs | 2 +- .../API_Services/IArticleUserService.cs | 15 +++ .../Verax_API_EF/API_Services/IUserService.cs | 10 +- .../Verax_API_EF/Entities/ArticleEntity.cs | 3 + .../Verax_API_EF/Entities/FormEntity.cs | 3 + Verax_API_EF/Verax_API_EF/Model/Article.cs | 2 +- 19 files changed, 513 insertions(+), 124 deletions(-) create mode 100644 Verax_API_EF/Verax_API_EF/API/Controllers/ArticleUserController.cs create mode 100644 Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerArticleUser.cs create mode 100644 Verax_API_EF/Verax_API_EF/API_Services/IArticleUserService.cs diff --git a/Verax_API_EF/Verax_API_EF/API/API.csproj b/Verax_API_EF/Verax_API_EF/API/API.csproj index e993a90..1a9894b 100644 --- a/Verax_API_EF/Verax_API_EF/API/API.csproj +++ b/Verax_API_EF/Verax_API_EF/API/API.csproj @@ -21,6 +21,7 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/Verax_API_EF/Verax_API_EF/API/Controllers/ArticleController.cs b/Verax_API_EF/Verax_API_EF/API/Controllers/ArticleController.cs index a7aae26..940469f 100644 --- a/Verax_API_EF/Verax_API_EF/API/Controllers/ArticleController.cs +++ b/Verax_API_EF/Verax_API_EF/API/Controllers/ArticleController.cs @@ -12,52 +12,114 @@ namespace API.Controllers { private readonly IArticleService _articleService; + private readonly ILogger _logger; - public ArticleController(IArticleService articleService) + public ArticleController(IArticleService articleService, ILogger logger) { - _articleService = articleService; + this._articleService = articleService; + this._logger = logger; } [HttpGet] public async Task GetAllArticles([FromQuery] int index = 0, [FromQuery] int count = 10, [FromQuery] ArticleOrderCriteria orderCriterium = ArticleOrderCriteria.None) { - var result = (await _articleService.GetAllArticles(index, count, orderCriterium)).Select(a => a.ToDTO()); - if (result == null) + _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(GetAllArticles), index, count, orderCriterium); + try { - return NotFound(); + var result = (await _articleService.GetAllArticles(index, count, orderCriterium)).Select(a => a.ToDTO()); + if (result == null) + { + return NotFound(); + } + return Ok(result); + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); } - return Ok(result); } [HttpGet("/article/{id}")] - public async Task GetArticleById(int id, [FromQuery] int index = 0, [FromQuery] int count = 10, [FromQuery] ArticleOrderCriteria orderCriterium = ArticleOrderCriteria.None) + public async Task GetArticleById(int id) { - var result = await _articleService.GetArticleById(id, index, count, orderCriterium); - if (result == null) + _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(GetArticleById), id); + try + { + var result = (await _articleService.GetArticleById(id)).ToDTO(); + if (result == null) + { + return NotFound($"Article ID {id} not found"); + } + return Ok(result); + } + catch (Exception error) { - return null; + _logger.LogError(error.Message); + return BadRequest(error.Message); } - return result; } [HttpPost("/article")] - public async Task CreateArticle(Article article) + public async Task CreateArticle(Article article) { - return await _articleService.CreateArticle(article); + _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(CreateArticle), article); + try + { + var result = (await _articleService.CreateArticle(article)).ToDTO(); + if (result == null) + { + return BadRequest($"Article not created"); + } + return Ok(result); + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } } [HttpDelete("/article/{id}")] - public async Task DeleteArticle(long id) + public async Task DeleteArticle(long id) { - return await _articleService.DeleteArticle(id); + _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(DeleteArticle), id); + try + { + var result = await _articleService.DeleteArticle(id); + if (result == null) + { + return NotFound($"Article ID {id} not found"); + } + return Ok(result.ToDTO()); + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } } [HttpPut("/article/{id}")] - public async Task UpdateArticle(long id, Article? a) + public async Task UpdateArticle(long id, Article? a) { - return await _articleService.UpdateArticle(id, a); + _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(UpdateArticle), id, a); + try + { + var result = await _articleService.UpdateArticle(id, a); + if (result == false) + { + return NotFound($"Article ID {id} not found"); + } + return Ok(result); + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } } diff --git a/Verax_API_EF/Verax_API_EF/API/Controllers/ArticleUserController.cs b/Verax_API_EF/Verax_API_EF/API/Controllers/ArticleUserController.cs new file mode 100644 index 0000000..d8baa78 --- /dev/null +++ b/Verax_API_EF/Verax_API_EF/API/Controllers/ArticleUserController.cs @@ -0,0 +1,121 @@ +using API_Services; +using Entities; +using Microsoft.AspNetCore.Mvc; + +namespace API.Controllers; + +[Route("api/[controller]")] +[ApiController] +public class ArticleUserController : ControllerBase +{ + + private readonly IArticleUserService _us; + private readonly ILogger _logger; + public ArticleUserController(IArticleUserService us, ILogger logger) + { + this._us = us; + this._logger = logger; + } + + + [HttpGet("/articleUsers")] + public async Task GetAllArticleUsers() + { + _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(GetAllArticleUsers), ""); + try + { + var result = await _us.GetAllArticleUsers(); + if (result == null) + { + return NoContent(); + } + return Ok(result); + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } + } + + [HttpGet("/user/{pseudo}/article")] + public async Task GetArticleUser(string pseudo) + { + _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(GetArticleUser), pseudo); + try + { + var result = await _us.GetArticleUser(pseudo); + if (result == null) + { + return NoContent(); + } + return Ok(result); + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } + } + + [HttpPost("/user/{pseudo}/article")] + public async Task CreateArticleUser(ArticleUserEntity articleUser) + { + _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(CreateArticleUser), articleUser); + try + { + var result = await _us.CreateArticleUser(articleUser); + if (result == null) + { + return BadRequest($"ArticleUser {articleUser.UserEntityPseudo} already exists"); + } + return Ok(result); + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } + } + + [HttpDelete("/user/{pseudo}/article")] + public async Task DeleteArticleUser(string pseudo) + { + _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(DeleteArticleUser), pseudo); + try + { + var result = await _us.DeleteArticleUser(pseudo); + if (!result) + { + return BadRequest($"ArticleUser {pseudo} does not exist"); + } + return Ok(result); + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } + } + + [HttpPut("/user/{pseudo}/article")] + public async Task UpdateArticleUser(ArticleUserEntity articleUser) + { + _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(UpdateArticleUser), articleUser); + try + { + var result = await _us.UpdateArticleUser(articleUser); + if (!result) + { + return BadRequest($"ArticleUser {articleUser.UserEntityPseudo} does not exist"); + } + return Ok(result); + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } + } + +} \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/API/Controllers/FormulaireController.cs b/Verax_API_EF/Verax_API_EF/API/Controllers/FormulaireController.cs index 72c54b5..1e793a9 100644 --- a/Verax_API_EF/Verax_API_EF/API/Controllers/FormulaireController.cs +++ b/Verax_API_EF/Verax_API_EF/API/Controllers/FormulaireController.cs @@ -13,50 +13,116 @@ namespace API.Controllers public class FormulaireController : ControllerBase { private readonly IFormulaireService _form; + private readonly ILogger _logger; - public FormulaireController(IFormulaireService iform) + public FormulaireController(IFormulaireService iform, ILogger logger) { this._form = iform; + this._logger = logger; } - [HttpGet("/forms")] + [HttpGet("/formulaires")] public async Task GetAllForm([FromQuery] int index = 0, [FromQuery] int count = 10, [FromQuery] FormOrderCriteria orderCriteria = FormOrderCriteria.None) { - var result = (await _form.GetAllForm(index, count, orderCriteria)).Select(f => f.ToDTO()); - if (result == null) + _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(GetAllForm), index, count, orderCriteria); + try { - return NotFound(); + var result = (await _form.GetAllForm(index, count, orderCriteria)).Select(f => f.ToDTO()); + if (result == null) + { + return NotFound($"No form found"); + } + return Ok(result); } - return Ok(result); + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } + } - [HttpGet("{id}")] + [HttpGet("/formulaire/{id}")] public async Task GetById(long id) { - var result = (await _form.GetById(id)).ToDTO(); - if (result == null) + _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(GetById), id); + try { - return NotFound(); + var result = (await _form.GetById(id)).ToDTO(); + if (result == null) + { + return NotFound($"form ID {id} not found"); + } + return Ok(result); } - return Ok(result); + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } + + } - [HttpPost] - public async Task CreateForm(Formulaire formulaire) + [HttpPost ("/formulaire")] + public async Task CreateForm(Formulaire formulaire) { - return await _form.CreateForm(formulaire); + _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(CreateForm), formulaire); + try + { + var result = (await _form.CreateForm(formulaire)).ToDTO(); + if (result == null) + { + return BadRequest($"Form Id {formulaire.Id} already exists"); + } + return Ok(result); + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } } - [HttpDelete("{id}")] - public async Task DeleteForm(long id) + [HttpDelete("/formulaire/{id}")] + public async Task DeleteForm(long id) { - return await _form.DeleteForm(id); + _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(DeleteForm), id); + try + { + var result = await _form.DeleteForm(id); + if (result == false) + { + return NotFound($"Form Id {id} not found"); + } + return Ok(result); + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } } - [HttpPut("{id}")] - public async Task UpdateForm(long id, Formulaire formulaire) + [HttpPut("/formulaire/{id}")] + public async Task UpdateForm(long id, Formulaire formulaire) { - return await _form.UpdateForm(id, formulaire); + _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(UpdateForm), formulaire); + + try + { + var result = await _form.UpdateForm(id, formulaire); + if (result == false) + { + return NotFound($"form Id {id} not found"); + } + return Ok(result); + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } } } } \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/API/Controllers/UserController.cs b/Verax_API_EF/Verax_API_EF/API/Controllers/UserController.cs index c7ed3c2..b874e9e 100644 --- a/Verax_API_EF/Verax_API_EF/API/Controllers/UserController.cs +++ b/Verax_API_EF/Verax_API_EF/API/Controllers/UserController.cs @@ -3,6 +3,7 @@ using Microsoft.AspNetCore.Mvc; using API_Services; using Model; using API_Mapping; +using Entities; namespace API.Controllers @@ -12,53 +13,117 @@ namespace API.Controllers public class UserController : ControllerBase { private readonly IUserService _us; - - public UserController(IUserService us) + private readonly ILogger _logger; + public UserController(IUserService us, ILogger logger) { this._us = us; + this._logger = logger; } [HttpGet("/users")] public async Task GetAll([FromQuery] int index = 0, [FromQuery] int count = 10, [FromQuery] UserOrderCriteria orderCriteria = UserOrderCriteria.None) { - var result = (await _us.GetAll(index, count, orderCriteria)).Select(u => u.ToDTO()); - if (result == null) + _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(GetAll), index, count, orderCriteria); + try + { + var result = (await _us.GetAll(index, count, orderCriteria)).Select(u => u.ToDTO()); + if (result == null) + { + return NotFound($"No user found with the given parameters"); + } + return Ok(result); + } + catch (Exception error) { - return NotFound(); + _logger.LogError(error.Message); + return BadRequest(error.Message); } - return Ok(result); } [HttpGet("/user/{pseudo}")] public async Task GetByPseudo(string pseudo) { - var result = (await _us.GetByPseudo(pseudo)).ToDTO(); - if (result == null) + _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(GetByPseudo), pseudo); + try + { + var result = (await _us.GetByPseudo(pseudo)).ToDTO(); + if (result == null) + { + return NotFound($"Psuedo {pseudo} not found"); + } + return Ok(result); + } + catch (Exception error) { - return NotFound(); + _logger.LogError(error.Message); + return BadRequest(error.Message); } - return Ok(result); + } [HttpPost("/user")] - public async Task Create(User user) + public async Task Create(User user) { - return await _us.Create(user); + _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(Create), user); + try + { + var result = await _us.Create(user); + if (result == false) + { + return BadRequest($"User {user.Pseudo} already exists"); + } + return Ok(result); + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } + } [HttpPut("/user/{pseudo}")] - public async Task Update(User user, string pseudo) + public async Task Update(User user, string pseudo) { - return await _us.Update(user,pseudo); + _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(Update), user, pseudo); + try + { + var result = await _us.Update(user,pseudo); + if (result == false) + { + return NotFound(); + } + return Ok(result); + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } + } [HttpDelete("/user/{pseudo}")] - public async Task Delete(string pseudo) + public async Task Delete(string pseudo) { - return await _us.Delete(pseudo); + _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(Delete), pseudo); + try + { + var result = await _us.Delete(pseudo); + if (result == false) + { + return NotFound(); + } + return Ok(result); + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } } - + diff --git a/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-wal b/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-wal index be3745a25eab29f2754459d74c2dcb0cc9502e7b..99a315d53ffcba3377dd9209595afde6969a70e4 100644 GIT binary patch delta 122 zcmbQSg!RM|)`l&N5@IS)~6l39A%fLUC--z!V z-`dTI0(1Ekq-{iQRhbIJ1UFBBR7^E0vl E0P}$?RR910 delta 11 ScmX@{gmuOe)`l&N5(options => builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); +builder.Services.AddScoped(); var app = builder.Build(); diff --git a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerArticle.cs b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerArticle.cs index 0c425de..81405d9 100644 --- a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerArticle.cs +++ b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerArticle.cs @@ -45,34 +45,11 @@ public class DbManagerArticle : IArticleService return await Task.FromResult(articles.AsEnumerable()); } - public Task GetArticleById(int id, int index, int count, ArticleOrderCriteria orderCriterium) + public Task GetArticleById(int id) { - List
articles = new List
(); - switch (orderCriterium) - { - case ArticleOrderCriteria.None: - articles = _context.ArticleSet.Where(a => a.Id == id).Select(a => a.ToModel()).ToList(); - break; - case ArticleOrderCriteria.ByLectureTime: - articles = _context.ArticleSet.Where(a => a.Id == id).OrderBy(a => a.LectureTime).Select(a => a.ToModel()).ToList(); - break; - case ArticleOrderCriteria.ByTitle: - articles = _context.ArticleSet.Where(a => a.Id == id).OrderBy(a => a.Title).Select(a => a.ToModel()).ToList(); - break; - case ArticleOrderCriteria.ByAuthor: - articles = _context.ArticleSet.Where(a => a.Id == id).OrderBy(a => a.Author).Select(a => a.ToModel()).ToList(); - break; - case ArticleOrderCriteria.ByDatePublished: - articles = _context.ArticleSet.Where(a => a.Id == id).OrderBy(a => a.DatePublished).Select(a => a.ToModel()).ToList(); - break; - case ArticleOrderCriteria.ByDescription: - articles = _context.ArticleSet.Where(a => a.Id == id).OrderBy(a => a.Description).Select(a => a.ToModel()).ToList(); - break; - default: - articles = _context.ArticleSet.Where(a => a.Id == id).Select(a => a.ToModel()).ToList(); - break; - } - return Task.FromResult(articles.FirstOrDefault()); + var entity = _context.ArticleSet.FirstOrDefault(a => a.Id == id); + if (entity == null) return Task.FromResult(null); + return Task.FromResult(entity.ToModel()); } @@ -80,6 +57,7 @@ public class DbManagerArticle : IArticleService { var entity = new Entities.ArticleEntity() { + Id = article.Id, Title = article.Title, Description = article.Description, Author = article.Author, diff --git a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerArticleUser.cs b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerArticleUser.cs new file mode 100644 index 0000000..cad3888 --- /dev/null +++ b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerArticleUser.cs @@ -0,0 +1,67 @@ +using API_Services; +using DbContextLib; +using Entities; +using Model; + +namespace DbDataManager; + +public class DbManagerArticleUser : IArticleUserService +{ + private readonly LibraryContext _context; + + public DbManagerArticleUser(LibraryContext context) + { + _context = context; + } + + public async Task> GetAllArticleUsers() + { + var entities = _context.ArticleUserSet.ToList(); + if (entities == null) return await Task.FromResult>(null); + return await Task.FromResult(entities.AsEnumerable()); + } + + public async Task GetArticleUser(string pseudo) + { + var entity = _context.ArticleUserSet.FirstOrDefault(a => a.UserEntityPseudo.Equals(pseudo)); + if (entity == null) return await Task.FromResult(null); + return await Task.FromResult(entity); + } + + + public async Task CreateArticleUser(ArticleUserEntity articleUser) + { + var result = await GetArticleUser(articleUser.UserEntityPseudo); + if (result != null) return await Task.FromResult(null); + var entity = new ArticleUserEntity() + { + ArticleEntityId = articleUser.ArticleEntityId, + UserEntityPseudo = articleUser.UserEntityPseudo + }; + if (entity == null) return await Task.FromResult(null); + _context.ArticleUserSet.Add(entity); + await _context.SaveChangesAsync(); + return await Task.FromResult(entity); + } + + public async Task DeleteArticleUser(string pseudo) + { + var entity = _context.ArticleUserSet.FirstOrDefault(a => a.UserEntityPseudo.Equals(pseudo)); + if (entity == null) return await Task.FromResult(false); + _context.ArticleUserSet.Remove(entity); + await _context.SaveChangesAsync(); + return await Task.FromResult(true); + } + + public async Task UpdateArticleUser(ArticleUserEntity articleUser) + { + var entity = _context.ArticleUserSet.FirstOrDefault(a => a.UserEntityPseudo.Equals(articleUser.UserEntityPseudo)); + if (entity == null) return await Task.FromResult(false); + entity.ArticleEntityId = articleUser.ArticleEntityId; + entity.UserEntityPseudo = articleUser.UserEntityPseudo; + await _context.SaveChangesAsync(); + return await Task.FromResult(true); + } + + +} \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerFormulaire.cs b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerFormulaire.cs index 4cb5671..d84f9ba 100644 --- a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerFormulaire.cs +++ b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerFormulaire.cs @@ -21,22 +21,22 @@ public class DbManagerFormulaire : IFormulaireService switch (orderCriteria) { case FormOrderCriteria.None: - formulaireList = _context.FormSet.Select(f => f.ToModel()).ToList(); + formulaireList = _context.FormSet.Skip(index * count).Select(f => f.ToModel()).ToList(); break; case FormOrderCriteria.ByTheme: - formulaireList = _context.FormSet.OrderBy(f => f.Theme).Select(f => f.ToModel()).ToList(); + formulaireList = _context.FormSet.Skip(index * count).OrderBy(f => f.Theme).Select(f => f.ToModel()).ToList(); break; case FormOrderCriteria.ByLien: - formulaireList = _context.FormSet.OrderBy(f => f.Link).Select(f => f.ToModel()).ToList(); + formulaireList = _context.FormSet.Skip(index * count).OrderBy(f => f.Link).Select(f => f.ToModel()).ToList(); break; case FormOrderCriteria.ByDate: - formulaireList = _context.FormSet.OrderBy(f => f.DatePublication).Select(f => f.ToModel()).ToList(); + formulaireList = _context.FormSet.Skip(index * count).OrderBy(f => f.DatePublication).Select(f => f.ToModel()).ToList(); break; case FormOrderCriteria.ByPseudo: - formulaireList = _context.FormSet.OrderBy(f => f.UserEntityPseudo).Select(f => f.ToModel()).ToList(); + formulaireList = _context.FormSet.Skip(index * count).OrderBy(f => f.UserEntityPseudo).Select(f => f.ToModel()).ToList(); break; default: - formulaireList = _context.FormSet.Select(f => f.ToModel()).ToList(); + formulaireList = _context.FormSet.Skip(index * count).Select(f => f.ToModel()).ToList(); break; } return await Task.FromResult(formulaireList.AsEnumerable()); diff --git a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerUser.cs b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerUser.cs index be61dd4..b3928ae 100644 --- a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerUser.cs +++ b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerUser.cs @@ -15,6 +15,35 @@ public class DbManagerUser: IUserService _context = context; } + public async Task> GetAll(int index, int count, UserOrderCriteria orderCriteria) + { + List users = new List(); + switch(orderCriteria) + { + case UserOrderCriteria.None: + users = _context.UserSet.Skip(index * count).Select(u => u.ToModel()).ToList(); + break; + case UserOrderCriteria.ByFirstName: + users = _context.UserSet.Skip(index * count).OrderBy(u => u.Prenom).Select(u => u.ToModel()).ToList(); + break; + case UserOrderCriteria.ByLastName: + users = _context.UserSet.Skip(index * count).OrderBy(u => u.Nom).Select(u => u.ToModel()).ToList(); + break; + default: + users = _context.UserSet.Skip(index * count).Select(u => u.ToModel()).ToList(); + break; + + } + return await Task.FromResult(users.AsEnumerable()); + + } + + public async Task GetByPseudo(string pseudo) + { + var entity = _context.UserSet.FirstOrDefault(u => u.Pseudo == pseudo); + return await Task.FromResult(entity.ToModel()); + } + public async Task Create(User user) { var entity = new UserEntity() @@ -51,35 +80,10 @@ public class DbManagerUser: IUserService _context.UserSet.Remove(entity); await _context.SaveChangesAsync(); return await Task.FromResult(true); - - } - - public async Task GetByPseudo(string pseudo) - { - var entity = _context.UserSet.FirstOrDefault(u => u.Pseudo == pseudo); - return await Task.FromResult(entity.ToModel()); - } - - public async Task> GetAll(int index, int count, UserOrderCriteria orderCriteria) - { - List users = new List(); - switch(orderCriteria) - { - case UserOrderCriteria.None: - users = _context.UserSet.Select(u => u.ToModel()).ToList(); - break; - case UserOrderCriteria.ByFirstName: - users = _context.UserSet.OrderBy(u => u.Prenom).Select(u => u.ToModel()).ToList(); - break; - case UserOrderCriteria.ByLastName: - users = _context.UserSet.OrderBy(u => u.Nom).Select(u => u.ToModel()).ToList(); - break; - default: - users = _context.UserSet.Select(u => u.ToModel()).ToList(); - break; - - } - return await Task.FromResult(users.AsEnumerable()); - } + + + + + } \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/API_Mapping/ArticleMapper.cs b/Verax_API_EF/Verax_API_EF/API_Mapping/ArticleMapper.cs index 9767dd8..3c9e57f 100644 --- a/Verax_API_EF/Verax_API_EF/API_Mapping/ArticleMapper.cs +++ b/Verax_API_EF/Verax_API_EF/API_Mapping/ArticleMapper.cs @@ -5,7 +5,7 @@ namespace API_Mapping; public static class ArticleMapper { - public static ArticleDTO ToDTO(this Article a) => new() + public static ArticleDTO ToDTO(this Article? a) => new() { Id = a.Id, Title = a.Title, diff --git a/Verax_API_EF/Verax_API_EF/API_Services/API_Services.csproj b/Verax_API_EF/Verax_API_EF/API_Services/API_Services.csproj index b0ff0a6..4fe8b1d 100644 --- a/Verax_API_EF/Verax_API_EF/API_Services/API_Services.csproj +++ b/Verax_API_EF/Verax_API_EF/API_Services/API_Services.csproj @@ -7,6 +7,7 @@ + diff --git a/Verax_API_EF/Verax_API_EF/API_Services/IArticleService.cs b/Verax_API_EF/Verax_API_EF/API_Services/IArticleService.cs index c10505b..712ab2e 100644 --- a/Verax_API_EF/Verax_API_EF/API_Services/IArticleService.cs +++ b/Verax_API_EF/Verax_API_EF/API_Services/IArticleService.cs @@ -7,7 +7,7 @@ namespace API_Services Task> GetAllArticles(int index, int count, ArticleOrderCriteria orderCriterium); - Task GetArticleById(int id, int index, int count, ArticleOrderCriteria orderCriterium); + Task GetArticleById(int id); Task CreateArticle(Article article); diff --git a/Verax_API_EF/Verax_API_EF/API_Services/IArticleUserService.cs b/Verax_API_EF/Verax_API_EF/API_Services/IArticleUserService.cs new file mode 100644 index 0000000..3a07594 --- /dev/null +++ b/Verax_API_EF/Verax_API_EF/API_Services/IArticleUserService.cs @@ -0,0 +1,15 @@ +using Entities; + +namespace API_Services; + +public interface IArticleUserService +{ + Task> GetAllArticleUsers(); + Task GetArticleUser(string pseudo); + + Task CreateArticleUser(ArticleUserEntity articleUser); + + Task DeleteArticleUser(string pseudo); + + Task UpdateArticleUser(ArticleUserEntity articleUser); +} \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/API_Services/IUserService.cs b/Verax_API_EF/Verax_API_EF/API_Services/IUserService.cs index 1e447d3..771947f 100644 --- a/Verax_API_EF/Verax_API_EF/API_Services/IUserService.cs +++ b/Verax_API_EF/Verax_API_EF/API_Services/IUserService.cs @@ -1,18 +1,20 @@ -using Model; +using Entities; +using Model; namespace API_Services { public interface IUserService { + + Task> GetAll(int index, int count, UserOrderCriteria orderCriteria); + Task GetByPseudo(string pseudo); Task Create(User user); Task Update(User user, string pseudo); Task Delete(string pseudo); + - Task GetByPseudo(string pseudo); - - Task> GetAll(int index, int count, UserOrderCriteria orderCriteria); diff --git a/Verax_API_EF/Verax_API_EF/Entities/ArticleEntity.cs b/Verax_API_EF/Verax_API_EF/Entities/ArticleEntity.cs index f82543e..86e4c01 100644 --- a/Verax_API_EF/Verax_API_EF/Entities/ArticleEntity.cs +++ b/Verax_API_EF/Verax_API_EF/Entities/ArticleEntity.cs @@ -1,7 +1,10 @@ +using System.ComponentModel.DataAnnotations; + namespace Entities; public class ArticleEntity { + [Key] public long Id { get; set; } public string Title { get; set; } = string.Empty; public string Description { get; set; } = string.Empty; diff --git a/Verax_API_EF/Verax_API_EF/Entities/FormEntity.cs b/Verax_API_EF/Verax_API_EF/Entities/FormEntity.cs index 8a45973..6f5788a 100644 --- a/Verax_API_EF/Verax_API_EF/Entities/FormEntity.cs +++ b/Verax_API_EF/Verax_API_EF/Entities/FormEntity.cs @@ -1,7 +1,10 @@ +using System.ComponentModel.DataAnnotations; + namespace Entities; public class FormEntity { + [Key] public long Id { get; set; } public string Theme { get; set; } = string.Empty; public string DatePublication { get; set; } = string.Empty; diff --git a/Verax_API_EF/Verax_API_EF/Model/Article.cs b/Verax_API_EF/Verax_API_EF/Model/Article.cs index 497b56c..222e3a2 100644 --- a/Verax_API_EF/Verax_API_EF/Model/Article.cs +++ b/Verax_API_EF/Verax_API_EF/Model/Article.cs @@ -2,7 +2,7 @@ namespace Model; public class Article { - public long Id { get; set; } + public long Id; public string Title { get; set; } = string.Empty; public string Description { get; set; } = string.Empty; public string DatePublished { get; set; } = string.Empty; From e918eb234bd5d3ce2e9b6ea70b90e923a67acb9a Mon Sep 17 00:00:00 2001 From: Louis LABORIE Date: Tue, 12 Mar 2024 13:17:48 +0100 Subject: [PATCH 07/19] =?UTF-8?q?Add=20drone=20file=20=E2=9C=A8=E2=9C=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .drone.yml | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 .drone.yml diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..a8e1782 --- /dev/null +++ b/.drone.yml @@ -0,0 +1,53 @@ +kind: pipeline +type: docker +name: CI + +trigger: + event: + - push + +steps: + - name: build + image: mcr.microsoft.com/dotnet/sdk:8.0 + commands: + - cd Verax_API_EF + - cd Verax_API_EF + - dotnet restore Verax_API_EF.sln + - dotnet build Verax_API_EF.sln -c Release --no-restore + - dotnet publish Verax_API_EF.sln -c Release --no-restore -o $CI_PROJECT_DIR/build/release + + - name: tests + image: mcr.microsoft.com/dotnet/sdk:8.0 + commands: + - cd Verax_API_EF + - cd Verax_API_EF + - dotnet restore Verax_API_EF.sln + - dotnet test Verax_API_EF.sln --no-restore + depends_on: [build] + + - name: code-inspection + image: hub.codefirst.iut.uca.fr/marc.chevaldonne/codefirst-dronesonarplugin-dotnet7 + secrets: [ SECRET_SONAR_LOGIN ] + environment: + sonar_host: https://codefirst.iut.uca.fr/sonar/ + sonar_token: + from_secret: SECRET_SONAR_LOGIN + project_key: Verax_API_EF + coverage_exclusions: "TestsUnitaires/**" + commands: + - cd Verax_API_EF/ + - cd Verax_API_EF/ + - dotnet restore Verax_API_EF.sln + - dotnet sonarscanner begin /k:$${project_key} /d:sonar.host.url=$${sonar_host} /d:sonar.coverageReportPaths="coveragereport/SonarQube.xml" /d:sonar.coverage.exclusions=$${coverage_exclusions} /d:sonar.login=$${sonar_token} + - dotnet build Verax_API_EF.sln -c Release --no-restore + - dotnet test Verax_API_EF.sln --logger trx --no-restore + - reportgenerator -reports:"**/coverage.cobertura.xml" -reporttypes:SonarQube -targetdir:"coveragereport" + - dotnet publish Linaris/Linaris.csproj -c Release --no-restore -o $CI_PROJECT_DIR/build/release + - dotnet sonarscanner end /d:sonar.login=$${sonar_token} + when: + branch: + - master + event: + - push + - pull_request + depends_on: [build,tests] \ No newline at end of file From 6fccf58b659821d4a0c9a7fea0a6bd7099304291 Mon Sep 17 00:00:00 2001 From: Louis LABORIE Date: Tue, 12 Mar 2024 13:23:08 +0100 Subject: [PATCH 08/19] =?UTF-8?q?Edit=20drone=20file=20=E2=9C=A8=E2=9C=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index a8e1782..454daf2 100644 --- a/.drone.yml +++ b/.drone.yml @@ -42,7 +42,7 @@ steps: - dotnet build Verax_API_EF.sln -c Release --no-restore - dotnet test Verax_API_EF.sln --logger trx --no-restore - reportgenerator -reports:"**/coverage.cobertura.xml" -reporttypes:SonarQube -targetdir:"coveragereport" - - dotnet publish Linaris/Linaris.csproj -c Release --no-restore -o $CI_PROJECT_DIR/build/release + - dotnet publish Verax_API_EF.sln -c Release --no-restore -o $CI_PROJECT_DIR/build/release - dotnet sonarscanner end /d:sonar.login=$${sonar_token} when: branch: From 9bf771b6ef0aada5421a678fdce684196f953dce Mon Sep 17 00:00:00 2001 From: Louis LABORIE Date: Tue, 12 Mar 2024 13:45:05 +0100 Subject: [PATCH 09/19] =?UTF-8?q?Add=20Unit=20tests=20for=20Article=20enti?= =?UTF-8?q?ty=20=F0=9F=93=9D=F0=9F=93=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TestsUnitaires/Properties/AssemblyInfo.cs | 35 ------ .../Verax_API_EF/TestsUnitaires/Tests.cs | 14 --- .../TestsUnitaires/TestsArticleEntity.cs | 103 ++++++++++++++++++ .../TestsUnitaires/TestsUnitaires.csproj | 98 ++++++----------- .../TestsUnitaires/packages.config | 9 -- Verax_API_EF/Verax_API_EF/Verax_API_EF.sln | 32 ++++-- 6 files changed, 158 insertions(+), 133 deletions(-) delete mode 100644 Verax_API_EF/Verax_API_EF/TestsUnitaires/Properties/AssemblyInfo.cs delete mode 100644 Verax_API_EF/Verax_API_EF/TestsUnitaires/Tests.cs create mode 100644 Verax_API_EF/Verax_API_EF/TestsUnitaires/TestsArticleEntity.cs delete mode 100644 Verax_API_EF/Verax_API_EF/TestsUnitaires/packages.config diff --git a/Verax_API_EF/Verax_API_EF/TestsUnitaires/Properties/AssemblyInfo.cs b/Verax_API_EF/Verax_API_EF/TestsUnitaires/Properties/AssemblyInfo.cs deleted file mode 100644 index c3f33a7..0000000 --- a/Verax_API_EF/Verax_API_EF/TestsUnitaires/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System.Reflection; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("TestsUnitaires")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("TestsUnitaires")] -[assembly: AssemblyCopyright("Copyright © 2024")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("FF8AFA55-12FE-4856-A0A1-21344D366E12")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/TestsUnitaires/Tests.cs b/Verax_API_EF/Verax_API_EF/TestsUnitaires/Tests.cs deleted file mode 100644 index f0b4fcb..0000000 --- a/Verax_API_EF/Verax_API_EF/TestsUnitaires/Tests.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System; -using Xunit; - -namespace TestsUnitaires -{ - public class Tests - { - [Fact] - public void Test1() - { - Assert.True(true); - } - } -} \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/TestsUnitaires/TestsArticleEntity.cs b/Verax_API_EF/Verax_API_EF/TestsUnitaires/TestsArticleEntity.cs new file mode 100644 index 0000000..fce41a3 --- /dev/null +++ b/Verax_API_EF/Verax_API_EF/TestsUnitaires/TestsArticleEntity.cs @@ -0,0 +1,103 @@ +using DbContextLib; +using Entities; +using Microsoft.Data.Sqlite; +using Microsoft.EntityFrameworkCore; +using Xunit; + +namespace Tests; + +public class ArticleDB_Tests +{ + [Fact] + public void Add_Test() + { + var connection = new SqliteConnection("DataSource=:memory:"); + connection.Open(); + + var options = new DbContextOptionsBuilder() + .UseSqlite(connection) + .Options; + + using (var context = new LibraryContext(options)) + { + context.Database.EnsureCreated(); + ArticleEntity a1 = new ArticleEntity { Id = 1, Title = "Breaking News Elisabeth 2 Died", Description = "The queen of England died today at the age of 95", DatePublished = "2022-02-06", LectureTime = 2, Author = "Tom Smith" }; + ArticleEntity a2 = new ArticleEntity { Id = 2, Title = "The new iPhone 15", Description = "The new iPhone 15 is out and it's the best phone ever", DatePublished = "2022-02-06", LectureTime = 3, Author = "Tom Smith" }; + ArticleEntity a3 = new ArticleEntity { Id = 3, Title = "M&M's new recipe", Description = "M&M's new recipe is out and it's the best chocolate ever", DatePublished = "2022-02-06", LectureTime = 1, Author = "M&M's Red" }; + + context.Add(a1); + context.Add(a2); + context.Add(a3); + + context.SaveChanges(); + + Assert.Equal(3, context.ArticleSet.Count()); + Assert.Equal("Tom Smith", context.ArticleSet.First().Author); + connection.Close(); + } + } + + [Fact] + public void Modify_Test() + { + var connection = new SqliteConnection("DataSource=:memory:"); + connection.Open(); + + var options = new DbContextOptionsBuilder() + .UseSqlite(connection) + .Options; + using (var context = new LibraryContext(options)) + { + context.Database.EnsureCreated(); + ArticleEntity a1 = new ArticleEntity { Id = 1, Title = "Breaking News Elisabeth 2 Died", Description = "The queen of England died today at the age of 95", DatePublished = "2022-02-06", LectureTime = 2, Author = "Tom Smith" }; + ArticleEntity a2 = new ArticleEntity { Id = 2, Title = "The new iPhone 15", Description = "The new iPhone 15 is out and it's the best phone ever", DatePublished = "2022-02-06", LectureTime = 3, Author = "Tom Smith" }; + ArticleEntity a3 = new ArticleEntity { Id = 3, Title = "M&M's new recipe", Description = "M&M's new recipe is out and it's the best chocolate ever", DatePublished = "2022-02-06", LectureTime = 1, Author = "M&M's Red" }; + context.Add(a1); + context.Add(a2); + context.Add(a3); + + context.SaveChanges(); + + var article = context.ArticleSet.First(a => a.Title.Equals("Breaking News Elisabeth 2 Died")); + article.Author = "Louis Laborie"; + context.SaveChanges(); + string persRemove = "Tom Smith"; + string persNew = "Louis Laborie"; + Assert.Equal(1, context.ArticleSet.Count(a => a.Author.Equals(persRemove))); + Assert.Equal(1, context.ArticleSet.Count(a => a.Author.Equals(persNew))); + connection.Close(); + } + } + + [Fact] + public void Remove_Test() + { + var connection = new SqliteConnection("DataSource=:memory:"); + connection.Open(); + + var options = new DbContextOptionsBuilder() + .UseSqlite(connection) + .Options; + using (var context = new LibraryContext(options)) + { + context.Database.EnsureCreated(); + ArticleEntity a1 = new ArticleEntity { Id = 1, Title = "Breaking News Elisabeth 2 Died", Description = "The queen of England died today at the age of 95", DatePublished = "2022-02-06", LectureTime = 2, Author = "Tom Smith" }; + ArticleEntity a2 = new ArticleEntity { Id = 2, Title = "The new iPhone 15", Description = "The new iPhone 15 is out and it's the best phone ever", DatePublished = "2022-02-06", LectureTime = 3, Author = "Tom Smith" }; + ArticleEntity a3 = new ArticleEntity { Id = 3, Title = "M&M's new recipe", Description = "M&M's new recipe is out and it's the best chocolate ever", DatePublished = "2022-02-06", LectureTime = 1, Author = "M&M's Red" }; + + context.Add(a1); + context.Add(a2); + context.Add(a3); + + context.SaveChanges(); + + var article = context.ArticleSet.First(a => a.Title.Equals("Breaking News Elisabeth 2 Died")); + context.Remove(article); + context.SaveChanges(); + Assert.Equal(2, context.ArticleSet.Count()); + Assert.Equal(0, context.ArticleSet.Count(a => a.Title.Equals("Breaking News Elisabeth 2 Died"))); + connection.Close(); + } + } + +} \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/TestsUnitaires/TestsUnitaires.csproj b/Verax_API_EF/Verax_API_EF/TestsUnitaires/TestsUnitaires.csproj index 6242cf4..d068dfd 100644 --- a/Verax_API_EF/Verax_API_EF/TestsUnitaires/TestsUnitaires.csproj +++ b/Verax_API_EF/Verax_API_EF/TestsUnitaires/TestsUnitaires.csproj @@ -1,66 +1,34 @@ - - - - - Debug - AnyCPU - {FF8AFA55-12FE-4856-A0A1-21344D366E12} - {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - Library - Properties - TestsUnitaires - TestsUnitaires - v4.8 - 512 - - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - - - - ..\packages\xunit.abstractions.2.0.0\lib\net35\xunit.abstractions.dll - - - ..\packages\xunit.assert.2.1.0\lib\dotnet\xunit.assert.dll - - - ..\packages\xunit.extensibility.core.2.1.0\lib\dotnet\xunit.core.dll - - - ..\packages\xunit.extensibility.execution.2.1.0\lib\net45\xunit.execution.desktop.dll - - - - - - - - + + + + net8.0 + enable + enable + + false + true + + + + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + + + diff --git a/Verax_API_EF/Verax_API_EF/TestsUnitaires/packages.config b/Verax_API_EF/Verax_API_EF/TestsUnitaires/packages.config deleted file mode 100644 index 69a4ec4..0000000 --- a/Verax_API_EF/Verax_API_EF/TestsUnitaires/packages.config +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/Verax_API_EF.sln b/Verax_API_EF/Verax_API_EF/Verax_API_EF.sln index 2b1c5b3..6fdbffa 100644 --- a/Verax_API_EF/Verax_API_EF/Verax_API_EF.sln +++ b/Verax_API_EF/Verax_API_EF/Verax_API_EF.sln @@ -1,24 +1,29 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test_Console_EF", "Test_Console_EF\Test_Console_EF.csproj", "{E27E2617-28A1-4675-B12B-89430582C05E}" +# Visual Studio Version 17 +VisualStudioVersion = 17.8.34525.116 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Test_Console_EF", "Test_Console_EF\Test_Console_EF.csproj", "{E27E2617-28A1-4675-B12B-89430582C05E}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Entities", "Entities\Entities.csproj", "{40BD34D7-3F07-410A-BC04-2A5B09E758C0}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Entities", "Entities\Entities.csproj", "{40BD34D7-3F07-410A-BC04-2A5B09E758C0}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DbContextLib", "DbContextLib\DbContextLib.csproj", "{F94BEE1F-302F-4654-8D85-AD41E0BACD03}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DbContextLib", "DbContextLib\DbContextLib.csproj", "{F94BEE1F-302F-4654-8D85-AD41E0BACD03}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StubbedContextLib", "StubbedContextLib\StubbedContextLib.csproj", "{F1B4BCE5-8DE7-4EFB-8BC1-D7E04EA75302}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StubbedContextLib", "StubbedContextLib\StubbedContextLib.csproj", "{F1B4BCE5-8DE7-4EFB-8BC1-D7E04EA75302}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "API_DbDataManager", "API_DbDataManager\API_DbDataManager.csproj", "{FBA0CF18-7488-4088-A7C5-5D2071D19CCB}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "API_DbDataManager", "API_DbDataManager\API_DbDataManager.csproj", "{FBA0CF18-7488-4088-A7C5-5D2071D19CCB}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "API_Services", "API_Services\API_Services.csproj", "{4FB7D286-B583-44BC-BB79-4AE3058AFEDE}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "API_Services", "API_Services\API_Services.csproj", "{4FB7D286-B583-44BC-BB79-4AE3058AFEDE}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "API_Model", "API_Model\API_Model.csproj", "{F09B566E-8D25-4D70-B9F0-99E6969D4D1F}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "API_Model", "API_Model\API_Model.csproj", "{F09B566E-8D25-4D70-B9F0-99E6969D4D1F}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "API_Mapping", "API_Mapping\API_Mapping.csproj", "{BECFAD2C-E442-4300-8121-5AE6610B92DF}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "API_Mapping", "API_Mapping\API_Mapping.csproj", "{BECFAD2C-E442-4300-8121-5AE6610B92DF}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Model", "Model\Model.csproj", "{96FDB5DE-6707-4856-94CD-EFAF0C7CEB4B}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Model", "Model\Model.csproj", "{96FDB5DE-6707-4856-94CD-EFAF0C7CEB4B}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "API", "API\API.csproj", "{6AACD337-70A0-429B-979C-1B1E004BF2E0}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "API", "API\API.csproj", "{6AACD337-70A0-429B-979C-1B1E004BF2E0}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestsUnitaires", "TestsUnitaires\TestsUnitaires.csproj", "{C1982C7C-AE09-4E96-B1A9-B6ADE4097452}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -66,5 +71,12 @@ Global {6AACD337-70A0-429B-979C-1B1E004BF2E0}.Debug|Any CPU.Build.0 = Debug|Any CPU {6AACD337-70A0-429B-979C-1B1E004BF2E0}.Release|Any CPU.ActiveCfg = Release|Any CPU {6AACD337-70A0-429B-979C-1B1E004BF2E0}.Release|Any CPU.Build.0 = Release|Any CPU + {C1982C7C-AE09-4E96-B1A9-B6ADE4097452}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C1982C7C-AE09-4E96-B1A9-B6ADE4097452}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C1982C7C-AE09-4E96-B1A9-B6ADE4097452}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C1982C7C-AE09-4E96-B1A9-B6ADE4097452}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE EndGlobalSection EndGlobal From 80b429936f68d27121a12ff8ed6ef20e43e07b8e Mon Sep 17 00:00:00 2001 From: tonyfages Date: Tue, 12 Mar 2024 15:34:52 +0100 Subject: [PATCH 10/19] fix Tests --- .../API/Controllers/ArticleUserController.cs | 3 +- .../API/Entity_FrameWork.Article.db | Bin 4096 -> 45056 bytes .../API/Entity_FrameWork.Article.db-shm | Bin 32768 -> 0 bytes .../API/Entity_FrameWork.Article.db-wal | Bin 94792 -> 0 bytes Verax_API_EF/Verax_API_EF/API/Program.cs | 4 +- Verax_API_EF/Verax_API_EF/API/log.txt | 0 .../API_DbDataManager/DbManagerArticleUser.cs | 13 ++- .../API_Services/IArticleUserService.cs | 3 +- .../Verax_API_EF/DbContextLib/Class1.cs | 89 ++++++++++++++++++ .../DbContextLib/LibraryContext.cs | 6 ++ .../Entity_FrameWork.Article.db | Bin 45056 -> 0 bytes .../TestsUnitaires/TestsArticleEntity.cs | 18 ++-- .../.idea.Verax_API_EF.dir/.idea/.gitignore | 15 +++ .../.idea/indexLayout.xml | 8 ++ .../.idea.Verax_API_EF.dir/.idea/vcs.xml | 6 ++ 15 files changed, 149 insertions(+), 16 deletions(-) delete mode 100644 Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-shm delete mode 100644 Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-wal create mode 100644 Verax_API_EF/Verax_API_EF/API/log.txt create mode 100644 Verax_API_EF/Verax_API_EF/DbContextLib/Class1.cs delete mode 100644 Verax_API_EF/Verax_API_EF/Test_Console_EF/Entity_FrameWork.Article.db create mode 100644 Verax_API_EF/Verax_API_EF/Verax_API_EF/.idea/.idea.Verax_API_EF.dir/.idea/.gitignore create mode 100644 Verax_API_EF/Verax_API_EF/Verax_API_EF/.idea/.idea.Verax_API_EF.dir/.idea/indexLayout.xml create mode 100644 Verax_API_EF/Verax_API_EF/Verax_API_EF/.idea/.idea.Verax_API_EF.dir/.idea/vcs.xml diff --git a/Verax_API_EF/Verax_API_EF/API/Controllers/ArticleUserController.cs b/Verax_API_EF/Verax_API_EF/API/Controllers/ArticleUserController.cs index d8baa78..e02ba64 100644 --- a/Verax_API_EF/Verax_API_EF/API/Controllers/ArticleUserController.cs +++ b/Verax_API_EF/Verax_API_EF/API/Controllers/ArticleUserController.cs @@ -1,3 +1,4 @@ +using API_Mapping; using API_Services; using Entities; using Microsoft.AspNetCore.Mvc; @@ -24,7 +25,7 @@ public class ArticleUserController : ControllerBase _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(GetAllArticleUsers), ""); try { - var result = await _us.GetAllArticleUsers(); + var result = (await _us.GetAllArticleUsers()).Select(u => u.ToDTO()); if (result == null) { return NoContent(); diff --git a/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db b/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db index 9a472209435d88229f65ab7a0ca30d67df87a462..3cd9f2fccd0232de535751d05a4a7a8a6200ad97 100644 GIT binary patch literal 45056 zcmeI)&u`mQ00(gYNSYs|Gtv~SsZ4v##AvksO0uoM4lHZk5v@r>lA`v2A~$($tR{A6 zJCq(k>Nde&z>zD61AhfK4j>M2;xGv&1PEz}@k4?G&yJJE`7wInux?)~sr~$Z`F-BA z6F0U?udix0CEJGCRBe*xp5+9AyG97daRPgfvv+3-v4ubM^f_CJ2?7v+00bcLBncSNkbHHLKa6R5jlP}TsI0J$ z*b=oX>lQT?-PY`bY|UFYzEo5)Wrbw(%gP3ck4PLRYk3m)vc$=Bytkxy;&40?lCuf^ zFxjawW7=A^L7im%75k&21NHmkecRmL41a>bt+{h19Fiv|`S&8Wy49fGR(rFES6?}E zeO2jgQk1YMo~^|hMOnF_6iI%qO!Diit7K^{Un&m>0FI+O*KxYG_r})(m}kqE$`b9UfD#Xsc!n zkMniSKx5kV_qJ%I+alMxzq{gOWv!@WZ{*!(_V+v~Dl1A+$uB7-;tmRy-RTkLm~h6- zva+hM(Y2H*EoGLKXyVShV<9<_;NM?#`^Mju{!qx@Q~pR+N89)~t&MwmJ41i4iw9L$ zKlj(z+uhRxWzMwQ->oAtSSFM9m)QwA<^$X4XYY?r_~gCVN8%r6dxq_=|L*{}8XA+= z5U2W1CmNRjCMhwYQQ~cfYy?ZPhX-8u&;47)KXS4_7@eiv<8Ep&WGg1 zMgDfy<*HPam7KO?x<`5IHO;aO^I+&o!H+mJO?NPNi*!b{uLb=dRwK&k8Q@-f3Z_wO zRqZ#ZX$^iLMH5+JOn!55)P6g(mP&HyYLR`_3Oir7CfJ*ozT?;n69gat0SG_<0uX=z z1Rwwb2tWV=Cs$yS7t?ZTA$4gXolGXvsno)iO4Hm)zBIQmmx{7>@zReRdtrhA1Rwwb z2tWV=5P$##AOHafK;WbcJSV0jL;eZi{QfVV`ht@_kWy@h2?7v+00bZa0SG_<0uX=z z1R!t%1h&KwH~Y?1aJi&{3R){Uys zV0VTQ`W7|W8FOlOfxWJ@ODNKsDulTC{VDz&yR*!#K`Yb^os#6`ffb``*>kh_YY@vu zla!j8UDx;!mu<2tuA5Zd)$|>br~4LB8k(hUQM*o3WLcv%r#^O93Dt?QO%#2n;k2g4 zB8Y9&)C0n9=y#f>?ocPe%a@NDBXp~B&;O-wIO&1(9h+f-00bZa0SG_<0uX=z1Rwwb z2teS(2#ky3B=0?JM;sSezzRZUav%-L#p@!C$4Jw$S@YBb$^b7Gi_#pKg3OtC8pa!y9~`T{3#A$Pu$ zG-uR4`-DBV&@iV3FMW*ta$j;c#JNy_1#F{vt&`q4$)DxJoE(#53At?O2P;m}6?O%H z<%DeZ?%R;|`Tspm`dfM^{UZG!-FvFK7>$Jh1Rwwb2tWV=5P$##AOHafJP`uHpvd#0 z7zl_FUJQy(KnMzKCa^zZB;q{(FDQNMod5qO{VaXY7BN8p0uX=z1Rwwb2tWV=5P$## zAaH^NLIK`6_YaN*cy{t1aD##0_Wl36ob;vip|pE~8i!4V00bZa0SG_< z0uX=z1Rwwb2t1ww3+&;96Uo^#?v42*O_r%uHMKokGxU1h-g{+!e%mmcY3CjR=hl6a z78lr~29I*EhyD%Ck?Q713G?j9fliKyTS9U~j$}7Svi)_a@x;Sc zK>z{}fB*y_009U<00Izz00bcL9|G<@0N$Md&NBP$pWO}+5WVaFMd^Wa{{IJ?VS)ez hAOHafKmY;|fB*y_009U<;0X|DKMtV%PXOoq|6kjVw2c4& delta 33 ncmZp8z|^2HL7J73fq{W>Vxv7bBZFSrD_$UvL143>z%+gUg|7!D diff --git a/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-shm b/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-shm deleted file mode 100644 index 67763877c3f8b4cc80189ea59cd995e0bc955bbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 zcmeI)J4!=Q5C-7UsELV>_y}YZ?!cvJV`Z6M8*3{|_v0o6D|-4zY3;=Me)u_u z!{y$4z6H$u`6Mb^*|mu2EZ1>%I9n_p&MxBo<>vPC>i+Tc`swZUeR4Pd<@5Qfuhe@# zR`PxPv*fp9Jv+#5WH+<*Ps8jeyPd87s(r2X+;U&*a=&_>$3lPr0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAn>OJYU+d#=qXV1R)j!LfkEuXQO~Qpb$fxDu_Xk03erNKABR!1*o6QA0t5&UAV7cs0RjXF5FkK+ Z009C72oNAZfB*pk1PBlyK;VA}d;;u!D3$;K diff --git a/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-wal b/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-wal deleted file mode 100644 index 99a315d53ffcba3377dd9209595afde6969a70e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 94792 zcmeI*eQXHfRbNb!wQ<*?bsDRiI9*ucq_Hbn)KM<>llWHq z&b2SeLe*8-3kdCxsTD;`LI?@y=%j*>wu)&mX`(Py&E#31P=d?4OUHV=r~=)m2(y zuU2{$>$ToW!abvx8yY7CZ~Y#j@ehrM8U`C5S|K!i%3G*E$2MVs00bZa0SG|g|4iV3 z*W>RFh|{YzJw+eu+qJis{VyX<&AmGdG#}MX&72x4(D9UEZ})W%M5KJ5cah*c zCj`l0j0Ek|f@EE=I>lgU+F$SS?+A(0ky7rFys0HKlpk8F5YFA+S!HqVpH+uqk(>wB zF4>blkH;Sfh)?e`)sYOfYhl0C+xaFU+xnxGRrC?I1p87!#*>I{j}DXAV1mSU_V<(S z!B{*o9AVo@aOmNZa*zxS_YFjbcaw*syGdkcVz4j95+8`h5*@|F5^0*HL6V5>VhP!a z*}HmFlMaoKWVEDeYKC6>pngr?S9{N_=BSlPWwCq9#kOE;wNH@r4h~2Aw#Tgc)M|1v z9PNz`M`PX5II*q>mJDx#;zbq=@r$M>+8kD3}^c} z*Xo>2OuSD;!RMiQH$+RNyJ*VI?KuiUN)!EoqsSS3f9L)VSk4GdbC#^Hw|mO z1X3zemy^yjJt157_LJS#4X9eC_F2P5rutLE7wUA?`6Ge3)a+94?Xusv*-yH9{?l$qs`IzEi^ZGI z#xBtP<5W-5s#V#cSG9AUu4ZWmJ2Uh|hv@OQwTVxys=T4uH8^uMN{*CD_f7FKUHHfB zOnM9Wq}9w>W_GLf&_Xh=<>vmBEq@dj(v*Gr*ZQ>Xr%7`>PZJvdIIsTkVCNGVH`7MG z>U>{_wE_PtZKD;3u?%cq>HWyPErYTkO2niToG`K^ zp4H5>CVGUvEX!hBo~rvaeT>BDWPwC8T0tG5W}1Xak495GKh}jpbz+Q?s6LkAwMnrZ z#57Xs6k&hp=hafjC_mu7O*55|%2}~Sm3hOK#u2;~{^hC5Ctf?r`voNBqM%%5->^Uc z0uX=z1Rwwb2tWV=5P$##Ah28oR!DL{w1=a~jiTHp&J19)%3M4Pjj=sX>~LEgM6GHZ2kS8t(Zo3Yw1WH zOtDG!G&SFScb7k&R{3$=Y9XoS^J?jpZMNQ4rQazP({Ez~7Y6uw)-VRXvSwgaDg6N> z^{eA~)im-%^t3bwni~8uLyc=0t3X;Nqvlg=gH>SGpggFfJYL}UE1!-%^xM%t@d*Un z%A106UAdzCO*zlrVu1hzAOHafKmY;|fB*y_009Ux7by{s>A0EEcXkn+P35HT`x_(SR5~KhW86xR{o;At(;l%6-NOf z009U<00Izz00bZa0SG_<0(Z86$6e|GaM?WotSi9o9FTmH+#(h`1EhLU_Is_)0|w^d zXr(xUSAX2|v#qcH(ce%tCQL_65ye{udzku~%h*H16$$uO^_S&Pr zIKjsY$jX$!dIXNK7c3Bf00bZa0SG_<0uX=z1Rwwb2rQ;RyIdzUbagiI2?5DQQt`OL zblS{qS-*ai?bygCE?~dww@VcVvxgDPJlnA1;Be_+vEtyaIS%f!4`x;J@@kd(1={vM z`$6tIjc=Fd7x+;5K>4fk9_ANV%*IDr5P$##AOHafKmY;|fB*y_0D;>jP+tlWC`~UQ z+tUkJ^9>Y-5zIssuu||Y0AHzJVCO44^j$A(xu0*8l}m#1k#dc_V1WPxAOHafKmY;| zfB*y_009UFE%SIxwDmmf^ZhYN5)ZTaGiw(+ILE>=)EQ$be1k1VM zQFaJG00Izz00bZa0SG_<0uWe|0=F-YfK|7%9HFp)I0DCbfvbJ{zx()$J1+W^k66C| z8!x~{3t+s!lDvXYC^8q+Aq~tLz&V2tWV=5P$##AOHafKmY;|fB*!RtH26L4v2hu!#FivjiTHp zM)IbX%uu$@`ve?u1Shw@aQtvx`v{LCu%1W2;|S0*uw2_7<%R$RAOHafKmY;|fB*y_ z0D+|{a9iUDR#wIl1YC7OOG`^r!OUy=SmpQPcmYQo!RmcynzXjPU*>THvT~sqM{r@O zBBERnfB*y_009U<00Izz00bZa0SL@1V8;)*=8hxa;|0pkBY3~--G6%B-+s42IaVAm z@EeR5nAaCOApijgKmY;|fB*y_009U<00JLJ;FiVpyeW%eKSd`d3aN<#ixptsS00Izz00bZa0SG_<0uX?};tAYR96`W6&-?+oEsGdO zkjpiDgpoa`cpQOCIVUJQj^G?32^O#6krD(T009U<00Izz00bZa0SG|ge;{DT54dk0 zN5EqVgh#GSKa)Q2+_}?d_nd!uXz+K|c!9T6Qs2TR)?>5k&Hg?jdxXw|ZQj;_H3Mr4M5mJ^Pm@}XR<9GSK#Xyd zsCtTMCOgzjQ!+veCP}7^q>)igO6Ua5hc|@7og3KK=3)xNG^I)&Vf|#A*qUIc@Eo+E zw4qbdwQ1IdxpT=`r#N$v6GoQAvznRKM32yyWm#;?Q*|G!DT&d^0*Pj{f;vLYG+~b< z&}fS1w||^cofxAes*h!OZBlFpF^!ZuMO4$OmO4iH0rzd1sf<+4iZv;pU!eS)!oMH= sSI3cW{_uIsFYrlU?8qMi5P$##AOHafKmY;|fB*y_uqXoa%`f2kFO;wAg#Z8m diff --git a/Verax_API_EF/Verax_API_EF/API/Program.cs b/Verax_API_EF/Verax_API_EF/API/Program.cs index b1ae889..f57c6e0 100644 --- a/Verax_API_EF/Verax_API_EF/API/Program.cs +++ b/Verax_API_EF/Verax_API_EF/API/Program.cs @@ -39,8 +39,8 @@ app.MapControllers(); using var scoped = app.Services.CreateScope(); var libraryContext = scoped.ServiceProvider.GetService(); -libraryContext.Database.EnsureCreated(); -//libraryContext.Database.Migrate(); +//libraryContext.Database.EnsureCreated(); +libraryContext.Database.Migrate(); app.Run(); diff --git a/Verax_API_EF/Verax_API_EF/API/log.txt b/Verax_API_EF/Verax_API_EF/API/log.txt new file mode 100644 index 0000000..e69de29 diff --git a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerArticleUser.cs b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerArticleUser.cs index cad3888..d923855 100644 --- a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerArticleUser.cs +++ b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerArticleUser.cs @@ -1,6 +1,7 @@ using API_Services; using DbContextLib; using Entities; +using Microsoft.Extensions.Logging; using Model; namespace DbDataManager; @@ -14,11 +15,17 @@ public class DbManagerArticleUser : IArticleUserService _context = context; } - public async Task> GetAllArticleUsers() + public async Task> GetAllArticleUsers() { var entities = _context.ArticleUserSet.ToList(); - if (entities == null) return await Task.FromResult>(null); - return await Task.FromResult(entities.AsEnumerable()); + List users = new List(); + foreach( var articleUser in entities) + { + var user = _context.UserSet.FirstOrDefault(u => u.Pseudo.Equals(articleUser.UserEntityPseudo)); + if (user != null) users.Add(user); + } + if (users == null) return await Task.FromResult>(null); + return await Task.FromResult(users.Select(u => u.ToModel()).AsEnumerable()); } public async Task GetArticleUser(string pseudo) diff --git a/Verax_API_EF/Verax_API_EF/API_Services/IArticleUserService.cs b/Verax_API_EF/Verax_API_EF/API_Services/IArticleUserService.cs index 3a07594..1d4118f 100644 --- a/Verax_API_EF/Verax_API_EF/API_Services/IArticleUserService.cs +++ b/Verax_API_EF/Verax_API_EF/API_Services/IArticleUserService.cs @@ -1,10 +1,11 @@ using Entities; +using Model; namespace API_Services; public interface IArticleUserService { - Task> GetAllArticleUsers(); + Task> GetAllArticleUsers(); Task GetArticleUser(string pseudo); Task CreateArticleUser(ArticleUserEntity articleUser); diff --git a/Verax_API_EF/Verax_API_EF/DbContextLib/Class1.cs b/Verax_API_EF/Verax_API_EF/DbContextLib/Class1.cs new file mode 100644 index 0000000..6ef8d5f --- /dev/null +++ b/Verax_API_EF/Verax_API_EF/DbContextLib/Class1.cs @@ -0,0 +1,89 @@ +using DbContextLib; +using Entities; +using Microsoft.EntityFrameworkCore; + +namespace StubbedContextLib; + +public class StubbedContext : LibraryContext +{ + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + base.OnModelCreating(modelBuilder); + + modelBuilder.Entity().HasData( + new ArticleEntity + { + Id = 1, + Title = "Breaking News Elisabeth 2 Died", + Description = "The queen of England died today at the age of 95", + DatePublished = "2022-02-06", + LectureTime = 2, + Author = "Tom Smith" + + }, + new ArticleEntity + { + Id = 2, + Title = "The new iPhone 15", + Description = "The new iPhone 15 is out and it's the best phone ever", + DatePublished = "2022-02-06", + LectureTime = 3, + Author = "Tom Smith" + + }, + new ArticleEntity + { + Id = 3, + Title = "M&M's new recipe", + Description = "M&M's new recipe is out and it's the best chocolate ever", + DatePublished = "2022-02-06", + LectureTime = 1, + Author = "M&M's Red" + } + ); + + modelBuilder.Entity().HasData( + new UserEntity + { + Nom = "Fages", Prenom = "Tony", Pseudo = "TonyF", Mail = "tony@gmail.com", Mdp = "1234", Role = "Admin" + }, + new UserEntity + { + Nom = "Smith", Prenom = "Tom", Pseudo = "TomS", Mail = "tom@mail.com", Mdp = "1234", + Role = "User" + }, + new UserEntity + { + Nom = "M&M's", Prenom = "Red", Pseudo = "RedM", Mail = "M&M#mail.com", Mdp = "1234", Role = "Modérator" + } + ); + + modelBuilder.Entity().HasData( + new ArticleUserEntity + { + ArticleEntityId = 1, + UserEntityPseudo = "Sha" + }, + new ArticleUserEntity + { + ArticleEntityId = 2, + UserEntityPseudo = "Sha" + }, + new ArticleUserEntity + { + ArticleEntityId = 3, + UserEntityPseudo = "Sha" + }, + new ArticleUserEntity + { + ArticleEntityId = 3, + UserEntityPseudo = "Sha" + }, + new ArticleUserEntity + { + ArticleEntityId = 2, + UserEntityPseudo = "Sha" + } + ); + } +} \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/DbContextLib/LibraryContext.cs b/Verax_API_EF/Verax_API_EF/DbContextLib/LibraryContext.cs index 08e8dba..8923007 100644 --- a/Verax_API_EF/Verax_API_EF/DbContextLib/LibraryContext.cs +++ b/Verax_API_EF/Verax_API_EF/DbContextLib/LibraryContext.cs @@ -1,10 +1,13 @@ using Entities; using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Logging; namespace DbContextLib; public class LibraryContext : DbContext { + + private static readonly StreamWriter LogFile = new StreamWriter("log.txt"); public LibraryContext() : base() { } @@ -23,6 +26,7 @@ public class LibraryContext : DbContext protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { + optionsBuilder.LogTo( l => LogFile.WriteLine(l), LogLevel.Error).EnableDetailedErrors().EnableDetailedErrors(); if (!optionsBuilder.IsConfigured) { optionsBuilder.UseSqlite($"Data Source=Entity_FrameWork.Article.db"); @@ -48,6 +52,7 @@ public class LibraryContext : DbContext .WithMany(u => u.Forms) .HasForeignKey(f => f.UserEntityPseudo); + /* modelBuilder.Entity().HasData( new ArticleEntity { @@ -155,5 +160,6 @@ public class LibraryContext : DbContext UserEntityPseudo = "Sha" } ); + */ } } \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/Test_Console_EF/Entity_FrameWork.Article.db b/Verax_API_EF/Verax_API_EF/Test_Console_EF/Entity_FrameWork.Article.db deleted file mode 100644 index 730f5f313fadef5a28a425a80dd2ed5741567cb9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45056 zcmeI)%Wvbx9S3kyltf96Jp~pjv2cPNDQL1n{Lmv=x6L7|*mNqyk{wA~>>dh(mS!z> zB~c-%xIVPNZi4nN=&{!pJ@l{Wt%nvpw5J>bBtg(-1Egpk1)4*Dq$pX`BQSy-;^s?8 z;$t|k&kQM#MY8eQf$0i<-?Dp#%S+OCq)0@%&AB8=5qhuCdpxPM5FM}3T%KB9wiuDN z?*DU@{YOfv_oTJIu|KT-cD4CLG5N{Lr-{4jpJ*c{2tWV=5P-n{lYo^{wHMdrhiS9l z7C)=pJ>I9U*oJVA?>NHN`>yGpSK7h0mEF2tZtA>J+tcsz?2?_c{IJHeL6j`NnVn84 zn|rvDRJBS@epndiShiiW)fL`uvl)kjQgiu-!$V~r6(hXEd}-dio=~;*b@`V`*Es2l zpwz)E8RXY2zkHxiS1HA5%2wK0qG;-`=yhH@Z1UQjg9E;MSZg%vW!lcON3V`Gv;3%D zsg~>a_^bLoUcS>jtkfv+s$Oeuj1p^hL{DUSQ@=|I1&IYgdxk5Hh9_OKWw@r*U%b!hPx=E$DJnQrPuNA{N;f7SM2@qt;hdW!>&Y|&p9RyEA-;#hU7J9~0T<&L6p?YZaV zd%jP=>xkEfqTdoTtFe&ROyJGF(GwdKGxumiQMF7)e(UM!BbIvFMW2g?QW_r_qt1Bw z)9OWfmpHSU?p)s07ejNn)l!tD| zvS;F_au4swso({U~PeBs7O7;)h~lg>Oz((Bcs8q9uK zElFppg9r6FvaR;8<^EXM&iofrDp!fbwV&)PJ8l=|a$H!rS)o6*65gL%tMr!HyAr)H zK>z{}fB*y_009U<00Izz00ba#bp_UCrKA<}#pm;-LZMJ97W21`d-iGJ`&;>~Vv6b| zvwukR!UO>bKmY;|fB*y_009U<00Izzz*QIcu2M=a_$Pq(`+s!pL}I^Y#kD`v0wxGR z00Izz00bZa0SG_<0uX?}R}%PXRFz&j&m=Pk*3fh~z515R9kca-8~yX1Ws9W&8@wY% z5zc7I=(?SAiqqyDV=y=`+}g|+H@zWk)9Rn|edAO(CyFX<{ydYsQGKTREM+9lxGh@d zK+LXtsaiwVPt9~`SC?`+5su4S9jj$^>CP}N-Vin=U-Yuc-x{S*7i}Y=O50}{`3But z=I3A@b*#SNg%{>FEYD@&M+xVkG_4+Q^h~#7%Boc9Q5G-T!gyfzPkBw8Ib83Wj&UN~ z4lnXOQ?$MO=&lmc=hl6$_fNZ?O`8I^Yqbrca{X!%jJLxNUbv`CWRjIP{#V%FCH66U zmu8qC009U<00Izz00bZa0SG_<0uZ<|0xOELE(Z_WiLXRxC3vcax+W_b`Qj-LQE&Vo zV^2!#uk3g1jJ?F3TzhR^00Izz00bZa0SG_<0uX=z1QrYAwe(*}Q+ThWAc zE&bF}1+CFByzpJaX&JU{jOVo3Uz|yLOG!xSw07-#8M>mN>P7UgFYs2LsXjd}Mb&Em z@%QxDLd(7x3HDFZFZT_<#|?StO>YQP~^*kH-K0^Zyt<|L-sCH|zl|V1fVyAOHafKmY;|fB*y_009Vm zy9IW)Gdr2&o}jDk`@Ah2-hI{>o`{R*5O!R5;QVlV`|RwD?jd-?Y$QJlmm zMz-n6fnJQHpF&|tjKU;FA;rF+>;E51>~r>*{foWN-v4$tGHMS22tWV=5P$##AOHaf zKmY;|xXJ=gC^5;q2Ot*nul@HHqg0=0%KM-T1=tsK2f%0S + + + + + + + \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/Verax_API_EF/.idea/.idea.Verax_API_EF.dir/.idea/vcs.xml b/Verax_API_EF/Verax_API_EF/Verax_API_EF/.idea/.idea.Verax_API_EF.dir/.idea/vcs.xml new file mode 100644 index 0000000..b2bdec2 --- /dev/null +++ b/Verax_API_EF/Verax_API_EF/Verax_API_EF/.idea/.idea.Verax_API_EF.dir/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file From 739f157fbc2b97f02ee9f5bf795c0adf347405e6 Mon Sep 17 00:00:00 2001 From: tonyfages Date: Tue, 12 Mar 2024 17:22:44 +0100 Subject: [PATCH 11/19] =?UTF-8?q?fix=20bd=20+=20pb=20Tests=20Unit=20?= =?UTF-8?q?=F0=9F=90=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../.idea/.idea.Verax_API_EF/.idea/vcs.xml | 1 + .../API/Entity_FrameWork.Article.db | Bin 45056 -> 49152 bytes .../API/Entity_FrameWork.Article.db-shm | Bin 0 -> 32768 bytes .../API/Entity_FrameWork.Article.db-wal | 0 Verax_API_EF/Verax_API_EF/API/Program.cs | 2 +- .../Verax_API_EF/DbContextLib/Class1.cs | 89 ------------------ .../DbContextLib/LibraryContext.cs | 1 - ...ner.cs => 20240312155559_mrg1.Designer.cs} | 68 +++++-------- ...1132206_mrg1.cs => 20240312155559_mrg1.cs} | 63 ++++++------- .../Migrations/LibraryContextModelSnapshot.cs | 66 +++++-------- 10 files changed, 83 insertions(+), 207 deletions(-) create mode 100644 Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-shm create mode 100644 Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-wal delete mode 100644 Verax_API_EF/Verax_API_EF/DbContextLib/Class1.cs rename Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/{20240311132206_mrg1.Designer.cs => 20240312155559_mrg1.Designer.cs} (86%) rename Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/{20240311132206_mrg1.cs => 20240312155559_mrg1.cs} (75%) diff --git a/Verax_API_EF/Verax_API_EF/.idea/.idea.Verax_API_EF/.idea/vcs.xml b/Verax_API_EF/Verax_API_EF/.idea/.idea.Verax_API_EF/.idea/vcs.xml index 6c0b863..64713b8 100644 --- a/Verax_API_EF/Verax_API_EF/.idea/.idea.Verax_API_EF/.idea/vcs.xml +++ b/Verax_API_EF/Verax_API_EF/.idea/.idea.Verax_API_EF/.idea/vcs.xml @@ -1,6 +1,7 @@ + \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db b/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db index 3cd9f2fccd0232de535751d05a4a7a8a6200ad97..175a9e3bfb33888228bcc9beffeb72eedaac90e5 100644 GIT binary patch delta 1064 zcmb_Z&rcIU6yDisJGAyWIu<0Ov9@@6Gq)eKWJk&&=T4 zwMf3BUO4O|ZCu4FJajF%5^|%fPF#0>7kbDO()PHxMiW7Bof8vLpO%`%sP(DG0|yT+b~UC&wV2iw(c-GnW>y01Ww}p3I%}jkAVdiU(XBqZC;E{< zRjHZj9HG~wQOoeU^y2?XDoo>-^R!bePTGypXCt&-4$Ia|39UCl?+adfS3X2v$#cz3 z4u{g=L!9wVX?LT1vWlyKdvCgD&kTWzJ?+CA96{Am^|1s=9I z*nzE5mHG}`P9FP^88@ao-8HhGgAI5DQ_v0mQdK1YZnP7+nry(wY=kZ*>v1b4G?F}p zn|MN}lZ{wKgsREfYKh}GJFIZ93*X=~e1H{(e+Fkote`}0q!6_W*uzf4aT~#I6dz1s zy%0+eT;fIS6}xh&cqZ#ISYGNZUtkm7!poBX`cpV(w;(nX!@wpTFY(xm%5YvlSP>1m zvY%z0X`9XT8kU)#CD240awE*-?UD_75Y`RYj3cj`!?F!|5pU9oHqoThjbSKojA#K0 zjA{rf8nA20@Gm^dC%gav delta 848 zcmbVJ-%Auh9N*cQb#`X&{GO7XddjVvh?|<;8U{&J#9Bw-#c7~KEY{tFX$sdtMIc^A zy%Z$#7~xw!)kF6W^b&|c5s?)6V3ha}!AWKhMl^f3M$lU?^Zmi+^O?_QW_A|OuBrFq z$e1@z)pI(kRKJDC;YZ=&ki)i&@A?Q`rlZB0$os0UX-=d4F;u7D=X^ zY~DM2C7W}n^5gmI$xN^_#3j0~Bbl+x)SzhvOUrDx{>EB%!C*9+v{4};p3#!YMH7u$5dn#_nc-Lj;ZJ=dVqXe@?qv;5eF$!wq-6egzh=i&&9Y2{nQIo>HU ztU2Mk7)Yhv1Kp|qoNUFQc8i=mm~aQHzj zO(c39r>C#D9sdP?hMjH};TTpFD8VOKk-xMAjRwXs6ubyFR5=8Xsfki*Z>ULu*RTjz z;V3jo0teEf>5BO1#YrEL%?m@45!R|67-1uNpmHG6T7y1RU`yL8lUR9Q0dVZo{| zBNG)j>k9mYAFwI?tQTv{H(-}T1X2868jyJi4gz2(`IK!aN%%XMKf@!H*cGe~`wcXN B&&vP+ diff --git a/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-shm b/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-shm new file mode 100644 index 0000000000000000000000000000000000000000..fe9ac2845eca6fe6da8a63cd096d9cf9e24ece10 GIT binary patch literal 32768 zcmeIuAr62r3(); -//libraryContext.Database.EnsureCreated(); +//libraryContext.Database.EnsureCreated(); libraryContext.Database.Migrate(); app.Run(); diff --git a/Verax_API_EF/Verax_API_EF/DbContextLib/Class1.cs b/Verax_API_EF/Verax_API_EF/DbContextLib/Class1.cs deleted file mode 100644 index 6ef8d5f..0000000 --- a/Verax_API_EF/Verax_API_EF/DbContextLib/Class1.cs +++ /dev/null @@ -1,89 +0,0 @@ -using DbContextLib; -using Entities; -using Microsoft.EntityFrameworkCore; - -namespace StubbedContextLib; - -public class StubbedContext : LibraryContext -{ - protected override void OnModelCreating(ModelBuilder modelBuilder) - { - base.OnModelCreating(modelBuilder); - - modelBuilder.Entity().HasData( - new ArticleEntity - { - Id = 1, - Title = "Breaking News Elisabeth 2 Died", - Description = "The queen of England died today at the age of 95", - DatePublished = "2022-02-06", - LectureTime = 2, - Author = "Tom Smith" - - }, - new ArticleEntity - { - Id = 2, - Title = "The new iPhone 15", - Description = "The new iPhone 15 is out and it's the best phone ever", - DatePublished = "2022-02-06", - LectureTime = 3, - Author = "Tom Smith" - - }, - new ArticleEntity - { - Id = 3, - Title = "M&M's new recipe", - Description = "M&M's new recipe is out and it's the best chocolate ever", - DatePublished = "2022-02-06", - LectureTime = 1, - Author = "M&M's Red" - } - ); - - modelBuilder.Entity().HasData( - new UserEntity - { - Nom = "Fages", Prenom = "Tony", Pseudo = "TonyF", Mail = "tony@gmail.com", Mdp = "1234", Role = "Admin" - }, - new UserEntity - { - Nom = "Smith", Prenom = "Tom", Pseudo = "TomS", Mail = "tom@mail.com", Mdp = "1234", - Role = "User" - }, - new UserEntity - { - Nom = "M&M's", Prenom = "Red", Pseudo = "RedM", Mail = "M&M#mail.com", Mdp = "1234", Role = "Modérator" - } - ); - - modelBuilder.Entity().HasData( - new ArticleUserEntity - { - ArticleEntityId = 1, - UserEntityPseudo = "Sha" - }, - new ArticleUserEntity - { - ArticleEntityId = 2, - UserEntityPseudo = "Sha" - }, - new ArticleUserEntity - { - ArticleEntityId = 3, - UserEntityPseudo = "Sha" - }, - new ArticleUserEntity - { - ArticleEntityId = 3, - UserEntityPseudo = "Sha" - }, - new ArticleUserEntity - { - ArticleEntityId = 2, - UserEntityPseudo = "Sha" - } - ); - } -} \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/DbContextLib/LibraryContext.cs b/Verax_API_EF/Verax_API_EF/DbContextLib/LibraryContext.cs index 8923007..053406d 100644 --- a/Verax_API_EF/Verax_API_EF/DbContextLib/LibraryContext.cs +++ b/Verax_API_EF/Verax_API_EF/DbContextLib/LibraryContext.cs @@ -51,7 +51,6 @@ public class LibraryContext : DbContext .HasOne(f => f.User) .WithMany(u => u.Forms) .HasForeignKey(f => f.UserEntityPseudo); - /* modelBuilder.Entity().HasData( new ArticleEntity diff --git a/Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/20240311132206_mrg1.Designer.cs b/Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/20240312155559_mrg1.Designer.cs similarity index 86% rename from Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/20240311132206_mrg1.Designer.cs rename to Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/20240312155559_mrg1.Designer.cs index 6c21748..850cf0c 100644 --- a/Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/20240311132206_mrg1.Designer.cs +++ b/Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/20240312155559_mrg1.Designer.cs @@ -10,7 +10,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; namespace DbContextLib.Migrations { [DbContext(typeof(LibraryContext))] - [Migration("20240311132206_mrg1")] + [Migration("20240312155559_mrg1")] partial class mrg1 { /// @@ -83,12 +83,12 @@ namespace DbContextLib.Migrations b.Property("ArticleEntityId") .HasColumnType("INTEGER"); - b.Property("UserEntityId") - .HasColumnType("INTEGER"); + b.Property("UserEntityPseudo") + .HasColumnType("TEXT"); - b.HasKey("ArticleEntityId", "UserEntityId"); + b.HasKey("ArticleEntityId", "UserEntityPseudo"); - b.HasIndex("UserEntityId"); + b.HasIndex("UserEntityPseudo"); b.ToTable("ArticleUserSet"); @@ -96,27 +96,27 @@ namespace DbContextLib.Migrations new { ArticleEntityId = 1L, - UserEntityId = 1L + UserEntityPseudo = "TonyF" }, new { ArticleEntityId = 2L, - UserEntityId = 2L + UserEntityPseudo = "NoaSil" }, new { ArticleEntityId = 3L, - UserEntityId = 3L + UserEntityPseudo = "Sha" }, new { ArticleEntityId = 3L, - UserEntityId = 1L + UserEntityPseudo = "RedM" }, new { ArticleEntityId = 2L, - UserEntityId = 3L + UserEntityPseudo = "TomS" }); }); @@ -134,20 +134,17 @@ namespace DbContextLib.Migrations .IsRequired() .HasColumnType("TEXT"); - b.Property("Pseudo") + b.Property("Theme") .IsRequired() .HasColumnType("TEXT"); - b.Property("Theme") + b.Property("UserEntityPseudo") .IsRequired() .HasColumnType("TEXT"); - b.Property("UserEntityId") - .HasColumnType("INTEGER"); - b.HasKey("Id"); - b.HasIndex("UserEntityId"); + b.HasIndex("UserEntityPseudo"); b.ToTable("FormSet"); @@ -157,35 +154,31 @@ namespace DbContextLib.Migrations Id = 1L, DatePublication = "Form 1 Description", Link = "hhtp://form1.com", - Pseudo = "Form 1", Theme = "", - UserEntityId = 1L + UserEntityPseudo = "Sha" }, new { Id = 2L, DatePublication = "Form 2 Description", Link = "hhtp://form2.com", - Pseudo = "Form 2", Theme = "", - UserEntityId = 2L + UserEntityPseudo = "Sha" }, new { Id = 3L, DatePublication = "Form 3 Description", Link = "hhtp://form3.com", - Pseudo = "Form 3", Theme = "", - UserEntityId = 3L + UserEntityPseudo = "Sha" }); }); modelBuilder.Entity("Entities.UserEntity", b => { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); + b.Property("Pseudo") + .HasColumnType("TEXT"); b.Property("Mail") .IsRequired() @@ -203,67 +196,58 @@ namespace DbContextLib.Migrations .IsRequired() .HasColumnType("TEXT"); - b.Property("Pseudo") - .IsRequired() - .HasColumnType("TEXT"); - b.Property("Role") .IsRequired() .HasColumnType("TEXT"); - b.HasKey("Id"); + b.HasKey("Pseudo"); b.ToTable("UserSet"); b.HasData( new { - Id = 1L, + Pseudo = "TonyF", Mail = "tony@gmail.com", Mdp = "1234", Nom = "Fages", Prenom = "Tony", - Pseudo = "TonyF", Role = "Admin" }, new { - Id = 2L, + Pseudo = "TomS", Mail = "tom@mail.com", Mdp = "1234", Nom = "Smith", Prenom = "Tom", - Pseudo = "TomS", Role = "User" }, new { - Id = 3L, + Pseudo = "RedM", Mail = "M&M#mail.com", Mdp = "1234", Nom = "M&M's", Prenom = "Red", - Pseudo = "RedM", Role = "Modérator" }, new { - Id = 4L, + Pseudo = "Sha", Mail = "ShaCasca@gmail.com", Mdp = "1234", Nom = "Cascarra", Prenom = "Cascarra", - Pseudo = "Sha", Role = "Admin" }, new { - Id = 5L, + Pseudo = "NoaSil", Mail = "", Mdp = "1234", Nom = "Sillard", Prenom = "Noa", - Pseudo = "NoaSil", Role = "Admin" }); }); @@ -278,7 +262,7 @@ namespace DbContextLib.Migrations b.HasOne("Entities.UserEntity", null) .WithMany() - .HasForeignKey("UserEntityId") + .HasForeignKey("UserEntityPseudo") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); }); @@ -287,7 +271,7 @@ namespace DbContextLib.Migrations { b.HasOne("Entities.UserEntity", "User") .WithMany("Forms") - .HasForeignKey("UserEntityId") + .HasForeignKey("UserEntityPseudo") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); diff --git a/Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/20240311132206_mrg1.cs b/Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/20240312155559_mrg1.cs similarity index 75% rename from Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/20240311132206_mrg1.cs rename to Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/20240312155559_mrg1.cs index b9278d6..df6fd44 100644 --- a/Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/20240311132206_mrg1.cs +++ b/Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/20240312155559_mrg1.cs @@ -33,8 +33,6 @@ namespace DbContextLib.Migrations name: "UserSet", columns: table => new { - Id = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), Pseudo = table.Column(type: "TEXT", nullable: false), Mdp = table.Column(type: "TEXT", nullable: false), Nom = table.Column(type: "TEXT", nullable: false), @@ -44,19 +42,19 @@ namespace DbContextLib.Migrations }, constraints: table => { - table.PrimaryKey("PK_UserSet", x => x.Id); + table.PrimaryKey("PK_UserSet", x => x.Pseudo); }); migrationBuilder.CreateTable( name: "ArticleUserSet", columns: table => new { - UserEntityId = table.Column(type: "INTEGER", nullable: false), + UserEntityPseudo = table.Column(type: "TEXT", nullable: false), ArticleEntityId = table.Column(type: "INTEGER", nullable: false) }, constraints: table => { - table.PrimaryKey("PK_ArticleUserSet", x => new { x.ArticleEntityId, x.UserEntityId }); + table.PrimaryKey("PK_ArticleUserSet", x => new { x.ArticleEntityId, x.UserEntityPseudo }); table.ForeignKey( name: "FK_ArticleUserSet_ArticleSet_ArticleEntityId", column: x => x.ArticleEntityId, @@ -64,10 +62,10 @@ namespace DbContextLib.Migrations principalColumn: "Id", onDelete: ReferentialAction.Cascade); table.ForeignKey( - name: "FK_ArticleUserSet_UserSet_UserEntityId", - column: x => x.UserEntityId, + name: "FK_ArticleUserSet_UserSet_UserEntityPseudo", + column: x => x.UserEntityPseudo, principalTable: "UserSet", - principalColumn: "Id", + principalColumn: "Pseudo", onDelete: ReferentialAction.Cascade); }); @@ -80,17 +78,16 @@ namespace DbContextLib.Migrations Theme = table.Column(type: "TEXT", nullable: false), DatePublication = table.Column(type: "TEXT", nullable: false), Link = table.Column(type: "TEXT", nullable: false), - Pseudo = table.Column(type: "TEXT", nullable: false), - UserEntityId = table.Column(type: "INTEGER", nullable: false) + UserEntityPseudo = table.Column(type: "TEXT", nullable: false) }, constraints: table => { table.PrimaryKey("PK_FormSet", x => x.Id); table.ForeignKey( - name: "FK_FormSet_UserSet_UserEntityId", - column: x => x.UserEntityId, + name: "FK_FormSet_UserSet_UserEntityPseudo", + column: x => x.UserEntityPseudo, principalTable: "UserSet", - principalColumn: "Id", + principalColumn: "Pseudo", onDelete: ReferentialAction.Cascade); }); @@ -106,47 +103,47 @@ namespace DbContextLib.Migrations migrationBuilder.InsertData( table: "UserSet", - columns: new[] { "Id", "Mail", "Mdp", "Nom", "Prenom", "Pseudo", "Role" }, + columns: new[] { "Pseudo", "Mail", "Mdp", "Nom", "Prenom", "Role" }, values: new object[,] { - { 1L, "tony@gmail.com", "1234", "Fages", "Tony", "TonyF", "Admin" }, - { 2L, "tom@mail.com", "1234", "Smith", "Tom", "TomS", "User" }, - { 3L, "M&M#mail.com", "1234", "M&M's", "Red", "RedM", "Modérator" }, - { 4L, "ShaCasca@gmail.com", "1234", "Cascarra", "Cascarra", "Sha", "Admin" }, - { 5L, "", "1234", "Sillard", "Noa", "NoaSil", "Admin" } + { "NoaSil", "", "1234", "Sillard", "Noa", "Admin" }, + { "RedM", "M&M#mail.com", "1234", "M&M's", "Red", "Modérator" }, + { "Sha", "ShaCasca@gmail.com", "1234", "Cascarra", "Cascarra", "Admin" }, + { "TomS", "tom@mail.com", "1234", "Smith", "Tom", "User" }, + { "TonyF", "tony@gmail.com", "1234", "Fages", "Tony", "Admin" } }); migrationBuilder.InsertData( table: "ArticleUserSet", - columns: new[] { "ArticleEntityId", "UserEntityId" }, + columns: new[] { "ArticleEntityId", "UserEntityPseudo" }, values: new object[,] { - { 1L, 1L }, - { 2L, 2L }, - { 2L, 3L }, - { 3L, 1L }, - { 3L, 3L } + { 1L, "TonyF" }, + { 2L, "NoaSil" }, + { 2L, "TomS" }, + { 3L, "RedM" }, + { 3L, "Sha" } }); migrationBuilder.InsertData( table: "FormSet", - columns: new[] { "Id", "DatePublication", "Link", "Pseudo", "Theme", "UserEntityId" }, + columns: new[] { "Id", "DatePublication", "Link", "Theme", "UserEntityPseudo" }, values: new object[,] { - { 1L, "Form 1 Description", "hhtp://form1.com", "Form 1", "", 1L }, - { 2L, "Form 2 Description", "hhtp://form2.com", "Form 2", "", 2L }, - { 3L, "Form 3 Description", "hhtp://form3.com", "Form 3", "", 3L } + { 1L, "Form 1 Description", "hhtp://form1.com", "", "Sha" }, + { 2L, "Form 2 Description", "hhtp://form2.com", "", "Sha" }, + { 3L, "Form 3 Description", "hhtp://form3.com", "", "Sha" } }); migrationBuilder.CreateIndex( - name: "IX_ArticleUserSet_UserEntityId", + name: "IX_ArticleUserSet_UserEntityPseudo", table: "ArticleUserSet", - column: "UserEntityId"); + column: "UserEntityPseudo"); migrationBuilder.CreateIndex( - name: "IX_FormSet_UserEntityId", + name: "IX_FormSet_UserEntityPseudo", table: "FormSet", - column: "UserEntityId"); + column: "UserEntityPseudo"); } /// diff --git a/Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/LibraryContextModelSnapshot.cs b/Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/LibraryContextModelSnapshot.cs index 4e992dc..8cff281 100644 --- a/Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/LibraryContextModelSnapshot.cs +++ b/Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/LibraryContextModelSnapshot.cs @@ -80,12 +80,12 @@ namespace DbContextLib.Migrations b.Property("ArticleEntityId") .HasColumnType("INTEGER"); - b.Property("UserEntityId") - .HasColumnType("INTEGER"); + b.Property("UserEntityPseudo") + .HasColumnType("TEXT"); - b.HasKey("ArticleEntityId", "UserEntityId"); + b.HasKey("ArticleEntityId", "UserEntityPseudo"); - b.HasIndex("UserEntityId"); + b.HasIndex("UserEntityPseudo"); b.ToTable("ArticleUserSet"); @@ -93,27 +93,27 @@ namespace DbContextLib.Migrations new { ArticleEntityId = 1L, - UserEntityId = 1L + UserEntityPseudo = "TonyF" }, new { ArticleEntityId = 2L, - UserEntityId = 2L + UserEntityPseudo = "NoaSil" }, new { ArticleEntityId = 3L, - UserEntityId = 3L + UserEntityPseudo = "Sha" }, new { ArticleEntityId = 3L, - UserEntityId = 1L + UserEntityPseudo = "RedM" }, new { ArticleEntityId = 2L, - UserEntityId = 3L + UserEntityPseudo = "TomS" }); }); @@ -131,20 +131,17 @@ namespace DbContextLib.Migrations .IsRequired() .HasColumnType("TEXT"); - b.Property("Pseudo") + b.Property("Theme") .IsRequired() .HasColumnType("TEXT"); - b.Property("Theme") + b.Property("UserEntityPseudo") .IsRequired() .HasColumnType("TEXT"); - b.Property("UserEntityId") - .HasColumnType("INTEGER"); - b.HasKey("Id"); - b.HasIndex("UserEntityId"); + b.HasIndex("UserEntityPseudo"); b.ToTable("FormSet"); @@ -154,35 +151,31 @@ namespace DbContextLib.Migrations Id = 1L, DatePublication = "Form 1 Description", Link = "hhtp://form1.com", - Pseudo = "Form 1", Theme = "", - UserEntityId = 1L + UserEntityPseudo = "Sha" }, new { Id = 2L, DatePublication = "Form 2 Description", Link = "hhtp://form2.com", - Pseudo = "Form 2", Theme = "", - UserEntityId = 2L + UserEntityPseudo = "Sha" }, new { Id = 3L, DatePublication = "Form 3 Description", Link = "hhtp://form3.com", - Pseudo = "Form 3", Theme = "", - UserEntityId = 3L + UserEntityPseudo = "Sha" }); }); modelBuilder.Entity("Entities.UserEntity", b => { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); + b.Property("Pseudo") + .HasColumnType("TEXT"); b.Property("Mail") .IsRequired() @@ -200,67 +193,58 @@ namespace DbContextLib.Migrations .IsRequired() .HasColumnType("TEXT"); - b.Property("Pseudo") - .IsRequired() - .HasColumnType("TEXT"); - b.Property("Role") .IsRequired() .HasColumnType("TEXT"); - b.HasKey("Id"); + b.HasKey("Pseudo"); b.ToTable("UserSet"); b.HasData( new { - Id = 1L, + Pseudo = "TonyF", Mail = "tony@gmail.com", Mdp = "1234", Nom = "Fages", Prenom = "Tony", - Pseudo = "TonyF", Role = "Admin" }, new { - Id = 2L, + Pseudo = "TomS", Mail = "tom@mail.com", Mdp = "1234", Nom = "Smith", Prenom = "Tom", - Pseudo = "TomS", Role = "User" }, new { - Id = 3L, + Pseudo = "RedM", Mail = "M&M#mail.com", Mdp = "1234", Nom = "M&M's", Prenom = "Red", - Pseudo = "RedM", Role = "Modérator" }, new { - Id = 4L, + Pseudo = "Sha", Mail = "ShaCasca@gmail.com", Mdp = "1234", Nom = "Cascarra", Prenom = "Cascarra", - Pseudo = "Sha", Role = "Admin" }, new { - Id = 5L, + Pseudo = "NoaSil", Mail = "", Mdp = "1234", Nom = "Sillard", Prenom = "Noa", - Pseudo = "NoaSil", Role = "Admin" }); }); @@ -275,7 +259,7 @@ namespace DbContextLib.Migrations b.HasOne("Entities.UserEntity", null) .WithMany() - .HasForeignKey("UserEntityId") + .HasForeignKey("UserEntityPseudo") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); }); @@ -284,7 +268,7 @@ namespace DbContextLib.Migrations { b.HasOne("Entities.UserEntity", "User") .WithMany("Forms") - .HasForeignKey("UserEntityId") + .HasForeignKey("UserEntityPseudo") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); From 43c30f52773da65a5e7e8f179f0b3c1da10f151b Mon Sep 17 00:00:00 2001 From: tonyfages Date: Tue, 12 Mar 2024 20:59:41 +0100 Subject: [PATCH 12/19] Implementation of Unit of Work + Tests UserENtity + fix problem API userArticle --- .../.idea/.idea.Verax_API_EF/.idea/vcs.xml | 3 +- .../API/Controllers/ArticleUserController.cs | 122 ------------ .../API/Controllers/UserController.cs | 101 +++++++++- .../API/Entity_FrameWork.Article.db | Bin 49152 -> 49152 bytes Verax_API_EF/Verax_API_EF/API/Program.cs | 1 - .../API_DbDataManager/DbManager.cs | 22 ++- .../API_DbDataManager/DbManagerArticle.cs | 7 +- .../API_DbDataManager/DbManagerArticleUser.cs | 74 ------- .../API_DbDataManager/DbManagerFormulaire.cs | 4 +- .../API_DbDataManager/DbManagerUser.cs | 66 ++++++- .../API_Services/IArticleUserService.cs | 7 - .../Verax_API_EF/API_Services/IDataManager.cs | 10 + .../Verax_API_EF/API_Services/IUserService.cs | 9 + .../API_Unit_Test/API_Unit_Test.csproj | 25 +++ .../API_Unit_Test/GlobalUsings.cs | 1 + .../Verax_API_EF/API_Unit_Test/UnitTest1.cs | 9 + .../DbContextLib/LibraryContext.cs | 14 +- .../Entity_FrameWork.Article.db | Bin 0 -> 49152 bytes ..._Console_Article.cs => Test_Console_EF.cs} | 0 .../TestsArticleEntity.cs | 5 +- .../Unit_Test_EF/TestsUserEntity.cs | 182 ++++++++++++++++++ .../Unit_Test_EF.csproj} | 1 + Verax_API_EF/Verax_API_EF/Verax_API_EF.sln | 8 +- 23 files changed, 447 insertions(+), 224 deletions(-) delete mode 100644 Verax_API_EF/Verax_API_EF/API/Controllers/ArticleUserController.cs delete mode 100644 Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerArticleUser.cs create mode 100644 Verax_API_EF/Verax_API_EF/API_Services/IDataManager.cs create mode 100644 Verax_API_EF/Verax_API_EF/API_Unit_Test/API_Unit_Test.csproj create mode 100644 Verax_API_EF/Verax_API_EF/API_Unit_Test/GlobalUsings.cs create mode 100644 Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest1.cs create mode 100644 Verax_API_EF/Verax_API_EF/Test_Console_EF/Entity_FrameWork.Article.db rename Verax_API_EF/Verax_API_EF/Test_Console_EF/{Test_Console_Article.cs => Test_Console_EF.cs} (100%) rename Verax_API_EF/Verax_API_EF/{TestsUnitaires => Unit_Test_EF}/TestsArticleEntity.cs (98%) create mode 100644 Verax_API_EF/Verax_API_EF/Unit_Test_EF/TestsUserEntity.cs rename Verax_API_EF/Verax_API_EF/{TestsUnitaires/TestsUnitaires.csproj => Unit_Test_EF/Unit_Test_EF.csproj} (96%) diff --git a/Verax_API_EF/Verax_API_EF/.idea/.idea.Verax_API_EF/.idea/vcs.xml b/Verax_API_EF/Verax_API_EF/.idea/.idea.Verax_API_EF/.idea/vcs.xml index 64713b8..830a534 100644 --- a/Verax_API_EF/Verax_API_EF/.idea/.idea.Verax_API_EF/.idea/vcs.xml +++ b/Verax_API_EF/Verax_API_EF/.idea/.idea.Verax_API_EF/.idea/vcs.xml @@ -1,7 +1,6 @@ - - + \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/API/Controllers/ArticleUserController.cs b/Verax_API_EF/Verax_API_EF/API/Controllers/ArticleUserController.cs deleted file mode 100644 index e02ba64..0000000 --- a/Verax_API_EF/Verax_API_EF/API/Controllers/ArticleUserController.cs +++ /dev/null @@ -1,122 +0,0 @@ -using API_Mapping; -using API_Services; -using Entities; -using Microsoft.AspNetCore.Mvc; - -namespace API.Controllers; - -[Route("api/[controller]")] -[ApiController] -public class ArticleUserController : ControllerBase -{ - - private readonly IArticleUserService _us; - private readonly ILogger _logger; - public ArticleUserController(IArticleUserService us, ILogger logger) - { - this._us = us; - this._logger = logger; - } - - - [HttpGet("/articleUsers")] - public async Task GetAllArticleUsers() - { - _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(GetAllArticleUsers), ""); - try - { - var result = (await _us.GetAllArticleUsers()).Select(u => u.ToDTO()); - if (result == null) - { - return NoContent(); - } - return Ok(result); - } - catch (Exception error) - { - _logger.LogError(error.Message); - return BadRequest(error.Message); - } - } - - [HttpGet("/user/{pseudo}/article")] - public async Task GetArticleUser(string pseudo) - { - _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(GetArticleUser), pseudo); - try - { - var result = await _us.GetArticleUser(pseudo); - if (result == null) - { - return NoContent(); - } - return Ok(result); - } - catch (Exception error) - { - _logger.LogError(error.Message); - return BadRequest(error.Message); - } - } - - [HttpPost("/user/{pseudo}/article")] - public async Task CreateArticleUser(ArticleUserEntity articleUser) - { - _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(CreateArticleUser), articleUser); - try - { - var result = await _us.CreateArticleUser(articleUser); - if (result == null) - { - return BadRequest($"ArticleUser {articleUser.UserEntityPseudo} already exists"); - } - return Ok(result); - } - catch (Exception error) - { - _logger.LogError(error.Message); - return BadRequest(error.Message); - } - } - - [HttpDelete("/user/{pseudo}/article")] - public async Task DeleteArticleUser(string pseudo) - { - _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(DeleteArticleUser), pseudo); - try - { - var result = await _us.DeleteArticleUser(pseudo); - if (!result) - { - return BadRequest($"ArticleUser {pseudo} does not exist"); - } - return Ok(result); - } - catch (Exception error) - { - _logger.LogError(error.Message); - return BadRequest(error.Message); - } - } - - [HttpPut("/user/{pseudo}/article")] - public async Task UpdateArticleUser(ArticleUserEntity articleUser) - { - _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(UpdateArticleUser), articleUser); - try - { - var result = await _us.UpdateArticleUser(articleUser); - if (!result) - { - return BadRequest($"ArticleUser {articleUser.UserEntityPseudo} does not exist"); - } - return Ok(result); - } - catch (Exception error) - { - _logger.LogError(error.Message); - return BadRequest(error.Message); - } - } - -} \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/API/Controllers/UserController.cs b/Verax_API_EF/Verax_API_EF/API/Controllers/UserController.cs index b874e9e..547c1af 100644 --- a/Verax_API_EF/Verax_API_EF/API/Controllers/UserController.cs +++ b/Verax_API_EF/Verax_API_EF/API/Controllers/UserController.cs @@ -124,7 +124,106 @@ namespace API.Controllers } } - + [HttpGet("/articleUsers")] + public async Task GetAllArticleUsers() + { + _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(GetAllArticleUsers), ""); + try + { + var result = (await _us.GetAllArticleUsers()).Select(u => u.ToDTO()); + if (result == null) + { + return NoContent(); + } + return Ok(result); + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } + } + + [HttpGet("/user/{pseudo}/article")] + public async Task GetArticleUser(string pseudo) + { + _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(GetArticleUser), pseudo); + try + { + var result = (await _us.GetArticleUser(pseudo)).Select(a => a.ToDTO()); + if (result == null) + { + return NoContent(); + } + return Ok(result); + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } + } + + [HttpPost("/user/article")] + public async Task CreateArticleUser(ArticleUserEntity articleUser) + { + _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(CreateArticleUser), articleUser); + try + { + Console.WriteLine(articleUser); + var result = await _us.CreateArticleUser(articleUser); + if (result == null) + { + return BadRequest($"ArticleUser {articleUser.UserEntityPseudo} already exists"); + } + return Ok(result); + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } + } + + [HttpDelete("/user/{pseudo}/article")] + public async Task DeleteArticleUser(string pseudo) + { + _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(DeleteArticleUser), pseudo); + try + { + var result = await _us.DeleteArticleUser(pseudo); + if (!result) + { + return BadRequest($"ArticleUser {pseudo} does not exist"); + } + return Ok(result); + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } + } + + [HttpPut("/user/{pseudo}/article")] + public async Task UpdateArticleUser(ArticleUserEntity articleUser) + { + _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(UpdateArticleUser), articleUser); + try + { + var result = await _us.UpdateArticleUser(articleUser); + if (!result) + { + return BadRequest($"ArticleUser {articleUser.UserEntityPseudo} does not exist"); + } + return Ok(result); + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } + } } diff --git a/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db b/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db index 175a9e3bfb33888228bcc9beffeb72eedaac90e5..05efb1168e998b01e91a3dabc6673147af420471 100644 GIT binary patch delta 73 zcmZo@U~Xt&-oQA4m;W*Y6MrQG|1$nc{>sgQ0@?hNE9XbCFfcIaZoWQWOMsXECs4sl c2L6xyFZo|?7F4*wKl#~yVRoPb_TY>}05)P4tN;K2 delta 73 zcmZo@U~Xt&-oQA4mw|zSnZJ^O|1$qF{>sgQ0@?hNE9XbCXfv`gY`#8UO8}zaB?JFY a{*U}GHw!A<;Gg_#zc4!+voL3HMj`(options => builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); -builder.Services.AddScoped(); var app = builder.Build(); diff --git a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManager.cs b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManager.cs index 6e4990b..d147171 100644 --- a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManager.cs +++ b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManager.cs @@ -1,12 +1,30 @@ +using API_Services; using DbContextLib; +using Model; namespace DbDataManager; -public class DbManager +public class DbManager : IDataManager { - protected LibraryContext _context; + protected LibraryContext _context { get; set; } + public DbManager() { _context = new LibraryContext(); + ArticleService = new DbManagerArticle(_context); + UserService = new DbManagerUser(_context); + FormulaireService = new DbManagerFormulaire(_context); } + + public DbManager(LibraryContext context) + { + _context = context; + ArticleService = new DbManagerArticle(_context); + UserService = new DbManagerUser(_context); + FormulaireService = new DbManagerFormulaire(_context); + } + + public IArticleService ArticleService { get; set; } + public IUserService UserService { get; set; } + public IFormulaireService FormulaireService { get; set; } } \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerArticle.cs b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerArticle.cs index 81405d9..2aa2322 100644 --- a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerArticle.cs +++ b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerArticle.cs @@ -11,9 +11,7 @@ public class DbManagerArticle : IArticleService private readonly LibraryContext _context; public DbManagerArticle(LibraryContext context) - { - _context = context; - } + => this._context = context; public async Task> GetAllArticles(int index, int count, ArticleOrderCriteria orderCriterium) { List
articles = new List
(); @@ -92,6 +90,7 @@ public class DbManagerArticle : IArticleService await _context.SaveChangesAsync(); return true; } - + + } \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerArticleUser.cs b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerArticleUser.cs deleted file mode 100644 index d923855..0000000 --- a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerArticleUser.cs +++ /dev/null @@ -1,74 +0,0 @@ -using API_Services; -using DbContextLib; -using Entities; -using Microsoft.Extensions.Logging; -using Model; - -namespace DbDataManager; - -public class DbManagerArticleUser : IArticleUserService -{ - private readonly LibraryContext _context; - - public DbManagerArticleUser(LibraryContext context) - { - _context = context; - } - - public async Task> GetAllArticleUsers() - { - var entities = _context.ArticleUserSet.ToList(); - List users = new List(); - foreach( var articleUser in entities) - { - var user = _context.UserSet.FirstOrDefault(u => u.Pseudo.Equals(articleUser.UserEntityPseudo)); - if (user != null) users.Add(user); - } - if (users == null) return await Task.FromResult>(null); - return await Task.FromResult(users.Select(u => u.ToModel()).AsEnumerable()); - } - - public async Task GetArticleUser(string pseudo) - { - var entity = _context.ArticleUserSet.FirstOrDefault(a => a.UserEntityPseudo.Equals(pseudo)); - if (entity == null) return await Task.FromResult(null); - return await Task.FromResult(entity); - } - - - public async Task CreateArticleUser(ArticleUserEntity articleUser) - { - var result = await GetArticleUser(articleUser.UserEntityPseudo); - if (result != null) return await Task.FromResult(null); - var entity = new ArticleUserEntity() - { - ArticleEntityId = articleUser.ArticleEntityId, - UserEntityPseudo = articleUser.UserEntityPseudo - }; - if (entity == null) return await Task.FromResult(null); - _context.ArticleUserSet.Add(entity); - await _context.SaveChangesAsync(); - return await Task.FromResult(entity); - } - - public async Task DeleteArticleUser(string pseudo) - { - var entity = _context.ArticleUserSet.FirstOrDefault(a => a.UserEntityPseudo.Equals(pseudo)); - if (entity == null) return await Task.FromResult(false); - _context.ArticleUserSet.Remove(entity); - await _context.SaveChangesAsync(); - return await Task.FromResult(true); - } - - public async Task UpdateArticleUser(ArticleUserEntity articleUser) - { - var entity = _context.ArticleUserSet.FirstOrDefault(a => a.UserEntityPseudo.Equals(articleUser.UserEntityPseudo)); - if (entity == null) return await Task.FromResult(false); - entity.ArticleEntityId = articleUser.ArticleEntityId; - entity.UserEntityPseudo = articleUser.UserEntityPseudo; - await _context.SaveChangesAsync(); - return await Task.FromResult(true); - } - - -} \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerFormulaire.cs b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerFormulaire.cs index d84f9ba..5cd515f 100644 --- a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerFormulaire.cs +++ b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerFormulaire.cs @@ -11,9 +11,7 @@ public class DbManagerFormulaire : IFormulaireService private readonly LibraryContext _context; public DbManagerFormulaire(LibraryContext context) - { - _context = context; - } + => this._context = context; public async Task> GetAllForm(int index, int count, FormOrderCriteria orderCriteria) { diff --git a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerUser.cs b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerUser.cs index b3928ae..a5a7b26 100644 --- a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerUser.cs +++ b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerUser.cs @@ -11,9 +11,7 @@ public class DbManagerUser: IUserService private readonly LibraryContext _context; public DbManagerUser(LibraryContext context) - { - _context = context; - } + => this._context = context; public async Task> GetAll(int index, int count, UserOrderCriteria orderCriteria) { @@ -41,6 +39,7 @@ public class DbManagerUser: IUserService public async Task GetByPseudo(string pseudo) { var entity = _context.UserSet.FirstOrDefault(u => u.Pseudo == pseudo); + if (entity == null) return await Task.FromResult(null); return await Task.FromResult(entity.ToModel()); } @@ -82,6 +81,67 @@ public class DbManagerUser: IUserService return await Task.FromResult(true); } + public async Task> GetAllArticleUsers() + { + var entities = _context.ArticleUserSet.ToList(); + List users = new List(); + foreach( var articleUser in entities) + { + var user = _context.UserSet.FirstOrDefault(u => u.Pseudo.Equals(articleUser.UserEntityPseudo)); + if (user != null) users.Add(user); + } + if (users == null) return await Task.FromResult>(null); + return await Task.FromResult(users.Select(u => u.ToModel()).AsEnumerable()); + } + + + public async Task> GetArticleUser(string pseudo) + { + var entities = _context.ArticleUserSet.Where(a => a.UserEntityPseudo.Equals(pseudo)); + List articles = new List(); + foreach (var article in entities) + { + var art = _context.ArticleSet.FirstOrDefault(a => a.Id.Equals(article.ArticleEntityId)); + if (art != null) articles.Add(art); + } + if (articles == null) return await Task.FromResult>(null); + return await Task.FromResult(articles.Select(a => a.ToModel()).AsEnumerable()); + } + + + public async Task CreateArticleUser(ArticleUserEntity articleUser) + { + var result = await GetByPseudo(articleUser.UserEntityPseudo); + if (result == null) return await Task.FromResult(false); + var entity = new ArticleUserEntity() + { + ArticleEntityId = articleUser.ArticleEntityId, + UserEntityPseudo = articleUser.UserEntityPseudo + }; + if (entity == null) return await Task.FromResult(false); + _context.ArticleUserSet.Add(entity); + await _context.SaveChangesAsync(); + return await Task.FromResult(true); + } + + public async Task DeleteArticleUser(string pseudo) + { + var entity = _context.ArticleUserSet.FirstOrDefault(a => a.UserEntityPseudo.Equals(pseudo)); + if (entity == null) return await Task.FromResult(false); + _context.ArticleUserSet.Remove(entity); + await _context.SaveChangesAsync(); + return await Task.FromResult(true); + } + + public async Task UpdateArticleUser(ArticleUserEntity articleUser) + { + var entity = _context.ArticleUserSet.FirstOrDefault(a => a.UserEntityPseudo.Equals(articleUser.UserEntityPseudo)); + if (entity == null) return await Task.FromResult(false); + entity.ArticleEntityId = articleUser.ArticleEntityId; + entity.UserEntityPseudo = articleUser.UserEntityPseudo; + await _context.SaveChangesAsync(); + return await Task.FromResult(true); + } diff --git a/Verax_API_EF/Verax_API_EF/API_Services/IArticleUserService.cs b/Verax_API_EF/Verax_API_EF/API_Services/IArticleUserService.cs index 1d4118f..68cba95 100644 --- a/Verax_API_EF/Verax_API_EF/API_Services/IArticleUserService.cs +++ b/Verax_API_EF/Verax_API_EF/API_Services/IArticleUserService.cs @@ -5,12 +5,5 @@ namespace API_Services; public interface IArticleUserService { - Task> GetAllArticleUsers(); - Task GetArticleUser(string pseudo); - - Task CreateArticleUser(ArticleUserEntity articleUser); - Task DeleteArticleUser(string pseudo); - - Task UpdateArticleUser(ArticleUserEntity articleUser); } \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/API_Services/IDataManager.cs b/Verax_API_EF/Verax_API_EF/API_Services/IDataManager.cs new file mode 100644 index 0000000..846f924 --- /dev/null +++ b/Verax_API_EF/Verax_API_EF/API_Services/IDataManager.cs @@ -0,0 +1,10 @@ +namespace Model; +using API_Services; + +public interface IDataManager +{ + IArticleService ArticleService { get; } + IUserService UserService { get; } + IFormulaireService FormulaireService { get; } + +} \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/API_Services/IUserService.cs b/Verax_API_EF/Verax_API_EF/API_Services/IUserService.cs index 771947f..b191a32 100644 --- a/Verax_API_EF/Verax_API_EF/API_Services/IUserService.cs +++ b/Verax_API_EF/Verax_API_EF/API_Services/IUserService.cs @@ -12,6 +12,15 @@ namespace API_Services Task Update(User user, string pseudo); Task Delete(string pseudo); + + Task> GetAllArticleUsers(); + Task> GetArticleUser(string pseudo); + + Task CreateArticleUser(ArticleUserEntity articleUser); + + Task DeleteArticleUser(string pseudo); + + Task UpdateArticleUser(ArticleUserEntity articleUser); diff --git a/Verax_API_EF/Verax_API_EF/API_Unit_Test/API_Unit_Test.csproj b/Verax_API_EF/Verax_API_EF/API_Unit_Test/API_Unit_Test.csproj new file mode 100644 index 0000000..120fbeb --- /dev/null +++ b/Verax_API_EF/Verax_API_EF/API_Unit_Test/API_Unit_Test.csproj @@ -0,0 +1,25 @@ + + + + net8.0 + enable + enable + + false + true + + + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + + diff --git a/Verax_API_EF/Verax_API_EF/API_Unit_Test/GlobalUsings.cs b/Verax_API_EF/Verax_API_EF/API_Unit_Test/GlobalUsings.cs new file mode 100644 index 0000000..8c927eb --- /dev/null +++ b/Verax_API_EF/Verax_API_EF/API_Unit_Test/GlobalUsings.cs @@ -0,0 +1 @@ +global using Xunit; \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest1.cs b/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest1.cs new file mode 100644 index 0000000..dd67b24 --- /dev/null +++ b/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest1.cs @@ -0,0 +1,9 @@ +namespace API_Unit_Test; + +public class UnitTest1 +{ + [Fact] + public void Test1() + { + } +} \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/DbContextLib/LibraryContext.cs b/Verax_API_EF/Verax_API_EF/DbContextLib/LibraryContext.cs index 053406d..0f9f644 100644 --- a/Verax_API_EF/Verax_API_EF/DbContextLib/LibraryContext.cs +++ b/Verax_API_EF/Verax_API_EF/DbContextLib/LibraryContext.cs @@ -26,7 +26,7 @@ public class LibraryContext : DbContext protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { - optionsBuilder.LogTo( l => LogFile.WriteLine(l), LogLevel.Error).EnableDetailedErrors().EnableDetailedErrors(); + optionsBuilder.LogTo( LogFile.WriteLine, LogLevel.Error).EnableDetailedErrors().EnableDetailedErrors(); if (!optionsBuilder.IsConfigured) { optionsBuilder.UseSqlite($"Data Source=Entity_FrameWork.Article.db"); @@ -161,4 +161,16 @@ public class LibraryContext : DbContext ); */ } + + public override void Dispose() + { + base.Dispose(); + LogFile.Dispose(); + } + + public override async ValueTask DisposeAsync() + { + await base.DisposeAsync(); + await LogFile.DisposeAsync(); + } } \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/Test_Console_EF/Entity_FrameWork.Article.db b/Verax_API_EF/Verax_API_EF/Test_Console_EF/Entity_FrameWork.Article.db new file mode 100644 index 0000000000000000000000000000000000000000..175a9e3bfb33888228bcc9beffeb72eedaac90e5 GIT binary patch literal 49152 zcmeI)&u`mQ00(gYNaH45XQV1vRW0Rj+!00ba#bOhd;kd({}zkgb9)#%;q z^~xIi2`y2(vT0FMZP~iLSFmWiW_ZhwWr}LLtdeYgRlQE)|Fc1yY~)GY+bmAb#s_1J zC-#-7q+Cnz`{{1#Y17uL4eA69%7lOQ#86)R>xatF$&x=%aL(>WBa$*R!+&to*0vhd zD}^_Tdg+$am)F()B1Q=t;@Mi9@s!moYLVnO$|S$JzD_b5`BJ%Cg6BFWW9`Q2oTo+D1{$Udg-V3952ZRM*s^n$M^u;F{S6LIwq)VCfsv1o^kR?e;B=`?+xRv3rKmXjgziRv|SvnomLlr&lZQR)jf-1FB z5B)@}W(Sk(ui&#oan5%T`ggQ=VmMw#?~k`T>r}!}KK*qtxH{ph0&lHX3#^m@HE@{x zjM`(LPm6eKJgjUac+Nd+ShpJNzkfw*+lD*e1?grf>8FeA-yU=K?fV(GIeEdnQP|&r zyrsRC<26(Nt}?iD_crRQdvBl3)pmpT#=OxCUQsY$GaO zO$u-ie_|YnmW&=kCn%C)pEb zZVGy#ZnP*#t_&?0oyxAei9ZFgY&1!!soQm(m$+<`C2`rL+D*N+L-O>FMbw6FXI1R6N92muH{00Izz00bZa0SG_<0uUG_Fd>LDy!Qqk@i;He@&|8u5S{-2m^{nL zKggfTcjXN>i2(u-fB*y_009U<00Izz00bcL@(IkdcV5PnSVAcqt-ZBmYWe&cyP$44 zb2j^4+G(}`jJNqA{G zHZwJ;?kjI@kXnJN^Hs@{jU2 z^5Yl2fXE;OAOHafKmY;|fB*y_009U<;N=#O#=0H-kk`{^U4HK*fDjeLX};6x7sh!} ziMS^TI@kXnIsN}9>=}TsVuKDB|`1o$LRiyvMPg|3fyy009U<00Izz00bZa z0SG_<0uX?}vlN&U!`x(YVaj@wqn_Nu>kAS&k22j z*~|X}1E;!y`M$u(5rLCl;NJ89f62efKg-|Z`Tu8G$%qRA5P$##AOHafKmY;|fB*y_ z@Vo@ZySMgtAO9D<$N$~;0d#H)ICv7k>HmxJ6HfkD{*#R`KmY;|fB*y_009U<00Izz X00ba#lm)u)0QAN}Se%NmI}82;LbUOm literal 0 HcmV?d00001 diff --git a/Verax_API_EF/Verax_API_EF/Test_Console_EF/Test_Console_Article.cs b/Verax_API_EF/Verax_API_EF/Test_Console_EF/Test_Console_EF.cs similarity index 100% rename from Verax_API_EF/Verax_API_EF/Test_Console_EF/Test_Console_Article.cs rename to Verax_API_EF/Verax_API_EF/Test_Console_EF/Test_Console_EF.cs diff --git a/Verax_API_EF/Verax_API_EF/TestsUnitaires/TestsArticleEntity.cs b/Verax_API_EF/Verax_API_EF/Unit_Test_EF/TestsArticleEntity.cs similarity index 98% rename from Verax_API_EF/Verax_API_EF/TestsUnitaires/TestsArticleEntity.cs rename to Verax_API_EF/Verax_API_EF/Unit_Test_EF/TestsArticleEntity.cs index 01cfb24..7fd74b0 100644 --- a/Verax_API_EF/Verax_API_EF/TestsUnitaires/TestsArticleEntity.cs +++ b/Verax_API_EF/Verax_API_EF/Unit_Test_EF/TestsArticleEntity.cs @@ -2,11 +2,10 @@ using DbContextLib; using Entities; using Microsoft.Data.Sqlite; using Microsoft.EntityFrameworkCore; -using Xunit; -namespace Tests; +namespace TestsUnitaires; -public class ArticleDB_Tests +public class TestsArticleEntity { [Fact] public void Add_Test() diff --git a/Verax_API_EF/Verax_API_EF/Unit_Test_EF/TestsUserEntity.cs b/Verax_API_EF/Verax_API_EF/Unit_Test_EF/TestsUserEntity.cs new file mode 100644 index 0000000..4119245 --- /dev/null +++ b/Verax_API_EF/Verax_API_EF/Unit_Test_EF/TestsUserEntity.cs @@ -0,0 +1,182 @@ +using DbContextLib; +using Entities; +using Microsoft.Data.Sqlite; +using Microsoft.EntityFrameworkCore; + +namespace Tests; + +public class TestsUserEntity +{ + [Fact] + public void Add_Test() + { + var connection = new SqliteConnection("DataSource=:memory:"); + connection.Open(); + + var options = new DbContextOptionsBuilder() + .UseSqlite(connection) + .Options; + + using (var context = new LibraryContext(options)) + { + context.Database.EnsureCreated(); + UserEntity u1 = new UserEntity + { + Pseudo = "Tofgasy", Prenom = "Tony", Nom = "Fages", Mail = "he@gmail.com", Mdp = "1234", Role = "Admin" + }; + UserEntity u2 = new UserEntity + { + Pseudo = "Blizzard", Prenom = "Louis", Nom = "Laborie", Mail = "he@gmail.com", Mdp = "1234", + Role = "Admin" + }; + UserEntity u3 = new UserEntity + { + Pseudo = "TomS", Prenom = "Tom", Nom = "Smith", Mail = "TomS@gmail.com", Mdp = "1234", Role = "User" + }; + UserEntity u4 = new UserEntity + { + Pseudo = "Siwa", Prenom = "Jean", Nom = "Marcillac", Mail = "occitan@gmail.com", Mdp = "1234", + Role = "Amin" + }; + UserEntity u5 = new UserEntity + { + Pseudo = "Sha", Prenom = "Shana", Nom = "Cascarra", Mail = "shacas@gmail.com", Mdp = "1234", + Role = "Modérator" + }; + UserEntity u6 = new UserEntity + { + Pseudo = "NoaSil", Prenom = "Noa", Nom = "Sillard", Mail = "noaSillar@gmail.com", Mdp = "1234", + Role = "Admin" + }; + context.UserSet.Add(u1); + context.UserSet.Add(u2); + context.UserSet.Add(u3); + context.UserSet.Add(u4); + context.UserSet.Add(u5); + context.UserSet.Add(u6); + context.SaveChanges(); + + Assert.Equal(6, context.UserSet.Count()); + Assert.Equal("Blizzard", context.UserSet.First().Pseudo); + connection.Close(); + } + } + + [Fact] + public void Modify_Test() + { + var connection = new SqliteConnection("DataSource=:memory:"); + connection.Open(); + + var options = new DbContextOptionsBuilder() + .UseSqlite(connection) + .Options; + using (var context = new LibraryContext(options)) + { + context.Database.EnsureCreated(); + UserEntity u1 = new UserEntity + { + Pseudo = "Tofgasy", Prenom = "Tony", Nom = "Fages", Mail = "he@gmail.com", Mdp = "1234", Role = "Admin" + }; + UserEntity u2 = new UserEntity + { + Pseudo = "Blizzard", Prenom = "Louis", Nom = "Laborie", Mail = "he@gmail.com", Mdp = "1234", + Role = "Admin" + }; + UserEntity u3 = new UserEntity + { + Pseudo = "TomS", Prenom = "Tom", Nom = "Smith", Mail = "TomS@gmail.com", Mdp = "1234", Role = "User" + }; + UserEntity u4 = new UserEntity + { + Pseudo = "Siwa", Prenom = "Jean", Nom = "Marcillac", Mail = "occitan@gmail.com", Mdp = "1234", + Role = "Amin" + }; + UserEntity u5 = new UserEntity + { + Pseudo = "Sha", Prenom = "Shana", Nom = "Cascarra", Mail = "shacas@gmail.com", Mdp = "1234", + Role = "Modérator" + }; + UserEntity u6 = new UserEntity + { + Pseudo = "NoaSil", Prenom = "Noa", Nom = "Sillard", Mail = "noaSillar@gmail.com", Mdp = "1234", + Role = "Admin" + }; + context.UserSet.Add(u1); + context.UserSet.Add(u2); + context.UserSet.Add(u3); + context.UserSet.Add(u4); + context.UserSet.Add(u5); + context.UserSet.Add(u6); + context.SaveChanges(); + + var user = context.UserSet.First(u => u.Pseudo.Equals("Tofgasy")); + user.Prenom = "Tof"; + context.SaveChanges(); + string persRemove = "Tony"; + string persNew = "Tof"; + Assert.Equal(1, context.UserSet.Count(u => u.Prenom.Equals(persNew))); + Assert.Equal(0, context.UserSet.Count(u => u.Prenom.Equals(persRemove))); + connection.Close(); + + } + } + + [Fact] + public void Remove_Test() + { + var connection = new SqliteConnection("DataSource=:memory:"); + connection.Open(); + + var options = new DbContextOptionsBuilder() + .UseSqlite(connection) + .Options; + using (var context = new LibraryContext(options)) + { + context.Database.EnsureCreated(); + UserEntity u1 = new UserEntity + { + Pseudo = "Tofgasy", Prenom = "Tony", Nom = "Fages", Mail = "he@gmail.com", Mdp = "1234", Role = "Admin" + }; + UserEntity u2 = new UserEntity + { + Pseudo = "Blizzard", Prenom = "Louis", Nom = "Laborie", Mail = "he@gmail.com", Mdp = "1234", + Role = "Admin" + }; + UserEntity u3 = new UserEntity + { + Pseudo = "TomS", Prenom = "Tom", Nom = "Smith", Mail = "TomS@gmail.com", Mdp = "1234", Role = "User" + }; + UserEntity u4 = new UserEntity + { + Pseudo = "Siwa", Prenom = "Jean", Nom = "Marcillac", Mail = "occitan@gmail.com", Mdp = "1234", + Role = "Amin" + }; + UserEntity u5 = new UserEntity + { + Pseudo = "Sha", Prenom = "Shana", Nom = "Cascarra", Mail = "shacas@gmail.com", Mdp = "1234", + Role = "Modérator" + }; + UserEntity u6 = new UserEntity + { + Pseudo = "NoaSil", Prenom = "Noa", Nom = "Sillard", Mail = "noaSillar@gmail.com", Mdp = "1234", + Role = "Admin" + }; + context.UserSet.Add(u1); + context.UserSet.Add(u2); + context.UserSet.Add(u3); + context.UserSet.Add(u4); + context.UserSet.Add(u5); + context.UserSet.Add(u6); + context.SaveChanges(); + + Assert.Equal(6, context.UserSet.Count()); + var user = context.UserSet.First(u => u.Pseudo.Equals("Tofgasy")); + context.Remove(user); + context.SaveChanges(); + Assert.Equal(5, context.UserSet.Count()); + Assert.Equal(0, context.UserSet.Count(u => u.Pseudo.Equals("Tofgasy"))); + connection.Close(); + } + } +} \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/TestsUnitaires/TestsUnitaires.csproj b/Verax_API_EF/Verax_API_EF/Unit_Test_EF/Unit_Test_EF.csproj similarity index 96% rename from Verax_API_EF/Verax_API_EF/TestsUnitaires/TestsUnitaires.csproj rename to Verax_API_EF/Verax_API_EF/Unit_Test_EF/Unit_Test_EF.csproj index d068dfd..fc4de9b 100644 --- a/Verax_API_EF/Verax_API_EF/TestsUnitaires/TestsUnitaires.csproj +++ b/Verax_API_EF/Verax_API_EF/Unit_Test_EF/Unit_Test_EF.csproj @@ -7,6 +7,7 @@ false true + TestsUnitaires diff --git a/Verax_API_EF/Verax_API_EF/Verax_API_EF.sln b/Verax_API_EF/Verax_API_EF/Verax_API_EF.sln index 6fdbffa..ce77cf8 100644 --- a/Verax_API_EF/Verax_API_EF/Verax_API_EF.sln +++ b/Verax_API_EF/Verax_API_EF/Verax_API_EF.sln @@ -23,7 +23,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Model", "Model\Model.csproj EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "API", "API\API.csproj", "{6AACD337-70A0-429B-979C-1B1E004BF2E0}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestsUnitaires", "TestsUnitaires\TestsUnitaires.csproj", "{C1982C7C-AE09-4E96-B1A9-B6ADE4097452}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unit_Test_EF", "Unit_Test_EF\Unit_Test_EF.csproj", "{C1982C7C-AE09-4E96-B1A9-B6ADE4097452}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "API_Unit_Test", "API_Unit_Test\API_Unit_Test.csproj", "{B3B9C0F5-98A3-438B-A22A-ECFF33DA8F23}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -75,6 +77,10 @@ Global {C1982C7C-AE09-4E96-B1A9-B6ADE4097452}.Debug|Any CPU.Build.0 = Debug|Any CPU {C1982C7C-AE09-4E96-B1A9-B6ADE4097452}.Release|Any CPU.ActiveCfg = Release|Any CPU {C1982C7C-AE09-4E96-B1A9-B6ADE4097452}.Release|Any CPU.Build.0 = Release|Any CPU + {B3B9C0F5-98A3-438B-A22A-ECFF33DA8F23}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B3B9C0F5-98A3-438B-A22A-ECFF33DA8F23}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B3B9C0F5-98A3-438B-A22A-ECFF33DA8F23}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B3B9C0F5-98A3-438B-A22A-ECFF33DA8F23}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE From 0ccaeaeda0a349ab3e6dd10e7181a886c1887b6f Mon Sep 17 00:00:00 2001 From: tonyfages Date: Tue, 12 Mar 2024 21:11:02 +0100 Subject: [PATCH 13/19] try to implement unit of _logger; - public ArticleController(IArticleService articleService, ILogger logger) + public ArticleController(IDataManager dataManager, ILogger logger) { - this._articleService = articleService; + this._dataManager = dataManager; this._logger = logger; } @@ -26,7 +27,7 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(GetAllArticles), index, count, orderCriterium); try { - var result = (await _articleService.GetAllArticles(index, count, orderCriterium)).Select(a => a.ToDTO()); + var result = (await _dataManager.ArticleService.GetAllArticles(index, count, orderCriterium)).Select(a => a.ToDTO()); if (result == null) { return NotFound(); @@ -46,7 +47,7 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(GetArticleById), id); try { - var result = (await _articleService.GetArticleById(id)).ToDTO(); + var result = (await _dataManager.ArticleService.GetArticleById(id)).ToDTO(); if (result == null) { return NotFound($"Article ID {id} not found"); @@ -68,7 +69,7 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(CreateArticle), article); try { - var result = (await _articleService.CreateArticle(article)).ToDTO(); + var result = (await _dataManager.ArticleService.CreateArticle(article)).ToDTO(); if (result == null) { return BadRequest($"Article not created"); @@ -88,7 +89,7 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(DeleteArticle), id); try { - var result = await _articleService.DeleteArticle(id); + var result = await _dataManager.ArticleService.DeleteArticle(id); if (result == null) { return NotFound($"Article ID {id} not found"); @@ -108,7 +109,7 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(UpdateArticle), id, a); try { - var result = await _articleService.UpdateArticle(id, a); + var result = await _dataManager.ArticleService.UpdateArticle(id, a); if (result == false) { return NotFound($"Article ID {id} not found"); diff --git a/Verax_API_EF/Verax_API_EF/API/Controllers/FormulaireController.cs b/Verax_API_EF/Verax_API_EF/API/Controllers/FormulaireController.cs index 1e793a9..6b46b64 100644 --- a/Verax_API_EF/Verax_API_EF/API/Controllers/FormulaireController.cs +++ b/Verax_API_EF/Verax_API_EF/API/Controllers/FormulaireController.cs @@ -12,12 +12,13 @@ namespace API.Controllers [ApiController] public class FormulaireController : ControllerBase { - private readonly IFormulaireService _form; + //private readonly IFormulaireService _form; + private readonly IDataManager _dataManager; private readonly ILogger _logger; - public FormulaireController(IFormulaireService iform, ILogger logger) + public FormulaireController(IDataManager dataManager, ILogger logger) { - this._form = iform; + this._dataManager = dataManager; this._logger = logger; } @@ -27,7 +28,7 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(GetAllForm), index, count, orderCriteria); try { - var result = (await _form.GetAllForm(index, count, orderCriteria)).Select(f => f.ToDTO()); + var result = (await _dataManager.FormulaireService.GetAllForm(index, count, orderCriteria)).Select(f => f.ToDTO()); if (result == null) { return NotFound($"No form found"); @@ -48,7 +49,7 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(GetById), id); try { - var result = (await _form.GetById(id)).ToDTO(); + var result = (await _dataManager.FormulaireService.GetById(id)).ToDTO(); if (result == null) { return NotFound($"form ID {id} not found"); @@ -70,7 +71,7 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(CreateForm), formulaire); try { - var result = (await _form.CreateForm(formulaire)).ToDTO(); + var result = (await _dataManager.FormulaireService.CreateForm(formulaire)).ToDTO(); if (result == null) { return BadRequest($"Form Id {formulaire.Id} already exists"); @@ -90,7 +91,7 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(DeleteForm), id); try { - var result = await _form.DeleteForm(id); + var result = await _dataManager.FormulaireService.DeleteForm(id); if (result == false) { return NotFound($"Form Id {id} not found"); @@ -111,7 +112,7 @@ namespace API.Controllers try { - var result = await _form.UpdateForm(id, formulaire); + var result = await _dataManager.FormulaireService.UpdateForm(id, formulaire); if (result == false) { return NotFound($"form Id {id} not found"); diff --git a/Verax_API_EF/Verax_API_EF/API/Controllers/UserController.cs b/Verax_API_EF/Verax_API_EF/API/Controllers/UserController.cs index 547c1af..adb77db 100644 --- a/Verax_API_EF/Verax_API_EF/API/Controllers/UserController.cs +++ b/Verax_API_EF/Verax_API_EF/API/Controllers/UserController.cs @@ -12,12 +12,13 @@ namespace API.Controllers [ApiController] public class UserController : ControllerBase { - private readonly IUserService _us; + //private readonly IUserService _us; + private readonly IDataManager _dataManager; private readonly ILogger _logger; - public UserController(IUserService us, ILogger logger) + public UserController(IDataManager dataManager, ILogger logger) { - this._us = us; this._logger = logger; + this._dataManager = dataManager; } [HttpGet("/users")] @@ -26,7 +27,7 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(GetAll), index, count, orderCriteria); try { - var result = (await _us.GetAll(index, count, orderCriteria)).Select(u => u.ToDTO()); + var result = (await _dataManager.UserService.GetAll(index, count, orderCriteria)).Select(u => u.ToDTO()); if (result == null) { return NotFound($"No user found with the given parameters"); @@ -46,7 +47,7 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(GetByPseudo), pseudo); try { - var result = (await _us.GetByPseudo(pseudo)).ToDTO(); + var result = (await _dataManager.UserService.GetByPseudo(pseudo)).ToDTO(); if (result == null) { return NotFound($"Psuedo {pseudo} not found"); @@ -67,7 +68,7 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(Create), user); try { - var result = await _us.Create(user); + var result = await _dataManager.UserService.Create(user); if (result == false) { return BadRequest($"User {user.Pseudo} already exists"); @@ -89,7 +90,7 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(Update), user, pseudo); try { - var result = await _us.Update(user,pseudo); + var result = await _dataManager.UserService.Update(user,pseudo); if (result == false) { return NotFound(); @@ -110,7 +111,7 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(Delete), pseudo); try { - var result = await _us.Delete(pseudo); + var result = await _dataManager.UserService.Delete(pseudo); if (result == false) { return NotFound(); @@ -130,7 +131,7 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(GetAllArticleUsers), ""); try { - var result = (await _us.GetAllArticleUsers()).Select(u => u.ToDTO()); + var result = (await _dataManager.UserService.GetAllArticleUsers()).Select(u => u.ToDTO()); if (result == null) { return NoContent(); @@ -150,7 +151,7 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(GetArticleUser), pseudo); try { - var result = (await _us.GetArticleUser(pseudo)).Select(a => a.ToDTO()); + var result = (await _dataManager.UserService.GetArticleUser(pseudo)).Select(a => a.ToDTO()); if (result == null) { return NoContent(); @@ -171,7 +172,7 @@ namespace API.Controllers try { Console.WriteLine(articleUser); - var result = await _us.CreateArticleUser(articleUser); + var result = await _dataManager.UserService.CreateArticleUser(articleUser); if (result == null) { return BadRequest($"ArticleUser {articleUser.UserEntityPseudo} already exists"); @@ -191,7 +192,7 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(DeleteArticleUser), pseudo); try { - var result = await _us.DeleteArticleUser(pseudo); + var result = await _dataManager.UserService.DeleteArticleUser(pseudo); if (!result) { return BadRequest($"ArticleUser {pseudo} does not exist"); @@ -211,7 +212,7 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(UpdateArticleUser), articleUser); try { - var result = await _us.UpdateArticleUser(articleUser); + var result = await _dataManager.UserService.UpdateArticleUser(articleUser); if (!result) { return BadRequest($"ArticleUser {articleUser.UserEntityPseudo} does not exist"); diff --git a/Verax_API_EF/Verax_API_EF/API/Program.cs b/Verax_API_EF/Verax_API_EF/API/Program.cs index 03613b2..06fffd8 100644 --- a/Verax_API_EF/Verax_API_EF/API/Program.cs +++ b/Verax_API_EF/Verax_API_EF/API/Program.cs @@ -2,6 +2,7 @@ using API_Services; using DbContextLib; using DbDataManager; using Microsoft.EntityFrameworkCore; +using Model; using StubbedContextLib; var builder = WebApplication.CreateBuilder(args); @@ -20,9 +21,9 @@ builder.Services.AddDbContext(options => options.UseSqlite("Data Source=Entity_FrameWork.Article.db"); }); -builder.Services.AddScoped(); -builder.Services.AddScoped(); -builder.Services.AddScoped(); +builder.Services.AddScoped(); + + var app = builder.Build(); diff --git a/Verax_API_EF/Verax_API_EF/API_Services/IDataManager.cs b/Verax_API_EF/Verax_API_EF/API_Services/IDataManager.cs index 846f924..d5abbc8 100644 --- a/Verax_API_EF/Verax_API_EF/API_Services/IDataManager.cs +++ b/Verax_API_EF/Verax_API_EF/API_Services/IDataManager.cs @@ -3,8 +3,11 @@ using API_Services; public interface IDataManager { + + IArticleService ArticleService { get; } IUserService UserService { get; } IFormulaireService FormulaireService { get; } -} \ No newline at end of file +} + From 7487c4f8333e0f71f4dfc5c3827874bafb13bf7f Mon Sep 17 00:00:00 2001 From: tonyfages Date: Wed, 13 Mar 2024 19:12:31 +0100 Subject: [PATCH 14/19] tests requete --- .../API/Entity_FrameWork.Article.db | Bin 49152 -> 49152 bytes .../API/Entity_FrameWork.Article.db-shm | Bin 32768 -> 32768 bytes .../API/Entity_FrameWork.Article.db-wal | Bin 0 -> 90672 bytes .../API_Tests_Console.csproj | 15 + .../API_Tests_Console/Tests_Console.cs | 427 ++++++++++++++++++ Verax_API_EF/Verax_API_EF/Verax_API_EF.sln | 6 + 6 files changed, 448 insertions(+) create mode 100644 Verax_API_EF/Verax_API_EF/API_Tests_Console/API_Tests_Console.csproj create mode 100644 Verax_API_EF/Verax_API_EF/API_Tests_Console/Tests_Console.cs diff --git a/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db b/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db index 05efb1168e998b01e91a3dabc6673147af420471..c1874736901a316a2aff14cf158044ead4293130 100644 GIT binary patch delta 98 zcmZo@U~Xt&-oR+U&p(xcneQ9}|0{kYzH@wAHwy}^;1iP+6&2+W4M{C7LB^BM*&SzL sU|JIBme*a delta 73 zcmZo@U~Xt&-oR+U%fP_E%y*7~e=5Hb-?`0#0tfgepR+s8lF7)$d4QPdTe8!O?bEDhzbjd=>s9QZ%d=iTlRLn^ zl~naWqrd=U?tdfz6`okn849u*WF;#QV`GEFVB%~*Haid_(;PrPClGT3F`T`zQPPi@ znSpI%<8LNb9tJ)JfsKtnnV5MQ_(3Aff(#;HT8KduL~}ASumH{FWZ>G^_?3xSm_ZCA Q%FYCI69)tL#zsLI0LooM-~a#s delta 80 zcmZo@U}|V!;+1%$%K!t66CX;8TChv7nNGgVi7p`mlYpuI4+Il)WHx?a^V|5L$PfUx C1r-GV diff --git a/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-wal b/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-wal index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..87148cb4f6d60c60e97366054b7fc2a8de809eaf 100644 GIT binary patch literal 90672 zcmeI*e`u6-9KiACx#xaw=hwWR&S~O?VBE5X%jW|*x8fbedt1S-!o5K{%F>oPXqEJ|G>}1v4H=R zce+*t#9mDoTQspn{iqQ<5I_I{1Q0*~0R#|0009ILK%i&>_ZV(1P+u2ZZY2}d^Qs?? zrJ~7rM>=k`x3;D`7R;TyL4GlBPSi?-TO;zQ>+^#fh8Wz?Ke#SGxPFMi_5Fh@L6Cr>A0tg_000IagfB*srAb`OCA>c8Bx{NRw z^4LN?JLIz`8*y-{<=An7bq$FX8@g`nP>BQ%@vA2OkpJ*N009ILKmY**5I_I{1Q0*~ zfpQh7a2Qi{m6i~WrJWOWqefqvOvj^bG4)=aR6!lVORKi6-?eA|=crjDRo zFFor<009ILKmY**5I_I{1P~}$fsxh`EX$V$jINHrbhG zg6F!bcRjWEh4a)A43Cvj2q1s}0tg_000IagfB*srl(@jaIs(@})e#&$Hog5o@AT`c zj=-?%2u_vw8L~VC5I_I{1Q0*~0R#|0009KbO<<&T1ha=*M_{@JEf^SP9l^_M4n6r- z$E0Uf9f2W!R{IfLlTSPlKmY**5I_I{1Q0*~0R#|0pd1Bq1p}_3>j+fe!TdgjGhW;GXe-8fB*srAb<*)z$DpB@HR6T zTv;25Ct{DpQnGWv5cvYqA~bm4!Giq=&g@v1Zx+6II;I&-;RR)2&f|{&wGqjBY*$` z2q1s}0tg_000IagAo~P(Wfs9L>ImElX=hJ*_n`~TeXlletFRXJ7-~NPw{U6VC-Je^ zELMve`GyAq2q1s}0tg_000IagfB*vHQDBPOBSOLqhE{gOV=bvnQhr-3wX`J>Z=db* zgv^jRE7WAQZ&_a7Fz>$Qk&UsGdY6{JOExAV@wPcpE0Gyp>-3mrD0r9IWF^9Ca5xc9 zx5_tZE3w2Lxi%F`-fwt<=Co<`A^CrHHEvlX6^$g55&KzwoOyZE{B@4({55N0Esg5$ z8fP}vrqr96jWg`|8?Bb3`;(Ehm8{l1Rp!)SAhgPggyU_Q1;yLiBFPr{L1w}7a(d)% zzQ4eqCjw`zRx7NE3*6#_CQgW};-WY&exS?1c)ayFCj<~c009ILKmY**5I_Kd@gv|e zguc@4GeUYMhT-xWrhJtMJMEr>>H`%+aQKWWUp7=A&%PjE;K#*v`y!ohZ&LXJE>T0i z!1%d6I1>aAKmY**5I_I{1Q0*~fm;aNNxnd)j^NnW*Qef5bGcIG3%F#8K!3IX`2x4N zefSCi1Q0*~0R#|0009ILKmdVK5O9w&Um#yckUYI8{>lRjZx4vg{rLi~(_f$zE-q_8 z009ILKmY**5I_I{1P~ZIf&V&RK%U9u!TJkKlYIw5a_d3WcOcX3AiD*j-R)p3`U`lK zs@-?+O3&dh>nfgqKihY(Q{@X>5NE}A;-u&tJAGzG009ILKmY**5I_I{1Q0*~fl&*% z-A2$S0|_3N5!B_g;dSOZ2^d}@*JQxqcNkTAwyA)_s~aI-rU`*OrcWK$jtkV>c-1$p0dAjD z59)>t3b_1E-P8@$U(lI(=}^4~jY_9pr8{zQ0iV;?9~Y>Q3(MCLEcmVJ-gQmg3$t;7 zu`v>j>n$zJFOqFhBa>^v5esZ}-cx0hgeTpxBp+`4B(=0R#|0009ILKmY**5GbZV zzK%dn>Muea!9&rjj)iX>?DC6qGA@v-Bgj+{P)AVA>&9FNAb_#4WvWi + + + Exe + net8.0 + enable + enable + + + + + + + + diff --git a/Verax_API_EF/Verax_API_EF/API_Tests_Console/Tests_Console.cs b/Verax_API_EF/Verax_API_EF/API_Tests_Console/Tests_Console.cs new file mode 100644 index 0000000..8431299 --- /dev/null +++ b/Verax_API_EF/Verax_API_EF/API_Tests_Console/Tests_Console.cs @@ -0,0 +1,427 @@ +// See https://aka.ms/new-console-template for more information + +using System.Text; +using System.Text.Json; +using Entities; +using Model; + +class Tests_Console +{ + static readonly HttpClient client = new HttpClient(); + + + static async Task Main(string[] args) + { + await TestUser(); + //await TestFormulaire(); + //await TestArticle(); + } + + private static async Task TestFormulaire() + { + await TestFormulaireGetAll(); + await TestFormulaireGetId(); + await TestFormulaireCreate(); + await TestFormulaireDelete(); + await TestFormulaireUpdate(); + } + + private static async Task TestUser() + { + //await TestUserGetAll(); + //await TestUserGetId(); + //await TestUserCreate(); + //await TestUserDelete(); + //await TestUserUpdate(); + //await TestGetAllArticleUser(); + //await TestGetArticleByUser(); + //await TestCreateArticleUser(); + //await TestDeleteArticleUser(); + await TestUpdateArticleUser(); + } + + + static async Task TestArticle() + { + await TestArticleGetId(); + await TestArticleCreate(); + await TestArticleGetAll(); + await TestArticleDelete(); + await TestArticleUpdate(); + } + + static async Task TestArticleGetAll() + { + try + { + var response = await client.GetAsync("http://localhost:5052/api/Article"); + response.EnsureSuccessStatusCode(); + var responseBody = await response.Content.ReadAsStringAsync(); + Console.WriteLine(responseBody); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + } + + static async Task TestArticleGetId() + { + try + { + var response = await client.GetAsync("http://localhost:5052/article/1"); + response.EnsureSuccessStatusCode(); + var responseBody = await response.Content.ReadAsStringAsync(); + Console.WriteLine(responseBody); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + } + + static async Task TestArticleCreate() + { + try + { + var article = new Article() + { + Title = "Test", + Description = "Test", + Author = "Test", + DatePublished = "Test", + LectureTime = 0 + }; + var json = JsonSerializer.Serialize(article); + var data = new StringContent(json, Encoding.UTF8, "application/json"); + var response = await client.PostAsync("http://localhost:5052/article", data); + response.EnsureSuccessStatusCode(); + var responseBody = await response.Content.ReadAsStringAsync(); + Console.WriteLine(responseBody); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + } + + static async Task TestArticleDelete() + { + try + { + var response = await client.DeleteAsync("http://localhost:5052/article/4"); + response.EnsureSuccessStatusCode(); + var responseBody = await response.Content.ReadAsStringAsync(); + Console.WriteLine(responseBody); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + } + + static async Task TestArticleUpdate() + { + try + { + var article = new Article() + { + Title = "Louis", + Description = "Je", + Author = "T'", + DatePublished = "aime", + LectureTime = 0 + }; + var json = JsonSerializer.Serialize(article); + var data = new StringContent(json, Encoding.UTF8, "application/json"); + var response = await client.PutAsync("http://localhost:5052/article/1", data); + response.EnsureSuccessStatusCode(); + var responseBody = await response.Content.ReadAsStringAsync(); + Console.WriteLine(responseBody); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + } + + static async Task TestFormulaireGetAll() + { + try + { + var response = await client.GetAsync("http://localhost:5052/formulaires"); + response.EnsureSuccessStatusCode(); + var responseBody = await response.Content.ReadAsStringAsync(); + Console.WriteLine(responseBody); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + } + + static async Task TestFormulaireGetId() + { + try + { + var response = await client.GetAsync("http://localhost:5052/formulaire/2"); + response.EnsureSuccessStatusCode(); + var responseBody = await response.Content.ReadAsStringAsync(); + Console.WriteLine(responseBody); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + } + + static async Task TestFormulaireCreate() + { + try + { + var formulaire = new Formulaire() + { + Theme = "Test", + Date = "Test", + Lien = "Test", + UserPseudo = "Sha" + }; + var json = JsonSerializer.Serialize(formulaire); + var data = new StringContent(json, Encoding.UTF8, "application/json"); + var response = await client.PostAsync("http://localhost:5052/formulaire", data); + response.EnsureSuccessStatusCode(); + var responseBody = await response.Content.ReadAsStringAsync(); + Console.WriteLine(responseBody); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + } + + static async Task TestFormulaireDelete() + { + try + { + var response = await client.DeleteAsync("http://localhost:5052/formulaire/5"); + response.EnsureSuccessStatusCode(); + var responseBody = await response.Content.ReadAsStringAsync(); + Console.WriteLine(responseBody); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + } + + static async Task TestFormulaireUpdate() + { + try + { + var formulaire = new Formulaire() + { + Theme = "J'", + Date = "aime", + Lien = "Les", + UserPseudo = "Sha" + }; + var json = JsonSerializer.Serialize(formulaire); + var data = new StringContent(json, Encoding.UTF8, "application/json"); + var response = await client.PutAsync("http://localhost:5052/formulaire/4", data); + response.EnsureSuccessStatusCode(); + var responseBody = await response.Content.ReadAsStringAsync(); + Console.WriteLine(responseBody); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + } + + static async Task TestUserGetAll() + { + try + { + var response = await client.GetAsync("http://localhost:5052/users"); + response.EnsureSuccessStatusCode(); + var responseBody = await response.Content.ReadAsStringAsync(); + Console.WriteLine(responseBody); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + } + + static async Task TestUserGetId() + { + try + { + var response = await client.GetAsync("http://localhost:5052/user/Sha"); + response.EnsureSuccessStatusCode(); + var responseBody = await response.Content.ReadAsStringAsync(); + Console.WriteLine(responseBody); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + } + + static async Task TestUserCreate() + { + try + { + var user = new User() + { + Pseudo = "J", + Nom = "'", + Prenom = "aime", + Mail = "les", + Mdp = "pieds", + Role = "Admin" + }; + var json = JsonSerializer.Serialize(user); + var data = new StringContent(json, Encoding.UTF8, "application/json"); + var response = await client.PostAsync("http://localhost:5052/user", data); + response.EnsureSuccessStatusCode(); + var responseBody = await response.Content.ReadAsStringAsync(); + Console.WriteLine(responseBody); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + } + + static async Task TestUserDelete() + { + try + { + var response = await client.DeleteAsync("http://localhost:5052/user/J"); + response.EnsureSuccessStatusCode(); + var responseBody = await response.Content.ReadAsStringAsync(); + Console.WriteLine(responseBody); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + } + + static async Task TestUserUpdate() + { + try + { + var user = new User() + { + Pseudo = "Sha", + Nom = "J'", + Prenom = "aime", + Mail = "les", + Mdp = "pieds", + Role = "Admin" + }; + var json = JsonSerializer.Serialize(user); + var data = new StringContent(json, Encoding.UTF8, "application/json"); + var response = await client.PutAsync("http://localhost:5052/user/Sha", data); + response.EnsureSuccessStatusCode(); + var responseBody = await response.Content.ReadAsStringAsync(); + Console.WriteLine(responseBody); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + } + + static async Task TestGetAllArticleUser() + { + try + { + var response = await client.GetAsync("http://localhost:5052/ArticleUsers"); + response.EnsureSuccessStatusCode(); + var responseBody = await response.Content.ReadAsStringAsync(); + Console.WriteLine(responseBody); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + } + + static async Task TestGetArticleByUser() + { + try + { + var response = await client.GetAsync("http://localhost:5052/user/Sha/article"); + response.EnsureSuccessStatusCode(); + var responseBody = await response.Content.ReadAsStringAsync(); + Console.WriteLine(responseBody); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + } + + static async Task TestCreateArticleUser() + { + try + { + var articleUser = new ArticleUserEntity() + { + ArticleEntityId = 1, + UserEntityPseudo = "Sha" + }; + var json = JsonSerializer.Serialize(articleUser); + var data = new StringContent(json, Encoding.UTF8, "application/json"); + var response = await client.PostAsync("http://localhost:5052/user/article", data); + response.EnsureSuccessStatusCode(); + var responseBody = await response.Content.ReadAsStringAsync(); + Console.WriteLine(responseBody); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + } + + static async Task TestDeleteArticleUser() + { + try + { + var response = await client.DeleteAsync("http://localhost:5052/user/Sha/article"); + response.EnsureSuccessStatusCode(); + var responseBody = await response.Content.ReadAsStringAsync(); + Console.WriteLine(responseBody); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + } + + static async Task TestUpdateArticleUser() + { + try + { + var articleUser = new ArticleUserEntity() + { + ArticleEntityId = 1, + UserEntityPseudo = "Sha" + }; + var json = JsonSerializer.Serialize(articleUser); + var data = new StringContent(json, Encoding.UTF8, "application/json"); + var response = await client.PutAsync("http://localhost:5052/user/Sha/article", data); + response.EnsureSuccessStatusCode(); + var responseBody = await response.Content.ReadAsStringAsync(); + Console.WriteLine(responseBody); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + } + +} \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/Verax_API_EF.sln b/Verax_API_EF/Verax_API_EF/Verax_API_EF.sln index ce77cf8..473c412 100644 --- a/Verax_API_EF/Verax_API_EF/Verax_API_EF.sln +++ b/Verax_API_EF/Verax_API_EF/Verax_API_EF.sln @@ -27,6 +27,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unit_Test_EF", "Unit_Test_E EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "API_Unit_Test", "API_Unit_Test\API_Unit_Test.csproj", "{B3B9C0F5-98A3-438B-A22A-ECFF33DA8F23}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "API_Tests_Console", "API_Tests_Console\API_Tests_Console.csproj", "{EEB45245-5B65-4C99-A2B4-942991AE5F1A}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -81,6 +83,10 @@ Global {B3B9C0F5-98A3-438B-A22A-ECFF33DA8F23}.Debug|Any CPU.Build.0 = Debug|Any CPU {B3B9C0F5-98A3-438B-A22A-ECFF33DA8F23}.Release|Any CPU.ActiveCfg = Release|Any CPU {B3B9C0F5-98A3-438B-A22A-ECFF33DA8F23}.Release|Any CPU.Build.0 = Release|Any CPU + {EEB45245-5B65-4C99-A2B4-942991AE5F1A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EEB45245-5B65-4C99-A2B4-942991AE5F1A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EEB45245-5B65-4C99-A2B4-942991AE5F1A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EEB45245-5B65-4C99-A2B4-942991AE5F1A}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE From 15a5228d19e7d4513377904bf1dea394c2e93f35 Mon Sep 17 00:00:00 2001 From: tonyfages Date: Wed, 13 Mar 2024 19:15:31 +0100 Subject: [PATCH 15/19] =?UTF-8?q?Tests=20Requete=20API=20=20=E2=9C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Verax_API_EF/API_Tests_Console/Tests_Console.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Verax_API_EF/Verax_API_EF/API_Tests_Console/Tests_Console.cs b/Verax_API_EF/Verax_API_EF/API_Tests_Console/Tests_Console.cs index 8431299..e8b8c7d 100644 --- a/Verax_API_EF/Verax_API_EF/API_Tests_Console/Tests_Console.cs +++ b/Verax_API_EF/Verax_API_EF/API_Tests_Console/Tests_Console.cs @@ -12,18 +12,18 @@ class Tests_Console static async Task Main(string[] args) { - await TestUser(); + //await TestUser(); //await TestFormulaire(); //await TestArticle(); } private static async Task TestFormulaire() { - await TestFormulaireGetAll(); - await TestFormulaireGetId(); - await TestFormulaireCreate(); - await TestFormulaireDelete(); - await TestFormulaireUpdate(); + //await TestFormulaireGetAll(); + //await TestFormulaireGetId(); + //await TestFormulaireCreate(); + //await TestFormulaireDelete(); + //await TestFormulaireUpdate(); } private static async Task TestUser() From 5d9e46a3742dd4cf289d1278e0d676444ec67484 Mon Sep 17 00:00:00 2001 From: tonyfages Date: Wed, 13 Mar 2024 19:55:34 +0100 Subject: [PATCH 16/19] =?UTF-8?q?Unit=20Tests=20API=20=20=E2=9C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../API_Unit_Test/API_Unit_Test.csproj | 5 + .../Verax_API_EF/API_Unit_Test/UnitTest1.cs | 9 -- .../API_Unit_Test/UnitTest_Article.cs | 108 ++++++++++++++++++ 3 files changed, 113 insertions(+), 9 deletions(-) delete mode 100644 Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest1.cs create mode 100644 Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_Article.cs diff --git a/Verax_API_EF/Verax_API_EF/API_Unit_Test/API_Unit_Test.csproj b/Verax_API_EF/Verax_API_EF/API_Unit_Test/API_Unit_Test.csproj index 120fbeb..bf9fa2b 100644 --- a/Verax_API_EF/Verax_API_EF/API_Unit_Test/API_Unit_Test.csproj +++ b/Verax_API_EF/Verax_API_EF/API_Unit_Test/API_Unit_Test.csproj @@ -11,6 +11,7 @@ + runtime; build; native; contentfiles; analyzers; buildtransitive @@ -22,4 +23,8 @@ + + + + diff --git a/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest1.cs b/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest1.cs deleted file mode 100644 index dd67b24..0000000 --- a/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest1.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace API_Unit_Test; - -public class UnitTest1 -{ - [Fact] - public void Test1() - { - } -} \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_Article.cs b/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_Article.cs new file mode 100644 index 0000000..fa1c02c --- /dev/null +++ b/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_Article.cs @@ -0,0 +1,108 @@ +using API_Services; +using Model; +using Moq; + +namespace API_Unit_Test; + +public class UnitTest_Article +{ + + + + + + [Fact] + public void TestGetArticleById() + { + var mockArticleService = new Mock(); + var expected = new Article() + { + Id = 1, + Title = "Test", + Description = "Test", + Author = "Test", + DatePublished = "Test", + LectureTime = 10 + }; + mockArticleService.Setup(x => x.GetArticleById(1)).ReturnsAsync(expected); + var result = mockArticleService.Object.GetArticleById(1); + Assert.Equal(expected, result.Result); + } + + [Fact] + public void TestGetAllArticles() + { + var mockArticleService = new Mock(); + var expected = new List
() + { + new Article() + { + Id = 1, + Title = "Test", + Description = "Test", + Author = "Test", + DatePublished = "Test", + LectureTime = 10 + }, + new Article() + { + Id = 2, + Title = "Test", + Description = "Test", + Author = "Test", + DatePublished = "Test", + LectureTime = 10 + } + }; + mockArticleService.Setup(x => x.GetAllArticles(0, 10, ArticleOrderCriteria.None)).ReturnsAsync(expected); + var result = mockArticleService.Object.GetAllArticles(0, 10, ArticleOrderCriteria.None); + Assert.Equal(expected, result.Result); + } + + [Fact] + public void TestAddArticle() + { + var mockArticleService = new Mock(); + var expected = new Article() + { + Id = 1, + Title = "Test", + Description = "Test", + Author = "Test", + DatePublished = "Test", + LectureTime = 10 + }; + mockArticleService.Setup(x => x.CreateArticle(expected)).ReturnsAsync(expected); + var result = mockArticleService.Object.CreateArticle(expected); + Assert.Equal(expected, result.Result); + } + + [Fact] + public void UpdateArticle() + { + var mockArticleService = new Mock(); + var expected = new Article() + { + Id = 1, + Title = "Test", + Description = "Test", + Author = "Test", + DatePublished = "Test", + LectureTime = 10 + }; + mockArticleService.Setup(x => x.CreateArticle(expected)).ReturnsAsync(expected); + var result = mockArticleService.Object.CreateArticle(expected); + Assert.Equal(1, result.Id ); + var updated = new Article() + { + Title = "Updated Test", + Description = "Test", + Author = "Test", + DatePublished = "Test", + LectureTime = 10 + }; + var resultUpdated = mockArticleService.Object.UpdateArticle(1, updated); + // Je comprends pas pourquoi ça ne passe pas regarde STP Louis + //Assert.True(resultUpdated.Result); + } +} \ No newline at end of file From 2a5cfc1d12a946acb210d0de601028de82a316a0 Mon Sep 17 00:00:00 2001 From: tonyfages Date: Thu, 14 Mar 2024 09:21:03 +0100 Subject: [PATCH 17/19] =?UTF-8?q?fix=20unit=20tests=20API=20form=20?= =?UTF-8?q?=E2=9C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../API/Entity_FrameWork.Article.db-shm | Bin 32768 -> 32768 bytes .../API_Unit_Test/UnitTest_Article.cs | 29 +++++++++++++++--- .../API_Unit_Test/UnitTest_Form.cs | 17 ++++++++++ 3 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_Form.cs diff --git a/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-shm b/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-shm index 70a3e06ea5272d989b98ecfd656ac76d9ac74e49..92cec95a0ddd553f5e984a73e83c138df32719cb 100644 GIT binary patch delta 56 ucmZo@U}|V!;*@x#%K!!wIpqZdXT5&rv!8t{vLG8oaAKSiqu9pA`g#Dv6%mI3 delta 56 vcmZo@U}|V!;*@x#%K!pg6FKDtFVA}YOzr^tR%Agoh~UIHB}RsgjrH{a*Ip7Y diff --git a/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_Article.cs b/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_Article.cs index fa1c02c..736a240 100644 --- a/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_Article.cs +++ b/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_Article.cs @@ -83,14 +83,13 @@ public class UnitTest_Article var mockArticleService = new Mock(); var expected = new Article() { - Id = 1, Title = "Test", Description = "Test", Author = "Test", DatePublished = "Test", LectureTime = 10 }; - mockArticleService.Setup(x => x.CreateArticle(expected)).ReturnsAsync(expected); + mockArticleService.Setup(x => x.CreateArticle(expected)); var result = mockArticleService.Object.CreateArticle(expected); Assert.Equal(1, result.Id ); var updated = new Article() @@ -101,8 +100,30 @@ public class UnitTest_Article DatePublished = "Test", LectureTime = 10 }; + mockArticleService.Setup(x => x.UpdateArticle(1, updated)).ReturnsAsync(true); var resultUpdated = mockArticleService.Object.UpdateArticle(1, updated); - // Je comprends pas pourquoi ça ne passe pas regarde STP Louis - //Assert.True(resultUpdated.Result); + Assert.True(resultUpdated.Result); } + + [Fact] + static void DeletedArticle() + { + var mockArticleService = new Mock(); + var expected = new Article() + { + Id = 1, + Title = "Test", + Description = "Test", + Author = "Test", + DatePublished = "Test", + LectureTime = 10 + }; + mockArticleService.Setup(x => x.CreateArticle(expected)).ReturnsAsync(expected); + var result = mockArticleService.Object.CreateArticle(expected); + Assert.Equal(expected, result.Result); + mockArticleService.Setup(x => x.DeleteArticle(1)).ReturnsAsync(expected); + var resultDeleted = mockArticleService.Object.DeleteArticle(1); + Assert.Equal(expected, result.Result); + } + } \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_Form.cs b/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_Form.cs new file mode 100644 index 0000000..138122d --- /dev/null +++ b/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_Form.cs @@ -0,0 +1,17 @@ +using API_Services; +using Moq; + +namespace API_Unit_Test; + +public class UnitTest_Form +{ + + [Fact] + static void TestAllUser() + { + var mockUserService = new Mock(); + // TODO + } + +} + From d620088c63da4686e8a95537a7f12d1e0ca3d78b Mon Sep 17 00:00:00 2001 From: tonyfages Date: Fri, 15 Mar 2024 17:01:56 +0100 Subject: [PATCH 18/19] Add logger Entity + Unit Test for API --- .../API/Controllers/ArticleController.cs | 5 +- .../API/Controllers/FormulaireController.cs | 8 +- .../API/Controllers/UserController.cs | 22 +- .../API/Entity_FrameWork.Article.db | Bin 49152 -> 49152 bytes .../API/Entity_FrameWork.Article.db-shm | Bin 32768 -> 32768 bytes .../API/Entity_FrameWork.Article.db-wal | Bin 90672 -> 57712 bytes Verax_API_EF/Verax_API_EF/API/log.txt | 17 ++ .../API_DbDataManager/DbManagerArticle.cs | 16 +- .../API_DbDataManager/DbManagerFormulaire.cs | 21 +- .../API_DbDataManager/DbManagerUser.cs | 30 +-- .../API_Mapping/FormulaireMapping.cs | 2 +- .../Verax_API_EF/API_Mapping/UserMapping.cs | 2 +- .../API_Services/IArticleService.cs | 2 +- .../API_Services/IArticleUserService.cs | 9 - .../API_Services/IFormulaireService.cs | 4 +- .../Verax_API_EF/API_Services/IUserService.cs | 8 +- .../API_Tests_Console/Tests_Console.cs | 6 +- .../API_Unit_Test/UnitTest_Article.cs | 4 +- .../API_Unit_Test/UnitTest_Form.cs | 90 +++++++- .../API_Unit_Test/UnitTest_User.cs | 215 ++++++++++++++++++ .../DbContextLib/LibraryContext.cs | 2 +- .../Verax_API_EF/Test_Console_EF/log.txt | 0 22 files changed, 389 insertions(+), 74 deletions(-) delete mode 100644 Verax_API_EF/Verax_API_EF/API_Services/IArticleUserService.cs create mode 100644 Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_User.cs create mode 100644 Verax_API_EF/Verax_API_EF/Test_Console_EF/log.txt diff --git a/Verax_API_EF/Verax_API_EF/API/Controllers/ArticleController.cs b/Verax_API_EF/Verax_API_EF/API/Controllers/ArticleController.cs index 4c450ef..77caa98 100644 --- a/Verax_API_EF/Verax_API_EF/API/Controllers/ArticleController.cs +++ b/Verax_API_EF/Verax_API_EF/API/Controllers/ArticleController.cs @@ -21,6 +21,7 @@ namespace API.Controllers this._logger = logger; } + [Route("/articles")] [HttpGet] public async Task GetAllArticles([FromQuery] int index = 0, [FromQuery] int count = 10, [FromQuery] ArticleOrderCriteria orderCriterium = ArticleOrderCriteria.None) { @@ -109,8 +110,8 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(UpdateArticle), id, a); try { - var result = await _dataManager.ArticleService.UpdateArticle(id, a); - if (result == false) + var result = (await _dataManager.ArticleService.UpdateArticle(id, a)).ToDTO(); + if (result == null) { return NotFound($"Article ID {id} not found"); } diff --git a/Verax_API_EF/Verax_API_EF/API/Controllers/FormulaireController.cs b/Verax_API_EF/Verax_API_EF/API/Controllers/FormulaireController.cs index 6b46b64..fcf25aa 100644 --- a/Verax_API_EF/Verax_API_EF/API/Controllers/FormulaireController.cs +++ b/Verax_API_EF/Verax_API_EF/API/Controllers/FormulaireController.cs @@ -91,8 +91,8 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(DeleteForm), id); try { - var result = await _dataManager.FormulaireService.DeleteForm(id); - if (result == false) + var result = (await _dataManager.FormulaireService.DeleteForm(id)).ToDTO(); + if (result == null) { return NotFound($"Form Id {id} not found"); } @@ -112,8 +112,8 @@ namespace API.Controllers try { - var result = await _dataManager.FormulaireService.UpdateForm(id, formulaire); - if (result == false) + var result = (await _dataManager.FormulaireService.UpdateForm(id, formulaire)).ToDTO(); + if (result == null) { return NotFound($"form Id {id} not found"); } diff --git a/Verax_API_EF/Verax_API_EF/API/Controllers/UserController.cs b/Verax_API_EF/Verax_API_EF/API/Controllers/UserController.cs index adb77db..5ca51f4 100644 --- a/Verax_API_EF/Verax_API_EF/API/Controllers/UserController.cs +++ b/Verax_API_EF/Verax_API_EF/API/Controllers/UserController.cs @@ -68,8 +68,8 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(Create), user); try { - var result = await _dataManager.UserService.Create(user); - if (result == false) + var result = (await _dataManager.UserService.Create(user)).ToDTO(); + if (result == null) { return BadRequest($"User {user.Pseudo} already exists"); } @@ -90,8 +90,8 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(Update), user, pseudo); try { - var result = await _dataManager.UserService.Update(user,pseudo); - if (result == false) + var result = (await _dataManager.UserService.Update(user, pseudo)).ToDTO(); + if (result == null) { return NotFound(); } @@ -111,8 +111,8 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(Delete), pseudo); try { - var result = await _dataManager.UserService.Delete(pseudo); - if (result == false) + var result = (await _dataManager.UserService.Delete(pseudo)).ToDTO(); + if (result == null) { return NotFound(); } @@ -186,16 +186,16 @@ namespace API.Controllers } } - [HttpDelete("/user/{pseudo}/article")] - public async Task DeleteArticleUser(string pseudo) + [HttpDelete("/user/{pseudo}/{id}")] + public async Task DeleteArticleUser(string pseudo, long id) { _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(DeleteArticleUser), pseudo); try { - var result = await _dataManager.UserService.DeleteArticleUser(pseudo); + var result = await _dataManager.UserService.DeleteArticleUser(pseudo, id); if (!result) { - return BadRequest($"ArticleUser {pseudo} does not exist"); + return BadRequest($"User {pseudo} or {id} does not exist"); } return Ok(result); } @@ -212,7 +212,7 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(UpdateArticleUser), articleUser); try { - var result = await _dataManager.UserService.UpdateArticleUser(articleUser); + var result = (await _dataManager.UserService.UpdateArticleUser(articleUser)); if (!result) { return BadRequest($"ArticleUser {articleUser.UserEntityPseudo} does not exist"); diff --git a/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db b/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db index c1874736901a316a2aff14cf158044ead4293130..175a9e3bfb33888228bcc9beffeb72eedaac90e5 100644 GIT binary patch delta 138 zcmZo@U~Xt&-oR+U%fP_E%y*7~e=5Hb-?`0#0tfgepR+s8lF7)1?Km)S*Cs)poV$o(~W7vFs jzLo$)!Al1IpZp*BUv3suxWPa9*?wVmHfCYY;EY57LXalm delta 163 zcmZo@U~Xt&-oR+U&p(xcneQ9}|0{kYzH@wAHwy}^;1iP+6&2+W4M{C7LB^BM*&SzL zU|+`h)c=>+<6})8N|H%K6|K(;ug&X{npY0cB2P$9>&PW6R DG$Jr* diff --git a/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-shm b/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-shm index 92cec95a0ddd553f5e984a73e83c138df32719cb..d5fc9fbb704b9577a86e5b9773468d5275689d97 100644 GIT binary patch delta 242 zcmZo@U}|V!s+V}A%K!qbK+MR%AixKtd4Tx)Z#j$SMxX3vZ&TqmHQuEh{4&Sk?DgMz zq^buR1qL8<|04mYupN|UVBi32ly0oCzrd?@O-@q-*EJ0k-N13LrP=8p+q cSs8gZKK#qX&dk6DG!UrdI};<{#)slE082zT2><{9 delta 283 zcmZo@U}|V!s+V}A%K!t63=9HdKn@QOGkr^Tda-?)_3U>g3wFJV{S!Fr^)sLS>|04y z4>KEN?tdfz6?bC*Nq_(s5Q8jc#lZ&2!_=?=+3Y|JrzcL7-grdJkC~Z)ZR5e;OsqT% zd<+5`5B_9g=4Idqi7*Q?h=6G!22l__`9nAxGbaPr#)Ds(n1va{Kw_KUMg3#ictJ`M E09{H-5&!@I diff --git a/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-wal b/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-wal index 87148cb4f6d60c60e97366054b7fc2a8de809eaf..7605da657bc9a544f302ea364306a208df39841d 100644 GIT binary patch delta 1003 zcmdmRg!RKAW-s%4wk8JMM-mJS0t_H9dz%Wksqrr52i!Z??OuDN11Q9SEPmj`{ioZ# z--Pn=e`8?bKg+=XivI!sHU6{wXE!Gb?B-`-XJr zFM6@|-C4U*xxi+eWZ-|ve~pQJ=Ct=N<)5?f9z4ng z6lCGQ&A|Va{|)~W{@eVQfZ7l9Pv2|EXrc)9h6nQ{uIBDZmwAC|S&^Ol4b{17+HB0? z*j;<##~e+Z~?9X~%O zJ4`1NEa24)ar(q&!P>oHPuJ}P`Gk#s6VNB%kl(cZfgs}|elczqMsY?au!q>u{ALDp z0U|O{V#8M0KkUs?TT_tV*!Yhl`HlZL(2<+@Mc}?;hqF-qSrQ@_a8Bt)IVerBBKz|Y z9)GH$x(OwLOCA>c=<0gF!5J1@Gs-9VBE5X%jW|*x8fbedt1S-!o5K{%F>oPXqEJ|G>}1v4H=R zce+*t#9mDoTQspn{iqQ<5I_I{1Q0*~0R#|0009ILK%i&>_ZV(1P+u2ZZY2}d^Qs?? zrJ~7rM>=k`x3;D`7R;TyL4GlBPSi?-TO;zQ>+^#fh8Wz?Ke#SGxPFMi_5Fh@L6Cr>A0tg_000IagfB*srAb`OCA>c8Bx{NRw z^4LN?JLIz`8*y-{<=An7bq$FX8@g`nP>BQ%@vA2OkpJ*N009ILKmY**5I_I{1Q0*~ zfpQh7a2Qi{m6i~WrJWOWqefqvOvj^bG4)=aR6!lVORKi6-?eA|=crjDRo zFFor<009ILKmY**5I_I{1P~}$fsxh`EX$V$jINHrbhG zg6F!bcRjWEh4a)A43Cvj2q1s}0tg_000IagfB*srl(@jaIs(@})e#&$Hog5o@AT`c zj=-?%2u_vw8L~VC5I_I{1Q0*~0R#|0009KbO<<&T1ha=*M_{@JEf^SP9l^_M4n6r- z$E0Uf9f2W!R{IfLlTSPlKmY**5I_I{1Q0*~0R#|0pd1Bq1p}_3>j+fe!TdgjGhW;GXe-8fB*srAb<*)z$DpB@HR6T zTv;25Ct{DpQnGWv5cvYqA~bm4!Giq=&g@v1Zx+6II;I&-;RR)2&f|{&wGqjBY*$` z2q1s}0tg_000IagAo~P(Wfs9L>ImElX=hJ*_n`~TeXlletFRXJ7-~NPw{U6VC-Je^ zELMve`GyAq2q1s}0tg_000IagfB*vHQDBPOBSOLqhE{gOV=bvnQhr-3wX`J>Z=db* zgv^jRE7WAQZ&_a7Fz>$Qk&UsGdY6{JOExAV@wPcpE0Gyp>-3mrD0r9IWF^9Ca5xc9 zx5_tZE3w2Lxi%F`-fwt<=Co<`A^CrHHEvlX6^$g55&KzwoOyZE{B@4({55N0Esg5$ z8fP}vrqr96jWg`|8?Bb3`;(Ehm8{l1Rp!)SAhgPggyU_Q1;yLiBFPr{L1w}7a(d)% zzQ4eqCjw`zRx7NE3*6#_CQgW};-WY&exS?1c)ayFCj<~c009ILKmY**5I_Kd@gv|e zguc@4GeUYMhT-xWrhJtMJMEr>>H`%+aQKWWUp7=A&%PjE;K#*v`y!ohZ&LXJE>T0i z!1%d6I1>aAKmY**5I_I{1Q0*~fm;aNNxnd)j^NnW*Qef5bGcIG3%F#8K!3IX`2x4N zefSCi1Q0*~0R#|0009ILKmdVK5O9w&Um#yckUYI8{>lRjZx4vg{rLi~(_f$zE-q_8 z009ILKmY**5I_I{1P~ZIf&V&RK%U9u!TJkKlYIw5a_d3WcOcX3AiD*j-R)p3`U`lK zs@-?+O3&dh>nfgqKihY(Q{@X>5NE}A;-u&tJAGzG009ILKmY**5I_I{1Q0*~fl&*% z-A2$S0|_3N5!B_g;dSOZ2^d}@*JQxqcNkTAwyA)_s~aI-rU`*OrcWK$jtkV>c-1$p0dAjD z59)>t3b_1E-P8@$U(lI(=}^4~jY_9pr8{zQ0iV;?9~Y>Q3(MCLEcmVJ-gQmg3$t;7 zu`v>j>n$zJFOqFhBa>^v5esZ}-cx0hgeTpxBp+`4B(=0R#|0009ILKmY**5GbZV zzK%dn>Muea!9&rjj)iX>?DC6qGA@v-Bgj+{P)AVA>&9FNAb_#4WvWi(null); return entity.ToModel(); } @@ -74,21 +74,23 @@ public class DbManagerArticle : IArticleService Console.WriteLine(entity); if (entity == null) return null; _context.ArticleSet.Remove(entity); - await _context.SaveChangesAsync(); + var result = await _context.SaveChangesAsync(); + if (result == 0) return await Task.FromResult(null); return entity.ToModel(); } - public async Task UpdateArticle(long id, Article? a) + public async Task UpdateArticle(long id, Article? a) { var entity = _context.ArticleSet.FirstOrDefault(a => a.Id == id); - if (entity == null) return false; + if (entity == null) return await Task.FromResult(null); entity.Title = a.Title; entity.Description = a.Description; entity.Author = a.Author; entity.DatePublished = a.DatePublished; entity.LectureTime = a.LectureTime; - await _context.SaveChangesAsync(); - return true; + var result = await _context.SaveChangesAsync(); + if (result == 0) return await Task.FromResult(null); + return entity.ToModel(); } diff --git a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerFormulaire.cs b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerFormulaire.cs index 5cd515f..914a606 100644 --- a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerFormulaire.cs +++ b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerFormulaire.cs @@ -59,28 +59,31 @@ public class DbManagerFormulaire : IFormulaireService }; _context.FormSet.Add(entity); - await _context.SaveChangesAsync(); + var result = await _context.SaveChangesAsync(); + if (result == 0) return await Task.FromResult(null); return entity.ToModel(); } - public async Task DeleteForm(long id) + public async Task DeleteForm(long id) { var entity = _context.FormSet.FirstOrDefault(f => f.Id == id); - if (entity == null) return false; + if (entity == null) return Task.FromResult(null).Result; _context.FormSet.Remove(entity); - await _context.SaveChangesAsync(); - return true; + var result = await _context.SaveChangesAsync(); + if (result == 0) return await Task.FromResult(null); + return entity.ToModel(); } - public async Task UpdateForm(long id, Formulaire formulaire) + public async Task UpdateForm(long id, Formulaire formulaire) { var entity = _context.FormSet.FirstOrDefault(f => f.Id == id); - if (entity == null) return false; + if (entity == null) return Task.FromResult(null).Result; entity.Theme = formulaire.Theme; entity.DatePublication = formulaire.Date; entity.Link = formulaire.Lien; entity.UserEntityPseudo = formulaire.UserPseudo; - await _context.SaveChangesAsync(); - return true; + var result = await _context.SaveChangesAsync(); + if (result == 0) return await Task.FromResult(null); + return entity.ToModel(); } } \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerUser.cs b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerUser.cs index a5a7b26..5c196d7 100644 --- a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerUser.cs +++ b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerUser.cs @@ -43,7 +43,7 @@ public class DbManagerUser: IUserService return await Task.FromResult(entity.ToModel()); } - public async Task Create(User user) + public async Task Create(User user) { var entity = new UserEntity() { @@ -55,30 +55,33 @@ public class DbManagerUser: IUserService Role = user.Role }; _context.UserSet.Add(entity); - await _context.SaveChangesAsync(); - return true; + var result = await _context.SaveChangesAsync(); + if (result == 0) return await Task.FromResult(null); + return await Task.FromResult(entity.ToModel()); } - public async Task Update(User user, string pseudo) + public async Task Update(User user, string pseudo) { var entity = _context.UserSet.FirstOrDefault(u => u.Pseudo == pseudo); - if (entity == null) return false; + if (entity == null) return await Task.FromResult(null); entity.Mdp = user.Mdp; entity.Mail = user.Mail; entity.Role = user.Role; entity.Prenom = user.Prenom; entity.Nom = user.Nom; - await _context.SaveChangesAsync(); - return true; + var result = await _context.SaveChangesAsync(); + if (result == 0) return await Task.FromResult(null); + return await Task.FromResult(entity.ToModel()); } - public async Task Delete(string pseudo) + public async Task Delete(string pseudo) { var entity = _context.UserSet.FirstOrDefault(u => u.Pseudo == pseudo); - if (entity == null) return await Task.FromResult(false); + if (entity == null) return await Task.FromResult(null); _context.UserSet.Remove(entity); - await _context.SaveChangesAsync(); - return await Task.FromResult(true); + var result = await _context.SaveChangesAsync(); + if (result == 0) return await Task.FromResult(null); + return await Task.FromResult(entity.ToModel()); } public async Task> GetAllArticleUsers() @@ -124,9 +127,10 @@ public class DbManagerUser: IUserService return await Task.FromResult(true); } - public async Task DeleteArticleUser(string pseudo) + public async Task DeleteArticleUser(string pseudo, long id) { - var entity = _context.ArticleUserSet.FirstOrDefault(a => a.UserEntityPseudo.Equals(pseudo)); + + var entity = _context.ArticleUserSet.FirstOrDefault(a => a.UserEntityPseudo.Equals(pseudo) && a.ArticleEntityId.Equals(id)); if (entity == null) return await Task.FromResult(false); _context.ArticleUserSet.Remove(entity); await _context.SaveChangesAsync(); diff --git a/Verax_API_EF/Verax_API_EF/API_Mapping/FormulaireMapping.cs b/Verax_API_EF/Verax_API_EF/API_Mapping/FormulaireMapping.cs index 8a0e631..7a779ab 100644 --- a/Verax_API_EF/Verax_API_EF/API_Mapping/FormulaireMapping.cs +++ b/Verax_API_EF/Verax_API_EF/API_Mapping/FormulaireMapping.cs @@ -5,7 +5,7 @@ namespace API_Mapping; public static class FormulaireMapping { - public static FormulaireDTO ToDTO(this Formulaire f) => new() + public static FormulaireDTO ToDTO(this Formulaire? f) => new() { Id = f.Id, Theme = f.Theme, diff --git a/Verax_API_EF/Verax_API_EF/API_Mapping/UserMapping.cs b/Verax_API_EF/Verax_API_EF/API_Mapping/UserMapping.cs index ef5cd9c..53789e6 100644 --- a/Verax_API_EF/Verax_API_EF/API_Mapping/UserMapping.cs +++ b/Verax_API_EF/Verax_API_EF/API_Mapping/UserMapping.cs @@ -5,7 +5,7 @@ namespace API_Mapping; public static class UserMapping { - public static UserDTO ToDTO(this User u) => new() + public static UserDTO ToDTO(this User? u) => new() { Pseudo = u.Pseudo, Mdp = u.Mdp, diff --git a/Verax_API_EF/Verax_API_EF/API_Services/IArticleService.cs b/Verax_API_EF/Verax_API_EF/API_Services/IArticleService.cs index 712ab2e..967eddf 100644 --- a/Verax_API_EF/Verax_API_EF/API_Services/IArticleService.cs +++ b/Verax_API_EF/Verax_API_EF/API_Services/IArticleService.cs @@ -14,7 +14,7 @@ namespace API_Services Task DeleteArticle(long id); - Task UpdateArticle(long id, Article? a); + Task UpdateArticle(long id, Article? a); } diff --git a/Verax_API_EF/Verax_API_EF/API_Services/IArticleUserService.cs b/Verax_API_EF/Verax_API_EF/API_Services/IArticleUserService.cs deleted file mode 100644 index 68cba95..0000000 --- a/Verax_API_EF/Verax_API_EF/API_Services/IArticleUserService.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Entities; -using Model; - -namespace API_Services; - -public interface IArticleUserService -{ - -} \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/API_Services/IFormulaireService.cs b/Verax_API_EF/Verax_API_EF/API_Services/IFormulaireService.cs index 9374d8b..0b0d444 100644 --- a/Verax_API_EF/Verax_API_EF/API_Services/IFormulaireService.cs +++ b/Verax_API_EF/Verax_API_EF/API_Services/IFormulaireService.cs @@ -12,7 +12,7 @@ public interface IFormulaireService Task CreateForm(Formulaire formulaire); - Task DeleteForm(long id); + Task DeleteForm(long id); - Task UpdateForm(long id, Formulaire formulaire); + Task UpdateForm(long id, Formulaire formulaire); } \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/API_Services/IUserService.cs b/Verax_API_EF/Verax_API_EF/API_Services/IUserService.cs index b191a32..ed48afb 100644 --- a/Verax_API_EF/Verax_API_EF/API_Services/IUserService.cs +++ b/Verax_API_EF/Verax_API_EF/API_Services/IUserService.cs @@ -8,17 +8,17 @@ namespace API_Services Task> GetAll(int index, int count, UserOrderCriteria orderCriteria); Task GetByPseudo(string pseudo); - Task Create(User user); - Task Update(User user, string pseudo); + Task Create(User user); + Task Update(User user, string pseudo); - Task Delete(string pseudo); + Task Delete(string pseudo); Task> GetAllArticleUsers(); Task> GetArticleUser(string pseudo); Task CreateArticleUser(ArticleUserEntity articleUser); - Task DeleteArticleUser(string pseudo); + Task DeleteArticleUser(string pseudo, long id); Task UpdateArticleUser(ArticleUserEntity articleUser); diff --git a/Verax_API_EF/Verax_API_EF/API_Tests_Console/Tests_Console.cs b/Verax_API_EF/Verax_API_EF/API_Tests_Console/Tests_Console.cs index e8b8c7d..aff59a0 100644 --- a/Verax_API_EF/Verax_API_EF/API_Tests_Console/Tests_Console.cs +++ b/Verax_API_EF/Verax_API_EF/API_Tests_Console/Tests_Console.cs @@ -13,13 +13,13 @@ class Tests_Console static async Task Main(string[] args) { //await TestUser(); - //await TestFormulaire(); + await TestFormulaire(); //await TestArticle(); } private static async Task TestFormulaire() { - //await TestFormulaireGetAll(); + await TestFormulaireGetAll(); //await TestFormulaireGetId(); //await TestFormulaireCreate(); //await TestFormulaireDelete(); @@ -37,7 +37,7 @@ class Tests_Console //await TestGetArticleByUser(); //await TestCreateArticleUser(); //await TestDeleteArticleUser(); - await TestUpdateArticleUser(); + //await TestUpdateArticleUser(); } diff --git a/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_Article.cs b/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_Article.cs index 736a240..0219dbd 100644 --- a/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_Article.cs +++ b/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_Article.cs @@ -100,9 +100,9 @@ public class UnitTest_Article DatePublished = "Test", LectureTime = 10 }; - mockArticleService.Setup(x => x.UpdateArticle(1, updated)).ReturnsAsync(true); + mockArticleService.Setup(x => x.UpdateArticle(1, updated)).ReturnsAsync(updated); var resultUpdated = mockArticleService.Object.UpdateArticle(1, updated); - Assert.True(resultUpdated.Result); + Assert.Equal(updated ,resultUpdated.Result); } [Fact] diff --git a/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_Form.cs b/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_Form.cs index 138122d..bc9b615 100644 --- a/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_Form.cs +++ b/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_Form.cs @@ -1,17 +1,99 @@ using API_Services; +using Model; using Moq; namespace API_Unit_Test; public class UnitTest_Form { + [Fact] + public void TestGetAllForm() + { + var mockFormService = new Mock(); + var expected = new List() + { + new Formulaire() + { + Lien = "Test", + Theme = "Test", + Date = "Test", + UserPseudo = "Test" + }, + new Formulaire() + { + Lien = "Test", + Theme = "Test", + Date = "Test", + UserPseudo = "Test" + } + }; + mockFormService.Setup(x => x.GetAllForm(0, 10, FormOrderCriteria.None)).ReturnsAsync(expected); + var result = mockFormService.Object.GetAllForm(0, 10, FormOrderCriteria.None); + Assert.Equal(expected, result.Result); + } [Fact] - static void TestAllUser() + public void TestGetFormById() + { + var mockFormService = new Mock(); + var expected = new Formulaire() + { + Lien = "Test", + Theme = "Test", + Date = "Test", + UserPseudo = "Test" + }; + mockFormService.Setup(x => x.GetById(1)).ReturnsAsync(expected); + var result = mockFormService.Object.GetById(1); + Assert.Equal(expected, result.Result); + } + + [Fact] + public void TestCreateForm() { - var mockUserService = new Mock(); - // TODO + var mockFormService = new Mock(); + var expected = new Formulaire() + { + Lien = "Test", + Theme = "Test", + Date = "Test", + UserPseudo = "Test" + }; + mockFormService.Setup(x => x.CreateForm(expected)).ReturnsAsync(expected); + var result = mockFormService.Object.CreateForm(expected); + Assert.Equal(expected, result.Result); } -} + [Fact] + public void TestUpdateForm() + { + var mockFormService = new Mock(); + var expected = new Formulaire() + { + Lien = "Test", + Theme = "Test", + Date = "Test", + UserPseudo = "Test" + }; + mockFormService.Setup(x => x.CreateForm(expected)).ReturnsAsync(expected); + var result = mockFormService.Object.CreateForm(expected); + Assert.Equal(expected, result.Result); + } + + [Fact] + public void TestDeleteForm() + { + var mockFormService = new Mock(); + var expected = new Formulaire() + { + Lien = "Test", + Theme = "Test", + Date = "Test", + UserPseudo = "Test" + }; + mockFormService.Setup(x => x.DeleteForm(1)).ReturnsAsync(expected); + var result = mockFormService.Object.DeleteForm(1); + Assert.Equal(expected, result.Result); + } +} \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_User.cs b/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_User.cs new file mode 100644 index 0000000..9634bcd --- /dev/null +++ b/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_User.cs @@ -0,0 +1,215 @@ +using API_Services; +using Entities; +using Model; +using Moq; + +namespace API_Unit_Test; + +public class UnitTest_User +{ + + [Fact] + static void TestAllUser() + { + var mockUserService = new Mock(); + var expected = new List() + { + new User() + { + Pseudo = "Tofgasy", + Prenom = "Tony", + Nom = "Fages", + Mail = "mail@mail.com", + Mdp = "1234", + Role = "Admin" + }, + new User() + { + Pseudo = "Blizzard", + Prenom = "Louis", + Nom = "Laborie", + Mail = "mail@mail.com", + Mdp = "1234", + Role = "Admin", + }, + }; + mockUserService.Setup(x => x.GetAll(0, 10, UserOrderCriteria.None)).ReturnsAsync(expected); + var result = mockUserService.Object.GetAll(0, 10, UserOrderCriteria.None); + Assert.Equal(expected, result.Result); + + } + + [Fact] + static void TestGetUserByPseudo() + { + var mockUserService = new Mock(); + var expected = new User() + { + Pseudo = "Tofgasy", + Prenom = "Tony", + Nom = "Fages", + Mail = "mail@mail.com", + Mdp = "1234", + Role = "Admin" + }; + mockUserService.Setup(x => x.GetByPseudo("Tofgasy")).ReturnsAsync(expected); + var result = mockUserService.Object.GetByPseudo("Tofgasy"); + Assert.Equal(expected, result.Result); + } + + [Fact] + static void TestCreateUser() + { + var mockUserService = new Mock(); + var user = new User() + { + Pseudo = "Tofgasy", + Prenom = "Tony", + Nom = "Fages", + Mail = "mail@mail.com", + Mdp = "1234", + Role = "Admin" + }; + mockUserService.Setup(x => x.Create(user)).ReturnsAsync(user); + var result = mockUserService.Object.Create(user); + Assert.Equal( user,result.Result); + } + + [Fact] + static void TestUpdateUser() + { + var mockUserService = new Mock(); + var user = new User() + { + Pseudo = "Tofgasy", + Prenom = "Tonio", + Nom = "Fages", + Mail = "mail@mail.com", + Mdp = "1234", + Role = "Admin" + }; + mockUserService.Setup(x => x.Update(user, "Tofgasy")).ReturnsAsync(user); + var result = mockUserService.Object.Update(user, "Tofgasy"); + Assert.Equal( user,result.Result); + } + + [Fact] + static void TestDeleteUser() + { + var mockUserService = new Mock(); + var user = new User() + { + Pseudo = "Tofgasy", + Prenom = "Tonio", + Nom = "Fages", + Mail = "mail@mail.com", + Mdp = "1234", + Role = "Admin" + }; + mockUserService.Setup(x => x.Delete("Tofgasy")).ReturnsAsync(user); + var result = mockUserService.Object.Delete("Tofgasy"); + Assert.Equal( user,result.Result); + } + + + [Fact] + static void TestGetAllArticleUsers() + { + var mockUserService = new Mock(); + var expected = new List() + { + new User() + { + Pseudo = "Tofgasy", + Prenom = "Tony", + Nom = "Fages", + Mail = "", + Mdp = "", + Role = "", + }, + new User() + { + Pseudo = "Blizzard", + Prenom = "Louis", + Nom = "Laborie", + Mail = "", + Mdp = "", + Role = "", + }, + }; + mockUserService.Setup(x => x.GetAllArticleUsers()).ReturnsAsync(expected); + var result = mockUserService.Object.GetAllArticleUsers(); + Assert.Equal(expected, result.Result); + } + + [Fact] + static void TestGetArticleUser() + { + var mockUserService = new Mock(); + var expected = new List
() + { + new Article() + { + Id = 1, + Title = "Test", + Description = "Test", + Author = "Test", + DatePublished = "Test", + LectureTime = 10 + }, + new Article() + { + Id = 2, + Title = "Test", + Description = "Test", + Author = "Test", + DatePublished = "Test", + LectureTime = 10 + } + }; + mockUserService.Setup(x => x.GetArticleUser("Tofgasy")).ReturnsAsync(expected); + var result = mockUserService.Object.GetArticleUser("Tofgasy"); + Assert.Equal(expected, result.Result); + } + + [Fact] + static void TestCreateArticleUser() + { + var mockUserService = new Mock(); + var articleUser = new ArticleUserEntity() + { + ArticleEntityId = 1, + UserEntityPseudo = "Tofgasy" + }; + mockUserService.Setup(x => x.CreateArticleUser(articleUser)).ReturnsAsync(true); + var result = mockUserService.Object.CreateArticleUser(articleUser); + Assert.True(result.Result); + } + + [Fact] + static void TestDeleteArticleUser() + { + var mockUserService = new Mock(); + mockUserService.Setup(x => x.DeleteArticleUser("Tofgasy", 1)).ReturnsAsync(true); + var result = mockUserService.Object.DeleteArticleUser("Tofgasy", 1); + Assert.True(result.Result); + } + + [Fact] + static void TestUpdateArticleUser() + { + var mockUserService = new Mock(); + var articleUser = new ArticleUserEntity() + { + ArticleEntityId = 1, + UserEntityPseudo = "Tofgasy" + }; + mockUserService.Setup(x => x.UpdateArticleUser(articleUser)).ReturnsAsync(true); + var result = mockUserService.Object.UpdateArticleUser(articleUser); + Assert.True(result.Result); + } + + + +} + diff --git a/Verax_API_EF/Verax_API_EF/DbContextLib/LibraryContext.cs b/Verax_API_EF/Verax_API_EF/DbContextLib/LibraryContext.cs index 0f9f644..b8032db 100644 --- a/Verax_API_EF/Verax_API_EF/DbContextLib/LibraryContext.cs +++ b/Verax_API_EF/Verax_API_EF/DbContextLib/LibraryContext.cs @@ -26,7 +26,7 @@ public class LibraryContext : DbContext protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { - optionsBuilder.LogTo( LogFile.WriteLine, LogLevel.Error).EnableDetailedErrors().EnableDetailedErrors(); + optionsBuilder.LogTo(message => LogFile.WriteLine(message), LogLevel.Information); if (!optionsBuilder.IsConfigured) { optionsBuilder.UseSqlite($"Data Source=Entity_FrameWork.Article.db"); diff --git a/Verax_API_EF/Verax_API_EF/Test_Console_EF/log.txt b/Verax_API_EF/Verax_API_EF/Test_Console_EF/log.txt new file mode 100644 index 0000000..e69de29 From d4eef3da9adf94a16ebfde598d3d120a2486be47 Mon Sep 17 00:00:00 2001 From: tonyfages Date: Fri, 15 Mar 2024 17:09:39 +0100 Subject: [PATCH 19/19] fix logger --- Verax_API_EF/Verax_API_EF/API/log.txt | 17 +++++++ .../DbContextLib/LibraryContext.cs | 49 ++++++++----------- 2 files changed, 38 insertions(+), 28 deletions(-) diff --git a/Verax_API_EF/Verax_API_EF/API/log.txt b/Verax_API_EF/Verax_API_EF/API/log.txt index 38b147c..7d66f59 100644 --- a/Verax_API_EF/Verax_API_EF/API/log.txt +++ b/Verax_API_EF/Verax_API_EF/API/log.txt @@ -15,3 +15,20 @@ info: 03/15/2024 16:59:30.063 RelationalEventId.CommandExecuted[20101] (Microsof Executed DbCommand (0ms) [Parameters=[], CommandType='Text', CommandTimeout='30'] SELECT "a"."Id", "a"."Author", "a"."DatePublished", "a"."Description", "a"."LectureTime", "a"."Title" FROM "ArticleSet" AS "a" +info: 03/15/2024 17:08:29.557 RelationalEventId.CommandExecuted[20101] (Microsoft.EntityFrameworkCore.Database.Command) + Executed DbCommand (6ms) [Parameters=[], CommandType='Text', CommandTimeout='30'] + SELECT COUNT(*) FROM "sqlite_master" WHERE "name" = '__EFMigrationsHistory' AND "type" = 'table'; +info: 03/15/2024 17:08:29.561 RelationalEventId.CommandExecuted[20101] (Microsoft.EntityFrameworkCore.Database.Command) + Executed DbCommand (0ms) [Parameters=[], CommandType='Text', CommandTimeout='30'] + SELECT COUNT(*) FROM "sqlite_master" WHERE "name" = '__EFMigrationsHistory' AND "type" = 'table'; +info: 03/15/2024 17:08:29.567 RelationalEventId.CommandExecuted[20101] (Microsoft.EntityFrameworkCore.Database.Command) + Executed DbCommand (0ms) [Parameters=[], CommandType='Text', CommandTimeout='30'] + SELECT "MigrationId", "ProductVersion" + FROM "__EFMigrationsHistory" + ORDER BY "MigrationId"; +info: 03/15/2024 17:08:29.575 RelationalEventId.MigrationsNotApplied[20405] (Microsoft.EntityFrameworkCore.Migrations) + No migrations were applied. The database is already up to date. +info: 03/15/2024 17:08:33.305 RelationalEventId.CommandExecuted[20101] (Microsoft.EntityFrameworkCore.Database.Command) + Executed DbCommand (0ms) [Parameters=[], CommandType='Text', CommandTimeout='30'] + SELECT "a"."Id", "a"."Author", "a"."DatePublished", "a"."Description", "a"."LectureTime", "a"."Title" + FROM "ArticleSet" AS "a" diff --git a/Verax_API_EF/Verax_API_EF/DbContextLib/LibraryContext.cs b/Verax_API_EF/Verax_API_EF/DbContextLib/LibraryContext.cs index b8032db..c62563b 100644 --- a/Verax_API_EF/Verax_API_EF/DbContextLib/LibraryContext.cs +++ b/Verax_API_EF/Verax_API_EF/DbContextLib/LibraryContext.cs @@ -6,27 +6,32 @@ namespace DbContextLib; public class LibraryContext : DbContext { - - private static readonly StreamWriter LogFile = new StreamWriter("log.txt"); + public LibraryContext() : base() - { } + { + } public LibraryContext(DbContextOptions options) : base(options) - { } - - - + { + } + + + public DbSet ArticleSet { get; set; } public DbSet UserSet { get; set; } public DbSet FormSet { get; set; } - + public DbSet ArticleUserSet { get; set; } - + protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { - optionsBuilder.LogTo(message => LogFile.WriteLine(message), LogLevel.Information); + optionsBuilder.LogTo(message => + { + using var logFile = new StreamWriter("log.txt", append: true); + logFile.WriteLine(message); + }, LogLevel.Information); if (!optionsBuilder.IsConfigured) { optionsBuilder.UseSqlite($"Data Source=Entity_FrameWork.Article.db"); @@ -41,12 +46,12 @@ public class LibraryContext : DbContext .HasMany(a => a.Users) .WithMany(a => a.Articles) .UsingEntity(); - + modelBuilder.Entity() .HasMany(u => u.Forms) .WithOne(f => f.User) .HasForeignKey(f => f.UserEntityPseudo); - + modelBuilder.Entity() .HasOne(f => f.User) .WithMany(u => u.Forms) @@ -80,7 +85,7 @@ public class LibraryContext : DbContext Description = "M&M's new recipe is out and it's the best chocolate ever", DatePublished = "2022-02-06", LectureTime = 1, - Author = "M&M's Red" + Author = "M&M's Red" } ); @@ -107,7 +112,7 @@ public class LibraryContext : DbContext Nom = "Sillard", Prenom = "Noa", Pseudo = "NoaSil", Mail = "", Mdp = "1234", Role = "Admin" } ); - + modelBuilder.Entity().HasData( new ArticleUserEntity { @@ -135,11 +140,11 @@ public class LibraryContext : DbContext UserEntityPseudo = "TomS" } ); - + modelBuilder.Entity().HasData( new FormEntity { - Id = 1, + Id = 1, DatePublication = "Form 1 Description", Link = "hhtp://form1.com", UserEntityPseudo = "Sha" @@ -161,16 +166,4 @@ public class LibraryContext : DbContext ); */ } - - public override void Dispose() - { - base.Dispose(); - LogFile.Dispose(); - } - - public override async ValueTask DisposeAsync() - { - await base.DisposeAsync(); - await LogFile.DisposeAsync(); - } } \ No newline at end of file