﻿var sSchedule_common_dataModels = function () {

    function getModel(modelName) {
        var dataModel = null;
        switch (modelName) {
            case "Event":
                dataModel = kendo.data.Model.define({
                    id: "EventID",
                    fields: {
                        RowIndex: { type: "int" },
                        EventName: {
                            editable: true,
                            nullable: false,
                            validation: {
                                required: { message: "event name is req!" }
                            }
                        },
                        EventTypeString: {},
                        ActivityTypeString: {},
                        BeginDate: { type: "date" },
                        EndDate: { type: "date" },
                        IsDetailsVisible: { type: "boolean" },
                        DetailsLinkText: { type: "string" },
                        IsPosted: { type: "boolean" },
                        TotalEventsCount: { type: "number" },
                        IsAssignorSubmitted: { type: "boolean" }
                    }
                });
                break;
            case "Program":
                dataModel = kendo.data.Model.define({
                    fields: {
                        ProgramID: {},
                        ProgramName: {}
                    }
                });
                break;
            case "Division":
                dataModel = kendo.data.Model.define({
                    fields: {
                        DivisionID: {},
                        DivisionName: {}
                    }
                });
                break;
            case "Regions":
                dataModel = kendo.data.Model.define({
                    fields: {
                        Code: {},
                        Description: {},
                        RegionId: {}
                    }
                });
                break;
            case "Locations":
                dataModel = kendo.data.Model.define({
                    id: "LocationID",
                    fields:
			        {
			            RowNumber: { type: "string" },
			            RowStyle: { type: "string" },
			            Name: {
			                type: "string",
			                nullable: false,
			                validation: {
			                    required: { message: "Name is required!" }
			                },
			            },
			            IsExpanded: { type: "bool" },
			            IsFieldExpanded: { type: "bool" },
			            IsLocationBlackoutExpanded: { type: "bool" },
			            GlobalBlackOutList: { type: "Array" },
                        IsArchived: { type: "bool" },
                        Street: { type: "string" },
                        IsNewLocation: { type: "bool" },
			        }
                });
                break;
            case "ScheduleDetails":
                dataModel = kendo.data.Model.define({
                    id: "ScheduleEventId",
                    fields: {

                        AutomationLevel: { type: "string" },

                        Fields: { type: "Array" },
                        Teams: { type: "Array" },
                        BlackOutDates: { type: "Array" },
                        DivisionIdList: { type: "Array" },
                        EvenAvailability: { type: "Array" },

                        LocationBlackout: { type: "Array" },
                        FieldBlackout: { type: "Array" },
                        TeamBlackout: { type: "Array" },

                        ScheduledMatches: { type: "Array" },
                        FieldAvailabilities: { type: "Array" },
                        TeamAvailabilities: { type: "Array" },
                        TeamsMatches: { type: "Array" },

                        ScheduleName: { type: "string" },
                        ActivityType: { type: "string" },
                        ScheduleType: { type: "string" },
                        NoOfGamesPractice: { type: "number" },
                        IsGamesPracticeOn: { type: "boolean" },
                        NoOfGameVsOpponent: { type: "number" },
                        WinPoints: { type: "number" },
                        LossPoints: { type: "number" },
                        DrawPoints: { type: "number" },
                        StartDate: { type: "date" },
                        EndDate: { type: "date" },
                        IsMonday: { type: "boolean" },
                        IsTuesday: { type: "boolean" },
                        IsWednesday: { type: "boolean" },
                        IsThursday: { type: "boolean" },
                        IsFriday: { type: "boolean" },
                        IsSaturday: { type: "boolean" },
                        IsSunday: { type: "boolean" },
                        MondayStartTime: { type: "string" },
                        MondayEndTime: { type: "string" },
                        TuesdayStartTime: { type: "string" },
                        TuesdayEndTime: { type: "string" },
                        WednesdayStartTime: { type: "string" },
                        WednesdayEndTime: { type: "string" },
                        ThursdayStartTime: { type: "string" },
                        ThursdayEndTime: { type: "string" },
                        FridayStartTime: { type: "string" },
                        FridayEndTime: { type: "string" },
                        SaturdayStartTime: { type: "string" },
                        SaturdayEndTime: { type: "string" },
                        SundayStartTime: { type: "string" },
                        SundayEndTime: { type: "string" },
                        GameDurationHours: { type: "number" },
                        GameDurationMins: { type: "number" },
                        GameIntervalHours: { type: "number" },
                        GameIntervalMins: { type: "number" },
                        RoundIntervalDays: { type: "number" },
                        RoundIntervalHours: { type: "number" },
                        RoundIntervalMins: { type: "number" },
                        MaxNoOfGamesTeamPlayPerDay: { type: "number" },
                        NoOfGamesTeamPlaysPerWeek: { type: "number" },
                        IsScheduleDetailsEditable: { type: "boolean" },
                        IsPosted: { type: "boolean" },
                        IsReminderMailstatus: { type: "boolean" },
                        IsSingleEliminationOn: { type: "boolean" },
                        IsByRankOn: { type: "boolean" },
                        IsIgnoreCoachConflict: { type: "boolean" },
                        AdditionalRecipients: { type: "string" }
                    }
                });
                break;
            case "EventType":
                dataModel = kendo.data.Model.define({
                    fields: {
                        EventTypeID: {},
                        TypeName: {}
                    }
                });
                break;
            case "BlackoutDatesTarget":
                dataModel = kendo.data.Model.define({
                    fields: {
                        Id: {
                            type: "number"
                        },
                        Name: {
                            type: "string"
                        }
                    }
                });
                break;
            case "Team":
                dataModel = kendo.data.Model.define({
                    id: "TeamID",
                    fields: { TeamName: {}, RowIndex: { type: "int" }, ProgramName: {}, DivisionName: {}, IsFutureMatchScheduled: { type: "boolean" } }
                });
                break;
            case "DivisionTeam":
                dataModel = kendo.data.Model.define({
                    id: "TeamID",
                    fields: { TeamName: {} }
                });
                break;
            case "Field":
                dataModel = kendo.data.Model.define({
                    id: "FieldID",
                    fields:
					{
					    RowNumber: { type: "string" },
					    RowStyle: { type: "string" },
					    Name: {
					        editable: true,
					        type: "string",
					    },
					    IsActive: {
					        type: "Boolean",
					    },
					    IsArchived: {
					        type: "Boolean",
					    },
					    FloodLightsAvailability: {
					        type: "Boolean",
					    },
					    IsClosed: {
					        type: "Boolean",
					    },
					    IsFieldDisplay: {
					        type: "Boolean",
					    },
					    SortOrder: {
					        type: "number",
					    },
					    LocationID: {
					        type: "number",
					    },
					    RowIndex: {
					        type: "number"
					    },
					    LocationName: {
					        type: "string"
					    },
					    FieldStatus: {
					        type: "number",
					        "default": 0
					    },
					    HomeTeams: {
					        type: "Array"
					    },
					    IsFieldBlackoutExpanded: { type: "bool", defaultValue: false },
					    GlobalBlackOutList: { type: "Array" }
					}
                });
                break;
            case "ResourceAvailibility":
                dataModel = kendo.data.Model.define({
                    id: "ResourceAvailabilityId",
                    fields:
			        {
			            ResourceType: {
			                type: "string",
			                validation: {
			                    required: { message: "Please select Target type!" }
			                }
			            },
			            ResourceName: { type: "string" },
			            ResourceId: { type: "number" },
			            DateFrom: { type: "date" },
			            DateTo: { type: "date" },
			            StartTime: { type: "string" },
			            EndTime: { type: "string" },
			            DisplayStartTime: { type: "date" },
			            DisplayEndTime: { type: "date" },
			            Day: { type: "string" },
			            Comments: { type: "string" },
			            AvailabilityType: { type: "number" },
			            IsGlobalBlackout: { type: "boolean" },
			            IsApplyForFutureSchedules: { type: "boolean" }
			        }
                });
                break;
            case "ActivityType":
                dataModel = kendo.data.Model.define({
                    id: "SportsTypeID",
                    fields: {
                        SportsTypeName: { type: "string" }
                    }
                });
                break;
            case "EditMatches":
                dataModel = kendo.data.Model.define({
                    id: "SrNo",
                    fields: {
                        MatchID: { type: "number" },
                        MasterMatchId: { type: "number" },
                        Date: { type: "date" },
                        StartTime: { type: "date", defaultValue: "00:00" },
                        EndTime: { type: "date", defaultValue: "00:00" },
                        MatchOrderNo: { type: "number" },
                        RoundNumber: { type: "number" },
                        FieldID: { type: "number" },
                        HomeTeamID: { type: "number" },
                        AwayTeamID: { type: "number" },
                        Team1: { type: "string" },
                        Team2: { type: "string" },
                        LocationID: { type: "number" },
                        LocationName: { type: "string" },
                        FieldName: { type: "string" },
                        IsDeleted: { type: "boolean" },
                        Team1Type: { type: "number" },
                        Team2Type: { type: "number" },
                        ValidationErrorsList: { type: "array" },
                        ConflictsList: { type: "array" },
                        IsHideEditOptions: { type: "boolean" },
                        isTournamentGraphicalView: { type: "boolean", defaultValue: false },
                        isAwayTeamDisplayFirst: { type: "boolean" },
                        EventType: { type: "string" },
                        ActionStatus: { type: "number" },
                        StatusName: { type: "string" },
                        IsMatchStatusCanceled: { type: "boolean", defaultValue: false },
                        AssignedOfficials: { type: "number", defaultValue: 0 },
                        isGameAndSchedulePosted: { type: "boolean" }
                    }
                });
                break;
            case "ScheduleMatches":
                dataModel = kendo.data.Model.define({
                    id: "MatchID",
                    fields: {
                        Date: { type: "date" },
                        StartTime: { type: "string" },
                        EndTime: { type: "string" },
                        FieldAvailabilityID: { type: "" },
                        MatchOrderNo: { type: "number" },
                        IsArchived: { type: "boolean" },
                        RoundNumber: { type: "number" },
                        RoundType: { type: "string" },
                        HomeTeamPlaceHolder: { type: "string" },
                        AwayTeamPlaceHolder: { type: "string" },
                        FieldID: { type: "string" },
                        NextMatch: { type: "number" },
                        NextMatchLooserBracket: { type: "number" },
                        EventID: { type: "number" },
                        HomeTeamID: { type: "number" },
                        AwayTeamID: { type: "number" },
                        Team1: { type: "string" },
                        Team2: { type: "string" },
                        LocationName: { type: "string" },
                        FieldName: { type: "string" },
                        ActionStatus: { type: "number" },
                        AssignedOfficials: { type: "number", defaultValue:0 },
                        isGameAndSchedulePosted: { type: "boolean" }
                    }
                });
                break;
            case "MatchScheduling":
                dataModel = kendo.data.Model.define({
                    id: "Id",
                    fields: {
                        ScheduledMatches: { type: "Object" },
                        FieldAvailabilities: { type: "Object" },
                        TeamAvailabilities: { type: "Object" },
                        TeamsMatches: { type: "Object" },
                        SchedulingDetails: { type: "Object" }
                    }
                });
                break;
            case "Portal":
                dataModel = kendo.data.Model.define({
                    id: "PortalID",
                    fields: {
                        PortalName: { type: "string" }
                    }
                });
                break;
        }
        return dataModel;
    }

    return { getModel: getModel };
}