QBO3 Angular Form Example

HTML

<div ng-app="quandisDemo">
    <div id="testing" ng-controller="LoginController">
        <div ng-controller="TaskController as task">
            <form ng-submit="task.save()">
                <div>
                    <div>Field:
                        <input type="text" ng-model="task.formData.Available" required />
                    </div>
                    <div>Check:
                        <input type="checkbox" ng-model="task.formData.TestCheck" />
                    </div>
                    <div>Date:
                        <input type="date" ng-model="task.formData.TestDate"/>
                    </div>
                    <button>Save</button>
                </div>
            </form>
        </div>
    </div>
</div>

JavaScript

angular.module('quandisDemo', []);

angular.module('quandisDemo').factory('qbo', function ($http) {
    return {
        request: function (url, params, success) {
            $http({
                method: 'POST',
                url: url,
                params: params,
                crossDomain: false,
                headers: {
                    'qboAutomation': true
                },
                withCredentials: true,
                responseType: 'json'
            }).success(success);
        }
    };
});

angular.module('quandisDemo').filter('myDate', function($filter){
    return function(input){
        var _date = new Date(input);
        _date.setUTCHours(_date.getUTCHours()+7);
        _date = $filter('date')(_date, 'yyyy-MM-dd');
        return _date;
    };
});

angular.module('quandisDemo').controller('LoginController', function (qbo) {
    var login = this;
    login.url = "http://demo.quandis.net/Security/Person.ashx/Select?ID=1&Output=Json";
 
    login.success = function (data) {
        console.log('You have logged in.');
    };
    qbo.request(login.url, login.params, login.success);
});

angular.module('quandisDemo').controller('TaskController', function (qbo, $filter) {
    var task = this;
    task.url = "http://demo.quandis.net/Decision/ImportForm.ashx/";
    task.params = {
        ImportFormTemplateID: 16
    };
    task.success = function (data) {
        console.log(data);
        task.formData = task.transformResponse(data);
        task.formData.TestDate = $filter('myDate')(task.formData.TestDate);
    };

    qbo.request(task.url + "Select?Output=Json", task.params, task.success);

    task.save = function () {
        var testDate = task.formData.TestDate;
        testDate = new Date(task.formData.TestDate).toISOString();
        testDate = testDate.substring(0, testDate.length-5);
        task.formData.TestDate = testDate;
        qbo.request(task.url + "Save?Output=Json", task.formData, task.success);
    };

   ...