﻿"use strict";

// Data service for supplying usage related REST data
app.factory("usageDataService", ["$http", "ngAuthSettings", function ($http, ngAuthSettings) {
    var usageDataFactory = {};

    var _getMinPlaytimeUsage = function (mediaId) {
        console.log("_getMinPlaytimeUsage is called");
        return $http.get(ngAuthSettings.apiServiceBaseUri + "/usage/" + mediaId).then(function (results) {
            return results;
        });
    };
    var _createMinPlaytimeUsage = function (submissionId, mediaId, curPlaytimeInSecs) {
        console.log("_createMinPlaytimeUsage is called");
        var postData = {
            SubmissionId: submissionId,
            MediaId: mediaId,
            CurPlaytimeInSecs: curPlaytimeInSecs
        };

        return $http.post(ngAuthSettings.apiServiceBaseUri + "/usage/", postData).then(function (results) {
            return results;
        },
        function (error) {
            $.awards.alert({
                title: "Error",
                message: "Failed to create usage. Please contact support.",
                okText: "Close"
            });
        });
    };
    var _updateMinPlaytimeUsage = function (usageId, submissionId, mediaId, curPlaytimeInSecs, minPlaytimeReached) {
        console.log("_updateMinPlaytimeUsage is called. current playtime is " + curPlaytimeInSecs);
        var postData = {
            UsageId: usageId,
            SubmissionId: submissionId,
            MediaId: mediaId,
            CurPlaytimeInSecs: curPlaytimeInSecs,
            MinPlaytimeReached: minPlaytimeReached
        };

        return $http.put(ngAuthSettings.apiServiceBaseUri + "/usage/", postData).then(function (results) {
            return results;
        });
    };
    var _updateSubmissionViewUsage = function (username, submissionId) {
        $http = $http || $injector.get("$http");

        $http.post(ngAuthSettings.apiServiceBaseUri + "/usage/updateSubmissionView/1", { Username: username, SubmissionId: parseInt(submissionId, 10) });
    };
    usageDataFactory.getMinPlaytimeUsage = _getMinPlaytimeUsage;
    usageDataFactory.createMinPlaytimeUsage = _createMinPlaytimeUsage;
    usageDataFactory.updateMinPlaytimeUsage = _updateMinPlaytimeUsage;
    usageDataFactory.updateSubmissionViewUsage = _updateSubmissionViewUsage;

    return usageDataFactory;
}]);