#!/usr/bin/perl

#use utf8;
use strict;

use Encode;
use LWP::UserAgent;
use HTTP::Request::Common;

use CGI;
use JSON;

use Opals::Context;
use Opals::Constant;
use Opals::Log;

use Time::localtime;

use Opals::Eq_SolrSearch;
use Opals::Eq_SolrIndex;

use Opals::Template qw(
    tmpl_read
    tmpl_write
);
use Opals::User qw(
    user_currentUserID
);
use Opals::Session qw(
    SessionHdl_getSSID
    SessionHdl_del
);

use Opals::Equipment qw(
    eq_item_deleteSubFields
    eq_item_deleteBarcode
    eq_record_findByRId
);
my $dbh = Opals::Context->dbh();
END { $dbh->disconnect(); }

my $cgi = CGI->new;
my $input = $cgi->Vars();

my ($permission, $cookieList, $template) = tmpl_read(
    {
        dbh             => $dbh,
        cgi             => $cgi,
        tmplFile        => 'eqmnt/ajax/report/delExpFromHitList.tmpl',
        #reqPermission   => 'eq_record_edit',
    }
);
my $uIdInfo = user_currentUserID($dbh,$cgi);
my $ssid        = SessionHdl_getSSID($cgi);
my $varName     = $input->{'varName'};

    my $data    = $input->{'data'};
    $data  = decode_json($data);
    my $list = do_DeleteFromhitList($dbh,$data);
    $list = to_json($list,{pretty=>1}); 
    my $log = Opals::Log->new(dbh=>$dbh);
    my $params = {
        module      => "eqmnt",
        uid         => $uIdInfo->{'uid'} || 0,
        sessionid   => $uIdInfo->{'sessionid'} || "",
        action      => "delete-hitlist",
        content     => $list
    };
    my $logId = $log->log($params);
    $template->param (
        logId   => $logId,
        result  => $list
    );
tmpl_write($dbh, $cgi, $cookieList, $template);


sub do_DeleteFromhitList {

    my ($dbh,$data) = @_;
    my $sql = "select i.rid, i.iid as iid,sfId as id, sfValue as val from eq_items i left outer join eq_itemFields f using(rid,iid) where i.barcode=?";
    my $sth = $dbh->prepare($sql);
    my @fields=();
    my @list = ();
    foreach my $d (@{$data}){
        $sth->execute($d->{'barcode'});
        while ( my $rec = $sth->fetchrow_hashref) {
            if (!$d->{'iid'}){
                $d->{'iid'} = $rec->{'iid'};
                $d->{'rid'} = $rec->{'rid'};
            }
            push @{$d->{'fields'}}, {
                id  => $rec->{'id'},
                val => $rec->{'val'}
            }
        }
        my $recordInfo  = eq_record_findByRId($dbh,{recordId=> $d->{'rid'}});
        foreach my $f (@$recordInfo){
            if ($f->{'fId'} && $f->{'fId'}> 0 && $f->{'fId'} < 19){
                $d->{$f->{'fId'}} = $f->{'fValue'};
            }
        }
        deleteFromHitList($dbh,$d);
        SessionHdl_del($dbh,$ssid,$varName,$d->{'rid'},$d->{'barcode'});
        push @list,$d;
    }
    $sth->finish;
    my $eq_solr = Opals::Eq_SolrIndex->new(dbh=>$dbh);
    $eq_solr->eq_slr_updateIndex();
    #my $ret = $eq_solr->eq_slr_deleteIndex();
    return \@list;
}

sub deleteFromHitList {

    my ($dbh,$item) = @_;
    eq_item_deleteBarcode($dbh,$item);
    eq_item_deleteSubFields($dbh,$item);
    $dbh->do("update eq_records set indexed ='0',modifiedDate=now() where rid=$item->{'rid'}");
    #my $eq_solr = Opals::Eq_SolrIndex->new(dbh=>$dbh);
    #my $ret = $eq_solr->eq_slr_deleteIndex();


}

