FIFAController.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using Microsoft.AspNetCore.Mvc;
  2. using Microsoft.AspNetCore.Mvc.Filters;
  3. using Microsoft.AspNetCore.WebUtilities;
  4. using economy.Models;
  5. using economy.Models.FIFA;
  6. namespace economy.Controllers
  7. {
  8. public class FIFAController : Controller
  9. {
  10. private readonly FIFA_API _fifaAPI;
  11. private Dictionary<string, string> _queryString;
  12. public FIFAController(FIFA_API fifaAPI)
  13. {
  14. _fifaAPI = fifaAPI;
  15. }
  16. public override void OnActionExecuting(ActionExecutingContext context)
  17. {
  18. _queryString = QueryHelpers.ParseQuery(HttpContext.Request.QueryString.Value).ToDictionary(k => k.Key, v => string.Join(",", v.Value));
  19. ViewBag.QueryString = _queryString;
  20. base.OnActionExecuting(context);
  21. }
  22. public async Task<IActionResult> Index(Request request)
  23. {
  24. if (!ModelState.IsValid)
  25. {
  26. return BadRequest(ModelState);
  27. }
  28. FIFAModel fifa = new FIFAModel(_fifaAPI);
  29. Response itemList = await fifa.GetRanking(request);
  30. if (itemList is not null)
  31. {
  32. itemList.Results = itemList.Results
  33. .Select((row, index) =>
  34. {
  35. row.Num += 1;
  36. row.FlagSrc = $"https://api.fifa.com/api/v3/picture/flags-sq-4/{row.IdCountry}";
  37. return row;
  38. })
  39. .ToList();
  40. string ?type = request.Type.ToString();
  41. if (itemList.Results is not null && type != string.Empty)
  42. {
  43. itemList.Results = itemList.Results.Where(row => row.ConfederationName == type).ToList();
  44. }
  45. }
  46. var viewModel = new View<Request, Response>();
  47. viewModel.SelectedListPerPage = request.NumOfRows;
  48. viewModel.Request = request;
  49. viewModel.Response = itemList;
  50. return View(viewModel);
  51. }
  52. }
  53. }