#!/usr/bin/perl

use strict;
use CGI;

use Opals::Context;
use Opals::Template qw(
    tmpl_read
    tmpl_write
);
use Opals::User qw(    
    user_StrPermission
);
my $dbh = Opals::Context->dbh();
END { $dbh->disconnect(); }

my $cgi = CGI->new;
# $cgi->param('aaa') returns an array of aaa
my $input = $cgi->Vars();
#my $op = $input->{'op'};
my ($permission, $cookieList, $template) = tmpl_read(
    {
        dbh             => $dbh,
        cgi             => $cgi,
        tmplFile        => 'menuItem.tmpl',
    }
);



my $sth_menu=$dbh->prepare('select * from opl_menuItem where PARENT_ID is null order by orderValue');

my $sth_submenu=$dbh->prepare('select m.title mainTitle,s.title,m.color,m.orderValue mOrder,s.path,s.permission 
            from opl_menuItem m inner join opl_menuItem s on s.PARENT_ID=m.MENU_ITEM_ID 
            where m.PARENT_ID is NULL && s.PARENT_ID=m.MENU_ITEM_ID 
            order by m.orderValue,s.orderValue');

$sth_menu->execute();
my @mainMenuItem=();
my @submenuItem=();
my $mainmenu;
my $submenu;

my $userPermission='---------yyyy-';
my $myPermission =user_StrPermission($userPermission);
while(my $m=$sth_menu->fetchrow_hashref){
     my $menuId= $m->{'title'};
     $menuId =~ s/\s//gi;
     my $mainMenuId .=$menuId ."Header";
     my $refMenuId .=$menuId ."DropDown";

     $m->{'mainMenuId'} =$mainMenuId;
     $m->{'refMenuId'} = $refMenuId;
     $m->{'path'} ='#' if (!$m->{'path'} || $m->{'path'} eq '');
     $m->{'enabled'} = 0;
     $mainmenu->{$menuId} =$m;
 }
$sth_submenu->execute();
while(my $s=$sth_submenu->fetchrow_hashref){
    if(UserHasMenuPermission($s->{'permission'})){
        my $menuId =$s->{'mainTitle'};
        $menuId =~ s/\s//gi;
        $mainmenu->{$menuId}->{'enabled'}=1;
        $submenu->{$menuId}->{'color'} =$s->{'color'};
        $submenu->{$menuId}->{'order'} =$s->{'mOrder'};
        push @{$submenu->{$menuId}->{'items'}} ,$s;
    }
}
foreach my $m(keys %{$mainmenu}){
     push @mainMenuItem,$mainmenu->{$m} if ($mainmenu->{$m}->{'enabled'} ==1);
}
 @mainMenuItem = sort {$a->{'orderValue'} cmp $b->{'orderValue'}} @mainMenuItem;

foreach my $s(keys %{$submenu}){
     push @submenuItem,{itemId=>$s,
                        color=>$submenu->{$s}->{'color'},
                        order=>$submenu->{$s}->{'order'},
                        items=>$submenu->{$s}->{"items"}};
 }
 @submenuItem = sort {$a->{'order'} cmp $b->{'order'}} @submenuItem;
 $template->param(
    mainMenuItem=>\@mainMenuItem,
    submenuItem=>\@submenuItem,
    );
sub UserHasMenuPermission{
    my ($menuPermission) =@_;
    return 1 if($menuPermission eq '');
        if($myPermission->{$perm}==1){
            return 1;
        }
    }
    return 0;
}

sub UserHasMenuPermission_bk{
    my ($userPermission,$menuPermission) =@_;
    return 1 if($menuPermission eq '');

    my $p1=length($menuPermission) ;
    my $p2=length($menuPermission) ;
    my $p =$p1<$p2?$p1:$p2;
    $p -=1;
    my $permission=0;
    while($permission ==0 && $p >=0){
        if(substr($userPermission,$p, 1) eq 'y' && substr($menuPermission,$p, 1) eq 'y'){
            $permission=1;
        }
        $p -=1;
    }
    return $permission;
}

tmpl_write($dbh, $cgi, $cookieList, $template);
