GoldController.cs 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. using Microsoft.AspNetCore.Mvc;
  2. using Microsoft.AspNetCore.Mvc.Filters;
  3. using Microsoft.AspNetCore.WebUtilities;
  4. using economy.Helpers;
  5. using economy.Models;
  6. using economy.Models.Gold;
  7. namespace economy.Controllers
  8. {
  9. public class GoldController : Controller
  10. {
  11. private readonly DataGoKR _dataGoKR;
  12. private Dictionary<string, string> _queryString;
  13. public GoldController(DataGoKR dataGoKR)
  14. {
  15. _dataGoKR = dataGoKR;
  16. }
  17. public override void OnActionExecuting(ActionExecutingContext context)
  18. {
  19. _queryString = QueryHelpers.ParseQuery(HttpContext.Request.QueryString.Value).ToDictionary(k => k.Key, v => string.Join(",", v.Value));
  20. ViewBag.QueryString = _queryString;
  21. base.OnActionExecuting(context);
  22. }
  23. public async Task<IActionResult> Index(Request request)
  24. {
  25. if (!ModelState.IsValid)
  26. {
  27. return BadRequest(ModelState);
  28. }
  29. GoldModel gold = new GoldModel(_dataGoKR);
  30. Response itemList = await gold.GetGoldPriceInfo(request);
  31. if (itemList is not null)
  32. {
  33. int listNum = Common.CalcListNumber(itemList.Body.TotalCount, request.PageNo, request.NumOfRows);
  34. itemList.Body.Items.ItemList = itemList.Body.Items.ItemList.Select((row, index) =>
  35. {
  36. row.Num = (listNum - index);
  37. row.Clpr = Common.NumberFormat(row.Clpr);
  38. row.Vs = Common.NumberFormat(row.Vs);
  39. row.FltRt = Common.NumberFormat(row.FltRt, "0.##");
  40. row.Hipr = Common.NumberFormat(row.Hipr);
  41. row.Lopr = Common.NumberFormat(row.Lopr);
  42. row.Trqu = Common.NumberFormat(row.Trqu);
  43. row.TrPrc = Common.NumberFormat(row.TrPrc);
  44. return row;
  45. }).ToList();
  46. }
  47. var viewModel = new View<Request, Response>();
  48. viewModel.SelectedListPerPage = request.NumOfRows;
  49. viewModel.Request = request;
  50. viewModel.Response = itemList;
  51. var queryString = new
  52. {
  53. sDate = request.StartDate,
  54. eDate = request.EndDate
  55. };
  56. var pagination = new Pagination(itemList.Body?.TotalCount, request.PageNo, request.NumOfRows, queryString);
  57. viewModel.Pagination = pagination;
  58. return View(viewModel);
  59. }
  60. }
  61. }