OilController.cs 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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.Oil;
  7. namespace economy.Controllers
  8. {
  9. public class OilController : Controller
  10. {
  11. private readonly DataGoKR _dataGoKR;
  12. private Dictionary<string, string> _queryString;
  13. public OilController(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. OilModel oil = new OilModel(_dataGoKR);
  30. Response itemList = await oil.GetOilPriceInfo(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.OilCtg = Common.NumberFormat(row.OilCtg);
  38. row.WtAvgPrcCptn = Common.NumberFormat(row.WtAvgPrcCptn, "0.##");
  39. row.WtAvgPrcDisc = Common.NumberFormat(row.WtAvgPrcDisc);
  40. row.Trqu = Common.NumberFormat(row.Trqu);
  41. row.TrPrc = Common.NumberFormat(row.TrPrc);
  42. return row;
  43. }).ToList();
  44. }
  45. var viewModel = new View<Request, Response>();
  46. viewModel.SelectedListPerPage = request.NumOfRows;
  47. viewModel.Request = request;
  48. viewModel.Response = itemList;
  49. var queryString = new
  50. {
  51. sDate = request.StartDate,
  52. eDate = request.EndDate
  53. };
  54. var pagination = new Pagination(itemList.Body?.TotalCount, request.PageNo, request.NumOfRows, queryString);
  55. viewModel.Pagination = pagination;
  56. return View(viewModel);
  57. }
  58. }
  59. }