var webooker_courses_models,webooker_utils;window.fbAsyncInit=function(){FB.init({appId:"882871601758517",autoLogAppEvents:!0,xfbml:!0,version:"v5.0"})},function(n,t,i){var r,u=n.getElementsByTagName(t)[0];n.getElementById(i)||(r=n.createElement(t),r.id=i,r.src="//connect.facebook.net/cs_CZ/sdk.js",u.parentNode.insertBefore(r,u))}(document,"script","facebook-jssdk");wbApp.directive("wbAddressLookup",["geoCoderSvc",function(n){return{restrict:"A",require:"ngModel",scope:{formattedAddress:"=",location:"=ngModel",wbPlaceholder:"@"},template:'<div><input bs-typeahead class="form-control" ng-model="addressJson" ng-change="onChange(addressJson)"placeholder="{{wbPlaceholder}}"bs-options="address as address.formatted_address for address in getAddress($viewValue) track by address"><\/div>',replace:!0,link:function(t){function i(i){if(i){var r=n.geoDecode(i.latitude,i.longitude);r.then(function(n){if(n.length&&!angular.equals(t.addressJson,n[0])){t.addressJson=n[0];t.onChange(n[0])}})}}t.getAddress=function(t){return n.geocode(t)};t.$watch("location",function(n){angular.equals(t.lastLocationUpdate,n)||(t.lastLocationUpdate=angular.copy(n),i(n))},!0);t.onChange=function(n){if(n){if(typeof n!="string"&&!(n instanceof String)){if(n.geometry&&n.geometry.location){var i={latitude:n.geometry.location.lat(),longitude:n.geometry.location.lng()};angular.equals(i,t.location)||(t.location=i)}t.formattedAddress!==n.formatted_address&&(t.formattedAddress=n.formatted_address)}}else t.formattedAddress=null,t.location={latitude:null,longitude:null}}}}}]);wbApp.directive("wbAgeRangeCombo",["$timeout","$translate","ageRangeSvc",function(n,t,i){function u(n){if(n)return n.name}function f(n){return n.name}function r(n,t,i){t.$promise.then(function(t){var r=_.filter(t,function(n){return!i||!!i[n.ageRangeID]});n.length=0;n.push.apply(n,r)})}return{restrict:"A",require:"ngModel",priority:1,scope:{allowClear:"=",filterByAgeRanges:"="},link:function(e,o,s,h){var c=i.getAllAsync(),l=[];r(l,c,e.filterByAgeRanges);n(function(){$(o).select2({placeholder:t.instant("TXT_PLACEHOLDER_SELECT_AGE"),formatResult:u,formatSelection:f,dropdownAutoWidth:!0,allowClear:e.allowClear||!1,minimumResultsForSearch:-1,id:function(n){return n.ageRangeID},data:l});h.$render()});e.$watch("filterByAgeRanges",function(n){r(l,c,n)});h.$parsers.unshift(function(n){return n?parseInt(n):0});h.$formatters.unshift(function(n){return n?n+"":""});h.$render=function(){c.$promise.then(function(){$(o).select2("val",h.$viewValue)})};o.on("change",function(n){e.$apply(function(){h.$setViewValue(n.val)})});o.bind("$destroy",function(){o.select2("destroy")});s.$observe("readonly",function(n){o.select2("readonly",!!n)})}}}]);wbApp.directive("wbAttendanceStatusLookup",["$timeout",function(n){return{restrict:"A",require:"ngModel",replace:!0,priority:1,scope:{},template:"<select class='form-control'><option value='0'>{{'TXT_VAL_PRESENT' | translate}}<\/option><option value='1'>{{'TXT_VAL_NOT_PRESENT' | translate}}<\/option><option value='2'>{{'TXT_VAL_EXCUSED' | translate}}<\/option><option value='3'>{{'TXT_VAL_EXCUSED_NO_COMP' | translate}}<\/option><\/select>",link:function(t,i,r,u){n(function(){$(i).select2({minimumResultsForSearch:-1});u.$parsers.unshift(function(n){return n?parseInt(n):0});u.$formatters.unshift(function(n){return n?n+"":"0"});u.$render=function(){i.select2("val",u.$viewValue)};i.on("change",function(n){t.$apply(function(){u.$setViewValue(n.val)})});r.$observe("readonly",function(n){i.select2("readonly",!!n)});i.bind("$destroy",function(){i.select2("destroy")})},1)}}}]);wbApp.directive("wbAutoFillFix",["$timeout",function(n){return{require:"ngModel",link:function(t,i,r,u){var f=i.val();n(function(){var n=i.val();u.$pristine&&n&&f!==n&&u.$setViewValue(n)},150);n(function(){var n=i.val();u.$pristine&&n&&f!==n&&u.$setViewValue(n)},1e3);n(function(){var n=i.val();u.$pristine&&n&&f!==n&&u.$setViewValue(n)},2e3)}}}]);wbApp.directive("wbClassroomCombo",["$timeout","$translate","classroomSvc",function(n,t,i){function r(n){if(n)return n.isDeleted?n.description?"<div class='row'><div class='col-md-5'>"+n.name+" ("+t.instant("TXT_VAL_DELETED")+")<\/div><div class='col-md-7'>"+(n.description||"")+"<\/div><\/div>":"<div class='row'><div class='col-md-12'>"+n.name+" ("+t.instant("TXT_VAL_DELETED")+")<\/div><\/div>":n.active?n.description?"<div class='row'><div class='col-md-5'>"+n.name+"<\/div><div class='col-md-7'>"+(n.description||"")+"<\/div><\/div>":"<div class='row'><div class='col-md-12'>"+n.name+"<\/div><\/div>":n.description?"<div class='row'><div class='col-md-5'>"+n.name+" ("+t.instant("TXT_VAL_NOT_ACTIVE")+")<\/div><div class='col-md-7'>"+(n.description||"")+"<\/div><\/div>":"<div class='row'><div class='col-md-12'>"+n.name+" ("+t.instant("TXT_VAL_NOT_ACTIVE")+")<\/div><\/div>"}function u(n){return n.isDeleted?n.name+" ("+t.instant("TXT_VAL_DELETED")+")":n.active?n.name:n.name+" ("+t.instant("TXT_VAL_NOT_ACTIVE")+")"}return{restrict:"A",require:"ngModel",priority:1,replace:!0,scope:{filterForReservations:"=",filterForCourses:"=",allowClear:"="},link:function(f,e,o,s){var h=i.getAllActiveAsync(s.$modelValue,!!f.filterForReservations,!!f.filterForCourses);n(function(){$(e).select2({placeholder:typeof f.placeholder!="undefined"?o.placeholder:t.instant("TXT_PLACEHOLDER_SELECT_CLASSROOM"),formatResult:r,formatSelection:u,dropdownAutoWidth:!0,allowClear:typeof f.allowClear!="undefined"?f.allowClear:!0,minimumResultsForSearch:-1,data:h});s.$render()});s.$parsers.unshift(function(n){return n?parseInt(n):0});s.$formatters.unshift(function(n){return n?n+"":""});s.$render=function(){h.$promise.then(function(){$(e).select2("val",s.$viewValue)})};e.bind("$destroy",function(){e.select2("destroy")});o.$observe("readonly",function(n){e.select2("readonly",!!n)})}}}]);wbApp.directive("wbCountryCodeCombo",["$timeout","$translate",function(n,t){function i(n){if(n)return t.instant(n.text)}function r(n){return t.instant(n.text)}return{restrict:"A",require:"ngModel",replace:!0,priority:1,link:function(t,u,f,e){n(function(){$(u).select2({minimumResultsForSearch:-1,formatResult:i,formatSelection:r,data:[{id:"CZ",text:"TXT_COUNTRY_CODE_CZ"},{id:"SK",text:"TXT_COUNTRY_CODE_SK"}]});u.on("change",function(n){t.$apply(function(){e.$setViewValue(n.val)})});t.$watch(f.ngModel,function(n){$(u).select2("val",n||"M")},!0);u.bind("$destroy",function(){u.select2("destroy")});f.$observe("disabled",function(n){u.select2("enable",!n)});f.$observe("readonly",function(n){u.select2("readonly",!!n)});f.ngEnable&&t.$watch(f.ngEnable,function(n){u.select2("enable",!!n)})},1)}}}]);wbApp.directive("wbCourseTypeLookup",["$timeout","$translate","courseTypeSvc",function(n,t,i){function r(n){if(n.id)return n.name}function u(n,t,i){t.$promise.then(function(t){var r=_.filter(t,function(n){return!i||!!i[n.id]});n.length=0;n.push.apply(n,r)})}return{restrict:"A",require:"ngModel",priority:1,scope:{allowClear:"=",filterByCourseTypes:"="},link:function(f,e,o,s){var h=i.getAllForLookup(),c=[];u(c,h,f.filterByCourseTypes);n(function(){$(e).select2({placeholder:t.instant("TXT_PLACEHOLDER_SELECT_COURSE_TYPE"),dropdownAutoWidth:!0,allowClear:f.allowClear||!1,minimumResultsForSearch:-1,formatResult:r,formatSelection:r,data:c});s.$render()});f.$watch("filterByCourseTypes",function(n){u(c,h,n)});s.$parsers.unshift(function(n){return n?parseInt(n):0});s.$formatters.unshift(function(n){return n?n+"":""});s.$render=function(){h.$promise.then(function(){e.select2("val",s.$viewValue)})};o.$observe("readonly",function(n){e.select2("readonly",!!n)});e.bind("$destroy",function(){e.select2("destroy")})}}}]);wbApp.directive("wbCurrencyCombo",["$timeout","$translate",function(n,t){function i(n){if(n)return t.instant(n.text)}function r(n){return t.instant(n.text)}return{restrict:"A",require:"ngModel",link:function(t,u,f,e){n(function(){$(u).select2({minimumResultsForSearch:-1,formatResult:i,formatSelection:r,data:[{id:"CZK",text:"TXT_VAL_CURRENCY_CZK"},{id:"EUR",text:"TXT_VAL_CURRENCY_EUR"}]});e.$render()});e.$render=function(){u.select2("val",e.$viewValue||"CZK")};u.on("change",function(n){t.$apply(function(){e.$setViewValue(n.val)})});f.$observe("disabled",function(n){u.select2("enable",!n)});f.$observe("readonly",function(n){u.select2("readonly",!!n)});u.bind("$destroy",function(){u.select2("destroy")})}}}]);wbApp.directive("wbCurrencyEdit",["$timeout","tenantInfo",function(n,t){function i(n){switch(n.currency){case"CZK":return" Kč";case"EUR":return" €";default:return" Kč"}}return{restrict:"A",require:"?ngModel",priority:1e4,link:function(r,u,f,e){function h(){var n=u.autoNumeric("get");e.$setViewValue(n)}var o=!1,s=!1;n(function(){u.autoNumeric("init",{aSign:i(t),aDec:",",aSep:" ",pSign:"s",mDec:"2",vMin:f.min!==undefined?f.min:-9999999999999.99,vMax:f.max!==undefined?f.max:9999999999999.99});s=!0});e.$parsers.unshift(function(n){return n!==null&&n!==undefined?typeof n=="string"||n instanceof String?n==""?null:parseFloat(n.replace(/,/g,".")):n:null});e.$formatters.unshift(function(n){return n!==null&&n!==undefined?n+"":null});e.$render=function(){o||(s?u.autoNumeric("set",e.$viewValue):n(function(){u.autoNumeric("set",e.$viewValue)}))};u.on("blur keyup change",function(){r.$evalAsync(h)});$(u).on("remove",function(){o=!0;u.autoNumeric("destroy")})}}}]);wbApp.directive("wbGenderCombo",["$timeout","$translate",function(n,t){function i(n){if(n)return t.instant(n.text)}function r(n){return t.instant(n.text)}return{restrict:"A",require:"ngModel",replace:!0,priority:1,link:function(t,u,f,e){n(function(){$(u).select2({minimumResultsForSearch:-1,formatResult:i,formatSelection:r,data:[{id:"M",text:"TXT_VAL_MALE"},{id:"F",text:"TXT_VAL_FEMALE"}]});u.on("change",function(n){t.$apply(function(){e.$setViewValue(n.val)})});t.$watch(f.ngModel,function(n){$(u).select2("val",n||"M")},!0);u.bind("$destroy",function(){u.select2("destroy")});f.$observe("disabled",function(n){u.select2("enable",!n)});f.$observe("readonly",function(n){u.select2("readonly",!!n)});f.ngEnable&&t.$watch(f.ngEnable,function(n){u.select2("enable",!!n)})},1)}}}]);angular.module("WBGrid",[]).directive("wbGrid2",["$filter","$translate","$rootScope","$http","$tooltip","$timeout","messageBoxSvc","uiUtilsSvc","gridSortSvc",function(n,t,i,r,u,f,e,o,s){return{restrict:"AE",replace:"true",scope:{gridOptions:"=",filterOptions:"=",ngModel:"=",rowSelected:"&",selectionChanged:"&",filterApplied:"&",rowEdit:"&",rowDelete:"&",rowAdd:"&",rowAddDisabled:"="},templateUrl:"directives/wb-grid2-tmpl.html",link:function(i,f){function l(){for(var t,n=0;n<i.filteredRows.length;n++)if((t=i.filteredRows[n],!i.disabledField||!t[i.disabledField]||i.disabledAreSelectable)&&!t[i.selectedField]){i.allSelected.selected=!1;return}i.filteredRows.length>0&&(i.allSelected.selected=!0)}function h(){for(var r,n=[],t=0;t<i.ngModel.length;t++)if(r=i.ngModel[t],r[i.selectedField]&&(n.push(r),!i.multiSelect))break;return i.multiSelect?n:n.length>0?n[0]:null}function w(){var n=[],r=h(),e,u,f;if(i.rowAdd&&i.rowAdd()&&!i.rowAddDisabled&&n.push({text:t.instant("TXT_MENU_NEW"),click:"onDropdownNewClick()"}),i.rowEdit&&i.rowEdit()&&(r&&i.gridOptions.hideEdit&&!i.gridOptions.hideEdit(r)||!i.gridOptions.hideEdit)&&n.push({text:t.instant("TXT_MENU_EDIT"),click:"onDropdownEditClick()"}),i.gridOptions.customCmds&&i.gridOptions.customCmds.length>0)for(e=!0,u=0;u<i.gridOptions.customCmds.length;u++)f=i.gridOptions.customCmds[u],(f.hide&&r&&!f.hide(r)||!f.hide)&&(e&&(e=!1,n.length>0&&n.push({divider:!0})),n.push({text:t.instant(f.text),click:"onDropdownCustomCommandClick("+u+")"}));return i.rowDelete&&i.rowDelete()&&(r&&i.gridOptions.hideDelete&&!i.gridOptions.hideDelete(r)||!i.gridOptions.hideDelete)&&(n.length>0&&!n[n.length-1].divider&&n.push({divider:!0}),n.push({text:t.instant("TXT_MENU_DELETE"),click:"onDropdownDeleteClick()"})),n}function b(n){for(var r,u,t,i=0;i<n.columnDefs.length;i++)if(t=n.columnDefs[i],t.sortDirection&&(t.sortDirection==="asc"||t.sortDirection==="dsc"))return{field:t.field,direction:t.sortDirection};if(n.sortInfo)for(r=n.sortInfo.fields[0],u=n.sortInfo.directions[0],i=0;i<n.columnDefs.length;i++)if(t=n.columnDefs[i],t.field===r)return t.sortDirection=u,{field:r,direction:u};return null}function k(n){for(var t,r={},i=0;i<n.length;i++)t=n[i],t.cellFilter&&(r[t.field]=a(t.cellFilter));return r}function d(n){for(var t,r={},i=0;i<n.length;i++)t=n[i],t.sort&&(r[t.field]=s[t.sort]);return r}function g(){function b(n){return n?n==="wbCurrencyFlt"||n==="checkmark"?!1:!0:!1}var c=[],w=[],r,l,v,e,y,o,f,u,s,h,p;for(f in i.gridOptions.columnDefs)r=i.gridOptions.columnDefs[f],r.field&&!r.noExport&&(c.push({field:r.field,filter:r.cellFilter}),w.push({field:r.field,filter:r.cellFilter,caption:t.instant(r.displayName),bitmaskValues:r.exportBitMaskValues,width:r.width}));for(l=i.filteredRows,v=[],e=0;e<l.length;e++){y=l[e];o=[];for(f in c)u=c[f],b(u.filter)?(s=a(u.filter),h=[y[u.field]],s.params&&h.push.apply(h,s.params),p=n(s.filterName),o.push(p.apply(p,h))):o.push(y[u.field]);v.push(o)}return{columns:w,rows:v}}function y(n){$("#dataDownloadIFrame").remove();var t=g();r({method:"POST",url:"/Api/Export/"+n,data:{data:JSON.stringify(t)}}).success(function(n){$("#dataDownloadIFrame").remove();$("body").append("<iframe id='dataDownloadIFrame' src='/Api/Export/Download?fileName="+n.fileName+"' style='height: 0px;' ><\/iframe>")})}function a(n){var t=n.indexOf(":");return{filterName:t!==-1?n.substring(0,t):n,params:t!==-1?nt([n.substring(t+1)]):""}}function nt(n){for(var r,i=[],t=0;t<n.length;t++)r=n[t],i.push(r.replace(/^'(.+(?='$))'$/,"$1"));return i}var v,p,c;i.rows=[];i.filteredRows=[];i.selectedPage=1;i.pages=[];i.filters={};i.sorts={};i.pageSizes=[{value:5,text:"5"},{value:10,text:"10"},{value:20,text:"20"},{value:30,text:"30"},{value:40,text:"40"},{value:50,text:"50"}];i.hideFooter=i.gridOptions.hideFooter;i.noCommandColumn=i.gridOptions.noCommandColumn;i.rowNumberColumn=i.gridOptions.rowNumberColumn;i.disableRowSelection=i.gridOptions.disableRowSelection;i.multiSelect=i.gridOptions.multiSelect;i.grouping=i.gridOptions.grouping||{enabled:!1};i.pageSize=i.hideFooter?999999:i.gridOptions.pageSize?i.gridOptions.pageSize:30;i.allSelected={selected:!1};i.disabledField=i.gridOptions.disabledField;i.selectedField=i.gridOptions.selectedField||"isSelected";i.highlightedField=i.gridOptions.highlightedField;i.dangerField=i.gridOptions.dangerField;i.dangerFn=i.gridOptions.dangerFn;i.disabledAreSelectable=i.gridOptions.disabledAreSelectable;i.scrollbarWidth=o.getScrollbarWidth();i.disableDeleteConfirmation=i.gridOptions.disableDeleteConfirmation||!1;v="wb-table-content-parent-"+(new Date).getTime()+"-"+Math.floor(Math.random()*1e8+1);$(f).find(".wb-table-content-parent").attr("id",v);p=null;c=u(f,{title:'<h4><i class="fa fa-spinner fa-spin"><\/i>&nbsp;&nbsp;'+t.instant("TXT_LOADING_DATA")+" ...<\/h4>",trigger:"manual",placement:"top center",html:!0});i.toggleGroupRowExpand=function(n){n.__expanded__=!n.__expanded__};i.$watch("ngModel",function(n){if(n&&n.$promise&&!n.$promise.$resolved){c.$promise.then(c.show);function t(){c.$promise.then(c.hide)}n.$promise.then(t,t)}});i.onSelectAllClick=function(){var n=null,u=!1,r=!1,t;if(i.allSelected.selected)for(t=0;t<i.filteredRows.length;t++)(n=i.filteredRows[t],i.disabledField&&n[i.disabledField]&&!i.disabledAreSelectable)||n[i.selectedField]||(n[i.selectedField]=!0,u=!0,r=!0);else for(t=0;t<i.filteredRows.length;t++)(n=i.filteredRows[t],i.disabledField&&n[i.disabledField]&&!i.disabledAreSelectable)||n[i.selectedField]&&(n[i.selectedField]=!1,r=!0);u&&i.rowSelected()&&i.rowSelected()(h());r&&i.selectionChanged()&&i.selectionChanged()()};i.commandDropdown=[];i.onDropdownNewClick=function(){var n=h();i.rowAdd&&i.rowAdd()&&!i.rowAddDisabled&&i.rowAdd()(h())};i.onDropdownCustomCommandClick=function(n){var t=i.gridOptions.customCmds[n];t&&t.command&&t.command(h(),i.filteredRows)};i.onDropdownEditClick=function(){var n=h();i.rowEdit&&i.rowEdit()&&n&&(i.gridOptions.hideEdit&&!i.gridOptions.hideEdit(n)||!i.gridOptions.hideEdit)&&i.rowEdit()(n)};i.onDropdownDeleteClick=function(){var n=h();i.rowDelete&&i.rowDelete()&&n&&(i.disableDeleteConfirmation?i.rowDelete()(n):e.showMessageDlg({title:"TXT_TITLE_CONFIRM_DELETE",message:"TXT_TEXT_CONFIRM_DELETE",buttons:[{text:"TXT_BTN_NO"},{text:"TXT_BTN_YES",callback:function(){i.rowDelete()(n)}}]}))};i.showCommandMenu=function(){return i.commandDropdown=w(),!1};i.onRowDblClick=function(){var n=h();i.rowEdit&&i.rowEdit()&&n&&(i.gridOptions.hideEdit&&!i.gridOptions.hideEdit(n)||!i.gridOptions.hideEdit)&&i.rowEdit()(n)};i.onAddMenuClick=function(){var n=h();i.rowAdd&&i.rowAdd()&&!i.rowAddDisabled&&i.rowAdd()(h())};i.onPageSizeChange=function(n){n&&n>0&&(i.recalculatePages(),i.selectPage(i.selectedPage))};i.recalculatePages=function(){var t,n;for(i.pages.length=0,t=i.filteredRows.length/i.pageSize,n=0;n<t;n++)i.pages.push(n)};i.onHeaderClick=function(n){var t,r;if(i.gridOptions.sortInfo){for(t=0;t<i.gridOptions.columnDefs.length;t++)r=i.gridOptions.columnDefs[t],r!==n&&(r.sortDirection=null);n.sortDirection=n.sortDirection==="dsc"?"asc":"dsc";i.applyFilters();i.selectPage(i.selectedPage)}};i.applyFilters=function(){function f(n,t){return t=(""+t).toLowerCase(),(""+n).toLowerCase().indexOf(t)>-1}function e(r){var a=!0,o,h=i.filterOptions&&i.filterOptions.filterText?i.filterOptions.filterText:null,c=i.filterOptions&&i.filterOptions.filterFunction?i.filterOptions.filterFunction:null,e,s,u,l,v;if(h||c){for(e=[{}],s=0;s<i.gridOptions.columnDefs.length;s++)u=i.gridOptions.columnDefs[s].field,t[u]&&t[u].filterName==="wbCurrencyFlt"?e[0][u]=r[u]:t[u]&&t[u].filterName==="checkmark"||(o=t[u]?n(t[u].filterName)(r[u],t[u].params):r[u],e[0][u]=o);if(h&&n("filter")(e,h).length===0||c&&n("filter")(e,c).length===0)return!1}for(u in i.filters)l=i.filters[u],l&&(o=t[u]&&t[u].filterName==="wbCurrencyFlt"?r[u]:t[u]&&t[u].filterName==="checkmark"?!r[u]?0:1:t[u]?n(t[u].filterName)(r[u],t[u].params):r[u],v=f(o,l),a&=v);return a}var t;i.filteredRows.length=0;t=k(i.gridOptions.columnDefs);var u=n("filter")(i.ngModel,e),r=b(i.gridOptions),o=d(i.gridOptions.columnDefs),h=!r?u:n("orderBy")(u,function(n){var u=o[r.field],i;return u?u(n[r.field]):(i=t[r.field],i&&i.filterName&&i.filterName.substring(0,5)==="date"?s.date(n[r.field]):n[r.field])},r.direction==="dsc");i.filteredRows.push.apply(i.filteredRows,h);i.filterApplied&&i.filterApplied()&&i.filterApplied()(i.filteredRows)};i.$watch("filterOptions",function(){i.selectedPage=1;i.applyFilters();i.recalculatePages();i.selectPage(i.selectedPage)},!0);i.$watch("filters",function(){i.selectedPage=1;i.applyFilters();i.recalculatePages();i.selectPage(i.selectedPage)},!0);i.$watchCollection("ngModel",function(){i.applyFilters();i.recalculatePages();i.selectPage(i.selectedPage);l()});i.selectPage=function(n){var t=Math.max(0,Math.min(i.pages.length-1,n-1));i.rows=i.filteredRows.slice(t*i.pageSize,(t+1)*i.pageSize);i.selectedPage=t+1};i.onPageSizeChange=function(){i.recalculatePages();i.selectPage(i.selectedPage)};i.onRowClicked=function(n){var u,t,r;if(i.disableRowSelection){i.grouping.enabled&&n[i.grouping.isGroupRowPropertyName]&&i.toggleGroupRowExpand(n);return}if(u=n[i.selectedField],!i.disabledField||!n[i.disabledField]||i.disabledAreSelectable){if(i.multiSelect)n[i.selectedField]=!n[i.selectedField];else{for(t=0;t<i.ngModel.length;t++)r=i.ngModel[t],r!==n&&r[i.selectedField]&&(r[i.selectedField]=!1);n[i.selectedField]=!0}l();i.rowSelected()&&n[i.selectedField]&&i.rowSelected()(n);u!=n[i.selectedField]&&i.selectionChanged()&&i.selectionChanged()()}};i.rowSelectionClicked=function(n){i.disabledField&&n[i.disabledField]&&!i.disabledAreSelectable||(l(),i.rowSelected()&&n[i.selectedField]&&i.rowSelected()(n),i.selectionChanged()&&i.selectionChanged()())};i.exportDropdown=[{text:t.instant("TXT_EXPORT_CSV"),click:"onCSVExportClick()"},{text:t.instant("TXT_EXPORT_XLS"),click:"onXLSExportClick()"}];i.onCSVExportClick=function(){y("Csv")};i.onXLSExportClick=function(){y("Xls")};i.getFilteredValue=function(t,i){if(i){var r=a(i);return n(r.filterName)(t,r.params)}return t};i.selectedRangeHi=function(){return Math.min(i.selectedPage*i.pageSize,i.filteredRows.length)}}}}]).animation(".wb-group-row",[function(){return{removeClass:function(n){jQuery(n).find("div.wb-table-group-content").css("margin-top","0px")},addClass:function(n){var t=jQuery(n).find("div.wb-table-group-content");t.css("margin-top","-"+t.height()+"px");setTimeout(function(){jQuery(n).removeClass("ng-hide-animate")},200)}}}]);wbApp.directive("wbInvoiceLookup",["$http","$translate","$timeout","$filter",function(n,t,i,r){function u(n){if(n)return"<div class='row' ><div class='col-md-7'>"+n.number+"<\/div><div class='col-md-5'>"+r("wbCurrencyFlt")(n.total)+"<\/div><\/div>"}function f(n){return n.number+" ("+r("wbCurrencyFlt")(n.total)+")"}return{restrict:"A",require:"ngModel",link:function(r,e,o,s){i(function(){e.select2({placeholder:t.instant("TXT_PLACEHOLDER_SELECT_INVOICE"),formatResult:u,formatSelection:f,dropdownAutoWidth:!0,allowClear:!1,ajax:{url:"Api/Invoices/GetLookupQuery",data:function(n,t){return{query:n,pageSize:10,pageNo:t,invoiceForType:r.$eval(o.wbInvoiceForType)}},results:function(n){var t=n.length>0;return{results:n,more:t}}},initSelection:function(t,i){var u=$(t).val();u?n({method:"GET",url:"Api/Invoices/GetLookupId",params:{invoiceID:u,invoiceForType:r.$eval(o.wbInvoiceForType)}}).success(function(n){s.$setViewValue(n.id);i(n)}):(s.$setViewValue(null),i(null))}});s.$render=function(){e.select2("val",s.$viewValue)};e.on("change",function(){r.$apply(function(){s.$setViewValue(e.select2("val"))})});o.$observe("disabled",function(n){e.select2("enable",!n)});o.$observe("readonly",function(n){e.select2("readonly",!!n)});e.bind("$destroy",function(){e.select2("destroy")})},1)}}}]);wbApp.directive("wbMaskedEdit",["$timeout",function(n){return{restrict:"A",require:"ngModel",link:function(t,i,r,u){n(function(){if(i.inputmask(r.uiMask,{clearIncomplete:!1,autoUnmask:!0}),u){u.$render=function(){i.val(u.$viewValue||"")};i.on("keyup",function(){t.$apply(function(){var n=i.inputmask("isComplete")||!i.val();u.$setValidity("mask",n);n&&u.$setViewValue(i.val())})});i.on("$destroy",function(){})}},1)}}}]);wbApp.directive("wbNumberEdit",[function(){return{restrict:"EA",require:"?ngModel",link:function(n,t,i,r){function e(n,t,i,r){return n.$setValidity(t,i),i?r:undefined}var u,f;r.$parsers.push(function(n){var t,u;return r.$isEmpty(n)?n:typeof n=="string"||n instanceof String?(t=null,i.min&&(u=parseFloat(i.min),u<0&&(t=n.replace(/[^0-9]|\-/g,""))),t===null&&(t=n.replace(/[^0-9]/g,"")),t!==n&&(r.$viewValue=t,r.$render()),parseInt(t||0)):n});r.$formatters.unshift(function(n){return r.$isEmpty(n)?n:n+""});i.min&&(u=function(n){var t=parseFloat(i.min);return e(r,"min",r.$isEmpty(n)||n>=t,n)},r.$parsers.push(u),r.$formatters.push(u));i.max&&(f=function(n){var t=parseFloat(i.max);return e(r,"max",r.$isEmpty(n)||n<=t,n)},r.$parsers.push(f),r.$formatters.push(f))}}}]);wbApp.directive("wbNumberExEdit",["$timeout",function(n){return{restrict:"A",require:"?ngModel",priority:1e4,link:function(t,i,r,u){function o(){var n=i.autoNumeric("get");u.$setViewValue(n)}var f=!1,e=!1;n(function(){i.autoNumeric("init",{aDec:",",aSep:" ",pSign:"s",mDec:"0",vMin:r.min!==undefined?r.min:-9999999999999.99,vMax:r.max!==undefined?r.max:9999999999999.99});e=!0});u.$parsers.unshift(function(n){return n!==null&&n!==undefined?typeof n=="string"||n instanceof String?n==""?null:parseFloat(n.replace(/,/g,".")):n:null});u.$formatters.unshift(function(n){return n!==null&&n!==undefined?n+"":null});u.$render=function(){f||(e?i.autoNumeric("set",u.$viewValue):n(function(){i.autoNumeric("set",u.$viewValue)}))};i.on("blur keyup change",function(){t.$evalAsync(o)});$(i).on("remove",function(){f=!0;i.autoNumeric("destroy")})}}}]);wbApp.directive("wbPaymentTypeCombo",["$timeout","$translate",function(n,t){function i(n){if(n)return t.instant(n.text)}function r(n){return t.instant(n.text)}return{restrict:"A",require:"ngModel",link:function(t,u,f,e){n(function(){$(u).select2({formatResult:i,formatSelection:r,dropdownAutoWidth:!0,allowClear:!1,minimumResultsForSearch:-1,data:[{id:0,text:"TXT_VAL_PAYMENT_TYPE_BANK_TRANSFER"},{id:1,text:"TXT_VAL_PAYMENT_TYPE_CASH"},{id:2,text:"TXT_VAL_PAYMENT_TYPE_CREDIT_CARD"},{id:3,text:"TXT_VAL_PAYMENT_TYPE_BENEFIT_PLUS"},{id:4,text:"TXT_VAL_PAYMENT_TYPE_ONLINE",disabled:!0},]});e.$render=function(){u.select2("val",e.$viewValue)};e.$parsers.unshift(function(n){return n?parseInt(n):0});e.$formatters.unshift(function(n){return n?n+"":"0"});u.on("change",function(){t.$apply(function(){e.$setViewValue(u.select2("val"))})});f.$observe("disabled",function(n){u.select2("enable",!n)});f.$observe("readonly",function(n){u.select2("readonly",!!n)});u.bind("$destroy",function(){u.select2("destroy")})},1)}}}]);wbApp.directive("wbPercentEdit",["$timeout",function(n){return{restrict:"A",require:"?ngModel",priority:1e4,link:function(t,i,r,u){function o(){var n=i.autoNumeric("get");u.$setViewValue(n)}var f=!1,e=!1;n(function(){i.autoNumeric("init",{aSign:" %",aDec:",",aSep:" ",pSign:"s",mDec:"2",vMin:"0.00",vMax:"100.00"});e=!0});u.$parsers.unshift(function(n){return n?typeof n=="string"||n instanceof String?parseFloat(n.replace(/,/g,".")):n:r.required?0:null});u.$formatters.unshift(function(n){return n?n+"":r.required?"0":null});u.$render=function(){f||(e?r.required?i.autoNumeric("set",u.$viewValue||"0"):i.autoNumeric("set",u.$viewValue):n(function(){r.required?i.autoNumeric("set",u.$viewValue||"0"):i.autoNumeric("set",u.$viewValue)}))};i.on("blur keyup change",function(){t.$evalAsync(o)});$(i).on("remove",function(){f=!0;i.autoNumeric("destroy")})}}}]);wbApp.directive("wbProficiencyLevelCombo",["$timeout","$translate","proficiencyLevelSvc",function(n,t,i){function r(n){if(n)return"<div class='row'><div class='col-md-5'>"+n.name+"<\/div><div class='col-md-7'>"+(n.description!=null?n.description:"")+"<\/div><\/div>"}function u(n){return n.name}return{restrict:"A",require:"ngModel",priority:1,replace:!0,template:"<input class='select2' style='width: 100%;' />",link:function(f,e,o,s){var h=i.getAllAsync();n(function(){$(e).select2({placeholder:t.instant("TXT_PLACEHOLDER_SELECT_PROFICIENCY_LEVEL"),formatResult:r,formatSelection:u,dropdownAutoWidth:!0,allowClear:!1,minimumResultsForSearch:-1,data:h});s.$render=function(){h.$promise.then(function(){$(e).select2("val",s.$viewValue)})};e.on("change",function(){f.$apply(function(){s.$setViewValue(e.select2("val"))})});e.bind("$destroy",function(){e.select2("destroy")});o.$observe("disabled",function(n){e.select2("enable",!n)});o.$observe("readonly",function(n){e.select2("readonly",!!n)})},1)}}}]);wbApp.directive("wbReferenceSourceCombo",["$timeout","$translate","referenceSourceSvc",function(n,t,i){function u(n){if(n.id)return n.name}var r={results:[]};return i.getAllAsync().$promise.then(function(n){for(var t=0;t<n.length;t++)r.results.push(n[t])}),{restrict:"A",require:"ngModel",priority:1,replace:!0,link:function(i,f,e,o){n(function(){$(f).select2({placeholder:t.instant("TXT_PLACEHOLDER_REFERENCE_SOURCE"),dropdownAutoWidth:!0,allowClear:!0,minimumResultsForSearch:-1,formatResult:u,formatSelection:u,data:r});o.$render=function(){f.select2("val",o.$viewValue)};f.on("change",function(){i.$apply(function(){o.$setViewValue(f.select2("val"))})});f.bind("$destroy",function(){f.select2("destroy")});e.$observe("disabled",function(n){f.select2("enable",!n)});e.$observe("readonly",function(n){f.select2("readonly",!!n)})},1)}}}]);wbApp.directive("wbShareOnFacebook",["facebookSvc","tenantInfo",function(n,t){return{restrict:"EA",priority:1,scope:{course:"=",action:"="},replace:!0,template:"<div style='display: inline-block; position: relative; margin-left: 20px' ><div style='position: absolute; top: 0; bottom:0; left: 0; right: 0; background-color: transparent; z-index: 1000;'ng-click='onFBButtonClick()'><\/div><div style='position: relative; top: -5px'class='fb-share-button'data-href='{{course.courseID}}'data-layout='button_count'><\/div><\/div>",controller:["$scope",function(i){var u=t.alias,r="";i.action?(r="Actions",i.courseHref="https://"+u+t.domain+"/"+r+"/Register/"+i.action.courseID):(r="Courses",i.courseHref="https://"+u+t.domain+"/"+r+"/Register/"+i.course.courseID);i.onFBButtonClick=function(){i.action?n.shareCourseDetail(i.action.courseID,i.action.subjectName,i.action.name,i.action.subjectDescription,i.action.description,i.action.teacher,!!i.action.pictures&&!!i.action.pictures.length?i.action.pictures[0].imageUrl:null,!0):n.shareCourseDetail(i.course.courseID,i.course.subjectName,i.course.name,i.course.subjectDescription,i.course.description,i.course.teacher,!!i.course.pictures&&!!i.course.pictures.length?i.course.pictures[0].imageUrl:null,!1)}}]}}]);wbApp.directive("wbStudentLookup",["$http","$translate","$timeout","$filter","notificationSvc",function(n,t,i,r,u){function f(n,t,i){var r=n;return!t||(r=r?r+" "+t:t),!i||(r=r?r+" "+i:i),r}function e(n){if(n){var t=n.birthday?r("date")(n.birthday,"shortDate"):"",i=!n.user?"":f(n.user.name,n.user.middlename,n.user.surname),u=!n.user?"":n.user.email;return"<div class='row'><div class='col-md-3'>"+f(n.name,n.middlename,n.surname)+"<\/div><div class='col-md-3'>"+i+"<\/div><div class='col-md-2'>"+t+"<\/div><div class='col-md-4'>"+u+"<\/div><\/div>"}}function o(n){return f(n.name,n.middlename,n.surname)}return{restrict:"A",require:"ngModel",scope:{ngModel:"=",userIdFilter:"=",parentId:"=",contactPhone:"=",contactEmail:"=",parentFullName:"="},link:function(r,s,h,c){i(function(){$(s).select2({placeholder:t.instant("TXT_PLACEHOLDER_SELECT_STUDENT"),formatResult:e,formatSelection:o,dropdownAutoWidth:!0,allowClear:!h.required,query:function(t){!h.userIdFilter||!r.userIdFilter?n({method:"GET",url:"restapi/students/paged/find-by-name",params:{nameSubstring:t.term,take:10,skip:Math.max(10*(t.page-1),0),expanded:"User"}}).success(function(n){t.callback({results:n,more:n.length>=10})}).error(function(){t.callback({results:[],more:!1})}):n({method:"GET",url:"restapi/students/find-by-user-id",params:{userId:r.userIdFilter,expanded:"User"}}).success(function(n){var r=!t.term?n:_.filter(n,function(n){var i=f(n.name,n.middlename,n.surname);return i.toLocaleUpperCase().includes(t.term.toLocaleUpperCase())}),u=Math.max(10*(t.page-1),0),e=10*t.page,i=_.take(_.drop(r,u),e);t.callback({results:i,more:i.length>=10})}).error(function(){t.callback({results:[],more:!1})})},initSelection:function(i,e){var o=$(i).val();o!=0?n({method:"GET",url:"restapi/students/"+o,params:{expanded:"User"}}).success(function(n){c.$setViewValue(n.id);!h.userIdFilter||(r.userIdFilter=n.userID);typeof r.parentId!="undefined"&&(r.parentId=n.userID);typeof r.contactPhone!="undefined"&&(r.contactPhone=n.user?n.user.phone:null);typeof r.contactEmail!="undefined"&&(r.contactEmail=n.user?n.user.email:null);typeof r.parentFullName!="undefined"&&(r.parentFullName=n.user?f(n.user.name,n.user.middlename,n.user.surname):null);e(n)}).error(function(n){u.notifyError(t.instant("TXT_ALERT_ERROR_READING_DATA"),u.translateError(n));e(null)}):(c.$setViewValue(null),e(null))}});$(s).on("select2-selecting",function(n){n.choice&&r.$apply(function(){!h.userIdFilter||(r.userIdFilter=n.choice.userID);typeof r.parentId!="undefined"&&(r.parentId=n.choice.userID);typeof r.contactPhone!="undefined"&&(r.contactPhone=n.choice.user?n.choice.user.phone:null);typeof r.contactEmail!="undefined"&&(r.contactEmail=n.choice.user?n.choice.user.email:null);typeof r.parentFullName!="undefined"&&(r.parentFullName=n.choice.user?f(n.choice.user.name,n.choice.user.middlename,n.choice.user.surname):null)})});c.$parsers.unshift(function(n){return n?parseInt(n):null});c.$formatters.unshift(function(n){return n?n+"":"0"});c.$render=function(){s.select2("val",c.$viewValue)};!h.userIdFilter||r.$watch("userIdFilter",function(n,t){n==t||!t||s.select2("val",null)});h.$observe("readonly",function(n){s.select2("readonly",!!n)});s.bind("$destroy",function(){s.select2("destroy")})},1)}}}]);wbApp.directive("wbTerminalCombo",["$timeout","$translate","$filter","terminalSvc",function(n,t,i,r){function u(n){if(n)return n.name}function f(n){return n.name}return{restrict:"A",require:"ngModel",priority:1,replace:!0,link:function(i,e,o,s){var h=r.getAllAsync();n(function(){$(e).select2({placeholder:t.instant("TXT_LBL_TERMINAL"),formatResult:u,formatSelection:f,dropdownAutoWidth:!0,allowClear:!0,minimumResultsForSearch:-1,id:function(n){return n.terminalID},data:h});s.$render()});s.$parsers.unshift(function(n){return n?parseInt(n):null});s.$formatters.unshift(function(n){return n?n+"":null});s.$render=function(){h.$promise.then(function(){$(e).select2("val",s.$viewValue)})};e.on("change",function(n){i.$apply(function(){s.$setViewValue(n.val)})});e.bind("$destroy",function(){e.select2("destroy")});o.$observe("readonly",function(n){e.select2("readonly",!!n)})}}}]);wbApp.directive("wbTrueFalseCombo",["$timeout","$translate",function(n,t){function i(n){if(n)return t.instant(n.text)}function r(n){return t.instant(n.text)}return{restrict:"A",require:"ngModel",replace:!0,priority:1,link:function(t,u,f,e){e.$parsers.unshift(function(n){return n==="1"?!0:!1});e.$formatters.unshift(function(n){return n==="true"?"1":"0"});n(function(){$(u).select2({minimumResultsForSearch:-1,formatResult:i,formatSelection:r,dropdownAutoWidth:!0,allowClear:!1,data:[{id:1,text:"TXT_VAL_TRUE"},{id:0,text:"TXT_VAL_FALSE"}]});u.bind("$destroy",function(){u.select2("destroy")});f.$observe("readonly",function(n){u.select2("readonly",!!n)});e.$render=function(){$(u).select2("val",e.$viewValue)}},1)}}}]);wbApp.directive("wbValidationTooltip",["$tooltip","$timeout","errorTypeTranslateSvc",function(n,t,i){return{restrict:"A",require:"ngModel",link:function(t,r,u,f){var e=n(r,{title:"",trigger:"hover focus",placement:u.wbValidationTooltip||"auto bottom",html:!0,animation:"am-fade-and-scale",delay:100});t.$watch(function(){return r.attr("class")},function(){var n="",o,s;if(f.$valid)e.$scope.title="";else{for(o in f.$error)f.$error[o]&&(n.length&&(n+="<br/>"),n+=i.translate(o,u,t));e.$scope.title!==n&&(s=$(r).is(":focus"),e.$scope.title=n,s&&e.show())}})}}}]);wbApp.filter("activityCompensationType",["$translate",function(n){return function(t){switch(t){case 0:return n.instant("TXT_VAL_ACTIVITY_COMPENSATION_TYPE_ONE_FOR_ONE");case 1:return n.instant("TXT_VAL_ACTIVITY_COMPENSATION_TYPE_TWO_FOR_ONE");case 2:return n.instant("TXT_VAL_ACTIVITY_COMPENSATION_TYPE_DISABLED")}}}]);wbApp.filter("activityStatus",["$translate",function(n){return function(t){switch(t){case 0:return n.instant("TXT_STATUS_PRESENT");case 1:return n.instant("TXT_STATUS_NOT_PRESENT_NOT_EXCUSED");case 2:return n.instant("TXT_STATUS_NOT_PRESENT_EXCUSED");case 3:return n.instant("TXT_STATUS_NOT_PRESENT_EXCUSED_NO_COMPENSATION");case 4:return n.instant("TXT_STATUS_NOT_PRESENT_EXCUSED_NO_FOOD")}}}]);wbApp.filter("ageRangeName",["ageRangeSvc","$translate",function(n,t){function r(n){if(i.$resolved){var r=_.find(i,{ageRangeID:n});return r?r.name:""}return t.instant("TXT_LOADING_DATA")}var i=n.getAllAsync();return r.$stateful=!0,r}]);wbApp.filter("attendanceFeeType",["$translate",function(n){return function(t){switch(t){case 0:return n.instant("TXT_VAL_REGULAR");case 1:return n.instant("TXT_VAL_ONEOFF");case 2:return n.instant("TXT_VAL_NONE");case 3:return n.instant("TAX_VAL_CUSTOM")}}}]);wbApp.filter("attendanceStatus",["$translate",function(n){return function(t){switch(t){case 0:return n.instant("TXT_STATUS_PRESENT");case 1:return n.instant("TXT_STATUS_NOT_PRESENT_NOT_EXCUSED");case 2:return n.instant("TXT_STATUS_NOT_PRESENT_EXCUSED");case 3:return n.instant("TXT_STATUS_NOT_PRESENT_EXCUSED_NO_COMPENSATION")}}}]);wbApp.filter("attendanceType",["$translate",function(n){return function(t){switch(t){case 0:return n.instant("TXT_VAL_REGISTERED");case 1:return n.instant("TXT_VAL_ONEOFF");case 2:return n.instant("TXT_VAL_AMEND");case 3:return n.instant("TAX_VAL_PREVIEW")}}}]);wbApp.filter("boolean",["$translate",function(n){return function(t){return t?n.instant("TXT_BTN_YES"):n.instant("TXT_BTN_NO")}}]);wbApp.filter("checkmark",function(){return function(n){return n?"✓":"✘"}});wbApp.filter("classroom",["classroomSvc","$translate",function(n,t){function r(n){if(i.$resolved){var r=_.find(i,{id:n});return r?r.isDeleted?r.name+" ("+t.instant("TXT_VAL_DELETED")+")":r.active?r.name:r.name+" ("+t.instant("TXT_VAL_NOT_ACTIVE")+")":""}return t.instant("TXT_LOADING_DATA")}var i=n.getAllAsync();return r.$stateful=!0,r}]);wbApp.filter("gender",["$translate",function(n){return function(t){return t==="M"?n.instant("TXT_VAL_MALE"):n.instant("TXT_VAL_FEMALE")}}]);wbApp.filter("invoiceForType",["$translate",function(n){return function(t){switch(t){case 1:return n.instant("TXT_LAB_COURSE");case 2:return n.instant("TXT_LAB_ACTION_SINGULAR");case 3:return n.instant("TXT_LAB_KINDERGARTEN");case 4:return n.instant("TXT_LAB_RESERVATION");case 5:return n.instant("TXT_LAB_WALLET_DEPOSIT");case 6:return n.instant("TXT_LAB_CUSTOM")}return""}}]);wbApp.filter("nonEmptyCollection",[function(){return function(n){return n&&n.length?"✓":"✘"}}]);wbApp.filter("onlinePaymentState",["$translate",function(n){return function(t){switch(t){case 0:return n.instant("TXT_VAL_ONLINE_PAYMENT_STATUS_NONE");case 1:return n.instant("TXT_VAL_ONLINE_PAYMENT_STATUS_CREATED");case 2:return n.instant("TXT_VAL_ONLINE_PAYMENT_STATUS_PENDING");case 3:return n.instant("TXT_VAL_ONLINE_PAYMENT_STATUS_PAID");case 4:return n.instant("TXT_VAL_ONLINE_PAYMENT_STATUS_REVERSED");case 5:return n.instant("TXT_VAL_ONLINE_PAYMENT_STATUS_AUTOREVERSED");case 6:return n.instant("TXT_VAL_ONLINE_PAYMENT_STATUS_CANCELLED");case 7:return n.instant("TXT_VAL_ONLINE_PAYMENT_STATUS_DECLAINED");case 8:return n.instant("TXT_VAL_ONLINE_PAYMENT_STATUS_DECLAINED")}}}]);wbApp.filter("paymentType",["$translate",function(n){return function(t){switch(t){case 0:return n.instant("TXT_VAL_PAYMENT_TYPE_BANK_TRANSFER");case 1:return n.instant("TXT_VAL_PAYMENT_TYPE_CASH");case 2:return n.instant("TXT_VAL_PAYMENT_TYPE_CREDIT_CARD");case 3:return n.instant("TXT_VAL_PAYMENT_TYPE_BENEFIT_PLUS");case 4:return n.instant("TXT_VAL_PAYMENT_TYPE_ONLINE")}}}]);wbApp.filter("phone",function(){return function(n){return n?n.replace(/\+?(\d{3})(\d{3})(\d{3})(\d{3})/,"+$1 $2 $3 $4"):""}});wbApp.filter("sumFlt",[function(){return function(n,t){var r=0,i,f,u;if(!n||!t)return r;for(i=0;i<n.length;i++)f=n[i],u=f[t],u&&(r+=u);return r}}]);wbApp.filter("terminal",["$translate","terminalSvc",function(n,t){function r(t){if(i.$resolved){var r=_.find(i,{terminalID:t});return r?r.name:""}return n.instant("TXT_LOADING_DATA")}var i=t.getAllAsync();return r.$stateful=!0,r}]);wbApp.filter("urlButton",function(){return function(n){return n==="==group=="?'<div class="btn btn-warning btn-xs btn-width-57" role="button">Více <i class="fa fa-caret-down"><\/i><\/div>':!!n&&n.startsWith("https://")?'<a class="btn btn-success btn-xs btn-width-57" href="'+n+'" role="button" target="_blank"><i class="fa fa-globe"><\/i> Více <i class="fa fa-caret-right"><\/i><\/a>':!n||n.startsWith("https://")?"":'<a class="btn btn-success btn-xs btn-width-57" href="https://'+n+'" role="button" target="_blank"><i class="fa fa-globe"><\/i> Více <i class="fa fa-caret-right"><\/i><\/a>'}});wbApp.filter("wbColor",["$sce",function(n){return function(t){var i=new webooker_utils.ColorUtils;return n.trustAsHtml('<div style="background-color:'+i.intToRgb(t||0)+'; width: 100%; height: 18px; padding: 1px;"><\/div>')}}]);wbApp.filter("wbCurrencyFlt",["$filter","tenantInfo",function(n,t){function i(n){switch(n.currency){case"CZK":return" Kč";case"EUR":return" €";default:return" Kč"}}return function(r){return r===null||r===undefined?"":n("number")(r,2)+i(t)}}]);wbApp.filter("wbPercent",["$filter",function(n){return function(t,i){return n("number")(t,i)+" %"}}]);wbApp.config(["$translateProvider",function(n){n.translations("en",{TXT_LAB_PAYMENT_FOR:"Payment for",TXT_LAB_INVOICE:"Invoice",TXT_LAB_STUDENT:"Student:",TXT_LAB_SEMESTER:"Semester",TXT_LAB_COURSE:"Course",TXT_LAB_PAYMENT_TYPE:"Payment type",TXT_LAB_AMOUNT:"Amount",TXT_LAB_PAYMENT_DATE:"Payment date",TXT_LAB_NOTE:"Note:",TXT_LAB_ACTION_SINGULAR:"Event",TXT_LAB_KINDERGARTEN:"Kindergarten",TXT_LAB_RESERVATION:"Reservation",TXT_LAB_WALLET_DEPOSIT:"Wallet deposit",TXT_LAB_CUSTOM:"Custom",TXT_LAB_ACTIVITY:"Class",TXT_LAB_ACTIVITY_RECONCILIATION:"Reconciliation",TXT_LBL_ALL:"All",TXT_LBL_NONE:"None",TXT_LAB_REFERENCE_SOURCE:"Reference",TXT_LBL_NATIONALITY:"Nationality",TXT_LBL_EMAIL2:"Email 2",TXT_LBL_SECOND_EMAIL:"Second email",TXT_LBL_IS_DEFAULT:"Default",TXT_LBL_ACTIVE:"Active",TXT_LBL_QUESTION:"Question",TXT_LAB_HEALTH:"Health",TXT_LAB_ATTENDANT_HEALTH:"Attendant health",TXT_LBL_DISCOUNT_PCT:"Discount",TXT_LBL_RECORD:"Record",TXT_LBL_OF:"of",TXT_LBL_PARTNER:"Partner",TXT_LAB_HEALTH_DEFAULT:"Good",TXT_LBL_COURSE_FEE:"Course fee",TXT_LBL_FIXED_PRICE:"Fixed course price",TXT_LBL_COMPENSATION_TYPE:"Compensation type",TXT_LBL_COMPENSATIONS:"Compensations",TXT_LBL_PARENT:"Parent",TXT_LBL_ONLINE:"Online",TXT_LBL_ONLINE_LESSON:"Online lesson",TXT_BTN_PRINT:"Print",TXT_BTN_CANCEL:"Cancel",TXT_BTN_SAVE:"Save",TXT_BTN_NO:"No",TXT_BTN_YES:"Yes",TXT_BTN_ADD:"Add",TXT_BTN_CLOSE:"Close",TXT_BTN_NEXT:"Next",TXT_BTN_BACK:"Back",TXT_BTN_SEND:"Send",TXT_BTN_REMOVE:"Remove",TXT_BTN_LOAD:"Load",TXT_ERROR_IS_BEFORE:"The date should be before: ",TXT_ERROR_IS_AFTER:"The date should be after: ",TXT_EXPORT_CSV:"(CSV) Comma separated values (*.csv)",TXT_EXPORT_XLS:"(XLS) Excel sheet 97-2003 (*.xls)",TXT_ALERT_ERROR_READING_DATA:"Error during communication with server",TXT_ALERT_TITLE_CHANGES_SAVED:"Changes were successfully saved",TXT_ALERT_TITLE_CHANGES_SAVE_ERROR:"There was an error while saving changes",TXT_ALERT_TITLE_FB_PUBLISH_SUCCESSFULL:"Post was published on Facebook successfully.",TXT_ALERT_TITLE_FB_PUBLISH_ERROR:"Post was not published on Facebook!",TXT_ALERT_TITLE_DATA_SAVE_ERROR:"There was an error during saving",TXT_PLACEHOLDER_SELECT_INVOICE:"Select invoice",TXT_PLACEHOLDER_SELECT_COURSE_TYPE:"Select course type",TXT_PLACEHOLDER_SELECT_SUBJECT:"Select subject",TXT_PLACEHOLDER_SELECT_ACTION_CATEGORY:"Select category",TXT_VAL_PAYMENT_TYPE_BANK_TRANSFER:"Bank transfer",TXT_VAL_PAYMENT_TYPE_CASH:"Cash",TXT_VAL_PAYMENT_TYPE_CREDIT_CARD:"Credit card",TXT_VAL_PAYMENT_TYPE_BENEFIT_PLUS:"Benefit Plus",TXT_VAL_PAYMENT_TYPE_ONLINE:"Online",TXT_VAL_PRESENT:"Present",TXT_VAL_NOT_PRESENT:"Not present",TXT_VAL_EXCUSED:"Excused",TXT_VAL_EXCUSED_NO_COMP:"Excused no compensation",TXT_VAL_EXCUSED_NO_FOOD:"Excused without food",TXT_VAL_REGISTERED:"Registered",TXT_VAL_ONEOFF:"One-off",TXT_VAL_AMEND:"Compensation",TAX_VAL_PREVIEW:"Preview",TXT_VAL_MALE:"Male",TXT_VAL_FEMALE:"Female",TXT_VAL_PASSWORD_WEAK:"Weak",TXT_VAL_PASSWORD_GOOD:"Good",TXT_VAL_PASSWORD_STRONG:"Strong",TXT_VAL_DELETED:"deleted",TXT_VAL_NOT_ACTIVE:"inactive",TXT_VAL_ILLNESS:"Illness",TXT_VAL_REGULAR:"Regular",TXT_VAL_NONE:"None",TAX_VAL_CUSTOM:"Custom",TXT_VAL_ACTIVITY_COMPENSATION_TYPE_ONE_FOR_ONE:"One compensation for one excuse",TXT_VAL_ACTIVITY_COMPENSATION_TYPE_TWO_FOR_ONE:"One compensation for two excuses",TXT_VAL_ACTIVITY_COMPENSATION_TYPE_DISABLED:"Compensations disabled",TXT_VAL_ONLINE_PAYMENT_STATUS_NONE:"None",TXT_VAL_ONLINE_PAYMENT_STATUS_CREATED:"Created",TXT_VAL_ONLINE_PAYMENT_STATUS_PENDING:"Pending",TXT_VAL_ONLINE_PAYMENT_STATUS_PAID:"Paid",TXT_VAL_ONLINE_PAYMENT_STATUS_REVERSED:"Reversed",TXT_VAL_ONLINE_PAYMENT_STATUS_AUTOREVERSED:"AutoReversed",TXT_VAL_ONLINE_PAYMENT_STATUS_CANCELLED:"Cancelled",TXT_VAL_ONLINE_PAYMENT_STATUS_DECLAINED:"Declined",TXT_VAL_ONLINE_PAYMENT_STATUS_ERROR:"Error",TXT_TITLE_CONFIRM_NOTIFICATION:"Send notification?",TXT_TITLE_CONFIRM_PRINT:"Print receipt?",TXT_TITLE_INFORMATION:"Information",TXT_TITLE_CONFIRMATION:"Confirmation",TXT_CONFIRM_NOTIFICATION_MESSAGE:"Do you want to send notification about this change to your clients?",TXT_CONFIRM_PRINT_CASH_RECEIPT_MESSAGE:"Do you want to print cash receipt for this payment?",TXT_CONFIRM_PRINT_PAYMENT_EVIDENCE_MESSAGE:"Do you want to print payment confirmation report?",TXT_LBL_SEND_NOTIFICATION_EMAIL:"Send notification over email",TXT_LBL_SEND_NOTIFICATION_SMS:"Send notification over SMS",TXT_LBL_REMEBER_ANSWER:"Remember selection and do not show this dialog again.",TXT_BTN_CLEAR:"Clear",TXT_BTN_OK:"Ok",TXT_LBL_RECURRING_INVOICES:"Recurring invoices",TXT_LAB_ATTENDANCE_COUNT:"No of attendances",TXT_LAB_RESERVED_PALCES:"Places",TXT_LBL_TERMINAL:"Terminal",TXT_LBL_AGE:"Age",TXT_PLACEHOLDER_SELECT_AGE:"Select age",TXT_LBL_INVOICE_NO:"Invoice No.",TXT_LBL_DUE_DATE:"Due date",TXT_LBL_SUBJECT:"Subject",TXT_LBL_TYPE:"Type",TXT_LBL_ARREAR:"Arrear",TXT_LBL_ARREAR_BY_AMORTIZATION_SCHEDULE:"Arrear according to amortization schedule",TXT_LBL_ARREAR_ALL:"Overall arrear",TXT_PAY_ONLINE:"Pay online",TXT_LBL_OVER_PAYMENT:"Overpayment",TXT_PAYMENT_RESULT:"Online payment result",TXT_PAYMENT_RESULT_PENDING:"Status of the online payment transaction with the price {0} is not known yet. Status will be automatically updated later.",TXT_PAYMENT_RESULT_PAID:"Online payment with price {0} has been paid successfully.",TXT_PAYMENT_RESULT_REVERSED:"Online payment with price {0} was reversed.",TXT_PAYMENT_RESULT_CANCELLED:"Online payment with price {0} was canceled.",TXT_PAYMENT_RESULT_DECLAINED:"Online payment with price {0} was declined.",TXT_PAYMENT_RESULT_ERROR:"Online payment with price {0} ended with an error: {1}",TXT_PAYMENT_RESULT_UNEXPECTED:"Online payment with price {0} ended in unexpected state. Please contact support.",TXT_PAYMENT_CANNOT_BE_STARTED:"Online payment cannot be started",TXT_STATUS_PRESENT:"Present",TXT_STATUS_NOT_PRESENT_NOT_EXCUSED:"Not present",TXT_STATUS_NOT_PRESENT_EXCUSED:"Excused",TXT_STATUS_NOT_PRESENT_EXCUSED_NO_COMPENSATION:"Excused no comp.",TXT_STATUS_NOT_PRESENT_EXCUSED_NO_FOOD:"Excused without food",TXT_LBL_CONSENTS:"Consents",TXT_LBL_CONSENTS_DEFINITIONS:"Consents definitions",TXT_BTN_SAVE_AND_SEND:"Save and send",TXT_APPROVE:"Approve",TXT_DENY:"Deny",TXT_VALID:"Valid",TXT_VALIDITY:"Validity",TXT_INVALID:"Invalid",TXT_APPROVED_BY:"Approved by",TXT_APPROVED_AT:"Approved at",TXT_DENIED_BY:"Denied by",TXT_DENIED_AT:"Denied at",TXT_LBL_TERMS_AND_CONDITIONS:"Terms & Conditions",TXT_LBL_INSTRUCTIONS:"Instructions",TXT_LBL_TRADE_TERMS:"Trade terms",TXT_LBL_PROTECTION_OF_PERSONAL_DATA:"Personal data protection",TXT_LBL_HTML_CUSTOM_CONTENT:"Custom content",TXT_TAB_AMORTIZATION_SCHEDULE:"Amortization schedule",TXT_AMORTIZATION_SCHEDULE_FOR_COURSE_PAYMENT:"Amortization schedule for course payment",TXT_COL_FINAL_PRICE:"Summary",TXT_MODEL_MODFIFIED_SHOULD_SAVE:"Your latest changes where NOT saved, do you want to save them now?",TXT_PLACE:"Place",TXT_EMPLOYEE:"Employee",TXT_ALERT_TITLE_ENTITY_SAVED:"Saved successfully",TXT_ALERT_TITLE_ENTITY_SAVE_ERROR:"Error during save",TXT_ALERT_TITLE_ENTITY_REMOVED:"Deleted successfully",TXT_ALERT_TITLE_ENTITY_REMOVE_ERROR:"Error during delete",TXT_ALERT_TITLE_ENTITY_GET_ERROR:"Error reading data",TXT_ALERT_TITLE_FORBIDEN:"Permission error",TXT_ALERT_UNAUTHORIZED:"Unauthorized access",TXT_LBL_DESCRIPTION:"Description",TXT_LBL_SHORT_DESCRIPTION:"Short description",TXT_LBL_ADDRESS:"Address",TXT_DOMAIN_PREFIX:"Domain prefix",TXT_DOMAIN_PREFIX_DESC:"This is URL address looks like for your company. This bold part corresponds to the name of your company.",TXT_TENANT_NAME_DESC:"This is shortened name of your company, which is displayed on the main page of the client section. It is also used in the signature of the emails sent to your clients.",TXT_LBL_SUBJECT_NAME:"Official name",TXT_LBL_SUBJECT_DESC:"Official name of your company as you use it on invoices and official documents",TXT_LBL_ADDRESS_DESC:"Official place of business",TXT_LBL_ORGANISATION_IDENTIFIER:"OI",TXT_LBL_IS_VAT_PAYER:"Is VAT payer",TXT_LBL_ACCOUNT_NO:"Bank account no",TXT_LBL_ACCOUNT_NO_DESC:"Bank account number which will be used on invoices for your clients.",TXT_CURRENCY:"Currency",TXT_CURRENCY_DESC:"Set up currency in which your system operates.",TXT_VAL_CURRENCY_CZK:"Czech crown (Kč)",TXT_VAL_CURRENCY_EUR:"Euro (€)",TXT_COUNTRY_CODE_CZ:"Czech Republic",TXT_COUNTRY_CODE_SK:"Slovakia",TXT_COUNTRY:"Country",TXT_COUNTRY_DESC:"Selecting a correct country has effect on country specific settings like local bank connections, IBAN calculation, QR payments etc.",TXT_LBL_USER:"User",TXT_LBL_MIDDLENAME:"Middle name",TXT_LBL_EMAIL:"Email",TXT_LBL_PHONE:"Phone",TXT_LBL_SETTING:"Setting",TXT_ERROR_UNIQUE_TENANT_NAME:"This domain prefix is already in use, select a different one",TXT_TENANT_REGISTRATION_SUCCESS_TITLE:"New system {0} has been created",TXT_TENANT_REGISTRATION_SUCCESS_DESC1:"New system has been created successfully, you can find it at address:",TXT_TENANT_REGISTRATION_SUCCESS_DESC2:"New user account has also been created for you, with administrator privileges. For login in please use email, which you have specified during registration.",TXT_TENANT_REGISTRATION_SUCCESS_DESC3:"An activation email was sent to your mailbox. Please use it to activate the account and set your password.",TXT_SELECT_STUDENT:"Select a student",TXT_LBL_HEALTH_OR_NOTE:"Health or other notes",TXT_FORM_NOT_REG_STUDENT_HEADER:"Student / child",TXT_ALREADY_HAVE_AN_ACCOUNT_LOGIN:"Already have an account - Login",TXT_FILL_THE_FORM_WITHOUT_REGISTRATION:"Fill without registration",TXT_LEGAL_REPRESENTATIVE:"Legal representative or contact person",TXT_FILL_THE_FORM_WITH_REGISTRATION:"Fill for registered user",TXT_DOMAIN:"Domain",TXT_EMPTY:"Empty",TXT_LAB_PERSONAL_ID_NUMBER:"Personal identification number",TXT_NO_SLASH:"Without slash",TXT_MENU_RENTS:"Rents",TXT_MENU_ITEM_TYPE:"Item type",TXT_LBL_FROM:"From",TXT_LBL_TO:"To",TXT_MENU_RENT_CATEGORY:"Rent category",TXT_MENU_RENT_CATEGORY_GROUP:"Rent category group",TXT_MENU_RENT_ITEM:"Rent item",TXT_LBL_COUNT:"Count",TXT_ERROR_REQUIRED:"This field is required",TXT_SHOPPING_CART:"Shopping cart",TXT_LBL_RENT:"Rent",TXT_ITEM:"Item",TXT_INVALID_SELECTION:"Invalid selection",TXT_ONLY_CART_RANGE_IS_VALID:"Only date range defined in the shopping cart can be selected.",TXT_SHOPPING_CART_IS_EMPTY:"Shopping cart is empty",TXT_CANNOT_CREATE_RENT_INT_THE_PAST:"Cannot create rent in the past.",TXT_START_AND_DATE_MUST_BE_IN_OPEN_PERIOD:"Start date and end date must be within opening hours.",TXT_MENU_RENT_ITEMS:"Rent items",TXT_BACK_TO_LIST:"Back to list",TXT_LBL_FILES:"Files"})}]);wbApp.config(["$translateProvider",function(n){n.translations("cs",{TXT_LAB_PAYMENT_FOR:"Platba za",TXT_LAB_INVOICE:"Faktura",TXT_LAB_STUDENT:"Student",TXT_LAB_SEMESTER:"Semestr",TXT_LAB_COURSE:"Kurz",TXT_LAB_PAYMENT_TYPE:"Typ platby",TXT_LAB_AMOUNT:"Hodnota",TXT_LAB_PAYMENT_DATE:"Datum platby",TXT_LAB_NOTE:"Poznámka",TXT_LAB_ACTION_SINGULAR:"Akce",TXT_LAB_KINDERGARTEN:"Školka",TXT_LAB_RESERVATION:"Rezervace",TXT_LAB_WALLET_DEPOSIT:"Peněženka",TXT_LAB_CUSTOM:"Vlastní",TXT_LAB_ACTIVITY:"Třída",TXT_LAB_ACTIVITY_RECONCILIATION:"Vyúčtování",TXT_LBL_ALL:"Všechno",TXT_LBL_NONE:"Nic",TXT_LAB_REFERENCE_SOURCE:"Reference",TXT_LBL_NATIONALITY:"Občanství",TXT_LBL_EMAIL2:"E-mail 2",TXT_LBL_SECOND_EMAIL:"Druhý e-mail",TXT_LBL_IS_DEFAULT:"Výchozí",TXT_LBL_ACTIVE:"Aktivní",TXT_LBL_QUESTION:"Otázka",TXT_LAB_HEALTH:"Zdravotní stav",TXT_LAB_ATTENDANT_HEALTH:"Zdravotní stav doprovázející osoby",TXT_LBL_DISCOUNT_PCT:"Sleva",TXT_LBL_RECORD:"Záznam",TXT_LBL_OF:"z",TXT_LBL_PARTNER:"Partner",TXT_LAB_HEALTH_DEFAULT:"Dobrý",TXT_LBL_COURSE_FEE:"Kurzovné",TXT_LBL_FIXED_PRICE:"Fixní cena kurzu",TXT_LBL_COMPENSATION_TYPE:"Typ náhrad",TXT_LBL_COMPENSATIONS:"Náhrady",TXT_LBL_PARENT:"Rodič",TXT_LBL_ONLINE:"Online",TXT_LBL_ONLINE_LESSON:"Online lekce",TXT_BTN_PRINT:"Tisk",TXT_BTN_CANCEL:"Zrušit",TXT_BTN_SAVE:"Uložit",TXT_BTN_NO:"Ne",TXT_BTN_YES:"Ano",TXT_BTN_ADD:"Přidat",TXT_BTN_CLOSE:"Zavřít",TXT_BTN_NEXT:"Další",TXT_BTN_BACK:"Zpět",TXT_BTN_SEND:"Odeslat",TXT_BTN_REMOVE:"Odebrat",TXT_BTN_LOAD:"Nahrát",TXT_ERROR_IS_BEFORE:"Zadané datum musí být menší než: ",TXT_ERROR_IS_AFTER:"Zadané datum musí být větší než: ",TXT_EXPORT_CSV:"(CSV) textový soubor s oddělovači (*.csv)",TXT_EXPORT_XLS:"(XLS) Sešit Excelu 97-2003 (*.xls)",TXT_ALERT_ERROR_READING_DATA:"Chyba při komunikaci se serverem",TXT_ALERT_TITLE_CHANGES_SAVED:"Změny byly úspěšně uloženy",TXT_ALERT_TITLE_CHANGES_SAVE_ERROR:"Při ukládání změn se vyskytla chyba",TXT_ALERT_TITLE_FB_PUBLISH_SUCCESSFULL:"Příspěvek byl úspěšně publikován na Facebooku",TXT_ALERT_TITLE_FB_PUBLISH_ERROR:"Příspěvek nebyl na Facebooku publikován!",TXT_ALERT_TITLE_DATA_SAVE_ERROR:"Vyskytla se chyba při ukládání změn",TXT_PLACEHOLDER_SELECT_INVOICE:"Vyberte fakturu",TXT_PLACEHOLDER_SELECT_COURSE_TYPE:"Vyberte typ",TXT_PLACEHOLDER_SELECT_SUBJECT:"Vyberte předmět",TXT_PLACEHOLDER_SELECT_SUBJECT:"Vyberte kategorii",TXT_VAL_PAYMENT_TYPE_BANK_TRANSFER:"Bankou",TXT_VAL_PAYMENT_TYPE_CASH:"Hotově",TXT_VAL_PAYMENT_TYPE_CREDIT_CARD:"Kartou",TXT_VAL_PAYMENT_TYPE_BENEFIT_PLUS:"Benefit Plus",TXT_VAL_PAYMENT_TYPE_ONLINE:"Online",TXT_VAL_PRESENT:"Přítomen",TXT_VAL_NOT_PRESENT:"Nepřítomen",TXT_VAL_EXCUSED:"Omluven",TXT_VAL_EXCUSED_NO_COMP:"Omluven bez náhrady",TXT_VAL_EXCUSED_NO_FOOD:"Omluven bez jídla",TXT_VAL_REGISTERED:"Registrován",TXT_VAL_ONEOFF:"Jednorázový",TXT_VAL_AMEND:"Náhrada",TAX_VAL_PREVIEW:"Zkušební hodina",TXT_VAL_MALE:"Muž",TXT_VAL_FEMALE:"Žena",TXT_VAL_PASSWORD_WEAK:"Slabé",TXT_VAL_PASSWORD_GOOD:"Dobré",TXT_VAL_PASSWORD_STRONG:"Silné",TXT_VAL_DELETED:"smazáno",TXT_VAL_NOT_ACTIVE:"neaktivní",TXT_VAL_ILLNESS:"Nemoc",TXT_VAL_REGULAR:"Běžné",TXT_VAL_NONE:"Žádné",TAX_VAL_CUSTOM:"Vlastní",TXT_VAL_ONLINE_PAYMENT_STATUS_NONE:"Nespecifikován",TXT_VAL_ONLINE_PAYMENT_STATUS_CREATED:"Vytvořeno",TXT_VAL_ONLINE_PAYMENT_STATUS_PENDING:"Čekání",TXT_VAL_ONLINE_PAYMENT_STATUS_PAID:"Zaplaceno",TXT_VAL_ONLINE_PAYMENT_STATUS_REVERSED:"Vráceno",TXT_VAL_ONLINE_PAYMENT_STATUS_AUTOREVERSED:"Vráceno automaticky",TXT_VAL_ONLINE_PAYMENT_STATUS_CANCELLED:"Zrušeno",TXT_VAL_ONLINE_PAYMENT_STATUS_DECLAINED:"Odmítnuto",TXT_VAL_ONLINE_PAYMENT_STATUS_ERROR:"Chyba",TXT_VAL_ACTIVITY_COMPENSATION_TYPE_ONE_FOR_ONE:"Jedna náhrada za jednu omluvu",TXT_VAL_ACTIVITY_COMPENSATION_TYPE_TWO_FOR_ONE:"Jedna náhrada za dvě omluvy",TXT_VAL_ACTIVITY_COMPENSATION_TYPE_DISABLED:"Náhrady vypnuty",TXT_TITLE_CONFIRM_NOTIFICATION:"Odeslat oznámení?",TXT_TITLE_CONFIRM_PRINT:"Vytisknout doklad?",TXT_TITLE_INFORMATION:"Informace",TXT_TITLE_CONFIRMATION:"Potvrzení",TXT_CONFIRM_NOTIFICATION_MESSAGE:"Přejete si odeslat oznámení o této změně klientům?",TXT_CONFIRM_PRINT_CASH_RECEIPT_MESSAGE:"Chcete pro tuto platbu vytisknout příjmový doklad?",TXT_CONFIRM_PRINT_PAYMENT_EVIDENCE_MESSAGE:"Chcete pro tuto platbu vytisknout potvrzení o platbě?",TXT_LBL_SEND_NOTIFICATION_EMAIL:"Odeslat oznámení e-mailem",TXT_LBL_SEND_NOTIFICATION_SMS:"Odeslat oznámení pomocí SMS",TXT_LBL_REMEBER_ANSWER:"Zapamatovat odpověď a příště již tento dialog nezobrazovat.",TXT_BTN_CLEAR:"Vyčistit",TXT_BTN_OK:"Ok",TXT_LBL_RECURRING_INVOICES:"Pravidelné faktury",TXT_LAB_ATTENDANCE_COUNT:"Počet vstupů",TXT_LAB_RESERVED_PALCES:"Míst",TXT_LBL_TERMINAL:"Pracoviště",TXT_LBL_AGE:"Věk",TXT_PLACEHOLDER_SELECT_AGE:"Vyberte věk",TXT_LBL_INVOICE_NO:"Číslo faktury",TXT_LBL_DUE_DATE:"Splatnost",TXT_LBL_SUBJECT:"Předmět",TXT_LBL_TYPE:"Typ",TXT_LBL_ARREAR:"Nedoplatek",TXT_LBL_ARREAR_BY_AMORTIZATION_SCHEDULE:"Nedoplatek podle splátkového kalendáře",TXT_LBL_ARREAR_ALL:"Nedoplatek celkem",TXT_PAY_ONLINE:"Zaplatit online",TXT_LBL_OVER_PAYMENT:"Přeplatek",TXT_PAYMENT_RESULT:"Výsledek online platby",TXT_PAYMENT_RESULT_PENDING:"Stav online platby s cenou {0} ještě není znám. Výsledný stav transakce bude aktualizován na pozadí.",TXT_PAYMENT_RESULT_PAID:"Online platba s cenou {0} byla úspěšně zaplacena.",TXT_PAYMENT_RESULT_REVERSED:"Online platba s cenou {0} byla anulována.",TXT_PAYMENT_RESULT_CANCELLED:"Online platba s cenou {0} byla zrušena.",TXT_PAYMENT_RESULT_DECLAINED:"Online platba s cenou {0} byla zamítnuta.",TXT_PAYMENT_RESULT_ERROR:"Online platba s cenou {0} skončila chybou: {1}.",TXT_PAYMENT_RESULT_UNEXPECTED:"Online platba s cenou {0} skončila v neočekávaném stavu. Kontaktujte prosím podporu.",TXT_PAYMENT_CANNOT_BE_STARTED:"Online platbu se nepodařilo zahájit",TXT_STATUS_PRESENT:"Přítomen",TXT_STATUS_NOT_PRESENT_NOT_EXCUSED:"Nepřítomen",TXT_STATUS_NOT_PRESENT_EXCUSED:"Omluven",TXT_STATUS_NOT_PRESENT_EXCUSED_NO_COMPENSATION:"Omluven bez náhrady",TXT_STATUS_NOT_PRESENT_EXCUSED_NO_FOOD:"Omluven bez jídla",TXT_LBL_SEQUENCES:"Dokladové řady",TXT_NEXT_TD_SEQ_NO_HLP:"Toto je číslo příštího daňového dokladu pro vybraný rok.",TXT_LBL_CONSENTS:"Souhlasy",TXT_LBL_CONSENTS_DEFINITIONS:"Definice souhlasů",TXT_BTN_SAVE_AND_SEND:"Uložit a odeslat",TXT_APPROVE:"Souhlasím",TXT_DENY:"Nesouhlasím",TXT_VALID:"Platné",TXT_VALIDITY:"Platnost",TXT_INVALID:"Již neplatné",TXT_APPROVED_BY:"Souhlas udělil",TXT_APPROVED_AT:"Souhlas udělen",TXT_DENIED_BY:"Souhlas odmítl",TXT_DENIED_AT:"Souhlas odmítnut",TXT_LBL_TERMS_AND_CONDITIONS:"Provozní řád",TXT_LBL_INSTRUCTIONS:"Návod",TXT_LBL_TRADE_TERMS:"Obchodní podmínky",TXT_LBL_PROTECTION_OF_PERSONAL_DATA:"Ochrana osobních údajů",TXT_LBL_HTML_CUSTOM_CONTENT:"Vlastní obsah",TXT_TAB_AMORTIZATION_SCHEDULE:"Splátkový kalendář",TXT_AMORTIZATION_SCHEDULE_FOR_COURSE_PAYMENT:"Platba za kurz na splátky",TXT_COL_FINAL_PRICE:"Celkem",TXT_MODEL_MODFIFIED_SHOULD_SAVE:"Vaše poslední změny NEBYLY uloženy, chcete je uložit nyní?",TXT_PLACE:"Místo",TXT_EMPLOYEE:"Zaměstnanec",TXT_ALERT_TITLE_ENTITY_SAVED:"Úspěšně uloženo",TXT_ALERT_TITLE_ENTITY_SAVE_ERROR:"Chyba během ukládání",TXT_ALERT_TITLE_ENTITY_REMOVED:"Úspěšně smazáno",TXT_ALERT_TITLE_ENTITY_REMOVE_ERROR:"Chyba během mazání",TXT_ALERT_TITLE_ENTITY_GET_ERROR:"Chyba při načítání dat",TXT_ALERT_TITLE_FORBIDEN:"Nedostatečná oprávnění",TXT_ALERT_UNAUTHORIZED:"Neautorizovaný přístup",TXT_LBL_DESCRIPTION:"Popis",TXT_LBL_SHORT_DESCRIPTION:"Krátký popis",TXT_DOMAIN_PREFIX:"Prefix domény",TXT_DOMAIN_PREFIX_DESC:"Takto vypadá URL adresa pro vaši společnost. Zvýrazněná část odpovídá názvu vaší společnosti.",TXT_TENANT_NAME_DESC:"Zkrácený název vaší společnosti, který se zobrazuje na hlavní stránce klientské sekce. Používá se také v podpisu u e-mailů odesílaných vašim klientům.",TXT_LBL_SUBJECT_NAME:"Název subjektu",TXT_LBL_SUBJECT_DESC:"Oficiální název vaší společnosti, tak jak jej uvádíte na fakturách a oficiálních dokumentech",TXT_LBL_ADDRESS:"Adresa",TXT_LBL_ADDRESS_DESC:"Oficiální místo podnikání / provozovna",TXT_LBL_ORGANISATION_IDENTIFIER:"IČ",TXT_LBL_IS_VAT_PAYER:"Je plátce DPH",TXT_LBL_ACCOUNT_NO:"Číslo účtu",TXT_LBL_ACCOUNT_NO_DESC:"Číslo bankovního účtu, které se bude uvádět na fakturách pro vaše klienty",TXT_CURRENCY:"Měna",TXT_CURRENCY_DESC:"Nastavuje měnu, ve které systém pracuje.",TXT_VAL_CURRENCY_CZK:"Česká koruna (Kč)",TXT_VAL_CURRENCY_EUR:"Euro (€)",TXT_COUNTRY_CODE_CZ:"Česká republika",TXT_COUNTRY_CODE_SK:"Slovensko",TXT_COUNTRY:"Země",TXT_COUNTRY_DESC:"Výběr správné země má vliv na specifická nastavení pro dannou zemi, například napojení na banky, výpočet IBAN, QR platby atp.",TXT_LBL_USER:"Uživatel",TXT_LBL_MIDDLENAME:"Druhé jméno",TXT_LBL_EMAIL:"E-mail",TXT_LBL_PHONE:"Telefon",TXT_LBL_SETTING:"Nastavení",TXT_ERROR_UNIQUE_TENANT_NAME:"Tento prefix domény je již použit, vyberte jiný",TXT_TENANT_REGISTRATION_SUCCESS_TITLE:"Nový systém {0} byl založen",TXT_TENANT_REGISTRATION_SUCCESS_DESC1:"Nový systém byl úspěšně založen, najdete ho na adrese:",TXT_TENANT_REGISTRATION_SUCCESS_DESC2:"Byl vám také založen uživatelský účet s právy administrátora. Pro přihlášení použijte e-mail, který jste zadali při registraci.",TXT_TENANT_REGISTRATION_SUCCESS_DESC3:"Do e-mailové schránky vám přišel e-mail pro aktivaci účtu a nastavení hesla.",TXT_SELECT_STUDENT:"Vyberte studenta",TXT_LBL_HEALTH_OR_NOTE:"Zdravotní stav, nebo jiné poznámky",TXT_FORM_NOT_REG_STUDENT_HEADER:"Student / dítě",TXT_ALREADY_HAVE_AN_ACCOUNT_LOGIN:"Mám již účet - Přihlásit",TXT_FILL_THE_FORM_WITHOUT_REGISTRATION:"Vyplnit přihlášku bez registrace",TXT_LEGAL_REPRESENTATIVE:"Zákonný zástupce nebo kontaktní osoba",TXT_FILL_THE_FORM_WITH_REGISTRATION:"Vyplnit přihlášku - registrovaný uživatel",TXT_DOMAIN:"Zaměření",TXT_EMPTY:"Prázdný",TXT_LAB_PERSONAL_ID_NUMBER:"Rodné číslo",TXT_NO_SLASH:"Bez lomítka",TXT_MENU_RENTS:"Pronájmy",TXT_MENU_ITEM_TYPE:"Typ položky",TXT_LBL_FROM:"Od",TXT_LBL_TO:"Do",TXT_MENU_RENT_CATEGORY:"Kategorie pronájmu",TXT_MENU_RENT_CATEGORY_GROUP:"Skupiny kategorií",TXT_MENU_RENT_ITEM:"Položka pronájmu",TXT_LBL_COUNT:"Počet",TXT_ERROR_REQUIRED:"Hodnota je povinná",TXT_SHOPPING_CART:"Nákupní košík",TXT_LBL_RENT:"Pronajmout",TXT_ITEM:"Položka",TXT_INVALID_SELECTION:"Neplatný výběr",TXT_ONLY_CART_RANGE_IS_VALID:"Lze vybrat pouze rozsah, který je již v košíku.",TXT_SHOPPING_CART_IS_EMPTY:"Košík je prázný",TXT_CANNOT_CREATE_RENT_INT_THE_PAST:"Nelze vybrat rozsah, který je v minulosti.",TXT_START_AND_DATE_MUST_BE_IN_OPEN_PERIOD:"Začátek a konec rozsahu musí být v otevírací době.",TXT_MENU_RENT_ITEMS:"Položky pronájmu",TXT_BACK_TO_LIST:"Zpět na seznam",TXT_LBL_FILES:"Soubory"})}]);wbApp.factory("accountingBookSvc",["$resource","$q","repositorySvc","notificationSvc","$translate",function(n,t,i,r,u){function s(n,t,r,u){return i.customGet("peekNextSequenceNoRaw",e,{sequenceType:n,accountingBookID:t,year:r},u)}function h(n,t,f,o,s,h){function c(n){r.notifyInfo(u.instant("TXT_ALERT_TITLE_CHANGES_SAVED"));s&&s(n)}function l(n){i.defaultErrorHandler(n);h&&h(n)}return e.setNextSequenceNoRaw({sequenceType:n,accountingBookID:t,year:f,sequenceNumber:o},c,l)}function c(){return{}}function o(n){return(!f||n)&&(f=i.customGet("getAll",e)),f}function l(){var i=o(),n=t.defer();return i.$promise.then(function(t){angular.forEach(t,function(t){if(t.isDefault){n.resolve(t);return}});n.resolve(null)},function(t){n.reject(t)}),n.promise}function a(n){var t,i;if(f)for(t=0;t<f.length;t++)if(i=f[t],i.id===n)return i;return null}function v(n,t,r){i.insert(e,f,n,t,r)}function y(n,t,r){i.update(e,f,n,t,r)}function p(n,t,r){i.remove(e,f,n,t,r)}var e=n("/Api/AccountingBooks/:id",{},{getAll:{method:"GET",isArray:!0,url:"/Api/AccountingBooks/GetAll"},update:{method:"POST",url:"/Api/AccountingBooks/Update"},insert:{method:"POST",url:"/Api/AccountingBooks/Insert"},"delete":{method:"POST",url:"/Api/AccountingBooks/Delete"},peekNextSequenceNoRaw:{method:"GET",isArray:!1,url:"/Api/AccountingBooks/PeekNextSequenceNoRaw"},setNextSequenceNoRaw:{method:"POST",url:"/Api/AccountingBooks/SetNextSequenceNoRaw"}}),f;return{createNew:c,getAllAsync:o,getDefaultAsync:l,get:a,insert:v,update:y,remove:p,peekNextSequenceNoRaw:s,setNextSequenceNoRaw:h}}]);wbApp.factory("activeFeaturesSvc",["localStorageService","formSvc",function(n,t){function i(i){if(n.isSupported){var r=n.get("isClientFormSupportEnabled-lastCheck");return!r||(r=moment(r,moment.ISO_8601),(!r.isValid()||r.isBefore(moment().subtract(5,"m")))&&(r=null)),r||t.getAllActive().then(function(t){var r=!!t&&t.length>0;n.set("isClientFormSupportEnabled",r);n.set("isClientFormSupportEnabled-lastCheck",moment().format());!i||i(r)}),n.get("isClientFormSupportEnabled")=="true"}return!0}return{isClientFormSupportEnabled:i}}]);wbApp.factory("activityReconciliationSvc",["$resource","$q","$translate","repositorySvc","notificationSvc","tenantSettingSvc",function(n,t,i,r,u,f){function o(n,t,i,u,f,o,s){var h=r.customGet("getStudentsByActivity",e,{semesterID:i,activityID:u,fromDate:f===2?o:null,toDate:f===2?s:null});h.$promise.then(function(i){for(var u,o,f=null,e=null,r=0;r<i.length;r++)if(u=i[r],u.studentID===t){f=u;break}for(r=0;r<n.length;r++)if(u=n[r],u.studentID===t){e=u;break}if(e&&f)for(o in f)e[o]=f[o]})}function s(n,t,i,u,f){return r.customGet("getStudentsByActivity",e,{semesterID:n,activityID:t,fromDate:i===2?u:null,toDate:i===2?moment(f).endOf("day").toDate():null})}function h(n,u,o){function c(n){s.initData.call(s,n);h.resolve(s)}function l(n){h.reject(n)}var h=t.defer(),s=new webooker_acivity_models.Reconciliation(i,f.settings.calcSnacksOnlyForPresent);return s.$promise=h.promise,r.customGet("getReconciliationDetail",e,{activityID:n,studentID:u,activityReconciliationID:o}).$promise.then(c,l),s}function c(n,i,u){var o=t.defer(),f=[];return f.$promise=o.promise,r.customGet("getStudentsAttendanceByActivity",e,{semesterID:n,activityID:i,studentID:u}).$promise.then(function(n){for(var r,u,i=[],t=0;t<n.length;t++)r=n[t],u=new webooker_acivity_models.ReconciliationAttendance(r),i.push(u);f.push.apply(f,i);o.resolve(f)},function(n){o.reject(n)}),f}function l(n,t,i){return r.customGet("getByStudentAndActivity",e,{semesterID:n,activityID:t,studentID:i})}function a(n,t){return r.customGet("getAvailableExuses",e,{activityID:n,studentID:t})}function v(n){var t,i;if(n&&n.length>0)for(t=0;t<n.length;t++)if(i=n[t],!i.reconciled)return moment(i.date).subtract(1,"days").startOf("day").toDate();return null}function y(n){var t,i;if(n&&n.length>0)for(t=n.length-1;t>=0;t--)if(i=n[t],!i.reconciled)return moment(i.date).endOf("day").toDate();return null}function p(n,t,i){var e=moment(t),o=e,s=e.endOf("month"),h=s.isBefore(i)?s:moment(i),r,u,f;if(n&&n.length>0){for(r=0;r<n.length;r++){if(u=n[r],h.isBefore(u.date))return o.endOf("day").toDate();u.reconciled||(o=moment(u.date))}if(f=n[n.length-1],!f.reconciled)return moment(f.date).endOf("day").toDate()}return null}function w(n,t,i){for(var r,f,e=moment(t).subtract(1,"day").startOf("day"),o=moment(i).add(1,"day").startOf("day"),u=0;u<n.length;u++)if(r=n[u],f=moment(r.date).startOf("day"),f.isAfter(e)&&f.isBefore(o)){if(r.reconciled)continue;r.isSelected=!0}else r.isSelected=!1}function b(n,t,u,f){function o(n){r.defaultSuccessSaveHandler(n,u)}function s(n){r.defaultErrorHandler(n,f)}e.insertReconciliationDetail({reconciliationDetail:n.getReconciliationDetailDTO.call(n,i),notifyClients:t},o,s)}function k(n,t,u,f){function o(n){r.defaultSuccessSaveHandler(n,u)}function s(n){r.defaultErrorHandler(n,f)}e.updateReconciliationDetail({reconciliationDetail:n.getReconciliationDetailDTO.call(n,i),notifyClients:t},o,s)}function d(n,t,i,u,f){function o(n){r.defaultSuccessRemoveHandler(n,u)}function s(n){r.defaultErrorHandler(n,f)}e.deleteReconciliationDetail({activityID:n,studentID:t,activityReconciliationID:i,notifyclients:!1},o,s)}function g(n,t,f,o,s,h){function c(n){u.notifyInfo(i.instant("TXT_ALERT_NOTIFICATION_SENT_SUCCESS"));s&&s(n)}function l(n){r.defaultErrorHandler(n,h)}e.sendReconciliationNotification({activityID:n,studentID:t,activityReconciliationID:f,invoiceID:o},c,l)}function nt(n){return moment(n).format("MMMM YYYY")}var e=n("/Api/ActivityReconciliations/:id",{},{getStudentsByActivity:{method:"GET",isArray:!0,url:"/Api/ActivityReconciliations/GetStudentsByActivity"},getStudentsAttendanceByActivity:{method:"GET",isArray:!0,url:"/Api/ActivityReconciliations/GetStudentsAttendanceByActivity"},getByStudentAndActivity:{method:"GET",isArray:!0,url:"/Api/ActivityReconciliations/GetByStudentAndActivity"},getReconciliationDetail:{method:"GET",isArray:!1,url:"/Api/ActivityReconciliations/GetReconciliationDetail"},insertReconciliationDetail:{method:"POST",url:"/Api/ActivityReconciliations/InsertReconciliationDetail"},updateReconciliationDetail:{method:"POST",url:"/Api/ActivityReconciliations/UpdateReconciliationDetail"},deleteReconciliationDetail:{method:"POST",url:"/Api/ActivityReconciliations/DeleteReconciliationDetail"},sendReconciliationNotification:{method:"POST",url:"/Api/ActivityReconciliations/SendReconciliationNotification"},getAvailableExuses:{method:"GET",url:"/Api/ActivityReconciliations/GetAvailableExuses"}});return{getStudentsByActivity:s,getStudentsAttendanceByActivity:c,getByStudentAndActivity:l,getMinDateRange:v,getMaxDateRange:y,selectDateRange:w,getToDateRange:p,getReconciliationDetail:h,insertReconciliationDetail:b,updateReconciliationDetail:k,deleteReconciliationDetail:d,getReconciliationName:nt,sendReconciliationNotification:g,refreshByStudentAndActivity:o,getAvailableExuses:a}}]);wbApp.factory("activitySvc",["$q","$resource","repositorySvc",function(n,t,i){function h(n,t){return f&&o===n&&!t||(o=n,f=i.customGet("getByActivityID",r,{activityID:n})),f}function s(n,t){return(!u||e!==n||t)&&(u=i.customGet("getAllBySemesterID",r,{semesterID:n}),e=n),u}function c(){return i.customGet("getSummary",r)}function l(t,i){return n(function(n,r){var u=s(t,!1);u.$promise.then(function(){var t=_.find(u,{activityID:i});t?n(t):r("No activity with ID: "+i)},function(n){r(n)})})}function a(){return i.customGet("getAllOpenForRegistration",r,{})}function v(n,t,f){i.insert(r,u,n,t,f,"activityID")}function y(n,t,f){i.update(r,u,n,t,f,"activityID")}function p(n,t){i.remove(r,u,n,null,t,null,"activityID")}function w(n,t,u){function f(n){i.defaultErrorHandler(n,u)}r.registerActivityInterest({semesterID:n},t,f)}var r=t("/Api/Activities/:id",{},{getAllBySemesterID:{method:"GET",isArray:!0,url:"/Api/Activities/GetAllBySemesterID"},getByActivityID:{method:"GET",url:"/Api/Activities/Get"},getSummary:{method:"GET",isArray:!0,url:"/Api/Activities/GetSummary"},getAllOpenForRegistration:{method:"GET",isArray:!0,url:"/Api/Activities/GetAllOpenForRegistration"},insert:{method:"POST",url:"/Api/Activities/Insert"},update:{method:"POST",url:"/Api/Activities/Update"},"delete":{method:"POST",url:"/Api/Activities/Delete"},registerActivityInterest:{method:"POST",url:"/Api/Activities/registerActivityInterest"}}),u,e,f,o;return{getAllBySemesterIDAsync:s,getSummary:c,insert:v,update:y,remove:p,getAllOpenForRegistration:a,registerActivityInterest:w,getBySemesterIDAndActivityID:l,getByActivityID:h}}]);wbApp.factory("ageRangeSvc",["$resource","repositorySvc",function(n,t){function u(n){return(!i||n)&&(i=t.customGet("getAll",r)),i}function f(n,u,f){t.insert(r,i,{model:n},u,f,"ageRangeID")}function e(n,u,f){t.update(r,i,{model:n},u,f,"ageRangeID")}function o(n,u,f){t.remove(r,i,{ageRangeID:n.ageRangeID},u,f,{ageRangeID:n.ageRangeID},"ageRangeID")}function s(){return{ageRangeID:0,fromAge:0,toAge:199,buildIn:!1}}var r=n("/Api/AgeRanges/:id",{},{getAll:{method:"GET",isArray:!0,url:"/Api/AgeRanges/GetAll"},update:{method:"POST",url:"/Api/AgeRanges/Update"},insert:{method:"POST",url:"/Api/AgeRanges/Insert"},"delete":{method:"POST",url:"/Api/AgeRanges/Delete"}}),i;return{getAllAsync:u,insert:f,update:e,remove:o,createNew:s}}]);wbApp.factory("attendanceSvc",["$resource","$q","repositorySvc",function(n,t,i){function o(n,t,u,f){i.insert(r,t,n,u,f)}function s(n,t,u,f){i.update(r,t,n,u,f)}function h(n){return i.customGet("getLessonAttendance",r,{courseScheduleID:n})}function c(n,t){return i.customGet("getStudentCourseAttendance",r,{courseID:n,studentID:t})}function l(n,t,u,f){i.customPost("delete",r,n,u,f)}function a(n,o,s,h){var l=t.defer(),c=[];return c.$promise=l.promise,(f!=n||e!=s||!u||h)&&(f=n,e=s,u=i.customGet("getAllForCourseAndUser",r,{courseID:n,userID:s})),u.$promise.then(function(n){var t=_.filter(n,{studentID:o});c.push.apply(c,t);l.resolve(c)}),c}function v(n){return i.customGet("getAllForCourse",r,{courseID:n})}function y(n){return i.customGet("getAttendanceSummary",r,{studentID:n})}function p(n){return i.customGet("getStudentAttendanceDetail",r,{studentID:n})}function w(n,t){var r=_.groupBy(n,"studentID"),i=[],u=moment();return _.forIn(r,function(n,r){var e=_.head(n),o=_.keyBy(n,"courseScheduleID"),f={studentID:Number(r),fullName:e.fullName,isRegistered:!!_.find(n,{attendanceType:0})};i.push(f);_.forEach(t,function(n){var t=o[n.courseScheduleID];t&&moment(n.startDate).isAfter(u)&&!t.attendanceStatus&&(t=null);f[n.courseScheduleID]=t?{startDate:n.startDate,attendanceStatus:t.attendanceStatus,attendanceType:t.attendanceType,modified:t.modified,attendanceCount:t.attendanceCount}:{startDate:n.startDate,attendanceStatus:null,attendanceType:null,modified:null,attendanceCount:null}})}),i}function b(n){var r=t.defer(),i=[];return i.$promise=r.promise,n.$promise.then(function(n){var u=_.groupBy(n,"impliedCourseID"),t=[];_.forEach(u,function(n){t.push({course:"Kurz: "+n[0].impliedCourse,courseID:n[0].impliedCourseID,isGroupRow:!0,items:_.sortBy(n,function(n){return n.startDate})})});i.push.apply(i,_.sortBy(t,function(n){return n.courseID}));r.resolve(i)}),i}var r=n("/Api/Attendnce/Get",{},{getLessonAttendance:{method:"GET",isArray:!0,url:"/Api/Attendance/GetLessonAttendance"},getStudentCourseAttendance:{method:"GET",isArray:!0,url:"/Api/Attendance/GetStudentCourseAttendance"},getAllForCourseAndUser:{method:"GET",isArray:!0,url:"/Api/Attendance/GetAllForCourseAndUser"},getAllForCourse:{method:"GET",isArray:!0,url:"/Api/Attendance/GetAllForCourse"},getAttendanceSummary:{method:"GET",isArray:!0,url:"/Api/Attendance/GetAttendanceSummary"},getStudentAttendanceDetail:{method:"GET",isArray:!0,url:"/Api/Attendance/GetStudentAttendanceDetail"},update:{method:"POST",url:"/Api/Attendance/Update"},insert:{method:"POST",url:"/Api/Attendance/Insert"},"delete":{method:"POST",url:"/Api/Attendance/Delete"}}),f,e,u;return{insert:o,update:s,remove:l,getLessonAttendance:h,getStudentCourseAttendance:c,getStudentCourseAttendanceByUser:a,getAttendanceSummary:y,getStudentAttendanceDetail:p,groupAttendanceDetail:b,getAllForCourse:v,prepareFullCourseAttendanceTable:w}}]);wbApp.factory("classroomAvailabilitySchedulesSvc",["$resource","$q","repositorySvc",function(n,t,i){function e(n,e){var o=moment();return f&&u.classroomId==n&&moment(u.date).isSame(e)&&!u.loadedAt.isBefore(o)||(u={classroomId:n,date:e,loadedAt:moment().add(10,"seconds")},f=t(function(t,u){i.customGet("getSingle",r,{placeId:n,id:moment(e).startOf("day").format("YYYY-MM-DD")},function(n){n?t(n):t({day:moment(e).startOf("day").toDate(),periods:[]})},function(n){u(n)})})),f}function o(n,u){return t(function(t,f){var e=moment(u).startOf("isoWeek"),o=moment(u).endOf("isoWeek").startOf("day");i.customGet("getRange",r,{placeId:n,from:e.toDate(),to:o.toDate()},function(n){for(var r,i=[],u=0;u<7;u++)r=_.find(n,function(n){return moment(n.day).isSame(e)}),r?i.push(r):i.push({day:e.toDate(),periods:[]}),e.add(1,"day");t(i)},function(n){f(n)})})}function s(n,u,f){return t(function(t,e){var o=moment(u).startOf("isoWeek"),s=moment(u).endOf("isoWeek").startOf("day"),h=_.filter(f,function(n){return!!n.periods&&n.periods.length>0});i.customPutWithParams("updateRange",r,{placeId:n,from:o.toDate(),to:s.toDate()},h,function(n){t(n)},function(n){i.defaultErrorHandler(n);e(n)})})}function h(n,u,f,e){return t(function(t,o){for(var l=moment(u).startOf("isoWeek"),a=moment(f).endOf("isoWeek").startOf("day"),v=_.filter(e,function(n){return!!n.periods&&n.periods.length>0}),h=moment(l),y=[],c,s;h.isBefore(a);)v.length>0&&(c=angular.copy(v),s=moment.duration(h.diff(moment(c[0].day).startOf("week"))),_.forEach(c,function(n){n.day=moment(n.day).add(s).toDate();_.forEach(n.periods,function(n){n.start=moment(n.start).add(s).toDate();n.end=moment(n.end).add(s).toDate()});y.push(n)})),h.add(1,"week");i.customPutWithParams("updateRange",r,{placeId:n,from:l.toDate(),to:a.toDate()},y,function(n){t(n)},function(n){i.defaultErrorHandler(n);o(n)})})}var r=n("/restapi/places/:placeId/availability-schedules/:id",{},{getSingle:{method:"GET",url:"/restapi/places/:placeId/availability-schedules/:id"},getRange:{method:"GET",isArray:!0,url:"/restapi/places/:placeId/availability-schedules/range"},updateRange:{method:"PUT",url:"/restapi/places/:placeId/availability-schedules/range"}}),f=null,u={classroomId:null,date:null,loadedAt:moment()};return{loadWeek:o,saveWeek:s,saveWeekAsPaternForPeriod:h,loadDay:e}}]);wbApp.factory("classroomSvc",["$resource","$q","repositorySvc","domainsSvc",function(n,t,i,r){function h(){return{id:0,name:"",description:"",capacity:0,active:!0,isDeleted:!1,addressID:null,showInCourses:!0,showInReservations:!0,reservationStartTimeType:1,address:{addressID:0,addressJson:null,formattedAddress:null,location:{latitude:null,longitude:null},mapZoom:null}}}function o(n){return(!e||n)&&(e=i.customGet("getAll",f),u=null),e}function c(n){var r,i;return u&&!n?u:(r=o(n),u=[],i=t.defer(),u.$promise=i.promise,r.$promise.then(function(n){angular.forEach(n,function(n){n.isDeleted||u.push(n)});i.resolve(u)},function(n){i.reject(n)}),u)}function s(n,i,r,u){var s=o(),f=[],e=t.defer();return f.$promise=e.promise,s.$promise.then(function(t){angular.forEach(t,function(t){(!t.isDeleted&&t.active||t.id===n)&&(!i||!t.showInReservations?!r||!t.showInCourses?!u||!t.showInRents||f.push(t):f.push(t):f.push(t),i||r||u||f.push(t))});e.resolve(f)},function(n){e.reject(n)}),f}function l(n){var t,i;if(e)for(t=0;t<e.length;t++)if(i=e[t],i.id===n)return i;return null}function a(n){var r=o(),i=t.defer();return r.$promise.then(function(t){i.resolve(_.find(t,{id:n}))},function(n){i.reject(n)}),i.promise}function v(n,t,r){function o(n){i.entityInserted(u,n);t&&t(n)}i.insert(f,e,n,o,r)}function y(n,t,r){function o(n){i.entityUpdated(u,n);t&&t(n)}i.update(f,e,n,o,r)}function p(n,t,r){function o(){i.entityRemoved(u,n.id);t&&t()}i.remove(f,e,n,o,r)}function w(n){return n?i.customGet("domainsGetAll",f,{placeId:n}):t(function(n){n([])})}function b(n){return t(function(i,u){t.all([r.getAllExpanded().$promise,w(n).$promise]).then(function(n){var t=n[0],r=n[1],u=_.flatMapDeep(r,function(n){return[n.domainId,n.specializationIds]});i({domains:t,selection:u})},function(n){u(n)})})}function k(n,r,u,e,o,s){var c=_.keyBy(u,function(n){return n}),l=_.keyBy(e,function(n){return n}),a=[],v=[],y=[],h=[];_.forEach(r,function(n){var i={id:null,domainId:null,specializationIds:[]},t={id:null,domainId:null,specializationIds:[]};_.forEach(n.specializations,function(n){_.has(c,n.id)&&i.specializationIds.push(n.id);_.has(l,n.id)&&t.specializationIds.push(n.id)});(i.specializationIds.length||_.has(c,n.id))&&(i.id=n.id,i.domainId=n.id);(t.specializationIds.length||_.has(l,n.id))&&(t.id=n.id,t.domainId=n.id);!i.id||t.id||y.push(i);i.id||!t.id||a.push(t);!i.id||!t.id||_.isEqual(i,t)||v.push(t)});_.forEach(a,function(t){h.push(i.customPutWithParams("domainsInsert",f,{placeId:n},t))});_.forEach(v,function(t){h.push(i.customPutWithParams("domainsUpdate",f,{placeId:n,id:t.id},t))});_.forEach(y,function(t){h.push(i.customDelete("domainsDelete",f,{placeId:n,id:t.id}))});h.length==0?o():t.all(h).then(function(n){o(n)},function(n){s(n)})}function d(n,i,r){var u=moment(r).startOf("isoWeek"),e=moment(r).endOf("isoWeek").startOf("day");return t(function(t,r){var o=f.availabilityByDomainsAndRange({placeId:n},{start:u.toDate(),end:e.toDate(),domains:i});o.$promise.then(function(n){var i=_.flatMap(n,function(n){return n.periods});t(i)},function(n){r(n)})})}function g(){return t(function(n,t){s().$promise.then(function(t){n(_.map(t,function(n){return{id:n.id+"",name:n.name}}))},function(n){t(n)})})}var f=n("/Api/Classrooms/:id",{},{getAll:{method:"GET",isArray:!0,url:"/Api/Classrooms/GetAll"},update:{method:"POST",url:"/Api/Classrooms/Update"},insert:{method:"POST",url:"/Api/Classrooms/Insert"},"delete":{method:"POST",url:"/Api/Classrooms/Delete"},domainsGetAll:{method:"GET",isArray:!0,url:"/restapi/places/:placeId/domains"},domainsInsert:{method:"POST",url:"/restapi/places/:placeId/domains"},domainsUpdate:{method:"PUT",url:"/restapi/places/:placeId/domains/:id"},domainsDelete:{method:"DELETE",url:"/restapi/places/:placeId/domains/:id"},availabilityByDomainsAndRange:{method:"POST",isArray:!0,url:"/restapi/places/:placeId/availability/find-by-domains-and-range"}}),e,u;return{getAllAsync:o,getAllActiveAsync:s,getAllNonDeletedAsync:c,get:l,getAsync:a,insert:v,update:y,remove:p,createNew:h,loadDomainsData:b,saveDomainsData:k,availabilityByDomainsAndRange:d,getAllBrief:g}}]);wbApp.factory("compensationGroupSvc",["$resource","$q","repositorySvc",function(n,t,i){function e(){return r||(r=i.customGet("getLookup",u)),r}function o(){var n=e();return t(function(t,i){n.$promise.then(function(n){var i=_.find(n,{isDefault:!0,active:!0,isDeleted:!1});!i&&n.length>0&&(i=n[0]);t(i)},function(n){i(n)})})}function s(n){var u=e(),i=[],r=t.defer();return i.$promise=r.promise,u.$promise.then(function(t){angular.forEach(t,function(t){(t.isDeleted||!t.active)&&(!n||_.indexOf(n,t.id)===-1)||i.push(t)});r.resolve(i)},function(n){r.reject(n)}),i}function h(n){var t,i;if(r)for(t=0;t<r.length;t++)if(i=r[t],i.id===n)return i;return null}function c(n){var i=t.defer();return e().$promise.then(function(t){angular.forEach(t,function(t){if(t.id==n){i.resolve(t);return}});i.resolve(null)},function(n){i.reject(n)}),i.promise}function l(){return{}}function a(){return f=i.customGet("getAll",u)}function v(n,t,e){function o(n){r=null;t&&t(n)}return i.insert(u,f,n,o,e,"compensationGroupID")}function y(n,t,e){function o(n){r=null;t&&t(n)}return i.update(u,f,n,o,e,"compensationGroupID")}function p(n,t,e){function o(n){r=null;t&&t(n)}return i.remove(u,f,n,o,e,{compensationGroupID:n.compensationGroupID},"compensationGroupID")}var u=n("/Api/CompensationGroups/:id",{},{getLookup:{method:"GET",isArray:!0,url:"/Api/CompensationGroups/GetLookup"},getAll:{method:"GET",isArray:!0,url:"/Api/CompensationGroups/GetAll"},update:{method:"POST",url:"/Api/CompensationGroups/Update"},insert:{method:"POST",url:"/Api/CompensationGroups/Insert"},"delete":{method:"POST",url:"/Api/CompensationGroups/Delete"}}),r,f;return{getLookup:e,get:h,getAsync:c,getAllAsync:a,insert:v,update:y,remove:p,createNew:l,getLookupActiveAsync:s,getDefaultAsync:o}}]);wbApp.factory("consentSvc",["$resource","$q","$sce","$translate","repositorySvc",function(n,t,i,r,u){function e(){return u.customGet("getConsentsInfoBrief",f)}function o(n){return u.customGet("getConsentsInfoForUser",f,{userID:n})}function s(n,t,i){return u.customPost("assignConsensts",f,n,t,i)}function h(n,t,i){return u.customPost("approveConsent",f,{consentID:n.consentID},t,i)}function c(n,t,i){return u.customPost("rejectConsent",f,{consentID:n.consentID},t,i)}var f=n("/Api/Groups/:id",{},{getConsentsInfoBrief:{method:"GET",isArray:!0,url:"/Api/Consents/GetConsentsInfoBrief"},getConsentsInfoForUser:{method:"GET",isArray:!1,url:"/Api/Consents/GetConsentsInfoForUser"},assignConsensts:{method:"POST",url:"/Api/Consents/AssignConsensts"},approveConsent:{method:"POST",url:"/Api/Consents/ApproveConsent"},rejectConsent:{method:"POST",url:"/Api/Consents/RejectConsent"}});return{getConsentsInfoBrief:e,getConsentsInfoForUser:o,assignConsensts:s,approveConsent:h,rejectConsent:c}}]);wbApp.factory("coursePriceSvc",["tenantSettingSvc","$filter","$translate",function(n,t,i){function u(n,r,u,f){return f?u?"{0} ({1} {2}, {3} {4})".f(t("wbCurrencyFlt")(n),r,i.instant("TXT_COL_LESSONS"),t("wbCurrencyFlt")(u),i.instant("TXT_COL_DISCOUNT")):"{0} ({1} {2})".f(t("wbCurrencyFlt")(n),r,i.instant("TXT_COL_LESSONS")):u?"{0} ({1} {2})".f(t("wbCurrencyFlt")(n),t("wbCurrencyFlt")(u),i.instant("TXT_COL_DISCOUNT")):t("wbCurrencyFlt")(n)}function f(n,r,u){if(n.fixedPrice!==null&&n.fixedPrice!==undefined)return"{0} ({1})".f(i.instant("TXT_LBL_COURSE_FEE"),i.instant("TXT_LBL_FIXED_PRICE"));var f=!u?1:n.amortizationScheduleSurchargePct/100+1;return"{0} ({1} x {2})".f(i.instant("TXT_LBL_COURSE_FEE"),r,t("wbCurrencyFlt")(_.round(n.price*f,2)))}function e(n,t){var i,r;if(!n||n.length===0)return null;for(i=0;i<n.length;i++)if(r=n[i],r.studentID===t)return r;return null}function o(n,t,i){var f,u,o,r;if(!n||n.length===0)return i;for(f=0,u=0;u<n.length;u++)o=n[u],r=e(o.attendance,t),(r&&r.courseAttendanceFeeType!==null&&r.courseAttendanceFeeType!==1&&r.courseAttendanceFeeType!==2||r===null||r!==null&&r.courseAttendanceFeeType===null)&&f++;return f}function s(n,t,i){var e=r(n,o(n.scheduleWithAttendance,t.studentID,n.remainingLessons),t.attendanceCount),h=e,c=0,f,s;return angular.forEach(t.promotions,function(n){!n.owns&&(n.isMandatory||n.buy)&&(h+=n.price);(n.owns||n.isMandatory||n.buy)&&(c+=n.discountPct)}),f=e*c/100,s=h-f,{basePrice:e,discountAmt:f,finalPrice:s,finalPriceStr:u(s,n.remainingLessons,f,!n.fixedPrice&&!i)}}function r(n,t,i,r){var u=0,f;return u=n.fixedPrice!==null&&n.fixedPrice!==undefined?n.fixedPrice:n.subjectCategoryID===2?n.price:t*n.price,u=u*(i||1),!r||(f=n.amortizationScheduleSurchargePct/100+1,u=u*f),_.round(u,2)}function h(n,r){return i.instant("TXT_LBL_DISCOUNT_PCT")+" - {0} ({1} %)".f(n,t("number")(r,2))}function c(n,t,i){for(var f,c,l,h,r=[],e=n,o=0;o<i.length;o++){var a=o+1==i.length,u=i[o],s=u.amount!=null?Math.min(u.amount,e):Math.min(n*(u.percentageAmount/100),e);if(a&&(s=e),s<=0)break;(f=u.issueAt!=null?moment(u.issueAt).startOf("day").toDate():moment(t).add(u.issueDaysAfterRegistration,"days").startOf("day").toDate(),moment(f).isBefore(moment(t).startOf("day")))||_.find(r,function(n){return moment(n.issueAt).isSame(f)})||(c={issueAt:f,dueDate:moment(f).add(15,"days").toDate(),amount:s},r.push(c),e-=s)}return r.length>0&&(l=_.reduce(r,function(n,t){return n+t.amount},0),h=n-l,h>0&&(_.last(r).amount+=h)),r}return{getPriceDetails:s,getCourseBasePrice:r,getCourseFeeLineName:f,gtDiscountLineStr:h,calculateAmortizationSchedules:c}}]);wbApp.factory("courseRegistrationSvc",["$resource","$q","$translate","$filter","notificationSvc","repositorySvc","courseScheduleSvc","invoiceSvc","promotionSvc","attendanceSvc","coursePriceSvc","courseSvc",function(n,t,i,r,u,f,e,o,s,h,c,l){function y(n,i,r){var u=new webooker_courses_models.CourseRegistration({});return u.preInitNew(t,e,n,i,r)}function b(n,i,r,u,f){return n.initialize(t,o,s,h,c,i,r,u,f)}function p(n,i,r){return t(function(t,u){var o=[],f=[],s;_.forEach(n,function(n){f.push.apply(f,n.registeredAttendance)});s=_.groupBy(f,"courseScheduleID");e.getAllAsync(i,r).$promise.then(function(n){_.forEach(n,function(n){var t=new webooker_courses_models.CourseRegistrationUserSchedule(n),i=s[n.courseScheduleID];t.addCourseRegistrationAttendance.call(t,i||[]);o.push(t)});t(o)},u)})}function k(n,i){return t(function(t,r){e.getAllAsync(i,!0).$promise.then(function(i){_.forEach(n,function(n){n.updateCapacityByRefreshedSchedules.call(n,i)});t(n)},r)})}function d(n,t){angular.forEach(n.registeredAttendance,function(n){n.attendanceCount=t})}function v(n,t){angular.forEach(n,function(n){var i=_.filter(n.registeredAttendance,function(n){return moment().isBefore(n.startDate)});n.noFurtherRegisteredAttendance=_.every(i,{courseAttendanceType:null})&&i.length>0;n.registeredAttendance&&n.registeredAttendance.length===1?(n.attendanceStatusText=r("attendanceStatus")(n.registeredAttendance[0].courseAttendanceStatus),n.attendanceStatusNotPresent=!!n.registeredAttendance[0].courseAttendanceStatus):(n.attendanceStatusText="",n.attendanceStatusNotPresent=!0);t.push(n)})}function g(n,i,r,u,e,l){var b=t.defer(),w=[];return f.customGet("getAllForCourseAndUser",a,{courseID:i.courseID,userID:n,includeInterestsAsVirtual:e}).$promise.then(function(n){var e=[],f;angular.forEach(r,function(t){if(!_.find(n,{studentID:t.id})){var r=y(i,u,l);r.then(function(n){n.studentID=t.id;n.parentID=t.userID;n.studentFullName=t.fullName;n.studentAge=t.age;n.studentBirthday=t.birthday});e.push(r)}});f=[];e.length?t.all(e).then(function(r){_.forEach(r,function(n){var r=new webooker_courses_models.CourseRegistration(n);f.push(r.initialize.call(r,t,o,s,h,c,i,u,!1,l))});_.forEach(n,function(n){var r=new webooker_courses_models.CourseRegistration(n);f.push(r.initialize.call(r,t,o,s,h,c,i,u,!1,l))});t.all(f).then(function(n){i.allowClientLessonSelection?p(n,i.courseID,!1).then(function(){v(_.sortBy(n,"studentFullName"),w);b.resolve(w)},function(n){b.reject(n)}):(v(_.sortBy(n,"studentFullName"),w),b.resolve(w))})}):(_.forEach(n,function(n){var r=new webooker_courses_models.CourseRegistration(n);f.push(r.initialize.call(r,t,o,s,h,c,i,u,!1,l))}),t.all(f).then(function(n){i.allowClientLessonSelection?p(n,i.courseID,!1).then(function(){v(_.sortBy(n,"studentFullName"),w);b.resolve(w)},function(n){b.reject(n)}):(v(_.sortBy(n,"studentFullName"),w),b.resolve(w))}))},function(n){b.reject(n)}),w.$promise=b.promise,w}function w(n){var r=t.defer(),i=[];return f.customGet("getAllForCourse",a,{courseID:n}).$promise.then(function(n){v(n,i);r.resolve(i)},function(n){r.reject(n)}),i.$promise=r.promise,i}function nt(n){return f.customGet("getAllCoursesByStudent",a,{studentID:n})}function tt(n){return f.customGet("getAllActionsByStudent",a,{studentID:n})}function it(n){return f.customGet("getAllCoursesByUser",a,{userID:n})}function rt(n){return f.customGet("getAllActionsByUser",a,{userID:n})}function ut(n){var u=w(n),r=t.defer(),i=[];return u.$promise.then(function(n){angular.forEach(n,function(n){i.push({studentID:n.studentID,fullName:n.studentFullName,attendanceStatus:0,attendanceType:0,attendanceCount:1})});r.resolve(i)},function(n){r.reject(n)}),i.$promise=r.promise,i}function ft(n){return t(function(t,r){a.sendRegistrationNotification({courseRegistrationID:n},function(n){u.notifyInfo(i.instant("TXT_ALERT_TITLE_NOTIFICATION_SENT"));t(n)},function(n){f.defaultErrorHandler(n);r(n)})})}function et(n,t,r,e,o,s){f.customPost("insertAll",a,{models:{model:n,courseID:t},subjectCategory:e,sendEmailNotification:r.sendEmailNotification,sendSmsNotification:r.sendSmsNotification},o,function(n){u.notifyError(i.instant("TXT_ALERT_TITLE_CHANGES_SAVE_ERROR"),u.translateError(n));s&&s(n)})}function ot(n,i,r){return t(function(u,e){var o=[];_.forEach(n,function(n){var t={userId:n.parentID,studentId:n.studentID,courseId:i.courseID,semesterId:i.semesterID,subjectId:i.subjectID,classroomId:i.classroomID,teacherId:i.employeeID,courseName:i.name,courseAbbreviation:i.abbreviation,courseFullName:l.getCourseFullName(i),courseStartDate:i.firstLesson,courseEndDate:i.lastLesson,subjectName:i.subjectName,classroomName:r.name,teacherFullName:i.teacher,notes:n.notes};o.push(f.customPost("createFullCourseInterest",a,t,null,null,!0).$promise)});t.all(o).then(u,e)})}function st(n,t,i,r,u){f.insert(a,null,{model:n,subjectCategory:i,sendEmailNotification:t.sendEmailNotification,sendSmsNotification:t.sendSmsNotification},r,u)}function ht(n,t,i,r,u,e){f.update(a,null,{model:n,subjectCategory:i,updateInvoice:r||!1,sendEmailNotification:t.sendEmailNotification,sendSmsNotification:t.sendSmsNotification},u,e)}function ct(n,t,i,r){f.remove(a,null,{courseRegistrationID:n.courseRegistrationID,subjectCategory:t},i,r,{courseRegistrationID:n.courseRegistrationID})}var a=n("/Api/CourseRegistrations/Get",{},{getAllForCourse:{method:"GET",isArray:!0,url:"/Api/CourseRegistrations/Get"},getAllForCourseAndUser:{method:"GET",isArray:!0,url:"/Api/CourseRegistrations/GetAllByCourseAndUser"},getAllCoursesByStudent:{method:"GET",isArray:!0,url:"/Api/CourseRegistrations/GetAllCoursesByStudent"},getAllActionsByStudent:{method:"GET",isArray:!0,url:"/Api/CourseRegistrations/GetAllActionsByStudent"},getAllCoursesByUser:{method:"GET",isArray:!0,url:"/Api/CourseRegistrations/GetAllCoursesByUser"},getAllActionsByUser:{method:"GET",isArray:!0,url:"/Api/CourseRegistrations/getAllActionsByUser"},sendRegistrationNotification:{method:"POST",url:"/Api/CourseRegistrations/SendRegistrationNotification"},createFullCourseInterest:{method:"POST",url:"/restapi/course-registrations/full-course-interest"},update:{method:"POST",url:"/Api/CourseRegistrations/Update"},insert:{method:"POST",url:"/Api/CourseRegistrations/Insert"},insertAll:{method:"POST",url:"/Api/CourseRegistrations/InsertAll"},"delete":{method:"POST",url:"/Api/CourseRegistrations/Delete"}});return{getAllForCourse:w,getAllForCourseAndUser:g,getRegisteredAttendanceForCourse:ut,getAllCoursesByStudent:nt,getAllActionsByStudent:tt,getAllCoursesByUser:it,getAllActionsByUser:rt,sendRegistrationNotification:ft,createNew:y,initializeModel:b,insert:st,insertAll:et,update:ht,remove:ct,updateReservedPlaces:d,refreshSchedules:k,createFullCourseInterest:ot}}]);wbApp.factory("courseScheduleSvc",["$resource","$cacheFactory","repositorySvc","semesterSvc",function(n,t,i,r){function h(n){return i.customPost("expandRecurrencePattern",u,{model:n},null,null,!0)}function c(n,t,r){if(!n)return null;var e=f.get("schedules");return(o!==n||!e||t||s!==!!r)&&(e=i.get(u,{courseID:n,includeDeletes:!!r}),f.put("schedules",e),o=n,s=!!r),e}function l(n,t,r){i.insert(u,f.get("schedules"),{model:n},t,r,"courseScheduleID")}function a(n,t,r,e){i.update(u,f.get("schedules"),{model:n,sendEmailNotification:t.sendEmailNotification,sendSmsNotification:t.sendSmsNotification},r,e,"courseScheduleID")}function v(n,t,r,e){i.remove(u,f.get("schedules"),{courseScheduleID:n.courseScheduleID},r,e,{courseScheduleID:n.courseScheduleID,sendEmailNotification:t.sendEmailNotification,sendSmsNotification:t.sendSmsNotification},"courseScheduleID")}function y(n,t){return i.customGet("getPattern",u,{courseID:n,courseScheduleID:t})}function p(n){return i.customGet("getSingle",u,{courseScheduleID:n})}function w(n,t,r,f,e){return i.customGet("getAllForSemester",u,{semesterID:n,compensationGroupID:t,userID:r,startDate:f,endDate:e})}function b(n,t,r,f,e){return i.customGet("getAllForSemesterAll",u,{semesterID:n,compensationGroupID:t,userID:r,startDate:f,endDate:e})}function k(n){return i.customGet("getAllForCurrentUserAndCourse",u,{courseID:n})}function d(n,t){n.recurrenceInfo&&(n.recurrenceInfo.start=t,n.recurrenceInfo.weekDays=e(t))}function e(n){var t=moment(n).day();return t?1<<t:1}function g(n,t,i){var u=n.firstLesson?moment().startOf("day").add(moment(n.firstLesson).hour(),"h").add(moment(n.firstLesson).minute(),"m"):moment().startOf("hour"),o=n.lessonLengthInMinutes?moment(u).add(n.lessonLengthInMinutes,"m"):moment(u).add(60,"m"),f={semesterID:n.semesterID,courseID:n.courseID,employeeID:n.employeeID,classroomID:n.classroomID||undefined,capacity:n.capacity,startDate:u.toDate(),endDate:o.toDate(),subjectCategoryID:n.subjectCategoryID,recurrenceType:!t?0:1};return!t||(f.recurrenceInfo={type:1,periodicity:1,weekDays:e(u.toDate()),occurrenceCount:10,start:u.toDate(),range:1},f.recurrenceId="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(n){var t=Math.random()*16|0,i=n=="x"?t:t&3|8;return i.toString(16)}),r.getDefaultAsync().then(function(n){f.recurrenceInfo.end=n.endDate;!i||i(f)})),f}function nt(n,t,i,r){return{subjectCategoryID:2,startDate:n,endDate:t,classroomID:i,semesterID:r,employeeID:0,courseID:0}}function tt(n,t,i,r,u){var f={subjectCategoryID:1,startDate:n,endDate:t,classroomID:i,semesterID:r,employeeID:0,courseID:0,recurrenceType:!u?0:1};return!u||(f.recurrenceInfo={type:1,periodicity:1,weekDays:e(n),occurrenceCount:10,start:n,range:1},f.recurrenceId="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(n){var t=Math.random()*16|0,i=n=="x"?t:t&3|8;return i.toString(16)})),f}var u=n("/Api/CourseSchedule/:id",{},{query:{method:"GET",isArray:!0},update:{method:"POST",url:"/Api/CourseSchedule/Update"},insert:{method:"POST",url:"/Api/CourseSchedule/Insert"},"delete":{method:"POST",url:"/Api/CourseSchedule/Delete"},getSingle:{method:"GET",url:"/Api/CourseSchedule/GetSingle"},getPattern:{method:"GET",url:"/Api/CourseSchedule/GetPatternByOccurence"},getAllForSemester:{method:"GET",isArray:!0,url:"/Api/UserSchedule/GetAllForSemester"},getAllForSemesterAll:{method:"GET",isArray:!0,url:"/Api/UserSchedule/GetAllForSemesterAll"},getAllForCurrentUserAndCourse:{method:"GET",isArray:!0,url:"/Api/UserSchedule/GetAllForCurrentUserAndCourse"},expandRecurrencePattern:{method:"POST",isArray:!0,url:"/Api/CourseSchedule/ExpandRecurrencePattern"}}),f=t("courseScheduleSvcCache"),o=0,s=!1;return{getAllAsync:c,insert:l,update:a,remove:v,createNew:g,createNewEvent:nt,createNewCourse:tt,getPattern:y,getSingle:p,getAllForSemesterAsync:w,getAllForSemesterAllAsync:b,updateEventByStartDate:d,getAllForCurrentUserAndCourse:k,expandRecurrencePattern:h}}]);wbApp.factory("courseSvc",["$resource","$q","repositorySvc","gridSortSvc","accountingBookSvc","compensationGroupSvc","surveySvc",function(n,t,i,r,u,f,e){function p(n,t,r){return i.customPost("courseCopySave",o,{model:n},t,r)}function w(){var r=t.defer(),n=[];return n.$promise=r.promise,i.customGet("getFranchiseCourses",o,{}).$promise.then(function(t){n.push.apply(n,t);r.resolve(n)},function(n){r.reject(n)}),n}function b(n,t,r,u){function f(n){return n.subjectCategoryID==2?n.semesterID==l:n.semesterID==c}i.insert(o,t,n,r,u,f)}function k(n,t,r,u){i.update(o,t,n,r,u,"courseID")}function d(n,t,r,u){i.remove(o,t,n,r,u,null,"courseID")}function g(n){return i.customGet("getByCourseID",o,{courseID:n})}function a(n,t){return(c!==n||!s||t)&&(s=i.get(o,{semesterID:n,isAction:!1,openForRegistrationOnly:!1}),c=n),s}function v(n,t){return(l!==n||!h||t)&&(h=i.get(o,{semesterID:n,isAction:!0,openForRegistrationOnly:!1}),l=n),h}function nt(n,i,r){var u=t.defer();return v(n,r).$promise.then(function(n){u.resolve(_.find(n,{courseID:i}))},function(n){u.reject(n)}),u.promise}function tt(n,i,r){var u=t.defer();return a(n,r).$promise.then(function(n){u.resolve(_.find(n,{courseID:i}))},function(n){u.reject(n)}),u.promise}function y(n,t,r,u,f){var e=i.get(o,{semesterID:n,isAction:f||!1,openForRegistrationOnly:!1});e.$promise.then(function(n){var i=_.find(n,{courseID:t}),f=_.find(r,{courseID:t});i&&f&&angular.extend(f,i);u&&u()})}function it(n,t,i,r){return y(n,t,i,r,!0)}function rt(n){if(!n)return"";var t=n.subjectName;return!n.abbreviation||(t+=" ("+n.abbreviation+")"),!n.name||(t+=" - "+n.name),t}function ut(n,t){var i,r;if(s&&c==n)for(i=0;i<s.length;i++)if(r=s[i],r.courseID===t)return r;return null}function ft(n,t){var i,r;if(h&&l==n)for(i=0;i<h.length;i++)if(r=h[i],r.courseID===t)return r;return null}function et(n){var r=_.groupBy(n,function(n){return"_"+n.classroomLocation.longitude+"_"+n.classroomLocation.latitude}),u=[],f,i,t;for(f in r)i=r[f],t=_.head(i),u.push({id:t.classroomID,location:{latitude:t.classroomLocation.latitude,longitude:t.classroomLocation.longitude},courses:i});return u}function ot(n,t){var u,f,e,i;n=_.map(n,function(n){var i=_.find(t.franchises,{tenantID:n.tenantID}),r=_.find(t.franchiseLevels,{franchiseLevelID:i.franchiseLevelID});return i.name&&(n.tenantFriendlyName=i.name),n.placeName=r.level===0?n.tenantFriendlyName:n.address.city,n.franchiseLevel=r,n});u=[];f=_.groupBy(n,function(n){return n.placeName+"-"+n.franchiseSubjectID});for(e in f)i=f[e],i.length>1?u.push({tenantFriendlyName:i[0].tenantFriendlyName,franchiseSubjectID:i[0].franchiseSubjectID,classroomLocation:i[0].classroomLocation,tenantID:i[0].tenantID,address:i[0].address,classroomID:i[0].classroomID,placeName:i[0].placeName,subjectName:i[0].subjectName,courseName:null,teacherSurname:null,firstLessonStartDate:null,courseUrl:null,tenantAlias:i[0].tenantAlias,courseID:i[0].courseID,courses:i,isGroupRow:!0,franchiseLevel:i[0].franchiseLevel}):u.push({tenantFriendlyName:i[0].tenantFriendlyName,franchiseSubjectID:i[0].franchiseSubjectID,classroomLocation:i[0].classroomLocation,tenantID:i[0].tenantID,address:i[0].address,classroomID:i[0].classroomID,placeName:i[0].placeName,subjectName:i[0].subjectName,courseName:i[0].courseName,teacherSurname:i[0].teacherSurname,firstLessonStartDate:i[0].firstLessonStartDate,courseUrl:i[0].courseUrl,tenantAlias:i[0].tenantAlias,courseID:i[0].courseID,courses:i,isGroupRow:!1,franchiseLevel:i[0].franchiseLevel});return n=_.map(u,function(n){return n.courseUrl=n.courses.length>1?"==group==":"https://"+n.tenantAlias+t.domain+"/Courses/Register/"+n.courseID,angular.forEach(n.courses,function(n){n.courseUrl="https://"+n.tenantAlias+t.domain+"/Courses/Register/"+n.courseID;n.placeName=n.franchiseLevel.level===0?n.tenantFriendlyName:n.address.city}),n}),_.sortBy(n,[function(n){return n.franchiseLevel.level},function(n){return n.franchiseLevel.level===0?r.locale(n.tenantFriendlyName):r.locale(n.address.city)},function(n){var t=moment(n.firstLessonStartDate);return moment("2000-1-1").add(t.day(),"day").add(t.hour(),"hour").add(t.minute(),"minute")}])}function st(n,i){var o=u.getDefaultAsync(),s=f.getDefaultAsync(),h=e.getDefaultAsync(),c=t.defer(),r={semesterID:n,showInSchedule:!0,allowRegistration:!0,showInEmployeeTimeSheet:!0,emailCategory:1,lessonLengthInMinutes:45,courseCategoryID:1,courseAgeRangeID:1,subjectCategoryID:i?2:1,amortizationSchedules:[]};return!i||(r.picture="0/children01.png"),t.all([o,s,h]).then(function(n){!n[0]||(r.accountingBookID=n[0].id);!n[1]||(r.compensationGroupID=n[1].id);!n[2]||(r.surveyID=n[2].surveyID)}),r.$promise=c.promise,r}var o=n("/Api/Courses/:id",{},{query:{method:"GET",isArray:!0},getByCourseID:{method:"GET",isArray:!1,url:"/Api/Courses/GetByCourseID"},update:{method:"POST",url:"/Api/Courses/Update"},insert:{method:"POST",url:"/Api/Courses/Insert"},"delete":{method:"POST",url:"/Api/Courses/Delete"},getFranchiseCourses:{method:"GET",isArray:!0,url:"/Api/Courses/GetFranchiseCourses"},courseCopySave:{method:"POST",url:"/Api/Courses/CourseCopy"}}),s=null,c=null,h=null,l=null;return{getAllAsync:a,getAllActionsAsync:v,getCourseFullName:rt,get:ut,getByCourseID:g,getAction:ft,getFranchiseCourses:w,breakFranchiseCoursesByAddress:et,enhanceFranchiseCoursesAndsort:ot,insert:b,update:k,remove:d,createNew:st,refreshActionRecord:it,refreshCourseRecord:y,getActionAsync:nt,getCourseAsync:tt,courseCopySave:p}}]);wbApp.factory("courseTypeSvc",["$resource","$q","repositorySvc",function(n,t,i){function o(){return{}}function e(n){return(!r||n)&&(r=i.customGet("getAll",f)),r}function s(n){return(!u||n)&&(u=i.customGet("getLookup",f)),u}function h(n){return t(function(t,i){e().$promise.then(function(i){t(_.find(i,{courseTypeID:n}))},i)})}function c(n,t,e){i.insert(f,r,n,function(n){t&&t(n);u=null},e,"courseTypeID")}function l(n,t,e){i.update(f,r,n,function(n){t&&t(n);u=null},e,"courseTypeID")}function a(n,t,e){i.remove(f,r,n,function(n){t&&t(n);u=null},e,{courseTypeID:n.courseTypeID},"courseTypeID")}var f=n("/Api/CourseTypes/:id",{},{getLookup:{method:"GET",isArray:!0,url:"/Api/CourseTypes/GetLookup"},getAll:{method:"GET",isArray:!0,url:"/Api/CourseTypes/GetAll"},update:{method:"POST",url:"/Api/CourseTypes/Update"},insert:{method:"POST",url:"/Api/CourseTypes/Insert"},"delete":{method:"POST",url:"/Api/CourseTypes/Delete"}}),r,u;return{createNew:o,getAllAsync:e,getAllForLookup:s,getByIdAsync:h,insert:c,update:l,remove:a}}]);wbApp.factory("domainsSvc",["$resource","$q","repositorySvc",function(n,t,i){function f(){return i.customGet("get",u,{expand:"specializations"})}function e(n){return(!r||n)&&(r=i.customGet("get",u)),r}function o(){return{name:"",description:null}}function s(n,t,f){return i.customPost("insert",u,n,function(n){r&&r.push(n);t&&t()},f)}function h(n,t,f){return i.customPutWithParams("update",u,{id:n.id},n,function(){if(r){var i=_.find(r,{id:n.id});i&&angular.copy(n,i)}t&&t()},f)}function c(n,t,f){return i.customDelete("delete",u,{id:n.id},function(){if(r){var i=_.findIndex(r,{id:n.id});i!==-1&&r.splice(i,1)}t&&t()},f)}var u=n("/restapi/domains/:id",{},{get:{method:"GET",isArray:!0,url:"/restapi/domains"},insert:{method:"POST",url:"/restapi/domains"},update:{method:"PUT",url:"/restapi/domains/:id"},"delete":{method:"DELETE",url:"/restapi/domains/:id"}}),r;return{getAll:e,createNew:o,insert:s,update:h,remove:c,getAllExpanded:f}}]);wbApp.factory("employeeSvc",["$resource","$cacheFactory","$q","repositorySvc","domainsSvc",function(n,t,i,r,u){function h(){return{active:!0,smallImageUrl:"/Data/teampictures/cf2830ffb3df4d72a4cbbc8f88fa3c8a.png",franchises:[]}}function s(){var n=r.customGet("getAll",f);return n.$promise.then(function(n){_.forEach(n,function(n){n.rfidCardIDsStr=_.join(n.rfidCardIDs,", ")})}),n}function c(n){var u=s(n),t=[],r=i.defer();return t.$promise=r.promise,u.$promise.then(function(n){angular.forEach(n,function(n){n.isDeleted||t.push(n)});r.resolve(t)},function(n){r.reject(n)}),t}function l(n){return r.customGet("getByEmployeeID",f,{employeeID:n})}function a(n){return r.customGet("getBriefByEmployeeID",f,{employeeID:n})}function v(n){var u=s(),t=[],r=i.defer();return t.$promise=r.promise,u.$promise.then(function(i){angular.forEach(i,function(i){(!i.isDeleted&&i.active||i.employeeID===n)&&t.push(i)});r.resolve(t)},function(n){r.reject(n)}),t}function y(n,t,i,u){r.insert(f,u,n,t,i,"employeeID")}function p(n,t,i,u){r.update(f,u,n,t,i,"employeeID")}function w(n,t,i,u){r.remove(f,u,n,t,i,{employeeID:n.employeeID},"employeeID")}function b(n){n.franchises.push({employeeFranchiseID:0,franchiseCentralTenantID:null,active:!1,licenses:[]})}function k(n){return n?r.customGet("domainsGetAll",f,{employeeId:n}):i(function(n){n([])})}function d(n){return i(function(t,r){i.all([u.getAllExpanded().$promise,k(n).$promise]).then(function(n){var i=n[0],r=n[1],u=_.flatMapDeep(r,function(n){return[n.domainId,n.specializationIds]});t({domains:i,selection:u})},function(n){r(n)})})}function g(n,t,u,e,o,s){var c=_.keyBy(u,function(n){return n}),l=_.keyBy(e,function(n){return n}),a=[],v=[],y=[],h=[];_.forEach(t,function(n){var i={id:null,domainId:null,specializationIds:[]},t={id:null,domainId:null,specializationIds:[]};_.forEach(n.specializations,function(n){_.has(c,n.id)&&i.specializationIds.push(n.id);_.has(l,n.id)&&t.specializationIds.push(n.id)});(i.specializationIds.length||_.has(c,n.id))&&(i.id=n.id,i.domainId=n.id);(t.specializationIds.length||_.has(l,n.id))&&(t.id=n.id,t.domainId=n.id);!i.id||t.id||y.push(i);i.id||!t.id||a.push(t);!i.id||!t.id||_.isEqual(i,t)||v.push(t)});_.forEach(a,function(t){h.push(r.customPutWithParams("domainsInsert",f,{employeeId:n},t).$promise)});_.forEach(v,function(t){h.push(r.customPutWithParams("domainsUpdate",f,{employeeId:n,id:t.id},t).$promise)});_.forEach(y,function(t){h.push(r.customDelete("domainsDelete",f,{employeeId:n,id:t.id}).$promise)});h.length==0?o():i.all(h).then(function(n){o(n)},function(n){s(n)})}function nt(n,t,i){return e=null,r.customPutWithParams("schedulesUpdateDay",f,{employeeId:n,id:moment(t).format("YYYY-MM-DD")},i)}function tt(n,t){return e=null,r.customDelete("schedulesDeleteDay",f,{employeeId:n,id:moment(t).format("YYYY-MM-DD")})}function it(n,t,u){return i(function(i,e){var o=f.getAllExpandedByIds({ids:u,expanded:"AvailabilitySchedules,Schedules,Domains",from:n,to:t},function(){_.forEach(o,function(n){n.fullName=String.prototype.fullName(n.name,n.middlename,n.surname)});i(o)},function(n){r.defaultErrorHandler(n);e(n)})})}function rt(n,t){var r=moment();return e&&moment(o.from).isSame(n)&&moment(o.to).isSame(t)&&!o.loadedAt.isBefore(r)||(o={from:n,to:t,loadedAt:moment().add(10,"seconds")},e=i(function(i,r){var u=f.getAllExpanded({expanded:"AvailabilitySchedules,Schedules,Domains",from:n,to:t},function(){_.forEach(u,function(n){n.fullName=String.prototype.fullName(n.name,n.middlename,n.surname)});i(u)},function(n){r(n)})})),e}function ut(){return i(function(n,t){var i=r.customGet("getAllExpanded",f,function(){_.forEach(i,function(n){n.fullName=String.prototype.fullName(n.name,n.middlename,n.surname)});n(i)},function(n){t(n)})})}var f=n("/Api/Employees/:id",{},{getAll:{method:"GET",isArray:!0,url:"/Api/Employees/GetAll"},getByEmployeeID:{method:"GET",isArray:!1,url:"/Api/Employees/GetByEmployeeID"},getBriefByEmployeeID:{method:"GET",isArray:!1,url:"/Api/Employees/GetBriefByEmployeeID"},update:{method:"POST",url:"/Api/Employees/Update"},insert:{method:"POST",url:"/Api/Employees/Insert"},"delete":{method:"POST",url:"/Api/Employees/Delete"},domainsGetAll:{method:"GET",isArray:!0,url:"/restapi/employees/:employeeId/domains"},domainsInsert:{method:"POST",url:"/restapi/employees/:employeeId/domains"},domainsUpdate:{method:"PUT",url:"/restapi/employees/:employeeId/domains/:id"},domainsDelete:{method:"DELETE",url:"/restapi/employees/:employeeId/domains/:id"},getAllExpanded:{method:"GET",isArray:!0,url:"/restapi/employees"},getAllExpandedByIds:{method:"POST",isArray:!0,url:"/restapi/employees/find-by-ids"},schedulesUpdateDay:{method:"PUT",url:"/restapi/employees/:employeeId/schedules/:id"},schedulesDeleteDay:{method:"DELETE",url:"/restapi/employees/:employeeId/schedules/:id"}}),e=null,o={from:null,to:null,loadedAt:moment()};return{createNew:h,getByEmployeeID:l,getBriefByEmployeeID:a,getAllAsync:s,getAllActiveAsync:v,insert:y,update:p,remove:w,initNewFranchisesLicense:b,getAllNonDeleted:c,loadDomainsData:d,saveDomainsData:g,getAllExpandedByIds:it,getAll:ut,getAllExpanded:rt,schedulesUpdateDay:nt,schedulesDeleteDay:tt}}]);wbApp.factory("errorTypeTranslateSvc",["$translate",function(n){function t(t,i,r){var u="",f,e;i=i||{};switch(t){case"email":u+=n.instant("TXT_ERROR_INVALID_EMAIL");break;case"required":u+=n.instant("TXT_ERROR_REQUIRED");break;case"maxlength":u+=n.instant("TXT_ERROR_MAX_LENGTH");i.ngMaxlength&&(u+=" ("+i.ngMaxlength+")");break;case"minlength":u+=n.instant("TXT_ERROR_MIN_LENGTH");i.ngMinlength&&(u+="("+i.ngMinlength+")");break;case"isBefore":u+=n.instant("TXT_ERROR_IS_BEFORE");i.wbIsBeforeValidator&&(f=r.$eval(i.wbIsBeforeValidator),u+=moment(f).format("L"));break;case"isAfter":u+=n.instant("TXT_ERROR_IS_AFTER");i.wbIsAfterValidator&&(e=r.$eval(i.wbIsAfterValidator),u+=moment(e).format("L"));break;case"pattern":u+=n.instant("TXT_ERROR_PATTERN");break;case"uniqueEmail":u+=n.instant("TXT_ERROR_UNIQUE_EMAIL");break;case"uniqueUserName":u+=n.instant("TXT_ERROR_UNIQUE_USER_NAME");break;case"uniqueTenant":u+=n.instant("TXT_ERROR_UNIQUE_TENANT_NAME");break;case"sameValue":u+=i.wbSameValueValidatorMessage?i.wbSameValueValidatorMessage:n.instant("TXT_ERROR_UNIQUE_USER_NAME");break;case"differentValue":u+=i.wbDifferentValueValidatorMessage?i.wbDifferentValueValidatorMessage:n.instant("TXT_ERROR_UNIQUE_USER_NAME");break;case"onlyOneValueSet":u+=i.wbOnlyOneValueSetValidatorMessage?i.wbOnlyOneValueSetValidatorMessage:n.instant("TXT_ERROR_ONLY_ONE_VALUE_CAN_BE_SET");break;case"dependentPropertyRequired":u+=i.wbDependentPropertyRequiredValidator?i.wbDependentPropertyRequiredValidatorMessage:n.instant("TXT_ERROR_ONLY_ONE_VALUE_CAN_BE_SET");break;case"mask":u+=n.instant("TXT_ERROR_PATTERN");break;case"number":u+=n.instant("TXT_ERROR_NUMBER");break;case"min":u+=n.instant("TXT_ERROR_MIN");i.min?u+=" ("+i.min+")":i.minTime&&(u+=" ("+i.minTime+")");break;case"max":u+=n.instant("TXT_ERROR_MAX");i.max?u+=" ("+i.max+")":i.maxTime&&(u+=" ("+i.maxTime+")")}return u}return{translate:t}}]);wbApp.factory("facebookSvc",["$translate","tenantInfo","notificationSvc","tenantSettingSvc",function(n,t,i,r){function u(n,t){var i="";return n&&(i=n),t&&(i=i.length>0?i+".&nbsp;"+t:t),i}function f(n,i,f,e,o,s,h,c){var l=t.alias,a=u(e,o),v=!h?r.settings.registrationOpenPicture:h,y=c?"Actions":"Courses",p=encodeURI("https://"+l+t.domain+"/"+y+"/Register/"+n),w=encodeURI(i+" "+f+" ("+s+")"),b=encodeURI(a),k=encodeURI(v),d=`https://${l}${t.domain}/spa-helper-social-media-share?url=${p}&title=${w}&image=${k}&description=${b}`;FB.ui({method:"share",href:d},function(){})}return{shareCourseDetail:f}}]);wbApp.factory("formResponseSvc",["$resource","$q","repositorySvc",function(n,t,i){function u(n){return i.customGet("getById",r,{id:n})}function f(n){return t(function(t,u){var f=i.customGet("getAllByFormId",r,{formDefinitionId:n,expanded:"PersonalInformation"});f.$promise.then(function(n){t(n)},function(n){u(n)})})}function e(n){return i.customPost("insert",r,n)}var r=n("/restapi/forms-responses/:id",{},{getById:{method:"GET",url:"/restapi/forms-responses/:id"},getAllByFormId:{method:"GET",isArray:!0,url:"/restapi/forms-responses/info/find-by-form-definition"},insert:{method:"POST",url:"/restapi/forms-responses"}});return{getById:u,getAllByFormId:f,insert:e}}]);wbApp.factory("formSvc",["$resource","$q","repositorySvc",function(n,t,i){function e(){var n={name:"",primaryQuestionIndex:0,primaryQuestionIndexPlusOne:1,accessPermissions:0,isActive:!0,questions:[],isNew:!0};return u(n),n}function u(n){var t,i,r;n.questions||(n.questions=[]);t=1;i=_.maxBy(n.questions,"id");!i||(t=i.id+1);r={id:t+1,name:"",descriptionHtml:"",questionType:0,options:[]};f(r);n.questions.push(r)}function f(n){var t,i,r;n.options||(n.options=[]);t=1;i=_.maxBy(n.options,"id");!i||(t=i.id+1);r={id:t+1,name:""};n.options.push(r)}function o(n){return n.questions==null||n.questions.length==0?!1:n.primaryQuestionIndex>n.questions.length-1||n.primaryQuestionIndex<0?!1:_.reduce(n.questions,function(n,t){var i=!0;return i=t.questionType!=4?t.options!=null&&t.options.length>0:t.options==null,n&&i},!0)}function s(n){return i.customPost("insert",r,n)}function h(n){return i.customDelete("delete",r,{id:n})}function c(n){return i.customPutWithParams("update",r,{id:n.id},n)}function l(n){return i.customGet("getById",r,{id:n})}function a(n,t){return i.customGet("getByIdAndRevision",r,{id:n,revision:t})}function v(){return t(function(n,t){var u=i.customGet("getAll",r,{});u.$promise.then(function(t){n(t)},function(n){t(n)})})}function y(){return t(function(n,t){var u=i.customGet("getAllActive",r,{});u.$promise.then(function(t){n(t)},function(n){t(n)})})}function p(n,t){n.notRegisteredUserInfo=t.notRegisteredUserInfo;n.isNotRegisteredUser=!!n.notRegisteredUserInfo;var i=_.find(n.students,function(n){return n.id==t.studentId});!i||(i.checked=!0);_.forEach(t.answers,function(t){var i=_.find(n.questions,{id:t.id});!i||(i.textAnswer=t.textAnswer,!!t.optionsSelection&&t.optionsSelection.length>0&&_.forEach(t.optionsSelection,function(n){var t=_.find(i.options,{id:n});!t||(t.checked=!0)}))})}function w(n){return{id:null,formDefinitionId:n.id,formDefinitionRevision:n.auditEvent!=null?n.auditEvent.revision:0,userId:n.notRegisteredUserInfo?null:n.userId+"",studentId:_.head(_.map(_.filter(n.students,{checked:!0}),function(n){return n.id+""})),answers:_.map(n.questions,function(n){return{id:n.id,textAnswer:n.textAnswer,optionsSelection:n.questionType==4?undefined:_.map(_.filter(n.options,{checked:!0}),"id")}}),isNotRegisteredUser:!!n.notRegisteredUserInfo,notRegisteredUserInfo:n.notRegisteredUserInfo}}var r=n("/restapi/forms-definitions/:id",{},{getById:{method:"GET",url:"/restapi/forms-definitions/:id"},getAll:{method:"GET",isArray:!0,url:"/restapi/forms-definitions"},getAllActive:{method:"GET",isArray:!0,url:"/restapi/forms-definitions/find-by-active"},getByIdAndRevision:{method:"GET",url:"/restapi/forms-definitions/:id/audit/:revision"},insert:{method:"POST",url:"/restapi/forms-definitions"},update:{method:"PUT",url:"/restapi/forms-definitions/:id"},"delete":{method:"DELETE",url:"/restapi/forms-definitions/:id"}});return{createNew:e,getById:l,getByIdAndRevision:a,getAll:v,getAllActive:y,insert:s,remove:h,update:c,addNewQuestion:u,addNewOption:f,isFormValid:o,generateFormResponseFromFilledForm:w,updateFilledFormByFormResponse:p}}]);wbApp.factory("geoCoderSvc",["$q","uiGmapGoogleMapApi",function(n,t){function i(i){var r=n.defer();return t.then(function(n){var u=new n.Geocoder,t;t=typeof i=="string"||i instanceof String?i:i.formatted_address;u.geocode({address:t},function(t,i){i===n.GeocoderStatus.OK||i===n.GeocoderStatus.ZERO_RESULTS?r.resolve(t):r.reject(i)})}),r.promise}function r(i,r){var u=n.defer();return t.then(function(n){var t=new n.LatLng(i,r),f=new n.Geocoder;f.geocode({latLng:t},function(t,i){i===n.GeocoderStatus.OK||i===n.GeocoderStatus.ZERO_RESULTS?u.resolve(t):u.reject(i)})}),u.promise}return{geocode:i,geoDecode:r}}]);wbApp.factory("gridSortSvc",["languageService","tenantSettingSvc",function(n,t){function u(n){return n?new Date(n):new Date(0)}function f(n){for(var t="",i=0,u,f;i<n.length;)u=n[i],u==="c"&&i+1<n.length&&n[i+1]==="h"?(i++,t=t+r.ch):(f=r[u],t=f?t+f:t+u),i++;return t}function i(t,i){return(i||(i=n.currentLanguage().key),!t)?t:e[i](angular.lowercase(t))}function o(n){var r,u,t;if(!n)return n;for(r="",u=n.split(" "),t=u.length-1;t>=0;t--)r+=u[t];return i(r)}function s(n,r,u,f){return t.settings.sortNamesBySurname?i(n[u])+" "+i(n[f])+" "+i(n[r]):i(n[r])+" "+i(n[f])+" "+i(n[u])}function h(n,r){var u,f,e;return t.settings.sortNamesBySurname?(u=_.words(n[r]),u.length<=3)?i(_.join(_.reverse(u)," ")):(f=_.drop(u,3),e=_.slice(u,0,3),i(_.join(_.concat(_.reverse(e),f)," "))):i(n[r])}function c(n,t){return i(n[t])}var r={"á":"a{","č":"c{","ď":"d{","é":"e{","ě":"e|","í":"i{","ň":"n{","ó":"o{","ř":"r{","š":"s{","ť":"t{","ú":"u{","ů":"u|","ý":"y{","ž":"z{",ch:"h{"},e={cs:f,en:function(n){return n}};return{humanName:o,date:u,locale:i,sortHumanFullName:s,sortHumanFullName2:h,localeSort:c}}]);wbApp.factory("languageService",["$translate","$timeout","preferredLanguage","tenantInfo",function(n,t,i,r){function f(n){for(var i,f,e,t=0;t<u.length;t++)u[t].key===n?(u[t].active=!0,moment.locale(n)):u[t].active=!1;i=new Date;i.setDate(i.getDate()+1e4);i.setTime(i.getTime()+864e5);f="c="+n+"|uic="+n;e="culture="+f+"; expires="+i.toUTCString()+"; domain="+r.domain+"; path=/";document.cookie=e}function e(t){return t&&t!==n.use()&&(n.use(t),f(t)),n.use()}n.use(i);var u=[{key:"en",nameResID:"TXT_LANG_EN",img:"Areas/NgAdmin/Styles/img/flags/flag_usa.png"},{key:"cs",nameResID:"TXT_LANG_CS",img:"Areas/NgAdmin/Styles/img/flags/flag_czech_republic.png"}];return f(n.use()),{currentLangKey:e,currentLanguage:function(){for(var n=0;n<u.length;n++)if(u[n].key===e())return u[n];return{}},supportedLanguages:u}}]);wbApp.factory("membershipStudentSvc",["$q","$resource","repositorySvc",function(n,t,i){function h(){return i.get(r,{})}function c(n,t,u){var s=moment(t).startOf("day");return s.isSame(o)&&e==n&&f&&!u||(o=s,e=n,f=i.customGet("getValidByUser",r,{userId:n,now:s.toDate()})),f}function l(n){return u&&s===n||(u=i.customGet("getByMembership",r,{membershipId:n}),s=n),u}function a(n,t,f){i.insert(r,u,n,t,f,"membershipStudentID")}function v(n,t,f){i.update(r,u,n,t,f,"membershipStudentID")}function y(n,t){i.remove(r,u,n,null,t,{membershipStudentID:n.membershipStudentID},"membershipStudentID")}var r=t("/Api/MembershipStudent/:userId",{},{query:{method:"GET",isArray:!0},getByUser:{method:"GET",url:"/Api/MembershipStudent/GetByUser",isArray:!0},getValidByUser:{method:"GET",url:"/Api/MembershipStudent/GetValidByUser",isArray:!0},getByMembership:{method:"GET",url:"/Api/MembershipStudent/GetByMembership",isArray:!0},insert:{method:"POST",url:"/Api/MembershipStudent/Insert"},update:{method:"POST",url:"/Api/MembershipStudent/Update"},"delete":{method:"POST",url:"/Api/MembershipStudent/Delete"}}),f,e,o,u,s;return{getAllAsync:h,GetByUserValidAsync:c,GetAllByMembershipAsync:l,insert:a,update:v,remove:y}}]);wbApp.factory("membershipSvc",["$resource","repositorySvc",function(n,t){function e(n){return(!i||n)&&(i=t.get(r,{})),i}function o(n,i){var e=moment(n).startOf("day");return e.isSame(f)&&u&&!i||(f=e,u=t.customGet("getValid",r,{now:e.toDate()})),u}function s(n,u,f){t.save(r,i,n,u,f)}function h(n,u,f){t.remove(r,i,n,u,f)}var r=n("/Api/Membership/:id",{},{query:{method:"GET",isArray:!0},getValid:{method:"GET",url:"/Api/Membership/GetValid",isArray:!0},save:{method:"POST",url:"/Api/Membership/Save"},"delete":{method:"POST",url:"/Api/Membership/Delete"}}),i,f,u;return{getAllAsync:e,getAllValidAsync:o,save:s,remove:h}}]);wbApp.factory("messageBoxSvc",["$translate","$modal","$rootScope","$sce","tenantSettingSvc","userSettingSvc","$timeout",function(n,t,i,r,u,f){function e(r){for(var f,u,o=!1,e=0;e<r.buttons.length;e++)f=r.buttons[e],f.callback||(f.callback=function(){}),f.primary&&(o=!0),o||e+1!==r.buttons.length||(f.primary=!0),f.$onClick=_.bind(function(){u.$scope.isBusy=!0;var n=this.callback();!n||!n.then?(u.$scope.isBusy=!1,u.$scope.$hide()):n.then(function(){u.$scope.isBusy=!1;u.$scope.$hide()},function(){u.$scope.isBusy=!1;u.$scope.$hide()})},f);u=t({template:"message-box/message-dialog.html",show:!1,scope:i.$new(),container:"#message-box-container"});u.$promise.then(function(){u.$scope.dlgConfig=angular.copy(r);u.$scope.isBusy=!1;u.$scope.dlgConfig.translatedMessage=n.instant(r.message);u.show()})}function o(n){function c(){r.$scope.dlgConfig.rememberSendNotification&&(f.settings[n.userSetting[0]]=r.$scope.dlgConfig.sendEmailNotification,n.userSetting.length===2&&(f.settings[n.userSetting[1]]=r.$scope.dlgConfig.sendSmsNotification),f.saveAsync())}var e=u.settings.sendEmailsToClients&&!u.settings.disableAllEmails&&!u.settings.disableAllEmailsExceptUserRegistration,o=u.settings.enableSMSSupport,s=!0,h,r;if(angular.forEach(n.userSetting,function(n){s=s&&(f.settings[n]===!0||f.settings[n]===!1)}),!e&&(!o||n.userSetting.length===1)||s){n.callback({sendEmailNotification:e&&!!f.settings[n.userSetting[0]],sendSmsNotification:o&&!!f.settings[n.userSetting[1]]});return}h={showSendEmailNotification:e,showSendSmsNotification:o&&n.showSendSmsNotification,showRememberSendNotification:!0,sendEmailNotification:e,sendSmsNotification:!1,rememberSendNotification:!1};r=t({template:"message-box/confirm-client-notification.html",show:!1,scope:i.$new()});r.$promise.then(function(){r.$scope.dlgConfig=h;r.$scope.onNoClick=function(){c();n.callback({sendEmailNotification:!1,sendSmsNotification:!1})};r.$scope.onYesClick=function(){c();n.callback({sendEmailNotification:r.$scope.dlgConfig.sendEmailNotification,sendSmsNotification:r.$scope.dlgConfig.sendSmsNotification})};r.show()})}function s(r,u){var f=t({template:"message-box/pct-progress-dialog.html",show:!1,scope:angular.extend(i.$new(),{title:null,message:null,progressPct:0})});return f.$promise.then(function(){f.$scope.title=n.instant(r);f.$scope.message=n.instant(u);f.$scope.progressPct=0;f.show()}),function(n){f.$scope.progressPct=Math.ceil(n);n>=100&&f.hide()}}return{showPctProgress:s,showMessageDlg:e,showConfirmClientNotification:o}}]);wbApp.factory("notificationSvc",["$timeout",function(n){function f(n,i){t({type:"success",title:n,content:i})}function e(n,i){t({type:"warning",title:n,content:i})}function o(n,i){t({type:"danger",title:n,content:i})}function t(t){r.push(t);n(function(){t.show=!1},u)}function s(n){alert(n)}function h(){return r}function c(n){var i="",t;if(!!n&&!!n.errors)for(t=0;t<n.errors.length;t++)i+="<div>"+n.errors[t].message+"<\/div>";if(!!n&&!!n.validationErrors)for(t=0;t<n.validationErrors.length;t++)i+="<div>"+n.validationErrors[t].description+"<\/div>";if(!!n&&!!n.ValidationErrors)for(t=0;t<n.ValidationErrors.length;t++)i+="<div>"+n.ValidationErrors[t].Description+"<\/div>";return!n||!n.title||(i+="<div>"+n.title+"<\/div>"),i}function l(n){i=n}function a(t){i&&n(function(){i(t)})}var u=5e3,r=[],i=null;return{notifyInfo:f,notifyWarning:e,notifyError:o,fatalNotify:s,getQueue:h,translateError:c,advertiseLogin:a,registerAdvertiseCallback:l}}]);wbApp.factory("onlinePaymentConfigurationSvc",["$resource","$q","repositorySvc",function(n,t,i){function f(n){return i.customPost("insert",r,n)}function e(n){return u=null,i.customDelete("delete",r,{id:n})}function o(n){return u=null,i.customPutWithParams("update",r,{id:n.id},n)}function s(n){return i.customGet("get",r,{id:n})}function h(n){return(!u||n)&&(u=i.customGet("getAll",r,{})),u}function c(){return{id:null,providerType:0,isTestConfig:!0,country:"CZ",secret:{clientCertificateBase64:null,merchantID:null,merchantPassword:null}}}var r=n("/restapi/online-payment-configurations/:id",{},{get:{method:"GET",url:"/restapi/online-payment-configurations/:id"},getAll:{method:"GET",isArray:!0,url:"/restapi/online-payment-configurations"},update:{method:"PUT",url:"/restapi/online-payment-configurations/:id"},insert:{method:"POST",url:"/restapi/online-payment-configurations"},"delete":{method:"DELETE",url:"/restapi/online-payment-configurations/:id"}}),u;return{getAllAsync:h,getAsync:s,insert:f,update:o,remove:e,createNew:c}}]);wbApp.factory("pricingSvc",["$resource","$q","repositorySvc",function(n,t,i){function e(n,t){return angular.equals(u,n)?r:(r=f.calculateReservationPrice(n,function(){},function(n){t||i.defaultErrorHandler(n)}),u=n,r)}var f=n("/restapi/pricing/:id",{},{calculateReservationPrice:{method:"POST",url:"/restapi/pricing/calculate-reservation-price"}}),u=null,r=null;return{calculateReservationPrice:e}}]);wbApp.factory("proficiencyLevelSvc",["$resource","repositorySvc",function(n,t){function u(){return i||(i=t.get(r,{})),i}function f(n){var t,r;if(i)for(t=0;t<i.length;t++)if(r=i[t],r.id===n)return i[t];return null}var r=n("/Api/ProficiencyLevels/:id",{},{query:{method:"GET",isArray:!0}}),i;return{getAllAsync:u,get:f}}]);wbApp.factory("promotionSvc",["$q","membershipSvc","membershipStudentSvc",function(n,t,i){function r(r,u,f,e,o,s){var a=n.defer(),h={},c=f==="course",l=f==="action",v=t.getAllValidAsync(e,s),y=i.GetByUserValidAsync(r,o,s);return v.$promise.then(function(n){y.$promise.then(function(t){_.forEach(u,function(i){h[i.studentID]=[];_.forEach(n,function(n){var r=_.find(t,{studentID:i.studentID,membershipID:n.id});(r&&r.applyToActions&&l&&r.isValid||r&&r.applyToCourses&&c&&r.isValid||!r&&n.applyToActions&&l||!r&&n.applyToCourses&&c)&&(n.isClientAssignable||s||r)&&h[i.studentID].push({buy:n.isMandatory&&!r,owns:!!r,isMandatory:n.isMandatory,membershipID:n.id,name:n.name,description:n.description,price:r!=null?r.price:n.price,discountPct:r!=null?r.discountPct:n.discountPct,validFrom:r!=null?r.validFrom:n.validFrom,validTo:r!=null?r.validTo:n.validTo})});_.forEach(_.filter(t,{studentID:i.studentID}),function(t){var r=_.find(n,{id:t.membershipID});!r&&t.isValid&&(t.applyToActions&&l||t.applyToCourses&&c)&&h[i.studentID].push({buy:!1,owns:!0,isMandatory:!1,membershipID:t.membershipID,name:t.name,description:t.description,price:t.price,discountPct:t.discountPct,validFrom:t.validFrom,validTo:t.validTo})})});a.resolve(h)})}),h.$promise=a.promise,h}return{getPromotionsByStudentsAsync:r}}]);wbApp.factory("referenceSourceSvc",["$resource","$q","repositorySvc",function(n,t,i){function e(n){return(!u||n)&&(u=i.get(f,{}),r=null),u}function o(n,t,e){function o(n){!r||(r[n.id]=n);!t||t(n)}i.insert(f,u,n,o,e)}function s(n,t,e){function o(n){!r||(r[n.id]=n);!t||t(n)}i.update(f,u,n,o,e)}function h(n,t){function e(){!r||delete r[n.id]}i.remove(f,u,n,e,t)}function c(n){return u?(r||(r={},angular.forEach(u,function(n){this[n.id]=n},r)),r[n]):null}function l(n,r){var u=t.defer(),e=i.customGet("getReferenceSourceTimeDevelopment",f,{fromDate:n,toDate:r});return e.$promise.then(function(n){var e=[],t,h,o,i,r,s,f;for(e.push({id:"date",label:"Date",type:"date",p:{}}),t=0;t<n.referenceSources.length;t++)h=n.referenceSources[t],e.push({id:"c_"+t,label:h.name,type:"number",p:{}});for(o=[],i=0;i<n.days.length;i++){for(r=n.days[i],s={c:[{v:r.day}]},f=0;f<r.counts.length;f++)s.c.push({v:r.counts[f]});o.push(s)}u.resolve({cols:e,rows:o})},function(n){u.reject(n)}),u.promise}var f=n("/Api/ReferenceSource/:id",{},{query:{method:"GET",isArray:!0},insert:{method:"POST",url:"/Api/ReferenceSource/Insert"},update:{method:"POST",url:"/Api/ReferenceSource/Update"},"delete":{method:"POST",url:"/Api/ReferenceSource/Delete"},getReferenceSourceTimeDevelopment:{method:"GET",url:"/Api/ReferenceSource/GetReferenceSourceTimeDevelopment",isArray:!1}}),u=null,r=null;return{getAllAsync:e,insert:o,update:s,remove:h,get:c,getReferenceSourceTimeDevelopment:l}}]);wbApp.factory("repositorySvc",["$translate","notificationSvc",function(n,t){function r(n,t){n&&n.push(t)}function f(n,t,i){var u,r;if(n)for(u=i||"id",r=0;r<n.length;r++)if(n[r][u]===t){n.splice(r,1);break}}function i(n,t,i){var u,r,f;if(n)for(u=i||"id",r=0;r<n.length;r++)if(n[r][u]===t[u]){f=n[r];angular.copy(t,f);break}}function o(n,t,i){return e("query",n,t,i)}function e(i,r,u,f,e){return r[i](u,function(n){!f||f(n)},function(i){!e||e(i);i.status===401?t.fatalNotify(n.instant("TXT_ALERT_UNAUTHORIZED")):i.status===403?t.fatalNotify(n.instant("TXT_ALERT_TITLE_FORBIDEN")):t.notifyError(n.instant("TXT_ALERT_TITLE_ENTITY_GET_ERROR"),t.translateError(i.data))})}function s(i,r,u,f){function e(i){!u||u(i);t.notifyInfo(n.instant("TXT_ALERT_TITLE_DATA_SAVED"))}function o(i){i.status===401?t.fatalNotify(n.instant("TXT_ALERT_UNAUTHORIZED")):i.status===403?t.fatalNotify(n.instant("TXT_ALERT_TITLE_FORBIDEN")):f?f(i.data):t.notifyError(n.instant("TXT_ALERT_TITLE_DATA_SAVE_ERROR"),t.translateError(i.data))}return i.saveAll(r,e,o)}function h(u,f,e,o,s,h){return u.save(e,function(u){!o||o(u);var s=h||"id";e[s]<=0?r(f,u):i(f,u,h);t.notifyInfo(n.instant("TXT_ALERT_TITLE_ENTITY_SAVED"))},function(i){i.status===401?t.fatalNotify(n.instant("TXT_ALERT_UNAUTHORIZED")):i.status===403?t.fatalNotify(n.instant("TXT_ALERT_TITLE_FORBIDEN")):s?s(i.data):t.notifyError(n.instant("TXT_ALERT_TITLE_ENTITY_SAVE_ERROR"),t.translateError(i.data))})}function c(i,u,f,e,o,s){return i.insert(f,function(i){!e||e(i);var f=!0;s&&typeof s=="function"&&(f=s(i));f&&r(u,i);t.notifyInfo(n.instant("TXT_ALERT_TITLE_ENTITY_SAVED"))},function(i){i.status===401?t.fatalNotify(n.instant("TXT_ALERT_UNAUTHORIZED")):i.status===403?t.fatalNotify(n.instant("TXT_ALERT_TITLE_FORBIDEN")):o?o(i.data):t.notifyError(n.instant("TXT_ALERT_TITLE_ENTITY_SAVE_ERROR"),t.translateError(i.data))})}function l(r,u,f,e,o,s,h){return r.update(f,function(r){!e||e(r);i(u,r,s);h||t.notifyInfo(n.instant("TXT_ALERT_TITLE_ENTITY_SAVED"))},function(i){i.status===401?t.fatalNotify(n.instant("TXT_ALERT_UNAUTHORIZED")):i.status===403?t.fatalNotify(n.instant("TXT_ALERT_TITLE_FORBIDEN")):o?o(i.data):t.notifyError(n.instant("TXT_ALERT_TITLE_ENTITY_SAVE_ERROR"),t.translateError(i.data))})}function a(i,r,u,e,o,s,h){var c=!h?u.id:u[h];return i.delete(s?s:{id:c},function(i){f(r,c,h);!e||e(i);t.notifyInfo(n.instant("TXT_ALERT_TITLE_ENTITY_REMOVED"))},function(i){i.status===401?t.fatalNotify(n.instant("TXT_ALERT_UNAUTHORIZED")):i.status===403?t.fatalNotify(n.instant("TXT_ALERT_TITLE_FORBIDEN")):o?o(i):t.notifyError(n.instant("TXT_ALERT_TITLE_ENTITY_REMOVE_ERROR"),t.translateError(i.data))})}function v(i,r,u){i.status===401?t.fatalNotify(n.instant("TXT_ALERT_UNAUTHORIZED")):i.status===403?t.fatalNotify(n.instant("TXT_ALERT_TITLE_FORBIDEN")):r?r(i.data):t.notifyError(n.instant(u||"TXT_ALERT_TITLE_DATA_SAVE_ERROR"),t.translateError(i.data))}function y(i,r){!r||r(i);t.notifyInfo(n.instant("TXT_ALERT_TITLE_ENTITY_SAVED"))}function p(i,r){!r||r(i);t.notifyInfo(n.instant("TXT_ALERT_TITLE_ENTITY_REMOVED"))}function w(i,r,u,f,e,o){return r[i](u,function(i){!f||f(i);o||t.notifyInfo(n.instant("TXT_ALERT_TITLE_CHANGES_SAVED"))},function(i){i.status===401?t.fatalNotify(n.instant("TXT_ALERT_UNAUTHORIZED")):i.status===403?t.fatalNotify(n.instant("TXT_ALERT_TITLE_FORBIDEN")):e?e(i.data):t.notifyError(n.instant("TXT_ALERT_TITLE_CHANGES_SAVE_ERROR"),t.translateError(i.data))})}function b(i,r,u,f,e,o,s){return r[i](u,f,function(i){!e||e(i);s||t.notifyInfo(n.instant("TXT_ALERT_TITLE_CHANGES_SAVED"))},function(i){i.status===401?t.fatalNotify(n.instant("TXT_ALERT_UNAUTHORIZED")):i.status===403?t.fatalNotify(n.instant("TXT_ALERT_TITLE_FORBIDEN")):o?o(i.data):t.notifyError(n.instant("TXT_ALERT_TITLE_CHANGES_SAVE_ERROR"),t.translateError(i.data))})}function k(i,r,f,e,o,s){return r[i](f,e,function(i){!o||o(i);t.notifyInfo(n.instant("TXT_ALERT_TITLE_CHANGES_SAVED"))},function(i){i.status===401?t.fatalNotify(n.instant("TXT_ALERT_UNAUTHORIZED")):i.status===403?t.fatalNotify(n.instant("TXT_ALERT_TITLE_FORBIDEN")):s?s(u(i)):t.notifyError(n.instant("TXT_ALERT_TITLE_CHANGES_SAVE_ERROR"),t.translateError(u(i)))})}function d(i,r,u,f,e){return r[i](u,function(i){!f||f(i);t.notifyInfo(n.instant("TXT_ALERT_TITLE_ENTITY_REMOVED"))},function(i){i.status===401?t.fatalNotify(n.instant("TXT_ALERT_UNAUTHORIZED")):i.status===403?t.fatalNotify(n.instant("TXT_ALERT_TITLE_FORBIDEN")):e?e(i.data):t.notifyError(n.instant("TXT_ALERT_TITLE_ENTITY_REMOVE_ERROR"),t.translateError(i.data))})}function u(n){return!!n&&!!n.title?{message:n.title}:n.data}return{save:h,saveAll:s,insert:c,update:l,remove:a,get:o,customGet:e,entityInserted:r,entityRemoved:f,entityUpdated:i,defaultErrorHandler:v,defaultSuccessSaveHandler:y,defaultSuccessRemoveHandler:p,customPost:w,customPostWithParams:b,customPutWithParams:k,customDelete:d,extractErrorData:u}}]);wbApp.factory("reservationsSvc",["$resource","$q","repositorySvc",function(n,t,i){function e(n){return u=null,i.customPost("insert",r,n)}function o(n){return u=null,i.customDelete("delete",r,{id:n})}function s(n){return u=null,i.customPutWithParams("update",r,{id:n.id},n)}function h(n,u,f,e){return t(function(t,o){var s=i.customGet("getAllByRangeAndUser",r,{userId:n,from:u,to:f});s.$promise.then(function(n){t(_.map(n,function(n){var t=_.find(e,{id:n.employeeId});return{startDate:n.reservationStartDate,endDate:n.reservationEndDate,placeId:n.placeId,teacherName:!t?"":t.fullName,filledCapacity:n.studentIds.length+"",subject:n.domain.name}}))},function(n){o(n)})})}function c(n,e,o){var s=moment();return u&&f.placeId==n&&moment(f.fromDate).isSame(e)&&moment(f.toDate).isSame(o)&&!f.loadedAt.isBefore(s)||(f={placeId:n,fromDate:e,toDate:o,loadedAt:moment().add(10,"seconds")},u=t(function(t,u){var f=i.customGet("getAllByRangeAndPlace",r,{expanded:"Students,Invoices",placeId:n,from:e,to:o});f.$promise.then(function(n){t(n)},function(n){u(n)})})),u}function l(n,u,f){return t(function(t,e){var o=i.customGet("getAllByRangeAndStudent",r,{expanded:"Invoices",studentId:n,from:u,to:f});o.$promise.then(function(n){t(n)},function(n){e(n)})})}function a(n){return t(function(t,u){var f=i.customGet("getByInvoice",r,{expanded:"Invoices",invoiceId:n});f.$promise.then(function(n){t(n)},function(n){u(n)})})}var r=n("/restapi/reservations/:id",{},{insert:{method:"POST",url:"/restapi/reservations"},update:{method:"PUT",url:"/restapi/reservations/:id"},"delete":{method:"DELETE",url:"/restapi/reservations/:id"},getAllByRangeAndPlace:{method:"GET",isArray:!0,url:"/restapi/reservations/range/find-by-place"},getAllByRangeAndUser:{method:"GET",isArray:!0,url:"/restapi/reservations/range/find-by-user"},getAllByRangeAndStudent:{method:"GET",isArray:!0,url:"/restapi/reservations/range/find-by-student"},getByInvoice:{method:"GET",isArray:!1,url:"/restapi/reservations/find-by-invoice"}}),u=null,f={placeId:null,fromDate:null,toDate:null};return{insert:e,remove:o,update:s,getAllByRangeAndUser:h,getAllByRangeAndPlace:c,getAllByRangeAndStudent:l,getByInvoice:a}}]);wbApp.factory("securitySvc",["$http","$document",function(n,t){for(var f=securityFeatures,r=loggedInUser,i={},u=0;u<f.length;u++)i[f[u]]=!0;return{isInRole:function(n){var t,r;if(angular.isArray(n)){for(t=0;t<n.length;t++)if(r=n[t],i[r])return!0;return!1}return i[n]?!0:!1},isAuthenticated:function(){return r.isAuthenticated},loggedInUser:function(){return r.isAuthenticated?r:{}},logout:function(){t.find("#logoutForm").submit()},roles:i}}]);wbApp.factory("semesterSvc",["$resource","$q","localStorageService","repositorySvc",function(n,t,i,r){function s(){var n=new f;return n.active=!1,n.showInCourses=!0,n.showInKindergarten=!0,n}function o(n){return _.orderBy(n,function(n){return n.active?new Date(1970,0,1):n.startDate},!1)}function e(n){return(!u||n)&&(u=r.get(f,{})),u}function h(){var n=[];return n.$promise=t(function(t,i){var r=e();r.$promise.then(function(){n.push.apply(n,o(_.filter(r,function(n){return(n.openForRegistration||n.preferredBookingEffectiveIsActive)&&n.showInCourses})));t(n)},i)}),n}function c(){var n=[];return n.$promise=t(function(t,i){var r=e();r.$promise.then(function(){n.push.apply(n,o(_.filter(r,{showInAttendance:!0,showInCourses:!0})));t(n)},i)}),n}function l(n){i.isSupported&&!!n&&i.set("defaultSemesterID",n)}function a(){var n=e(),r=t.defer(),u=null;return i.isSupported&&(u=i.get("defaultSemesterID")),n.$promise.then(function(){for(var i,t=0;t<n.length;t++)if(i=n[t],!u){if(i.active){r.resolve(n[t]);return}}else if(i.id==u){r.resolve(n[t]);return}if(n.length>0){r.resolve(n[0]);return}r.resolve(null)}),r.promise}function v(){var n=e(),i=t.defer();return n.$promise.then(function(){for(var r,t=0;t<n.length;t++)if(r=n[t],r.active){i.resolve(n[t]);return}if(n.length>0){i.resolve(n[0]);return}i.resolve(null)}),i.promise}function y(n){var t,i;if(u)for(t=0;t<u.length;t++)if(i=u[t],i.id==n)return i;return null}function p(n){var i=t.defer();return e().$promise.then(function(t){angular.forEach(t,function(t){if(t.id==n){i.resolve(t);return}});i.resolve(null)},function(n){i.reject(n)}),i.promise}function w(n){return f.courseSummary({semesterID:n})}function b(n,t,i){r.insert(f,u,n,t,i)}function k(n,t,i){r.update(f,u,n,t,i,"id")}function d(n,t){r.remove(f,u,n,null,t,null,"id")}var f=n("/Api/Semesters/:id",{openForRegistrationOnly:!1},{courseSummary:{method:"GET",isArray:!1,url:"/Api/Semesters/GetCourseSummary",params:{}},insert:{method:"POST",url:"/Api/Semesters/Insert"},update:{method:"POST",url:"/Api/Semesters/Update"},"delete":{method:"POST",url:"/Api/Semesters/Delete"}}),u=null;return{newModel:s,getAllAsync:e,getActiveAsync:v,get:y,getAsync:p,getCourseSummaryAsync:w,getDefaultAsync:a,setDefault:l,getAllOpenForRegistrationAsync:h,getAllShowInAttendancenAsync:c,insert:b,update:k,remove:d}}]);wbApp.factory("studentSvc",["$resource","repositorySvc","tenantSettingSvc",function(n,t,i){function e(n){var t;return t=!!n&&n.nationality?n.nationality:i.settings.defaultNationality,{gender:"M",userID:!n?null:n.id,isNew:!0,nationality:t}}function o(){var n=t.customGet("getAll",r);return n.$promise.then(function(n){_.forEach(n,function(n){n.rfidCardIDsStr=_.join(n.rfidCardIDs,", ")})}),n}function s(n,i,u,f,e,o){return t.customGet("getStudentsWithCompGrpLookupQuery",r,{query:n,pageSize:i,pageNo:u,semesterID:f},e,o)}function h(n,i,u,f){return t.customGet("getStudentsWithCompGrpLookupID",r,{studentCompGrpID:n,semesterID:i},u,f)}function c(){return t.customGet("getCurrent",r)}function l(n,i,u){return t.saveAll(r,n,i,u)}function a(n){return t.customGet("getByID",r,{studentID:n})}function v(n,i){return(!u||f!==n||i)&&(u=t.customGet("getAllByUserID",r,{userID:n}),f=n),u}function y(n,i,u,f){return t.insert(r,f,n,i,u)}function p(n,i,u,f){return t.update(r,f,n,i,u)}function w(n,i,u){return t.remove(r,u,n,null,i,{studentID:n.id,membershipID:n.membershipID})}var r=n("/Api/Students/:id",{},{getAll:{method:"GET",isArray:!0,url:"/Api/Students/GetAll"},getCurrent:{method:"GET",isArray:!0,url:"/Api/Students/GetCurrent"},getAllByUserID:{method:"GET",isArray:!0,url:"/Api/Students/GetAllByUserID"},saveAll:{method:"POST",isArray:!0,url:"/Api/Students/SaveCurrent"},insert:{method:"POST",url:"/Api/Students/Insert"},update:{method:"POST",url:"/Api/Students/Update"},"delete":{method:"POST",url:"/Api/Students/Delete"},getByID:{method:"GET",url:"/Api/Students/GetLookupID"},getStudentsWithCompGrpLookupQuery:{method:"GET",isArray:!0,url:"/Api/Students/GetStudentsWithCompGrpLookupQuery"},getStudentsWithCompGrpLookupID:{method:"GET",url:"/Api/Students/GetStudentsWithCompGrpLookupID"}}),u,f;return{createNew:e,getAll:o,getCurrentAsync:c,getAllByUserIDAsync:v,saveAll:l,insert:y,update:p,remove:w,getByIDAsync:a,getStudentsWithCompGrpLookupQuery:s,getStudentsWithCompGrpLookupID:h}}]);wbApp.factory("subjectsSvc",["$resource","$q","repositorySvc","tenantInfoSvc",function(n,t,i,r){function a(n){return{id:0,name:"",description:"",subjectCategoryID:n||1,isNew:!0}}function v(n,i){var e=!i?0:i,o=c(n),u=[],f=t.defer();return u.$promise=f.promise,o.$promise.then(function(n){angular.forEach(n,function(n){var t=!1;t=n.franchiseCentralTenantID?!!_.filter(r.info.franchiseCentrals,{tenantID:n.franchiseCentralTenantID,isActive:!0}).length||n.id===e:!0;t&&u.push(n)});f.resolve(u)},function(n){f.reject(n)}),u}function s(n){return(!f||n)&&(f=i.get(u,{})),f}function h(n,i){var f=s(i),r=[],u=t.defer();return r.$promise=u.promise,f.$promise.then(function(t){angular.forEach(t,function(t){t.subjectCategoryID===n&&r.push(t)});u.resolve(r)},function(n){u.reject(n)}),r}function c(n){return(!e||n)&&(e=h(1,n)),e}function y(n){return(!o||n)&&(o=h(2,n)),o}function p(n,t,r){function s(n){n.subjectCategoryID===1&&i.entityInserted(e,n);n.subjectCategoryID===2&&i.entityInserted(o,n);t&&t(n)}i.insert(u,f,n,s,r)}function w(n,t,r){function s(n){n.subjectCategoryID===1&&i.entityUpdated(e,n);n.subjectCategoryID===2&&i.entityUpdated(o,n);t&&t(n)}i.update(u,f,n,s,r)}function b(n,t){function r(){n.subjectCategoryID===1&&i.entityRemoved(e,n.id);n.subjectCategoryID===2&&i.entityRemoved(o,n.id)}i.remove(u,f,n,r,t)}function l(n){return i.customGet("getAllFranchiseCentralCourseSubjects",u,{franchiseCentralTenantID:n})}function k(n,i){var r=t.defer(),u=l(n);return u.$promise.then(function(n){var t=_.find(n,{id:i});r.resolve(t)},function(n){r.reject(n)}),r.promise}function d(){return i.customGet("getAllActiveFranchiseSubjects",u,{})}var u=n("/Api/Subjects/GetAll",{},{query:{method:"GET",isArray:!0},update:{method:"POST",url:"/Api/Subjects/Update"},insert:{method:"POST",url:"/Api/Subjects/Insert"},"delete":{method:"POST",url:"/Api/Subjects/Delete"},getAllFranchiseCentralCourseSubjects:{method:"GET",url:"/Api/Subjects/getAllFranchiseCentralCourseSubjects",isArray:!0},getAllActiveFranchiseSubjects:{method:"GET",url:"/Api/Subjects/getAllActiveFranchiseSubjects",isArray:!0}}),f,e,o;return{getAllFranchiseCentralCourseSubjects:l,getFranchiseCentralSubject:k,getAllAsync:s,getAllForCoursesAsync:c,getAllForActionsAsync:y,getAllWithActiveFranchiesesAsync:v,insert:p,update:w,remove:b,createNew:a,getAllActiveFranchiseSubjects:d}}]);wbApp.factory("surveySvc",["$resource","$q","repositorySvc",function(n,t,i){function o(){var n=new u;return n.active=!0,n.isDefault=!1,n.maxContactsPerClient=3,n.surveyQuestions=[e()],n}function e(){return{surveyQuestionTypeID:1,allowCustomNote:!0,weight:100}}function f(){return r||(r=i.get(u,{})),r}function s(){var n=f();return t(function(t,i){n.$promise.then(function(n){t(_.find(n,{isDefault:!0,active:!0,isDeleted:!1}))},function(n){i(n)})})}function h(n){var u=f(n),i=[],r=t.defer();return i.$promise=r.promise,u.$promise.then(function(n){angular.forEach(n,function(n){n.isDeleted||i.push(n)});r.resolve(i)},function(n){r.reject(n)}),i}function c(n){var u=f(),i=[],r=t.defer();return i.$promise=r.promise,u.$promise.then(function(t){angular.forEach(t,function(t){(!t.isDeleted&&t.active||t.surveyID===n)&&i.push(t)});r.resolve(i)},function(n){r.reject(n)}),i}function l(n,t,f){i.insert(u,r,n,t,f)}function a(n,t,f){i.update(u,r,n,t,f,"surveyID")}function v(n,t){return i.remove(u,r,n,null,t,null,"surveyID")}var u=n("/Api/Surveys/GetAll",{},{query:{method:"GET",isArray:!0},insert:{method:"POST",url:"/Api/Surveys/Insert"},update:{method:"POST",url:"/Api/Surveys/Update"},"delete":{method:"POST",url:"/Api/Surveys/Delete"}}),r;return{newModel:o,getAllAsync:f,getAllNonDeleted:h,getAllActiveAsync:c,insert:l,update:a,remove:v,newQuestion:e,getDefaultAsync:s}}]);wbApp.factory("tenantInfoSvc",[function(){var n=tenantInfo;return{info:n}}]);wbApp.factory("tenantSettingSvc",["$resource","$q","repositorySvc",function(n,t,i){function e(){var n=null;return u?(r.$promise||(n=t.defer(),r.$promise=n.promise,n.resolve(r)),r):(n=t.defer(),r={},r.$promise=n.promise,i.customGet("get",f,{},function(t){angular.extend(r,t);u=!0;n.resolve(r)},function(t){n.reject(t)}),r)}function o(n,t,e){function o(n){angular.extend(r,n);u=!0;!t||t(n)}u=!1;i.update(f,null,n,o,e)}function s(){return t(function(n,t){i.customPost("triggerPortalUpdate",f,{},n,t)})}var f=n("/Api/TenantSettings/:id",{},{get:{method:"GET",isArray:!1,url:"/Api/TenantSettings/Get"},update:{method:"POST",url:"/Api/TenantSettings/Update"},triggerPortalUpdate:{method:"POST",url:"/Api/TenantSettings/TriggerPortalUpdate"}}),r=tenantSetting,u=!0;return{settings:r,isCourseRegistrationNotificationEnabled:function(){return r.sendEmailsToClients&&!r.disableAllEmails&&!r.disableAllEmailsExceptUserRegistration&&r.enableStudentCourseRegistrationNotification},isFullCourseInterestNotificationEnabled:function(){return r.sendEmailsToClients&&!r.disableAllEmails&&!r.disableAllEmailsExceptUserRegistration&&r.enableFullCourseInterestNotification},getAsync:e,update:o,triggerPortalUpdate:s}}]);wbApp.factory("terminalSvc",["$resource","$q","repositorySvc","localStorageService","securitySvc",function(n,t,i,r,u){function s(n){return(!e||n)&&(e=i.customGet("getAll",o)),e}function c(n,t,r){i.insert(o,e,{model:n},t,r,"terminalID")}function l(n,t,r){i.update(o,e,{model:n},t,r,"terminalID")}function a(n,t,r){i.remove(o,e,{terminalID:n.terminalID},t,r,{terminalID:n.terminalID},"terminalID")}function v(){return{terminalID:0,fromAge:0,toAge:199,buildIn:!1}}function h(){var n=t.defer(),i;return f||(f={terminalID:null,isDisabled:!0,isRequired:!1,isVisible:!1,$promise:n.promise}),i=s(),i.$promise.then(function(t){if(f.isVisible=t.length>0,f.isRequired=t.length>0,f.isDisabled=t.length<=1||!u.isInRole("Terminal.Select"),t.length===1)f.terminalID=t[0].terminalID;else{var i=r.get("wb_terminalID");!i||(_.find(t,{terminalID:i})?f.terminalID=i:r.remove("wb_terminalID"))}n.resolve(f)},function(t){f.isVisible=!1;f.isRequired=!1;f.isDisabled=!0;n.reject(t)}),f}function y(n){n.terminalID?r.set("wb_terminalID",n.terminalID):r.remove("wb_terminalID")}function p(){return f||(f=h()),t(function(n,t){f.$promise.then(function(t){n(t.terminalID)},function(n){t(n)})})}var o=n("/Api/Terminals/:id",{},{getAll:{method:"GET",isArray:!0,url:"/Api/Terminals/GetAll"},update:{method:"POST",url:"/Api/Terminals/Update"},insert:{method:"POST",url:"/Api/Terminals/Insert"},"delete":{method:"POST",url:"/Api/Terminals/Delete"}}),e,f=null;return{getAllAsync:s,insert:c,update:l,remove:a,createNew:v,getTerminalSetting:h,setTerminalSetting:y,getSelectedTerminalID:p}}]);wbApp.factory("uiUtilsSvc",[function(){function i(){if(!t){var i=document.createElement("div");i.className="scrollbar-measure";document.body.appendChild(i);n=i.offsetWidth-i.clientWidth;t=!0;document.body.removeChild(i)}return n}var n=0,t=!1;return{getScrollbarWidth:i}}]);wbApp.factory("urlUtils",["$location","$window",function(n,t){function i(n){n||(n=location.search);n=n.split("+").join(" ");for(var i={},t,r=/[?&]?([^=]+)=([^&]*)/g;t=r.exec(n);)i[decodeURIComponent(t[1])]=decodeURIComponent(t[2]);return i}function f(n){var t="";return angular.forEach(n,function(n,i){i.toLowerCase()==="returnurl"&&(t=n)}),t}function e(n){var t="";return angular.forEach(n,function(n,i){i.toLowerCase()!=="returnurl"&&(t=t?t+"&"+i+"="+n:i+"="+n)}),t}function r(){return window.location.pathname.split("/")}function o(){var n=r();return n&&n.length?n[n.length-1]:""}function u(r,u){var f="",e=i();e[r]=u;_.forEach(e,function(n,t){!n||(f=f?f+"&"+encodeURIComponent(t)+"="+encodeURIComponent(n):encodeURIComponent(t)+"="+encodeURIComponent(n))});f?n.url(n.path()+"?"+f):n.url(n.path());n.replace();t.history.replaceState(null,"any",n.absUrl())}function s(n){u(n,null)}return{getQueryParams:i,getParamsStringWithoutReturnUrl:e,getUrlParts:r,getLastUrlPart:o,setUrlParam:u,removeUrlParam:s,getReturnUrl:f}}]);wbApp.factory("userSettingSvc",["$resource","$q","repositorySvc",function(n,t,i){function f(){var n=t.defer();return r.$promise=n.promise,i.customGet("get",u,{},function(t){angular.extend(r,t);n.resolve(r)},function(t){n.reject(t)}),r}function e(n,t,f){i.customPost("save",u,n||r,function(n){angular.extend(r,n);t&&t(n)},f)}var u=n("/Api/UserSetting/Get",{},{get:{method:"GET",isArray:!1,url:"/Api/UserSetting/Get"},save:{method:"POST",isArray:!1,url:"/Api/UserSetting/Save"}}),r={};return f(),{getAsync:f,settings:r,saveAsync:e}}]);wbApp.factory("userSvc",["$resource","$translate","$q","$timeout","repositorySvc","notificationSvc","tenantSettingSvc",function(n,t,i,r,u,f,e){function c(){return u.customGet("getConsentsInfo",o,{})}function l(){return{securityRoleID:3,allowEmailContact:!0,isNew:!0,nationality:e.settings.defaultNationality}}function h(n){return s&&!n||(s=u.get(o,{})),s}function a(n){return i(function(t,i){var r=h(n);r.$promise.then(function(n){t(_.map(n,function(n){return{id:n.id+"",fullName:n.fullName}}))},function(n){i(n)})})}function v(n){return u.customGet("getByID",o,{userID:n})}function y(n){return u.customGet("getByIDFull",o,{userID:n})}function p(){return u.customGet("getCurrent",o)}function w(n,t,i){return u.insert(o,s,n,t,i)}function b(n,t,i,r){return u.update(o,s,n,t,i,"id",r)}function k(n,t){return u.remove(o,s,n,null,t)}function d(n,r,e){function c(){f.notifyInfo(t.instant("TXT_ALERT_TITLE_USER_REGISTERED"));s.resolve(t.instant("TXT_ALERT_TITLE_USER_REGISTERED"))}function l(n){u.defaultErrorHandler(n,null);s.reject(n)}var s=i.defer(),h={user:angular.copy(n),students:r,password:e.password};return h.user.userName=e.userName,o.register(h,c,l),s.promise}function g(n,t,i,r){return u.customPost("anonymize",o,{id:n,anonymizeTaxDocuments:t},i,r)}var o=n("/Api/Users/:id",{},{query:{method:"GET",isArray:!0},getCurrent:{method:"GET",url:"/Api/Users/GetCurrent"},update:{method:"POST",url:"/Api/Users/Update"},insert:{method:"POST",url:"/Api/Users/Insert"},"delete":{method:"POST",url:"/Api/Users/Delete"},register:{method:"POST",url:"/Api/Users/RegisterNewUser"},getByID:{methof:"GET",url:"/Api/Users/GetLookupID"},getByIDFull:{methof:"GET",url:"/Api/Users/Get"},getConsentsInfo:{method:"GET",isArray:!0,url:"/Api/Users/GetConsentsInfo"},anonymize:{method:"POST",url:"/Api/Users/Anonymize"}}),s;return{createNew:l,getAllAsync:h,getCurrentAsync:p,insert:w,update:b,remove:k,registerAsync:d,getByIDAsync:v,getByIDFull:y,getConsentsInfo:c,anonymize:g,getAllBrief:a}}]);webooker_courses_models=webooker_courses_models||{},function(n){n.CourseRegistration=function(t){this.courseRegistrationID=t.courseRegistrationID;this.courseID=t.courseID;this.studentID=t.studentID;this.studentName=t.studentName;this.studentSurname=t.studentSurname;this.studentMiddleName=t.studentMiddleName;this.studentBirthday=t.studentBirthday;this.price=t.price;this.payments=_.transform(t.payments||[],function(t,i){t.push(new n.courseRegistrationPayment(i))},[]);this.registeredAttendance=(t.registeredAttendance||[]).slice();this.contactPhone=t.contactPhone||null;this.contactEmail=t.contactEmail||null;this.registrationDate=t.registrationDate;this.notes=t.notes;this.notificationSent=t.notificationSent;this.preAmendsCount=t.preAmendsCount;this.timeBoundAmendCount=t.timeBoundAmendCount;this.timeBoundAmendExpiration=t.timeBoundAmendExpiration;this.attendantHealth=t.attendantHealth;this.parentFullName=t.parentFullName||null;this.parentID=t.parentID||0;this.tenantID=t.tenantID;this.invoice=t.invoice;this.invoiceID=t.invoiceID;this.semesterID=t.semesterID;this.semesterName=t.semesterName;this.courseFullName=t.courseFullName;this.firstDate=t.firstDate;this.allowMultiAttendance=t.allowMultiAttendance;this.reservedPlaces=t.reservedPlaces;this.health=t.health;this.selfAssessedProficiencyLevelID=t.selfAssessedProficiencyLevelID;this.paymentsSum=t.paymentsSum;this.arrear=t.arrear;this.studentFullName=t.studentFullName;this.studentAge=t.studentAge;this.smsCode=t.smsCode;this.isNew=!!t.isNew;this.attend=!!t.attend;this.$initialized=!1};n.CourseRegistration.prototype.initialize=function(n,t,i,r,u,f,e,o,s){var h=this;return h.$initialized=!0,h.$allowClientLessonSelection=f.allowClientLessonSelection,n(function(c,l){var v,y,p,k,d,b,w,a;h.attend=!h.isNew;v=[];y=null;h.courseRegistrationID?(y=t.getLatestByCourseRegistration(h.courseRegistrationID),v.push(y.$promise)):y={lineItems:[]};p=h.registrationDate||new Date;k=p;h.registeredAttendance.length&&(d=_.sortBy(h.registeredAttendance,"startDate"),p=d[0].startDate,b=_.filter(d,{courseAttendanceType:0}),k=b&&b.length?b[0].startDate:p);w=null;a=null;h.parentID&&h.studentID&&(w=i.getPromotionsByStudentsAsync(h.parentID,[{studentID:h.studentID}],!e?"course":"action",p,k,o),v.push(w.$promise),a=r.getStudentCourseAttendanceByUser(h.courseID,h.studentID,h.parentID,!0),v.push(a.$promise));n.all(v).then(function(){var n=[],t,i;angular.forEach(h.registeredAttendance,function(t){n.push(new webooker_courses_models.CourseRegistrationAttendance(t))});h.registeredAttendance.length=0;h.registeredAttendance.push.apply(h.registeredAttendance,n);a&&(t=moment(),i=_.zipObject(_.map(a,"courseScheduleID"),a),_.forEach(h.registeredAttendance,function(n){var u=n.courseScheduleID,r=i[u];r&&(n.courseAttendanceType=r.attendanceType,n.courseAttendanceStatus=r.attendanceStatus,n.oldCourseAttendanceType=r.attendanceType,n.oldCourseAttendanceStatus=r.attendanceStatus,n.attendanceCount=r.attendanceCount);n.isDisabled||h.courseRegistrationID||!moment(n.startDate).isAfter(t)||s||(n.isRegistered=!0)}));h.invoice=new webooker_courses_models.CourseRegistrationInvoice(u,f,h.registeredAttendance,!w?[]:w[h.studentID]||[],y);h.invoice.$courseRegistration=h;!e||!h.registeredAttendance||!h.registeredAttendance.length||(h.reservedPlaces=h.registeredAttendance[0].attendanceCount);c(h)},l)})};n.CourseRegistration.prototype.preInitNew=function(n,t,i,r,u){var f=this;return n(function(n,e){f.isNew=!0;f.courseID=i.courseID;f.registrationDate=new Date;f.preAmendsCount=i.preAmendsCount;f.timeBoundAmendCount=i.timeBoundAmendCount;f.timeBoundAmendExpiration=i.timeBoundAmendExpiration;f.allowMultiAttendance=i.allowMultiAttendance;f.reservedPlaces=1;var o=moment();t.getAllAsync(i.courseID).$promise.then(function(t){_.forEach(t,function(n){var t=!r?moment(n.startDate).isAfter(o):!0;u&&(t=!1);f.registeredAttendance.push({courseScheduleID:n.courseScheduleID,startDate:n.startDate,endDate:n.endDate,isRegistered:t,courseAttendanceType:t?0:null,courseAttendanceStatus:t?0:null,attendanceNotes:null,attendanceCount:1})});n(f)},e)})};n.CourseRegistration.prototype.toJSON=function(){return{courseRegistrationID:this.courseRegistrationID,courseID:this.courseID,studentID:this.studentID,studentName:this.studentName,studentSurname:this.studentSurname,studentMiddleName:this.studentMiddleName,studentBirthday:this.studentBirthday,price:this.price,payments:this.payments,registeredAttendance:this.registeredAttendance,contactPhone:this.contactPhone,contactEmail:this.contactEmail,registrationDate:this.registrationDate,notes:this.notes,notificationSent:this.notificationSent,preAmendsCount:this.preAmendsCount,timeBoundAmendCount:this.timeBoundAmendCount,timeBoundAmendExpiration:this.timeBoundAmendExpiration,attendantHealth:this.attendantHealth,parentFullName:this.parentFullName,parentID:this.parentID,tenantID:this.tenantID,invoice:this.invoice,semesterID:this.semesterID,semesterName:this.semesterName,courseFullName:this.courseFullName,firstDate:this.firstDate,allowMultiAttendance:this.allowMultiAttendance,reservedPlaces:this.reservedPlaces,health:this.health,selfAssessedProficiencyLevelID:this.selfAssessedProficiencyLevelID,paymentsSum:this.paymentsSum,arrear:this.arrear,studentFullName:this.studentFullName,studentAge:this.studentAge,smsCode:this.smsCode}};n.CourseRegistration.prototype.markErrorAttendance=function(n){var t=n||[];_.forEach(this.registeredAttendance,function(n){n.$hasError=t.indexOf(n.courseScheduleID)===-1?!1:!0})};n.CourseRegistration.prototype.updateCapacityByRefreshedSchedules=function(n){var t=_.zipObject(_.map(n,"courseScheduleID"),n);_.forEach(this.registeredAttendance,function(n){var i=t[n.courseScheduleID];n.updateCapacityByRefreshedSchedule.call(n,i)})};Object.defineProperty(n.CourseRegistration.prototype,"isAllNewSelected",{enumerable:!0,configurable:!0,get:function(){var n=_.reduce(this.registeredAttendance,function(n,t){return n&&(t.isUserEditable?t.isRegistered:!0)},!0);return n&&!!_.find(this.registeredAttendance,{isUserEditable:!0,isRegistered:!0})&&this.isNew},set:function(n){_.forEach(this.registeredAttendance,function(t){t.isUserEditable&&(t.isRegistered=n)})}});Object.defineProperty(n.CourseRegistration.prototype,"isAnySelected",{enumerable:!0,configurable:!0,get:function(){return _.reduce(this.registeredAttendance,function(n,t){return n||t.isUserEditable&&t.isRegistered},!1)&&this.isNew}});Object.defineProperty(n.CourseRegistration.prototype,"isAnySelectable",{enumerable:!0,configurable:!0,get:function(){return _.find(this.registeredAttendance,{isUserEditable:!0})}});Object.defineProperty(n.CourseRegistration.prototype,"attend",{enumerable:!0,configurable:!0,get:function(){return this.$attend||this.isAnySelected&&!!this.$allowClientLessonSelection},set:function(n){this.$attend=n}});Object.defineProperty(n.CourseRegistration.prototype,"isInThePast",{enumerable:!0,configurable:!0,get:function(){return _.reduce(this.registeredAttendance,function(n,t){return n&&t.isInThePast},!0)}});Object.defineProperty(n.CourseRegistration.prototype,"arrearByAmortizationSchedule",{enumerable:!0,configurable:!0,get:function(){return Math.max(this.invoice.totalByamortizationSchedule-this.paymentsSum,0)}})}(webooker_courses_models);webooker_courses_models=webooker_courses_models||{},function(n){n.CourseRegistrationAttendance=function(n){this.courseScheduleID=n.courseScheduleID;this.startDate=n.startDate;this.endDate=n.endDate;this.courseAttendanceType=n.courseAttendanceType;this.courseAttendanceStatus=n.courseAttendanceStatus;this.oldCourseAttendanceType=n.courseAttendanceType;this.oldCourseAttendanceStatus=n.courseAttendanceStatus;this.attendanceNotes=n.attendanceNotes;this.attendanceCount=n.attendanceCount||1;this.$courseRegistrationUserSchedule=null;this.$hasError=!1};Object.defineProperty(n.CourseRegistrationAttendance.prototype,"isRegistered",{enumerable:!0,configurable:!0,get:function(){return this.courseAttendanceType===0},set:function(n){n?this.oldCourseAttendanceType===0?(this.courseAttendanceType=this.oldCourseAttendanceType,this.courseAttendanceStatus=this.oldCourseAttendanceStatus):(this.courseAttendanceType=0,this.courseAttendanceStatus=0):this.oldCourseAttendanceType!==0?(this.courseAttendanceType=this.oldCourseAttendanceType,this.courseAttendanceStatus=this.oldCourseAttendanceStatus):(this.courseAttendanceType=null,this.courseAttendanceStatus=null)}});Object.defineProperty(n.CourseRegistrationAttendance.prototype,"isDisabled",{enumerable:!0,configurable:!0,get:function(){var n=this.courseAttendanceType===1||this.courseAttendanceType===2||this.courseAttendanceType===3;return this.$courseRegistrationUserSchedule&&(n=n||this.$courseRegistrationUserSchedule.freePlaces===0&&!this.isRegistered),n}});Object.defineProperty(n.CourseRegistrationAttendance.prototype,"isInThePast",{enumerable:!0,configurable:!0,get:function(){return moment(this.startDate).isBefore(moment())}});Object.defineProperty(n.CourseRegistrationAttendance.prototype,"isUserEditable",{enumerable:!0,configurable:!0,get:function(){return!this.isInThePast&&!this.isDisabled}});Object.defineProperty(n.CourseRegistrationAttendance.prototype,"hasChanged",{enumerable:!0,configurable:!0,get:function(){return this.oldCourseAttendanceType!==this.courseAttendanceType||this.oldCourseAttendanceStatus!==this.courseAttendanceStatus}});Object.defineProperty(n.CourseRegistrationAttendance.prototype,"freePlaces",{enumerable:!0,configurable:!0,get:function(){return this.$courseRegistrationUserSchedule?this.$courseRegistrationUserSchedule.freePlaces:0}});n.CourseRegistrationAttendance.prototype.toJSON=function(){return{courseScheduleID:this.courseScheduleID,startDate:this.startDate,endDate:this.endDate,courseAttendanceType:this.courseAttendanceType,courseAttendanceStatus:this.courseAttendanceStatus,attendanceNotes:this.attendanceNotes}};n.CourseRegistrationAttendance.prototype.setUserScheduleBinding=function(n){this.$courseRegistrationUserSchedule=n};n.CourseRegistrationAttendance.prototype.updateCapacityByRefreshedSchedule=function(n){this.$courseRegistrationUserSchedule&&n&&(this.$courseRegistrationUserSchedule.origCapacity=n.capacity,this.$courseRegistrationUserSchedule.origFilled=n.filled,this.$hasError&&this.isRegistered&&this.isUserEditable&&(this.isRegistered=!1))}}(webooker_courses_models);webooker_courses_models=webooker_courses_models||{},function(n){n.CourseRegistrationInvoice=function(n,t,i,r,u){var e=this,f,h,o,s,c,l,a,v;for(this.coursePriceSvc=n,this.course=t,this.registeredAttendance=i,this.invoiceDTO=u,this.useAmortizationSchedule=this.course.amortizationScheduleMode==2&&!this.invoiceDTO.invoiceID||!!this.invoiceDTO.amortizationSchedules&&!!this.invoiceDTO.amortizationSchedules.length,this._useAmortizationScheduleOrig=this.useAmortizationSchedule,this.amortizationScheduleSurchargePct=this.course.amortizationScheduleSurchargePct,this.dueDate=null,this.lines=[],f=_.find(u.lineItems,{invoiceLineType:"CourseFee"}),this.lines.push(new webooker_courses_models.CourseRegistrationInvoiceLine(this,"CourseFee",{owns:!!f,buy:!!f,name:f?f.name:"",price:f?f.price:"",discountPct:0,isMandatory:0,membershipID:null,description:null,isValid:!0},f)),h=_.filter(u.lineItems,{invoiceLineType:"Membership"}),angular.forEach(r,function(n){var t=_.find(h,{typeReferenceID:n.membershipID});this.lines.push(new webooker_courses_models.CourseRegistrationInvoiceLine(this,"Membership",{owns:n.owns,buy:n.buy,name:n.name,price:n.price,discountPct:n.discountPct,isMandatory:n.isMandatory,membershipID:n.membershipID,description:n.description,isValid:!0,validFrom:n.validFrom,validTo:n.validTo},t))},this),angular.forEach(h,function(n){var t=_.find(r,{membershipID:n.typeReferenceID});t||this.lines.push(new webooker_courses_models.CourseRegistrationInvoiceLine(this,"Membership",{owns:!0,buy:!0,name:n.name,price:n.price,discountPct:0,isMandatory:!1,membershipID:n.typeReferenceID,description:null,isValid:!1},n))},this),o=_.filter(this.lines,{lineType:"Membership"}),s=0;s<o.length;s++)c=o[s],l=_.find(u.lineItems,{invoiceLineType:"Discount",typeReferenceID:c.membershipID}),this.lines.push(new webooker_courses_models.CourseRegistrationInvoiceLine(this,"Discount",c,l));a=_.filter(u.lineItems,{invoiceLineType:"Discount"});_.forEach(a,function(n){var t=_.find(o,{membershipID:n.typeReferenceID});t||e.lines.push(new webooker_courses_models.CourseRegistrationInvoiceLine(e,"Discount",{owns:!0,buy:!1,name:n.name,price:n.price,discountPct:0,isMandatory:!1,membershipID:n.typeReferenceID,description:null,isValid:!1},n))});v=_.filter(u.lineItems,{invoiceLineType:"ManualAdjustment"});_.forEach(v,function(n){e.lines.push(new webooker_courses_models.CourseRegistrationInvoiceLine(e,"ManualAdjustment",{owns:!!n,buy:!!n,name:n?n.name:"",price:n?n.price:"",discountPct:0,isMandatory:0,membershipID:null,description:null,isValid:!0},n))});this.invoiceLinesOrig=angular.copy(e.lines)};Object.defineProperty(n.CourseRegistrationInvoice.prototype,"noOfRegisteredAttendances",{enumerable:!0,configurable:!0,get:function(){return _.reduce(this.registeredAttendance,function(n,t){return t.isRegistered?n+(t.attendanceCount||1):n},0)}});Object.defineProperty(n.CourseRegistrationInvoice.prototype,"membershipNow",{enumerable:!0,configurable:!0,get:function(){var t=this.course.registrationDate||new Date,n=_.sortBy(_.filter(this.registeredAttendance,{isRegistered:!0}),"startDate");return n&&n.length&&(t=n[0].startDate),moment(t).startOf("day").toDate()}});Object.defineProperty(n.CourseRegistrationInvoice.prototype,"total",{enumerable:!0,configurable:!0,get:function(){return _.reduce(this.lines,function(n,t){return t.isValid?n+t.price:n},0)}});Object.defineProperty(n.CourseRegistrationInvoice.prototype,"basePrice",{enumerable:!0,configurable:!0,get:function(){var n=_.find(this.lines,{lineType:"CourseFee"});return!n?0:n.price}});Object.defineProperty(n.CourseRegistrationInvoice.prototype,"isModified",{enumerable:!0,configurable:!0,get:function(){return _.reduce(this.lines,function(n,t){return n||t.isModified},!1)||!!this.dueDate||this._useAmortizationScheduleOrig!=this.useAmortizationSchedule||!angular.equals(this.lines,this.invoiceLinesOrig)}});Object.defineProperty(n.CourseRegistrationInvoice.prototype,"totalByamortizationSchedule",{enumerable:!0,configurable:!0,get:function(){if(!this.invoiceDTO.amortizationSchedules||!this.invoiceDTO.amortizationSchedules.length)return _.reduce(this.invoiceDTO.lineItems,function(n,t){return n+t.price},0);var n=moment().startOf("day");return _.reduce(this.invoiceDTO.amortizationSchedules,function(t,i){return moment(i.issueAt).isSameOrBefore(n)?t+i.amount:t},0)}});n.CourseRegistrationInvoice.prototype.toJSON=function(){return{dueDate:this.dueDate,lines:this.lines,useAmortizationSchedule:this.useAmortizationSchedule}};n.CourseRegistrationInvoice.prototype.addManualAdjustmentLine=function(n){var t=new webooker_courses_models.CourseRegistrationInvoiceLine(this,"ManualAdjustment",{owns:!1,buy:!0,name:"",price:"",discountPct:0,isMandatory:0,membershipID:null,description:null,isValid:!0},null);return t.runtimeManualAdjustmentType=n,this.lines.push(t),t};n.CourseRegistrationInvoice.prototype.removeManualAdjustmentLine=function(n){var t=this.lines.indexOf(n);t!=-1&&this.lines.splice(t,1)}}(webooker_courses_models);webooker_courses_models=webooker_courses_models||{},function(n){n.CourseRegistrationInvoiceLine=function(n,t,i,r){this.getCourseRegistrationInvoice=function(){return n};this.lineType=t;i&&(this.membershipID=i.membershipID,this.promotion=i,this.owns=i.owns,this.lineType==="Membership"&&(this.promotion.buy=this.promotion.owns&&!!r));this.isInInvoice=!!r;this.invoiceLine=r;this.isNameEditable=this.lineType==="ManualAdjustment";this.isValueEditable=this.lineType==="ManualAdjustment";this.runtimeManualAdjustmentType=0;this.runtimeManualAdjustmentPercentDiscount=0};n.CourseRegistrationInvoiceLine.prototype.toJSON=function(){return{lineType:this.lineType,membershipID:this.membershipID,studentMembershipID:!this.invoiceLine?null:this.invoiceLine.studentMembershipID,buy:this.buy,price:this.price,name:this.runtimeManualAdjustmentType==1?this.name+" ("+parseFloat(this.percent).toFixed(2)+"%)":this.name}};Object.defineProperty(n.CourseRegistrationInvoiceLine.prototype,"isReadonly",{enumerable:!0,configurable:!0,get:function(){switch(this.lineType){case"CourseFee":return!0;case"Membership":return this.promotion.owns&&!this.isInInvoice||this.promotion.isMandatory||!this.isValid;case"ManualAdjustment":return!1;default:return!0}}});Object.defineProperty(n.CourseRegistrationInvoiceLine.prototype,"buy",{enumerable:!0,configurable:!0,get:function(){switch(this.lineType){case"CourseFee":return!0;case"Membership":return!!this.promotion.buy&&!!this.isValid||!!this.promotion.isMandatory&&!!this.isValid&&!(!!this.promotion.owns&&!this.isInInvoice);case"ManualAdjustment":return this.promotion.buy;case"Discount":return!!this.promotion.buy||!this.promotion.buy&&!!this.promotion.owns&&(!this.isInInvoice&&!this.promotion.isInInvoice||!!this.isInInvoice&&!this.promotion.isInInvoice);default:return!1}},set:function(n){switch(this.lineType){case"Membership":this.isReadonly||(this.promotion.buy=n);break;case"ManualAdjustment":if(this.promotion.buy=n,!n){var t=this.getCourseRegistrationInvoice();t.removeManualAdjustmentLine(this)}}}});Object.defineProperty(n.CourseRegistrationInvoiceLine.prototype,"price",{enumerable:!0,configurable:!0,get:function(){var n=this.getCourseRegistrationInvoice();switch(this.lineType){case"CourseFee":return n.coursePriceSvc.getCourseBasePrice(n.course,n.noOfRegisteredAttendances,n.$courseRegistration.reservedPlaces||1,!!n.useAmortizationSchedule);case"Membership":return this.buy?this.promotion.price:0;case"Discount":return this.buy?this.promotion.promotion?-(n.basePrice*this.promotion.promotion.discountPct)/100:this.promotion.price:0;case"ManualAdjustment":return this.buy?this.promotion.price:0;default:return 0}},set:function(n){switch(this.lineType){case"ManualAdjustment":this.buy&&(this.promotion.price=n)}}});Object.defineProperty(n.CourseRegistrationInvoiceLine.prototype,"name",{enumerable:!0,configurable:!0,get:function(){var n=this.getCourseRegistrationInvoice();switch(this.lineType){case"CourseFee":return n.coursePriceSvc.getCourseFeeLineName(n.course,n.noOfRegisteredAttendances,n.useAmortizationSchedule);case"Membership":return this.promotion.name;case"Discount":return this.promotion.promotion?n.coursePriceSvc.gtDiscountLineStr(this.promotion.name,this.promotion.promotion.discountPct):this.promotion.name;case"ManualAdjustment":return this.buy?this.promotion.name:null;default:return this.promotion.name}},set:function(n){switch(this.lineType){case"ManualAdjustment":this.buy&&(this.promotion.name=n)}}});Object.defineProperty(n.CourseRegistrationInvoiceLine.prototype,"description",{enumerable:!0,configurable:!0,get:function(){switch(this.lineType){case"Membership":return this.promotion.description;default:return""}}});Object.defineProperty(n.CourseRegistrationInvoiceLine.prototype,"isValid",{enumerable:!0,configurable:!0,get:function(){switch(this.lineType){case"Membership":if(this.promotion.validFrom){var t=this.getCourseRegistrationInvoice(),n=moment(t.membershipNow);return moment(this.promotion.validFrom).isSameOrBefore(n)&&moment(this.promotion.validTo).isSameOrAfter(n)}return this.promotion.isValid;case"Discount":return this.promotion.isValid&&!!this.price;default:return!0}}});Object.defineProperty(n.CourseRegistrationInvoiceLine.prototype,"isVisible",{enumerable:!0,configurable:!0,get:function(){switch(this.lineType){case"Membership":return!this.promotion.owns&&this.isValid||this.isInInvoice;case"Discount":return!!this.price||!this.price&&!!this.isInInvoice;default:return!0}}});Object.defineProperty(n.CourseRegistrationInvoiceLine.prototype,"isModified",{enumerable:!0,configurable:!0,get:function(){switch(this.lineType){case"CourseFee":return!this.isInInvoice&&this.buy&&!!this.price||this.isInInvoice&&!this.isValid||!!this.isInInvoice&&!!this.buy&&this.price!==this.invoiceLine.price;case"Membership":return!this.isInInvoice&&this.buy||!!this.isInInvoice&&!this.buy||!!this.isInInvoice&&!!this.buy&&this.price!==this.invoiceLine.price||!!this.isInInvoice&&!!this.buy&&this.name!==this.invoiceLine.name;case"ManualAdjustment":return!!this.isInInvoice&&!!this.buy&&this.price!==this.invoiceLine.price||!!this.isInInvoice&&!!this.buy&&this.name!==this.invoiceLine.name||!this.isInInvoice&&!!this.buy&&!!this.price||!!this.isInInvoice&&(!this.buy||!this.price);default:return!this.isInInvoice&&this.buy&&!!this.price||this.isInInvoice&&!this.isValid||!!this.isInInvoice&&!!this.buy&&this.price!==this.invoiceLine.price||!!this.isInInvoice&&!!this.buy&&this.name!==this.invoiceLine.name}}});Object.defineProperty(n.CourseRegistrationInvoiceLine.prototype,"percent",{enumerable:!0,configurable:!0,get:function(){return this.runtimeManualAdjustmentPercentDiscount},set:function(n){switch(this.lineType){case"ManualAdjustment":if(this.buy){this.runtimeManualAdjustmentPercentDiscount=n;var t=this.getCourseRegistrationInvoice();this.promotion.price=-(t.basePrice*n)/100}}}})}(webooker_courses_models);webooker_courses_models=webooker_courses_models||{},function(n){n.courseRegistrationPayment=function(n){this.paymentID=n.paymentID;this.value=n.value;this.paymentType=n.paymentType;this.paymentDate=n.paymentDate;this.cashReceiptNo=n.cashReceiptNo};n.courseRegistrationPayment.prototype.toJSON=function(){return{paymentID:this.paymentID,value:this.value,paymentType:this.paymentType,paymentDate:this.paymentDate,cashReceiptNo:this.cashReceiptNo}}}(webooker_courses_models);webooker_courses_models=webooker_courses_models||{},function(n){n.CourseRegistrationUserSchedule=function(n){this.origCapacity=n.capacity;this.origFilled=n.filled;this.startDate=n.startDate;this.endDate=n.endDate;this.courseScheduleID=n.courseScheduleID;this.$courseRegistrationAttendance=[]};Object.defineProperty(n.CourseRegistrationUserSchedule.prototype,"freePlaces",{enumerable:!0,configurable:!0,get:function(){var n=Math.max(0,this.origCapacity-this.origFilled),t=_.reduce(this.$courseRegistrationAttendance,function(n,t){return t.hasChanged?n+(t.isRegistered?1:0):n},0);return Math.max(0,n-t)}});n.CourseRegistrationUserSchedule.prototype.addCourseRegistrationAttendance=function(n){this.$courseRegistrationAttendance=n;angular.forEach(this.$courseRegistrationAttendance,function(n){n.setUserScheduleBinding.call(n,this)},this)}}(webooker_courses_models);webooker_utils=webooker_utils||{},function(n){n.ColorUtils=function(){};n.ColorUtils.prototype.intToRgb=function(n){n>>>=0;var t=n&255,i=(n&65280)>>>8,r=(n&16711680)>>>16;return"rgb("+[r,i,t].join(",")+")"};n.ColorUtils.prototype.rgbToInt=function(n){var t=/^rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g.exec(n);return(parseInt(t[1])<<16)+(parseInt(t[2])<<8)+parseInt(t[3])}}(webooker_utils),function(){Date.prototype.isValidDate=function(n){return Object.prototype.toString.call(n)==="[object Date]"?isNaN(n.getTime())?!1:!0:!1}}(),function(){String.prototype.format=String.prototype.f=function(){for(var n=this,t=arguments.length;t--;)n=n.replace(new RegExp("\\{"+t+"\\}","gm"),arguments[t]);return n};String.prototype.endsWith=function(n){return this.indexOf(n,this.length-n.length)!==-1};String.prototype.startsWith=function(n){return this.slice(0,n.length)==n};String.prototype.isNullOrWhitespace=function(n){return n===null||typeof n=="undefined"||typeof n!="string"?!0:n.replace(/\s/g,"").length<1};String.prototype.fullName=function(n,t,i){var r="";return String.prototype.isNullOrWhitespace(n)||(r=n),String.prototype.isNullOrWhitespace(t)||(r=r?r+" "+t:t),String.prototype.isNullOrWhitespace(i)||(r=r?r+" "+i:i),r}}();wbApp.directive("wbDifferentValueValidator",[function(){return{restrict:"A",require:"ngModel",link:function(n,t,i,r){i.$observe("wbDifferentValueValidator",function(n){r.$setValidity("differentValue",r.$viewValue!=n)});n.$watch(i.ngModel,function(n){var t=i.wbDifferentValueValidator;r.$setValidity("differentValue",n!=t)})}}}]);wbApp.directive("wbIsAfterValidator",[function(){return{restrict:"A",require:"ngModel",link:function(n,t,i,r){n.$watch(i.wbIsAfterValidator,function(n){var t=n;moment.isDate(t)&&moment.isDate(r.$modelValue)?r.$setValidity("isAfter",moment(r.$modelValue).isAfter(t)):r.$setValidity("isAfter",!0)});n.$watch(i.ngModel,function(){var t=n.$eval(i.wbIsAfterValidator);moment.isDate(t)&&moment.isDate(r.$modelValue)?r.$setValidity("isAfter",moment(r.$modelValue).isAfter(t)):r.$setValidity("isAfter",!0)})}}}]);wbApp.directive("wbIsBeforeValidator",[function(){return{restrict:"A",require:"ngModel",link:function(n,t,i,r){n.$watch(i.wbIsBeforeValidator,function(n){var t=n;moment.isDate(t)&&moment.isDate(r.$modelValue)?r.$setValidity("isBefore",moment(r.$modelValue).isBefore(t)):r.$setValidity("isBefore",!0)});n.$watch(i.ngModel,function(){var t=n.$eval(i.wbIsBeforeValidator);moment.isDate(t)&&moment.isDate(r.$modelValue)?r.$setValidity("isBefore",moment(r.$modelValue).isBefore(t)):r.$setValidity("isBefore",!0)})}}}]);wbApp.directive("wbOnlyOneValueSetValidator",[function(){return{restrict:"A",require:"ngModel",scope:{wbOnlyOneValueSetValidator:"="},link:function(n,t,i,r){function u(n,t){var i=!isNaN(n)&&n!==null&&n!==""||!String.prototype.isNullOrWhitespace(n),u=!isNaN(t)&&t!==null&&t!==""||!String.prototype.isNullOrWhitespace(t);r.$setValidity("onlyOneValueSet",i&&!u||!i&&u)}n.$watch("wbOnlyOneValueSetValidator",function(n){u(n,r.$viewValue)});r.$parsers.unshift(function(t){return u(t,n.wbOnlyOneValueSetValidator),t})}}}]);wbApp.directive("wbPersonalIdNumberValidator",[function(){return{restrict:"A",require:"ngModel",link:function(n,t,i,r){n.$watch(i.ngModel,function(n){var t=!n;const i=parseInt(n,10);isNaN(i)||(t=i%11==0);r.$setValidity("pattern",t)})}}}]);wbApp.directive("wbDependentPropertyRequiredValidator",[function(){return{restrict:"A",require:"ngModel",scope:{wbDependentPropertyRequiredValidator:"="},link:function(n,t,i,r){function u(n,t){var i=!!t&&t!="0",u=!!n;r.$setValidity("dependentPropertyRequired",!!u&&!!i||!i)}n.$watch("wbDependentPropertyRequiredValidator",function(n){u(r.$viewValue,n)});r.$parsers.unshift(function(t){return u(t,n.wbDependentPropertyRequiredValidator),t})}}}]);wbApp.directive("wbFormResponseEdit",["$timeout","$translate","$q","$window","formSvc","formResponseSvc","studentSvc","securitySvc",function(n,t,i,r,u,f,e,o){return{restrict:"A",scope:{model:"=ngModel",formDefinitionId:"=",formDefinitionRevision:"=",adminEdit:"="},templateUrl:"directives/forms/form-response-edit.html",controller:["$scope","$element",function(t){function h(n){if(t.form.accessPermissions==0||t.form.accessPermissions==3){if(!t.isAuthenticated||!n.userId)return!1;if(t.form.accessPermissions==0){if(!n.studentId)return!1}else if(!!n.studentId)return!1}else if(t.form.accessPermissions==1||t.form.accessPermissions==2)if(t.form.accessPermissions==2){if(t.isAuthenticated&&!!n.userId){if(!n.studentId)return!1}else if(!!n.studentId||!t.form.notRegisteredUserInfo||!t.form.notRegisteredUserInfo.students||t.form.notRegisteredUserInfo.students.length!=1)return!1}else if(!!n.studentId||!!t.form.notRegisteredUserInfo&&!!t.form.notRegisteredUserInfo.students&&!!t.form.notRegisteredUserInfo.students.length)return!1;return t.dummy.editform.$valid}function s(){t.form?(angular.extend(t.model,u.generateFormResponseFromFilledForm(t.form)),t.model.isValid=h(t.model)):t.model.isValid=!1}t.adminEdit=!!t.adminEdit&&o.isInRole("FormsResponse.Insert");t.urlParams="returnUrl="+encodeURIComponent(location.pathname+location.search);t.onRegisteredBtnClick=function(){!t.form||(t.form.notRegisteredUserInfo=null)};t.onAnonymousBtnClick=function(){!t.form||(t.form.notRegisteredUserInfo=t.form.notRegisteredUserInfo?null:t.form.accessPermissions==2?{surname:null,email:null,phone:null,students:[{surname:null,birthday:null}]}:{surname:null,email:null,phone:null,students:null})};t.students=[];t.images=[];t.formIsLoading=!0;t.loginRequired=!1;t.isNewForFilling=!0;t.isAuthenticated=o.isAuthenticated();t.onAdminUserChange=function(n){!n||t.form.accessPermissions!=0&&t.form.accessPermissions!=2||e.getAllByUserIDAsync(n).$promise.then(function(n){t.students=angular.copy(n);t.form.students=t.students});n||(t.students=[],t.form.students=[])};var r=[];typeof t.formDefinitionRevision!="undefined"&&t.formDefinitionRevision!==null||!t.formDefinitionId?t.formDefinitionId?r.push(u.getByIdAndRevision(t.formDefinitionId,t.formDefinitionRevision).$promise):r.push(i(function(n){n({})})):r.push(u.getById(t.formDefinitionId).$promise);t.isAuthenticated&&!t.model.id?r.push(e.getCurrentAsync().$promise):r.push(i(function(n){n([])}));t.model.id?(r.push(f.getById(t.model.id).$promise),t.isNewForFilling=!1):(r.push(i(function(n){n(t.model)})),t.isNewForFilling=!0);i.all(r).then(function(n){function h(){t.formDefinitionId?c():u.getByIdAndRevision(r.formDefinitionId,r.formDefinitionRevision).$promise.then(function(n){i=angular.copy(n);c()})}function c(){t.form=i;t.loginRequired=!t.isAuthenticated&&(i.accessPermissions==0||i.accessPermissions==3);t.model.id||(t.form.userId=o.loggedInUser().userID+"");t.form.students=f;!!i.pictureUrls&&i.pictureUrls.length>1&&(t.images=_.map(i.pictureUrls,function(n){return{thumb:n,img:n}}));t.model.id?u.updateFilledFormByFormResponse(t.form,t.model):s();t.formIsLoading=!1}var i=angular.copy(n[0]),f=angular.copy(n[1]),r=angular.extend(t.model,n[2]);!t.model.id||r.isNotRegisteredUser?h():e.getAllByUserIDAsync(t.model.userId).$promise.then(function(n){f=angular.copy(n);h()})},function(){t.formIsLoading=!1});t.onCheckboxClick=function(n,t,i){if(n==0||n==2)_.forEach(t,function(n){n.checked=n.id==i.id?!0:!1});else{var r=_.reduce(t,function(n,t){return n+(!t.checked?0:1)},0);r||(i.checked=!0)}s()};t.onTextEdit=function(){s()};t.$watch("form",function(){n(function(){s()},100)},!0)}],link:function(){}}}]);wbApp.directive("wbNotRegisteredUserEdit",["$timeout","$translate","$q","$window","$http","formSvc","formResponseSvc","studentSvc","securitySvc","tenantSettingSvc",function(n,t,i,r,u,f,e,o,s,h){return{restrict:"A",scope:{model:"=ngModel",isStudentRequired:"=",adminEdit:"=",hideHeaderIfStudentNotRequired:"="},templateUrl:"directives/forms/not-registered-user-edit.html",controller:["$scope","$element",function(n){n.requiredStudent=n.isStudentRequired;n.typeAheadAddress=[];n.tenantSetting=h.settings;n.adminSimpleRequired=!!n.adminEdit;n.allMatch=function(){return!0};n.onIsStudentRequiredToggle=function(){n.requiredStudent=!n.requiredStudent;n.model.students=n.requiredStudent?[{}]:[]};n.getAddress=function(t){if(t){var i={address:t,language:"cs",region:"cz",bounds:"48.270777,12.172380|51.246709,19.922157",key:"AIzaSyDdpRFWJaEcASaUgQxTdi8i42aaCaKfS0A"};return u.get("https://maps.googleapis.com/maps/api/geocode/json",{params:i}).then(function(t){n.typeAheadAddress.length=0;n.typeAheadAddress.push.apply(n.typeAheadAddress,t.data.results)})}}}],link:function(){}}}]);wbApp.directive("wbInvoiceForCombo",["$timeout","$translate",function(n,t){function i(n){if(n)return t.instant(n.text)}function r(n){return t.instant(n.text)}return{restrict:"A",require:"ngModel",link:function(t,u,f,e){n(function(){$(u).select2({formatResult:i,formatSelection:r,dropdownAutoWidth:!0,allowClear:!1,minimumResultsForSearch:-1,data:[{id:1,text:"TXT_LAB_COURSE"},{id:2,text:"TXT_LAB_ACTION_SINGULAR"},{id:3,text:"TXT_LAB_KINDERGARTEN"},{id:4,text:"TXT_LAB_RESERVATION"},]});e.$parsers.unshift(function(n){return n?parseInt(n):0});e.$formatters.unshift(function(n){return n?n+"":"0"});e.$render=function(){u.select2("val",e.$viewValue)};u.on("change",function(){t.$apply(function(){e.$setViewValue(u.select2("val"))})});f.$observe("disabled",function(n){u.select2("enable",!n)});f.$observe("readonly",function(n){u.select2("readonly",!!n)});u.bind("$destroy",function(){u.select2("destroy")})},1)}}}]);wbApp.directive("wbPaymentActivityCombo",["$timeout",function(n){function t(n){if(n)return n.name}function i(n){return n.name}return{restrict:"A",require:"ngModel",scope:{wbActivities:"="},link:function(r,u,f,e){n(function(){$(u).select2({id:function(n){return n.activityID},formatResult:t,formatSelection:i,dropdownAutoWidth:!0,allowClear:!1,minimumResultsForSearch:-1,data:r.wbActivities});e.$parsers.unshift(function(n){return n?parseInt(n):0});e.$formatters.unshift(function(n){return n?n+"":"0"});e.$render=function(){u.select2("val",e.$viewValue)};u.on("change",function(){r.$apply(function(){e.$setViewValue(u.select2("val"))})});u.bind("$destroy",function(){u.select2("destroy")})},1)}}}]);wbApp.directive("wbPaymentActivityReccurenceSchedulesCombo",["$timeout","$filter",function(n,t){function i(n){if(n)return"<div class='row'><div class='col-md-6'>"+n.name+"<\/div><div class='col-md-3 text-right'>"+t("date")(n.issuedAt,"shortDate")+"<\/div><div class='col-md-3 text-right'>"+t("wbCurrencyFlt")(n.price)+"<\/div><\/div>"}function r(n){return"{0} ({1} - {2})".f(n.name,t("date")(n.issuedAt,"shortDate"),t("wbCurrencyFlt")(n.price))}return{restrict:"A",require:"ngModel",scope:{wbReccurenceSchedules:"="},link:function(t,u,f,e){n(function(){$(u).select2({id:function(n){return n.invoiceID},formatResult:i,formatSelection:r,dropdownAutoWidth:!0,allowClear:!1,minimumResultsForSearch:-1,data:t.wbReccurenceSchedules});e.$render()});e.$parsers.unshift(function(n){return n?parseInt(n):0});e.$formatters.unshift(function(n){return n?n+"":"0"});e.$render=function(){u.select2("val",e.$viewValue)};u.on("change",function(){t.$apply(function(){e.$setViewValue(u.select2("val"))})});u.bind("$destroy",function(){u.select2("destroy")})}}}]);wbApp.directive("wbPaymentActivityReconciliationCombo",["$timeout","$filter",function(n,t){function i(n){if(n)return"<div class='row'><div class='col-md-9'>"+n.name+"<\/div><div class='col-md-3 text-right'>"+t("wbCurrencyFlt")(n.price)+"<\/div><\/div>"}function r(n){return"{0} ({1})".f(n.name,t("wbCurrencyFlt")(n.price))}return{restrict:"A",require:"ngModel",scope:{wbReconciliations:"="},link:function(t,u,f,e){n(function(){$(u).select2({id:function(n){return n.activityReconciliationID},formatResult:i,formatSelection:r,dropdownAutoWidth:!0,allowClear:!1,minimumResultsForSearch:-1,data:t.wbReconciliations});e.$parsers.unshift(function(n){return n?parseInt(n):0});e.$formatters.unshift(function(n){return n?n+"":"0"});e.$render=function(){u.select2("val",e.$viewValue)};u.on("change",function(){t.$apply(function(){e.$setViewValue(u.select2("val"))})});u.bind("$destroy",function(){u.select2("destroy")})},1)}}}]);wbApp.directive("wbPaymentCourseCombo",["$timeout",function(n){function t(n){if(n)return n.fullName}function i(n){return n.fullName}return{restrict:"A",require:"ngModel",scope:{wbCourses:"="},link:function(r,u,f,e){n(function(){$(u).select2({id:function(n){return n.courseID},formatResult:t,formatSelection:i,dropdownAutoWidth:!0,allowClear:!1,minimumResultsForSearch:-1,data:r.wbCourses});e.$parsers.unshift(function(n){return n?parseInt(n):0});e.$formatters.unshift(function(n){return n?n+"":"0"});e.$render=function(){u.select2("val",e.$viewValue)};u.on("change",function(){r.$apply(function(){e.$setViewValue(u.select2("val"))})});u.bind("$destroy",function(){u.select2("destroy")})},1)}}}]);wbApp.directive("wbPaymentEdit",["$timeout","$translate","invoiceSvc","paymentsSvc","reservationsSvc",function(n,t,i,r,u){return{restrict:"A",scope:{model:"=ngModel",isAddBankPayment:"=",isAddDuePayment:"="},templateUrl:"directives/payment-edit/payment-edit.html",controller:["$scope","$element",function(n){function s(t,i){var r,u;if(n.model.reservations.length=0,n.model.reservations.push.apply(n.model.reservations,t),r=_.first(t),!r){n.model.reservationId=null;return}n.model.reservationId=r.id;u=_.first(r.studentIds);i||n.model.studentID==u||(e=!0,n.model.studentID=u);i&&(n.model.invoiceID=r.invoice.id);n.model.amount=r.invoice.arrear;n.model.notes=r.notes}function o(t){n.model.semesters.length=0;n.model.semesters.push.apply(n.model.semesters,t.semesters);n.model.semesterID=g(n.model.semesters,t.selectedSemesterID);n.model.invoiceForType!=4?h(t.selectedCourseID,n.model.semesterID,t.selectedActivityID,t.selectedActivityReconciliationID,t.selectedInvoiceID):y(t.reservationID,t.selectedInvoiceID)}function y(){}function h(t,i,r,u,f){var e=k(n.model.semesters,i);e?(n.model.courses.length=0,n.model.activities.length=0,n.model.invoiceForType===3?(n.model.activities.push.apply(n.model.activities,e.activities),n.model.activityID=tt(n.model.activities,r),c(n.model.activityID,u,f)):(n.model.courses.push.apply(n.model.courses,e.courses),n.model.courseID=nt(n.model.courses,t),l(n.model.courseID))):alert("Semester not found")}function c(t,i,r){var f=d(n.model.activities,t),u;f&&(n.model.reconciliations.length=0,n.model.reconciliations.push.apply(n.model.reconciliations,f.reconciliations),n.model.reccurenceSchedules.length=0,n.model.reccurenceSchedules.push.apply(n.model.reccurenceSchedules,f.reccurenceSchedules),u=_.find(n.model.reccurenceSchedules,{invoiceID:r}),!u&&n.model.reconciliations.length>0?(n.model.activityReconciliationID=it(n.model.reconciliations,i),!n.model.activityReconciliationID||a(n.model.activityReconciliationID)):(n.model.activityReconciliationID=0,n.model.reccurenceSchedules.length>0?(u=u||n.model.reccurenceSchedules[0],n.model.issuedInvoiceID=u.invoiceID,n.isAddBankPayment||(n.model.amount=Math.max(0,u.price-u.paymentSum),n.model.notes=""),n.model.invoiceID!==n.model.issuedInvoiceID&&(n.model.invoiceID=n.model.issuedInvoiceID)):(n.isAddBankPayment||(n.model.amount=0),n.model.notes="",n.model.invoiceID!==0&&(n.model.invoiceID=0))))}function l(t){var i=b(n.model.courses,t),r;i?(n.isAddBankPayment||(n.model.amount=Math.max(0,i.price-i.paymentSum)),n.model.notes=i.registrationNote,r=i.invoiceID?i.invoiceID:0,n.model.invoiceID!==r&&(n.model.invoiceID=r)):(n.isAddBankPayment||(n.model.amount=0),n.model.notes="",n.model.invoiceID!==0&&(n.model.invoiceID=0))}function p(t){var i=_.find(n.model.reccurenceSchedules,{invoiceID:t+""});i?(n.isAddBankPayment||(n.model.amount=Math.max(0,i.price-i.paymentSum)),n.model.notes="",n.model.invoiceID!==i.invoiceID&&(n.model.invoiceID=i.invoiceID),n.model.activityReconciliationID=0):(n.isAddBankPayment||(n.model.amount=0),n.model.notes="",n.model.invoiceID!==0&&(n.model.invoiceID=0))}function a(t){var i=w(n.model.reconciliations,t),r;i?(n.isAddBankPayment||(n.model.amount=Math.max(0,i.price-i.paymentSum)),n.model.notes=i.notes,r=i.invoiceID?i.invoiceID:0,n.model.invoiceID!==r&&(n.model.invoiceID=r,n.model.issuedInvoiceID=0)):(n.isAddBankPayment||(n.model.amount=0),n.model.notes="",n.model.invoiceID!==0&&(n.model.invoiceID=0))}function w(n,i){return t(n,i,"activityReconciliationID")}function b(n,i){return t(n,i,"courseID")}function k(n,i){var r=t(n,i,"semesterID");return r?r:{courses:[]}}function d(n,i){var r=t(n,i,"activityID");return r?r:{reconciliations:[]}}function g(n,t){return f(n,t,"semesterID")}function nt(n,t){return f(n,t,"courseID")}function tt(n,t){return f(n,t,"activityID")}function it(n,t){return f(n,t,"activityReconciliationID")}function t(n,t,i){for(var r=0;r<n.length;r++)if(n[r][i]===t)return n[r]}function f(n,t,i){return t?t:!n||!n.length?0:n[0][i]}var e=!1,v;if(n.onInvoiceForTypeChange=function(){r.clearPaymentEditModel(n.model,n.isAddBankPayment,n.isAddDuePayment)},n.onInvoiceChange=function(t,r){var f;r&&(t==4?(f=u.getByInvoice(r),f.then(function(n){s([n],!1)})):(f=i.getPaymentDetailsByInvoice(t,r),f.$promise.then(function(t){n.model.studentID=t.studentID;o(t)})))},n.onSemesterChange=function(n){h(0,n,0,0)},n.onCourseChange=function(n){l(n)},n.onActivityChange=function(n){c(n,0)},n.onActivityReconciliationChange=function(n){a(n)},n.onActivityReccurenceScheduleChange=function(n){p(n)},n.onReservationChange=function(t){var i=_.find(n.model.reservations,{id:t});!i||(n.model.invoiceID=i.invoice.id,n.model.amount=i.invoice.arrear,n.model.notes=i.notes)},n.onStudentChange=function(t,r){var f;if(r){if(e){e=!1;return}n.model.invoiceID=null;t==4?(f=u.getAllByRangeAndStudent(r,new Date(2e3,0,1),new Date(3e3,0,1)),f.then(function(n){s(n,!0)})):(f=i.getPaymentDetailsByStudent(t,r),f.$promise.then(function(n){o(n)}))}},n.model.paymentID)v=i.getPaymentDetailsByInvoice(n.model.invoiceForType,n.model.invoiceID),v.$promise.then(function(t){n.model.studentID=t.studentID;var i=n.model.amount,r=n.model.invoiceID;o(t);n.model.amount=i;n.model.invoiceID=r});else if(n.isAddDuePayment&&n.model.invoiceID)n.onInvoiceChange(n.model.invoiceForType,n.model.invoiceID)}],link:function(){}}}]);wbApp.directive("wbPaymentReservationCombo",["$timeout",function(n){function t(n){return n?n.invoice.subject:""}return{restrict:"A",require:"ngModel",scope:{wbReservations:"="},link:function(i,r,u,f){n(function(){$(r).select2({id:function(n){return n.id},formatResult:t,formatSelection:t,dropdownAutoWidth:!0,allowClear:!1,minimumResultsForSearch:-1,data:i.wbReservations});f.$render=function(){r.select2("val",f.$viewValue)};r.on("change",function(){i.$apply(function(){f.$setViewValue(r.select2("val"))})});r.bind("$destroy",function(){r.select2("destroy")})},1)}}}]);wbApp.directive("wbPaymentSemesterCombo",["$timeout","$filter",function(n,t){function i(n){if(n)return"<div class='row' style='width:400px'><div class='col-md-7'>"+n.name+"<\/div><div class='col-md-5'>"+t("date")(n.startDate,"shortDate")+" - "+t("date")(n.endDate,"shortDate")+"<\/div><\/div>"}function r(n){return"{0} ({1} - {2})".f(n.name,t("date")(n.startDate,"shortDate"),t("date")(n.endDate,"shortDate"))}return{restrict:"A",require:"ngModel",scope:{wbSemesters:"="},link:function(t,u,f,e){n(function(){$(u).select2({id:function(n){return n.semesterID},formatResult:i,formatSelection:r,dropdownAutoWidth:!0,allowClear:!1,minimumResultsForSearch:-1,data:t.wbSemesters});e.$parsers.unshift(function(n){return n?parseInt(n):0});e.$formatters.unshift(function(n){return n?n+"":"0"});e.$render=function(){u.select2("val",e.$viewValue)};u.on("change",function(){t.$apply(function(){e.$setViewValue(u.select2("val"))})});u.bind("$destroy",function(){u.select2("destroy")})},1)}}}]);wbApp.factory("duePaymentsSvc",["$resource","$q","$filter","$translate","repositorySvc","notificationSvc",function(n,t,i,r,u,f){function h(n){return(!s||n)&&(s=u.get(o,{})),s}function l(n){var r=t.defer(),i=[];return i.$promise=r.promise,u.customGet("getAllForCurrentUser",o).$promise.then(function(t){var u=n?_.filter(t,function(n){return n.arrear>=0}):t,f=_.orderBy(u,["studentFullName","dueDate"],["asc","asc"]),e=_.groupBy(f,function(n){return n.studentFullName});_.forEach(e,function(n,t){i.push({studentFullName:t,duePayments:n})});r.resolve(i)}),i}function a(n,t,i,e,s,h){function c(){f.notifyInfo(r.instant("TXT_ALERT_MESSAGE_SENT"))}function l(n){u.defaultErrorHandler(n)}o.sendRequestForPayment({invoiceID:n,typeID:t,typeReferenceID:i,typeReference2ID:e,userID:s,isReccuring:h},c,l)}function v(n){return u.customGet("getAllForSemester",o,{semesterID:n})}function y(n,t){var i=moment(n).startOf("day").toDate(),r=moment(t).endOf("day").toDate();return u.customGet("getAllForDateRange",o,{fromDate:i,toDate:r})}function p(){var n,i;return e?e:(n=t.defer(),e={},e.$promise=n.promise,i=h(),i.$promise.then(function(t){var i=c(t);n.resolve(angular.extend(e,i))},function(t){n.reject(t)}),e)}function c(n){var r={all:0,types:[{name:i("invoiceForType")(1),value:0},{name:i("invoiceForType")(2),value:0},{name:i("invoiceForType")(3),value:0},{name:i("invoiceForType")(4),value:0}]},u,t,f;if(!n)return r;for(u=0;u<n.length;u++)t=n[u],f=t.typeID==0?3:t.typeID-1,r.all+=t.arrear,r.types[f].value+=t.arrear;return r}var o=n("/Api/DuePayments/GetAll",{},{query:{method:"GET",isArray:!0},getAllForCurrentUser:{method:"GET",isArray:!0,url:"/Api/DuePayments/GetAllForCurrentUser"},getAllForSemester:{method:"GET",isArray:!0,url:"/Api/DuePayments/GetAllForSemester"},getAllForDateRange:{method:"GET",isArray:!0,url:"/Api/DuePayments/getAllForDateRange"},sendRequestForPayment:{method:"POST",url:"/Api/DuePayments/SendRequestForPayment"}}),s,e=null;return{getAllAsync:h,getAllForCurrentUser:l,getAllBySemesterIDAsync:v,calculateSummary:c,calculateSummaryAll:p,sendRequestForPayment:a,getAllByDateRangeAsync:y}}]);wbApp.factory("invoiceSvc",["$resource","$q","repositorySvc",function(n,t,i){function u(n){return i.customGet("getByID",r,{invoiceID:n})}function f(){return r.getFinanceSummary({})}function e(n,t){return i.customGet("getPaymentDetailsByStudent",r,{invoiceForType:n,studentID:t})}function o(n){return i.customGet("getInvoiceEvidenceByInvoiceID",r,{invoiceID:n})}function s(n){return i.customGet("getLatestByCourseRegistration",r,{courseRegistrationID:n})}function h(n,t){return i.customGet("getPaymentDetailsByInvoice",r,{invoiceForType:n,invoiceID:t})}function c(n){var f=t.defer(),u=[];return u.$promise=f.promise,i.customGet("getInvoiceEvidenceBySemester",r,{semesterID:n}).$promise.then(function(n){angular.forEach(n,function(n){n.notLatest=!n.latest});u.push.apply(u,n);f.resolve(u)},function(n){f.reject(n)}),u}function l(n,u){var e=t.defer(),o=moment(n).startOf("day").toDate(),s=moment(u).endOf("day").toDate(),f=[];return f.$promise=e.promise,i.customGet("getInvoiceEvidenceByDateRange",r,{fromDate:o,toDate:s}).$promise.then(function(n){angular.forEach(n,function(n){n.notLatest=!n.latest});f.push.apply(f,n);e.resolve(f)},function(n){e.reject(n)}),f}function a(n){var f=t.defer(),u=[];return u.$promise=f.promise,i.customGet("getInvoiceEvidenceByUser",r,{userID:n}).$promise.then(function(n){angular.forEach(n,function(n){n.notLatest=!n.latest});u.push.apply(u,n);f.resolve(u)},function(n){f.reject(n)}),u}function v(n,u){var e=t.defer(),f=[];return f.$promise=e.promise,i.customGet("getInvoiceEvidenceByActivityAndStudent",r,{activityID:n,studentID:u}).$promise.then(function(n){angular.forEach(n,function(n){n.notLatest=!n.latest});f.push.apply(f,n);e.resolve(f)},function(n){e.reject(n)}),f}function y(n,t,u){i.remove(r,null,n,t,u,null,"invoiceID")}function p(n,t,u,f){return i.customPost("getStormwareInvoiceExport",r,{accountingBookID:n,invoiceIDs:t},u,f)}function w(n,t,u,f){return i.customPost("getMoneyS3InvoiceExport",r,{accountingBookID:n,invoiceIDs:t},u,f)}var r=n("/Api/Invoices/:id",{},{getByID:{method:"GET",isArray:!1,url:"Api/Invoices/GetByID"},getFinanceSummary:{method:"GET",isArray:!0,url:"/Api/Invoices/GetFinanceSummary",params:{}},getPaymentDetailsByStudent:{method:"GET",isArray:!1,url:"/Api/Invoices/GetPaymentDetailsByStudent",params:{}},getPaymentDetailsByInvoice:{method:"GET",isArray:!1,url:"/Api/Invoices/GetPaymentDetailsByInvoice",params:{}},getInvoiceEvidenceBySemester:{method:"GET",isArray:!0,url:"/Api/Invoices/GetInvoiceEvidenceBySemester",params:{}},getInvoiceEvidenceByDateRange:{method:"GET",isArray:!0,url:"/Api/Invoices/GetInvoiceEvidenceByDateRange",params:{}},getInvoiceEvidenceByUser:{method:"GET",isArray:!0,url:"/Api/Invoices/GetInvoiceEvidenceByUser",params:{}},getInvoiceEvidenceByActivityAndStudent:{method:"GET",isArray:!0,url:"/Api/Invoices/GetInvoiceEvidenceByActivityAndStudent",params:{}},getInvoiceEvidenceByInvoiceID:{methos:"GET",isArray:!1,url:"/Api/Invoices/GetInvoiceEvidenceByInvoiceID",params:{}},getLatestByCourseRegistration:{methos:"GET",isArray:!1,url:"/Api/Invoices/GetLatestByCourseRegistration",params:{}},"delete":{method:"POST",url:"/Api/Invoices/Delete"},getStormwareInvoiceExport:{method:"POST",url:"/Api/Invoices/GetStormwareInvoiceExport"},getMoneyS3InvoiceExport:{method:"POST",url:"/Api/Invoices/GetMoneyS3InvoiceExport"}});return{getByID:u,getFinanceSummary:f,getPaymentDetailsByStudent:e,getPaymentDetailsByInvoice:h,getInvoiceEvidenceBySemester:c,getInvoiceEvidenceByDateRange:l,getInvoiceEvidenceByUserAsync:a,getInvoiceEvidenceByActivityAndStudent:v,getInvoiceEvidenceByInvoiceID:o,getLatestByCourseRegistration:s,remove:y,getStormwareInvoiceExport:p,getMoneyS3InvoiceExport:w}}]);wbApp.factory("onlinePaymentsSvc",["$resource","$q","$filter","repositorySvc","$window","$translate",function(n,t,i,r,u,f){function c(n,t,i){return(!o||s!=n||h!=t||i)&&(s=n,h=t,o=r.customGet("getAllByDateRange",e,{fromDate:n,toDate:t})),o}function l(n,t){var i=e.startOnlinePayment({invoiceIDs:n,price:t,returnToUrl:u.location.href});return i.$promise.then(function(n){u.location.href=n.redirectUrl},function(n){r.defaultErrorHandler(n,null,"TXT_PAYMENT_CANNOT_BE_STARTED")}),i}function a(n){return e.getTransactionState({onlinePaymentID:n})}function v(n){var t=i("wbCurrencyFlt")(n.price);switch(n.state){case 2:return'<i class="fa fa-spinner fa-pulse fa-3x fa-fw text-warning pull-right" aria-hidden="true"><\/i>'+f.instant("TXT_PAYMENT_RESULT_PENDING").f(t);case 3:return'<i class="fa fa-3x fa-check text-success pull-right" aria-hidden="true"><\/i>'+f.instant("TXT_PAYMENT_RESULT_PAID").f(t);case 4:case 5:return'<i class="fa fa-spinner fa-pulse fa-3x fa-fw text-warning pull-right" aria-hidden="true"><\/i>'+f.instant("TXT_PAYMENT_RESULT_REVERSED").f(t);case 6:return'<i class="fa fa-ban fa-3x text-danger pull-right" aria-hidden="true"><\/i>'+f.instant("TXT_PAYMENT_RESULT_CANCELLED").f(t);case 7:return'<i class="fa fa-ban fa-3x text-danger pull-right" aria-hidden="true"><\/i>'+f.instant("TXT_PAYMENT_RESULT_DECLAINED").f(t);case 8:return'<i class="fa fa-ban fa-3x text-danger pull-right" aria-hidden="true"><\/i>'+f.instant("TXT_PAYMENT_RESULT_ERROR").f(t,n.resultMessage);default:return'<i class="fa fa-ban fa-3x text-danger pull-right" aria-hidden="true"><\/i>'+f.instant("TXT_PAYMENT_RESULT_UNEXPECTED").f(t)}}function y(n,t,i){r.remove(e,o,{onlinePaymentID:n.onlinePaymentID},t,i,{onlinePaymentID:n.onlinePaymentID},"onlinePaymentID")}function p(n){return t(function(t,i){r.customPost("reverse",e,{onlinePaymentID:n},function(n){r.entityUpdated(o,n,"onlinePaymentID");t(n)},function(n){i(n)})})}var e=n("/Api/OnlinePayments/GetAll",{},{startOnlinePayment:{method:"POST",url:"/Api/OnlinePayments/StartOnlinePayment"},getTransactionState:{method:"POST",url:"/Api/OnlinePayments/GetTransactionState"},getAllByDateRange:{method:"GET",isArray:!0,url:"/Api/OnlinePayments/getAllByDateRange"},"delete":{method:"POST",url:"/Api/OnlinePayments/Delete"},reverse:{method:"POST",url:"/Api/OnlinePayments/Reverse"}}),o=null,s=null,h=null;return{startOnlinePayment:l,getTransactionState:a,getOnlinePaymentResultMessage:v,getAllByDateRange:c,remove:y,reverse:p}}]);wbApp.factory("paymentsSvc",["$resource","$q","$filter","repositorySvc","terminalSvc",function(n,t,i,r,u){function c(n){return r.customGet("getAllRelatedPaymentsByInvoiceID",f,{invoiceID:n})}function l(n){return r.customGet("getAmortizationScheduleDuePayments",f,{invoiceID:n})}function a(n){return r.customGet("getAllForUser",f,{operatorID:n})}function v(n){return r.customGet("getAllForSemester",f,{semesterID:n})}function y(n,t){var i=moment(n).startOf("day").toDate(),u=moment(t).endOf("day").toDate();return r.customGet("getAllForDateRange",f,{fromDate:i,toDate:u})}function p(n){var t={all:0,paymentTypes:[{name:i("paymentType")(0),value:0},{name:i("paymentType")(1),value:0},{name:i("paymentType")(2),value:0},{name:i("paymentType")(3),value:0},{name:i("paymentType")(4),value:0}]},r,u;if(!n)return t;for(r=0;r<n.length;r++)u=n[r],t.all+=u.value,t.paymentTypes[u.paymentTypeID].value+=u.value;return t}function e(n,t,i){function e(u){n.terminalID=u;r.insert(f,null,n,t,i)}u.getSelectedTerminalID().then(function(n){e(n)},function(){e(null)})}function o(n,t,i){function e(u){n.terminalID=u;r.update(f,null,n,t,i,"paymentID")}u.getSelectedTerminalID().then(function(n){e(n)},function(){e(null)})}function w(n,t,i){r.remove(f,null,n,t,i,null,"paymentID")}function s(n,t){if(n.invoiceID=null,n.semesters.length=0,n.semesterID=null,n.courses.length=0,n.courseID=null,n.studentID=null,!t){n.amount=0;var i=new Date;n.selectedDate=i}n.activityID=null;n.activityReconciliationID=null;n.activities.length=0;n.reconciliations.length=0;n.reccurenceSchedules.length=0;n.reservations.length=0;n.reservationId=null;n.notes="";n.serverError=null}function b(n){var t=!!n.invoiceID&&!!n.studentID&&n.amount!=0&&!!n.selectedDate;return n.invoiceForType==3?t:n.invoiceForType==1||n.invoiceForType==2?t&&!!n.courseID:n.invoiceForType==4?t:void 0}function k(n,t,i){var r={courses:[],semesters:[],activities:[],reconciliations:[],reccurenceSchedules:[],reservations:[]};return n&&n.paymentID?(r.paymentID=n.paymentID,r.paymentTypeID=n.paymentTypeID,r.invoiceForType=n.invoiceForType,r.selectedDate=n.selectedDate,r.amount=n.amount,r.invoiceID=n.invoiceID,r.cashReceiptNo=n.cashReceiptNo):(r.paymentID=0,r.paymentTypeID=1,r.invoiceForType=1,s(r,t),t&&(r.amount=n.amount,r.selectedDate=n.selectedDate,r.paymentTypeID=0),i&&(r.invoiceForType=n.invoiceForType,r.invoiceID=n.invoiceID)),r}function d(n,t,i,r,u){var f={paymentID:n.paymentID,paymentTypeID:n.paymentTypeID,value:n.amount,paymentDate:n.selectedDate,invoiceID:n.invoiceID,notes:n.notes,typeID:n.invoiceForType,typeReferenceID:n.invoiceForType===3?n.activityReconciliationID:n.courseID,studentID:n.studentID,sendNotification:t,cashReceiptNo:n.paymentTypeID===1?n.cashReceiptNo:null,isReccuring:n.invoiceForType===3&&!n.activityReconciliationID&&!!n.invoiceID};return n.paymentID?o(f,i,r):u?h(f,u,i,r):e(f,i,r)}function h(n,t,i,u){return r.customPost("insertAndBindTransaction",f,{transactionID:t,payment:n,sendNotification:n.sendNotification},i,u)}var f=n("/Api/Payments/GetAll",{},{update:{method:"POST",url:"/Api/Payments/Update"},insert:{method:"POST",url:"/Api/Payments/Insert"},"delete":{method:"POST",url:"/Api/Payments/Delete"},getAllForUser:{method:"GET",isArray:!0,url:"/Api/Payments/GetAllForUser"},insertAndBindTransaction:{method:"POST",url:"/Api/Payments/InsertAndBindTransaction"},getAllRelatedPaymentsByInvoiceID:{method:"GET",isArray:!0,url:"/Api/Payments/GetAllRelatedPaymentsByInvoiceID"},getAmortizationScheduleDuePayments:{method:"GET",isArray:!0,url:"/Api/Payments/GetAmortizationScheduleDuePayments"},getAllForSemester:{method:"GET",isArray:!0,url:"/Api/Payments/GetAllForSemester",params:{}},getAllForDateRange:{method:"GET",isArray:!0,url:"/Api/Payments/GetAllForDateRange",params:{}}});return{calculateSummary:p,insert:e,update:o,remove:w,initializePaymentEditModel:k,clearPaymentEditModel:s,isPaymentEditModelValid:b,savePayemntEditModel:d,getAllForUserAsync:a,insertAndBindTransactionAsync:h,getAllRelatedPaymentsByInvoiceID:c,getAmortizationScheduleDuePayments:l,getAllForSemester:v,getAllForDateRange:y}}]);wbApp.directive("wbItemTypeCombo",["$timeout","$q","$translate","itemTypeSvc","rentItemSvc",function(n,t,i,r,u){function f(n){return n?n.name:""}function e(n){return n.name}return{restrict:"A",require:"?ngModel",priority:1,scope:{placeId:"=",rentCategoryId:"=",allowClear:"="},link:function(o,s,h,c){var y=o.rentCategoryId,a=r.getAll(),l=[],v,p;!o.placeId||!o.rentCategoryId?(l=a,l.$promise.then(function(){l.length==1&&($(s).select2("val",l[0].id),c.$setViewValue(l[0].id))})):(v=t.defer(),l.$promise=v.promise,p=u.getUsedItemTypes(o.placeId,o.rentCategoryId),t.all([a.$promise,p.$promise]).then(function(n){l.push.apply(l,_.filter(n[0],function(t){return _.indexOf(n[1],t.id)!=-1}));v.resolve(l);l.length>=1&&!o.allowClear&&(_.find(l,{id:c.$viewValue})?_.forEach(c.$viewChangeListeners,function(n){n()}):($(s).select2("val",l[0].id),c.$setViewValue(l[0].id)))}));l.$promise.then(function(){n(function(){$(s).select2({placeholder:i.instant("TXT_MENU_ITEM_TYPE"),formatResult:f,formatSelection:e,dropdownAutoWidth:!0,allowClear:typeof o.allowClear!="undefined"?o.allowClear:!0,minimumResultsForSearch:-1,id:function(n){return n.id},data:l,sortResults:n=>n.sort((n,t)=>n.name.localeCompare(t.name))});c.$render()});c.$render=function(){s.select2("val",c.$viewValue)};o.$watch("rentCategoryId",function(n){if(y!=n){y=n;var t=u.getUsedItemTypes(o.placeId,o.rentCategoryId);t.$promise.then(function(n){l.length=0;l.push.apply(l,_.filter(a,function(t){return _.indexOf(n,t.id)!=-1}));l.length==1?($(s).select2("val",l[0].id),c.$setViewValue(l[0].id)):($(s).select2("val",null),c.$setViewValue(null))})}});s.on("change",function(){o.$apply(function(){c.$setViewValue(s.select2("val"))})});h.$observe("disabled",function(n){s.select2("enable",!n)});h.$observe("readonly",function(n){s.select2("readonly",!!n)});s.bind("$destroy",function(){s.select2("destroy")});c.$render()},1)}}}]);wbApp.filter("wbItemType",["$translate","itemTypeSvc",function(n,t){function i(i){var u=t.getAll(),r;return u.$resolved?(r=_.find(u,{id:i}),r?r.name:""):n.instant("TXT_LOADING_DATA")}return i.$stateful=!0,i}]);wbApp.filter("wbRentCategory",["$translate","rentCategorySvc",function(n,t){function i(i){var u=t.getAll(),r;return u.$resolved?(r=_.find(u,{id:i}),r?r.name:""):n.instant("TXT_LOADING_DATA")}return i.$stateful=!0,i}]);wbApp.filter("wbRentCategoryGroup",["$translate","rentCategoryGroupSvc",function(n,t){function i(i){var u=t.getAll(),r;return u.$resolved?(r=_.find(u,{id:i}),r?r.name:""):n.instant("TXT_LOADING_DATA")}return i.$stateful=!0,i}]);wbApp.filter("wbRentItemExternalId",["$translate","rentItemSvc",function(n,t){function i(i){var u=t.getAll(),r;return u.$resolved?(r=_.find(u,{id:i}),r?r.externalId:""):n.instant("TXT_LOADING_DATA")}return i.$stateful=!0,i}]);wbApp.filter("wbRentItemName",["$translate","rentItemSvc",function(n,t){function i(i){var u=t.getAll(),r;return u.$resolved?(r=_.find(u,{id:i}),r?r.name:""):n.instant("TXT_LOADING_DATA")}return i.$stateful=!0,i}]);wbApp.factory("itemTypeSvc",["$resource","$q","repositorySvc",function(n,t,i){function f(){return{isNew:!0}}function e(n){return i.customPost("insert",r,n)}function o(n){return u=null,i.customDelete("delete",r,{id:n})}function s(n){return u=null,i.customPutWithParams("update",r,{id:n.id},convertDatesToDateString(n))}function h(n){return i.customGet("getById",r,{id:n})}function c(n){return(!u||n)&&(u=i.customGet("getAll",r,{})),u}function l(n,t){return i.customGet("getByPlaceAndRentCategory",r,{placeId:n,rentCategoryId:t})}var r=n("/restapi/item-types/:id",{},{getById:{method:"GET",url:"/restapi/item-types/:id"},getAll:{method:"GET",isArray:!0,url:"/restapi/item-types"},getByPlaceAndRentCategory:{method:"GET",isArray:!0,url:"/restapi/item-types/find-by-place-and-rent-category"},insert:{method:"POST",url:"/restapi/item-types"},update:{method:"PUT",url:"/restapi/item-types/:id"},"delete":{method:"DELETE",url:"/restapi/item-types/:id"}}),u;return{createNew:f,getById:h,getAll:c,getByPlaceAndRentCategory:l,insert:e,remove:o,update:s}}]);wbApp.factory("rentCategoryGroupSvc",["$resource","$q","repositorySvc",function(n,t,i){function f(){return{isNew:!0,isActive:!0}}function e(n){return i.customPost("insert",r,n)}function o(n){return u=null,i.customDelete("delete",r,{id:n})}function s(n){return u=null,i.customPutWithParams("update",r,{id:n.id},convertDatesToDateString(n))}function h(n){return i.customGet("getById",r,{id:n})}function c(n){return i.customGet("getAllByPlace",r,{placeId:n})}function l(n){return(!u||n)&&(u=i.customGet("getAll",r,{includeNotActive:!0})),u}var r=n("/restapi/rent-category-groups/:id",{},{getById:{method:"GET",url:"/restapi/rent-category-groups/:id"},getAll:{method:"GET",isArray:!0,url:"/restapi/rent-category-groups"},getAllByPlace:{method:"GET",isArray:!0,url:"/restapi/rent-category-groups/find-by-place"},insert:{method:"POST",url:"/restapi/rent-category-groups"},update:{method:"PUT",url:"/restapi/rent-category-groups/:id"},"delete":{method:"DELETE",url:"/restapi/rent-category-groups/:id"}}),u;return{createNew:f,getById:h,getAll:l,getAllByPlace:c,insert:e,remove:o,update:s}}]);wbApp.factory("rentCategorySvc",["$resource","$q","repositorySvc",function(n,t,i){function f(){return{isNew:!0,itemSelectionType:1,rentingPeriodType:0,minimumRentingPeriods:30,maximumRentingPeriods:120,minimumNumberOfRentedItem:1,maximumNumberOfRentedItems:1,accessPermissions:0,isActive:!0}}function e(n){return i.customPost("insert",r,n)}function o(n){return u=null,i.customDelete("delete",r,{id:n})}function s(n){return u=null,i.customPutWithParams("update",r,{id:n.id},convertDatesToDateString(n))}function h(n){return i.customGet("getById",r,{id:n})}function c(n){return i.customGet("getAllByPlace",r,{placeId:n})}function l(n){return(!u||n)&&(u=i.customGet("getAll",r,{includeNotActive:!0})),u}var r=n("/restapi/rent-categories/:id",{},{getById:{method:"GET",url:"/restapi/rent-categories/:id"},getAll:{method:"GET",isArray:!0,url:"/restapi/rent-categories"},getAllByPlace:{method:"GET",isArray:!0,url:"/restapi/rent-categories/find-by-place"},insert:{method:"POST",url:"/restapi/rent-categories"},update:{method:"PUT",url:"/restapi/rent-categories/:id"},"delete":{method:"DELETE",url:"/restapi/rent-categories/:id"}}),u;return{createNew:f,getById:h,getAll:l,getAllByPlace:c,insert:e,remove:o,update:s}}]);wbApp.factory("rentItemAvailabilitySvc",["$resource","$q","repositorySvc",function(n,t,i){function u(n,t,u,f,e,o){return i.customGet("getAllByPlaceAndRentCategoryAndTypeAndDateRange",r,{placeId:n,rentCategoryId:t,itemTypeId:u,fromDateUtc:moment(f).startOf("day").utc().format(),toDateUtc:moment(e).endOf("day").utc().format(),groupBy:o})}var r=n("/restapi/item-types/:id",{},{getAllByPlaceAndRentCategoryAndTypeAndDateRange:{method:"GET",url:"/restapi/rent-item-availability/range/find-by-place-and-rent-category-and-item-type"}});return{getAllByPlaceAndRentCategoryAndTypeAndDateRange:u}}]);wbApp.factory("rentItemSvc",["$resource","$q","repositorySvc",function(n,t,i){function e(){return{isNew:!0,itemCondition:0}}function o(n){return i.customPost("insert",r,n)}function s(n){return u=null,i.customDelete("delete",r,{id:n})}function h(n){return u=null,i.customPutWithParams("update",r,{id:n.id},convertDatesToDateString(n))}function c(n){return i.customGet("getById",r,{id:n})}function l(n){return(!u||n)&&(u=i.customGet("getAll",r,{})),u}function f(){var i=t.defer(),n;return i.resolve([]),n=[],n.$promise=i.promise,n}function a(n,t){return!n||!t?f():i.customGet("getAllByPlaceAndRentCategory",r,{placeId:n,rentCategoryId:t})}function v(n,u){if(!n||!u)return f();var o=t.defer(),e=[];return i.customGet("getAllByPlaceAndRentCategory",r,{placeId:n,rentCategoryId:u}).$promise.then(function(n){e.push.apply(e,_.keys(_.groupBy(n,function(n){return n.itemTypeId})));o.resolve(e)}),e.$promise=o.promise,e}var r=n("/restapi/rent-items/:id",{},{getById:{method:"GET",url:"/restapi/rent-items/:id"},getAll:{method:"GET",isArray:!0,url:"/restapi/rent-items"},getAllByPlaceAndRentCategory:{method:"GET",isArray:!0,url:"/restapi/rent-items/find-by-place-and-rent-category"},insert:{method:"POST",url:"/restapi/rent-items"},update:{method:"PUT",url:"/restapi/rent-items/:id"},"delete":{method:"DELETE",url:"/restapi/rent-items/:id"}}),u;return{createNew:e,getById:c,getAll:l,getAllByPlaceAndRentCategory:a,getUsedItemTypes:v,insert:o,remove:s,update:h}}]);wbApp.factory("rentSvc",["$resource","$q","repositorySvc","localStorageService",function(n,t,i,r){function o(n){const t=moment(),r=30-t.minute()%30,i=t.add(r,"minutes"),u=moment(i).add(1,"hour");return{isNew:!0,placeId:n,fromUtc:i.toDate(),toUtc:u.toDate(),rentedItems:[],status:{id:null,createdAtUtc:null,status:0,notes:null}}}function e(n){var t=angular.copy(n);return t.fromUtc=moment(t.fromUtc).utc().format(),t.toUtc=moment(t.toUtc).utc().format(),i.customPost("insert",u,t)}function s(n){return i.customDelete("delete",u,{id:n})}function h(n){return i.customPutWithParams("update",u,{id:n.id},convertDatesToDateString(n))}function c(n){return i.customGet("getById",u,{id:n})}function l(){return i.customGet("getAll",u,{})}function a(n,t,r){return i.customGet("getAllByPlaceAndDateRange",u,{fromDateUtc:moment(t).startOf("day").utc().format(),toDateUtc:moment(r).endOf("day").utc().format(),placeId:n,expanded:"PersonalInformation,RentItemDetails,RentCategoryDetails,ItemTypeDetails"})}function v(n,t,r,f){return i.customGet("getAllByPlaceAndItemAndDateRange",u,{fromDateUtc:moment(r).startOf("day").utc().format(),toDateUtc:moment(f).endOf("day").utc().format(),placeId:n,itemId:t,expanded:"PersonalInformation,RentItemDetails,RentCategoryDetails,ItemTypeDetails"})}function y(n,t,r,f,e,o){return i.customGet("getAllByPlaceAndRentCategoryAndTypeAndUserDateRange",u,{fromDateUtc:moment(e).startOf("day").utc().format(),toDateUtc:moment(o).endOf("day").utc().format(),placeId:n,rentCategoryId:t,itemTypeId:r,userId:f,expanded:"PersonalInformation,RentItemDetails,RentCategoryDetails,ItemTypeDetails"})}function p(n,t){n.rentedItems||(n.rentedItems=[]);n.startDate=n.startDate||t.startDate;n.endDate=n.endDate||t.endDate;for(var i=0;i<t.numberOfItemsToAdd;i++)n.rentedItems.push({id:!t.rentItem?null:t.rentItem.id,externalId:!t.rentItem?null:t.rentItem.externalId,rentCategoryId:t.rentCategoryId||null,itemTypeId:t.itemTypeId||null,rentCategory:t.rentCategory,rentItem:t.rentItem});f(n)}function w(n,t){n.rentedItems.splice(t,1);n.rentedItems.length||(n.startDate=null,n.endDate=null);f(n)}function b(n){n.rentedItems.length=0;n.startDate=null;n.endDate=null;f(n)}function k(n){var t={rentedItems:[],placeId:n};return r.isSupported&&(t=r.get("rentShoppingCart-"+n)||t),t}function f(n){r.isSupported&&r.set("rentShoppingCart-"+n.placeId,n)}function d(n){var t={placeId:n.placeId,rentedItems:n.rentedItems,fromUtc:n.startDate,toUtc:n.endDate,status:{status:0},userId:n.userId,studentId:n.studentId,isNotRegisteredUser:n.isNotRegisteredUser,notRegisteredUserInfo:n.notRegisteredUserInfo};return e(t)}var u=n("/restapi/rents/:id",{},{getById:{method:"GET",url:"/restapi/rents/:id"},getAll:{method:"GET",isArray:!0,url:"/restapi/rents"},getAllByPlaceAndDateRange:{method:"GET",isArray:!0,url:"/restapi/rents/info/range/find-by-place"},getAllByPlaceAndItemAndDateRange:{method:"GET",isArray:!0,url:"/restapi/rents/info/range/find-by-place-and-item"},getAllByPlaceAndRentCategoryAndTypeAndUserDateRange:{method:"GET",isArray:!0,url:"/restapi/rents/info/range/find-by-place-and-rent-category-and-item-type-and-user"},insert:{method:"POST",url:"/restapi/rents"},update:{method:"PUT",url:"/restapi/rents/:id"},"delete":{method:"DELETE",url:"/restapi/rents/:id"}});return{createNew:o,getById:c,getAll:l,getAllByPlaceAndDateRange:a,getAllByPlaceAndItemAndDateRange:v,getAllByPlaceAndRentCategoryAndTypeAndUserDateRange:y,insert:e,remove:s,update:h,addItemToShoppingCart:p,loadShoppingCart:k,saveShoppingCart:f,rentShoppingCart:d,removeItemFromShoppingCart:w,emptyShoppingCart:b}}])