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); }