#------------------------------------------------------------
# Copyright (C) 2015 RoyaltyShare, Inc.   All Rights Reserved
#------------------------------------------------------------
package RPS::DistributorList;

use strict;
use warnings;

use lib '/app/tools/common/lib';
use Common::Assert;

use lib '/app/tools/rps/lib';
use RPS::DB::Item::Service;
use RPS::Service;

use Common::FormObject;
use base 'Common::FormObject';

# Distributor is kind of a virtual thing in the system, defined
# when an importer makes it so (file service ID varies from sale service IDs)
#
# So, until we formally define them...
#
my @distributor = (
    '24_7_MusicShop',        'ADA Physical Sales', 'Alternative Distribution Alliance', 'Avarto',
    'Believe Digital',       'BUONGIORNO',         'Caroline',                          'CDBaby',
    'CreateSpace',           'Cricket / Muve',     'DDS',                               'Destra Music',
    'DJDownload',            'DRA',                'Entertainment One Distribution',    'Essential Distribution',
    'FontanaDigital',        'FUGA',               'FunMobility',                       'INGrooves',
    'INGrooves VPRecords',   'IODA',               'IRIS',                              'Koch Digital',
    'MediaNet',              'Merlin',             'Mobile Streams',                    'Moderati',
    'Music Airport',         'Musicall',           'Musiwave',                          'MVD',
    'Naxos Digital',         'Nokia',              'Ogangi',                            'PanicButton',
    'PIAS Digital',          'Proper UK',          'RedDigital',                        'Redeye',
    'Revolver',              'RoyaltyShare',       'RoyaltyShare Digital',              'RoyaltyShare Label',
    'RoyaltyShare Physical', 'Rykodisc',           'SnoCap',                            'Sony',
    'State51',               'The Orchard',        'Theta Music Technologies',          'Tunecore',
    'Universal',             'Uploader',           'VidZoneDigital',                    'Warner',
    'Warner Bros.',          'Warner Mobile',      'Wimp (Aspiro)',                     'X5 Music Group',
    'Xbox Music',
);

sub _init {
    my ( $self, %args ) = @_;

    $self->SUPER::_init(%args);

    $self->{Distributor} = [];
    my $limit = $args{limit} || 500;
    my $serviceCollection;

    $serviceCollection = RPS::DB::Item::Service->GetAllFileServices();

    while ( $serviceCollection->hasNext() && $limit ) {
        my $serviceObj  = $serviceCollection->next();
        my $serviceName = $serviceObj->service_name;
        if ( $serviceName =~ /\b$args{query}/i && grep { /^$serviceName$/i } @distributor ) {
            push @{ $self->{Distributor} }, RPS::Service->new( _dbItem => $serviceObj );
            $limit--;
        }
    }

    return $self;
}

sub _listProperties {
    return { Distributor => 1 };
}

sub _propertyIsEditable {
    my ( $self, $propertyName ) = @_;

    return 0;
}

1;
