// 'use strict'; const email_reminder = (function ($, window, jQuery) { var _vars_ = {}; return { "set_vars": function (options) { $.extend(_vars_, options || {}); }, "get_vars": function () { return _vars_; }, "init" : function(event_schedule_id, row){ var explode = row.split("_"); var event = $("#events_list").DataTable().row(explode[0]).data(); if(typeof event.action.event_schedule[explode[1]] != "undefined"){ app.modal.focusout_solution("on"); bootbox.dialog({ "title": "Email Configuration", "className" : "my-modal-with-medium", "message": $("#email-configuration"), "show": false, /* We will show it manually later */ "buttons" : [ { "label": app.get_vars()._app.btn._close, "class": "btn" } ] }).on('shown.bs.modal', function(){ //displayHack : recalculate the dimensions of email_reminder_list table/grid $("#email_reminder_list").DataTable().columns.adjust(); }) .on('hide.bs.modal', function(e) { //destroy event table var email_reminder_list = $("#email_reminder_list"); email_reminder_list.DataTable().clear(); //destroy table email_reminder_list.dataTable().fnDestroy(); $("#email_reminder_config_btn").prop("disabled", false); app.modal.focusout_solution("off"); $(this).data('bs.modal', null); $(this).off('hidden.bs.modal'); }) .modal('show') .init(function(){ $("#emailReminderForm").data("email_reminder", event.action.event_schedule[explode[1]]); email_reminder._grid.load(event_schedule_id); }); } else { app._notify("error", "Something went wrong!"); } }, "_create" : { "modal" : function(){ app.modal.focusout_solution("on"); var emailReminderForm = $("#emailReminderForm").data("email_reminder"); bootbox.dialog({ "title": app.get_vars().email.title.add_email_reminder, "className" : "my-modal-with-xsm addEmailReminder", "message": $("#emailReminderForm"), "show": false /* We will show it manually later */, "buttons" : [ { "label": app.get_vars()._app.btn._close, "class": "btn btn-default", "callback": function () { } }, { "label": app.get_vars().email.btn.add_email_reminder, "class": "btn btn-success", "callback": function () { email_reminder._validate._init('add',emailReminderForm.event_schedule_id); return false; } } ] }).on('shown.bs.modal', function() { try { var email_schedule_date = $("#email_schedule_date"); //reset date_picker email_reminder._dtimepicker.reset_dpicker(email_schedule_date, "min", emailReminderForm.reservation_start_date); email_reminder._dtimepicker.reset_dpicker(email_schedule_date, "max", emailReminderForm.start_date_time); } catch (e) {} }).on('hide.bs.modal', function(e) { app._form._resetFormValidation("#emailReminderForm"); app._form._reset(this); app.modal.focusout_solution("off"); $(this).data('bs.modal', null); $(this).off('hidden.bs.modal'); }) .modal('show') .init(function(){ //reset date_picker email_reminder._dtimepicker.config("now"); }); }, "save" : function(event_schedule_id){ $.ajax({ "url" : app.get_vars().baseurl+"add_email_reminder", "type" : "POST", "data" : { "event_schedule_id" : event_schedule_id, "email_schedule_date" : app._form.format_inputs("datetime", $("#email_schedule_date").val().trim()) }, "success" : function(result){ if(app.isalive(result)) { app._notify(result.mtype, result.message); if (result.mtype == "success") { //reload grid $(".addEmailReminder").modal("hide"); $("#email_reminder_list").DataTable().ajax.url(app.get_vars().baseurl+"get_email_reminder_list/"+event_schedule_id).load(); } } } }); } }, "_update" : { "modal" : function(row){ app.modal.focusout_solution("on"); var rowData = (email_reminder.get_vars()._email_reminder).row(row).data(); var _form = $("#emailReminderForm"); var emailReminderForm = _form.data("email_reminder"); bootbox.dialog({ "title": app.get_vars().email.title.edit_email_reminder, "className" : "my-modal-with-xsm editEmailReminder", "message": _form, "show": false /* We will show it manually later */, "buttons" : [ { "label": app.get_vars()._app.btn._close, "class": "btn btn-default", "callback": function () { } }, { "label": "Save", "class": "btn btn-success", "callback": function () { email_reminder._validate._init('edit', rowData.action.event_schedule_id, rowData.action.email_schedule_id); return false; } } ] }).on('shown.bs.modal', function() { }).on('hide.bs.modal', function(e) { app._form._resetFormValidation("#emailReminderForm"); app._form._reset(this); $(this).data('bs.modal', null); app.modal.focusout_solution("off"); $(this).off('hidden.bs.modal'); }) .modal('show') .init(function(){ app._form._reset(this); try { var email_schedule_date = $("#email_schedule_date"); //reset date_picker email_reminder._dtimepicker.reset_dpicker(email_schedule_date, "min", emailReminderForm.reservation_start_date); email_reminder._dtimepicker.reset_dpicker(email_schedule_date, "max", emailReminderForm.start_date_time); email_schedule_date.data("DateTimePicker").date(rowData.email_schedule_date); } catch (e) {} }); }, "save" : function(event_schedule_id, email_schedule_id){ $.ajax({ "url" : app.get_vars().baseurl+"update_email_reminder", "type" : "POST", "data" : { "event_schedule_id" : event_schedule_id, "email_schedule_id" : email_schedule_id, "email_schedule_date" : app._form.format_inputs("datetime", $("#email_schedule_date").val().trim()) }, success : function(result){ //hide loder modal if(app.isalive(result)) { app._notify(result.mtype, result.message); if (result.mtype == "success") { //reload grid $(".editEmailReminder").modal("hide"); $("#email_reminder_list").DataTable().ajax.url(app.get_vars().baseurl+"get_email_reminder_list/"+event_schedule_id).load(); } } } }); } }, "_delete" : { "confirm" : function(email_schedule_id, event_schedule_id){ app.modal.confirm_box({ "message" : app.get_vars().email.cmsg.delete_email_reminder+"

"+app.get_vars()._app.cma_msg.note+"", "_continue" : function() { email_reminder._delete.save(email_schedule_id, event_schedule_id); }, "id" : "delete_confirm_box", "className" : "delete_confirm_box" }); }, "save" : function(email_schedule_id, event_schedule_id){ $.ajax({ "url" : app.get_vars().baseurl+"delete_email_reminder/", "type" : "POST", "data" : { "email_schedule_id" : email_schedule_id }, "dataType" : "json", "success" : function(result){ if(app.isalive(result)) { app._notify(result.mtype, result.message); if (result.mtype == "success") { //reload grid $(".addEmailReminder").modal("hide"); var eventReminderTbl = $("#email_reminder_list"); eventReminderTbl.DataTable().ajax.url(app.get_vars().baseurl+"get_email_reminder_list/"+event_schedule_id).load(); } } } }); } }, "_grid" : { "load" : function(event_schedule_id){ var table = $('#email_reminder_list').DataTable({ "sDom": '<"toolbar">p', "autoWidth": false, "pageLength": 5, "destroy" : true, "responsive": true, "processing": true, //Feature control the processing indicator. "serverSide": true, //Feature control DataTables' server-side processing mode. "oLanguage": fr_onload_lang.oLanguage, "order" : [2, "asc"], // Load data for the table's content from an Ajax source "ajax": { "url": app.get_vars().baseurl+"get_email_reminder_list/"+event_schedule_id, "type": "POST" }, "columns": [ { "data": "event_order", orderable: false }, { "data": "start_date_time"}, { "data": "email_schedule_date"}, { "data": "email_schedule_status", render : function(data, type, full, meta){ return ''+data+''; }}, { "data": "email_schedule_author", orderable: false}, { "data": "action", orderable: false, className : "custom-popover-tooltip", render : function(data, type, full, meta){ var action_btns = ""; if(full.email_schedule_status == "Active") { $("#email_reminder_config_btn").prop("disabled", true); if (authorize(PAGE_CODE['events'], PRIVS[PAGE_CODE['events']]['sched_email_reminder_edit'])) { action_btns +=app.grid.create_action_btn(app.get_vars()._app.action._edit, "pencil", "success", "email_reminder._update.modal("+meta.row+")"); } if (authorize(PAGE_CODE['events'], PRIVS[PAGE_CODE['events']]['sched_email_reminder_delete'])) { action_btns +=app.grid.create_action_btn(app.get_vars()._app.action._delete, "trash", "danger", "email_reminder._delete.confirm("+full.action.email_schedule_id +", "+full.action.event_schedule_id+")"); } } else { if (authorize(PAGE_CODE['events'], PRIVS[PAGE_CODE['events']]['sched_email_reminder_delete'])) { action_btns +=app.grid.create_action_btn(app.get_vars()._app.action._delete, "trash", "danger", "email_reminder._delete.confirm("+full.action.email_schedule_id +", "+full.action.event_schedule_id+")"); } } return '
'+action_btns+'
'; }}, { "data": "email_schedule_date_added"} ], "fnDrawCallback": function() { var eventReminderTbl = $("#email_reminder_list"); email_reminder._grid.config_reminder_btn(); //displayHack : recalculate the dimensions of email_reminder_list table/grid eventReminderTbl.DataTable().columns.adjust(); }, //Set column definition initialisation properties. "columnDefs": [ { "targets": [5], "orderable": true}, { "targets": [0], "orderable": false}, { "targets": [3], "orderable": true}, { "targets": [4], "width": "10%"}, { "targets": [6], "orderable": false} ], "initComplete": function(settings, json) { //add custom button beside searchbox if (authorize(PAGE_CODE['events'], PRIVS[PAGE_CODE['events']]['sched_email_reminder_create'])) { $("#email_reminder_list_wrapper div.toolbar") .html(''); } email_reminder._grid.config_reminder_btn(); } }); email_reminder.set_vars({_email_reminder : table}); }, "config_reminder_btn" : function(){ var eventReminderTbl = $("#email_reminder_list"); if(eventReminderTbl.find("span.active-sched").length > 0){ $("#email_reminder_config_btn").prop("disabled", true); }else { $("#email_reminder_config_btn").prop("disabled", false); } } }, "_validate" : { "_init": function (action, event_schedule_id, email_schedule_id) { //setup date var event_schedule_list = $("form#emailReminderForm").data("email_reminder"); var options = { boot_box: { "message": (action == "add") ? app.get_vars().email.cmsg.add_email_reminder : app.get_vars().email.cmsg.save_changes , "_continue": function () { (action == "add") ? email_reminder._create.save(event_schedule_id) : email_reminder._update.save(event_schedule_id, email_schedule_id) } }, "validation": { "custom" : { "rules": { "invalid_date": { "_fnc": function (value, element, options) { if(value.trim() != "") { if (!moment(value, "DD/MM/YYYY HH[h]mm", true).isValid()) { return false; } return true; } else { return true; } }, msg: app.get_vars().email.val.invlaid_date }, "invalid_sched_date_1": { "_fnc": function (value, element, options) { if(value.trim() != "") { if (typeof event_schedule_list != "undefined") { if(event_schedule_list.reservation_start_date != null) { if (moment(value, "DD/MM/YYYY HH[h]mm") <= moment(event_schedule_list.reservation_start_date, "DD/MM/YYYY HH[h]mm")) { return false; } } return true; } return false; } else { return true; } }, msg: "Schedule date must not less than the event reservation date." }, "invalid_sched_date_2": { "_fnc": function (value, element, options) { if(value.trim() != "") { if (typeof event_schedule_list != "undefined") { if(event_schedule_list.start_date_time != null) { if (moment(value, "DD/MM/YYYY HH[h]mm") >= moment(event_schedule_list.start_date_time, "DD/MM/YYYY HH[h]mm")) { return false; } } return true; } return false; } else { return true; } }, msg: "Schedule date must not greater than or equal event start date." } } }, "form_id": "form#emailReminderForm", "ignore": ".ignore", "rules": { "email_schedule_date": { "invalid_sched_date_1" : true, "invalid_sched_date_2" : true, "invalid_date" : true, "required" : true } } } }; app._form._validate(options); } }, "_dtimepicker" : { config: function (date_now) { var schedule = $("#email_schedule_date"); if(date_now == "now") { date_now = moment().millisecond(0).second(0).minute(0).hour(0); } else { date_now = moment(date_now, "DD/MM/YYYY HH:mm"); } email_reminder._dtimepicker.reset_dpicker(schedule, "max", false); email_reminder._dtimepicker.reset_dpicker(schedule, "min", date_now); schedule.data("DateTimePicker").date(date_now).date(null); }, reset_dpicker : function(picker, action, newvalue) { try { if (action == "min") { picker.data("DateTimePicker").minDate(false); picker.data("DateTimePicker").minDate(((newvalue!=null && newvalue!="")?newvalue:false)); } else if (action == "max") { picker.data("DateTimePicker").maxDate(((newvalue!=null && newvalue!="")?newvalue:false)); } } catch (e) { } } } };//end of return // Pass in jQuery. })(jQuery, this); $(function() { //inintialize datetimepicker $("#email_schedule_date").datetimepicker({ "locale": 'fr', "sideBySide": false, "useCurrent" : false, "ignoreReadonly": true, "format": "DD/MM/YYYY HH"+"[h]"+"mm", "minDate" : moment().millisecond(0).second(0).minute(0).hour(0) }); });