package MediaServe::WebService::Command::AssetStatus;
use strict;
use warnings;

use MediaServe::DB::Item::MediaFile;

use lib '/app/tools/common/lib';
use base 'RSApache::Command::InternalCommand';
use Common::Assert;
use RSApache::Response::XML;

sub cmd  { return 'status'; }
sub area { return 'assetmgmt'; }

sub execute {
    my ($self) = @_;

    my $response = $self->SUPER::execute();
    return $response if $response;

    my $content = { Errors => 0 };
    my $type = lc $self->getParam('type') || 'audio';    # default to audio

    assert($type);

    if ( $type eq 'audio' ) {
        my $itemCount = $self->getParam('item_count');
        assert($itemCount);
        $content->{Track} = [];

        for ( my $i = 0 ; $i < $itemCount ; $i++ ) {
            my $fileID = $self->getParam( 'file_id_' . $i );
            my %result = ( MediaFileID => $fileID );

            if ( my $mediaFileObj = MediaServe::DB::Item::MediaFile->Lookup( media_file_id => $fileID ) ) {
                $mediaFileObj->status(MediaServe::DB::Item::MediaFile::kStatusActive);
                $mediaFileObj->save();
                $result{Status} = $mediaFileObj->status();
            } else {
                $content->{Errors}++;
                $result{Error} = 'failed to get media_file obj';
            }

            push( @{ $content->{Track} }, \%result );
        }
    }

    #elsif ($type eq 'image')
    #{
    # currently we don't change the status for images
    #}
    else {
        die "unknown type ($type)\n";
    }

    return RSApache::Response::XML->new($content);
}

1;
