brokers.controller.js 6.63 KB
app.controller('brokersController', function ($scope, $mdDialog, $mdToast, brokersFactory ) {

    // read products
    $scope.readBrokers = function () {

        // use products factory
        brokersFactory.readBrokers().then(function successCallback(response) {
            $scope.brokers = response.data;
        }, function errorCallback(response) {
            $scope.showToast("Unable to read record.");
        });
    }

    // show 'create form' in dialog box
    $scope.showCreateForm = function (event) {

        $mdDialog.show({
                           controller: DialogController,
                           templateUrl: '/wp-content/plugins/broker-settings/create_broker.template.html',
                           parent: angular.element(document.body),
                           targetEvent: event,
                           clickOutsideToClose: true,
                           scope: $scope,
                           preserveScope: true,
                           fullscreen: true // Only for -xs, -sm breakpoints.
                       });
    }

    // methods for dialog box
    function DialogController($scope, $mdDialog) {
        $scope.cancel = function () {
            $mdDialog.cancel();
        };
    }

    // create new product
    $scope.createBroker = function () {

        brokersFactory.createBroker($scope).then(function successCallback(response) {
            // tell the user new product was created
            $scope.showToast(response.data.message);

            // refresh the list
            $scope.readBrokers();

            // close dialog
            $scope.cancel();

            // remove form values
            $scope.clearBrokerForm();

        }, function errorCallback(response) {
            $scope.showToast("Unable to create record.");
        });
    }

    // clear variable / form values
    $scope.clearBrokerForm = function () {
        $scope.broker_id = "";
        $scope.brokerage = "";
    }

    // show toast message
    $scope.showToast = function (message) {
        $mdToast.show(
            $mdToast.simple()
                .textContent(message)
                .hideDelay(3000)
                .position("top right")
        );
    }

    // retrieve record to fill out the form
    $scope.readOneBroker = function (id) {

        // get product to be edited
        brokersFactory.readOneBroker(id).then(function successCallback(response) {

            // put the values in form
            $scope.id = response.data.id;
            $scope.broker_id = response.data.broker_id;
            $scope.brokerage = response.data.brokerage;

            $mdDialog.show({
                               controller: DialogController,
                               templateUrl: '/wp-content/plugins/broker-settings/read_one_broker.template.html',
                               parent: angular.element(document.body),
                               targetEvent: event,
                               clickOutsideToClose: true,
                               scope: $scope,
                               preserveScope: true,
                               fullscreen: true
                           }).then(
                function () {
                },

                // user clicked 'Cancel'
                function () {
                    // clear modal content
                    $scope.clearBrokerForm();
                }
            );

        }, function errorCallback(response) {
            $scope.showToast("Unable to retrieve record.");
        });

    }

    // retrieve record to fill out the form
    $scope.showUpdateBrokerForm = function (id) {

        // get product to be edited
        brokersFactory.readOneBroker(id).then(function successCallback(response) {

            // put the values in form
            $scope.id = response.data.id;
            $scope.broker_id = response.data.broker_id;
            $scope.brokerage = response.data.brokerage;

            $mdDialog.show({
                               controller: DialogController,
                               templateUrl: '/wp-content/plugins/broker-settings/update_broker.template.html',
                               parent: angular.element(document.body),
                               targetEvent: event,
                               clickOutsideToClose: true,
                               scope: $scope,
                               preserveScope: true,
                               fullscreen: true
                           }).then(
                function () {
                },

                // user clicked 'Cancel'
                function () {
                    // clear modal content
                    $scope.clearBrokerForm();
                }
            );

        }, function errorCallback(response) {
            $scope.showToast("Unable to retrieve record.");
        });

    }

    // update product record / save changes
    $scope.updateBroker = function () {

        brokersFactory.updateBroker($scope).then(
            function successCallback(response) {

                // tell the user product record was updated
                $scope.showToast(response.data.message);

                // refresh the product list
                $scope.readBrokers();

                // close dialog
                $scope.cancel();

                // clear modal content
                $scope.clearBrokerForm();

            },
            function errorCallback(response) {
                $scope.showToast("Unable to update record.");
            }
        );

    }

    // cofirm product deletion
    $scope.confirmDeleteBroker = function (event, id) {

        // set id of record to delete
        $scope.id = id;

        // dialog settings
        var confirm = $mdDialog.confirm()
            .title('Are you sure?')
            .textContent('Broker will be deleted.')
            .targetEvent(event)
            .ok('Yes')
            .cancel('No');

        // show dialog
        $mdDialog.show(confirm).then(
            // 'Yes' button
            function () {
                // if user clicked 'Yes', delete product record
                $scope.deleteBroker();
            },

            // 'No' button
            function () {
                // hide dialog
            }
        );
    }

    // delete product
    $scope.deleteBroker = function () {

        brokersFactory.deleteBroker($scope.id).then(function successCallback(response) {

            // tell the user product was deleted
            $scope.showToast(response.data.message);

            // refresh the list
            $scope.readBrokers();

        }, function errorCallback(response) {
            $scope.showToast("Unable to delete record.");
        });

    }
});