#!/usr/bin/perl

use strict;
use CGI;
use JSON;
use Storable qw (dclone);

use Opals::Context;
use Opals::Template qw(
    tmpl_read
    tmpl_write
    tmpl_rangedPageList
    tmpl_redirect
    tmpl_preference
);
use Opals::User qw(
    user_currentUserID
);
use Opals::Eq_SolrSearch;

use Opals::Eq_Search qw(
      
    eq_category_getList
    eq_category_getListById
    eq_search_cat
    eq_search
    eq_search_countByCat

);
use Opals::Equipment qw(

    eq_record_doDelete
    eq_defItem_getList
    eq_defRecord_getList
);

use Opals::Eq_Circulation qw(
    
    circ_infoRecord
);

use Opals::Locale qw(
    loc_getMsgFile
    loc_write
);

use Opals::Log;
use JSON;

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/report/delExpFromHitList.tmpl',
    }
);

my $uIdInfo = user_currentUserID($dbh,$cgi);
################################################################################


my $pRange = 5;
#my $pSize = 10;
my $pSize = $input->{'pSize'} || 10;
my $curPage = $input->{'pNum'};
my $offset;
($curPage && $curPage >= 1) || ($curPage = 1);
$offset = ($curPage - 1) * $pSize;

$input->{'offset'} = $offset;


    my $buildingList = _eq_building_getList($dbh);
    $buildingList = to_json($buildingList, {pretty=>1});
    
    my $srchFieldList = _eq_searchField_getList($dbh);
    $srchFieldList = to_json($srchFieldList,{pretty=>1});

$template->param(
    buildingList    => $buildingList,
    srchFieldList   => $srchFieldList,
);


my $msgValMap={} ;

my $stdMsgMap  =loc_getMsgFile('/search/standard.msg',$msgValMap);
loc_write($template,$stdMsgMap);
tmpl_write($dbh, $cgi, $cookieList, $template);

#-----------------------------------------------------------------------

sub _eq_searchField_getList {

    my ($dbh) = @_;
    #my $sql = "select id,defType,name from eq_def order by name";
    #my $sth = $dbh->prepare($sql);
    #$sth->execute();
    my @retList = ();
    @retList = (
        {id=> "eq_barcode", defType=>"record",  name=>"Barcode",  selected=>1 },
        {id=> "5",          defType=>"item", name=>"Serial#", selected=>0 },
        {id=> "48",         defType=>"item", name=>"Accessories", selected=>0 },
        {id=> "40", defType=>"item", name=>"Assigned Person First Name", selected=>0 },
        {id=> "41", defType=>"item", name=>"Assigned Person Last Name", selected=>0 },
        {id=> "18", defType=>"item", name=>"Building Code" , selected=>0},
        {id=> "46", defType=>"item", name=>"Cart Number" , selected=>0},
        {id=> "categorySrch", defType=>"record", name=>"Category" , selected=>0},
        {id=> "31", defType=>"item", name=>"Date Acquired/Assigned/Install" , selected=>0},
        {id=> "26", defType=>"item", name=>"District Code" , selected=>0},
        {id=> "7", defType=>"item", name=>"District inventory #", selected=>0 },
        {id=> "eq_name", defType=>"record",name=>"Equipment Name" , selected=>0},
        {id=> "36", defType=>"record", name=>"General Accessories Notes" , selected=>0},
        {id=> "33", defType=>"record", name=>"General Notes" , selected=>0},
        {id=> "43", defType=>"item", name=>"IP Address" , selected=>0},
        {id=> "8", defType=>"item",name=>"Item Designation" , selected=>0},
        {id=> "38", defType=>"item", name=>"Items Status Notes" , selected=>0},
        {id=> "typeId", defType=>"item",name=>"Item Type" , selected=>0},
        {id=> "11", defType=>"item", name=>"Location in building" , selected=>0},
        {id=> "44", defType=>"item", name=>"MAC Address" , selected=>0},
        {id=> "37", defType=>"item", name=>"Machine Name" , selected=>0},
        {id=> "1", defType=>"record", name=>"Manufacturer" , selected=>0},
        {id=> "16", defType=>"record", name=>"Manufacturer URL" , selected=>0},
        {id=> "3", defType=>"record", name=>"Model" , selected=>0},
        {id=> "28", defType=>"record", name=>"Online Manual" , selected=>0},
        {id=> "42", defType=>"item", name=>"P.O. Number" , selected=>0},
        {id=> "6", defType=>"item", name=>"Price " , selected=>0},
        {id=> "47", defType=>"item", name=>"Slot Number"  , selected=>0},
        {id=> "45", defType=>"item", name=>"Software Key" , selected=>0 },
        {id=> "38", defType=>"item", name=>"Status", selected=>0},
        {id=> "27", defType=>"record", name=>"Supplier URL " , selected=>0 },
        {id=> "39", defType=>"item", name=>"Vendor Name" , selected=>0  },
        {id=> "14", defType=>"record", name=>"Warranty Notes" , selected=>0  },
    );
    return \@retList;
}

sub _eq_building_getList {
    
    my ($dbh) = @_;
    my @list =();
    my $sql = 
    my $sql = (<<_SQL_) ;
select count(*) as count, sfValue as id, l.name as name 
from eq_itemFields f inner join eq_locationDirectory l on (BINARY l.code= BINARY f.sfValue) 
where f.sfId=18 group by f.sfValue 
    having count>0 
    order by l.name
_SQL_
    my $sth = $dbh->prepare($sql);
    $sth->execute();
    while(my $rec = $sth->fetchrow_hashref) {
        push @list, $rec;
    }
    $sth->finish;
    return \@list;
}


