public function saveClass($className = "", $classtypeId, $teacherId, $classroomId, $studentIds = "", $startDate = "", $endDate = "", $time = "", $timecn = "", $tuition, $wage, $remark, $deductFlag)
 {
     try {
         //inst_Id
         $tId = session('instId');
         $tuition = (int) $tuition * 100;
         $wage = (int) $wage * 100;
         //$className = iconv("utf-8","gbk//IGNORE",$className);
         //$timecn = iconv("utf-8","gbk//IGNORE",$timecn);
         //handle time format
         $classTimeArr = array("", "", "", "", "", "", "");
         $timeArr = explode(';', $time);
         for ($x = 0; $x < count($timeArr) - 1; $x++) {
             $tuple = explode('|', $timeArr[$x]);
             $classTimeArr[$tuple[0] - 1] = $tuple[1];
         }
         //translate
         $start = strtotime($startDate);
         $end = strtotime($endDate);
         $oneDay = 24 * 3600;
         //students
         if ($studentIds == null || $studentIds == "") {
         } else {
             $students = explode('|', $studentIds);
         }
         //save class
         $class = new \Home\Model\ClassModel();
         $class->startTrans();
         $classId = $class->saveClass($className, $classtypeId, $tuition, (int) $wage, $startDate, $endDate, $teacherId, $classroomId, $remark, $deductFlag, $timecn, $tId);
         //update student status
         if (!empty($students)) {
             $studentModel = new \Home\Model\StudentModel();
             for ($i = 0; $i < count($students); $i++) {
                 $studentModel->changeStudentStatus((int) $students[$i], $tId, 2);
             }
         }
         $classCount = 0;
         while ($start <= $end) {
             $dayOfWeek = date('w', $start);
             //get the dayOfWeek of this timestamp
             if ($dayOfWeek == 0) {
                 $dayOfWeek = 7;
             }
             if ($classTimeArr[$dayOfWeek - 1] != "") {
                 //has class on that day
                 $classCount++;
                 $date = date("Y-m-d", $start);
                 $ymd = explode('-', $date);
                 $year = $ymd[0];
                 $month = $ymd[1];
                 $times = explode('-', $classTimeArr[$dayOfWeek - 1]);
                 $startTime = $times[0];
                 $endTime = $times[1];
                 $startTimeInt = str_replace(':', '', $startTime);
                 //save class detail
                 $classDetailId = $class->saveClassDetail($date, $year, $month, $dayOfWeek, $startTime, (int) $startTimeInt, $endTime, $teacherId, $classroomId, $classId[0]['class_id'], $tId);
                 //save students that join this class
                 if (!empty($students)) {
                     for ($i = 0; $i < count($students); $i++) {
                         $class->saveClassDetailAndStudentRela($classDetailId[0]['class_detail_id'], $classId[0]['class_id'], (int) $students[$i], (int) $tuition, $tId);
                     }
                 }
             }
             $start += $oneDay;
             //check next day
         }
         $receivableTuition = $classCount * $tuition;
         //save class students
         if (!empty($students)) {
             for ($i = 0; $i < count($students); $i++) {
                 $class->saveClassAndStudentRela($classId[0]['class_id'], (int) $students[$i], $tuition, 0, $tId, $receivableTuition, 0);
             }
         }
         $class->commit();
         $data = "true";
     } catch (Exception $e) {
         $model->rollback();
         $data = "false";
     }
     $this->ajaxReturn($data);
 }