const ContractCharging = { route : 'contract/charging/:groupId', templateUrl : 'js/app/views/contract/contract-charging.html', navigatioData : null, redirectUrl : 'auth/login', canAccess : function() { return this.app.user.isLoggedIn(); }, create : function( p ) { this.container = this.app.UI.getContentContainer(); const $container = $( this.container ), app = this.app, members = [], groupId = p.get( 'groupId' ), profileIdsWithActiveContract = [], self = this; function getMemberById( mId ) { let m = null; for ( let mi = 0; mi < members.length; mi++ ) { if ( members[ mi ].id == mId ) { m = members[ mi ]; break; } } return m; } this.render(); app.rpc.call( 'Team', 'getDetails', { teamId : groupId, includeMembers: true }, function( res ) { if ( res && res.hasOwnProperty( 'data' ) && res.data.hasOwnProperty( 'members' ) ) { let m; for ( let mi = 0; mi < res.data.members.length; mi++ ) { m = self.createInstance( 'UserProfile', res.data.members[ mi ] ); m.contextGroupId = p.get( 'groupId' ); members.push( m ); } app.rpc.call( 'Contract', 'getList', { teamId : groupId, state : 'active' }, function( res ) { if (res && res.hasOwnProperty('data') && res.data.hasOwnProperty('contractData')) { const cs = res.data.contractData; for (let ci = 0; ci < cs.length; ci++) { profileIdsWithActiveContract[cs[ci]['profile_id']] = 1; } } app.rpc.call( 'Contract', 'getUnchargedProfileIds', { teamId: groupId }, function (res) { let unchargedItems = [], memberIdsInList = []; if (res && res.hasOwnProperty('data') && res.data.hasOwnProperty('unchargedProfileIds')) { const up = res.data.unchargedProfileIds; for (let upi = 0; upi < up.length; upi++) { memberIdsInList.push(+up[upi].profile_id); unchargedItems.push({ member: getMemberById(up[upi].profile_id), count: up[upi].cnt, hasActiveContract: profileIdsWithActiveContract.hasOwnProperty(up[upi].profile_id) }); } } for (let mi = 0; mi < members.length; mi++) { if (-1 === memberIdsInList.indexOf(+members[mi].id)) { unchargedItems.push({ member: members[mi], count: 0, hasActiveContract: -1 !== profileIdsWithActiveContract.indexOf(+members[mi].id) }); } } let st = self.createComponent( 'contract-uncharged-member-data-table', $container.find('[f-id="container-contract-uncharged-member-table"]').first().get(0), { unchargedItems: unchargedItems, groupId: groupId } ); $container.find('.sk-loading').toggleClass('sk-loading'); }.bind(this) ); } ); } } ); }, destroy : function() { } }; export { ContractCharging };