#------------------------------------------------------------
# Copyright (C) 2006 RoyaltyShare, Inc.   All Rights Reserved
# $Id$
#------------------------------------------------------------
package BookPub::Admin::Command::AjaxEditSaleFeedService;
use strict;
use warnings;
use Data::Dumper;

use lib '/app/tools/bookpub/lib';
use lib '/app/tools/common/lib';
use Common::Preference;
use Common::Assert;
use Common::Client;

use BookPub::DB::Item::SaleFeedService;
use BookPub::Admin::EditSaleFeedServiceForm;
use BookPub::Sale::Job::FetchSalesFeeds;

use RSApache::Response::XSLT;
use RSApache::Response::JSON;
use RSApache::Command::XMLCommand;

use base 'RSApache::Command::XMLCommand';

sub cmd      { return 'edit_sale_feed_service'; }
sub area     { return 'admin'; }
sub pageName { return ''; }

use constant kTemplate => "";

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

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

    my $saleFeedServiceID = $self->getParam("SaleFeedServiceID");

    my $form = BookPub::Admin::EditSaleFeedServiceForm->new( saleFeedServiceID => $saleFeedServiceID );

    if ( $form->assignCGIParams( 'Form', $self->getParams() ) ) {
        $form->save($saleFeedServiceID);

        # Queue up the job to check for new sales feeds.
        #
        my $jobArgs = BookPub::Sale::Job::FetchSalesFeeds->new();
        my $job     = $jobArgs->enqueue();

        # We need to return a couple of pieces of data to the template
        #
        my $list       = $form->{SaleFeedServiceList}{SaleFeedService};
        my $updatedObj = $$list{$saleFeedServiceID};

        my $saleFeedServiceID = $updatedObj->{SaleFeedServiceID};
        my $dateModified      = Common::Client::Current()->Locale()->formatDate( $updatedObj->{DateModified}->{_value} );
        my $verified          = $updatedObj->{Verified};

        return RSApache::Response::JSON->new(
            { status => 'success', id => $saleFeedServiceID, dateModified => $dateModified, verified => $verified } );
    } else {
        return RSApache::Response::JSON->new('failed to update item');
    }

}

1;
