#!/usr/bin/perl

use strict;
use CGI;

use Opals::Context;

use Opals::Template qw(
    tmpl_read
    tmpl_write
);

use Opals::Course qw(
    
    course_getSchoolYearList
    course_getSchoolYearInfo
    course_getCurrentSchoolYearInfo

    course_getList
    course_findById

    course_countTeachersAssigned
);

use Opals::TeacherCourse qw(
    
    teacherCourse_assign
    teacherCourse_getList
    teacherCourse_countCoursesAssigned
    teacherCourse_delete
    teacher_getCatCode

);

use Opals::User qw(
    
    user_teacherList
    user_addQuick
    user_isUserBc
    user_list

);

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

my $cgi = CGI->new;
my $input = $cgi->Vars();
my $op = $input->{'op'};
my $t_sortField = $input->{'t_sortField'};
my $t_sortOrder   = $input->{'t_sortOrder'};
    ($t_sortOrder && $t_sortOrder >=1 ) || ($t_sortOrder = 1);

my $c_sortField = $input->{'c_sortField'};
my $c_sortOrder   = $input->{'c_sortOrder'};
    ($c_sortOrder && $c_sortOrder >=1 ) || ($c_sortOrder = 1);

my ($permission, $cookieList, $template) = tmpl_read(
    {
        dbh             => $dbh,
        cgi             => $cgi,
        tmplFile        => '/txtbk/teacher/teacherSchedule.tmpl',
        reqPermission   => 'user_edit |tb_course_edit',
    }
);
if ($op eq 'assign'){
    my $teacherId = $input->{'teacherId'};
    my @courseIdList = $cgi->param('chkb_courseId');
    
    teacherCourse_delete($dbh, $teacherId);

    foreach my $courseId (@courseIdList){
        my $courseInfo = course_findById($dbh, $courseId);
        if ($courseInfo){
            if (teacherCourse_assign($dbh, $teacherId, $courseId , $courseInfo->{'courseCode'})){
                #set saveOK to tempate
           }
            else{
                #set error to tempate
            }
        }
    }
}
my $schoolYearList      = course_getSchoolYearList($dbh);
my $curSchoolYearId = 0;
my $curSettingSchoolYear = 'N/A';
foreach my $y (@{$schoolYearList}){
    if ($y->{'curSchoolYear'} == 1){
        $curSchoolYearId = $y->{'id'};
        $curSettingSchoolYear = $y->{'schoolYear'};
        last;
    }
}


my $catCode_teacher = teacher_getCatCode($dbh);
my $courseList         = course_getList($dbh,0,0, $c_sortField, $c_sortOrder, $curSchoolYearId);
my $teacherCourseList  = teacherCourse_getList($dbh, $curSchoolYearId,$catCode_teacher);
my $nCourses           = teacherCourse_countCoursesAssigned($dbh, $curSchoolYearId,$catCode_teacher);
my $nTeachers          = course_countTeachersAssigned($dbh, $curSchoolYearId);



my $params = {};
my ($resultSize, $teacherList) = user_teacherList($dbh, $params ,0, 0, $t_sortField, $t_sortOrder );

foreach my $teacher(@{$teacherList}){
    $teacher->{'nCourses'} = $nCourses->{$teacher->{'uid'}};
}
foreach my $course(@{$courseList}){
    $course->{'nTeachers'} = $nTeachers->{$course->{'courseCode'}};
}

$template->param(
    curSettingSchoolYear=> $curSettingSchoolYear,
    curSchoolYearSet    => ($curSchoolYearId>0)?1:0,
    teacherList         => $teacherList,
    courseList          => $courseList,
    teacherCourseList   => $teacherCourseList,
    t_sortOrder           =>  $t_sortOrder,
    t_sortField           =>  $t_sortField, 
    t_sortOrderReverse    =>  ($t_sortOrder && $t_sortOrder == 1)  ? 2 : 1,
    t_sortDown            =>  ($t_sortOrder && $t_sortOrder == 1)  ? 1 : 0,
    t_sortTeacherId       =>  ($t_sortField eq 'teacherId') ? 1 :0,
    t_sortLastName        =>   ($t_sortField eq 'lastName') ? 1 :0,
    c_sortOrder           =>  $c_sortOrder,
    c_sortField           =>  $c_sortField, 
    c_sortOrderReverse    =>  ($c_sortOrder && $c_sortOrder == 1)  ? 2 : 1,
    c_sortDown            =>  ($c_sortOrder && $c_sortOrder == 1)  ? 1 : 0,
    c_sortCourseCode      =>  ($c_sortField eq 'courseCode') ? 1 :0,
    c_sortCourseName      =>  ($c_sortField eq 'courseName') ? 1 :0,
);

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



