mondora/mondora-website-front

View on GitHub
app/pages/admin/admin.js

Summary

Maintainability
C
1 day
Test Coverage
angular.module("mnd-web.pages")

.controller("AdminController", ["$scope", "$interval", function ($scope, $interval) {

    // Configurations
    $scope.amazonS3Config = $scope.Configurations.reactiveQuery({name: "amazonS3"}).result[0];
    $scope.homeConfig = $scope.Configurations.reactiveQuery({name: "home"}).result[0];
    $scope.menuConfig = $scope.Configurations.reactiveQuery({name: "menu"}).result[0];
    $scope.signupEmailTemplatesConfig = $scope.Configurations.reactiveQuery({name: "signupEmailTemplates"}).result[0];

    ///////////////////
    // Save function //
    ///////////////////

    var menuConfigCache = angular.copy($scope.menuConfig);
    delete menuConfigCache._id;
    var homeConfigCache = angular.copy($scope.homeConfig);
    delete homeConfigCache._id;
    var amazonS3ConfigCache = angular.copy($scope.amazonS3Config);
    delete amazonS3ConfigCache._id;
    var signupEmailTemplatesConfigCache = angular.copy($scope.signupEmailTemplatesConfig);
    delete signupEmailTemplatesConfigCache._id;

    $scope.save = function () {

        // Menu configuration
        menuConfig = angular.copy($scope.menuConfig);
        delete menuConfig._id;
        // Only perform the update if there were modifications
        if (!angular.equals(menuConfig, menuConfigCache)) {
            menuConfigCache = menuConfig;
            $scope.Configurations.update($scope.menuConfig._id, menuConfig).remote.fail(function (err) {
                console.log(err);
            });
        }

        // Home configuration
        homeConfig = angular.copy($scope.homeConfig);
        delete homeConfig._id;
        // Only perform the update if there were modifications
        if (!angular.equals(homeConfig, homeConfigCache)) {
            homeConfigCache = homeConfig;
            $scope.Configurations.update($scope.homeConfig._id, homeConfig).remote.fail(function (err) {
                console.log(err);
            });
        }

        // Amazon S3 configuration
        var amazonS3Config = angular.copy($scope.amazonS3Config);
        delete amazonS3Config._id;
        // Only perform the update if there were modifications
        if (!angular.equals(amazonS3Config, amazonS3ConfigCache)) {
            amazonS3ConfigCache = amazonS3Config;
            $scope.Configurations.update($scope.amazonS3Config._id, amazonS3Config).remote.fail(function (err) {
                console.log(err);
            });
        }

        // Signup email templates configuration
        var signupEmailTemplatesConfig = angular.copy($scope.signupEmailTemplatesConfig);
        delete signupEmailTemplatesConfig._id;
        // Only perform the update if there were modifications
        if (!angular.equals(signupEmailTemplatesConfig, signupEmailTemplatesConfigCache)) {
            signupEmailTemplatesConfigCache = signupEmailTemplatesConfig;
            $scope.Configurations.update($scope.signupEmailTemplatesConfig._id, signupEmailTemplatesConfig).remote.fail(function (err) {
                console.log(err);
            });
        }

    };

    var interval = $interval($scope.save, 1000);
    $scope.$on("$destroy", function () {
        $interval.cancel(interval);
    });

}]);