'use strict';
define(
    [
        'backbone',
        'Quality/QualityProfileCollection',
        'underscore'
    ], function (Backbone, QualityProfileCollection,_) {
        return Backbone.Model.extend({

            urlRoot: ApiRoot + '/series',

            mutators: {
                percentOfEpisodes: function () {
                    var episodeCount = this.get('episodeCount');
                    var episodeFileCount = this.get('episodeFileCount');

                    var percent = 100;

                    if (episodeCount > 0) {
                        percent = episodeFileCount / episodeCount * 100;
                    }

                    return percent;
                },
                poster           : function () {
                    var poster = _.find(this.get('images'), function (image) {
                        return image.coverType === 'poster';
                    });

                    if (poster) {
                        return poster.url;
                    }

                    return undefined;
                },
                fanArt           : function () {
                    var poster = _.find(this.get('images'), function (image) {
                        return image.coverType === 'fanart';
                    });

                    if (poster) {
                        return poster.url;
                    }

                    return undefined;
                },
                traktUrl         : function () {
                    return 'http://trakt.tv/show/' + this.get('titleSlug');
                },
                imdbUrl          : function () {
                    return 'http://imdb.com/title/' + this.get('imdbId');
                },
                isContinuing     : function () {
                    return this.get('status') === 'continuing';
                },
                route            : function () {
                    return '/series/' + this.get('titleSlug');
                },

                qualityProfile: function () {
                    var profile = QualityProfileCollection.get(this.get('qualityProfileId'));
                    if (profile) {
                        return profile.toJSON();
                    }

                    return undefined;
                }
            },

            defaults: {
                episodeFileCount: 0,
                episodeCount    : 0,
                isExisting      : false,
                status          : 0
            }
        });
    });
