var subscribers_list = (function ($, window, jQuery) { var _vars_ = {}; return { set_vars: function (options) { $.extend(_vars_, options || {}); }, get_vars: function () { return _vars_; }, load: function () { var table = $("#subscribers_list").DataTable({ responsive: true, autoWidth: false, processing: true, //Feature control the processing indicator. serverSide: true, //Feature control DataTables' server-side processing mode. order: [0], //Initial no order. oLanguage: fr_onload_lang.oLanguage, // Load data for the table's content from an Ajax source ajax: { url: app.get_vars().baseurl + "reports/subscribers/get_subscribers_list", type: "POST", }, searching: true, columns: [ { data: "subscriber" }, { data: "email_address" }, // { "data": "membership" }, // { "data": "expiration_date" }, // { "data": "telephone_number" }, { data: "telephone_number" }, { data: "address" }, // { "data": "noshow_complete" }, // { "data": "noshow_partial" }, // { "data": "noshow_moderation" }, // { "data": "status" }, { data: "actions", orderable: false }, ], fnDrawCallback: function () { app._tooltip._hide(); $("#subscribers_list tbody tr td").each(function (x, y) { var _this = $(this); if (_this.hasClass("truncate-content-text")) { // _this.css('max-width', '140px'); this.setAttribute("title", _this.text()); this.setAttribute("data-toggle", "tooltip"); } }); app._tooltip._pop(); }, //Set column definition initialisation properties. columnDefs: [ { targets: [0], className: "truncate-content-text custom-popover-tooltip", }, { targets: [0, 1, 2, 3], orderable: false }, // { // "targets": [ 4 ], // "visible": false // }, { // "targets": [ 5, 6, 7 ], width: "10px", }, ], initComplete: function (settings, json) { //run tooltip app._tooltip._hide(); app._tooltip._pop(); //add custom button beside searchbox $("#subscribers_list_length").css({ width: "30%", float: "left" }); $(".dataTables_filter").each(function () { if ( authorize( PAGE_CODE["subscribers"], PRIVS[PAGE_CODE["subscribers"]]["export"] ) ) { $(this).append( '' + ' ' + app.get_vars().reports.btn.export_subscriber_list + "" ); } }); //fire search filter event app.grid.search_filter( "subscribers_list", subscribers_list.get_vars().subscribers ); }, }); subscribers_list.set_vars({ subscribers: table }); }, _export: function (event) { var data = subscribers_list.get_vars().subscribers.ajax.params(); var x = JSON.stringify(data, null, 4); $(event).attr( "href", app.get_vars().baseurl + "export_subscribers_list/" + $.param(data) ); }, token_modal: function (params) { var redirect_button = $("#go_token"); var url = app.get_vars().baseurl + "" + $(params).attr("data-id"); var subcriber = $(params).attr("id"); var http_request = subscribers_list.checkIfUserIsLoggedIn(params); //check subscriber if online http_request.success(function (result) { let isLoggedIn = result ? "" + $(params).attr("name") + " is currently logged in.
" : ""; app.modal.confirm_box({ message: isLoggedIn + "Voulez-vous vous connecter à la place de " + $(params).attr("name") + " ?

" + app.get_vars()._app.cma_msg.note + "", _continue: function () { //check subscriber if online subscribers_list .checkIfUserIsLoggedIn(params) .success(function (result) { // if(result){ // app._notify("warning", ""+$(params).attr('name')+" is currently logged in. "+ // "You cannot access his/her account right now."); // } else { window.open( app.get_vars().baseurl + "" + $(params).attr("data-id"), "_self" ); // } }); }, id: "delete_confirm_box", className: "delete_confirm_box", }); }); }, checkIfUserIsLoggedIn: function (params) { return $.ajax({ url: app.get_vars().baseurl + "authentication/subscriber_login_check", type: "POST", data: { subcriber: $(params).attr("id") }, }); }, delete: function (params) { app.modal.confirm_box({ message: "Voulez-vous vraiment supprimer le compte de " + $(params).attr("name") + " ?

" + app.get_vars()._app.cma_msg.note + "", _continue: function () { Helper.help.ajax( app.get_vars().baseurl + "delete_subscriber", "post", "user_id=" + $(params).attr("data-id"), function (result) { if (app.isalive(result)) { if (result.is_success > 0) { subscribers_list .get_vars() .subscribers.ajax.reload(null, false); } } } ); }, id: "delete_confirm_box", className: "delete_confirm_box", }); }, disableEnableModeration: function (params) { var ask_modal = $("#enable_disable_moderation"); var form = $("#form_enable_disable_moderation"); var subscriber_id_input_box = form.find("#subscriber_id"); var subscriber_id = $(params).attr("data-id"); app.modal.focusout_solution("on"); Helper.help.ajax( app.get_vars().baseurl + "get_user_moderation/" + subscriber_id, "get", "", function (result) { if (result.isModerationDisabled == "1") { $("#switch2").prop("checked", true); $("#numberOfDaysModeratedField").show(); $("#number_of_days_in_moderation").val( result.numberOfDaysModerated ); } else { $("#switch2").prop("checked", false); $("#numberOfDaysModeratedField").hide(); } ask_modal .modal({ backdrop: "static", keyboard: true }) .on("shown.bs.modal", function () { subscriber_id_input_box.val(subscriber_id); $("#subscriber-fullname").text($(params).attr("data-name")); $(this).off("shown.bs.modal"); }) .on("hidden.bs.modal", function () { $(this).data("bs.modal", null); $("#form_enable_disable_moderation").off("hidden.bs.modal"); app.modal.focusout_solution("off"); $("#switch2").prop("checked", false); $("#subscriber-fullname").text(""); }) .modal("show"); } ); }, edit_info_modal: function (params) { var ask_modal = $("#edit-info"); var subsciber_id = $(params).attr("data-id"); var $inputs = $("#edit_subscriber :input"); var form = $("form#edit_subscriber"); var user_id = $(params).attr("name"); var save_subscriber_btn = $(".save_subscriber"); app.modal.focusout_solution("on"); ask_modal .modal({ backdrop: "static", keyboard: true }) .on("shown.bs.modal", function () { app._form._form_submit_on_keypress("edit_subscriber", function () { subscribers_list.validate(); }); $("#first_name").focus(); // subscribers_list.postal_code_validation(".select2","#country","#postal_code","france"); // //create prefix // Helper._create_prefixif_contains("#phone","+[33] X XX XX XX XX"); // Helper._create_prefixif_contains("#mobile","+[33] X XX XX XX XX"); }) .on("hidden.bs.modal", function () { app._form._resetFormValidation("#edit_subscriber"); app._form._reset(this); $(this).data("bs.modal", null); $("#edit_subscriber").off("hidden.bs.modal"); app.modal.focusout_solution("off"); }); Helper.help.ajax( app.get_vars().baseurl + "get_subscriber", "post", "s_id=" + subsciber_id, function (result) { if (app.isalive(result)) { $("#subscriber_id").val(result.subscriber_id); $("#user_id").val(result.user_id); /*data = Helper.country_list().sort(function(a, b){ A = a.toLowerCase(); B = b.toLowerCase(); if (A > B) { if( A=="france" ) return -1 else return 1 } if (A < B) { return -1; } return 0; }); $.map(data, function (value, i) { $("#country").append("") });*/ /*$.map(Helper.country_list(), function (value, i) { $("#country").append("") }); var $select = $('#country').selectize({ create: false, //sortField: 'text', });*/ $("#country").autocomplete({ source: [Helper.country_list()], maxShowItems: 5, }); Helper.help.loop(result, function (index, value) { $inputs.each(function (i) { if ($(this).attr("id") === index && index !== "birthday") { $(this).val(value); } // if( index == "civility"){ // $('#civil_status').val(value) // } /*if( index == 'country'){ if( value !== null) { $select[0].selectize.setValue(value); } }*/ if ($(this).attr("id") === index && index === "birthday") { $("#birthday").val(value); // $('#birthday').datetimepicker({ // locale: 'fr', // format: 'MM/DD/YYYY' // }).on('dp.change',function(e){ // // if ( $(e.target).val().length > 0) { // // $(e.target).closest('.form-group').removeClass('has-error').find("span.help-block").text('') // // } // }) // /* '2017-10-08','-','/',[day[index],month[index],year[index]] */ // $("#birthday").val(((value!=null && value!="" && ($.trim(value) != "--") )?Helper.date_split(value,'-','/',[2,1,0]):"")) } }); }); } } ); }, save: function (form) { var values = { user_id: $("#user_id").val(), civility: $("#civility").val(), subscriber_id: $("#subscriber_id").val(), first_name: $("#first_name").val(), last_name: $("#last_name").val(), birthday: $("#birthday").val(), address: $("#address").val(), profession: $("#profession").val(), news_subscription: $("#news_subscription").val(), sponsorship: $("#sponsorship").val(), country: $("#country").val(), postal_code: $("#postal_code").val(), city: $("#city").val(), email_address: $("#email_address").val(), phone: $("#phone").val(), company: $("#company").val(), //mobile : $("#mobile").val(), //status : $("#status").val() }; var ask_modal = $("#edit-info"); Helper.help.ajax( app.get_vars().baseurl + "put_subscriber", "post", values, function (result) { if (app.isalive(result)) { if (result.error) { app._form._populate_field_error(result.field, result.message, 0); // }else if(Helper._prefix($("#phone").val()) < 9 ){ // app._form._populate_field_error("phone", "Entrez au moins 9 chiffres.", 0); // }else if(Helper._prefix($("#mobile").val()) < 9 ){ // app._form._populate_field_error("mobile", "Entrez au moins 9 chiffres.", 0); } else { subscribers_list.get_vars().subscribers.ajax.reload(null, false); ask_modal.modal("hide"); } } } ); }, validate: function () { var r_news_subscription, r_sponsorship, r_civility, r_first_name, r_last_name, r_bday, r_address, r_additional_address, r_country, r_postal_code, r_city, r_email_address, r_mobile, r_phone; $.getJSON( app.get_vars().baseurl + "personalize/create_reg_form_rules", function (jsonData) { for (var i = 0; i < jsonData.length; i++) { switch (jsonData[i].name) { case "first_name": r_first_name = jsonData[i].required; break; case "last_name": r_last_name = jsonData[i].required; break; case "birthday": r_bday = jsonData[i].required; break; case "civility": r_civility = jsonData[i].required; break; case "news_subscription": r_news_subscription = jsonData[i].required; break; case "sponsorship": r_sponsorship = jsonData[i].required; break; case "address": r_address = jsonData[i].required; break; // case "additional_address": // r_additional_address = jsonData[i].required; // break; case "country": r_country = jsonData[i].required; break; case "postal_code": r_postal_code = jsonData[i].required; break; case "city": r_city = jsonData[i].required; break; case "email_address": r_email_address = jsonData[i].required; break; // case "mobile": // r_mobile = jsonData[i].required; // break; case "phone": r_phone = jsonData[i].required; break; } } /*start validation*/ var options = { boot_box: { message: app.get_vars()._app.cma_msg.save_changes, _continue: function () { subscribers_list.save($("form#edit_subscriber")); }, }, validation: { ignore: ":hidden:not([class~=selectized]),:hidden > .selectized, .selectize-control .selectize-input input", // "custom" : { // "rules": { // "phone_number": { // // "_fnc": function (value, element, options) { // // if(value.trim() != "") { // // var phone = $('#phone').inputmask('unmaskedvalue'); // // if($("#phone").val() != "+[33] X XX XX XX XX" ) // // return true; // // } // // return false; // // }, // // msg: "Entrez au moins 9 chiffres." // }, // "mobile_number": { // "_fnc": function (value, element, options) { // if(value.trim() != "") { // var mobile = $('#mobile').inputmask('unmaskedvalue'); // if($("#mobile").val() != "+[33] X XX XX XX XX" ) // return true; // } // return false; // }, // msg: "Entrez au moins 9 chiffres." // } // } // }, form_id: "form#edit_subscriber", rules: { first_name: { //"required": r_first_name required: true, }, last_name: { //"required": r_last_name required: true, }, birthday: { //"required": r_bday required: false, }, address: { //"required": r_address, required: true, }, // "additional_address" : { // //"required": r_additional_address, // "required" : false // }, country: { //"required": r_country, required: true, }, postal_code: { //"required" : r_postal_code required: true, }, city: { //"required" : r_city required: true, }, email_address: { required: true, email: true, }, // "mobile" : { // //"required": r_mobile, // "required" : false // }, phone: { //"required": r_phone, required: true, }, news_subscription: { //"required": r_news_subscription, required: true, }, sponsorship: { //"required": r_news_subscription, required: true, }, }, }, }; app._form._validate(options); /*end validation*/ }, "json" ); }, postal_code_validation: function (elem1, elem2, change_elem, needle) { $(elem2).change(function (e) { if ( $(elem1).text().toLowerCase() === needle || $(elem2).text().toLowerCase() === needle ) { $(change_elem).val(""); $(change_elem).attr("minlength", 5); $(change_elem).attr("maxlength", 5); Helper.no_letters(change_elem); } else { $(change_elem).removeAttr("minlength"); $(change_elem).removeAttr("maxlength"); $(change_elem).unbind("keydown"); } }); if ( $(elem1).text().toLowerCase() === needle || $(elem2).text().toLowerCase() === needle ) { $(change_elem).attr("minlength", 5); $(change_elem).attr("maxlength", 5); Helper.no_letters(change_elem); } else { $(change_elem).removeAttr("minlength"); $(change_elem).removeAttr("maxlength"); } }, save_moderation: function () { /*start validation*/ var options = { boot_box: { message: app.get_vars()._app.cma_msg.save_changes, _continue: function () { var formData = $("#form_enable_disable_moderation").serialize(); if (formData.indexOf("isModerationDisabled") <= -1) formData += "&isModerationDisabled=0"; Helper.help.ajax( app.get_vars().baseurl + "enable_disable_user_moderation", "post", formData, function (result) { if (app.isalive(result)) { $(".disableEnableModeration").off("click"); subscribers_list .get_vars() .subscribers.ajax.reload(null, false); $("#enable_disable_moderation").modal("hide"); } } ); }, }, validation: { form_id: "#form_enable_disable_moderation", rules: { number_of_days_in_moderation: { required: false, digits: true, minlength: 0, }, }, }, }; app._form._validate(options); }, edit_subscription_modal: function (user_id) { $("#transactionDateTime").val(""); $("#subscriptionId").val(""); $("#expirationDate").val(""); $("#btn_update_subscription").css("cursor", "no-drop"); $("#btn_update_subscription").attr("disabled", true); $.ajax({ url: app.get_vars().baseurl + "subscription/get-subscription?user_id=" + user_id, type: "GET", success: function (result) { if (result) { $("#update_subscription").modal("show"); if (result.subscriptionId === "1") { $("#adhesionType").text( "Adhésion de soutien " + "(" + result.amount + "MGA)" ); } if (result.subscriptionId === "2") { $("#adhesionType").text( "Adhésion préférentielle actionnaire " + "(" + result.amount + "MGA)" ); } if (result.subscriptionId === "3") { $("#adhesionType").text( "Adhésion parrainée " + "(" + result.amount + "MGA)" ); } if (result.subscriptionId === "4") { $("#adhesionType").text( "Adhésion étudiant " + "(" + result.amount + "MGA)" ); } if (result.transactionDateTime) $("#transactionDateTime").val( moment(result.transactionDateTime).format("YYYY-MM-DD") ); if (result.expirationDate) $("#expirationDate").val( moment(result.expirationDate).format("YYYY-MM-DD") ); $("#subscriptionId").val(result.id); $("#paymentMethod").text( "Mode de paiement: " + (result.payment_mode === "card" ? "Carte bancaire" : "Chèque") ); $("#subscriberName").text( `${result.first_name} ${result.last_name}` ); } else { $("#invalid_subscription").modal("show"); } }, }); }, update_subscription: function () { if ($("#transactionDateTime").val() && $("#expirationDate").val()) { $.ajax({ url: app.get_vars().baseurl + "subscription/update-subscription", type: "POST", data: { id: $("#subscriptionId").val(), transactionDateTime: $("#transactionDateTime").val(), expirationDate: $("#expirationDate").val(), }, success: function (result) { $("#update_subscription").modal("hide"); }, }); } }, }; //end of return // Pass in jQuery. })(jQuery, this); $(function () { subscribers_list.load(); if (typeof userId !== "undefined") { subscribers_list.edit_subscription_modal(userId); } //remove validation errors on keypress app._form._form_on_keypress("edit_subscriber", function () { subscriber.validation(); }); //mask phone and mobile //Helper.input_mask("#phone", "[~][~][~] X XX XX XX XX" ); //Helper.input_mask("#mobile", "[~][~][~] X XX XX XX XX" ); /* Set input mask for mobile number depending on the country */ $("#country").on("change", function (event) { event.preventDefault(); /* Act on the event */ let countryCode = countryListCode[$("#country").val()]; let num = { code: "33", format: "X XX XX XX XX", }; /* Get phone input mask format */ if (countryCode != "FR") { $.ajax({ url: app.get_vars().baseurl + "setPreferences/getPhoneNumberFormat/" + countryCode, async: false, success: function (response) { num.code = response.code; num.format = response.format; }, }); } // $('#phone').val(''); // $('#mobile').val(''); // Helper._create_prefix("#phone", num.code, num.format); // Helper._create_prefix("#mobile", num.code, num.format); // Helper.mask("#phone",`floooor ${num.format}`, `+[${num.code}] ${num.format}` ); // Helper.mask("#mobile",`floooor ${num.format}`, `+[${num.code}] ${num.format}` ); }); $("#phone").keyup(function (e) { if (/\D/g.test($(this).val())) { this.value = this.value.replace(/\D/g, ""); } }); $("#postal_code").keyup(function (e) { if (/\D/g.test($(this).val())) { this.value = this.value.replace(/\D/g, ""); } }); $("#switch2").on("change", function (e) { if ($(e.target).is(":checked")) { $("#numberOfDaysModeratedField").show(); } else { $("#numberOfDaysModeratedField").hide(); } }); $("#transactionDateTime").on("change", function () { $("#btn_update_subscription").css("cursor", "pointer"); $("#btn_update_subscription").removeAttr("disabled"); }); $("#expirationDate").on("change", function () { $("#btn_update_subscription").css("cursor", "pointer"); $("#btn_update_subscription").removeAttr("disabled"); }); });