﻿/// <reference path="./API/Agility.UGC.API.js" />


Agility.RegisterNamespace("Subaru.FavouriteDataAccess");

(function(FavouriteDataAccess) {

    FavouriteDataAccess.GetFavouriteCountByActivityID = function(activityID, callback) {

        Agility.UGC.API.GetRecord(activityID, function(data) {
            if (data.ResponseType != Agility.UGC.API.ResponseType.OK) { }
            else {
                if (data.ResponseData != null) {
                    var activityRecord = data.ResponseData;
                    if (activityRecord.LikeCount >= 0) {
                        callback(activityRecord.LikeCount);
                        return;
                    }
                }
            }
        });

        callback(0);
    };

    var FlaggedActivityCookieName = "Subaru.FlaggedActivities";

    FavouriteDataAccess.IsFlagedActivityAsFavourite = function(activityID, userID) {
        var flagged = $.cookie(FlaggedActivityCookieName);
        return flagged != null && flagged.indexOf("," + userID + "-" + activityID + ",") > -1;
    };

    FavouriteDataAccess.FlagActivityAsFavourite = function(activityID, userID, callback) {

        var flagged = $.cookie(FlaggedActivityCookieName);
        
        //alert(flagged + " : " + "," + userID + "-" + activityID + ",");
        
        if (flagged == null || flagged.indexOf("," + userID + "-" + activityID + ",") == -1) {

            //Not flagged
            if (flagged == null || flagged == "") {
                flagged = ",";
            }

            var options = { expires: 365 };


            $.cookie(FlaggedActivityCookieName, flagged + userID + "-" + activityID + ",", options);

            //Activity Like counter
            Agility.UGC.API.GetRecord(activityID, function(data) {
                if (data.ResponseType != Agility.UGC.API.ResponseType.OK) { }
                else {
                    if (data.ResponseData != null) {
                        var activityRecord = data.ResponseData;
                        if (activityRecord.LikeCount > 0) {
                            activityRecord.LikeCount = activityRecord.LikeCount + 1;
                        }
                        else {
                            activityRecord.LikeCount = 1;
                        }
                        Agility.UGC.API.SaveRecord(activityRecord, function(data) { });
                    }
                }
            });
        }
        else {
            callback("AlreadyAdded");
            return;
        }

        //Save activity to the user profile
        if (userID >= 0) {
            var search = "ActivityID = " + activityID + " && ProfileID = " + userID;

            var searchArg = {
                RecordTypeName: "ProfileFavouriteActivities",
                PageSize: 1,
                RecordOffset: 0,
                Search: search
            }

            Agility.UGC.API.SearchRecords(searchArg, function(data) {
                if (data.ResponseType != Agility.UGC.API.ResponseType.OK) {
                    callback("Error");
                    return;
                }
                else {
                    if (data.ResponseData.Records.length == 0) {
                        var FavRecord = {
                            ID: -1,
                            RecordTypeName: "ProfileFavouriteActivities",
                            ActivityID: activityID,
                            ProfileID: userID
                        };

                        //save the new fav object
                        Agility.UGC.API.SaveRecord(FavRecord, function(data) {

                            if (data.ResponseType != Agility.UGC.API.ResponseType.OK) {
                                callback("Error");
                                return;
                            } else {
                                if (data.ResponseData > 0) {
                                    callback("Success");
                                }
                            }
                        });
                    }
                    else {
                        callback("AlreadyAdded");
                        return;
                    }
                }
            });
        }
        else {
            callback("Success-NoUserID");
        }
        callback("");
        return;
    };

})(Subaru.FavouriteDataAccess);