﻿var sSchedule_dataSources_schedulingteamsDataSource = 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, parameterMapFunc, successCallback, readCallBack) {
		var dataSource = null;
		var dataModel = null;
		var apiName = null;
		var readEntity = null;
		var crudServiceBaseUrl = null;

		switch (name) {
			case "TeamDs":
				apiName = "SchedulingTeams";
				readEntity = "GetAllTeamsByDivisionIdListWithAvailabilityStatus";
				dataModel = models.getModel("Team");

				crudServiceBaseUrl = serviceRootUrl + apiName + "/";
				dataSource = new kendo.data.DataSource({
					transport: {
						read: dataStore.readDs(crudServiceBaseUrl, readEntity, readCallBack),
						parameterMap: parameterMapFunc
					},
					error: dataStore.errorDs(),
					schema: {
						type: "json",
						model: dataModel
					}
				});
				break;
			case "AllTeamsDs":
				apiName = "SchedulingTeams";
				readEntity = "GetAllTeamsByPortalId";
				dataModel = models.getModel("Team");

				crudServiceBaseUrl = serviceRootUrl + apiName + "/";
				
				dataSource = new kendo.data.HierarchicalDataSource({
					transport: {
						read: dataStore.readDs(crudServiceBaseUrl, readEntity, readCallBack),
						parameterMap: parameterMapFunc
					},
					error: dataStore.errorDs(),
					schema: {
						type: "json",
						model: {
							id: "TeamID",
							hasChildrend: false
						}
					},

				});

				break;
			case "DivisionTeamDs":
				apiName = "SchedulingTeams";
				readEntity = "GetTeamsForDivision";
				dataModel = models.getModel("DivisionTeam");

				crudServiceBaseUrl = serviceRootUrl + apiName + "/";
				dataSource = new kendo.data.DataSource({
					transport: {
						read: dataStore.readDs(crudServiceBaseUrl, readEntity, readCallBack),
						parameterMap: parameterMapFunc
					},
					error: dataStore.errorDs(),
					schema: {
						type: "json",
						model: dataModel
					}
				});
				break;
		}
		return dataSource;
	}

	return { getDsByName: getDsByName };
}