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.

instantreminder.js 40KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597
  1. var Unibase;
  2. (function (Unibase) {
  3. let Platform;
  4. (function (Platform) {
  5. let Communications;
  6. (function (Communications) {
  7. let Components;
  8. (function (Components) {
  9. class InstantReminder extends Unibase.Platform.Core.BaseComponent {
  10. constructor() {
  11. super(...arguments);
  12. this.RecipientProviders = [];
  13. this.TokensData = [];
  14. }
  15. jsFiles() {
  16. var jsfiles = ["platform/automation/managers/rulemanager.js", "platform/communications/managers/reminders/remindermanager.js", "platform/analytics/managers/reportmanager.js", "platform/communications/requests/reminders/instantreminder.js", "platform/communications/infos/reminders/instantreminder.js", "platform/analytics/managers/reportmanager.js", "platform/communications/requests/reminders/instantreminder.js", "platform/communications/requests/reminders/defaultreminderreport.js", "platform/communications/requests/reminders/reminderfilter.js", "apps/communications/managers/mails/mailmanager.js", "apps/communications/managers/sms/smsmanager.js"];
  17. return jsfiles;
  18. }
  19. cssFiles() {
  20. return [];
  21. }
  22. html(id, containerid) {
  23. let html = `<form id="frmUnibase_InstantReminder" data-validate="parsley" data-isdynamic="false">
  24. <div class="card bg-light">
  25. <div class="bg-white modal-header"> <strong class="text-dark title" id="Spn_InstantReminder">Create Notifications</strong> </div>
  26. <div data-simplebar class="modal-body simple-scrollbar">
  27. <div class="bg-white card" id="divInstantReminder">
  28. <div id="Unibase_Actions_ValidationSummary" class="clear"></div>
  29. <div class="card-body">
  30. <div class="row">
  31. <div class="col-sm-12">
  32. <label for="lbl_ReminderType" id="lbl_ReminderType">Choose Option For Sending Message<span class="text-danger"> *</span></label>
  33. </div>
  34. </div>
  35. <div class="row">
  36. <div class="col-sm-3">
  37. <div class="custom-control custom-radio">
  38. <input type="radio" id="rdb_Notification" name="ReminderType" value="Notification" class="custom-control-input" checked="checked">
  39. <label class="custom-control-label" for="rdb_Notification">Notification</label>
  40. <input type="hidden" id="hfId_Notification" value=""> </div>
  41. </div>
  42. <div class="col-sm-3">
  43. <div class="custom-control custom-radio">
  44. <input type="radio" id="rdb_SMS" name="ReminderType" value="SMS" class="custom-control-input">
  45. <label class="custom-control-label" for="rdb_SMS">SMS</label>
  46. <input type="hidden" id="hfId_SMS" value=""> </div>
  47. </div>
  48. <div class="col-sm-3">
  49. <div class="custom-control custom-radio">
  50. <input type="radio" id="rdb_Email" name="ReminderType" value="Email" class="custom-control-input">
  51. <label class="custom-control-label" for="rdb_Email">Email</label>
  52. <input type="hidden" id="hfId_Email" value=""> </div>
  53. </div>
  54. <div class="col-sm-3 hidden">
  55. <div class="custom-control custom-radio">
  56. <input type="radio" id="rdb_WhatsApp" name="ReminderType" value="WhatsApp" class="custom-control-input">
  57. <label class="custom-control-label" for="rdb_WhatsApp">WhatsApp</label>
  58. <input type="hidden" id="hfId_WhatsApp" value=""> </div>
  59. </div>
  60. </div>
  61. </div>
  62. </div>
  63. <div class="bg-white card" id="SendToContactsDiv">
  64. <div class="card-header">Send To Contacts</div>
  65. <div class="card-body">
  66. <div class="row">
  67. <div class="col-sm-6 mt-10" id="Lbl_ContactsReport"><u><b style="font-weight: bold;" class="" id="Txt_ContactsReport">Select Contacts Report</b></u></div>
  68. <div class="col-sm-12 hidden" id="ContactsReportDiv">
  69. <div class="bg-white card" style="border:groove">
  70. <div class="card-header hidden" id="Header_ReportName"> <span id="Spn_ReportName"></span>
  71. <div id="ChangeReport" class="pull-right"> <u><b style="font-weight:normal;" id="txt_ChangeReport">Change Report</b></u> </div>
  72. </div>
  73. <div class="card-body">
  74. <div class="row" id="Row_Report">
  75. <div class="col-sm-6">
  76. <div id="div_Report" class="floating-label-form-group-with-value floating-validate" style="border-bottom:0;">
  77. <input type="hidden" id="hdnselect2_Report" class="value-control" value="0">
  78. <select id="select2_Report" class="type-control select2_Report form-control text-control" style="width:100%;"></select>
  79. </div>
  80. </div>
  81. </div>
  82. <div class="row pull-right" id="Row_Buttons"> <a href="javascript:;" id="btnCancel" class="btn btn-danger btn-sm mr-10"> Cancel</a> <a href="javascript:;" id="btnApply" class="btn btn-green btn-sm"> Apply</a> </div>
  83. <div class="row Row_DynamicFilers"> </div>
  84. <div class="row ContactColumns mt-10"> </div>
  85. <div class="row hidden pull-right" id="Row_IsDefault">
  86. <div class="custom-control custom-checkbox chkIsDefault checkbox-primary">
  87. <input type="checkbox" class="custom-control-input" id="chkDefault">
  88. <label class="custom-control-label" for="chkDefault">Set As Default</label>&nbsp </div>
  89. </div>
  90. </div>
  91. </div>
  92. </div>
  93. </div>
  94. </div>
  95. </div>
  96. <div class="bg-white card" id="RemindersContentDiv">
  97. <div class="card-body">
  98. <div class="row">
  99. <div class="col-sm-12">
  100. <div id="div_Subject" class="floating-label-form-group">
  101. <label for="lbl_MessageSubject" id="lbl_MessageSubject">Subject<span class="text-danger"> *</span></label>
  102. <div class="input-group">
  103. <input type="text" id="txtNotifications_MessageSubject" class="col-sm-9 form-control value-control required floating-label-control" data-placeholder="Enter Subject" placeholder="Subject *" data-label="Subject *">
  104. <select id="ddl_SubjectTokens" class="col-sm-3 form-control value-control">
  105. <option value="0">Select Token</option>
  106. </select>
  107. </div>
  108. </div>
  109. </div>
  110. </div>
  111. <div class="row">
  112. <div id="div_MessageBody" class="TextEditor col-sm-12">
  113. <label for="lbl_MessageBody" id="lbl_MessageBody">Description<span class="text-danger"> *</span></label>
  114. <inpu type="hidden" id="txthdn_MessageBody" class="value-control" value=""> <span class="text-danger" id="spnIsRequired_MessageBody"></span>
  115. <div class="type-control summernote_MessageBody" style="display: block;" id="summernote_MessageBody" data-propdoctypename="MessageBody" data-required="" placeholder="Message Body" data-placeholder="Message Body" data-label="Message Body"></div>
  116. <label for="Validation" id="lblValidation"></label>
  117. </inpu>
  118. </div>
  119. </div>
  120. </div>
  121. </div>
  122. <div class="bg-white card d-none" id="smsinstantreminder">
  123. <div class="card-header">Send From Details</div>
  124. <div class="card-body">
  125. <div class="row SendFrom">
  126. <div class="col-sm-6">
  127. <div class="input-group">
  128. <label for="lbl_ProviderName" id="lbl_ProviderName">Provider Name <span class="text-danger" id="span_ProviderName">*</span> </label>
  129. <select id="Autocomplete_ProviderName" class="form-control text-control required" style="width:100%;" placeholder="ProviderName" data-placeholder="ProviderName" data-label="" data-istagselect="true"></select>
  130. <input type="hidden" id="hf_ProviderName" class="form-control value-control" data-isdynamic="true" /> </div>
  131. </div>
  132. <div class="col-sm-6">
  133. <div class="input-group">
  134. <label for="lbl_SendSmsFrom" id="lbl_SendFrom">Sender Name <span class="text-danger" id="span_smssendfrom">*</span> </label>
  135. <select id="Autocomplete_SenderName" class="form-control text-control required" style="width:100%;" placeholder="Sender Name" data-placeholder="Sender Name" data-label="" data-istagselect="true"></select>
  136. <input type="hidden" id="hf_SenderName" class="form-control value-control" data-isdynamic="true" /> </div>
  137. </div>
  138. </div>
  139. </div>
  140. </div>
  141. <div class="bg-white card d-none" id="AttachmentsDiv">
  142. <div class="card-header">Attachments</div>
  143. <div class="card-body" id="instantreminderattachments">
  144. </div></div>
  145. <div class="bg-white card" id="mailinstantreminder">
  146. <div class="card-header">Send From Details</div>
  147. <div class="card-body">
  148. <div class="row SendFrom">
  149. <div class="col-sm-6">
  150. <div class="input-group">
  151. <label for="lbl_MailServer" id="lbl_MailServer">Mail Server<span class="text-danger" id="span_MailServer">*</span></label>
  152. <select id="Autocomplete_MailServer" class="form-control text-control required" style="width:100%;" placeholder="MailServer" data-placeholder="MailServer" data-label="" data-istagselect="true"></select>
  153. <input type="hidden" id="hf_MailServer" class="form-control value-control" data-isdynamic="true" /> </div>
  154. </div>
  155. <div class="col-sm-6">
  156. <div class="input-group">
  157. <label for="lbl_MailAccount" id="lbl_MailAccount">Mail Account<span class="text-danger" id="span_MailAccount">*</span></label>
  158. <select id="Autocomplete_MailAccount" class="form-control text-control required" style="width:100%;" placeholder="MailAccount" data-placeholder="MailAccount" data-label="" data-istagselect="true"></select>
  159. <input type="hidden" id="hf_MailAccount" class="form-control value-control" data-isdynamic="true" /> </div>
  160. </div>
  161. </div>
  162. </div>
  163. </div>
  164. <div class="bg-white card" id="ScheduleSendMessage">
  165. <div class="card-header">Schedule Message</div>
  166. <div class="card-body">
  167. <div class="col-sm-6 mt-10" id="ScheduleMessageDiv"><u><b style="font-weight: bold;" class="" id="Txt_ScheduleMessage">Schedule This Message</b></u></div>
  168. <div class="col-sm-6 hidden" id="ScheduleExecutionDateDiv">
  169. <div class="floating-label-form-group" id="div_ExecutionDate">
  170. <label for="lbl" id="lbl_ExecutionDate">Execution Date<span class="text-danger" id="spnIsRequired_ExecutionDate"> *</span></label>
  171. <div class="input-group">
  172. <input type="text" id="date_ExecutionDate" class="form-control type-control datepicker-input hasDatepicker value-control floating-label-control" placeholder="Execution Date *" data-placeholder="dd/mm/yyyy hh:mm" data-label="Execution Date *"> <span class="input-group-addon mt-10"><i class="fa fa-calendar"></i></span>
  173. <input type="hidden" id="hf_ExecutionDate" /> </div>
  174. </div>
  175. </div>
  176. </div>
  177. </div>
  178. </div>
  179. <div class="bg-white modal-footer" id="CreateNotificationFooter"> <a href="javascript:;" id="btnCloseNotification" class="btn btn-light btn-sm mr-auto "> Close</a> <a href="javascript:;" id="btnSaveNotification" class="btn btn-primary btn-sm"> Save</a> </div>
  180. </form>`;
  181. return html;
  182. }
  183. load(id, containerid, callback) {
  184. var instance = this;
  185. $("#btnCloseNotification").click(function () {
  186. $('#' + containerid).modal('hide');
  187. $('#' + containerid).remove();
  188. });
  189. $("#btnSaveNotification").click(function () {
  190. Unibase.Platform.Communications.Components.InstantReminder.Instance().SaveInstantReminder(containerid);
  191. });
  192. $('#ScheduleMessageDiv').click(function () {
  193. $('#ScheduleMessageDiv').addClass('hidden');
  194. $('#ScheduleExecutionDateDiv').removeClass('hidden');
  195. });
  196. $('#Lbl_ContactsReport').click(function () {
  197. $('#Lbl_ContactsReport').addClass('hidden');
  198. $('#ContactsReportDiv').removeClass('hidden');
  199. });
  200. $('#ChangeReport').click(function () {
  201. $('#Row_Report').removeClass('hidden');
  202. $('#Row_Buttons').removeClass('hidden');
  203. $('#Header_ReportName').addClass('hidden');
  204. $('#Row_IsDefault').addClass('hidden');
  205. if ($('#chkDefault').is(':checked')) {
  206. $("#chkDefault").prop("checked", false);
  207. }
  208. $(".Row_DynamicFilers").html("");
  209. });
  210. $('#btnApply').click(function () {
  211. $('#Row_Report').addClass('hidden');
  212. $('#Row_Buttons').addClass('hidden');
  213. $('#Header_ReportName').removeClass('hidden');
  214. $('#Row_IsDefault').removeClass('hidden');
  215. $('#Spn_ReportName').text($("#select2_Report option:selected").text());
  216. let reportid = Number($("#select2_Report option:selected").val());
  217. Unibase.Platform.Communications.Components.InstantReminder.Instance().LoadDynamicFilters(reportid);
  218. Unibase.Platform.Communications.Components.InstantReminder.Instance().LoadContactColumns(reportid);
  219. });
  220. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/analytics/reports';
  221. AutoCompleteHelper.getHelper().Create("#select2_Report", "hdnselect2_Report", url, function (response) {
  222. var data = response;
  223. });
  224. $("#select2_Report").change(function () {
  225. let reportid = Number($("#select2_Report option:selected").val());
  226. $(".ContactColumns").html("");
  227. $(".Row_DynamicFilers").html("");
  228. Unibase.Platform.Communications.Components.InstantReminder.Instance().LoadMsgSubjectTokens(reportid);
  229. Unibase.Platform.Communications.Components.InstantReminder.Instance().LoadMsgBodyTokens(reportid);
  230. });
  231. $("#ddl_SubjectTokens").change(function () {
  232. var textAreaTxt = $("#txtNotifications_MessageSubject").val();
  233. var txtToAdd = '{{' + $("#ddl_SubjectTokens option:selected").text() + '}}';
  234. $("#txtNotifications_MessageSubject").val(textAreaTxt + txtToAdd);
  235. $("#ddl_SubjectTokens").val(0);
  236. });
  237. var _fileCacheHelper = Platform.Helpers.FileCacheHelper.Instance();
  238. _fileCacheHelper.loadJsFileAsync("platform/automation/components/actions/externalattachments.js", function () {
  239. let IsMultiple = true;
  240. let ValidationDiv = "Unibase_Actions_ValidationSummary";
  241. let externalattchmentshtml = Unibase.Platform.Automation.Components.ExternalAttachments.Instance().init("instantreminderattachments", IsMultiple, ValidationDiv);
  242. jQuery("#instantreminderattachments").html(externalattchmentshtml);
  243. $(".drag").css("border", "3px dashed #cccccc");
  244. Unibase.Platform.Automation.Components.ExternalAttachments.Instance().dragNdrop("instantreminderattachments");
  245. });
  246. $("#date_ExecutionDate").daterangepicker({
  247. autoUpdateInput: false,
  248. timePicker: true,
  249. timePicker24Hour: true,
  250. locale: {
  251. format: 'DD/MM/YYYY HH:mm',
  252. },
  253. singleDatePicker: true,
  254. showDropdowns: true,
  255. minYear: 1901,
  256. maxDate: new Date(2050, 11, 31)
  257. });
  258. $(".summernote_MessageBody").summernote({
  259. height: 100,
  260. minHeight: null,
  261. maxHeight: null,
  262. placeholder: "Message Body",
  263. disableDragAndDrop: true,
  264. codemirror: {
  265. mode: 'text/html',
  266. lineNumbers: true
  267. },
  268. toolbar: [
  269. ['font', ['bold', 'italic', 'underline']],
  270. ['color', ['color']],
  271. ['view', ['fullscreen', 'codeview', 'help']],
  272. ],
  273. hint: {
  274. match: /\B[@!](\w*)$/,
  275. search: function (keyword, callback) {
  276. callback($.grep(Unibase.Platform.Communications.Components.InstantReminder.Instance().TokensData, function (i) {
  277. var user = i;
  278. return user.indexOf(keyword) === 0;
  279. }));
  280. },
  281. content: function (i) {
  282. var user = i;
  283. return $('<span>{{' + user + '}}</span>')[0];
  284. }
  285. }
  286. });
  287. Unibase.Platform.Communications.Components.InstantReminder.Instance().GetActions();
  288. $("#smsinstantreminder").addClass("d-none");
  289. $("#mailinstantreminder").addClass("d-none");
  290. $('input[name="ReminderType"]').change(function () {
  291. if ($("input[name='ReminderType']:checked").val() == "Notification") {
  292. $("#smsinstantreminder").addClass("d-none");
  293. $("#mailinstantreminder").addClass("d-none");
  294. $("#AttachmentsDiv").addClass("d-none");
  295. $('#txtNotifications_MessageSubject').removeClass('d-none');
  296. $('#ddl_SubjectTokens').removeClass('d-none');
  297. }
  298. else if ($("input[name='ReminderType']:checked").val() == "SMS") {
  299. $("#mailinstantreminder").addClass("d-none");
  300. $("#smsinstantreminder").removeClass("d-none");
  301. $("#AttachmentsDiv").addClass("d-none");
  302. $('#txtNotifications_MessageSubject').addClass('d-none');
  303. $('#ddl_SubjectTokens').addClass('d-none');
  304. }
  305. else if ($("input[name='ReminderType']:checked").val() == "Email") {
  306. $("#smsinstantreminder").addClass("d-none");
  307. $("#mailinstantreminder").removeClass("d-none");
  308. $("#AttachmentsDiv").removeClass("d-none");
  309. $('#txtNotifications_MessageSubject').removeClass('d-none');
  310. $('#ddl_SubjectTokens').removeClass('d-none');
  311. }
  312. });
  313. Unibase.Platform.Communications.Components.InstantReminder.Instance().getDefaultSmsSender();
  314. Unibase.Platform.Communications.Components.InstantReminder.Instance().getDefaultMailServer();
  315. }
  316. loadForm(FormId, Pk_Value, AppConfigurationId, Callback, ElementId) {
  317. InstantReminder.Instance().init(Pk_Value, null);
  318. Unibase.Platform.Apps.Managers.AppManager.Instance().getAppConfiguration(AppConfigurationId).then(function (response) {
  319. InstantReminder.installedappid = response.result.InstalledAppId;
  320. });
  321. }
  322. loadInstantReminderForm(iscreate) {
  323. var Pk_Value = 0;
  324. if (!iscreate) {
  325. Pk_Value = Unibase.Themes.Providers.DetailHelper.recordId;
  326. }
  327. this.navigationHelper.popup(Pk_Value, '', Unibase.Platform.Communications.Components.InstantReminder.Instance(), null, Unibase.Platform.Helpers.Size.DockLeft);
  328. }
  329. init(id, callback) {
  330. this.render(id, callback);
  331. }
  332. render(id, callback) {
  333. this.navigationHelper.popup(id, '', Unibase.Platform.Communications.Components.InstantReminder.Instance(), null, Unibase.Platform.Helpers.Size.DockLeft);
  334. }
  335. SaveInstantReminder(containerid) {
  336. let model = new Unibase.Platform.Communications.Requests.InstantReminder();
  337. let ActionName = "";
  338. let reminderFilters = Unibase.Platform.Communications.Components.InstantReminder.Instance().GetFilters();
  339. let defaultReminderReport = Unibase.Platform.Communications.Components.InstantReminder.Instance().GetDefaultReport();
  340. let contactcolumns = Unibase.Platform.Communications.Components.InstantReminder.Instance().getContactColumns();
  341. let ExternalAttachments = Unibase.Platform.Automation.Components.ExternalAttachments.Instance().getFiles("instantreminderattachments");
  342. if ($("input[name='ReminderType']:checked").val() == "Notification") {
  343. ActionName = "Send Notification";
  344. }
  345. else if ($("input[name='ReminderType']:checked").val() == "SMS") {
  346. ActionName = "Send Sms";
  347. model.String1 = $('#Autocomplete_ProviderName option:selected').val().toString();
  348. model.String2 = $('#Autocomplete_SenderName option:selected').val().toString();
  349. }
  350. else if ($("input[name='ReminderType']:checked").val() == "Email") {
  351. ActionName = "Send Email";
  352. model.String1 = $('#Autocomplete_MailServer option:selected').val().toString();
  353. model.String2 = $('#Autocomplete_MailAccount option:selected').val().toString();
  354. model.String3 = ExternalAttachments.length > 0 ? JSON.stringify(ExternalAttachments) : "";
  355. }
  356. var contents = $('.summernote_MessageBody').summernote('code');
  357. var plainText = $("<p>" + contents + "</p>").text();
  358. model.Subject = $("#txtNotifications_MessageSubject").val().toString();
  359. model.Body = plainText;
  360. model.ReportId = ($("#select2_Report option:selected").val() == undefined) ? 0 : Number($("#select2_Report option:selected").val());
  361. model.ActionId = Unibase.Platform.Communications.Components.InstantReminder.ActionsArray.find(x => x.ActionName == ActionName).ActionId;
  362. model.Users = contactcolumns;
  363. model.IsScheduled = false;
  364. if ($("#date_ExecutionDate").val() != '' && $("#date_ExecutionDate").val() != null) {
  365. let ExecutionDate = Unibase.Platform.Helpers.DateTimeHelper.Instance().formatServerDateTime($("#date_ExecutionDate").val());
  366. model.ExecutionDate = new Date(ExecutionDate);
  367. model.IsScheduled = true;
  368. }
  369. model.ReminderFilters = reminderFilters;
  370. model.DefaultReminderReport = defaultReminderReport;
  371. Communications.Managers.ReminderManager.Instance().saveInstantReminder(model).then(function (response) {
  372. if (response.status == Unibase.Data.Status.Error) {
  373. MessageHelper.Instance().showError(response.message, "Unibase_Actions_ValidationSummary");
  374. }
  375. else {
  376. MessageHelper.Instance().showSuccess(response.message, "Unibase_Actions_ValidationSummary");
  377. $('#' + containerid).modal('hide');
  378. $('#' + containerid).remove();
  379. Unibase.Platform.Helpers.NavigationHelper.Instance().loadList(Unibase.Platform.Communications.Components.InstantReminder.installedappid, null);
  380. }
  381. });
  382. }
  383. LoadMsgSubjectTokens(reportid) {
  384. Unibase.Platform.Analytics.Managers.ReportManager.Instance().getColumns(reportid).then(function (response) {
  385. let cmbConditionProperties = document.getElementById('ddl_SubjectTokens');
  386. $('#ddl_SubjectTokens').empty();
  387. var defaultOpt1 = document.createElement("option");
  388. defaultOpt1.text = "Select Token";
  389. defaultOpt1.value = "0";
  390. cmbConditionProperties.appendChild(defaultOpt1);
  391. for (let i = 0; i <= response.result.length - 1; i++) {
  392. var opt = document.createElement("option");
  393. opt.text = response.result[i].ReportColumnName;
  394. opt.value = response.result[i].ReportColumnId.toString();
  395. cmbConditionProperties.appendChild(opt);
  396. }
  397. });
  398. }
  399. LoadMsgBodyTokens(reportid) {
  400. Unibase.Platform.Analytics.Managers.ReportManager.Instance().getColumns(reportid).then(function (response) {
  401. var Data = new Array();
  402. for (let i = 0; i <= response.result.length - 1; i++) {
  403. var result = response.result[i].ReportColumnName;
  404. Data.push(result);
  405. }
  406. Unibase.Platform.Communications.Components.InstantReminder.Instance().TokensData = Data;
  407. });
  408. }
  409. GetActions() {
  410. Unibase.Platform.Automation.Managers.RuleManager.Instance().getActions().then(function (response) {
  411. for (var i = 0; i <= response.length - 1; i++) {
  412. Unibase.Platform.Communications.Components.InstantReminder.ActionsArray.push(response[i]);
  413. }
  414. });
  415. }
  416. LoadContactColumns(reportid) {
  417. Unibase.Platform.Analytics.Managers.ReportManager.Instance().getIsContactReportColumns(reportid).then(function (response) {
  418. if (response != null) {
  419. for (let i = 0; i <= response.result.length - 1; i++) {
  420. let html = '';
  421. html += '<div class="col-sm-3"><div class="custom-control custom-checkbox divEnablePieces checkbox-primary"><input type="checkbox" class="type-control custom-control-input" id="chk_' + response.result[i].ReportColumnName + '" name="Contactcolumns" onclick="' + onclick + '"><label class="custom-control-label" for="chk_' + response.result[i].ReportColumnName + '">' + response.result[i].ReportColumnName + '</label><span></span>&nbsp</div></div>';
  422. $(".ContactColumns").append(html);
  423. }
  424. }
  425. });
  426. }
  427. GetFilters() {
  428. let dynamicfilters = new Array();
  429. $(".dynamicfilter").each(function () {
  430. let dynamicfilter = new Unibase.Platform.Communications.Requests.ReminderFilter();
  431. let id = $(this).find(".dynamicfilter");
  432. let index = (id.prevObject[0].id).split('_');
  433. index = index[1];
  434. dynamicfilter.ColumnName = $(this).find(".propvalue").text();
  435. let columnname = $(this).find(".propname").text();
  436. let selectid = "select2_" + columnname + "";
  437. let filtervalues = Unibase.Platform.Communications.Components.InstantReminder.Instance().getSelectedValues(selectid);
  438. dynamicfilter.ColumnValues = filtervalues;
  439. dynamicfilter.ReportId = ($("#select2_Report option:selected").val() == undefined) ? 0 : Number($("#select2_Report option:selected").val());
  440. dynamicfilters.push(dynamicfilter);
  441. });
  442. return dynamicfilters;
  443. }
  444. GetDefaultReport() {
  445. let defaultreminderreport = new Unibase.Platform.Communications.Requests.DefaultReminderReport();
  446. defaultreminderreport.IsDefault = $('#chkDefault').is(':checked');
  447. defaultreminderreport.ReportId = ($("#select2_Report option:selected").val() == undefined) ? 0 : Number($("#select2_Report option:selected").val());
  448. return defaultreminderreport;
  449. }
  450. getSelectedValues(selectid) {
  451. let Recipientcount = new Array();
  452. Recipientcount = $('#' + selectid).val();
  453. let Recipient = "";
  454. for (var i = 0; i < Recipientcount.length; i++) {
  455. Recipient += "|" + Recipientcount[i];
  456. }
  457. if (Recipient != "")
  458. Recipient += "|";
  459. return Recipient;
  460. }
  461. getContactColumns() {
  462. var contactcolumns = "";
  463. $.each($("input[name='Contactcolumns']:checked"), function () {
  464. var Contact = $(this).parents("label");
  465. Contact = Contact.prevObject[0].labels[0].innerText;
  466. contactcolumns += "|" + Contact;
  467. });
  468. if (contactcolumns != "")
  469. contactcolumns += "|";
  470. return contactcolumns;
  471. }
  472. LoadDynamicFilters(ReportId) {
  473. Unibase.Platform.Analytics.Managers.ReportManager.Instance().getDynamicFilters(ReportId).then(function (response) {
  474. let data = response;
  475. for (var i = 0; i <= response.length - 1; i++) {
  476. if (response[i].DatalistId != 0) {
  477. let html = '';
  478. html += '<div class="col-sm-6 dynamicfilter"><div id="div_' + response[i].TextColumn + '" class="floating-label-form-group-with-value floating-validate" style="border-bottom:0;"><label for= "lbl" id = "lbl_' + response[i].TextColumn + '" >' + response[i].TextColumn + '</label ><label class="hidden propname">' + response[i].TextColumn + '</label><label class="hidden propvalue">' + response[i].ValueColumn + '</label>' +
  479. '<input type="hidden" id="hdnselect2_' + response[i].TextColumn + '" class="value-control" value="0">' +
  480. '<select id="select2_' + response[i].TextColumn + '" class="type-control select2_' + response[i].TextColumn + ' form-control text-control" multiple="multiple" style="width:100%;"></select>' +
  481. '</div></div>';
  482. $(".Row_DynamicFilers").append(html);
  483. let selectid = "select2_" + response[i].TextColumn + "";
  484. let reportid = response[i].ReportId;
  485. let columnname = response[i].TextColumn;
  486. let ismultiple = true;
  487. var obj = {
  488. datalistId: response[i].DatalistId,
  489. valueColumn: response[i].ValueColumn,
  490. textColumn: response[i].TextColumn,
  491. isFilterableColumn: response[i].IsFilterableColumn,
  492. };
  493. Unibase.Platform.Communications.Components.InstantReminder.Instance().loadSelect2(selectid, reportid, ismultiple, 0, obj);
  494. }
  495. }
  496. });
  497. }
  498. getDefaultSmsSender() {
  499. Unibase.Apps.Communications.Managers.SmsManager.Instance().getDefaultSmsSender().then(function (response) {
  500. if (response.status == Unibase.Data.Status.Success) {
  501. var smsprovideroption = new Option(response.result.SmsProviderName, response.result.SmsProviderId.toString(), true);
  502. $("#Autocomplete_ProviderName").append(smsprovideroption);
  503. var url = _appsettings.server_url() + '/apis/v4/bizgaze/communications/sms/SmsSenderAutocomplete/smsproviderid/' + Number($("#Autocomplete_ProviderName option:selected").val());
  504. AutoCompleteHelper.getHelper().Create("#Autocomplete_SenderName", "#hf_SenderName", url, function (res) {
  505. var data = res;
  506. var smssenderoption = new Option(response.result.SmsSenderName, response.result.SmsSenderId.toString(), true);
  507. $("#Autocomplete_SenderName").append(smssenderoption);
  508. });
  509. }
  510. });
  511. }
  512. getDefaultMailServer() {
  513. Unibase.Apps.Communications.Managers.MailManager.Instance().getUserDefaultMailAccount().then(function (response) {
  514. if (response.status == Unibase.Data.Status.Success) {
  515. var mailserveroption = new Option(response.result.ServerName, response.result.MailServerId.toString(), true);
  516. $("#Autocomplete_MailServer").append(mailserveroption);
  517. var mailaccountoption = new Option(response.result.UserName, response.result.MailAccountId.toString(), true);
  518. $("#Autocomplete_MailAccount").append(mailaccountoption);
  519. }
  520. });
  521. }
  522. loadSelect2(select2id, reportid, isMultiple, containerid, res) {
  523. var data = [];
  524. var Ids = 0;
  525. var instance = this;
  526. var userinfo = Unibase.Platform.Membership.Infos.Identity.getCurrentUser();
  527. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/analytics/getdynamicfilterdata';
  528. $("#" + select2id).select2({
  529. placeholder: "Select",
  530. multiple: isMultiple,
  531. allowClear: true,
  532. data: data,
  533. ajax: {
  534. url: function (request) {
  535. var reqUrl = url;
  536. return reqUrl;
  537. },
  538. contentType: 'application/json',
  539. type: "POST",
  540. delay: 250,
  541. data: function (params) {
  542. let encoded_term = (params.term) ? btoa(params.term) : "";
  543. var obj = {
  544. ReportId: reportid,
  545. DataListId: res.datalistId,
  546. IsFilterableColumn: res.isFilterableColumn,
  547. TextColumn: res.textColumn,
  548. ValueColumn: res.valueColumn,
  549. Term: encoded_term,
  550. AuthToken: userinfo.sessionId,
  551. };
  552. return JSON.stringify(obj);
  553. },
  554. beforeSend: function (xhr) {
  555. if (userinfo !== undefined && userinfo !== null) {
  556. xhr.setRequestHeader("Authorization", "Basic " + userinfo.sessionId);
  557. xhr.setRequestHeader('geoposition', userinfo.latd + ':' + userinfo.lgId);
  558. }
  559. },
  560. processResults: function (data) {
  561. var selectData = [];
  562. var Data;
  563. var result = JSON.parse(data.result);
  564. if (!result.Data) {
  565. selectData.push({ id: 123456, text: "No results found", disabled: true });
  566. }
  567. else {
  568. Data = JSON.parse(result.Data);
  569. for (var i = 0; i < Data.length; i++) {
  570. selectData.push({
  571. id: Data[i][res.valueColumn],
  572. text: Data[i][res.textColumn]
  573. });
  574. }
  575. ;
  576. }
  577. return { results: selectData };
  578. }
  579. },
  580. templateResult: function (item) { return item.text; },
  581. templateSelection: function (item) { return item.text; },
  582. });
  583. $("#" + select2id).val(Ids).trigger('change');
  584. }
  585. static Instance() {
  586. if (this.instance === undefined) {
  587. this.instance = new InstantReminder();
  588. }
  589. return this.instance;
  590. }
  591. }
  592. InstantReminder.ActionsArray = [];
  593. Components.InstantReminder = InstantReminder;
  594. })(Components = Communications.Components || (Communications.Components = {}));
  595. })(Communications = Platform.Communications || (Platform.Communications = {}));
  596. })(Platform = Unibase.Platform || (Unibase.Platform = {}));
  597. })(Unibase || (Unibase = {}));