// ddd //Define an angular module for our app var kuzeIsCalendarDraggble; kuzeIsCalendarDraggble = true; // angular modules //$angularModules=['ngRoute','ui.bootstrap','ui.grid']; $angularModules = ['ngRoute', 'ui.bootstrap', 'ui.grid', 'builder', 'builder.components', 'validator.rules', 'ui.calendar', 'xeditable', 'checklist-model', 'ui.bootstrap.datetimepicker', 'angucomplete-alt', 'multipleSelect','monospaced.elastic']; var dayNames = ['ראשון', 'שני', 'שלישי', 'רביעי', 'חמישי', 'שישי', 'שבת']; var monthNames = ["ינואר", "פברואר", "מרץ", "אפריל", "מאי", "יוני", "יולי", "אוגוסט", "ספטמבר", "אוקטובר", "נובמבר", "דצמבר" ]; var loginNextScreen=""; (function(){Date.shortMonths=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],Date.longMonths=["January","February","March","April","May","June","July","August","September","October","November","December"],Date.shortDays=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],Date.longDays=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var t={d:function(){return(this.getDate()<10?"0":"")+this.getDate()},D:function(){return Date.shortDays[this.getDay()]},j:function(){return this.getDate()},l:function(){return Date.longDays[this.getDay()]},N:function(){return 0==this.getDay()?7:this.getDay()},S:function(){return this.getDate()%10==1&&11!=this.getDate()?"st":this.getDate()%10==2&&12!=this.getDate()?"nd":this.getDate()%10==3&&13!=this.getDate()?"rd":"th"},w:function(){return this.getDay()},z:function(){var t=new Date(this.getFullYear(),0,1);return Math.ceil((this-t)/864e5)},W:function(){var t=new Date(this.valueOf()),e=(this.getDay()+6)%7;t.setDate(t.getDate()-e+3);var n=t.valueOf();return t.setMonth(0,1),4!==t.getDay()&&t.setMonth(0,1+(4-t.getDay()+7)%7),1+Math.ceil((n-t)/6048e5)},F:function(){return Date.longMonths[this.getMonth()]},m:function(){return(this.getMonth()<9?"0":"")+(this.getMonth()+1)},M:function(){return Date.shortMonths[this.getMonth()]},n:function(){return this.getMonth()+1},t:function(){var t=this.getFullYear(),e=this.getMonth()+1;return 12===e&&(t=t++,e=0),new Date(t,e,0).getDate()},L:function(){var t=this.getFullYear();return t%400==0||t%100!=0&&t%4==0},o:function(){var t=new Date(this.valueOf());return t.setDate(t.getDate()-(this.getDay()+6)%7+3),t.getFullYear()},Y:function(){return this.getFullYear()},y:function(){return(""+this.getFullYear()).substr(2)},a:function(){return this.getHours()<12?"am":"pm"},A:function(){return this.getHours()<12?"AM":"PM"},B:function(){return Math.floor(1e3*((this.getUTCHours()+1)%24+this.getUTCMinutes()/60+this.getUTCSeconds()/3600)/24)},g:function(){return this.getHours()%12||12},G:function(){return this.getHours()},h:function(){return((this.getHours()%12||12)<10?"0":"")+(this.getHours()%12||12)},H:function(){return(this.getHours()<10?"0":"")+this.getHours()},i:function(){return(this.getMinutes()<10?"0":"")+this.getMinutes()},s:function(){return(this.getSeconds()<10?"0":"")+this.getSeconds()},u:function(){var t=this.getMilliseconds();return(10>t?"00":100>t?"0":"")+t},e:function(){return/\((.*)\)/.exec((new Date).toString())[1]},I:function(){for(var t=null,e=0;12>e;++e){var n=new Date(this.getFullYear(),e,1),i=n.getTimezoneOffset();if(null===t)t=i;else{if(t>i){t=i;break}if(i>t)break}}return this.getTimezoneOffset()==t|0},O:function(){return(-this.getTimezoneOffset()<0?"-":"+")+(Math.abs(this.getTimezoneOffset()/60)<10?"0":"")+Math.floor(Math.abs(this.getTimezoneOffset()/60))+(0==Math.abs(this.getTimezoneOffset()%60)?"00":(Math.abs(this.getTimezoneOffset()%60)<10?"0":"")+Math.abs(this.getTimezoneOffset()%60))},P:function(){return(-this.getTimezoneOffset()<0?"-":"+")+(Math.abs(this.getTimezoneOffset()/60)<10?"0":"")+Math.floor(Math.abs(this.getTimezoneOffset()/60))+":"+(0==Math.abs(this.getTimezoneOffset()%60)?"00":(Math.abs(this.getTimezoneOffset()%60)<10?"0":"")+Math.abs(this.getTimezoneOffset()%60))},T:function(){return this.toTimeString().replace(/^.+ \(?([^\)]+)\)?$/,"$1")},Z:function(){return 60*-this.getTimezoneOffset()},c:function(){return this.format("Y-m-d\\TH:i:sP")},r:function(){return this.toString()},U:function(){return this.getTime()/1e3}};Date.prototype.format=function(e){var n=this;return e.replace(/(\\?)(.)/g,function(e,i,r){return""===i&&t[r]?t[r].call(n):r})}}).call(this); function updateGlobalLanguage($scope, $newlang) { // var gLang=gLangBase[gLangCurr]; $gLang = gLangBase[$newlang]; logDebug("gLangBase[$newlang]['title1']=" + gLangBase[$newlang]['title1']); logDebug("langugage:" + $gLang['language']); // logDebug("langugage dir: "+$gLang['dir']); // logDebug("changing language to "+$newlang) $scope.spClass = $gLang['class']; // logDebug("is array? "+angular.isArray($gLang)); // logDebug("$gLang['dir']="+$gLang['dir']); // logDebug("$gLang['title1']="+$gLang['title1']); $scope.langfile = $gLang; logDebug("is array? " + angular.isArray($scope.langfile)); logDebug("$scope.langfile=" + $scope.langfile); logDebug("$scope.langfile['title1']=" + $scope.langfile['title1']); $scope.testnewvar = $scope.langfile['title1']; // $scope.message=$scope.langfile['title1']; } function getRandomColor() { var letters = '0123456789ABCDEF'.split(''); var color = '#'; for (var i = 0; i < 6; i++) { color += letters[Math.floor(Math.random() * 16)]; } return color; } function getRandomInt(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; } function calc_temp_limit_id() { var d = new Date(); var randomlimit = d.getTime(); logDebug("calc_temp_limit_id=" + randomlimit); return randomlimit; } var $gLogLevel = 'debug'; // starting logDebug("main $gLogLevel=" + $gLogLevel); logDebug("initialize angular"); logDebug("initializing modules " + $angularModules); var kuzeApp = angular.module('kuzeApp', $angularModules) //$rootScope.spClass = 'right'; kuzeRun = function() { } kuzeApp.run([ '$builder', function($builder) { logDebug("inside kuzeApp.run"); $builder.registerComponent('sampleInput', { group: 'from html', label: 'Sample', description: 'From html template', placeholder: 'placeholder', required: false, validationOptions: [{ label: 'none', rule: '/.*/' }, { label: 'number', rule: '[number]' }, { label: 'email', rule: '[email]' }, { label: 'url', rule: '[url]' }], templateUrl: '/angular-form-builder/example/template.html', popoverTemplateUrl: '/angular-form-builder/example/popoverTemplate.html' }); return $builder.registerComponent('name', { group: 'Default', label: 'Name', required: false, arrayToText: true, template: "
\n \n
\n \n
\n \n

First name

\n
\n
\n \n

Last name

\n
\n
\n
", popoverTemplate: "
\n
\n \n \n
\n
\n \n
\n\n
\n
\n \n \n \n
\n
" }); } ]) kuzeApp.run(function(editableOptions, editableThemes) { logDebug("initializing xeditable editableOptions"); editableOptions.theme = 'bs3'; // bootstrap3 theme. Can be also 'bs2', 'default' // editableOptions.defaults.mode = 'inline'; logDebug(editableOptions); // editableOptions.mode = 'inline'; editableThemes.bs3.inputClass = 'input-sm'; editableThemes.bs3.buttonsClass = 'btn-sm'; }); reload_random=Math.floor(Math.random() * 10000000); // after forms //Define Routing for app //Uri /AddNewOrder -> template add_order.html and Controller ClientsAddController //Uri /ShowOrders -> template show_orders.html and Controller ClientsAddController kuzeApp.config(['$routeProvider', function($routeProvider) { logDebug($routeProvider); $routeProvider. when('/scheduler/:event_type_id', { templateUrl: $gTemplatePrefix + 'scheduler.php', controller: 'schedulerController' }). when('/scheduleclass/:event_type_id', { templateUrl: $gTemplatePrefix + 'end_user_schedule_class.php', controller: 'scheduleClassController' }). when('/scheduler_iframev2/:event_type_id', { templateUrl: $gTemplatePrefix + 'scheduler_iframev2.php', controller: 'schedulerControllerv2' }). when('/scheduler_iframe/:event_type_id', { templateUrl: $gTemplatePrefix + 'scheduler_iframe.php', controller: 'schedulerController' }). when('/end_user_info_iframe', { templateUrl: $gTemplatePrefix + 'end_user_info_iframe.php?random='+reload_random, controller: 'endUserInfoControllerv2' }). when('/scheduleclass_iframe/:event_type_id', { templateUrl: $gTemplatePrefix + 'end_user_schedule_class_iframe.php', controller: 'scheduleClassController' }). when('/end_user_events', { templateUrl: $gTemplatePrefix + 'end_user_events.php', controller: 'endUserEventsController' }). when('/end_user_services', { templateUrl: $gTemplatePrefix + 'end_user_services.php', controller: 'endUserHomeController' // controller: 'endUserServicesController' }). when('/end_user_info', { templateUrl: $gTemplatePrefix + 'end_user_info.php?random='+reload_random, controller: 'endUserInfoController' }). when('/forms/:url_code', { templateUrl: $gTemplatePrefix + 'end_user_forms.php?vesion=3', controller: 'endUserFormsController' }). when('/cart/:cart_hash_code', { templateUrl: $gTemplatePrefix + 'end_user_cart.php?vesion=3', controller: 'endUserCartController' }). when('/buy/:cart_hash_code', { templateUrl: $gTemplatePrefix + 'end_user_cart.php?vesion=3', controller: 'endUserCartController' }). when('/cart/', { templateUrl: $gTemplatePrefix + 'end_user_cart.php?vesion=3', controller: 'endUserCartController' }). when('/tables', { templateUrl: $gTemplatePrefix + 'tables.php', controller: 'tablesController' }). when('/end_user_private', { templateUrl: $gTemplatePrefix + 'end_user_private.php', controller: 'endUserPrivateController' }). when('/contact', { templateUrl: $gTemplatePrefix + 'contact.php', controller: 'contactController' }). when('/cc/:cancel_hash_code', { templateUrl: $gTemplatePrefix + 'end_user_cancel.php', controller: 'cancelController' }). when('/user_config', { templateUrl: $gTemplatePrefix + 'user_config.php', controller: 'ConfigUserController' }). when('/', { templateUrl: $gTemplatePrefix + 'home.php', controller: 'endUserHomeController' }). otherwise({ // redirectTo: '/' }); } ]); kuzeApp.factory('sharedData', function() { var is_iframe = false; return { is_iframe: function() { return is_iframe; }, set_iframe: function(new_is_iframe) { is_iframe = new_is_iframe; }, }; }); kuzeApp.controller('menuController', ['$scope', '$location', function($scope, $location) { return true; logDebug("$scope.isCurrentPath=" + $scope.isCurrentPath); $scope.isCurrentPath = function(path) { return $location.path() == path; }; }]); kuzeApp.controller('scheduleClassController', function($scope, sharedData,$http, $routeParams, $uibModal) { event_type_id=$routeParams.event_type_id; sharedData.set_iframe(false); $scope.isUserLoggedIn=0; $scope.suggestionDate = []; $scope.suggestionDate.date = new Date(); $scope.suggestionDate.options = { // minDate: new Date(), // showWeeks: true, minView:'day', startView: 'day' }; var thetime = new Date(); $scope.filterAllDaysCheckbox=true; $scope.filterDayItems = { 'ראשון': true, 'שני': true, 'שלישי': true, 'רביעי': true, 'חמישי': true, 'שישי': true, 'שבת': true }; optionalStaffBySuggestions = function (suggestions) { var x2 = {}; for (i = 0; i < suggestions.length; i++){ x2[suggestions[i]["instructor_id"]] = {"emp_id": suggestions[i]["instructor_id"], "emp_name":suggestions[i]["buser_first_name"]+" "+suggestions[i]["buser_last_name"]}; } x3 = Object.values(x2); x3.unshift({"emp_id":0, "emp_name":"כל הצוות"}); return x3; } $scope.filterEmployees = function (esuggest) { if ($scope.selected_emp_id == 0){ return esuggest; } else { if (esuggest.instructor_id == $scope.selected_emp_id){ return esuggest; } } }; $scope.selected_emp_id = 0; $scope.style_week = function (esuggest_new_week) // this functions creates separation style (border) between different weeks { // could not make this work yet // if (esuggest_new_week) // { // return { 'border-top': '1px solid #C0C0C0'}; // } } $scope.onTimeSet = function (newDate, oldDate) { logDebug("new date "+newDate.getTime() + " old date "+oldDate.getTime()); diff=newDate.getTime()-oldDate.getTime(); // if new date is in a different week // we refetch suggestions for the current week var newDateW = new Date(newDate); var oldDateW = new Date(oldDate); // alert(newDateW.format('W')); // alert(oldDateW.format('W')); if ((newDateW.format('W')!=oldDateW.format('W')) || (newDateW.format('w')==0) || (oldDateW.format('w')==0)) { logDebug("diff is a week or more 1, refetching suggestions"); $http.get($gApiURLPrefix + "/enduser/events/suggestclass/"+event_type_id+"/0/"+newDate.getFullYear()+"/"+(newDate.getMonth()+1)+"/"+newDate.getDate()+"/"+newDate.getHours() + "/" + newDate.getMinutes() + "/0").then(function(response) { // $scope.myData = response.data; // logDebug("gridoptions="+$scope.gridOptions); $scope.classEventsSuggested = response.data; }); } } $scope.options = { customClass: getDayClass, minDate: new Date(), showWeeks: true }; $scope.dt = new Date(); function getDayClass(data) { return ''; } $scope.daysItems = [ {name:'ראשון'}, {name:'שני'}, {name:'שלישי'}, {name:'רביעי'}, {name:'חמישי'}, {name:'שישי'}, {name:'שבת'} ]; $scope.daysShort = [ {name:'א'}, {name:'ב'}, {name:'ג'}, {name:'ד'}, {name:'ה'}, {name:'ו'}, {name:'ש'} ]; $scope.filterAllDayItemsSet = function () { $scope.filterDayItems['ראשון']=$scope.filterAllDaysCheckbox; $scope.filterDayItems['שני']=$scope.filterAllDaysCheckbox; $scope.filterDayItems['שלישי']=$scope.filterAllDaysCheckbox; $scope.filterDayItems['רביעי']=$scope.filterAllDaysCheckbox; $scope.filterDayItems['חמישי']=$scope.filterAllDaysCheckbox; $scope.filterDayItems['שישי']=$scope.filterAllDaysCheckbox; $scope.filterDayItems['שבת']=$scope.filterAllDaysCheckbox; } $scope.suggestFilterDays = function (esuggest) { // logDebug(esuggest); if (($scope.filterDayItems[esuggest.start_format_dow]) & (($scope.suggestionDate.date.getTime()/1000)= activeDateEnd.valueOf())) }).forEach(function (date) { date.selectable = false; }) } } logDebug('scheduler Class Controller for event type id '+event_type_id+" "+thetime.getHours() + ":" + thetime.getMinutes() + ":" + thetime.getSeconds()); $http.get($gApiURLPrefix + "/enduser/events/suggestclass/"+event_type_id+"/0/"+thetime.getFullYear()+"/"+(thetime.getMonth()+1)+"/"+thetime.getDate()+"/"+thetime.getHours() + "/" + thetime.getMinutes() + "/0").then(function(response) { // $scope.myData = response.data; // logDebug("gridoptions="+$scope.gridOptions); $scope.classEventsSuggested = response.data; $scope.optionalEmployees = optionalStaffBySuggestions($scope.classEventsSuggested); }); $http.get($gApiURLPrefix + "/enduser/event_types/"+event_type_id).then(function(response) { // $scope.myData = response.data; // logDebug("gridoptions="+$scope.gridOptions); $scope.eventTypeDetails = response.data; if ($scope.eventTypeDetails[0].is_class!=1) { alert("this module is only available for classes"); } $scope.isUserLoggedIn=0; if (typeof $scope.eventTypeDetails!=='undefined') { if (typeof $scope.eventTypeDetails[0]!=='undefined') { $scope.isUserLoggedIn=$scope.eventTypeDetails[0]['isUserLoggedIn']; // alert(JSON.stringify($scope.isUserLoggedIn)); } } }); $scope.signUpToClass = function(selectedEvent) { selectedEventJSONDetails = JSON.stringify(selectedEvent, null, 4); // (Optional) beautiful indented output. if (selectedEvent.is_already_paid==1) { return true; } if ($scope.isUserLoggedIn==0) { logDebug("signup to class - but first - need to login"); loginNextScreen=""; nextModal=""; var modalInstance = $uibModal.open({ animation: false, templateUrl: $gTemplatePrefix + 'endUserLogin.php', controller: 'endUserLoginModal', size: 500, resolve: { startDate: function() { return 111; }, loginNextScreen: function() { return loginNextScreen; }, nextModal: function() { return nextModal; }, needs_password: function() { return 0; }, return_to_cc: function() { return 0; }, return_to_event_register: function() { return 1; }, selectedEvent: function() { return selectedEvent; }, eventTypeDetails: function() { return $scope.eventTypeDetails; }, total_to_pay: function(){ return 0; }, enduser_cart: function() { return null; }, phone_number: function() { return ""; } } }); } else { var modalInstance = $uibModal.open({ animation: false, templateUrl: $gTemplatePrefix + 'signUpToClassModal.php', controller: 'signUpToClassModalController', resolve: { selectedEvent: function() { return selectedEvent; }, isUserLoggedIn: function() { return $scope.isUserLoggedIn; }, eventTypeDetails: function() { return $scope.eventTypeDetails; } } }); } } $scope.$on("enduserReloadClassSuggestions",function(e,a) { logDebug("enduserReloadClassSuggestions"); $http.get($gApiURLPrefix + "/enduser/events/suggestclass/"+event_type_id+"/0/"+thetime.getFullYear()+"/"+(thetime.getMonth()+1)+"/"+thetime.getDate()+"/"+thetime.getHours() + "/" + thetime.getMinutes() + "/0").then(function(response) { $scope.classEventsSuggested = response.data; }); $http.get($gApiURLPrefix + "/enduser/event_types/"+event_type_id).then(function(response) { // $scope.myData = response.data; // logDebug("gridoptions="+$scope.gridOptions); $scope.eventTypeDetails = response.data; if ($scope.eventTypeDetails[0].is_class!=1) { alert("this module is only available for classes"); } }); }); }); kuzeApp.controller('tablesController', function($scope, $uibModal, $http, $timeout) { logDebug("tablesController") }); kuzeApp.controller('ConfigUserController', function($scope, $uibModal, $http, $timeout) { $scope.inTheMiddleOfSave=false; logDebug("ConfigUserController"); // $scope.ajax_info="השינויים נשמרו"; getBusinessUserRelations($http,$scope,'business_user_relations',getLoggedUserInfo_success,getLoggedUserInfo_failure); getLoggedUserInfo($http,$scope,'userProperties',getLoggedUserInfo_success,getLoggedUserInfo_failure); function getLoggedUserInfo_success() { logDebug("getLoggedUserInfo_success"); $scope.userPropertiesDuplicate = JSON.parse(JSON.stringify($scope.userProperties)); } function getLoggedUserInfo_failure() { logDebug("getLoggedUserInfo_failure"); } $scope.createBusinessModal = function() { var modalInstance = $uibModal.open({ animation: false, templateUrl: $gTemplatePrefix + 'create_business_modal.php', controller: 'create_business_modal', size: 'l', resolve: { user_phone_number: function() { return $scope.userPropertiesDuplicate[0].phone_number; } } }); modalInstance.result.then(function(result) { $scope.inTheMiddleOfSave=false; logDebug('smsResetPassword Modal2 dismissed at: ' + new Date()); }, function() { $scope.inTheMiddleOfSave=false; logDebug('modal_change_password Modal dismissed at: ' + new Date()); }); } $scope.back = function() { window.history.back(); }; $scope.changePasswordModal = function() { $scope.inTheMiddleOfSave=true; function smsResetPassword_success() { logDebug("smsResetPassword_success"); var modalInstance = $uibModal.open({ animation: false, templateUrl: $gTemplatePrefix + 'modal_change_password.php', controller: 'modal_change_password', size: 'l', resolve: { user_phone_number: function() { // passing original phone number return $scope.userPropertiesDuplicate[0].phone_number; } } }); modalInstance.result.then(function(result) { $scope.inTheMiddleOfSave=false; logDebug('smsResetPassword Modal2 finisehd result: ' + result); $scope.ajax_info="הסיסמא עודכנה בהצלחה!"; // getLoggedUserInfo($http,$scope,'userProperties',getLoggedUserInfo_success,getLoggedUserInfo_failure); $timeout(function() { $scope.ajax_info=null; }, 2000); logDebug('smsResetPassword Modal2 dismissed at: ' + new Date()); }, function() { $scope.inTheMiddleOfSave=false; logDebug('modal_change_password Modal dismissed at: ' + new Date()); }); } changePasswordSMS($http,$scope,$scope.userPropertiesDuplicate[0].phone_number,smsResetPassword_success); } $scope.updateUserConfig=function() { $scope.inTheMiddleOfSave=true; logDebug("updateUserConfig, inTheMiddleOfSave="+$scope.inTheMiddleOfSave); // logDebug($scope.userPropertiesDuplicate); // logDebug($scope.userProperties); if (angular.equals($scope.userPropertiesDuplicate[0].phone_number,$scope.userProperties[0].phone_number)) { logDebug("nothing changed in phone number, checking other data other data"); if (angular.equals($scope.userPropertiesDuplicate[0],$scope.userProperties[0])) { $scope.inTheMiddleOfSave=false; logDebug("nothing changed in details, nothing to save"); $scope.ajax_info="לא בוצעו שינויים לשמירה..."; $timeout(function() { $scope.ajax_info=null; }, 1500); } else { changeUserDetails($http,$scope,$scope.userProperties[0].first_name,$scope.userProperties[0].last_name, $scope.userProperties[0].email_address, $scope.userProperties[0].user_require_two_step,$scope.userProperties[0].accesible_mode,$scope.userProperties[0].whatsapp_desktop_app,$scope.userProperties[0].max_session_in_minutes,changeUserDetails_success, changeUserDetails_failure); $scope.ajax_info="מעדכן שינויים..."; } function changeUserDetails_success() { location.reload(); logDebug("changeUserDetails_success"); $scope.ajax_info="השינויים נשמרו בהצלחה!"; $scope.inTheMiddleOfSave=false; $timeout(function() { $scope.ajax_info=null; }, 1500); getLoggedUserInfo($http,$scope,'userProperties',getLoggedUserInfo_success,getLoggedUserInfo_failure); } function changeUserDetails_failure() { logDebug("changeUserDetails_failure"); } } else { // update user info - after verifying password logDebug("phone changed, checking if new phone is in descent format"); if (!checkPhoneNumber($scope.userProperties[0].phone_number)) { $scope.ajax_info="אנא הזן מספר טלפון סלולרי תקין לקבלת הודעות מקיוז."; $timeout(function() { $scope.ajax_info=null; }, 3000); return; } logDebug("phone changed, checking if new phone is not used already"); isNewPhoneUsedIfNotSendSMS($http,$scope,$scope.userProperties[0].phone_number, isNewPhoneUsed_success, isNewPhoneUsed_failure,false); function isNewPhoneUsed_success(response) { logDebug("phone not used - prompting for password"); var modalInstance = $uibModal.open({ animation: false, templateUrl: $gTemplatePrefix + 'modal_check_password_update_config.php', controller: 'modal_check_password_update_config', size: 'l', resolve: { new_user_proerties: function() { return $scope.userProperties[0]; } } }); modalInstance.result.then(function(result) { logDebug('modal_check_password_update_config Modal finished result: ' + result); $scope.ajax_info="השינויים נשמרו בהצלחה!"; $scope.inTheMiddleOfSave=false; getLoggedUserInfo($http,$scope,'userProperties',getLoggedUserInfo_success,getLoggedUserInfo_failure); $timeout(function() { $scope.ajax_info=null; }, 3000); }, function() { $scope.inTheMiddleOfSave=false; logDebug('modal_check_password_update_config Modal dismissed at: ' + new Date()); }); } function isNewPhoneUsed_failure(response) { $scope.ajax_info=response.message; $timeout(function() { $scope.ajax_info=null; }, 2000); } } }; }); kuzeApp.controller('modal_change_password', function($scope, sharedData,$uibModalInstance, user_phone_number, $http) { logDebug("modal_change_password controller"); $scope.phone_verification = {}; // these are the complete details for the new event // $scope.phone_verification.phone_number=user_phone_number; sharedData.set_iframe(false); $scope.phone_verification.sms_error=""; $scope.close = function() { $uibModalInstance.close('dismiss'); }; $scope.changePassword = function() { changePassword($http,$scope,$scope.phone_verification.user_password,$scope.phone_verification.user_password2,$scope.phone_verification.verification_code, changePassword_success, changePassword_failure,false); $scope.ajax_error=""; function changePassword_success() { logDebug("changePassword_success"); status="fffff"; // alert('הסיסמא עודכנה בהצלחה'); $uibModalInstance.close(true); } function changePassword_failure(response) { logDebug("changePassword_failure "+response.message); $scope.ajax_error=response.message; } } }); kuzeApp.controller('modal_check_password_update_config', function($scope,sharedData, $timeout, $uibModalInstance, new_user_proerties, $http) { $scope.new_user_proerties=new_user_proerties; logDebug("modal_check_password_update_config controller"); sharedData.set_iframe(false); // $scope.phone_verification = {}; // these are the complete details for the new event // // $scope.phone_verification.phone_number=new_user_proerties.phone_number; $scope.close = function() { $uibModalInstance.close('dismiss'); }; $scope.changePhoneNumber = function() { changeUserDetailsVerify($http,$scope,$scope.new_user_proerties.phone_number,$scope.new_user_proerties.first_name,$scope.new_user_proerties.last_name, $scope.new_user_proerties.email_address,$scope.verify_user_password,$scope.phone_verification,changeUserDetailsVerify_success, changeUserDetailsVerify_failure,false); function changeUserDetailsVerify_success() { logDebug("changeUserDetailsVerify_success"); // alert('השינויים עודכנו בהצלחה'); $uibModalInstance.close(true); } function changeUserDetailsVerify_failure(response) { logDebug("changeUserDetailsVerify_failure "+response.message); $scope.ajax_error=response.message+"."; $timeout(function() { $scope.ajax_error=null; }, 4000); } } }); kuzeApp.controller('schedulerController', function($scope,sharedData, $http, $routeParams, $uibModal) { event_type_id=$routeParams.event_type_id; sharedData.set_iframe(false); // all these are relate to the calendar - begin $scope.isUserLoggedIn=0; $scope.suggestionDate = []; $scope.suggestionDate.date = new Date(); $scope.suggestionDate.options = { // minDate: new Date(), // showWeeks: true, minView:'day', startView: 'day' }; var thetime = new Date(); $scope.filterAllDaysCheckbox=true; $scope.filterDayItems = { 'ראשון': true, 'שני': true, 'שלישי': true, 'רביעי': true, 'חמישי': true, 'שישי': true, 'שבת': true }; $scope.onTimeSet = function (newDate, oldDate) { logDebug("new date "+newDate.getTime() + " old date "+oldDate.getTime()); diff=newDate.getTime()-oldDate.getTime(); // if new date is in a different week // we refetch suggestions for the current week var newDateW = new Date(newDate); var oldDateW = new Date(oldDate); // alert(newDateW.format('W')); // alert(oldDateW.format('W')); // if (newDateW.format('W')!=oldDateW.format('W')) if ((newDateW.format('W')!=oldDateW.format('W')) || (newDateW.format('w')==0) || (oldDateW.format('w')==0)) { logDebug("diff is a week or more 2, refetching suggestions"); $http.get($gApiURLPrefix + "/enduser/events/suggest/"+event_type_id+"/0/"+newDate.getFullYear()+"/"+(newDate.getMonth()+1)+"/"+newDate.getDate()+"/"+newDate.getHours() + "/" + newDate.getMinutes()).then(function(response) { // $scope.myData = response.data; // logDebug("gridoptions="+$scope.gridOptions); $scope.eventsSuggested = response.data; $scope.optionalEmployees = optionalStaffBySuggestions($scope.eventsSuggested); }); } } optionalStaffBySuggestions = function (suggestions) { var x2 = {}; for (i = 0; i < suggestions.length; i++){ x2[suggestions[i]["emp_id"]] = {"emp_id": suggestions[i]["emp_id"], "emp_name":suggestions[i]["emp_name"]}; } x3 = Object.values(x2); x3.unshift({"emp_id":0, "emp_name":"כל הצוות"}); return x3; } $scope.filterEmployees = function (esuggest) { if ($scope.selected_emp_id == 0){ return esuggest; } else { if (esuggest.emp_id == $scope.selected_emp_id){ return esuggest; } } }; $scope.selected_emp_id = 0; $scope.$on("enduserReloadEventSuggestions",function(e,a) { // to event logDebug('schedulerController for event type id '+event_type_id+" "+thetime.getHours() + ":" + thetime.getMinutes() + ":" + thetime.getSeconds()); $http.get($gApiURLPrefix + "/enduser/events/suggest/"+event_type_id+"/0/"+thetime.getFullYear()+"/"+(thetime.getMonth()+1)+"/"+thetime.getDate()+"/"+thetime.getHours() + "/" + thetime.getMinutes()).then(function(response) { // $scope.myData = response.data; // logDebug("gridoptions="+$scope.gridOptions); $scope.eventsSuggested = response.data; $scope.optionalEmployees = optionalStaffBySuggestions($scope.eventsSuggested); }); }); $scope.style_week = function (esuggest_new_week) // this functions creates separation style (border) between different weeks { // could not make this work yet // if (esuggest_new_week) // { // return { 'border-top': '1px solid #C0C0C0'}; // } } $scope.options = { customClass: getDayClass, minDate: new Date(), showWeeks: true }; $scope.dt = new Date(); function getDayClass(data) { return ''; } $scope.daysItems = [ {name:'ראשון'}, {name:'שני'}, {name:'שלישי'}, {name:'רביעי'}, {name:'חמישי'}, {name:'שישי'}, {name:'שבת'} ]; $scope.daysShort = [ {name:'א'}, {name:'ב'}, {name:'ג'}, {name:'ד'}, {name:'ה'}, {name:'ו'}, {name:'ש'} ]; $scope.filterAllDayItemsSet = function () { $scope.filterDayItems['ראשון']=$scope.filterAllDaysCheckbox; $scope.filterDayItems['שני']=$scope.filterAllDaysCheckbox; $scope.filterDayItems['שלישי']=$scope.filterAllDaysCheckbox; $scope.filterDayItems['רביעי']=$scope.filterAllDaysCheckbox; $scope.filterDayItems['חמישי']=$scope.filterAllDaysCheckbox; $scope.filterDayItems['שישי']=$scope.filterAllDaysCheckbox; $scope.filterDayItems['שבת']=$scope.filterAllDaysCheckbox; } $scope.suggestFilterDays = function (esuggest) { // logDebug(esuggest); if (($scope.filterDayItems[esuggest.start_format_dow]) & (($scope.suggestionDate.date.getTime()/1000)= activeDateEnd.valueOf())) }).forEach(function (date) { date.selectable = false; }) } } }); kuzeApp.controller('schedulerControllerv2', function($scope, $http, $routeParams, $uibModal,sharedData,$window) { event_type_id=$routeParams.event_type_id; sharedData.set_iframe(true); // all these are relate to the calendar - begin $scope.isUserLoggedIn=0; $scope.suggestionDate = []; $scope.suggestionDate.date = new Date(); $scope.suggestionDate.options = { // minDate: new Date(), // showWeeks: true, minView:'day', startView: 'day' }; var thetime = new Date(); $scope.filterAllDaysCheckbox=true; $scope.filterDayItems = { 'ראשון': true, 'שני': true, 'שלישי': true, 'רביעי': true, 'חמישי': true, 'שישי': true, 'שבת': true }; $scope.onTimeSet = function (newDate, oldDate) { logDebug("new date "+newDate.getTime() + " old date "+oldDate.getTime()); diff=newDate.getTime()-oldDate.getTime(); // if new date is in a different week // we refetch suggestions for the current week var newDateW = new Date(newDate); var oldDateW = new Date(oldDate); // alert(newDateW.format('W')); // alert(oldDateW.format('W')); // if (newDateW.format('W')!=oldDateW.format('W')) if ((newDateW.format('W')!=oldDateW.format('W')) || (newDateW.format('w')==0) || (oldDateW.format('w')==0)) { logDebug("diff is a week or more 2, refetching suggestions"); $http.get($gApiURLPrefix + "/enduser/events/suggest_iframe/"+event_type_id+"/0/"+newDate.getFullYear()+"/"+(newDate.getMonth()+1)+"/"+newDate.getDate()+"/"+newDate.getHours() + "/" + newDate.getMinutes()).then(function(response) { // $scope.myData = response.data; // logDebug("gridoptions="+$scope.gridOptions); $scope.eventsSuggested = response.data; $scope.optionalEmployees = optionalStaffBySuggestions($scope.eventsSuggested); }); } } optionalStaffBySuggestions = function (suggestions) { var x2 = {}; for (i = 0; i < suggestions.length; i++){ x2[suggestions[i]["emp_id"]] = {"emp_id": suggestions[i]["emp_id"], "emp_name":suggestions[i]["emp_name"]}; } x3 = Object.values(x2); x3.unshift({"emp_id":0, "emp_name":"כל הצוות"}); return x3; } $scope.filterEmployees = function (esuggest) { if ($scope.selected_emp_id == 0){ return esuggest; } else { if (esuggest.emp_id == $scope.selected_emp_id){ return esuggest; } } }; $scope.selected_emp_id = 0; $scope.$on("reload_data",function(e,a) { // to event logDebug('reload_data for event type id '+event_type_id+" "+thetime.getHours() + ":" + thetime.getMinutes() + ":" + thetime.getSeconds()); $http.get($gApiURLPrefix + "/enduser/events/suggest_iframe/"+event_type_id+"/0/"+thetime.getFullYear()+"/"+(thetime.getMonth()+1)+"/"+thetime.getDate()+"/"+thetime.getHours() + "/" + thetime.getMinutes()).then(function(response) { // $scope.myData = response.data; // logDebug("gridoptions="+$scope.gridOptions); $scope.eventsSuggested = response.data; $scope.optionalEmployees = optionalStaffBySuggestions($scope.eventsSuggested); }); $http.get($gApiURLPrefix + "/enduser/event_types/"+event_type_id).then(function(response) { // $scope.myData = response.data; // logDebug("gridoptions="+$scope.gridOptions); $scope.eventTypeDetails = response.data; if (typeof $scope.eventTypeDetails!=='undefined') { if (typeof $scope.eventTypeDetails[0]!=='undefined') { $scope.isUserLoggedIn=$scope.eventTypeDetails[0]['isUserLoggedIn']; // alert(JSON.stringify($scope.isUserLoggedIn)); } } }); }); $scope.style_week = function (esuggest_new_week) // this functions creates separation style (border) between different weeks { // could not make this work yet // if (esuggest_new_week) // { // return { 'border-top': '1px solid #C0C0C0'}; // } } $scope.options = { customClass: getDayClass, minDate: new Date(), showWeeks: true }; $scope.dt = new Date(); function getDayClass(data) { return ''; } $scope.daysItems = [ {name:'ראשון'}, {name:'שני'}, {name:'שלישי'}, {name:'רביעי'}, {name:'חמישי'}, {name:'שישי'}, {name:'שבת'} ]; $scope.daysShort = [ {name:'א'}, {name:'ב'}, {name:'ג'}, {name:'ד'}, {name:'ה'}, {name:'ו'}, {name:'ש'} ]; $scope.filterAllDayItemsSet = function () { $scope.filterDayItems['ראשון']=$scope.filterAllDaysCheckbox; $scope.filterDayItems['שני']=$scope.filterAllDaysCheckbox; $scope.filterDayItems['שלישי']=$scope.filterAllDaysCheckbox; $scope.filterDayItems['רביעי']=$scope.filterAllDaysCheckbox; $scope.filterDayItems['חמישי']=$scope.filterAllDaysCheckbox; $scope.filterDayItems['שישי']=$scope.filterAllDaysCheckbox; $scope.filterDayItems['שבת']=$scope.filterAllDaysCheckbox; } $scope.suggestFilterDays = function (esuggest) { // logDebug(esuggest); if (($scope.filterDayItems[esuggest.start_format_dow]) & (($scope.suggestionDate.date.getTime()/1000)= activeDateEnd.valueOf())) }).forEach(function (date) { date.selectable = false; }) } } }); kuzeApp.controller('contactController', function($scope, $http) { logDebug('contactController'); }); kuzeApp.controller('signUpToEventModalController', function($scope, sharedData, $uibModal, $sce, $route,$rootScope, $uibModalInstance, $location, selectedEvent, eventTypeDetails, isUserLoggedIn,$http,$window) { $scope.selectedEvent = selectedEvent; $scope.eventTypeDetails = eventTypeDetails; $scope.isUserLoggedIn=isUserLoggedIn; // alert(sharedData.is_iframe()); $scope.business_takanon = $sce.trustAsHtml(eventTypeDetails[0].business_takanon); $scope.selectedEvent.user_signed_takanon=$scope.eventTypeDetails[0].user_signed_takanon; selectedDateStart = new Date($scope.selectedEvent.start_time); logError("scope.selectedEvent.start_time 2=" + $scope.selectedEvent.start_time); logDebug("selectedDateStart=" + selectedDateStart); // fixing timezone var selectedDateStart = new Date(selectedDateStart.getTime() + selectedDateStart.getTimezoneOffset() * 60000); $scope.selectedEvent.txtstartDay = selectedDateStart.getDate(); $scope.selectedEvent.txtstartMonth = 1 + selectedDateStart.getMonth(); $scope.selectedEvent.txtstartMonth = monthNames[$scope.selectedEvent.txtstartMonth - 1]; $scope.selectedEvent.txtstartYear = selectedDateStart.getFullYear(); $scope.selectedEvent.eventtype = $scope.eventTypeDetails[0]; $scope.selectedEvent.requires_payment = $scope.eventTypeDetails[0].requires_payment; $scope.selectedEvent.requires_payment_amount = $scope.eventTypeDetails[0].requires_payment_amount; logDebug('signUpToEventModalController '+ JSON.stringify($scope.selectedEvent, null, 4) + JSON.stringify($scope.eventTypeDetails, null, 4)); $scope.okLimitationModal = function() { if (sharedData.is_iframe()) { // iframe logDebug("reloading data iframe"); $rootScope.$broadcast('reload_data'); // pass object in {} if you wanna to pass anything $uibModalInstance.close(''); } else { logDebug("no iframe enduserReloadEventSuggestions"); $rootScope.$broadcast('enduserReloadEventSuggestions'); // pass object in {} if you wanna to pass anything $uibModalInstance.close(''); } }; $scope.inprogress=false; $scope.endUserCreateEvent = function() { $scope.inprogress=true; logDebug("function: endUserCreateEvent"); $http({ method: 'POST', url: '/api/enduser/events/create', data: $scope.selectedEvent, headers: { 'Content-Type': 'application/json;charset=utf-8' } }).success(function(data) { $scope.inprogress=false; logDebug(data); if (!data.success) { logDebug("error creating event " + data.message); alert(data.message); // $scope.phone_verification.sms_error = data.Message; } else { logDebug("success 1"); if ($scope.eventTypeDetails[0].requires_payment==1) { logDebug("requires payment 1 - data.enduser_cart="+JSON.stringify(data.enduser_cart)); $uibModalInstance.close(''); // requires payment var modalInstance = $uibModal.open({ animation: false, templateUrl: $gTemplatePrefix + 'end_user_pay_cc.php', controller: 'end_user_pay_cc_controller', size: 500, resolve: { total_to_pay: function() { return data.json.events_paid_amount; }, prepaid_amount: function() { return data.json.requires_payment_amount; }, first_name: function() { return data.json.user_first_name; }, last_name: function() { return data.json.user_last_name; }, phone_number: function() { return data.json.user_phone_number; }, lock_minutes: function() { return data.json.lock_minutes; }, enduser_cart: function() { return data.json; } } }); modalInstance.result.then(function(selectedItem) { $scope.selected = selectedItem; }, function() { logDebug('Modal dismissed at: ' + new Date()); }); } else { // doesnt require payment // $location.path("/end_user_events"); $uibModalInstance.close(''); // logDebug("broadcasting enduserReloadEventSuggestions"); // $rootScope.$broadcast('enduserReloadEventSuggestions'); // pass object in {} if you wanna to pass anything // go to user page to see event if (sharedData.is_iframe()) { window.location="/v2/#/end_user_info_iframe"; } else { $location.path('/end_user_info'); } $route.reload(); } } }); }; }); kuzeApp.controller('signUpToClassModalController', function($rootScope, $uibModal, $sce,$scope, $uibModalInstance, $location, isUserLoggedIn,selectedEvent, eventTypeDetails,$http) { $scope.selectedEvent = selectedEvent; $scope.eventTypeDetails = eventTypeDetails; $scope.isUserLoggedIn=isUserLoggedIn; $scope.business_takanon = $sce.trustAsHtml(eventTypeDetails[0].business_takanon); logError("scope.selectedEvent.start_time 1=" + $scope.selectedEvent.start_time); selectedDateStart = new Date(($scope.selectedEvent.start_time).replace(/ /g,"T")); logDebug("selectedDateStart=" + selectedDateStart); // fixing timezone var selectedDateStart = new Date(selectedDateStart.getTime() + selectedDateStart.getTimezoneOffset() * 60000); $scope.selectedEvent.txtstartDay = selectedDateStart.getDate(); $scope.selectedEvent.txtstartMonth = 1 + selectedDateStart.getMonth(); $scope.selectedEvent.txtstartMonth = monthNames[$scope.selectedEvent.txtstartMonth - 1]; $scope.selectedEvent.txtstartYear = selectedDateStart.getFullYear(); // $scope.selectedEvent.eventtype = $scope.eventTypeDetails[0]; $scope.selectedEvent.user_signed_takanon=$scope.eventTypeDetails[0].user_signed_takanon; // logDebug('signUpToClassModalController '+ JSON.stringify($scope.selectedEvent, null, 4) + JSON.stringify($scope.eventTypeDetails, null, 4)); logDebug('signUpToClassModalController '+ JSON.stringify($scope.selectedEvent, null, 4) ); logDebug('signUpToClassModalController '+ JSON.stringify($scope.eventTypeDetails, null, 4) ); $scope.selectedEvent.requires_payment = $scope.eventTypeDetails[0].requires_payment; $scope.selectedEvent.requires_payment_amount = $scope.eventTypeDetails[0].requires_payment_amount; $scope.cancel = function() { logDebug("cancel"); $rootScope.$broadcast('enduserReloadClassSuggestions'); // pass object in {} if you wanna to pass anything $uibModalInstance.close(''); }; $scope.inprogress=false; $scope.endUserClassCancel = function() { $scope.inprogress=true; cancelClassSubscribe($http,$scope,$scope.selectedEvent.event_id,$scope.selectedEvent,cancelClassSubscribe_success); function cancelClassSubscribe_success() { $scope.inprogress=false; logDebug("success cancelClassSubscribe"); $uibModalInstance.close(''); logDebug("broadcasting enduserReloadClassSuggestions"); $rootScope.$broadcast('enduserReloadClassSuggestions'); // pass object in {} if you wanna to pass anything $rootScope.$broadcast('enduserReloadEndUserInfo'); // pass object in {} if you wanna to pass anything } }; $scope.endUserClassJoingWaiting = function() { $scope.inprogress=true; subscribeClassWaiting($http,$scope,$scope.selectedEvent.event_id,$scope.selectedEvent,subscribeClassWaiting_success); function subscribeClassWaiting_success() { $scope.inprogress=false; logDebug("success subscribeClassWaiting"); $uibModalInstance.close(''); logDebug("broadcasting enduserReloadClassSuggestions"); $rootScope.$broadcast('enduserReloadClassSuggestions'); // pass object in {} if you wanna to pass anything } }; $scope.endUserClassJoin = function() { $scope.inprogress=true; $http({ method: 'POST', url: '/api/enduser/class/signup/'+$scope.selectedEvent.event_id, data: $scope.selectedEvent, headers: { 'Content-Type': 'application/json;charset=utf-8' } }).success(function(data) { logDebug(data); $scope.inprogress=false; if (!data.success) { logDebug("error signing up to class " + data.message); alert(data.message); // $scope.phone_verification.sms_error = data.Message; } else { // success !! if ($scope.eventTypeDetails[0].requires_payment==0) // doesnt require payment { logDebug("success 2"); // $location.path("/end_user_events"); // location.reload(); $uibModalInstance.close(''); logDebug("broadcasting enduserReloadClassSuggestions"); $rootScope.$broadcast('enduserReloadClassSuggestions'); // pass object in {} if you wanna to pass anything } else { logDebug("requires payment 2 - data.enduser_cart="+JSON.stringify(data.enduser_cart)); logDebug("requires payment 2 - data.json="+JSON.stringify(data.json)); $uibModalInstance.close(''); // requires payment var modalInstance = $uibModal.open({ animation: false, templateUrl: $gTemplatePrefix + 'end_user_pay_cc.php', controller: 'end_user_pay_cc_controller', size: 500, resolve: { total_to_pay: function() { return data.json.events_paid_amount; }, prepaid_amount: function() { return data.json.requires_payment_amount; }, first_name: function() { return data.json.user_first_name; }, last_name: function() { return data.json.user_last_name; }, phone_number: function() { return data.json.user_phone_number; }, lock_minutes: function() { return data.json.lock_minutes; }, enduser_cart: function() { return data.json; } } }); modalInstance.result.then(function(selectedItem) { $scope.selected = selectedItem; }, function() { logDebug('Modal dismissed at: ' + new Date()); }); } } }); }; }); kuzeApp.controller('endUserLoginModal', function($scope, return_to_event_register, selectedEvent,eventTypeDetails,enduser_cart,phone_number, $uibModal,$timeout,needs_password, return_to_cc, total_to_pay, $uibModalInstance, $location, $http, startDate, uiCalendarConfig) { $scope.step2registerShow = false; $scope.step1sendcodeShow = true; $scope.step4SMSPassResetShow = false; $scope.needs_password=needs_password; $scope.return_to_cc=return_to_cc; $scope.total_to_pay=total_to_pay; $scope.enduser_cart=enduser_cart; $scope.return_to_event_register=return_to_event_register; $scope.selectedEvent=selectedEvent; $scope.eventTypeDetails=eventTypeDetails; // logDebug("eventTypeDetails="+JSON.stringify($scope.eventTypeDetails)); // logDebug("eventTypeDetails is_class="+JSON.stringify($scope.eventTypeDetails[0]['is_class'])); $scope.phone_verification = {}; // these are the complete details for the new event // $scope.phone_verification.phone_number=phone_number; logDebug('endUserLoginModal, needs_password='+needs_password+", phone_number="+$scope.phone_verification.phone_number); $scope.cancel = function() { $uibModalInstance.close(''); }; $scope.endUserLoginStep = "phoneVerifyStep1"; logDebug("function: test1 $scope.phone_verification.phone_number="+$scope.phone_verification.phone_number); $scope.enduser_login_two_step_resend_sms=function() { logDebug("function: enduser_login_two_step_resend_sms"); $scope.step2registerShow = false; $scope.two_step_login=0; $scope.step1sendcodeShow = true; $scope.step4SMSPassResetShow = false; $scope.endUserLoginStep = "phoneVerifyStep1"; $scope.SubmitEndUserLogin(); } $scope.SubmitEndUserLogin = function() { $scope.ajax_in_progress=true; logDebug("function: SubmitEndUserLogin, $scope.endUserLoginStep="+$scope.endUserLoginStep); logDebug("function: test4 $scope.phone_verification.phone_number="+$scope.phone_verification.phone_number); if ($scope.endUserLoginStep == "phoneVerifyStep1") { $scope.phoneVerifyStep1(); } else if ($scope.endUserLoginStep == "registerEndUser") { $scope.registerEndUser(); } else if ($scope.endUserLoginStep == "loginEndUser") { $scope.loginEndUser(); } else if ($scope.endUserLoginStep == "loginEndUserAndChangePassword") { $scope.loginEndUserAndChangePassword(); } logDebug("end of SubmitEndUserLogin"); return false; } // function for reseting password for existing user // using sms verification // first sending a new sms code, and then verifying it // and "forcing" the user to enter a new password $scope.SMSPassReset = function () { $scope.phone_verification.checkexists = false; $scope.phone_verification.sendsms = false; $http({ method: 'POST', url: '/api/enduser/phone_verification/change_password_login', data: $scope.phone_verification, headers: { 'Content-Type': 'application/json;charset=utf-8' } }).success(function(data) { logDebug(data); if ((!data.success) || (data.success=="false")) { logDebug("error " + data.message); $scope.phone_verification.sms_error = data.Message; } else { logDebug("success 3"); $scope.endUserLoginStep = "loginEndUserAndChangePassword"; $scope.phone_verification.sms_error = ""; $scope.step1sendcodeShow = false; $scope.step2registerShow = false; $scope.step4SMSPassResetShow = true; $scope.step3loginShow = false; // $scope.phone_verification.sms_error = "הזן קוד זיהוי שנשלח אליך בסמס"; } }); } $scope.sms_two_step_login = function () { $scope.phone_verification.checkexists = false; $scope.phone_verification.sendsms = false; $http({ method: 'POST', url: '/api/enduser/phone_verification/two_step_login', data: $scope.phone_verification, headers: { 'Content-Type': 'application/json;charset=utf-8' } }).success(function(data) { logDebug(data); if ((!data.success) || (data.success=="false")) { logDebug("error " + data.message); $scope.phone_verification.sms_error = data.Message; } else { logDebug("success 3"); $scope.endUserLoginStep = "loginEndUserAndChangePassword"; $scope.phone_verification.sms_error = ""; $scope.step1sendcodeShow = false; $scope.step2registerShow = false; $scope.step4SMSPassResetShow = true; $scope.step3loginShow = false; // $scope.phone_verification.sms_error = "הזן קוד זיהוי שנשלח אליך בסמס"; } }); } $scope.registerEndUser = function() { $scope.ajax_in_progress=true; logDebug("registerEndUser"); $scope.phone_verification.needs_password=0; $http({ method: 'POST', url: '/api/enduser/create', data: $scope.phone_verification, // pass in data as strings // data : $.param($scope.formData), // pass in data as strings JQUERY // data : 'first_name=' + $scope.formData.first_name + '&last_name=' + $scope.formData.last_name, // WORKING // data : { first_name: "hardfirst", last_name: "hardlast" }, headers: { 'Content-Type': 'application/json;charset=utf-8' } }).success(function(data) { $scope.ajax_in_progress=false; logDebug(data); if (!data.success) { logDebug("error " + data.message); $scope.phone_verification.sms_error = data.message; // if not successful, bind errors to error variables // $scope.errorName = data.errors.name; // $scope.errorSuperhero = data.errors.superheroAlias; } else { logDebug("success 4"); user_first_name=data.user_first_name; user_last_name=data.user_last_name; user_phone_number=data.user_phone_number; if ($scope.return_to_event_register==1) { setTimeout(function(){ $uibModalInstance.close(''); }, 300); // return to register class/event after login - for iframe // hagai_iframe // for class: if ($scope.eventTypeDetails[0]['is_class']==1) { var modalInstance = $uibModal.open({ animation: false, templateUrl: $gTemplatePrefix + 'signUpToClassModal.php', controller: 'signUpToClassModalController', resolve: { selectedEvent: function() { return selectedEvent; }, isUserLoggedIn: function() { return $scope.isUserLoggedIn; }, eventTypeDetails: function() { return $scope.eventTypeDetails; } } }); } // for event: else { var modalInstance = $uibModal.open({ animation: false, templateUrl: $gTemplatePrefix + 'signUpToEventModal.php', controller: 'signUpToEventModalController', resolve: { selectedEvent: function() { return selectedEvent; }, isUserLoggedIn: function() { return $scope.isUserLoggedIn; }, eventTypeDetails: function() { return $scope.eventTypeDetails; } } }); } } else if (return_to_cc==0) { logDebug("enduserlogin return_to_cc=0"); $location.path(loginNextScreen); location.reload(); } else { setTimeout(function(){ $uibModalInstance.close(''); }, 300); var modalInstance = $uibModal.open({ animation: false, templateUrl: $gTemplatePrefix + 'end_user_pay_cc.php', controller: 'end_user_pay_cc_controller', size: 500, resolve: { total_to_pay: function() { return $scope.total_to_pay; }, prepaid_amount: function() { return 0; }, first_name: function() { return user_first_name; }, last_name: function() { return user_last_name; }, phone_number: function() { return user_phone_number; } , lock_minutes: function() { return 0; }, enduser_cart: function() { return $scope.enduser_cart; } } }); modalInstance.result.then(function(selectedItem) { $scope.selected = selectedItem; }, function() { logDebug('Modal dismissed at: ' + new Date()); location.reload(); }); } } }); } $scope.loginEndUserAndChangePassword = function() { logDebug("loginEndUserAndChangePassword"); $http({ method: 'POST', url: '/api/enduser/changepasswordlogin', data: $scope.phone_verification, // pass in data as strings // data : $.param($scope.formData), // pass in data as strings JQUERY // data : 'first_name=' + $scope.formData.first_name + '&last_name=' + $scope.formData.last_name, // WORKING // data : { first_name: "hardfirst", last_name: "hardlast" }, headers: { 'Content-Type': 'application/json;charset=utf-8' } }).success(function(data) { $scope.ajax_in_progress=false; logDebug(data); if (!data.success) { logDebug("error " + data.message); $scope.phone_verification.sms_error = data.message; if (data.message=="password_safe") { window.location.href = '/password_update.php'; } } else { logDebug("success 5"); user_first_name=data.user_first_name; user_last_name=data.user_last_name; user_phone_number=data.user_phone_number; // if (return_to_cc==0) if ($scope.return_to_event_register==1) { setTimeout(function(){ $uibModalInstance.close(''); }, 300); // return to register class/event after login - for iframe // hagai_iframe // for class: if ($scope.eventTypeDetails[0]['is_class']==1) { var modalInstance = $uibModal.open({ animation: false, templateUrl: $gTemplatePrefix + 'signUpToClassModal.php', controller: 'signUpToClassModalController', resolve: { selectedEvent: function() { return selectedEvent; }, isUserLoggedIn: function() { return $scope.isUserLoggedIn; }, eventTypeDetails: function() { return $scope.eventTypeDetails; } } }); } // for event: else { var modalInstance = $uibModal.open({ animation: false, templateUrl: $gTemplatePrefix + 'signUpToEventModal.php', controller: 'signUpToEventModalController', resolve: { selectedEvent: function() { return selectedEvent; }, isUserLoggedIn: function() { return $scope.isUserLoggedIn; }, eventTypeDetails: function() { return $scope.eventTypeDetails; } } }); } } else if (true) { location.reload(); } else { setTimeout(function(){ $uibModalInstance.close(''); }, 300); var modalInstance = $uibModal.open({ animation: false, templateUrl: $gTemplatePrefix + 'end_user_pay_cc.php', controller: 'end_user_pay_cc_controller', size: 500, resolve: { total_to_pay: function() { return $scope.total_to_pay; }, first_name: function() { return user_first_name; }, prepaid_amount: function() { return 0; }, last_name: function() { return user_last_name; }, phone_number: function() { return user_phone_number; } , lock_minutes: function() { return 0; }, enduser_cart: function() { return $scope.enduser_cart; } } }); modalInstance.result.then(function(selectedItem) { $scope.selected = selectedItem; }, function() { logDebug('Modal dismissed at: ' + new Date()); location.reload(); }); } } }); } $scope.two_step_login=false; $scope.save_two_step_login_cookie=false; $scope.loginEndUser = function() { $scope.phone_verification.sms_error = ""; $scope.phone_verification.two_step_login = $scope.two_step_login; $scope.phone_verification.save_two_step_login_cookie=$scope.save_two_step_login_cookie; $scope.ajax_in_progress=true; logDebug("loginEndUser"); $http({ method: 'POST', url: '/api/enduser/login', data: $scope.phone_verification, // pass in data as strings // data : $.param($scope.formData), // pass in data as strings JQUERY // data : 'first_name=' + $scope.formData.first_name + '&last_name=' + $scope.formData.last_name, // WORKING // data : { first_name: "hardfirst", last_name: "hardlast" }, headers: { 'Content-Type': 'application/json;charset=utf-8' } }).success(function(data) { $scope.ajax_in_progress=false; logDebug(data); if (!data.success) { if (data.two_step_login) { $scope.two_step_login=true; } else { // $scope.two_step_login=false; } $scope.phone_verification.sms_error = data.message; logDebug("loginEndUser error " + data.message+" two_step_login="+$scope.two_step_login); // if not successful, bind errors to error variables // $scope.errorName = data.errors.name; // $scope.errorSuperhero = data.errors.superheroAlias; } else { logDebug("loginEndUser success 6 data="); user_first_name=data.user_first_name; user_last_name=data.user_last_name; user_phone_number=data.user_phone_number; if ($scope.return_to_event_register==1) { setTimeout(function(){ $uibModalInstance.close(''); }, 300); // return to register class/event after login - for iframe // hagai_iframe // for class: if ($scope.eventTypeDetails[0]['is_class']==1) { var modalInstance = $uibModal.open({ animation: false, templateUrl: $gTemplatePrefix + 'signUpToClassModal.php', controller: 'signUpToClassModalController', resolve: { selectedEvent: function() { return selectedEvent; }, isUserLoggedIn: function() { return $scope.isUserLoggedIn; }, eventTypeDetails: function() { return $scope.eventTypeDetails; } } }); } // for event: else { var modalInstance = $uibModal.open({ animation: false, templateUrl: $gTemplatePrefix + 'signUpToEventModal.php', controller: 'signUpToEventModalController', resolve: { selectedEvent: function() { return selectedEvent; }, isUserLoggedIn: function() { return $scope.isUserLoggedIn; }, eventTypeDetails: function() { return $scope.eventTypeDetails; } } }); } } else if (return_to_cc==0) { $scope.ajax_in_progress=true; $location.path(loginNextScreen); location.reload(); } else { setTimeout(function(){ $uibModalInstance.close(''); }, 300); var modalInstance = $uibModal.open({ animation: false, templateUrl: $gTemplatePrefix + 'end_user_pay_cc.php', controller: 'end_user_pay_cc_controller', size: 500, resolve: { total_to_pay: function() { return $scope.total_to_pay; }, prepaid_amount: function() { return 0; }, first_name: function() { return user_first_name; }, last_name: function() { return user_last_name; }, phone_number: function() { return user_phone_number; }, lock_minutes: function() { return 0; }, enduser_cart: function() { return $scope.enduser_cart; } } }); modalInstance.result.then(function(selectedItem) { $scope.selected = selectedItem; }, function() { logDebug('Modal dismissed at: ' + new Date()); location.reload(); }); } } }); } $scope.phoneVerifyStep1 = function() { logDebug("function: test3 $scope.phone_verification.phone_number="+$scope.phone_verification.phone_number); logDebug("function: phoneVerifyStep1"); logDebug("function: phoneVerifyStep1 ,$scope.phone_verification.phone_number="+$scope.phone_verification.phone_number); $scope.phone_verification.checkexists = true; $scope.phone_verification.sendsms = false; logDebug(JSON.stringify($scope.phone_verification) + " ffffffffffff"); logDebug($scope.phone_verification.phone_number+ "= $scope.phone_verification.phone_number"); $scope.phone_verification.phone_number=stripValues($scope.phone_verification.phone_number); function stripValues(txt) { txt = txt.replace(/[^0-9]/g,''); return txt; } if (!validatePhone($scope.phone_verification.phone_number)) { $scope.ajax_in_progress=false; $scope.phone_verification.sms_error = "אנא הזמן מספר סלולרי תקין בעל 10 ספרות"; $timeout(function() { $scope.phone_verification.sms_error=null; }, 2000); return false; } $http({ method: 'POST', url: '/api/enduser/phone_verification/signup_end_user', data: $scope.phone_verification, headers: { 'Content-Type': 'application/json;charset=utf-8' } }).success(function(data) { $scope.ajax_in_progress=false; logDebug(data); if ((!data.success) || (data.success=="false")) { logDebug("error " + data.message); // $scope.phone_verification.sms_error = "אנא הזמן מספר סלולרי תקין בעל 10 ספרות"; $scope.phone_verification.sms_error = data.message; $timeout(function() { $scope.phone_verification.sms_error=null; }, 2000); // if not successful, bind errors to error variables // $scope.errorName = data.errors.name; // $scope.errorSuperhero = data.errors.superheroAlias; } else if (data.alreadyexists) { // has password or not? logDebug("data.has_password="+data.has_password); $scope.needs_password=data.has_password; if (data.has_password==1) { // has password $scope.step1sendcodeShow = false; $scope.step3loginShow = true; $scope.endUserLoginStep = "loginEndUser" } else { // doesnt have password - sms only logDebug("success 12"); // $scope.SMSPassReset(); $scope.sms_two_step_login(); } } else { logDebug("success 14"); // $scope.phone_verification.sms_error = data.Message; // $scope.phone_verification.sms_error = "הזן קוד זיהוי שנשלח אליך בסמס"; $scope.step2registerShow = true; $scope.step1sendcodeShow = false; $scope.endUserLoginStep = "registerEndUser" // if successful, bind success message to message // $scope.message = data.message; // $uibModalInstance.dismiss('added'); } }); }; logDebug("function: test2 $scope.phone_verification.phone_number="+$scope.phone_verification.phone_number); }); kuzeApp.controller('endUserServicesController', function($scope, $http, $uibModal) { }); kuzeApp.controller('endUserFormsController', function($scope,$routeParams, $timeout, $http, $uibModal) { document.title="טופס"; logDebug("endUserFormsController"); $scope.given_business_user_id=0; $scope.cart_hash_code=0; $scope.formFinished=false; $scope.page_type="form"; $scope.url_code=$routeParams.url_code; $scope.formCheckLogin=function() { if ($scope.kuzeForm.logged_in) { logDebug("formCheckLogin is logged in"); return true; } document.activeElement.blur(); logDebug("formCheckLogin"); // not logged in { logDebug("not logged in, loading endUserLoginModal"); loginNextScreen=""; nextModal=""; var modalInstance = $uibModal.open({ animation: false, templateUrl: $gTemplatePrefix + 'endUserLogin.php', controller: 'endUserLoginModal', size: 500, resolve: { startDate: function() { return 111; }, loginNextScreen: function() { return 0; }, nextModal: function() { return 0; }, needs_password: function() { return 0; }, return_to_cc: function() { return 0; }, return_to_event_register: function() { return 0; }, selectedEvent: function() { return 0; }, eventTypeDetails: function() { return 0; }, total_to_pay: function(){ return 0; }, enduser_cart: function() { return null; }, phone_number: function() { return ""; } } }); modalInstance.result.then(function(selectedItem) { $scope.selected = selectedItem; }, function() { logDebug('Modal dismissed at: ' + new Date()); }); return false; } } // first checking if user is logged in // if (is_empty($routeParams.cart_hash_code)) // { // logDebug("endUserFormsController no cart_hash_code"); // } // else // { // $scope.cart_hash_code=$routeParams.cart_hash_code; // logDebug("endUserFormsController cart_hash_code="+$routeParams.cart_hash_code); // } // if (is_empty($routeParams.event_hash_code)) // { // $scope.event_hash_code="0"; // logDebug("endUserFormsController no cart_hash_code"); // } // else // { // $scope.event_hash_code=$routeParams.event_hash_code; // logDebug("endUserFormsController event_hash_code="+$routeParams.cart_hash_code); // } // form_business_user_id=$routeParams.business_user_id; getEndUserForm($http,$scope,'kuzeForm',$scope.url_code,getEndUserForm_callback,getEndUserForm_callback); function getEndUserForm_callback(response) { logDebug("getEndUserForm_callback response="+response); document.title = response.json.form_name; } $scope.calculateCheckbox=function(field) { field.field_value=""; init=true; logDebug("calculateCheckbox "+JSON.stringify(field)); field.how_many_checked=0; for (var i = 0; i < field.field_lov.length; i++) { if (field.field_lov[i].checked) { field.how_many_checked++; if (init) { field.field_value=field.field_lov[i].value; init=false; } else { field.field_value=field.field_value+","+field.field_lov[i].value; } } } } $scope.formErrorMessage=""; $scope.submitForm=function() { $scope.kuzeForm.url_code=$scope.url_code; if (!$scope.formCheckLogin()) { return false; } submitEndUserForm($http,$scope,$scope.kuzeForm,submitEndUserForm_success,submitEndUserForm_failure); function submitEndUserForm_success(response) { // alert($scope.kuzeForm.finish_message); $scope.formFinished=true; // end_user_info } function submitEndUserForm_failure(response) { if (response.errcode==901) { $scope.formErrorMessage=response.message; } else { $scope.formErrorMessage=response.message; } $timeout(function() { $scope.formErrorMessage=""; }, 2500); } } }); kuzeApp.directive('elastic', [ '$timeout', function($timeout) { return { restrict: 'A', link: function($scope, element) { $scope.initialHeight = $scope.initialHeight || element[0].style.height; var resize = function() { element[0].style.height = $scope.initialHeight; element[0].style.height = "" + element[0].scrollHeight + "px"; }; element.on("input change", resize); // element.on("input change", resize); $timeout(resize, 0); } }; } ]); kuzeApp.controller('endUserCartController', function($scope,$routeParams, $timeout, $http, $uibModal) { logDebug("endUserCartController"); $scope.given_business_user_id=0; $scope.cart_hash_code=0; $scope.page_type="cart"; logDebug("checking if URL is with /buy/ url="+window.location.href); if(window.location.href.indexOf("/buy/") > -1) { logDebug("URL is with google_auth"); $scope.page_type="buy"; } // first checking if user is logged in if (is_empty($routeParams.cart_hash_code)) { logDebug("endUserCartController no cart_hash_code"); } else { $scope.cart_hash_code=$routeParams.cart_hash_code; logDebug("endUserCartController cart_hash_code="+$routeParams.cart_hash_code); } getEndUserCart($http,$scope,'enduser_cart',$scope.cart_hash_code,$scope.page_type,getEndUserCart_callback,getEndUserCart_callback); function getEndUserCart_callback(response) { logDebug("getEndUserCart_callback response="+response); $scope.recalculate_cart(); } $scope.recalculate_cart = function() { logDebug("function: recalculate_cart"); $scope.enduser_cart.total_to_pay=0; for(var i = 0; i < $scope.enduser_cart.events_paid.length; i++) { if ($scope.enduser_cart.events_paid[i].should_be_paid==1) { $scope.enduser_cart.total_to_pay=parseFloat($scope.enduser_cart.total_to_pay+parseFloat($scope.enduser_cart.events_paid[i].full_payment_amount)); } } for(var i = 0; i < $scope.enduser_cart.packages_paid.length; i++) { if ($scope.enduser_cart.packages_paid[i].should_be_paid==1) { $scope.enduser_cart.total_to_pay=parseFloat($scope.enduser_cart.total_to_pay+parseFloat($scope.enduser_cart.packages_paid[i].full_payment_amount)); } } logDebug("function: recalculate_cart scope.enduser_cart.total_to_pay="+$scope.enduser_cart.total_to_pay); $scope.enduser_cart.total_to_pay=$scope.enduser_cart.total_to_pay.toFixed(2); } $scope.payCart=function() { if ($scope.enduser_cart.user_not_related!=0) { return; } logDebug("payCart"); logDebug("checking that payment is ok"); jsalert=1; logDebug("checking that payment is ok result"); if ($scope.enduser_cart.logged_in) { logDebug("logged in, loading end_user_pay_cc_controller 1 "+ JSON.stringify($scope.enduser_cart.user_first_name)); var modalInstance = $uibModal.open({ animation: false, templateUrl: $gTemplatePrefix + 'end_user_pay_cc.php', controller: 'end_user_pay_cc_controller', size: 500, resolve: { total_to_pay: function() { return $scope.enduser_cart.total_to_pay; }, prepaid_amount: function() { return 0; }, first_name: function() { return $scope.enduser_cart.user_first_name; }, last_name: function() { return $scope.enduser_cart.user_last_name; }, phone_number: function() { return $scope.enduser_cart.user_phone_number; }, lock_minutes: function() { return 0; }, enduser_cart: function() { return $scope.enduser_cart; } } }); modalInstance.result.then(function(selectedItem) { $scope.selected = selectedItem; }, function() { logDebug('Modal dismissed at: ' + new Date()); }); } else { logDebug("not logged in, loading endUserLoginModal"); loginNextScreen=""; nextModal=""; var modalInstance = $uibModal.open({ animation: false, templateUrl: $gTemplatePrefix + 'endUserLogin.php', controller: 'endUserLoginModal', size: 500, resolve: { startDate: function() { return 111; }, loginNextScreen: function() { return loginNextScreen; }, nextModal: function() { return nextModal; }, needs_password: function() { return 0; }, return_to_cc: function() { return 1; }, return_to_event_register: function() { return 0; }, selectedEvent: function() { return 0; }, eventTypeDetails: function() { return 0; }, total_to_pay: function(){ return $scope.enduser_cart.total_to_pay; }, enduser_cart: function() { return $scope.enduser_cart; }, phone_number: function() { return $scope.enduser_cart.buser_phone_number; } } }); modalInstance.result.then(function(selectedItem) { $scope.selected = selectedItem; }, function() { logDebug('Modal dismissed at: ' + new Date()); }); } } }); kuzeApp.controller('end_user_pay_cc_controller', function($scope, $location,$route, enduser_cart, $sce, $interval,$timeout, first_name, prepaid_amount,last_name, phone_number,lock_minutes,total_to_pay, $rootScope, $uibModalInstance, $http,sharedData) { logDebug("end_user_pay_cc_controller controller, phone_number="+phone_number+", total_to_pay="+total_to_pay); $scope.enduser_cart=enduser_cart; if (prepaid_amount>0) { total_to_pay=prepaid_amount; } $scope.total_debt=total_to_pay; total_debt=total_to_pay; // alert('prepaid_amount='+prepaid_amount); $scope.credit_card_info={}; $scope.credit_card_info.sum=total_debt; $scope.credit_card_info.first_name=first_name; $scope.credit_card_info.last_name=last_name; $scope.credit_card_info.phone=phone_number; // $scope.credit_card_info.invoice_name=first_name+" "+last_name; $scope.credit_card_info.invoice_name=enduser_cart.user_invoice_name; $scope.credit_card_info.different_invoice_details=0; $scope.credit_card_info.phone=$scope.credit_card_info.phone.replace(/\D/g,''); $scope.timer=false; if (lock_minutes>0) { $scope.timer=true; } logDebug("$scope.timer="+$scope.timer); logDebug("lock_minutes="+lock_minutes); // $scope.credit_card_info.total_debt_sys_business_payment_ids=sys_business_payments.total_debt_sys_business_payment_ids; $scope.credit_card_info.description="תשלום חודשי - ניהול יומן קיוז"; // $scope.credit_card_info.company_number=businessConfig.company_number; // $scope.credit_card_info.phone=(businessConfig.business_phone_number); // $scope.credit_card_info.business_email=businessConfig.business_email; $scope.credit_card_info.company_number=""; $scope.credit_card_info.business_email=""; // $scope.credit_card_info.different_invoice_details=0; $scope.ajax_error=""; $scope.firstStage=true; $scope.hidetimer=false; is_it_paid=false; var oneTimer=false; if ($scope.timer) { $scope.timerdisplayer = lock_minutes+":00"; var grace_timer=false; oneTimer = $interval(function() { temptemp=$scope.timerdisplayer; var timer = temptemp.split(':'); //by parsing integer, I avoid all extra string processing var minutes = parseInt(timer[0], 10); var seconds = parseInt(timer[1], 10); --seconds; minutes = (seconds < 0) ? --minutes : minutes; if (minutes < 0) { // cancel clock timer if (oneTimer!=false) { $interval.cancel(oneTimer); logDebug("cancel oneTimer"); } // give another 10 seconds to complete process after timer ends... $timeout(function() { $scope.timerdisplayer = '00:00'; $scope.handle_timeout_cc(); }, 10000); } else { seconds = (seconds < 0) ? 59 : seconds; seconds = (seconds < 10) ? '0' + seconds : seconds; //minutes = (minutes < 10) ? minutes : minutes; // $('.countdown').html(minutes + ':' + seconds); $scope.timerdisplayer = minutes + ':' + seconds; // logDebug($scope.timerdisplayer+"seconds="+minutes + ':' + seconds); } }, 1000); } $scope.handle_timeout_cc=function() { $scope.hidetimer=true; // if (grace_timer!=false) // { // $interval.cancel(grace_timer); // } if (is_it_paid==true) { return; } logDebug("close everything"); if (document.getElementById("holds-the-iframe_pelecard")) { document.getElementById("holds-the-iframe_pelecard").style.display = "none"; } if (document.getElementById("holds-the-iframe")) { document.getElementById("holds-the-iframe").style.display = "none"; } if (document.getElementById("payment-info-message")) { document.getElementById("payment-info-message").style.display = "none"; } document.getElementById('tryagain').style.display='none'; $scope.firstStage=false; $scope.hidetimer=true; $timeout(function() { document.getElementById("time-up-div").style.display = "block"; }, 500); } // payments - start getHowManyPaymentsAllowed($http,$scope,$scope.total_debt,'how_many_cc_payments_allowed',getHowManyPaymentsAllowed_finished); function getHowManyPaymentsAllowed_finished() { logDebug('getHowManyPaymentsAllowed_finished'); $scope.credit_card_num_of_payments_select = [ {name: '1',value: '1'} ]; for (var i = 2; i <= $scope.how_many_cc_payments_allowed; i++) { $scope.credit_card_num_of_payments_select.push({name: i,value: i}); } $scope.credit_card_num_of_payments = $scope.credit_card_num_of_payments_select[0].name; } // payments - end $scope.closeModal = function() { // $location.path(loginNextScreen); // if iframe - dont refresh if (sharedData.is_iframe()) { // iframe $rootScope.$broadcast('reload_data'); // pass object in {} if you wanna to pass anything } else { location.reload(); } $uibModalInstance.close(''); }; $scope.backtoUserInfo = function() { $uibModalInstance.close(''); // $location.path('/end_user_info'); public_site_open=1; if (public_site_open==1) { if (sharedData.is_iframe()) { window.location="/v2/#/end_user_info_iframe"; } else { $location.path('/end_user_info'); } } $route.reload(); } $scope.meshulam_payment_method="cc"; $scope.setMeshulamPaymentMethod = function(pagecode) { $scope.meshulam_payment_method=pagecode; } $scope.getCreditcardurl2023 = function() { $scope.getCreditcardurl($scope.meshulam_payment_method); } $scope.getCreditcardurl = function(pagecode) { $scope.credit_card_info.client_email=$scope.enduser_cart.buser_email; $scope.credit_card_info.phone=$scope.credit_card_info.phone.replace(/\D/g,''); $scope.firstStage=true; $scope.ajax_error=""; document.getElementById('backbutton').disabled = true; if (isNaN($scope.credit_card_info.phone)) { $scope.ajax_error="שגיאה 1: אנא הזינו מספר טלפון תקין"; return false; } if (($scope.credit_card_info.phone)<99999) { $scope.ajax_error="שגיאה 2: אנא הזינו מספר טלפון תקין"; return false; } if ($scope.credit_card_info.phone.length!=10) { $scope.ajax_error="נא להזין מספר טלפון תקין בן 10 ספרות"; return false; } if (is_empty($scope.credit_card_info.first_name)) { $scope.ajax_error="שגיאה: אנא הזינו שם פרטי"; return false; } if (is_empty($scope.credit_card_info.last_name)) { $scope.ajax_error="שגיאה: אנא הזינו שם משפחה"; return false; } if (($scope.credit_card_info.client_email) && !validateEmail($scope.credit_card_info.client_email)) { $scope.ajax_error="אנא הזינו כתובת אימייל תקינה לשליחת החשבונית."; return false; } if ($scope.credit_card_info.different_invoice_details==1) { if (isNaN($scope.credit_card_info.company_number)) { $scope.ajax_error="שגיאה: אנא הזינו מספר עוסק מורשה/חברה לחשבונית"; return false; } if (($scope.credit_card_info.company_number)<999999) { $scope.ajax_error="שגיאה: אנא הזינו מספר עוסק מורשה/חברה תקין"; return false; } if (is_empty($scope.credit_card_info.invoice_name)) { $scope.ajax_error="אנא הזינו עבור מי החשבונית"; return false; } } $scope.enduser_cart['how_many_cc_payments_allowed']=$scope.credit_card_num_of_payments; $scope.enduser_cart['credit_card_info']=$scope.credit_card_info; $scope.enduser_cart['pagecode']=pagecode; getCreditcardurlUser($http, $scope, $scope.enduser_cart, getCreditcardurl_success, getCreditcardurl_failure); } function getCreditcardurl_success(response) { logError('getCreditcardurl_success response='+response); logError('getCreditcardurl_success response.json='+response.json); logError('getCreditcardurl_success response.success='+response.success); $scope.firstStage=false; if (document.getElementById('tryagain')) { document.getElementById('tryagain').style.display='none'; document.getElementById('tryagain').disabled = false; } if (document.getElementById('backbutton')) { document.getElementById('backbutton').disabled = false; } goto_url=response.json; logDebug('getCreditcardurl_success goto_url='+goto_url); if (goto_url.includes("pelecard")) { $scope.creditcardurl_pelecard = $sce.trustAsResourceUrl(goto_url); } else { $scope.creditcardurl = $sce.trustAsResourceUrl(goto_url); } } function getCreditcardurl_failure(response) { $scope.ajax_error=response.message; $timeout(function() { $scope.ajax_error=null; }, 2500); document.getElementById('backbutton').disabled = false; document.getElementById('tryagain').disabled = false; } }); kuzeApp.controller('endUserInfoController', function($scope, $timeout, $http, $uibModal) { getEndUserEvents($http,$scope,'user_events'); getEndUserInfo($http,$scope,'formUpdateClientAngular'); getEndUserPayments($http,$scope,'currentClientPayments'); getEndUserPaymentsDocs($http,$scope,'currentClientPaymentsDocs'); $scope.endUserLogin = function(selectedEvent) { logDebug(selectedEvent); if (selectedEvent==null) { loginNextScreen="/"; } else if (selectedEvent.event_type_id>0) { if (selectedEvent.is_class==0) { loginNextScreen="/scheduler/"+selectedEvent.event_type_id; } else { loginNextScreen="/scheduleclass/"+selectedEvent.event_type_id; } } else { loginNextScreen="/"; } logDebug("loginNextScreen="+loginNextScreen); loginNextScreen=""; nextModal=""; var modalInstance = $uibModal.open({ animation: false, templateUrl: $gTemplatePrefix + 'endUserLogin.php', controller: 'endUserLoginModal', size: 500, resolve: { startDate: function() { return 111; }, loginNextScreen: function() { return loginNextScreen; }, nextModal: function() { return nextModal; }, needs_password: function() { return 0; }, return_to_cc: function() { return 0; }, return_to_event_register: function() { return 0; }, selectedEvent: function() { return 0; }, eventTypeDetails: function() { return 0; }, total_to_pay: function(){ return 0; }, enduser_cart: function() { return null; }, phone_number: function() { return ""; } } }); modalInstance.result.then(function(selectedItem) { $scope.selected = selectedItem; }, function() { logDebug('Modal dismissed at: ' + new Date()); }); }; $http.get($gApiURLPrefix + "/enduser/packages/user").then(function(response) { logDebug("response.data="+JSON.stringify(response.data)); if (response.data.Error!=true) { $scope.user_packages = response.data.json.jsonrows; $scope.has_packages = response.data.json.has_packages; $scope.has_products = response.data.json.has_products; } }); // $http.get($gApiURLPrefix + "/enduser/payments/user").then(function(response) { // if (response) // { // $scope.user_payments = response.data; // } // }); $scope.$on("enduserReloadEndUserInfo",function(e,a) { logDebug("enduserReloadEndUserInfo"); getEndUserEvents($http,$scope,'user_events'); }); // filtering events for end user (not showing canceled) $scope.showAllEvents=false; $scope.canceledFilter = function(event) { // logDebug("canceledFilter"); // TODO - in future add button to show cancelation if ($scope.showAllEvents) { return true; } if ((event.is_confirmed == 1) || (event.event_user_status_id == 2 ) || (event.event_user_status_id == 3 ) || (event.is_final_status == 1) || ((event.is_waiting_list == 1) && (event.is_canceled == 0))) { if ( (event.event_user_status_id == 13 ) || (event.event_user_status_id == 14 ) ) { return false; // dont show client_canceled_waiting_list and admin_canceled_waiting_list } return true; } else { return false; } } }); kuzeApp.controller('endUserInfoControllerv2', function($scope, $timeout, $http, $uibModal) { getEndUserEvents($http,$scope,'user_events'); getEndUserInfo($http,$scope,'formUpdateClientAngular'); getEndUserPayments($http,$scope,'currentClientPayments'); getEndUserPaymentsDocs($http,$scope,'currentClientPaymentsDocs'); $http.get($gApiURLPrefix + "/enduser/packages/user").then(function(response) { logDebug("response.data="+JSON.stringify(response.data)); if (response.data.Error!=true) { $scope.user_packages = response.data.json.jsonrows; $scope.has_packages = response.data.json.has_packages; $scope.has_products = response.data.json.has_products; } }); $scope.$on("enduserReloadEndUserInfo",function(e,a) { logDebug("enduserReloadEndUserInfo"); getEndUserEvents($http,$scope,'user_events'); }); // filtering events for end user (not showing canceled) $scope.showAllEvents=false; $scope.canceledFilter = function(event) { // logDebug("canceledFilter"); // TODO - in future add button to show cancelation if ($scope.showAllEvents) { return true; } if ((event.is_confirmed == 1) || (event.event_user_status_id == 2 ) || (event.event_user_status_id == 3 ) || (event.is_final_status == 1) || ((event.is_waiting_list == 1) && (event.is_canceled == 0))) { if ( (event.event_user_status_id == 13 ) || (event.event_user_status_id == 14 ) ) { return false; // dont show client_canceled_waiting_list and admin_canceled_waiting_list } return true; } else { return false; } } }); kuzeApp.controller('endUserPrivateController', function($scope, $http, $uibModal) { // $http.get($gApiURLPrefix + "/enduser/events").then(function(response) { // $scope.user_events = response.data; // // user_events.start_time = // // pipi = createFromMysql($scope.user_events[0]); // // logDebug('xxx'+pipi.getFullYear()); // }); }); kuzeApp.controller('endUserEventsController', function($scope, $http, $uibModal) { $http.get($gApiURLPrefix + "/enduser/events").then(function(response) { $scope.user_events = response.data; // user_events.start_time = // pipi = createFromMysql($scope.user_events[0]); // logDebug('xxx'+pipi.getFullYear()); }); // $scope.endUserLogin = function(event_type_id) { // loginNextScreen="/???/"+event_type_id; // logDebug("loginNextScreen="+loginNextScreen); // var modalInstance = $uibModal.open({ // animation: false, // templateUrl: $gTemplatePrefix + 'endUserLogin.php', // controller: 'endUserLoginModal', // size: 500, // resolve: { // startDate: function() { // return 111; // } // } // }); // // modalInstance.result.then(function(selectedItem) { // $scope.selected = selectedItem; // }, function() { // logDebug('Modal dismissed at: ' + new Date()); // }); // }; }); // Need to distinguish between end user (client) and business owner. // currently calls only end user kuzeApp.controller('endUserHomeController', function($scope, $window, $http, $uibModal, $location) { logDebug("endUserHomeController"); // for client home page: // (1) Event Types (not classes): enduser/user_sched_event_types $http.get($gApiURLPrefix + "/enduser/user_sched_event_types").then(function(response) { $scope.event_types = response.data; }); // (2) repeating events (classes only): enduser/public_repeating_events $http.get($gApiURLPrefix + "/enduser/public_repeating_events").then(function(response) { $scope.public_repeating_events = response.data; $scope.dayNames=dayNames; }); // (3) public events: enduser/public_events $http.get($gApiURLPrefix + "/enduser/public_events").then(function(response) { $scope.public_events = response.data; }); $scope.confirmEmplyeeEndUser = function(business_user_id,secret_key,business_id) { logDebug("function: confirmEmplyeeEndUser"); // alert(business_user_id+" key "+$scope.secret_key); if (secret_key.toString().length!=4) { alert('קוד אישור חייב להיות בן 4 ספרות'); return; } confirmUserEmployee($http,$scope,business_id,business_user_id, secret_key.toString(),confirmUserEmployee_success,confirmUserEmployee_failure); function confirmUserEmployee_success() { logDebug("confirmUserEmployee success"); // $location.path('/change-scope.php?buid='+business_user_id); $window.location.assign('/change-scope.php?buid='+business_user_id); } function confirmUserEmployee_failure(response) { alert(response.message); } } $scope.navigate = function (url) { $location.path(url); } $scope.endUserLogin = function(selectedEvent) { logDebug(selectedEvent); if (selectedEvent==null) { loginNextScreen="/"; } else if (selectedEvent.event_type_id>0) { if (selectedEvent.is_class==0) { loginNextScreen="/scheduler/"+selectedEvent.event_type_id; } else { loginNextScreen="/scheduleclass/"+selectedEvent.event_type_id; } } else { loginNextScreen="/"; } logDebug("loginNextScreen="+loginNextScreen); loginNextScreen=""; nextModal=""; var modalInstance = $uibModal.open({ animation: false, templateUrl: $gTemplatePrefix + 'endUserLogin.php', controller: 'endUserLoginModal', size: 500, resolve: { startDate: function() { return 111; }, loginNextScreen: function() { return loginNextScreen; }, nextModal: function() { return nextModal; }, needs_password: function() { return 0; }, return_to_cc: function() { return 0; }, return_to_event_register: function() { return 0; }, selectedEvent: function() { return 0; }, eventTypeDetails: function() { return 0; }, total_to_pay: function(){ return 0; }, enduser_cart: function() { return null; }, phone_number: function() { return ""; } } }); modalInstance.result.then(function(selectedItem) { $scope.selected = selectedItem; }, function() { logDebug('Modal dismissed at: ' + new Date()); }); }; }); // events verification cancel/approve kuzeApp.controller('cancelController', function($scope, $window, $routeParams, $http, $uibModal, $location) { logDebug("cancelController "+$routeParams.cancel_hash_code); $scope.time_in_hours_for_late_cancellation = 24; $scope.cancel_hash_code=$routeParams.cancel_hash_code; $scope.date = new Date(); getEventCancelHashStatus($http,$scope,$routeParams.cancel_hash_code,'hash_status', getEventCancelHashStatus_success); function getEventCancelHashStatus_success(){ var start_time_object = new Date($scope.hash_status.start_time.replace(/-/g, "/")); $scope.time_diff = (start_time_object.getTime() - $scope.date.getTime() ) / (1000 * 3600); $scope.is_late_cancellation = $scope.time_diff < $scope.time_in_hours_for_late_cancellation; } $scope.confirmEvent = function() { logDebug("confirmEvent"); confirmEvent($http,$scope,$routeParams.cancel_hash_code,confirmEvent_success); function confirmEvent_success() { logDebug("success confirmEvent_success"); getEventCancelHashStatus($http,$scope,$routeParams.cancel_hash_code,'hash_status'); } } $scope.cancelEvent = function() { logDebug("abortEvent"); cancelEvent($http,$scope,$routeParams.cancel_hash_code,cancelEvent_success); function cancelEvent_success() { logDebug("success confirmEvent_success"); getEventCancelHashStatus($http,$scope,$routeParams.cancel_hash_code,'hash_status'); } } }); // angular filter for events before/after today kuzeApp.filter('beforeNow', function() { // Create the return function and set the required parameter name to **input** return function(input) { var out = []; // Using the angular.forEach method, go through the array of data and perform the operation of figuring out if the language is statically or dynamically typed. var browser_epoch = (new Date).getTime(); angular.forEach(input, function(event) { // logDebug("filtering, event.event_user_status_id="+event.event_user_status_id); if (event.start_epoch <= (browser_epoch/1000)) { out.push(event) } }) return out; } }); kuzeApp.filter('afterNow', function() { // Create the return function and set the required parameter name to **input** return function(input) { var out = []; // Using the angular.forEach method, go through the array of data and perform the operation of figuring out if the language is statically or dynamically typed. var browser_epoch = (new Date).getTime(); // logDebug("ffff"+input); angular.forEach(input, function(event) { // logDebug("filtering, event.event_user_status_id="+event.event_user_status_id); if (event.start_epoch > (browser_epoch/1000)) { out.push(event) } }) return out; } }); kuzeApp.filter('should_be_displayed', function() { // Create the return function and set the required parameter name to **input** return function(input) { var out = []; // Using the angular.forEach method, go through the array of data and perform the operation of figuring out if the language is statically or dynamically typed. angular.forEach(input, function(event) { // logDebug("filtering, event.event_user_status_id="+event.event_user_status_id); if (event.should_be_displayed==1) { out.push(event) } }) return out; } }); kuzeApp.controller('create_business_modal', function($scope, $uibModalInstance, user_phone_number, $http) { logDebug("create_business_modal controller"); $scope.new_business={}; $scope.close = function() { $uibModalInstance.close('dismiss'); }; $scope.createBusiness = function() { createBusiness($http,$scope,$scope.new_business, createBusiness_success, createBusiness_failure); $scope.ajax_error=""; function createBusiness_success(response) { logDebug("createBusiness_success"); business_user_id=response.json; $refresh_url="/change-scope.php?buid="+business_user_id; window.location.href=$refresh_url; } function createBusiness_failure(response) { logDebug("createBusiness_failure "+response.message); $scope.ajax_error=response.message; } } }); kuzeApp.controller('kuzeController', function($scope, $http, $location) { // main kuze controller // MUST SET LANGUAGE BEFORE ANY OTHER OPERATION !!! updateGlobalLanguage($scope, $gDefaultLang); // MUST SET LANGUAGE BEFORE ANY OTHER OPERATION !!! logDebug("** KuzeController **"); $scope.showClientsColumns = [{ field: 'user_id', name: $scope.langfile['show_all_clients_userid'] }, { field: 'buser_first_name', name: $scope.langfile['show_all_clients_first_name'] }, { field: 'buser_last_name', name: $scope.langfile['show_all_clients_last_name'] }, { field: 'role_name', name: $scope.langfile['show_all_clients_approved'] }]; $scope.gridClientClick = function(row) { //logDebug(row); var row_userid = row.entity.user_id; logDebug("selected row user_id =" + row_userid); $location.path('/business_clients/' + row_userid); }; $scope.showClientsGridOptions = { enableFiltering: false, enableSorting: true, columnDefs: $scope.showClientsColumns, rowTemplate: '/public/components/clients-grid-row.html', onRegisterApi: function(gridApi) { $scope.gridApi = gridApi; $scope.gridApi.grid.registerRowsProcessor($scope.singleFilter, 200); }, }; $scope.isActive = function(viewLocation) { logDebug("viewLocation = " + viewLocation); var active = (viewLocation === $location.path()); return active; }; $scope.filter = function() { logDebug("single filter"); $scope.gridApi.grid.refresh(); if ($scope.filter.Value != "") { $scope.filter.buttonValue = "'" + $scope.filter.Value + "'"; } else { $scope.filter.buttonValue = ""; } }; $scope.singleFilter = function(renderableRows) { var matcher = new RegExp($scope.filter.Value); logDebug("scope=" + $scope); logDebug("scope.filter.Value=" + $scope.filter.Value); if (($scope.filter.Value == null) || ($scope.filter.Value == "")) { logDebug("empty filter"); return renderableRows; } renderableRows.forEach(function(row) { // logDebug("row="+row); row.visible = false; var $currFirstName = row.entity['first_name']; var $currLastName = row.entity['last_name']; logDebug("currFirstName=" + $currFirstName); if ($currFirstName != null) { if ($currFirstName.indexOf($scope.filter.Value) > -1) { row.visible = true; } } else // row is null { row.visible = false; } if ($currLastName != null) { if ($currLastName.indexOf($scope.filter.Value) > -1) { row.visible = true; } } else // row is null { row.visible = false; } }); return renderableRows; }; // important!! initializing angular forms as arrays $scope.formAddClientAngular = {}; $scope.formUpdateClientAngular = {}; logDebug("location=" + $location); logDebug($location); $scope.changeLang = function($newlang) { logDebug($newlang); //$scope.spClass = 'right'; updateGlobalLanguage($scope, $newlang) } $scope.addNewClient = function() { $location.path('/business_clients/add'); } $scope.deleteClient = function(client_id) { logDebug("delete client " + client_id); logDebug("first_name=" + $scope.formAddClientAngular.first_name); $http({ method: 'POST', url: '/api/admin/clients/delete/' + client_id, data: $scope.formAddClientAngular, // pass in data as strings // data : $.param($scope.formData), // pass in data as strings JQUERY // data : 'first_name=' + $scope.formData.first_name + '&last_name=' + $scope.formData.last_name, // WORKING // data : { first_name: "hardfirst", last_name: "hardlast" }, headers: { 'Content-Type': 'application/json;charset=utf-8' } }).success(function(data) { logDebug(data); if (data.Error) { logDebug("error"); // if not successful, bind errors to error variables // $scope.errorName = data.errors.name; // $scope.errorSuperhero = data.errors.superheroAlias; } else { logDebug("success 16"); // if successful, bind success message to message // $scope.message = data.message; $location.path('/business_clients'); } }); } }); function logDebug($str) { // writeLog($str, "debug") } function logError($str) { writeLog($str, "error") } function writeLog($str, $loglevel) { // logDebug("curr="+$loglevel); // var $gLogLevel; // logDebug("global="+$gLogLevel); if ($gLogLevel == "debug") { console.log(getDateTime() + " - " + $str); } else if ($gLogLevel == "error") { if ($loglevel == "err") { console.log(getDateTime() + " - " + $str); } } } function getDateTime() { var date = new Date(); var hour = date.getHours(); hour = (hour < 10 ? "0" : "") + hour; var min = date.getMinutes(); min = (min < 10 ? "0" : "") + min; var sec = date.getSeconds(); sec = (sec < 10 ? "0" : "") + sec; var year = date.getFullYear(); var month = date.getMonth() + 1; month = (month < 10 ? "0" : "") + month; var day = date.getDate(); day = (day < 10 ? "0" : "") + day; return year + "-" + month + "-" + day + " " + hour + ":" + min + ":" + sec; } kuzeApp.filter('remove_decimal_zero', function() { return function(input) { // logDebug("remove_decimal_zero input="+input); if (input==null) { logDebug("remove_decimal_zero return empty1"); return ""; } if (input==0) { logDebug("remove_decimal_zero return empty2"); return 0; } if (input=="") { logDebug("remove_decimal_zero return empty3"); return ""; } input = parseFloat(input); input = input.toFixed(input % 1 === 0 ? 0 : 2); return input.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ','); } }); function copyElementText(name) { /* Get the text field */ var copyText = document.getElementById(name); /* Select the text field */ copyText.select(); /* Copy the text inside the text field */ document.execCommand("copy"); /* Alert the copied text */ alert("Copied the text: " + copyText.value); return copyText.value; }