GoldController.cs 2.8 KB

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