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.

phonenumber.component.js 19KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  1. var Unibase;
  2. (function (Unibase) {
  3. let Forms;
  4. (function (Forms) {
  5. let Controls;
  6. (function (Controls) {
  7. class PhoneNumber {
  8. init(formpropertyid, prop, callback) {
  9. this.docpropertyname = prop.DocPropertyName;
  10. var instance = PhoneNumber.Instance();
  11. var container = "control-container-" + formpropertyid;
  12. instance.loadControlSettings(prop.ControlJsonText, prop.FormPropertyId);
  13. instance.loadPropertySettings(prop.PropertySettings, prop.FormPropertyId);
  14. this.formname = prop.DocPropertyName;
  15. var formid = $("#txtPhn_" + prop.DocPropertyName).parents('.formValidate').attr('id');
  16. var errormsg = $("#" + formid).find('.bizgaze_FormErrorMessages').attr('id');
  17. $(".creditnumber").keypress(function (e) {
  18. if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) {
  19. return false;
  20. }
  21. });
  22. $(".dropdown_phonetype").change(function () {
  23. var InstalledAppId = Unibase.Themes.Providers.DetailHelper.installedAppId;
  24. var phonetype = $(".dropdown_phonetype").val();
  25. if (phonetype === "2") {
  26. if ($("#a_Verify_phonenumber").hasClass("otp_verified")) {
  27. $("#a_Verify_phonenumber").removeClass("otp_verified");
  28. $("#a_Verify_phonenumber").text('');
  29. $("#a_Verify_phonenumber").removeAttr("style");
  30. }
  31. }
  32. });
  33. $("#a_Verify_" + prop.DocPropertyName).click(function () {
  34. if ($("#a_Verify_" + prop.DocPropertyName).hasClass("otp_verified") == false) {
  35. var attribute = $(this);
  36. var ContactNumber = $("#txtPhn_" + prop.DocPropertyName).val().toString();
  37. if (ContactNumber == "" || ContactNumber == undefined) {
  38. MessageHelper.Instance().showError("Please Enter Mobile Number for Verification", "" + errormsg);
  39. return false;
  40. }
  41. Unibase.Platform.Helpers.FileCacheHelper.Instance().loadJsFile('platform/controls/phonenumber/managers/phonenumbermanager.js', function () {
  42. Unibase.Platform.Controls.Phonenumber.Managers.PhonenumberManager.Instance().getVerified(ContactNumber).then(function (response) {
  43. if (response.errors != null) {
  44. MessageHelper.Instance().showError("Mobile Number Is Already Exist", "" + errormsg);
  45. return false;
  46. }
  47. else {
  48. if (ContactNumber.length > 9) {
  49. $("#a_Verify_" + prop.DocPropertyName).text('Re-send').css('color', 'green');
  50. Unibase.Forms.Controls.PhoneNumber.Instance().SendOtp(ContactNumber, prop.DocPropertyName);
  51. $(".div_Otp_" + prop.DocPropertyName).removeClass("hidden");
  52. $("#btn_submit_" + prop.DocPropertyName).addClass("hidden");
  53. $("#txtOtp_" + prop.DocPropertyName).val('');
  54. $("#txtOtp_" + prop.DocPropertyName).addClass("required");
  55. }
  56. else {
  57. MessageHelper.Instance().showError("Mobile Number should be 10 digits", "" + errormsg);
  58. }
  59. }
  60. });
  61. });
  62. }
  63. });
  64. $("#txtPhn_" + prop.DocPropertyName).keyup(function () {
  65. $("#a_Verify_" + prop.DocPropertyName).text('Verify').css('color', 'green');
  66. $("#txtOtp_" + prop.DocPropertyName).val('');
  67. $("#txtOtp_" + prop.DocPropertyName).removeClass("required");
  68. $(".div_Otp_" + prop.DocPropertyName).addClass("hidden");
  69. $("#txtOtp_" + prop.DocPropertyName).removeClass("required");
  70. });
  71. $("#txtPhn_" + prop.DocPropertyName).on("input", function () {
  72. const inputVal = $(this).val();
  73. $(this).val(inputVal.replace(/\D/g, ''));
  74. });
  75. $("#txtOtp_" + prop.DocPropertyName).removeClass('required');
  76. $("#btn_submit_" + prop.DocPropertyName).click(function () {
  77. var Otp = $("#txtOtp_" + prop.DocPropertyName).val().toString();
  78. if (Otp.length == 6) {
  79. Unibase.Forms.Controls.PhoneNumber.Instance().SubmitOTP(prop.DocPropertyName);
  80. }
  81. else {
  82. MessageHelper.Instance().showError("Please Enter Valid OTP", "" + errormsg);
  83. $("#txtOtp_" + prop.DocPropertyName).addClass('form-group-required');
  84. }
  85. });
  86. $("#txtOtp_" + prop.DocPropertyName).attr('maxlength', '6');
  87. $("#txtOtp_" + prop.DocPropertyName).keypress(function (e) {
  88. if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) {
  89. MessageHelper.Instance().showError("Numbers Only Allowed", '' + errormsg);
  90. return false;
  91. }
  92. else {
  93. if ($("#txtOtp_" + prop.DocPropertyName).val().toString().length >= 5) {
  94. $("#btn_submit_" + prop.DocPropertyName).removeClass('hidden');
  95. }
  96. else {
  97. $("#btn_submit_" + prop.DocPropertyName).addClass('hidden');
  98. }
  99. }
  100. });
  101. $("input#txtOtp_" + prop.DocPropertyName).unbind("keypress change input paste").bind("keypress change input paste", function () {
  102. var value = $("#txtOtp_" + prop.DocPropertyName).val().toString();
  103. if (value != "") {
  104. var IsNumeric = $.isNumeric(value);
  105. if (IsNumeric && value.length >= 5) {
  106. $("#btn_submit_" + prop.DocPropertyName).removeClass('hidden');
  107. }
  108. else if (IsNumeric == false) {
  109. $("#btn_submit_" + prop.DocPropertyName).addClass('hidden');
  110. $("#txtOtp_" + prop.DocPropertyName).val("");
  111. MessageHelper.Instance().showError("Numbers Only Allowed", '' + errormsg);
  112. return false;
  113. }
  114. else {
  115. $("#btn_submit_" + prop.DocPropertyName).addClass('hidden');
  116. }
  117. }
  118. else if (value == "") {
  119. $("#btn_submit_" + prop.DocPropertyName).addClass('hidden');
  120. }
  121. });
  122. var el = document.getElementById('txtOtp_' + prop.DocPropertyName);
  123. el.addEventListener('keydown', function (event) {
  124. const key = event.key;
  125. if (key === "Backspace" || key === "Delete") {
  126. $("#btn_submit_" + prop.DocPropertyName).addClass('hidden');
  127. }
  128. });
  129. if (callback != null)
  130. callback();
  131. }
  132. loadControl(containerid, prop) {
  133. let ControlId = 'txt_' + prop.UniqueId;
  134. var regExpr = "";
  135. var ErrMsg = "";
  136. var validationlist = prop.Validations;
  137. if (validationlist != null) {
  138. for (var i = 0; i < validationlist.length; i++) {
  139. regExpr += validationlist[i].RegularExp + '||';
  140. ErrMsg += validationlist[i].ErrorMessage + '||';
  141. }
  142. }
  143. var Isrequired = prop.IsRequired != true ? 'hidden' : '';
  144. var required = prop.IsRequired != true ? '' : 'required';
  145. var reqMark = prop.IsRequired != true ? '' : '*';
  146. var CurrentStageId = $("#hf_" + $("#hfLayout_InstalledPageId").val() + "_StageId").val();
  147. if (prop.StagesForRequired != null) {
  148. var StagesForRequired = prop.StagesForRequired.split('|');
  149. Isrequired = StagesForRequired.find(x => x == CurrentStageId) ? '' : 'hidden';
  150. required = StagesForRequired.find(x => x == CurrentStageId) ? 'required' : '';
  151. reqMark = StagesForRequired.find(x => x == CurrentStageId) ? '*' : '';
  152. }
  153. const { helpTooltipHtml, helpTextHtml, helpClass } = Unibase.Platform.Forms.Components.FormViewer.Instance().getControlHelpHtml(prop);
  154. var html = `<div class="floating-label-form-group div_PhoneNumber div_${prop.DocPropertyName} ${helpClass}"><label for="lbl" id="lbl_phno">${helpTooltipHtml}<span class="label-name">${prop.LabelName}</span><span class="text-danger ${Isrequired}" id="spnIsRequired_${prop.FormPropertyId}"> *</span></label><div class="input-group">` +
  155. '<input type="text" data-regularexp="' + regExpr + '" data-validatemsg="' + ErrMsg + '" id="txtPhn_' + prop.DocPropertyName + '" maxlength="10" value="" class="type-control form-control type-control value-control ' + required + ' floating-label-control" data-isdynamic="false" placeholder="' + prop.LabelName + " " + reqMark + '" data-placeholder="' + prop.Placeholder + '" data-label="' + prop.LabelName + " " + reqMark + '" data-required="' + prop.IsRequired + '" data-regularexp="" data-validatemsg="" inputmode="numeric"/>' +
  156. '<a href="javascript:;" class="input-group-addon bg-white no-border text-ul font-bold" id="a_Verify_' + prop.DocPropertyName + '"><font color="green">Verify</font></a>' +
  157. '<input type="hidden" id="hf_' + prop.DocPropertyName + '" /><label for="Validation" id="lblValidation_' + prop.DocPropertyName + '"></label><input type="hidden" id="hfFormPropertyId" /></div>' +
  158. '<input type="hidden" id="hf_' + prop.ControlId + '" /></div>' + helpTextHtml + '</div>';
  159. var html1 = '<div class="col-sm-6 divCustomProperties div_Otp_' + prop.DocPropertyName + ' hidden" data-formpropertyname="otp" data-validatename="OTP"><div class="border-left-0 floating-label-form-group"><label for="lbl" id="lbl_Otp_' + prop.DocPropertyName + '">OTP<span class="text-danger ' + Isrequired + '" id="spnIsRequired_' + prop.FormPropertyId + '"> *</span></label><div class="input-group">' +
  160. '<input type="text" data="txt_otp" id="txtOtp_' + prop.DocPropertyName + '" maxlength="6" value="" class="type-control form-control type-control value-control ' + required + ' floating-label-control" data-isdynamic="false" placeholder="OTP *" data-placeholder="Enter OTP" data-label="OTP *" data-required="' + prop.IsRequired + '" data-regularexp="" data-validatemsg="" inputmode="numeric" />' +
  161. '<a href="javascript:;" class="input-group-addon bg-white no-border text-ul font-bold" id="btn_submit_' + prop.DocPropertyName + '"><font color="green">Submit</font></a>' +
  162. '<input type="hidden" id="hf_' + prop.DocPropertyName + '" /><label for="Validation" id="lblValidation_' + prop.DocPropertyName + '"></label><input type="hidden" id="hfFormPropertyId" /></div></div>' +
  163. '<input type="hidden" id="hf_' + prop.ControlId + '" /></div></div>';
  164. $("#" + containerid).append(html);
  165. $("#" + containerid).after(html1);
  166. }
  167. loadControlSettings(controlsettingjson, formpropertyid) {
  168. return null;
  169. }
  170. loadPropertySettings(propertysettings, formpropertyid) {
  171. if (propertysettings != null) {
  172. for (var i = 0; i < propertysettings.length; i++) {
  173. var data = propertysettings[i];
  174. if (data.ControlPropertyName == "IsVerify") {
  175. if (data.ControlPropertyValue == "true") {
  176. $("#a_Verify_" + this.docpropertyname).addClass('hidden');
  177. $('#txtOtp_' + this.docpropertyname).removeClass('required');
  178. }
  179. }
  180. }
  181. }
  182. }
  183. SendOtp(ContactNumber, docpropertname) {
  184. var instance = this;
  185. var postData = {
  186. ContactNumber: ContactNumber,
  187. };
  188. Unibase.Platform.Helpers.FileCacheHelper.Instance().loadJsFile('platform/controls/phonenumber/managers/phonenumbermanager.js', function () {
  189. Unibase.Platform.Controls.Phonenumber.Managers.PhonenumberManager.Instance().sendOtp(postData).then(function (response) {
  190. var data = response.result;
  191. var value = data.replace(/['"]+/g, '');
  192. var str1 = window.atob(value);
  193. var str2 = str1.split('');
  194. var otp = "";
  195. otp = otp.concat(str2[0], str2[2], str2[4], str2[6], str2[8], str2[10]);
  196. instance.Otp = otp;
  197. $("#hf_" + docpropertname).val('');
  198. $("#hf_" + docpropertname).val(otp);
  199. if (otp.length != 0 && otp == "Phone number already exist") {
  200. $("#txtPhn_" + docpropertname).attr("disabled", "disabled");
  201. $("#a_Verify_" + docpropertname).text('Verify').css('color', 'deepskyblue');
  202. }
  203. else {
  204. MessageHelper.Instance().showSuccess("OTP sent successfully", "");
  205. }
  206. });
  207. });
  208. }
  209. SubmitOTP(docpropname) {
  210. var instance = this;
  211. var formid = $("#txtPhn_" + docpropname).parents('.formValidate').attr('id');
  212. var errormsg = $("#" + formid).find('.bizgaze_FormErrorMessages').attr('id');
  213. if ($("#txtOtp_" + docpropname).val() == "")
  214. $("#lbl_Otp_" + docpropname).text("Please Enter OTP!").addClass('text-danger', '');
  215. else {
  216. var OtpVal = $("#txtOtp_" + docpropname).val();
  217. if (OtpVal != "" && OtpVal == instance.Otp) {
  218. var isverfied = $(".hdn_isverified");
  219. isverfied.val(true);
  220. $("#txtOtp_" + docpropname).removeClass('required');
  221. $("#btn_submit_" + docpropname).addClass('hidden');
  222. $("#txtOtp_" + docpropname).val('');
  223. $("#txtOtp_" + docpropname).removeClass("required");
  224. $(".div_Otp_" + docpropname).addClass('hidden');
  225. $("#a_Verify_" + docpropname).text('Verified ✔').css('color', 'green').addClass('otp_verified');
  226. $("#txtPhn_" + docpropname).attr("disabled", "disabled");
  227. $('#txtPhn_' + docpropname).css('color', '#999');
  228. $('#txtPhn_' + docpropname).css('background-color', '#f8f8f8');
  229. $('#txtPhn_' + docpropname).css('cursor', 'not-allowed');
  230. MessageHelper.Instance().showSuccess("OTP Verified successfully", "" + errormsg);
  231. }
  232. else {
  233. $('#txtOtp_' + docpropname).val('');
  234. $("#txtOtp_" + docpropname).focusout();
  235. $("#btn_submit_" + docpropname).addClass("hidden");
  236. MessageHelper.Instance().showError("Please Enter Valid OTP", "" + errormsg);
  237. $("#txtOtp_" + docpropname).addClass('form-group-required');
  238. }
  239. }
  240. }
  241. bindEditFormDetails(formpropertyid, propval, DocPropertyName) {
  242. var instance = this;
  243. if (propval != '') {
  244. Unibase.Platform.Helpers.FileCacheHelper.Instance().loadJsFile('apps/crm/contacts/managers/contactmanager.js', function () {
  245. Bizgaze.Apps.Crm.Contacts.Managers.ContactManager.Instance().getContactnumuberdetails(propval).then(function (res) {
  246. if (res.result.IsVerified == true) {
  247. $("#a_Verify_" + DocPropertyName).text('Verified ✔').css('color', 'green').addClass('otp_verified');
  248. $("#txtPhn_" + DocPropertyName).attr("disabled", "disabled");
  249. $('#txtPhn_' + DocPropertyName).css('color', '#999');
  250. $('#txtPhn_' + DocPropertyName).css('background-color', '#f8f8f8');
  251. $('#txtPhn_' + DocPropertyName).css('cursor', 'not-allowed');
  252. }
  253. });
  254. $("#txtPhn_" + DocPropertyName).val(propval);
  255. });
  256. $(".div_" + DocPropertyName).addClass("floating-label-form-group-with-value");
  257. }
  258. }
  259. static Instance() {
  260. if (this.instance === undefined) {
  261. this.instance = new PhoneNumber();
  262. }
  263. return this.instance;
  264. }
  265. }
  266. Controls.PhoneNumber = PhoneNumber;
  267. })(Controls = Forms.Controls || (Forms.Controls = {}));
  268. })(Forms = Unibase.Forms || (Unibase.Forms = {}));
  269. })(Unibase || (Unibase = {}));