|
- "use strict";
-
- var TB = TB || {};
- TB.Control = TB.Control || {};
-
- TB.Control.Settings = {
- // Overview
- account : function( params )
- {
- TB.GUI.showLoader();
-
- var page = new TB.Page('settings_account');
-
- TB.Service.request('Account', 'getEmailChange', {}, function (data) {
- TB.GUI.hideLoader();
-
- if ( data && data.acc ) {
- TB.Client.updateSessionAccount( data.acc );
- }
-
- TB.GUI.show(page, {account: TB.Client.account, ec : (data.ec ? data.ec : null) });
-
- page.$container.find('#btn-change-password-cancel').click(function () {
-
- TB.Ext.Notification.show('Keine Änderungen vorgenommen.', TB.Ext.Notification.TYPE_INFO);
- TB.Controller.reload();
-
- });
-
- page.$container.find('#btn-change-password-submit').click(function () {
-
- if (!TB.GUI.performFormValidation($('#form_change_password'))) {
- return false;
- }
-
- TB.Service.request(
- 'Account',
- 'changePassword',
- $('#form_change_password').serializeObject(),
- function (res) {
-
- if (res && res.ok) {
-
- TB.Ext.Notification.show('Passwort erfolgreich geändert.', TB.Ext.Notification.TYPE_SUCCESS);
- TB.Controller.reload();
-
- } else if (res && res.nochange) {
-
- TB.Ext.Notification.show('Neues und altes Passwort sind identisch. Keine Änderungen.', TB.Ext.Notification.TYPE_WARNING);
-
- } else if (res && res.oldpasswordnok) {
-
- TB.Ext.Notification.show('Das alte Password ist nicht korrekt.', TB.Ext.Notification.TYPE_DANGER);
-
- }
-
- },
- $(this)
- );
-
- return false;
- });
-
- page.$container.find('#btn-change-email-cancel').click(function () {
-
- TB.Ext.Notification.show('Keine Änderungen vorgenommen.', TB.Ext.Notification.TYPE_INFO);
- TB.Controller.reload();
-
- });
-
-
- page.$container.find('#btn-change-email-submit').click(function () {
- if (!TB.GUI.performFormValidation($('#form_change_email'))) {
- return false;
- }
-
- TB.Service.request(
- 'Account',
- 'changeEmail',
- $('#form_change_email').serializeObject(),
- function (res) {
-
- if (res && res.ok) {
-
- TB.Ext.Notification.show('Eine Validierungsnachricht wurde an die neue Email Adresse geschickt. Bitte folge den Anweisungen in der Mail.', TB.Ext.Notification.TYPE_SUCCESS);
- TB.Controller.reload();
-
- } else if (res && res.nochange) {
-
- TB.Ext.Notification.show('Neue Email Adresse ist identisch mit deiner alten Adresse. Keine Änderungen.', TB.Ext.Notification.TYPE_WARNING);
-
- } else if (res && res.emailexists) {
-
- TB.Ext.Notification.show('Die Email Adresse existiert bereits im System. Wenn du mehrere Accounts zusammenlegen möchtest, wende dich bitte an den Support.', TB.Ext.Notification.TYPE_WARNING);
-
- } else if (res && res.invalidpw) {
- TB.Ext.Notification.show('Das eingegebene Passwort ist falsch.', TB.Ext.Notification.TYPE_WARNING);
- }
- },
- $(this)
- );
- return false;
- });
- });
- }
- ,
- premium : function( params )
- {
- TB.GUI.showLoader();
- var page = new TB.Page('settings_premium' ),
- showSuccess = params.hasOwnProperty( 'success' ) && "1" == params.success ? true : false,
- showCancellation = params.hasOwnProperty( 'cancellation' ) && "1" == params.cancellation ? true : false;
-
- TB.Service.request(
- 'Settings',
- 'getPremiumDetails',
- {},
- function( data )
- {
- var teamName,
- teams = data && data.teams && data.teams.length ? data.teams : [];
-
- if ( data && data.premium_logs && data.premium_logs.length > 0 )
- {
- teamName = '-gelöscht-';
-
- for ( var pli = 0; pli < data.premium_logs.length; pli++ )
- {
- for ( var ti = 0; ti < teams.length; ti++ )
- {
- if ( teams[ ti ].id == data.premium_logs[ pli ].team_id )
- {
- teamName = teams[ ti ].display_name;
- break;
- }
- }
-
- data.premium_logs[ pli ].__teamName = teamName;
- }
- }
-
- TB.GUI.show( page, data );
-
- page.$container.find( '[data-type="book-premium"]' ).on( 'click', function()
- {
- var currentTeam = TB.Client.getCurrentTeam(),
- premiumTeamId = $(this).attr( 'data-team-id' ),
- profileId;
-
- if ( premiumTeamId == currentTeam.id )
- {
- TB.Controller.do( 'Settings', 'order_premium' );
- }
- else
- {
- // Change team - redirect to Setting-order_premium, reload
- for ( var pi = 0; pi < TB.Client.profiles.length; pi++ )
- {
- if ( TB.Client.profiles[ pi ].team_id == premiumTeamId )
- {
- profileId = TB.Client.profiles[ pi ].id;
- break;
- }
- }
-
- if ( profileId )
- {
- TB.Service.request( 'Profile', 'change', { profile_id : profileId },
- function( data )
- {
- if ( data && data.session && data.profile && data.profiles && data.teams )
- {
- TB.Client.setSessionData( TB.Client.account, data.profile, data.session, data.profiles, data.teams );
- $( window ).off( 'hashchange' );
- TB.Controller.updateHash( 'Settings', 'order_premium' );
- location.reload( true );
- }
- }
- );
- }
-
- }
-
- });
-
- TB.GUI.hideLoader();
-
- if ( true === showSuccess )
- {
- TB.Ext.Alert.modal({
- title : 'Kauf erfolgreich abgeschlossen',
- text : 'Vielen Dank, dass du dich für TBuddy Premium entschieden hast.',
- type : 'success',
- showCancelButton : false
- });
- }
- else if ( true === showCancellation )
- {
- TB.Ext.Alert.modal({
- title : 'Premium Paket storniert.',
- text : 'Achtung. Sobald das Premium Paket abgelaufen ist, stehen dem gesamten Team die Premiumfunktionen nicht mehr zur Verfügung.',
- type : 'warning',
- showCancelButton : false
- });
- }
- }
- );
-
-
- }
- ,
- premium_detail : function( params )
- {
- TB.GUI.showLoader();
- var page = new TB.Page('settings_premium_detail' );
-
- TB.Service.request(
- 'Settings',
- 'getPremiumDetail',
- { premiumLogId : params.premium_log_id },
- function( data )
- {
- TB.GUI.show( page, data );
- TB.GUI.hideLoader();
- }
- );
- }
- ,
- premium_edit : function( params )
- {
- TB.GUI.showLoader();
- var page = new TB.Page('settings_premium_edit' ),
- premiumLogId = params.premium_log_id ? params.premium_log_id : null,
- $bf,
- billingData = {};
-
- TB.Service.request(
- 'Settings',
- 'getPremiumDetail',
- { premiumLogId : premiumLogId },
- function( data )
- {
- TB.GUI.show( page, data );
-
- page.$container.find( '[data-id="btn-cancel-subscription"]' ).first().click( function()
- {
- TB.Ext.Alert.modal(
- {
- title: "Bist du sicher, dass Du das Premium Paket stornieren möchtest?",
- text: "Du und dein Team verlierst damit zum nächsten Abrechnungsdatum den Premium Status und somit die Möglichkeit, die TBuddy Prmeium Funktionen nützen zu können.",
- confirmButtonText : 'Ja, stornieren!',
- type: 'warning'
- },
- function()
- {
- $("html, body").animate({ scrollTop: 0 }, "slow");
- TB.GUI.showLoader();
- TB.Service.request(
- 'Settings',
- 'cancelSubscription',
- {
- premiumLogId : premiumLogId
- },
- function( res )
- {
- TB.Controller.do( 'Settings', 'premium', { cancellation : 1 } );
- }
- );
- }
- )
- });
-
- page.$container.find( '[data-id="btn-update-subscription"]' ).first().click( function()
- {
- if ( !TB.GUI.performFormValidation( $( '#form_billing_address' ) ) )
- {
- TB.Ext.Alert.modal(
- {
- title: "Fehlerhafter Rechnungsempfänger",
- text: "Bitte kontrolliere die Eingaben im Bereich des Rechnungsempfängers.",
- confirmButtonText : 'Stornieren!',
- type: 'warning',
- showCancelButton: false
- }
- );
- return false;
- }
-
-
- // BillingForm
- $bf = $( '#form_billing_address' );
- billingData.company_name = $bf.find( 'input[name="company_name"]' ).val();
- billingData.tax_id = $bf.find( 'input[name="tax_id"]' ).val();
- billingData.first_name = $bf.find( 'input[name="first_name"]' ).val();
- billingData.last_name = $bf.find( 'input[name="last_name"]' ).val();
- billingData.street = $bf.find( 'input[name="street"]' ).val();
- billingData.zip_code = $bf.find( 'input[name="zip_code"]' ).val();
- billingData.city = $bf.find( 'input[name="city"]' ).val();
- billingData.email = $bf.find( 'input[name="email"]' ).val();
-
- TB.Service.request(
- 'Settings',
- 'updatePremiumDetail',
- {
- premiumLogId : premiumLogId,
- billingData : billingData
- },
- function( data )
- {
- TB.Ext.Notification.show(
- 'Daten erfolreich aktualisiert. Sie werden ab der nächsten Buchung berücksichtigt.',
- TB.Ext.Notification.TYPE_SUCCESS
- );
-
- TB.Controller.do( 'Settings', 'premium_detail', { premium_log_id : premiumLogId } );
- }
- );
-
- return false;
- });
-
- TB.GUI.hideLoader();
- }
- );
- }
- ,
- order_premium : function( params )
- {
- TB.GUI.showLoader();
-
- var page,
- braintreeCustomerData = null,
- billingData = {},
- $bf,
- selectedPremiumId = params.hasOwnProperty( 'selectedpackage' ) ? params.selectedpackage.toUpperCase() : null,
- activeTab = 'premium';
-
- TB.Service.request( 'Team', 'load', { addPremium : true } , function( data ) {
-
- TB.GUI.hideLoader();
-
- if ( false === TB.Premium.isValidPremiumPackage( selectedPremiumId ) )
- {
- selectedPremiumId = TB.Premium.getRecommendedPremiumPackageForTeam( data.team, data.profiles );
- }
-
- data.numProfiles = data.profiles.length;
- data.activeTab = activeTab;
- data.braintreeCustomerData = braintreeCustomerData;
- data.selectedPremiumId = selectedPremiumId;
- data.possiblePackages = TB.Premium.getPossiblePremiumPackagesForTeam( data.team, data.profiles );
- data.account = TB.Client.account;
-
- page = new TB.Page( 'settings_premium_order' );
-
- TB.GUI.show(page, data);
-
- page.$container.find( 'button[data-type="btn-premium-select"]' ).click( function()
- {
- var $btn = $(this);
-
- // Remove all active states
- page.$container.find( 'button.btn-premium-selected' ).each( function( i, v ) {
- var $btn = $(this);
- $btn.removeClass( 'btn-premium-selected' );
- $btn.find( 'span.btn-premium-selected-text' ).hide();
- $btn.find( 'span.btn-premium-select-text' ).show();
- });
-
- // Set active state to pressed button
- $btn.addClass( 'btn-premium-selected' );
- $btn.find( 'span.btn-premium-select-text' ).hide();
- $btn.find( 'span.btn-premium-selected-text' ).show();
-
- selectedPremiumId = $btn.attr( 'data-premium-id' );
-
- data.selectedPremiumId = selectedPremiumId;
-
- page.$container.find( '[data-id="premium-summary-container"]' ).first().html(
- tmpl( 'tpl_settings_premium_order_summary', { data: data } )
- );
-
- return false;
- });
-
-
- braintree.setup(
- TB.Client.BRAINTREE_CLIENT_TOKEN,
- //'sandbox_ddbykh5t_mmr6s9yxbhkcf57q', // SANDBOX
- //'production_w8xgg4jb_4n796zqzrv66pysf', // PRODUCTION
- 'custom',
- {
- paypal : {
- container : 'paypal-container',
- locale : 'de_DE',
- displayName : 'TBuddy UG (haftungsbeschränkt)',
- onCancelled : function()
- {
- braintreeCustomerData = null;
- data.braintreeCustomerData = braintreeCustomerData;
- page.$container.find( '[data-id="premium-summary-container"]' ).first().html(
- tmpl( 'tpl_settings_premium_order_summary', { data: data } )
- );
- }
- },
- onPaymentMethodReceived : function( obj )
- {
- braintreeCustomerData = obj;
- data.braintreeCustomerData = braintreeCustomerData;
- page.$container.find( '[data-id="premium-summary-container"]' ).first().html(
- tmpl( 'tpl_settings_premium_order_summary', { data: data } )
- );
- }
- }
- );
-
- page.$container.find( 'button[data-id="btn-create-premium"]' ).first().click( function()
- {
-
- if ( !braintreeCustomerData )
- {
- TB.Ext.Alert.modal(
- {
- title: "Fehlender Paypal Account",
- text : "Drücke auf den Paypal-Button und wähle das Rechnungskonto aus.",
- type: 'warning',
- showCancelButton : false
- }
- );
- return false;
- }
- else if ( !selectedPremiumId )
- {
- TB.Ext.Alert.modal(
- {
- title: "Unbekanntes Premium Paket",
- text : "Das angegebene Paket scheint nicht zu existieren.",
- type: 'error',
- showCancelButton : false
- }
- );
- return false;
- }
- else if ( !TB.GUI.performFormValidation( $( '#form_billing_address' ) ) )
- {
- TB.Ext.Alert.modal(
- {
- title: "Fehlerhafter Rechnungsempfänger",
- text : "Bitte kontrolliere die Eingaben im Bereich des Rechnungsempfängers.",
- type: 'warning',
- showCancelButton : false
- }
- );
- return false;
- }
- else if ( false === page.$container.find( '[data-id="checkbox-billing-premium-agb"]' ).first().is( ':checked' ) )
- {
- TB.Ext.Alert.modal(
- {
- title: "Akzeptiere die AGBs",
- text : "Du musst die AGBs akzeptieren, bevor du die Bestellung abschicken kannst.",
- type: 'warning',
- showCancelButton : false
- }
- );
- return false;
- }
- else
- {
- // BillingForm
- $bf = $( '#form_billing_address' );
- billingData.company_name = $bf.find( 'input[name="company_name"]' ).val();
- billingData.tax_id = $bf.find( 'input[name="tax_id"]' ).val();
- billingData.first_name = $bf.find( 'input[name="first_name"]' ).val();
- billingData.last_name = $bf.find( 'input[name="last_name"]' ).val();
- billingData.street = $bf.find( 'input[name="street"]' ).val();
- billingData.zip_code = $bf.find( 'input[name="zip_code"]' ).val();
- billingData.city = $bf.find( 'input[name="city"]' ).val();
- billingData.email = $bf.find( 'input[name="email"]' ).val();
-
- $("html, body").animate({ scrollTop: 0 }, "slow");
- TB.GUI.showLoader();
-
- TB.Service.request(
- 'Team',
- 'createPremium',
- {
- billingData : billingData,
- braintreeCustomerData : braintreeCustomerData,
- packageId : selectedPremiumId
- },
- function( data )
- {
- var pageSuccess;
-
- if ( data && data.team )
- {
- TB.Client.updateSessionTeam( data.team );
- }
-
- TB.Utils.trackEvent( 'premium', 'booked' );
-
- TB.Controller.do( 'Settings', 'premium', { success : 1 } );
- }
- );
- }
- });
-
- });
- }
- ,
- billing : function( params )
- {
- TB.GUI.showLoader();
- var page = new TB.Page('settings_billing' );
-
- TB.Service.request(
- 'Settings',
- 'getBilling',
- {},
- function( data )
- {
- TB.GUI.show( page, data );
-
- page.$container.find( '[data-invoice-id]' ).click( function()
- {
- TB.Controller.do( 'Settings', 'billingdetail', { bid : $(this).attr( 'data-invoice-id' ) } );
- });
-
-
- TB.GUI.hideLoader();
- }
- );
- }
- ,
- billingdetail : function( params )
- {
- var billingId = params.bid || null;
-
- TB.GUI.showLoader();
- var page = new TB.Page('settings_billing_detail' );
-
- TB.Service.request(
- 'Settings',
- 'getBillingDetail',
- { id : billingId },
- function( data )
- {
- TB.GUI.show( page, data );
-
- page.$container.find( '[data-id="btn-invoice-print"]' ).click( function()
- {
- window.print();
- });
-
- TB.GUI.hideLoader();
- }
- );
- }
- };
|