﻿/// <reference path="./API/Agility.UGC.API.js" />


Agility.RegisterNamespace("Subaru.ActivityDataAccess");

(function(ActivityDataAccess) {

    ActivityDataAccess.SearchCriteria = null;
    ActivityDataAccess.SearchPage = 1;
    ActivityDataAccess.ActivityData = new Array();
    ActivityDataAccess.TotalSearchResults = 0;

    ActivityDataAccess.GetActivity = function(activityID, callback) {

        //Get Main Activity Record
        Agility.UGC.API.GetRecord(activityID, callback);
    };

    ActivityDataAccess.GetActivityDetails = function(activityID, callback) {
        //Get Details Record

        var search = "ActivityID = " + activityID;

        var searchArg = {
            RecordTypeName: "ActivityDetails",
            PageSize: 1,
            RecordOffset: 0,
            //SortedField: "CreatedOn",
            //SortDirection: Agility.UGC.API.SortDirection.DESC,
            Search: search
        }

        Agility.UGC.API.SearchRecords(searchArg, function(data) {
            if (data.ResponseType != Agility.UGC.API.ResponseType.OK) {
                ErrorOccured = true;
            } else {
                if (data.ResponseData.Records.length > 0) {

                    var details = data.ResponseData.Records[0];
                    Agility.UGC.API.GetRecord(details.ID, callback);
                }
            }
        });
    };

    ActivityDataAccess.GetActivityReviews = function(activityID, callback) {
        //Get Reviews Records
        var searchArg = {
            RecordTypeName: "ActivityReviews",
            PageSize: 100,
            RecordOffset: 0,
            SortedField: "CreatedOn",
            SortDirection: Agility.UGC.API.SortDirection.DESC,
            Search: "ActivityID = " + activityID
        }
        Agility.UGC.API.SearchRecords(searchArg, callback);
    };

    ActivityDataAccess.GetActivityMedia = function(activityID, callback) {
        //Get Media Records
        var searchArg = {
            RecordTypeName: "ActivityFileMedia",
            PageSize: 1,
            RecordOffset: 0,
            //SortedField: "CreatedOn",
            //SortDirection: Agility.UGC.API.SortDirection.DESC,
            Search: "ActivityID = " + activityID
        }
        Agility.UGC.API.SearchRecords(searchArg, callback);
    };

    ActivityDataAccess.SetSearchCriteria = function(searchCriteria) {
        ActivityDataAccess.SearchCriteria = searchCriteria;
    };

    ActivityDataAccess.PerformSearch = function(callback) {
        try {
            Subaru.WelcomeScreen.Close();
            Subaru.MapUtils.DeleteYouAreHereLayer();
        } catch (e) { }


        if (ActivityDataAccess.SearchCriteria != null) {
            //clear out previously loaded data
            ActivityDataAccess.ActivityData = new Object();

            if (ActivityDataAccess.SearchCriteria.Type == "Explore") {
                var searchQuery = "";
                if (ActivityDataAccess.SearchCriteria.ActivityTypeID != null && ActivityDataAccess.SearchCriteria.ActivityTypeID > 0) {
                    searchQuery += "TypeID = " + ActivityDataAccess.SearchCriteria.ActivityTypeID;
                }
                if (ActivityDataAccess.SearchCriteria.ProvinceID != null && ActivityDataAccess.SearchCriteria.ProvinceID > 0) {
                    if (searchQuery.length > 0) {
                        searchQuery += " && ";
                    }
                    searchQuery += "ProvinceID = " + ActivityDataAccess.SearchCriteria.ProvinceID;
                }

                var searchArg = {
                    RecordTypeName: "Activity",
                    PageSize: 100,
                    RecordOffset: 0,
                    SortedField: ActivityDataAccess.SearchCriteria.SortField,
                    SortDirection: Agility.UGC.API.SortDirection.DESC,
                    Search: searchQuery
                }
                Agility.UGC.API.SearchRecords(searchArg, function(data) {
                    if (data.ResponseType != Agility.UGC.API.ResponseType.OK) {
                        alert(data.Message);
                    } else {

                        ActivityDataAccess.ActivityData = data.ResponseData.Records;
                        ActivityDataAccess.TotalSearchResults = data.ResponseData.TotalRecords;
                        callback(ActivityDataAccess.ActivityData);
                    }
                });
            }
            else if (ActivityDataAccess.SearchCriteria.Type == "Search") {
                Subaru.AgilityData.ActivityTextSearch(
                    ActivityDataAccess.SearchCriteria.SearchTerm, 
                    ActivityDataAccess.SearchCriteria.SortField, function(data) {
                        ActivityDataAccess.ActivityData = data;
                        ActivityDataAccess.TotalSearchResults = data.length;
                        callback(data);
                });
            }
        }
    };

})(Subaru.ActivityDataAccess);