﻿var sSchedule_dataSources_eventFilterDataSource = function () {
    //#region ------------------- ' Variables '-----------------------

    var dataStore = new sSchedule_dataSources();
    var models = new sSchedule_common_dataModels();
    var common = new Sschedule_commonFunctions();
    var serviceRootUrl = common.getServiceRootUrl();

    //#endregion ------------------- ' Variables '-----------------------

    function getDsByName(name, params, successCallback, parameterMapFunc, readCallback) {
        var dataSource = null;
        switch (name) {
            case "ProgramDs":
                dataModel = "Program";
                apiName = "ProgramDivision";
                readEntity = "GetAllProgramsForSchedule";
                model = models.getModel(dataModel);
                crudServiceBaseUrl = serviceRootUrl + apiName + "/";
                dataSource = new kendo.data.DataSource({
                    transport: {
                        read: dataStore.readDs(crudServiceBaseUrl, readEntity, readCallback),
                        parameterMap: function (options, operation) {
                            if (operation == "read") {
                                var params = { portalId: sSchedule_portalId };
                                return params;
                            }
                        }
                    },
                    error: dataStore.errorDs(),
                    schema: {
                        type: "json",
                        model: model
                    }
                });
                break;
            case "EventTypeDs":
                dataModel = "EventType";
                apiName = "SchedulingEvents";
                readEntity = "GetAllEventTypes";
                model = models.getModel(dataModel);
                crudServiceBaseUrl = serviceRootUrl + apiName + "/";
                dataSource = new kendo.data.DataSource({
                    transport: {
                        read: dataStore.readDs(crudServiceBaseUrl, readEntity, readCallback),
                        parameterMap: parameterMapFunc
                    },
                    error: dataStore.errorDs(),
                    schema: {
                        type: "json",
                        model: model
                    }
                });
                break;

            case "DivisionDs":
                dataModel = "Division";
                apiName = "ProgramDivision";
                readEntity = "GetAllDivisionsByProgramId";
                model = models.getModel(dataModel);
                crudServiceBaseUrl = serviceRootUrl + apiName + "/";
                dataSource = new kendo.data.DataSource({
                    transport: {
                        read: dataStore.readDs(crudServiceBaseUrl, readEntity, readCallback),
                        parameterMap: parameterMapFunc
                    },
                    error: dataStore.errorDs(),
                    schema: {
                        type: "json",
                        model: model
                    }
                });
                break;
            case "ProgramDivisionDs":
                dataModel = "Program";
                apiName = "ProgramDivision";
                readEntity = "GetAllProgramsDivisionsForSchedule";
                model = models.getModel(dataModel);
                crudServiceBaseUrl = serviceRootUrl + apiName + "/";
                dataSource = new kendo.data.DataSource({
                    transport: {
                        read: dataStore.readDs(crudServiceBaseUrl, readEntity, readCallback),
                        parameterMap: function (options, operation) {
                            if (operation == "read") {
                                var params = { portalId: sSchedule_portalId };
                                return params;
                            }
                        }
                    },
                    error: dataStore.errorDs(),
                    schema: {
                        type: "json",
                        model: model
                    }
                });
                break;
        }
        return dataSource;
    }

    return { getDsByName: getDsByName };
}