ContentController.cs 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. using System;
  2. using Common;
  3. using Common.Constant;
  4. using Common.Http;
  5. using Esim.Apis.Business;
  6. using Esim.Apis.DTO.Content;
  7. using Database.Database;
  8. using Microsoft.AspNetCore.Mvc;
  9. namespace RevoSystem.Apis.Controllers
  10. {
  11. [ApiController]
  12. public class ContentController : Controller
  13. {
  14. private static readonly log4net.ILog log = log4net.LogManager.GetLogger(
  15. typeof(ContentController)
  16. );
  17. IContentBusiness contentBusiness;
  18. public ContentController(IContentBusiness contentBusiness)
  19. {
  20. this.contentBusiness = contentBusiness;
  21. }
  22. /// <summary>
  23. /// Load banners
  24. /// POST /apis/content/banner
  25. /// </summary>
  26. [HttpPost]
  27. [Route(ApiUrlConstant.BannerLoadUrl)]
  28. public async Task<IActionResult> BannerLoad([FromBody] BannerLoadReq request)
  29. {
  30. return await contentBusiness.BannerLoad(HttpContext.Request, request);
  31. }
  32. /// <summary>
  33. /// Load customer reviews
  34. /// POST /apis/content/review
  35. /// </summary>
  36. [HttpPost]
  37. [Route(ApiUrlConstant.CustomerReviewLoadUrl)]
  38. public async Task<IActionResult> CustomerReviewLoad([FromBody] CustomerReviewLoadReq request)
  39. {
  40. return await contentBusiness.CustomerReviewLoad(HttpContext.Request, request);
  41. }
  42. /// <summary>
  43. /// Create customer review
  44. /// POST /apis/content/review/create
  45. /// </summary>
  46. [HttpPost]
  47. [Route(ApiUrlConstant.CustomerReviewCreateUrl)]
  48. public async Task<IActionResult> CustomerReviewCreate([FromBody] CustomerReviewCreateReq request)
  49. {
  50. if (!ModelState.IsValid)
  51. {
  52. var errors = ModelState.Values
  53. .SelectMany(v => v.Errors)
  54. .Select(e => e.ErrorMessage)
  55. .ToList();
  56. string lang = Common.Logic.CommonLogic.GetLanguage(HttpContext.Request, request?.lang);
  57. return DotnetLib.Http.HttpResponse.BuildResponse(
  58. log, HttpContext.Request.Path, Newtonsoft.Json.JsonConvert.SerializeObject(request),
  59. CommonErrorCode.RequiredFieldMissing,
  60. string.Join("; ", errors),
  61. new { }
  62. );
  63. }
  64. return await contentBusiness.CustomerReviewCreate(HttpContext.Request, request);
  65. }
  66. /// <summary>
  67. /// Load FAQ categories
  68. /// POST /apis/content/faq-category
  69. /// </summary>
  70. [HttpPost]
  71. [Route(ApiUrlConstant.FaqCategoryLoadUrl)]
  72. public async Task<IActionResult> FaqCategoryLoad([FromBody] FaqCategoryLoadReq request)
  73. {
  74. return await contentBusiness.FaqCategoryLoad(HttpContext.Request, request);
  75. }
  76. /// <summary>
  77. /// Load FAQs
  78. /// POST /apis/content/faq
  79. /// </summary>
  80. [HttpPost]
  81. [Route(ApiUrlConstant.FaqLoadUrl)]
  82. public async Task<IActionResult> FaqLoad([FromBody] FaqLoadReq request)
  83. {
  84. return await contentBusiness.FaqLoad(HttpContext.Request, request);
  85. }
  86. /// <summary>
  87. /// Load device eSIM compatibility list
  88. /// POST /apis/content/device-compatibility
  89. /// </summary>
  90. [HttpPost]
  91. [Route(ApiUrlConstant.DeviceCompatibilityLoadUrl)]
  92. public async Task<IActionResult> DeviceCompatibilityLoad([FromBody] DeviceCompatibilityReq request)
  93. {
  94. return await contentBusiness.DeviceCompatibilityLoad(HttpContext.Request, request);
  95. }
  96. /// <summary>
  97. /// Get device brands and categories list (for filters)
  98. /// GET /apis/content/device-metadata
  99. /// </summary>
  100. [HttpGet]
  101. [Route(ApiUrlConstant.DeviceMetadataUrl)]
  102. public async Task<IActionResult> GetDeviceBrandsAndCategories()
  103. {
  104. return await contentBusiness.GetDeviceBrandsAndCategories(HttpContext.Request);
  105. }
  106. }
  107. }