LessonView.cshtml 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473
  1. 
  2. @{
  3. ViewBag.Title = "Lesson";
  4. }
  5. @using NEducation.Content.Texts
  6. <link type="text/css" rel="stylesheet" href="~/Content/assets/css/product-intro.css" />
  7. <link type="text/css" rel="stylesheet" href="~/Content/assets/css/learning-diary.css" />
  8. <link rel="stylesheet" href="~/Content/assets/css/home-voca.css" />
  9. <link rel="stylesheet" href="~/Content/assets/css/common-lesson-view.css" />
  10. @*<link rel="stylesheet" href="~/Content/assets/css/dialog.css" />*@
  11. @*@using NEducation.Content.Texts;
  12. @using NEducation.NEduService;*@
  13. @using NEducation.Controllers
  14. @using NEducation.Code
  15. @model NEducation.Models.LessonModel
  16. @section navMenu{
  17. @{
  18. if (Model.courseType == UtilsController.Constant.VN_LISTEN || Model.courseType == UtilsController.Constant.LAO_LISTEN)
  19. {
  20. <a href="/Home/" class="nav-link">@Lang.Home</a>
  21. <a href="/Home/EnglishIndex/" class="nav-link">@Lang.english</a>
  22. <a href="/Home/VietnameseIndex/" class="nav-link">@Lang.vietnamese</a>
  23. <a href="/Home/LaosIndex/" class="nav-link">@Lang.laos</a>
  24. @*<a href="/Ebook/" class="nav-link">
  25. @Lang.Ebook
  26. <img src="~/Content/assets/imgs/giphy.gif" style=" width: 50px;" />
  27. </a>*@
  28. <div class="dropdown nav-link">
  29. <button onclick="myFunction()" class="dropbtn">
  30. E-Library
  31. <img src="~/Content/assets/imgs/giphy.gif" style=" width: 50px;" />
  32. </button>
  33. <div id="myDropdown" class="dropdown-content">
  34. <a href="/Ebook/">@Lang.Ebook</a>
  35. <a href="/Ebook/Video">Children's Video</a>
  36. </div>
  37. </div>
  38. <a href="/MiniGame" class="header-menu-link ">@Lang.MiniGame</a>
  39. }
  40. else
  41. {
  42. <a href="/Home/" class="nav-link">@Lang.Home</a>
  43. <a href="/Common/Course?courseType=@UtilsController.Constant.EN_VOCABULARY" class="nav-link">@Lang.Vocabulary</a>
  44. <a href="/Common/Course?courseType=@UtilsController.Constant.EN_GRAMMAR" class="nav-link">@Lang.Grammar</a>
  45. <a href="/Common/Course?courseType=@UtilsController.Constant.EN_LISTEN" class="nav-link">@Lang.Listening</a>
  46. <a href="/MiniGame" class="nav-link">@Lang.MiniGame</a>
  47. }
  48. }
  49. }
  50. @section menu{
  51. @{
  52. if (Model.courseType == UtilsController.Constant.VN_LISTEN || Model.courseType == UtilsController.Constant.LAO_LISTEN)
  53. {
  54. <a href="/Home/" class="header-menu-link ">@Lang.Home</a>
  55. <a href="/Home/EnglishIndex/" class="header-menu-link ">@Lang.english</a>
  56. <a href="/Home/VietnameseIndex/" class="header-menu-link ">@Lang.vietnamese</a>
  57. <a href="/Home/LaosIndex/" class="header-menu-link ">@Lang.laos</a>
  58. @*<a href="/Ebook/" class="header-menu-link ">
  59. @Lang.Ebook
  60. <img src="~/Content/assets/imgs/giphy.gif" style=" width: 50px;" />
  61. </a>*@
  62. <li class="menu-item-has-children header-menu-link ">
  63. <a href="#" class="">
  64. E-Library
  65. <img src="~/Content/assets/imgs/giphy.gif" style=" width: 50px;" />
  66. </a>
  67. <ul class="" style=" margin-left: 20px;">
  68. <li><a href="/Ebook/">@Lang.Ebook</a></li>
  69. <li><a href="/Ebook/Video">Children's Video</a></li>
  70. </ul>
  71. </li>
  72. }
  73. else
  74. {
  75. <a href="/Home/" class="header-menu-link ">@Lang.Home</a>
  76. <a href="/Common/Course?courseType=@UtilsController.Constant.EN_VOCABULARY" class="header-menu-link ">@Lang.Vocabulary</a>
  77. <a href="/Common/Course?courseType=@UtilsController.Constant.EN_GRAMMAR" class="header-menu-link ">@Lang.Grammar</a>
  78. <a href="/Common/Course?courseType=@UtilsController.Constant.EN_LISTEN" class="header-menu-link ">@Lang.Listening</a>
  79. <a href="/MiniGame" class="header-menu-link ">@Lang.MiniGame</a>
  80. @*<a href="/Ebook/" class="header-menu-link ">
  81. @Lang.Ebook
  82. <img src="~/Content/assets/imgs/giphy.gif" style=" width: 50px;" />
  83. </a>*@
  84. <li class="menu-item-has-children header-menu-link ">
  85. <a href="#" class="">
  86. E-Library
  87. <img src="~/Content/assets/imgs/giphy.gif" style=" width: 50px;" />
  88. </a>
  89. <ul class="" style=" margin-left: 20px;">
  90. <li><a href="/Ebook/">@Lang.Ebook</a></li>
  91. <li><a href="/Ebook/Video">Children's Video</a></li>
  92. </ul>
  93. </li>
  94. }
  95. }
  96. }
  97. @{
  98. var controllerLearning = "";
  99. var msisdn = "";
  100. var displaySub = "";
  101. var displayReg = "";
  102. var displayBuy = "";
  103. var bought = false;
  104. var signup = false;
  105. //var subscribed = false;
  106. var status = "";
  107. var subscribeTxt = "";
  108. msisdn = Session["msisdn"] as string;
  109. if (msisdn == "" || msisdn == null)
  110. {
  111. msisdn = "false";
  112. }
  113. // check controller for learning
  114. controllerLearning = UtilsController.GetCategoryCode(Model.course.categoryId) == "VOCABULARY" ? "Voca" :
  115. UtilsController.GetCategoryCode(Model.course.categoryId) == "GRAMMAR" ? "Grammar" :
  116. UtilsController.GetCategoryCode(Model.course.categoryId) == "LISTEN" ? "Listening" : "Listening";
  117. // disable buycourse Session["account"] is null
  118. if (Session["profile"] != null)
  119. {
  120. signup = true;
  121. displaySub = "none";
  122. displayBuy = Model.course.isLearn == "-1" ? "inherit" : "none";
  123. bought = Model.course.isLearn == "-1" ? false : true;
  124. displayReg = Session["isSub"] as string == "true" ? "none" : "inherit";
  125. }
  126. else
  127. {
  128. displayBuy = "none";
  129. displaySub = "none";
  130. displayReg = "inherit";
  131. }
  132. }
  133. <!-- Body -->
  134. <div class="main-body">
  135. <div class="main-body-container product-detail-container">
  136. <!-- Banner -->
  137. <div class="product-detail-banner">
  138. <img class="img-banner" alt="Prepare For National Exam" src="@Model.course.logoPath" />
  139. </div>
  140. <!-- Product detail body -->
  141. <div class="product-detail-body">
  142. <!-- Infor -->
  143. <div class="product-detail-infor">
  144. <div class="block-infor">
  145. <h2 class="infor-name">@Model.course.name</h2>
  146. <p class="infor-level">@Model.course.description</p>
  147. </div>
  148. <form class="block-button">
  149. @Html.AntiForgeryToken()
  150. <a href="javascript:void(0)" style="display: @displaySub" data-toggle="modal" data-target="#signup-dialog" class="button-renew" id="sign-up-button">
  151. @Lang.SignUp
  152. </a>
  153. @*<a class="button-ranking" style="display: @displayBuy"
  154. data-target="buycourse-dialog"
  155. onclick="BuyCourse(@Model.course.id.ToString());"
  156. href="#" id="buy-button">
  157. Buy
  158. (@Model.course.fee HTG)
  159. </a>*@
  160. @*<a id="buy-button" class="button-ranking" style="display: @displayBuy"
  161. data-toggle="modal"
  162. data-target="#buycourse-dialog"
  163. onclick="BuyCourse()"
  164. href="#">
  165. @Lang.Buy
  166. </a>*@
  167. @{
  168. if (msisdn != "false")
  169. {
  170. @*<a id="sub-button" class="button-renew btn-subscribe"
  171. style="display: @displayReg"
  172. href="#">
  173. @Lang.Subscriber
  174. </a>*@
  175. }
  176. else
  177. {
  178. <a class="button-renew"
  179. style="display: @displayReg"
  180. data-toggle="modal"
  181. data-target="#signup-dialog"
  182. href="#">
  183. @Lang.Subscriber
  184. </a>
  185. }
  186. }
  187. </form>
  188. <div class="clearfix"></div>
  189. <div class="product-tab-group">
  190. <a data-toggle="tab" id="product-tab-lesson" class="product-tab-lesson product-tab-active" href="#tab-lesson">@Lang.Lesson <span id="product-tab-lesson">@Model.course.listLesson.Count</span></a>
  191. <a data-toggle="tab" id="product-tab-intro" class="product-tab-intro" href="#tab-intro">@Lang.Introduction</a>
  192. </div>
  193. </div>
  194. <!-- Lesson -->
  195. <div class="tab-content">
  196. <div class="product-detail-lesson tab-pane fade in active" id="tab-lesson">
  197. <div class="row lesson-list">
  198. @for (int i = 0; i < Model.course.listLesson.Count; i++)
  199. {
  200. Lesson lesson = Model.course.listLesson[i];
  201. <div class="col-sm-6 col-md-6 col-lg-4 col-xl-3 lesson-item">
  202. <div style="max-width:200px;">
  203. <div class="lesson-image">
  204. <img src="@lesson.logoPath" alt="@lesson.name" alt="@lesson.name">
  205. </div>
  206. <p class="lesson-name">@lesson.name</p>
  207. @if (bought || (i == 0 && signup))
  208. {
  209. <a href="@Url.Action("Learning", controllerLearning, new { lessonId = lesson.id, lessonName = lesson.name })" class="lesson-button button-learn-now">
  210. @Lang.LearnNow
  211. </a>
  212. }
  213. else if (!signup)
  214. {
  215. <a href="#" class="lesson-button button-lock">
  216. @Lang.PleaseSignIn
  217. </a>
  218. }
  219. else
  220. {
  221. <a href="#" class="lesson-button button-lock">
  222. @Lang.Locked
  223. </a>
  224. }
  225. </div>
  226. </div>
  227. }
  228. </div>
  229. </div>
  230. <div class="product-detail-lesson tab-pane fade" id="tab-intro">
  231. @Html.Raw(Model.course.description)
  232. </div>
  233. </div>
  234. </div>
  235. </div>
  236. <div id="buycourse-dialog" class="modal fade signup" role="dialog">
  237. <div class="modal-dialog">
  238. <!-- Modal content-->
  239. <div class="modal-content">
  240. <a class="modal-button-close" href="javascript:void(0)" data-dismiss="modal"></a>
  241. @*<button type="button" class="close" data-dismiss="modal">&times;</button>*@
  242. <div class="modal-body">
  243. <div class="common-lesson-view-confirm">
  244. <div class="row">
  245. <div class="col-md-12 col-lg-6">
  246. <form class="body-box-modal">
  247. <h3 class="members-title"> <span class="login-title">@Lang.EnterOTP</span></h3>
  248. <hr />
  249. <div id="otp-result" class="text-red">@Lang.otpWasSent</div>
  250. <div style="position:relative;">
  251. <input id="otpData" class="input-area" type="password" placeholder="OTP" name="otp" />
  252. <div class="form-control-position icon-float-left" style=" top: 5px;">
  253. <i class="fa fa-2x fa-lock"></i>
  254. </div>
  255. </div>
  256. <a href="#" class="button btn-signup" onclick="ConfirmOtpClick()">@Lang.Confirm</a>
  257. <div style=" margin: 10px 0; margin-top: 50px;">
  258. <a class="des-a"><i class="fas fa-check-square"></i> @Lang.otpProblem </a><a class="link-button" onclick="ResentOtp(); return 0;">@Lang.resentOtp</a>
  259. </div>
  260. </form>
  261. @*<div class="common-lesson-view-sub-register-confirm-otp">
  262. <div class="wrap-confirm" style="position:relative;">
  263. <input id="otpSubData" class="input-area" type="text" placeholder="OTP" name="otp" />
  264. <div class="form-control-position icon-float-left" style=" top: -12px;">
  265. <i class="fa fa-2x fa-lock"></i>
  266. </div>
  267. <div style="text-align: center;display: inline-block; width:100%;">
  268. <a class="button button-dialog-signup-confirm btn-dialog-signup-confirm-register otpButton" href="#"
  269. onclick="SubConfirmOtpClick()">@Lang.Confirm</a>
  270. <a class="button button-dialog-signup-confirm btn-dialog-signup-confirm-register otpButton" href="#" style=" background: gray;"
  271. onclick="SubCancelOtpClick()">@Lang.Cancel</a>
  272. </div>
  273. </div>
  274. </div>*@
  275. </div>
  276. <div class="col-md-12 col-lg-6 d-sm-none image-box-area">
  277. <img class="image-area" src="~/Content/assets/imgs/img-home-02.png" alt="Image" />
  278. </div>
  279. </div>
  280. </div>
  281. @*<h4>@Lang.EnterOTP</h4>*@
  282. @*<div class="common-lesson-view-confirm-otp" style="width:100%;">
  283. <div class="wrap-confirm" style="position:relative;">
  284. <input id="otpData" class="input-area" type="text" placeholder="OTP" name="otp" />
  285. <div class="form-control-position icon-float-left" style=" top: -12px;">
  286. <i class="fa fa-2x fa-lock"></i>
  287. </div>
  288. <div style="text-align: center;display: inline-block; width:100%;">
  289. <a class="button button-dialog-signup-confirm btn-dialog-signup-confirm-register otpButton" href="#"
  290. onclick="ConfirmOtpClick()">@Lang.Confirm</a>
  291. <a class="button button-dialog-signup-confirm btn-dialog-signup-confirm-register otpButton" href="#" style="background: gray;"
  292. onclick="CancelOtpClick()">@Lang.Cancel</a>
  293. </div>
  294. </div>
  295. </div>*@
  296. </div>
  297. </div>
  298. </div>
  299. </div>
  300. </div>
  301. <script type="text/javascript" src="~/Content/assets/js/product-intro.js"></script>
  302. <script type="text/javascript">
  303. $('.product-tab-intro').click(function () {
  304. console.log("product-tab-intro click");
  305. document.getElementById('product-tab-intro').className += " product-tab-active";
  306. document.getElementById('product-tab-lesson').className -= " product-tab-active";
  307. })
  308. $('.product-tab-lesson').click(function () {
  309. console.log("product-tab-intro click");
  310. document.getElementById('product-tab-lesson').className += " product-tab-active";
  311. document.getElementById('product-tab-intro').className -= " product-tab-active";
  312. })
  313. function RenewCousre(courseId) {
  314. $.ajax({
  315. url: urlConfig("/Home/RenewCourse"),
  316. data: {
  317. __RequestVerificationToken: $('input[name=__RequestVerificationToken]').val(),
  318. courseId: courseId
  319. },
  320. type: "POST"
  321. }).success(function (data) {
  322. if (data.error_code != "0") {
  323. // success
  324. $('#message-dialog').modal('show');
  325. $('#message-content').html(data.error_content);
  326. } else {
  327. $('#message-dialog').modal('show');
  328. $('#message-content').html(data.error_content);
  329. //window.location.href = "/Voca/Lesson?courseId=" + courseId;
  330. }
  331. });
  332. };
  333. // buyCourse is only valid with existed user profile, user must login or signup before
  334. function BuyCourse() {
  335. console.log("BuyCourse");
  336. if (@msisdn != "false") {
  337. $.ajax({
  338. url: urlConfig("/Home/BuyCourse"),
  339. data: {
  340. __RequestVerificationToken: $('input[name=__RequestVerificationToken]').val(),
  341. courseId: @Model.course.id.ToString(),
  342. phone: @msisdn,
  343. courseChoose: 7
  344. },
  345. type: "POST"
  346. }).success(function (data) {
  347. if (data.error_code != "100") {
  348. // success
  349. $('#buycourse-dialog').modal('hide');
  350. $('#message-dialog').modal('show');
  351. $('#message-content').html(data.error_content);
  352. //document.getElementById('buy-button').style.display = "none";
  353. } else {
  354. // to test, bypass input otp
  355. //document.getElementById('buy-button').style.display = "none";
  356. $('.common-lesson-view-confirm-otp').css('display', 'block');
  357. }
  358. });
  359. } else {
  360. $('#message-dialog').modal('show');
  361. $('#message-content').html("@Lang.InvalidMsisdn");
  362. }
  363. }
  364. @*function BuyCourse() {
  365. console.log("BuyCourse")
  366. var phone = document.getElementById('phoneNumber').value;
  367. // check data input
  368. if (phone == null) {
  369. $('#message-dialog').modal('show');
  370. $('#message-content').html("Please check your input data");
  371. } else {
  372. $.ajax({
  373. url: urlConfig("/Home/BuyCourse"),
  374. data: {
  375. __RequestVerificationToken: $('input[name=__RequestVerificationToken]').val(),
  376. courseId: @Model.course.id.ToString(),
  377. phone: phone,
  378. courseChoose: 7
  379. },
  380. type: "POST"
  381. }).success(function (data) {
  382. if (data.error_code != "100") {
  383. // success
  384. $('#buycourse-dialog').hide();
  385. $('#message-dialog').modal('show');
  386. $('#message-content').html(data.error_content);
  387. document.getElementById('buy-button').css('display', 'none');
  388. } else {
  389. // to test, bypass input otp
  390. document.getElementById('buy-button').css('display', 'none');
  391. $('.common-lesson-view-confirm-otp').show();
  392. $('.phoneButton').hide();
  393. $('#phoneNumber').hide();
  394. //window.location.href = "/Voca/Lesson?courseId=" + courseId;
  395. }
  396. });
  397. }
  398. };*@
  399. function ConfirmOtpClick() {
  400. var otpConfirm = document.getElementById("otpData").value;
  401. if (otpConfirm == "") {
  402. $('#message-dialog').modal('show');
  403. $('#message-content').html("@ErrCode.WrongOTP");
  404. } else {
  405. $.ajax({
  406. url: urlConfig("/Home/BuyCourse"),
  407. data: {
  408. __RequestVerificationToken: $('input[name=__RequestVerificationToken]').val(),
  409. courseId: @Model.course.id.ToString(),
  410. phone: @msisdn,
  411. courseChoose: 7,
  412. otpConfirm: otpConfirm
  413. },
  414. type: "POST"
  415. }).success(function (data) {
  416. if (data.error_code != "0") {
  417. // success
  418. //$('#message-dialog').modal('show');
  419. //$('#message-content').html(data.error_content);
  420. $("#otp-result").html(data.error_content);
  421. } else {
  422. $('#buycourse-dialog').modal('hide');
  423. $('#message-dialog').modal('show');
  424. $('#message-content').html(data.error_content);
  425. $('#buy-button').css('display', 'none');
  426. }
  427. });
  428. }
  429. }
  430. function CancelOtpClick() {
  431. $('#buycourse-dialog').hide();
  432. Reload();
  433. }
  434. </script>