EmissionController.cs 2.8 KB

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