PriceController.cs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. using Microsoft.AspNetCore.Mvc;
  2. using Microsoft.AspNetCore.WebUtilities;
  3. using Microsoft.AspNetCore.Mvc.Filters;
  4. using economy.Models;
  5. using economy.Helpers;
  6. using Request = economy.Models.Product;
  7. using Response = economy.Models.Product;
  8. using economy.Models.Product;
  9. namespace economy.Controllers
  10. {
  11. public class PriceController : Controller
  12. {
  13. private readonly DataGoKR _dataGoKR;
  14. private ProductModel productModel;
  15. private Dictionary<string, string> _queryString;
  16. public PriceController(DataGoKR dataGoKR)
  17. {
  18. _dataGoKR = dataGoKR;
  19. productModel = new ProductModel(_dataGoKR);
  20. }
  21. public async Task<IActionResult> Index(Request.List.Request request)
  22. {
  23. return await List(request);
  24. }
  25. public override void OnActionExecuting(ActionExecutingContext context)
  26. {
  27. _queryString = QueryHelpers.ParseQuery(HttpContext.Request.QueryString.Value).ToDictionary(k => k.Key, v => string.Join(",", v.Value));
  28. ViewBag.QueryString = _queryString;
  29. base.OnActionExecuting(context);
  30. }
  31. // 품목별 시세
  32. [HttpGet("Price/List")]
  33. public async Task<IActionResult> List(Request.List.Request request)
  34. {
  35. if (!ModelState.IsValid)
  36. {
  37. return BadRequest(ModelState);
  38. }
  39. Response.List.Response itemList = await productModel.GetPriceItemList(request);
  40. var viewModel = new View<Request.List.Request, Response.List.Response>();
  41. viewModel.SelectedListPerPage = request.NumOfRows;
  42. viewModel.Request = request;
  43. viewModel.Response = itemList;
  44. var pagination = new Pagination(itemList.Body?.TotalCount, request.PageNo, request.NumOfRows, null);
  45. viewModel.Pagination = pagination;
  46. return View(viewModel);
  47. }
  48. // 품목 가격 정보
  49. [HttpGet("Price/Detail/{item}")]
  50. public async Task<IActionResult> Detail([FromRoute] string item, [Bind] Request.Detail.Request request)
  51. {
  52. request.ItemCode = item;
  53. if (!ModelState.IsValid)
  54. {
  55. return BadRequest(ModelState);
  56. }
  57. Response.Detail.Response itemInfo = await productModel.GetPriceItemInfo(request);
  58. if (itemInfo.Body is not null)
  59. {
  60. int listNum = Common.CalcListNumber(itemInfo.Body.TotalCount, request.PageNo, request.NumOfRows);
  61. itemInfo.Body.Items.ItemList = itemInfo.Body.Items.ItemList.Select((row, index) =>
  62. {
  63. row.Num = (listNum - index);
  64. return row;
  65. }).ToList();
  66. }
  67. var viewModel = new View<Response.Detail.Request, Response.Detail.Response>();
  68. viewModel.SelectedListPerPage = request.NumOfRows;
  69. viewModel.Request = request;
  70. viewModel.Response = itemInfo;
  71. var queryString = new
  72. {
  73. sDate = request.StartDate.ToString("yyyy-MM-dd"),
  74. eDate = request.EndDate.ToString("yyyy-MM-dd")
  75. };
  76. var pagination = new Pagination(itemInfo.Body?.TotalCount, request.PageNo, request.NumOfRows, queryString);
  77. viewModel.Pagination = pagination;
  78. return View(viewModel);
  79. }
  80. }
  81. }