_ViewStart.cshtml 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869
  1. @{
  2. themeObj currentTheme = Context.Session.GetComplexData<themeObj>("currentTheme");
  3. if (currentTheme != null)
  4. {
  5. if (currentTheme.themeCode == "christmas")
  6. {
  7. Layout = "_LayoutChristmas";
  8. }
  9. else if (currentTheme.themeCode == "newyear")
  10. {
  11. Layout = "_LayoutNewyear";
  12. }
  13. else
  14. {
  15. Layout = "_Layout";
  16. }
  17. }
  18. else
  19. {
  20. Layout = "_Layout";
  21. }
  22. }
  23. <!-- Modal -->
  24. <div class="modal fade in" tabindex="-1" id="modalLogin">
  25. <div class="modal-dialog">
  26. <div class="modal-content">
  27. <div class="modal-header">
  28. <h5 class="modal-title f24 medium">@Lang.Login</h5>
  29. <button type="button" class="close" data-dismiss="modal" aria-label="Close">
  30. <span aria-hidden="true"><img src="~/image/btn-close.svg" alt="close"></span>
  31. </button>
  32. </div>
  33. <div class="modal-body">
  34. <form class="formstyle" id="form-login">
  35. <input type="hidden" id="loginRedirect" />
  36. <div class="form-group">
  37. <input type="text" class="form-control" placeholder="@Lang.PhoneNumber" id="loginform-username">
  38. <p class="invalid-feedback" id="usernameError"></p>
  39. </div>
  40. <div class="form-group">
  41. <input type="password" class="form-control" placeholder="@Lang.Password / @Lang.OtpCode" id="loginform-password">
  42. <p class="invalid-feedback" id="passwordError"></p>
  43. </div>
  44. <div class="form-group">
  45. <div class="d-flex mb-5">
  46. <a onclick="GetOtpLogin();" class="text-primary">@Lang.GetOtpCode</a>
  47. <a href="/Home/ForgotPassword" class="text-primary ml-auto">@Lang.ForgotPassword?</a>
  48. </div>
  49. </div>
  50. <div class="form-group">
  51. <a class="btn-blue btn-regis w-100 text-center heg42" id="btnLogin" onclick="Login();">@Lang.Login</a>
  52. </div>
  53. <div class="form-group">
  54. <p class="f14 text-center mt-5">
  55. @Lang.DontHaveAccount
  56. <a href="/Home/RegisterAccount" class="text-primary ml-3 under">
  57. <b>
  58. @Lang.RegisterNow
  59. </b>
  60. </a>
  61. </p>
  62. </div>
  63. </form>
  64. </div>
  65. </div>
  66. </div>
  67. </div>
  68. <!-- Modal confirm -->
  69. <div class="modal fade in" tabindex="-1" id="modalConfirm" aria-hidden="true">
  70. <div class="modal-dialog">
  71. <div class="modal-content">
  72. <div class="modal-header">
  73. <h5 class="modal-title f24 medium">@Lang.Confirm</h5>
  74. <button type="button" class="close" data-dismiss="modal" aria-label="Close">
  75. <span aria-hidden="true"><img src="/image/btn-close.svg" alt="close"></span>
  76. </button>
  77. </div>
  78. <div class="modal-body">
  79. <form class="formstyle">
  80. <p class="f14 text-center mb-4" id="message-confirm"></p>
  81. <input type="hidden" id="confirm-id" />
  82. <div class="form-group">
  83. <a onclick="RegisterService();" id="btnConfirm" class="btn-blue btn-regis w-100 text-center heg42">@Lang.Register</a>
  84. </div>
  85. </form>
  86. </div>
  87. </div>
  88. </div>
  89. </div>
  90. @*<div class="modal fade" id="modalConfirm" role="dialog">
  91. <div class="modal-dialog " role="document">
  92. <div class="modal-content">
  93. <div class="modal-header">
  94. <button type="button" class="close" data-dismiss="modal">&times;</button>
  95. <h5 class="modal-title f24 medium">@Lang.Confirm</h5>
  96. </div>
  97. <div class="modal-body">
  98. <div class="boxformdn">
  99. <form>
  100. <input type="hidden" id="confirm-id" />
  101. <p class="ttcheck" id="message-confirm"></p>
  102. <a class="btn-blue btn-regis w-100 text-center heg42 btnConfirm" onclick="RegisterService();" id="btnConfirm">@Lang.Register</a>
  103. </form>
  104. </div>
  105. </div>
  106. </div>
  107. </div>
  108. </div>*@
  109. <div class="modal fade in" tabindex="-1" id="modalConfirmPoint" aria-hidden="true">
  110. <div class="modal-dialog">
  111. <div class="modal-content">
  112. <div class="modal-header">
  113. <h5 class="modal-title f20 medium text-left m-0">@Lang.ConfirmExchangePoint</h5>
  114. <button type="button" class="close" data-dismiss="modal" aria-label="Close">
  115. <span aria-hidden="true"><img src="/image/btn-close.svg" alt="close"></span>
  116. </button>
  117. </div>
  118. <div class="modal-body">
  119. <p class="text-center mb-4"><img src="/image/gif.svg" alt="gif"></p>
  120. <p class="f18 clblue text-center"><b class="txtPointChange">60</b> @Lang.points <b class="txtChangeValue">= 10 SMS </b></p>
  121. <p class="mt-5">
  122. <a class="btn-blue btn-regis w-100 text-center heg42" id="btn-confirm">@Lang.Confirm</a>
  123. </p>
  124. </div>
  125. </div>
  126. </div>
  127. </div>
  128. <!-- Modal success -->
  129. <div class="modal fade in" tabindex="-1" id="modalSuccess" aria-hidden="true">
  130. <div class="modal-dialog">
  131. <div class="modal-content">
  132. <div class="modal-header">
  133. <h5 class="modal-title f24 medium">@Lang.Success</h5>
  134. <button type="button" class="close" data-dismiss="modal" aria-label="Close">
  135. <span aria-hidden="true"><img src="~/image/btn-close.svg" alt="close"></span>
  136. </button>
  137. </div>
  138. <div class="modal-body">
  139. <p class="f14 mb-4 text-center mb-5"><img src="~/image/check-big.svg" alt="check"></p>
  140. <p class=" mb-5 f14 text-center" id="message-success"></p>
  141. <p><a class="btn-blue btn-regis w-100 text-center heg42 btnAccept" id="btnAccept">@Lang.Accept</a></p>
  142. </div>
  143. </div>
  144. </div>
  145. </div>
  146. <!-- Modal failure-->
  147. <div class="modal fade in" tabindex="-1" id="modalFail" aria-hidden="true">
  148. <div class="modal-dialog">
  149. <div class="modal-content">
  150. <div class="modal-header">
  151. <h5 class="modal-title f24 medium">@Lang.Failure</h5>
  152. <button type="button" class="close" data-dismiss="modal" aria-label="Close">
  153. <span aria-hidden="true"><img src="~/image/btn-close.svg" alt="close"></span>
  154. </button>
  155. </div>
  156. <div class="modal-body">
  157. <p class="f14 mb-4 text-center mb-5"><img src="~/image/failed.svg" alt="failed"> </p>
  158. <p class="mb-4 f14 text-center" id="message-error">
  159. </p>
  160. <p><a class="btn-blue btn-regis w-100 text-center heg42" data-dismiss="modal">@Lang.Close</a></p>
  161. </div>
  162. </div>
  163. </div>
  164. </div>
  165. <!-- Modal Recharge -->
  166. <div class="modal fade in" tabindex="-1" id="Recharge" aria-hidden="true">
  167. <div class="modal-dialog">
  168. <div class="modal-content">
  169. <div class="modal-header">
  170. <h5 class="modal-title f24 medium">@Lang.Recharge</h5>
  171. <button type="button" class="close" data-dismiss="modal" aria-label="Close">
  172. <span aria-hidden="true"><img src="/image/btn-close.svg" alt="close"></span>
  173. </button>
  174. </div>
  175. <div class="modal-body">
  176. <form class="formstyle">
  177. <div class="form-group">
  178. <input type="text" class="form-control" placeholder="@Lang.PhoneNumber" id="phoneNumber" value="">
  179. <p class="invalid-feedback" id="recharge-phoneNumberError"></p>
  180. </div>
  181. <div class="form-group">
  182. @*<div class="d-flex">*@
  183. <input class="form-control" type="text" placeholder="@Lang.EnterScratchCode" id="scratchCode">
  184. @*<div class="borderstyle ml-2"> <img src="/image/qrcode.svg"></div>*@
  185. <p class="invalid-feedback" id="recharge-scratchCodeError"></p>
  186. @*</div>*@
  187. </div>
  188. <div class="form-group">
  189. <div class="d-flex align-items-center">
  190. @*<input class="form-control" type="text" placeholder="Security code*"
  191. style="width: 160px;">
  192. <img src="/image/qr.png" class="ml-2">
  193. <a href="#" class="ml-2">
  194. <img src="/image/refresh.svg">
  195. </a>*@
  196. <div id="captcha-signup"></div>
  197. </div>
  198. </div>
  199. <div class="form-group">
  200. <a class="btn-blue btn-regis w-100 text-center heg42" onclick="recharge();" id="btn-recharge">@Lang.Recharge</a>
  201. </div>
  202. <div class="form-group">
  203. <em class="f14"> (*) is required.</em>
  204. </div>
  205. <div class="form-group">
  206. <div class="lineOr">
  207. <span>@Lang.OR</span>
  208. </div>
  209. </div>
  210. <div class="form-group">
  211. <a href="https://mosan.telemor.tl/" class=" btn-discount">
  212. @Lang.MosanDiscount <img src="/image/osan.svg" class="ml-2" alt="mosan">
  213. <img src="/image/dot-next-yellow.svg" class="ml-2">
  214. </a>
  215. </div>
  216. </form>
  217. </div>
  218. </div>
  219. </div>
  220. </div>
  221. <!-- end -->
  222. <script src="~/js/jquery-3.3.1.js"></script>
  223. <script src="~/js/bootstrap.min.js"></script>
  224. <script src="~/js/script-menu.js"></script>
  225. <script src="~/js/spin.js"></script>
  226. <script src="~/assets\vendor\waypoints\jquery.waypoints.min.js"></script>
  227. <script src="~/assets\vendor\isotope-layout\isotope.pkgd.min.js"></script>
  228. <script src="~/assets\vendor\owl.carousel\owl.carousel.min.js"></script>
  229. <script src="~/assets\vendor\aos\aos.js"></script>
  230. <script src="~/assets\js\main.js"></script>
  231. <script>
  232. function hideElement(modalName) {
  233. $("#" + modalName).hide();
  234. }
  235. function showElement(modalName) {
  236. $("#" + modalName).show();
  237. }
  238. function hideModal(modalName) {
  239. $("#" + modalName).modal('hide');
  240. }
  241. function showModal(modalName, button) {
  242. if (button) {
  243. $(".btnAccept").show();
  244. $(".btnAccept").html(button);
  245. } else {
  246. $(".btnAccept").hide();
  247. }
  248. $("#" + modalName).modal('show');
  249. }
  250. var opts = {
  251. lines: 8, // The number of lines to draw
  252. length: 5, // The length of each line
  253. width: 3, // The line thickness
  254. radius: 5, // The radius of the inner circle
  255. scale: 1, // Scales overall size of the spinner
  256. corners: 1, // Corner roundness (0..1)
  257. color: '#ffffff', // CSS color or array of colors
  258. fadeColor: 'transparent', // CSS color or array of colors
  259. speed: 1, // Rounds per second
  260. rotate: 0, // The rotation offset
  261. animation: 'spinner-line-fade-quick', // The CSS animation name for the lines
  262. direction: 1, // 1: clockwise, -1: counterclockwise
  263. zIndex: 2e9, // The z-index (defaults to 2000000000)
  264. className: 'spinner', // The CSS class to assign to the spinner
  265. //top: '50%', // Top position relative to parent
  266. //left: '50%', // Left position relative to parent
  267. shadow: '0 0 1px transparent', // Box-shadow for the lines
  268. //position: 'absolute' // Element positioning
  269. };
  270. var spinner = new Spinner(opts);
  271. function startSpinner(obj) {
  272. var target = document.getElementById(obj);
  273. $("#" + obj).prop("disabled", true);
  274. $("#" + obj).bind('click', function (e) {
  275. e.preventDefault();
  276. });
  277. spinner.spin(target);
  278. }
  279. function stopSpinner(obj) {
  280. $("#" + obj).prop("disabled", false);
  281. $("#" + obj).unbind('click');
  282. if (spinner != undefined) {
  283. spinner.stop();
  284. }
  285. }
  286. </script>
  287. <script>
  288. $("#form-login").keypress(function (e) {
  289. if (e.key === "Enter") {
  290. // Cancel the default action, if needed
  291. e.preventDefault();
  292. // Trigger the button element with a click
  293. Login();
  294. }
  295. });
  296. function Login() {
  297. var phoneNumber = $('#loginform-username').val();
  298. var password = $('#loginform-password').val();
  299. var href = $("#loginRedirect").val();
  300. console.log("Login " + phoneNumber);
  301. if (!phoneNumber || phoneNumber == "") {
  302. $("#usernameError").html("@Lang.AccountRequired");
  303. $("#usernameError").show();
  304. $('#loginform-username').addClass("is-invalid");
  305. return;
  306. }
  307. if (!password || password == "") {
  308. $("#passwordError").html("@Lang.PasswordRequired");
  309. $("#passwordError").show();
  310. $('#loginform-password').addClass("is-invalid");
  311. return;
  312. }
  313. startSpinner("btnLogin");
  314. $.ajax({
  315. url: "/Subscriber/LoginAction",
  316. beforeSend: function (request) {
  317. request.setRequestHeader("RequestVerificationToken", $("[name='__RequestVerificationToken']").val());
  318. },
  319. data: {
  320. __RequestVerificationToken: $('input[name=__RequestVerificationToken]').val(),
  321. msisdn: phoneNumber,
  322. password: password
  323. },
  324. type: "POST",
  325. success: function (data) {
  326. stopSpinner("btnLogin");
  327. console.log(data);
  328. if (data.error_code != "0") {
  329. console.log(data.error_content);
  330. hideModal("modalLogin");
  331. showModal("modalFail");
  332. // fail
  333. $('#message-error').html(data.error_content);
  334. } else {
  335. console.log(data.msisdn);
  336. hideModal("modalLogin");
  337. location.href = href;
  338. }
  339. },
  340. error: function (xhr, status, e) {
  341. stopSpinner("btnLogin");
  342. console.log(xhr);
  343. console.log(status);
  344. console.log(e);
  345. }
  346. })
  347. };
  348. function RegisterAcount() {
  349. var phoneNumber = $('#username').val();
  350. var password = $('#registerform-password').val();
  351. var confirmpassword = $('#registerform-confirmpassword').val();
  352. var otpCode = $('#registerform-otpcode').val();
  353. console.log("Register " + phoneNumber);
  354. // validate
  355. if (!phoneNumber || phoneNumber == "") {
  356. $("#registerform-usernameError").html("@Lang.AccountRequired");
  357. $("#registerform-usernameError").show();
  358. $('#username').addClass("is-invalid");
  359. return;
  360. }
  361. if (!otpCode || otpCode == "") {
  362. $("#registerform-otpError").html("@Lang.OTPRequired");
  363. $("#registerform-otpError").show();
  364. $('#registerform-otpcode').addClass("is-invalid");
  365. return;
  366. }
  367. if (!password || password == "") {
  368. $("#registerform-passwordError").html("@Lang.PasswordRequired");
  369. $("#registerform-passwordError").show();
  370. $('#registerform-password').addClass("is-invalid");
  371. return;
  372. }
  373. if (!confirmpassword || confirmpassword == "") {
  374. $("#registerform-confirmpasswordError").html("@Lang.ConfirmPasswordRequired");
  375. $("#registerform-confirmpasswordError").show();
  376. $('#registerform-confirmpassword').addClass("is-invalid");
  377. return;
  378. }
  379. if (password.length <= 8) {
  380. $("#registerform-passwordError").html("@Lang.PasswordInvalid");
  381. $("#registerform-passwordError").show();
  382. $('#registerform-password').addClass("is-invalid");
  383. return;
  384. }
  385. if (password != confirmpassword) {
  386. $("#registerform-confirmpasswordError").html("@Lang.PasswordNotMatched");
  387. $("#registerform-confirmpasswordError").show();
  388. $('#registerform-confirmpassword').addClass("is-invalid");
  389. return;
  390. }
  391. $.ajax({
  392. url: "/Subscriber/RegisterAccountAction",
  393. data: {
  394. __RequestVerificationToken: $('input[name=__RequestVerificationToken]').val(),
  395. msisdn: phoneNumber,
  396. password: password,
  397. otp: otpCode
  398. },
  399. type: "POST",
  400. success: function (data) {
  401. console.log(data);
  402. if (data.error_code != "0") {
  403. console.log(data.error_content);
  404. showModal("modalFail");
  405. // fail
  406. $('#message-error').html(data.error_content);
  407. if (data.error_code == "5") {
  408. // already existed -> show login
  409. $('#message-error').append("<br />" + "@Lang.WouldYouLike <a class='login-dialog' onclick='loginDialog();'><b>" + "@Lang.Login" +"<b> ?</a>");
  410. }
  411. } else {
  412. console.log(data.msisdn);
  413. $('#message-success').html(data.error_content);
  414. showModal("modalSuccess", "Login");
  415. $(".btnAccept").click(function () {
  416. $("#modalLogin").modal({ backdrop: 'static', keyboard: false });
  417. hideModal("modalSuccess");
  418. });
  419. }
  420. }
  421. })
  422. };
  423. function ResetPassword() {
  424. var phoneNumber = $('#username').val();
  425. var password = $('#forgotform-password').val();
  426. var confirmpassword = $('#forgotform-confirmpassword').val();
  427. var otpCode = $('#forgotform-otpcode').val();
  428. console.log("Reset Password " + phoneNumber);
  429. // validate
  430. // validate
  431. if (!phoneNumber || phoneNumber == "") {
  432. $("#forgotform-usernameError").html("@Lang.AccountRequired");
  433. $("#forgotform-usernameError").show();
  434. $('#username').addClass("is-invalid");
  435. return;
  436. }
  437. if (!otpCode || otpCode == "") {
  438. $("#forgotform-otpError").html("@Lang.OTPRequired");
  439. $("#forgotform-otpError").show();
  440. $('#forgotform-otpcode').addClass("is-invalid");
  441. return;
  442. }
  443. if (!password || password == "") {
  444. $("#forgotform-passwordError").html("@Lang.PasswordRequired");
  445. $("#forgotform-passwordError").show();
  446. $('#forgotform-password').addClass("is-invalid");
  447. return;
  448. }
  449. if (!confirmpassword || confirmpassword == "") {
  450. $("#forgotform-confirmpasswordError").html("@Lang.ConfirmPasswordRequired");
  451. $("#forgotform-confirmpasswordError").show();
  452. $('#forgotform-confirmpassword').addClass("is-invalid");
  453. return;
  454. }
  455. if (password.length <= 8) {
  456. $("#forgotform-passwordError").html("@Lang.PasswordInvalid");
  457. $("#forgotform-passwordError").show();
  458. $('#forgotform-password').addClass("is-invalid");
  459. return;
  460. }
  461. if (password != confirmpassword) {
  462. $("#forgotform-confirmpasswordError").html("@Lang.PasswordNotMatched");
  463. $("#forgotform-confirmpasswordError").show();
  464. $('#forgotform-confirmpassword').addClass("is-invalid");
  465. return;
  466. }
  467. $.ajax({
  468. url: "/Subscriber/ResetPasswordAction",
  469. data: {
  470. __RequestVerificationToken: $('input[name=__RequestVerificationToken]').val(),
  471. msisdn: phoneNumber,
  472. password: password,
  473. otp: otpCode
  474. },
  475. type: "POST",
  476. success: function (data) {
  477. console.log(data);
  478. if (data.error_code != "0") {
  479. console.log(data.error_content);
  480. showModal("modalFail");
  481. // fail
  482. $('#message-error').html(data.error_content);
  483. } else {
  484. console.log(data.msisdn);
  485. $('#message-success').html(data.error_content);
  486. showModal("modalSuccess", "Login");
  487. $(".btnAccept").click(function () {
  488. $("#modalLogin").modal({ backdrop: 'static', keyboard: false });
  489. hideModal("modalSuccess");
  490. });
  491. }
  492. }
  493. })
  494. };
  495. function GetOtpLogin() {
  496. var phoneNumber = $('#loginform-username').val();
  497. if (!phoneNumber || phoneNumber == "") {
  498. $("#usernameError").html("@Lang.AccountRequired");
  499. $("#usernameError").show();
  500. $('#loginform-username').addClass("is-invalid");
  501. return;
  502. }
  503. $.ajax({
  504. url: "/Subscriber/GetOtpAction",
  505. data: {
  506. __RequestVerificationToken: $('input[name=__RequestVerificationToken]').val(),
  507. msisdn: phoneNumber,
  508. action: '@ActionType.LOGIN'
  509. },
  510. type: "POST",
  511. success: function (data) {
  512. console.log(data);
  513. if (data.error_code != "0") {
  514. console.log(data.error_content);
  515. hideModal("modalLogin");
  516. showModal("modalFail");
  517. // fail
  518. $('#message-error').html(data.error_content);
  519. } else {
  520. console.log(data.msisdn);
  521. $('#message-success').html(data.error_content);
  522. showModal("modalSuccess");
  523. //hideModal("modalLogin");
  524. }
  525. }
  526. })
  527. }
  528. function GetOtp(actionType) {
  529. var phoneNumber = $('#username').val();
  530. if (!phoneNumber || phoneNumber == "") {
  531. if (actionType == @ActionType.FORGOT_PASSWORD) {
  532. $("#forgotform-usernameError").html("@Lang.AccountRequired");
  533. $("#forgotform-usernameError").show();
  534. $('#username').addClass("is-invalid");
  535. } else {
  536. $("#registerform-usernameError").html("@Lang.AccountRequired");
  537. $("#registerform-usernameError").show();
  538. $('#username').addClass("is-invalid");
  539. }
  540. return;
  541. }
  542. console.log("GetOtp " + phoneNumber);
  543. $.ajax({
  544. url: "/Subscriber/GetOtpAction",
  545. data: {
  546. __RequestVerificationToken: $('input[name=__RequestVerificationToken]').val(),
  547. msisdn: phoneNumber,
  548. action: actionType
  549. },
  550. type: "POST",
  551. success: function (data) {
  552. console.log(data);
  553. if (data.error_code != "0") {
  554. console.log(data.error_content);
  555. showModal("modalFail");
  556. // fail
  557. $('#message-error').html(data.error_content);
  558. if (data.error_code == "5") {
  559. // already existed -> show login
  560. $('#message-error').append("<br />" + "@Lang.WouldYouLike <a class='login-dialog' onclick='loginDialog();'><b>" + "@Lang.Login" +"<b> ?</a>");
  561. }
  562. } else {
  563. console.log(data.msisdn);
  564. $('#message-success').html(data.error_content);
  565. showModal("modalSuccess");
  566. }
  567. }
  568. })
  569. };
  570. //$(".register-service").click(function () {
  571. // var msisdn = $("#msisdn").val();
  572. // if (msisdn == null || msisdn == "") {
  573. // showModal("modalLogin");
  574. // return;
  575. // }
  576. // var id = $(this).data("bind");
  577. // $("#confirm-id").val(id);
  578. // $("#message-confirm").html("Are you sure want to register this package?");
  579. // showModal("modalConfirm");
  580. //});
  581. function RegisterVas() {
  582. var msisdn = $("#msisdn").val();
  583. if (msisdn == null || msisdn == "") {
  584. $("#loginRedirect").val(location.href);
  585. showModal("modalLogin");
  586. return;
  587. }
  588. var id = $("input[type='radio'][name='vas-package']:checked").val();
  589. var packgId = $("input[type='radio'][name='vas-package']:checked").attr("packg");
  590. $("#confirm-id").val(id + "-" + packgId);
  591. $("#message-confirm").html("@Lang.ConfirmRegister");
  592. showModal("modalConfirm");
  593. }
  594. function RegisterDialog(id) {
  595. var msisdn = $("#msisdn").val();
  596. if (msisdn == null || msisdn == "") {
  597. $("#loginRedirect").val(location.href);
  598. showModal("modalLogin");
  599. return;
  600. }
  601. //var id = $(this).data("bind");
  602. $("#confirm-id").val(id);
  603. $("#message-confirm").html("@Lang.ConfirmRegister");
  604. showModal("modalConfirm");
  605. }
  606. function RegisterService() {
  607. var productId = $('#confirm-id').val();
  608. console.log("Register service " + productId);
  609. startSpinner("btnConfirm");
  610. $.ajax({
  611. url: "/Home/RegisterServiceAction",
  612. data: {
  613. __RequestVerificationToken: $('input[name=__RequestVerificationToken]').val(),
  614. productId: productId
  615. },
  616. type: "POST",
  617. success: function (data) {
  618. console.log(data);
  619. stopSpinner("btnConfirm");
  620. hideModal("modalConfirm");
  621. if (data.error_code != "0") {
  622. console.log(data.error_content);
  623. showModal("modalFail");
  624. $('#message-error').html('@Lang.RegisterError');
  625. } else {
  626. console.log(data.msisdn);
  627. $('#message-success').html('@Lang.RegisterSuccess');
  628. showModal("modalSuccess");
  629. }
  630. },
  631. error: function (e) {
  632. hideModal("modalConfirm");
  633. showModal("modalFail");
  634. $('#message-error').html('@Lang.RegisterError');
  635. stopSpinner("btnConfirm");
  636. }
  637. })
  638. };
  639. $(document).ready(function () {
  640. $(".btn-success").click(function (e) {
  641. e.preventDefault();
  642. var key = $(this).prev().val();
  643. // check keyword length
  644. if (key.length < 2) {
  645. showModal("modalFail");
  646. $('#message-error').html('@Lang.KeyWordLengthMin');
  647. return;
  648. } else {
  649. window.location.href = "/CustomerCare/Search?keywords=" + key;
  650. }
  651. });
  652. });
  653. </script>
  654. <script>
  655. window.mobileCheck = function () {
  656. let check = false;
  657. (function (a) { if (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0, 4))) check = true; })(navigator.userAgent || navigator.vendor || window.opera);
  658. return check;
  659. };
  660. function getMobileOperatingSystem() {
  661. var userAgent = navigator.userAgent || navigator.vendor || window.opera;
  662. // Windows Phone must come first because its UA also contains "Android"
  663. if (/windows phone/i.test(userAgent)) {
  664. return "Windows Phone";
  665. }
  666. if (/android/i.test(userAgent)) {
  667. return "Android";
  668. }
  669. // iOS detection from: http://stackoverflow.com/a/9039885/177710
  670. if (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream) {
  671. return "iOS";
  672. }
  673. return "unknown";
  674. }
  675. $(document).ready(function () {
  676. if (mobileCheck()) {
  677. console.log("is mobile");
  678. if (getMobileOperatingSystem() == "iOS") {
  679. $("#fb-link").attr("href", "fb://profile/224491271057409");
  680. } else {
  681. $("#fb-link").attr("href", "fb://page/224491271057409");
  682. }
  683. }
  684. });
  685. </script>
  686. <script type="text/javascript">
  687. //function loadJsAsync(src, callback) {
  688. // var s = document.createElement('script');
  689. // s.type = "text/javascript";
  690. // s.src = src;
  691. // s.addEventListener('load', function (e) { callback(null, e); }, false);
  692. // var head = document.getElementsByTagName('head')[0];
  693. // head.appendChild(s);
  694. //}
  695. //window.onload = function () {
  696. // loadJsAsync('https://myccpublic.telemor.tl/assets//js/IpccChat.js', function () {
  697. // var IpccChat = {
  698. // domain: 'd58b7098-6974-4b4e-b1bb-6629fce14182',
  699. // username: '', url: 'https://myccpublic.telemor.tl/'
  700. // };
  701. // embedIpccChat(IpccChat);
  702. // })
  703. //};
  704. //function loadChat() {
  705. // loadJsAsync('https://myccpublic.telemor.tl/assets//js/IpccChat.js', function () {
  706. // var IpccChat = {
  707. // domain: 'd58b7098-6974-4b4e-b1bb-6629fce14182',
  708. // username: '', url: 'https://myccpublic.telemor.tl/'
  709. // };
  710. // embedIpccChat(IpccChat);
  711. // })
  712. //};
  713. </script>
  714. <script>
  715. var updating = false;
  716. function recharge() {
  717. if (updating) {
  718. return;
  719. }
  720. console.log("recharge");
  721. var token = $('input[name=__RequestVerificationToken]').val();
  722. var msisdn = $('#phoneNumber').val();
  723. var code = $('#scratchCode').val();
  724. // validate
  725. if (!msisdn || msisdn == "") {
  726. $("#recharge-phoneNumberError").html("@Lang.PhonenumberRequired");
  727. $("#recharge-phoneNumberError").show();
  728. $('#phoneNumber').addClass("is-invalid");
  729. return;
  730. }
  731. if (!code || code == "") {
  732. $("#recharge-scratchCodeError").html("@Lang.ScratchCodeRequired");
  733. $("#recharge-scratchCodeError").show();
  734. $('#scratchCode').addClass("is-invalid");
  735. return;
  736. }
  737. //$("#btn-recharge").prop('disabled', true);
  738. startSpinner("btn-recharge");
  739. updating = true;
  740. var formData = new FormData();
  741. formData.append('__RequestVerificationToken', token);
  742. formData.append('msisdn', msisdn);
  743. formData.append('code', code);
  744. formData.append('captcharesponse', grecaptcha.getResponse(widgetId1));
  745. $.ajax({
  746. type: "POST",
  747. url: ("/Subscriber/RechargeScratch"),
  748. headers: { 'RequestVerificationToken': token },
  749. data: formData,
  750. contentType: false,
  751. processData: false,
  752. success: function (result) {
  753. updating = false;
  754. grecaptcha.reset(widgetId1);
  755. //$("#btn-recharge").prop('disabled', false);
  756. stopSpinner("btn-recharge");
  757. console.log(result);
  758. hideModal("Recharge");
  759. $("#scratchCode").val("");
  760. if (result.error == '0') {
  761. $('#message-success').html(result.content);
  762. showModal("modalSuccess");
  763. } else {
  764. showModal("modalFail");
  765. $('#message-error').html(result.content);
  766. }
  767. },
  768. error: function (err) {
  769. updating = false;
  770. $("#scratchCode").val("");
  771. grecaptcha.reset(widgetId1);
  772. //$("#btn-recharge").prop('disabled', false);
  773. stopSpinner("btn-recharge");
  774. hideModal("Recharge");
  775. showModal("modalFail");
  776. $('#message-error').html(err.statusText);
  777. }
  778. });
  779. }
  780. </script>