#!/usr/bin/perl
#use utf8;
use strict;
use CGI;

use Opals::Context;
use Opals::Template qw(
    tmpl_read
    tmpl_write
    tmpl_preference
);
use Opals::SIF::SifSubscriber;
use JSON;


my $dbh = Opals::Context->dbh();
END { $dbh->disconnect(); }

my $cgi = CGI->new;
my ($permission, $cookie, $template) = tmpl_read(
        {
            dbh             => $dbh,
            cgi             => $cgi,
            tmplFile        => 'user/importFromZIS.tmpl',
            reqPermission   => 'user_add',
        }
);

my $pref = tmpl_preference($dbh);

if ($permission && $permission->{'user_add'}) {
    my($SIF_zis_url,$SIF_version,$SIF_sourceId,$SIF_schoolLocalId)=(undef,undef,undef,undef);
    my ($SIF_enable)=$dbh->selectrow_array("select val from opl_preference where var='SIF_enable'");
       ($SIF_zis_url)=$dbh->selectrow_array("select val from opl_preference where var='SIF_zis_url'");
    if(defined $SIF_enable && $SIF_enable eq '1'){
        ($SIF_version)=$dbh->selectrow_array("select val from opl_preference where var='SIF_version'");
        ($SIF_sourceId)=$dbh->selectrow_array("select val from opl_preference where var='SIF_sourceId'");
        ($SIF_schoolLocalId)=$dbh->selectrow_array("select val from opl_preference where var='SIF_schoolLocalId'");

        my $zone={url=>$SIF_zis_url,agentName=>"Subcriber agent"};

        my $sifInfo={
                   version=>$SIF_version,
                   sourceId=>$SIF_sourceId,
                   authLevel=>0,
                   encryptLevel=>0,
                   sourceName=>"OPALS SIF Agent",
                   subscribes=>['StudentPersonal']
                  };
        my $subscriber =Opals::SIF::SifSubscriber->new($sifInfo,$zone);
        $subscriber->register();
        if($subscriber->hasAccess('SIF_RequestAccess','StudentPersonal')){
            my $reqCond_sch=undef;
            my $reqCond_std=undef;
            if(defined $SIF_schoolLocalId && $SIF_schoolLocalId ne""){
                $reqCond_sch={xPath=>"LocalId",
                          val=>$SIF_schoolLocalId,
                          operator=>'EQ'};
                $reqCond_std={xPath=>"MostRecent/SchoolLocalId",
                          val=>$SIF_schoolLocalId,
                          operator=>'EQ'};
            }
            $subscriber->requestMessage("SchoolInfo",$reqCond_sch);
            $subscriber->requestMessage("StudentPersonal",$reqCond_std);
            $subscriber->requestMessage("StaffPersonal");
        }
        $template->param(request_submit=>1);
    }
    else{
        $template->param(request_submit=>0);
    }

}   
tmpl_write($dbh, $cgi, $cookie, $template);
