public function saveStudentsToOneClass($classId, $classDetailId, $students) { try { $tId = session('instId'); $class = new \Home\Model\ClassModel(); $class->startTrans(); $result = $class->showStudentsFromClassDetail((int) $classDetailId, $tId); for ($i = 0; $i < count($result); $i++) { $oldStudentIds[] = $result[$i]['student_id']; } //students if ($students == null || $students == "") { $newStudentIds = array(); } else { $newStudentIds = explode('|', $students); } //find $deleteIds[] and $addIds[] if (!empty($oldStudentIds)) { if (empty($newStudentIds)) { $deleteIds = $oldStudentIds; } else { for ($i = 0; $i < count($oldStudentIds); $i++) { $shouldDelete = true; for ($j = 0; $j < count($newStudentIds); $j++) { if ((int) $oldStudentIds[$i] == (int) $newStudentIds[$j]) { $shouldDelete = false; } } if ($shouldDelete) { $deleteIds[] = $oldStudentIds[$i]; } } } } if (!empty($newStudentIds)) { if (empty($oldStudentIds)) { $addIds = $newStudentIds; } else { for ($i = 0; $i < count($newStudentIds); $i++) { $shouldAdd = true; for ($j = 0; $j < count($oldStudentIds); $j++) { if ((int) $newStudentIds[$i] == (int) $oldStudentIds[$j]) { $shouldAdd = false; } } if ($shouldAdd) { $addIds[] = $newStudentIds[$i]; } } } } $class = new \Home\Model\ClassModel(); $classInfo = $class->getClassById((int) $classId, $tId); $tuition = $classInfo[0]['tuition_per_class']; if (!empty($deleteIds)) { for ($i = 0; $i < count($deleteIds); $i++) { $class->updateStudentStatusFromClassDetail($tId, (int) $classId, $classDetailId, (int) $deleteIds[$i], 1); $result = $class->selectStudentInfoFromClass($tId, (int) $classId, (int) $deleteIds[$i]); $class->updateStudentStatusFromClass($tId, (int) $classId, (int) $deleteIds[$i], 1, -$result[0]['tuition_per_class']); } } if (!empty($addIds)) { for ($i = 0; $i < count($addIds); $i++) { //try update first $result = $class->selectStudentInfoFromClass($tId, (int) $classId, (int) $addIds[$i]); if ($result == null || count($result) == 0) { $class->saveClassAndStudentRela((int) $classId, (int) $addIds[$i], $tuition, 1, $tId, $tuition, 0); } else { $class->updateStudentStatusFromClass($tId, (int) $classId, (int) $addIds[$i], 1, $result[0]['tuition_per_class']); $tuition = $result[0]['tuition_per_class']; } $class->saveClassDetailAndStudentRela($classDetailId, (int) $classId, (int) $addIds[$i], $tuition, $tId); } } $class->commit(); $data = "true"; } catch (Exception $e) { $class->rollback(); $data = "false"; } $this->ajaxReturn($data); }