Built files from Bizgaze WebServer
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

signup.js 21KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311
  1. var Unibase;
  2. (function (Unibase) {
  3. let Themes;
  4. (function (Themes) {
  5. let Compact;
  6. (function (Compact) {
  7. let Components;
  8. (function (Components) {
  9. class Signup extends Unibase.Platform.Core.BaseComponent {
  10. jsFiles() {
  11. return ["tenants/themes/compact/index.anonymous.js", "platform/membership/managers/accountmanager.js", "libs/passwordrequirement/passwordrequirement.js"];
  12. }
  13. cssFiles() {
  14. return ["libs/passwordrequirement/passwordrequirement.css"];
  15. }
  16. html(id, containerid) {
  17. if (jQuery("#external-form").length === 0) {
  18. var index = new Components.Index_Anonymous();
  19. index.init(null);
  20. }
  21. const html = `<div><form id="frm_Signup" default="" data-validate="parsley" data-isdynamic="false"><h1 class="display-4 mb-10 ml-10 mr-10">Sign up for free</h1><p class="mb-30 ml-10 mr-10">Create your account and start your free trial today</p><div><div id="div_ValidationSummary" class="clear ml-20 mr-20"></div><div class="form-row"><div class="col-md-6 form-group"><input class="form-control required" id="txt_FirstName" placeholder="First name" value="" type="text" required></div><div class="col-md-6 form-group"><input class="form-control required" id="txt_LastName" placeholder="Last name" value="" type="text" required></div></div><div class="form-group"><input class="form-control required" maxlength="10" id="txt_PhoneNum" placeholder="Mobile" type="tel" required></div><div class="form-group"><input class="form-control required" id="txt_Email" placeholder="Email" type="text" required></div><div class="form-group"><input class="form-control required pr-password " id="txt_Password" placeholder="Password" type="password" autocomplete="new-password" required><span toggle="#txt_Password" id="passwordHide" class="fa fa-eye-slash font-15 mr-10 field-icon"/></span><div class="showpwsdreq"></div></div><div class="form-group"><input class="form-control required" id="txt_ConfirmPassword" placeholder="Confirm Password" type="password" autocomplete="new-password" required><span toggle="#txtConfirmPassword" id="confirmPasswordHide" class="fa fa-eye-slash font-15 mr-10 field-icon"/></div><div class="form-row"><div class="col-md-6 form-group"><input class="form-control required" id="txt_TenantName" placeholder="Tenant Name" type="text" required></div>
  22. <div class=" col-md-6 form-group " id="div_Industry"><select id="ddl_Industry" class="form-control value-control" data-isdynamic="false"></select><input class="form-control" id="txt_IndustryName" placeholder="Industry Name" type="text" class="hidden"></div>
  23. </div></div><div class="custom-control custom-checkbox mb-25 ml-10 mr-10"><input class="custom-control-input" id="chk_ReadTerms" type="checkbox"><label class="custom-control-label font-14" for="chk_ReadTerms">I have read and agree to the <a href=""><u>term and conditions</u></a></label></div><div class="ml-10 mr-10 mb-25 text-center"><a class="btn btn-primary btn-block text-white disabled" id="btn_Register">Register</a><div class="option-sep">or</div><p class="text-center">Already have an account?<a href="index.html#/login">Sign In</a></p></div></form><div id="modal_Otp" class="modal fade hide"><div class="modal-dialog"><div class="modal-content"><div class="modal-header mt-2 mb-2"><h5 class="modal-title pull-left">Mobile or Email Verification</h5><button type="button" class="close pull-right" data-dismiss="modal" aria-hidden="true" >&times;</button></div><div class="modal-body" id="div_modalbody"><div class="mb-10"><p class="lbl_Otp">We have sent OTP on your Mobile Number and Email!</p></div><div class="floating-label-form-group mb-2"><input class="form-control" id ="txt_Otp" placeholder="Enter Mobile OTP/Email OTP" type="text"></div></div><div class="modal-footer mb-2" style="display:block"><button type = "button" class="btn btn-primary pull-left" id="btn_ResendOtp">Resend</button><button type = "button" class="btn btn-primary pull-right" id="btn_VerifyOtp">Verify</button></div></div></div></div></div>`;
  24. return html;
  25. }
  26. load(id, containerid, callback) {
  27. $(".pr-password").click(function () {
  28. var signUpPswd = $(".pr-password");
  29. signUpPswd.passwordRequirements({
  30. numCharacters: 8,
  31. useLowercase: true,
  32. useUppercase: true,
  33. useNumbers: true,
  34. useSpecial: true
  35. });
  36. });
  37. this._accountManager = Unibase.Platform.Membership.Managers.AccountManager.Instance();
  38. var instance = this;
  39. instance.loadIndustries();
  40. jQuery(".preloader-it").delay(500).fadeOut("slow");
  41. jQuery("#external-container").delay(500).fadeIn("slow");
  42. jQuery("#bizgaze_body").css("background-color", "#f4f6f7");
  43. $("#div_modalbody").removeAttr("style");
  44. $('#chk_ReadTerms').change(function () {
  45. if ($(this).prop("checked"))
  46. $("#btn_Register").removeClass('disabled');
  47. else
  48. $("#btn_Register").addClass('disabled');
  49. });
  50. $('#passwordHide').click(function () {
  51. var input = $('#txt_Password');
  52. input.attr('type') == "password" ? input.attr('type', 'text') : input.attr('type', 'password');
  53. $('#passwordHide').toggleClass('fa-eye-slash fa-eye');
  54. });
  55. $('#confirmPasswordHide').click(function () {
  56. var input = $('#txt_ConfirmPassword');
  57. input.attr('type') == "password" ? input.attr('type', 'text') : input.attr('type', 'password');
  58. $('#confirmPasswordHide').toggleClass('fa-eye-slash fa-eye');
  59. });
  60. $("#txt_Otp").keypress(function (e) {
  61. if (e.which == 13)
  62. document.getElementById("btn_VerifyOtp").click();
  63. });
  64. $("#txt_PhoneNum").keypress(function (e) {
  65. if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) {
  66. MessageHelper.Instance().showError("Numbers only allowed", "div_ValidationSummary");
  67. return false;
  68. }
  69. });
  70. $("#btn_Register").click(function () {
  71. instance.validate();
  72. });
  73. $("#btn_VerifyOtp").click(function () {
  74. instance.verifyOtp();
  75. });
  76. $("#btn_ResendOtp").click(function () {
  77. instance.sendOtp(instance.OtpId);
  78. });
  79. }
  80. loadIndustries() {
  81. var instance = this;
  82. this._accountManager.getIndustries().then(function (response) {
  83. if (response.result.length > 0) {
  84. $('#ddl_Industry').removeClass("hidden");
  85. $('#txt_IndustryName').addClass("hidden");
  86. let cmbLob = document.getElementById('ddl_Industry');
  87. $('#ddl_Industry').empty();
  88. $('#ddl_Industry').append('<option value=0>Select Industry</option>');
  89. instance.IndustryLength = response.result.length;
  90. for (var i = 0; i < response.result.length; i++) {
  91. var data = response.result[i];
  92. var opt = document.createElement("option");
  93. var Name = data.industryName;
  94. var id = data.industryId + "|" + data.industryTenantId + "|" + data.isDefaultData;
  95. opt.text = Name;
  96. opt.value = id;
  97. cmbLob.append(opt);
  98. }
  99. }
  100. else {
  101. $('#ddl_Industry').addClass("hidden");
  102. $('#txt_IndustryName').removeClass("hidden");
  103. }
  104. });
  105. }
  106. validate() {
  107. var instance = this;
  108. var confirmPassword = $("#txt_ConfirmPassword").val();
  109. var password = $("#txt_Password").val();
  110. var phone = $("#txt_PhoneNum").val();
  111. var email = $("#txt_Email").val();
  112. var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+((com|COM|in|IN))+$/;
  113. var signUpForm = document.getElementById('frm_Signup');
  114. var isValid = signUpForm.checkValidity();
  115. if (!isValid) {
  116. MessageHelper.Instance().showError("Mandatory fields are missing!", 'div_ValidationSummary');
  117. return false;
  118. }
  119. if (password.length < 8 || confirmPassword.length < 8) {
  120. MessageHelper.Instance().showError("Password must be atleast 8 characters!", 'div_ValidationSummary');
  121. return false;
  122. }
  123. var password = $("#txt_Password").val();
  124. var decimal = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9])(?!.*\s).{8,15}$/;
  125. var checkpassword = password.match(decimal) ? true : false;
  126. if (checkpassword == false) {
  127. $(".pr-password").focus();
  128. MessageHelper.Instance().showError("Please Match the Password in requested Format", "div_ValidationSummary");
  129. return false;
  130. }
  131. if (password != confirmPassword) {
  132. MessageHelper.Instance().showError("New and Confirm Passwords doesn't match!", "div_ValidationSummary");
  133. return false;
  134. }
  135. if (regex.test(email) == false) {
  136. MessageHelper.Instance().showError("Email is not provided in correct format", "div_ValidationSummary");
  137. return false;
  138. }
  139. if (instance.IndustryLength != 0) {
  140. if ($('#ddl_Industry option:selected').val() == 0) {
  141. MessageHelper.Instance().showError("Select an Industry!", "div_ValidationSummary");
  142. return false;
  143. }
  144. }
  145. else {
  146. if ($("#txt_IndustryName").val() == "") {
  147. MessageHelper.Instance().showError("Industry Name cannot be empty!", "div_ValidationSummary");
  148. return false;
  149. }
  150. }
  151. instance._accountManager.getUser(phone, email).then(function (response) {
  152. if (response.result != null) {
  153. if (response.result.contactNumber == phone && response.result.email == email) {
  154. MessageHelper.Instance().showError("Phone Number & Email already exists!", "div_ValidationSummary");
  155. return false;
  156. }
  157. else if (response.result.contactNumber == phone) {
  158. MessageHelper.Instance().showError("Phone Number already exists!", "div_ValidationSummary");
  159. return false;
  160. }
  161. else if (response.result.email == email) {
  162. MessageHelper.Instance().showError("Email already exists!", "div_ValidationSummary");
  163. return false;
  164. }
  165. }
  166. else {
  167. $(".lbl_Otp").removeClass('text-danger text-success').text("We have sent OTP on your Mobile Number and Email !");
  168. $("#txt_Otp").val('');
  169. $("#div_ValidationSummary").empty();
  170. instance.sendOtp(0);
  171. }
  172. }, function () {
  173. MessageHelper.Instance().showError("Some Error has occurred!", 'div_ValidationSummary');
  174. });
  175. }
  176. sendOtp(isResend) {
  177. var instance = this;
  178. $(".preloader-it").fadeIn();
  179. var postData = {
  180. FirstName: $("#txt_FirstName").val(),
  181. LastName: $("#txt_LastName").val(),
  182. ContactNumber: $("#txt_PhoneNum").val(),
  183. Email: $("#txt_Email").val(),
  184. TenantName: $("#txt_TenantName").val(),
  185. ContactOrEmail: "",
  186. IsForgotPswd: false,
  187. IsRegisterUser: false,
  188. IsSignup: true,
  189. UnibaseId: "",
  190. OtpId: isResend,
  191. UserOtp: ""
  192. };
  193. instance._accountManager.sendOtp(postData).then(function (response) {
  194. if (isResend != 0) {
  195. $(".lbl_Otp").text("OTP has been Resent!").removeClass('text-danger', '').addClass('text-success', '');
  196. }
  197. if (response == 0) {
  198. $(".preloader-it").delay(200).fadeOut("slow");
  199. MessageHelper.Instance().showError("Some Error has occurred!", 'div_ValidationSummary');
  200. }
  201. else {
  202. instance.OtpId = response;
  203. $(".preloader-it").delay(200).fadeOut("slow");
  204. $("#modal_Otp").modal("show");
  205. }
  206. }, function () {
  207. $(".preloader-it").delay(200).fadeOut("slow");
  208. $("#signup-container").show();
  209. MessageHelper.Instance().showError("Some Error has occurred!", 'div_ValidationSummary');
  210. });
  211. }
  212. verifyOtp() {
  213. var instance = this;
  214. if ($("#txt_Otp").val() == "")
  215. $(".lbl_Otp").text("Please Enter OTP!").addClass('text-danger', '');
  216. else {
  217. var postData = {
  218. FirstName: "",
  219. LastName: "",
  220. ContactNumber: "",
  221. Email: "",
  222. TenantName: "",
  223. ContactOrEmail: "",
  224. IsForgotPswd: false,
  225. IsRegisterUser: false,
  226. IsSignup: true,
  227. UnibaseId: "",
  228. OtpId: instance.OtpId,
  229. UserOtp: $("#txt_Otp").val(),
  230. };
  231. instance._accountManager.verifyOtp(postData).then(function (response) {
  232. if (response.result != null) {
  233. if (response.result.contactConfirmed == false && response.result.emailConfirmed == false) {
  234. $("#modal_Otp").modal("show");
  235. $(".lbl_Otp").text("Invalid OTP!").addClass('text-danger', '');
  236. $("#txt_Otp").val('');
  237. }
  238. else {
  239. $("#modal_Otp").modal("hide");
  240. instance.saveSignUp(response.result.contactConfirmed, response.result.emailConfirmed);
  241. }
  242. }
  243. else if (response.code.toString() == "2") {
  244. $("#modal_Otp").modal("show");
  245. $(".lbl_Otp").text(response.errors.toString()).addClass('text-danger', '');
  246. $("#txt_Otp").val('');
  247. }
  248. });
  249. }
  250. }
  251. saveSignUp(ContactConfirmed, EmailConfirmed) {
  252. var instance = this;
  253. $(".preloader-it").fadeIn();
  254. var industryId = 0;
  255. var industryTenantId = 0;
  256. var isDefaultData = false;
  257. var industryName = "";
  258. if ($("#txt_IndustryName").val() == "" && $("#ddl_Industry option:selected").val() != "0") {
  259. var value = $("#ddl_Industry option:selected").val().toString().split('|');
  260. industryId = parseInt(value[0]);
  261. industryTenantId = parseInt(value[1]);
  262. isDefaultData = JSON.parse(value[2]);
  263. industryName = $("#ddl_Industry option:selected").text();
  264. }
  265. else
  266. industryName = $("#txt_IndustryName").val();
  267. var postData = {
  268. FirstName: $("#txt_FirstName").val(),
  269. LastName: $("#txt_LastName").val(),
  270. ContactNumber: $("#txt_PhoneNum").val(),
  271. Email: $("#txt_Email").val(),
  272. Password: $("#txt_Password").val(),
  273. TenantName: $("#txt_TenantName").val(),
  274. TenantId: 0,
  275. ContactNumberConfirmed: ContactConfirmed,
  276. EmailConfirmed: EmailConfirmed,
  277. IndustryId: industryId,
  278. IndustryTenantId: industryTenantId,
  279. IndustryName: industryName,
  280. IsDefaultData: isDefaultData,
  281. };
  282. instance._accountManager.signUp(postData).then(function (response) {
  283. $("#frm_Signup").find("input,textarea").val('');
  284. $("#frm_Signup").find("input").prop("checked", false);
  285. $(".preloader-it").delay(200).fadeOut("slow");
  286. if (response.errors == null) {
  287. MessageHelper.Instance().showSuccess("Tenant Created Successfully", 'div_ValidationSummary');
  288. instance.fileCacheHelper.loadJsFileAsync('tenants/themes/compact/components/signup/signupsuccesspage.js', function () {
  289. Unibase.Themes.Compact.Components.SignupSuccessPage.Instance().init("#bizgaze_body");
  290. });
  291. }
  292. else {
  293. MessageHelper.Instance().showError(response.message, 'div_ValidationSummary');
  294. $(".preloader-it").delay(200).fadeOut("slow");
  295. return false;
  296. }
  297. }, function () {
  298. $(".preloader-it").delay(200).fadeOut("slow");
  299. $("#signup-container").show();
  300. MessageHelper.Instance().showError("Some Error has occurred!", 'div_ValidationSummary');
  301. });
  302. }
  303. static Instance() {
  304. return new Signup();
  305. }
  306. }
  307. Components.Signup = Signup;
  308. })(Components = Compact.Components || (Compact.Components = {}));
  309. })(Compact = Themes.Compact || (Themes.Compact = {}));
  310. })(Themes = Unibase.Themes || (Unibase.Themes = {}));
  311. })(Unibase || (Unibase = {}));