LessonView.cshtml 21 KB

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