Built files from Bizgaze WebServer
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

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 = {}));