function edit($id)
 {
     $mailsmsTemplates = mailsmsTemplates::find($id);
     $mailsmsTemplates->templateMail = Input::get('templateMail');
     $mailsmsTemplates->templateSMS = Input::get('templateSMS');
     $mailsmsTemplates->save();
     return $this->panelInit->apiOutput(true, $this->panelInit->language['editTemplate'], $this->panelInit->language['templateUpdated']);
 }
 function notifications($id)
 {
     if ($this->data['users']->role != "admin") {
         exit;
     }
     if ($this->panelInit->settingsArray['examDetailsNotif'] == "0") {
         return json_encode(array("jsTitle" => $this->panelInit->language['examDetailsNot'], "jsMessage" => $this->panelInit->language['adjustExamNot']));
     }
     $examsList = examsList::where('id', $id)->first();
     $subjectArray = array();
     $subject = subject::get();
     foreach ($subject as $value) {
         $subjectArray[$value->id] = $value->subjectTitle;
     }
     $usersArray = array();
     if ($this->data['panelInit']->settingsArray['examDetailsNotifTo'] == "parent" || $this->data['panelInit']->settingsArray['examDetailsNotifTo'] == "both") {
         $users = User::where('role', 'student')->orWhere('role', 'parent')->get();
     } else {
         $users = User::where('role', 'student')->get();
     }
     foreach ($users as $value) {
         if ($value->parentOf == "" and $value->role == "parent") {
             continue;
         }
         if (!isset($usersArray[$value->id])) {
             $usersArray[$value->id] = array();
         }
         if ($value->parentOf != "") {
             $value->parentOf = json_decode($value->parentOf);
             if (!is_array($value->parentOf)) {
                 continue;
             }
             if (count($value->parentOf) > 0) {
                 $usersArray[$value->id]['parents'] = array();
             }
             foreach ($value->parentOf as $parentOf) {
                 $usersArray[$parentOf->id]['parents'][$value->id] = array('username' => $value->username, "email" => $value->email, "fullName" => $value->fullName, "mobileNo" => $value->mobileNo);
             }
         }
         $usersArray[$value->id]['student'] = array('username' => $value->username, "studentRollId" => $value->studentRollId, "mobileNo" => $value->mobileNo, "email" => $value->email, "fullName" => $value->fullName);
     }
     $return['marks'] = array();
     $examMarks = examMarks::where('examId', $id)->get();
     foreach ($examMarks as $value) {
         if (!isset($return['marks'][$value->studentId])) {
             $return['marks'][$value->studentId] = array();
         }
         if (isset($subjectArray[$value->subjectId])) {
             $return['marks'][$value->studentId][$subjectArray[$value->subjectId]] = array("examMark" => $value->examMark, "attendanceMark" => $value->attendanceMark, "markComments" => $value->markComments);
         }
     }
     $mailTemplate = mailsmsTemplates::where('templateTitle', 'Exam Details')->first();
     if ($this->panelInit->settingsArray['examDetailsNotif'] == "mail" || $this->panelInit->settingsArray['examDetailsNotif'] == "mailsms") {
         $mail = true;
     }
     if ($this->panelInit->settingsArray['examDetailsNotif'] == "sms" || $this->panelInit->settingsArray['examDetailsNotif'] == "mailsms") {
         $sms = true;
     }
     $sms = true;
     $MailSmsHandler = new MailSmsHandler();
     while (list($key, $value) = each($return['marks'])) {
         if (isset($mail)) {
             $studentTemplate = $mailTemplate->templateMail;
             $examGradesTable = "";
             while (list($keyG, $valueG) = each($value)) {
                 if ($valueG['examMark'] == "" and $valueG['attendanceMark'] == "") {
                     continue;
                 }
                 $examGradesTable .= $keyG . " Grade : " . $valueG['examMark'] . " - Attendance : " . $valueG['attendanceMark'] . " - Comments : " . $valueG['markComments'] . "<br/>";
             }
             if ($examGradesTable == "") {
                 continue;
             }
             $searchArray = array("{studentName}", "{studentRoll}", "{studentEmail}", "{studentUsername}", "{examTitle}", "{examDescription}", "{examDate}", "{schoolTitle}", "{examGradesTable}");
             $replaceArray = array($usersArray[$key]['student']['fullName'], $usersArray[$key]['student']['studentRollId'], $usersArray[$key]['student']['email'], $usersArray[$key]['student']['username'], $examsList->examTitle, $examsList->examDescription, $examsList->examDate, $this->panelInit->settingsArray['siteTitle'], $examGradesTable);
             $studentTemplate = str_replace($searchArray, $replaceArray, $studentTemplate);
             $MailSmsHandler->mail($usersArray[$key]['student']['email'], "Exam grade details", $studentTemplate, $usersArray[$key]['student']['fullName']);
             if (isset($usersArray[$key]['parents'])) {
                 while (list($keyP, $valueP) = each($usersArray[$key]['parents'])) {
                     //	$MailSmsHandler->mail($valueP['email'],"Exam grade details",$studentTemplate,$usersArray[$key]['student']['fullName']);
                 }
             }
         }
         if (isset($sms)) {
             $studentTemplate = $mailTemplate->templateSMS;
             $examGradesTable = "";
             reset($value);
             while (list($keyG, $valueG) = each($value)) {
                 if ($valueG['examMark'] == "" and $valueG['attendanceMark'] == "") {
                     continue;
                 }
                 $examGradesTable .= $keyG . " Grade : " . $valueG['examMark'] . " - Attendance : " . $valueG['attendanceMark'] . " ";
             }
             if ($examGradesTable == "") {
                 continue;
             }
             $searchArray = array("{studentName}", "{studentRoll}", "{studentEmail}", "{studentUsername}", "{examTitle}", "{examDescription}", "{examDate}", "{schoolTitle}", "{examGradesTable}");
             $replaceArray = array($usersArray[$key]['student']['fullName'], $usersArray[$key]['student']['studentRollId'], $usersArray[$key]['student']['email'], $usersArray[$key]['student']['username'], $examsList->examTitle, $examsList->examDescription, $examsList->examDate, $this->panelInit->settingsArray['siteTitle'], $examGradesTable);
             $studentTemplate = str_replace($searchArray, $replaceArray, $studentTemplate);
             if ($usersArray[$key]['student']['mobileNo'] != "") {
                 $MailSmsHandler->sms($usersArray[$key]['student']['mobileNo'], $studentTemplate);
             }
             if (isset($usersArray[$key]['parents'])) {
                 reset($usersArray[$key]['parents']);
                 while (list($keyP, $valueP) = each($usersArray[$key]['parents'])) {
                     if (trim($valueP['mobileNo']) != "") {
                         $MailSmsHandler->sms($valueP['mobileNo'], $studentTemplate);
                     }
                 }
             }
         }
     }
     return $this->panelInit->apiOutput(true, $this->panelInit->language['examDetailsNot'], $this->panelInit->language['examNotSent']);
 }
 public function saveAttendance()
 {
     if ($this->data['users']->role != "admin" and $this->data['users']->role != "teacher") {
         exit;
     }
     $attendanceList = array();
     if ($this->data['panelInit']->settingsArray['attendanceModel'] == "subject") {
         $attendanceArray = attendance::where('classId', Input::get('classId'))->where('subjectId', Input::get('subject'))->where('date', Input::get('attendanceDay'))->get();
     } else {
         $attendanceArray = attendance::where('classId', Input::get('classId'))->where('date', Input::get('attendanceDay'))->get();
     }
     foreach ($attendanceArray as $stAttendance) {
         $attendanceList[$stAttendance->studentId] = $stAttendance->status;
     }
     $vacationArray = array();
     $vacationList = vacation::where('vacDate', Input::get('attendanceDay'))->where('acYear', $this->panelInit->selectAcYear)->where('role', 'student')->get();
     foreach ($vacationList as $vacation) {
         $vacationArray[$vacation->userid] = $vacation->id;
     }
     if ($this->panelInit->settingsArray['absentNotif'] == "mail" || $this->panelInit->settingsArray['absentNotif'] == "mailsms") {
         $mail = true;
     }
     if ($this->panelInit->settingsArray['absentNotif'] == "sms" || $this->panelInit->settingsArray['absentNotif'] == "mailsms") {
         $sms = true;
     }
     if (isset($mail) || isset($sms)) {
         $mailTemplate = mailsmsTemplates::where('templateTitle', 'Student Absent')->first();
     }
     $stAttendance = Input::get('stAttendance');
     while (list($key, $value) = each($stAttendance)) {
         if (isset($vacationArray[$key])) {
             $vacationEdit = vacation::where('id', $vacationArray[$key])->first();
             $vacationEdit->acceptedVacation = $value['vacationStat'];
             $vacationEdit->save();
             if ($value['vacationStat'] == 1) {
                 $value['attendance'] = "9";
             }
         }
         if (isset($value['attendance']) and strlen($value['attendance']) > 0) {
             if (!isset($attendanceList[$key])) {
                 $attendanceN = new attendance();
                 $attendanceN->classId = Input::get('classId');
                 $attendanceN->date = Input::get('attendanceDay');
                 $attendanceN->studentId = $key;
                 $attendanceN->status = $value['attendance'];
                 if ($this->data['panelInit']->settingsArray['attendanceModel'] == "subject") {
                     $attendanceN->subjectId = Input::get('subject');
                 }
                 $attendanceN->save();
                 if ($value['attendance'] != "1" and $this->panelInit->settingsArray['absentNotif'] != "0") {
                     $parents = User::where('parentOf', 'like', '%"' . $key . '"%')->get();
                     $student = User::where('id', $key)->first();
                     $absentStatus = "";
                     switch ($value['attendance']) {
                         case '0':
                             $absentStatus = $this->panelInit->language['Absent'];
                             break;
                         case '2':
                             $absentStatus = $this->panelInit->language['Late'];
                             break;
                         case '3':
                             $absentStatus = $this->panelInit->language['LateExecuse'];
                             break;
                         case '4':
                             $absentStatus = $this->panelInit->language['earlyDismissal'];
                             break;
                         case '9':
                             $absentStatus = $this->panelInit->language['acceptedVacation'];
                             break;
                     }
                     $MailSmsHandler = new MailSmsHandler();
                     foreach ($parents as $parent) {
                         if (isset($mail)) {
                             $studentTemplate = $mailTemplate->templateMail;
                             $examGradesTable = "";
                             $searchArray = array("{studentName}", "{studentRoll}", "{studentEmail}", "{studentUsername}", "{parentName}", "{parentEmail}", "{absentDate}", "{absentStatus}", "{schoolTitle}");
                             $replaceArray = array($student->fullName, $student->studentRollId, $student->email, $student->username, $parent->fullName, $parent->email, Input::get('attendanceDay'), $absentStatus, $this->panelInit->settingsArray['siteTitle']);
                             $studentTemplate = str_replace($searchArray, $replaceArray, $studentTemplate);
                             $MailSmsHandler->mail($parent->email, $this->panelInit->language['absentReport'], $studentTemplate);
                         }
                         if (isset($sms) and $parent->mobileNo != "") {
                             $studentTemplate = $mailTemplate->templateSMS;
                             $examGradesTable = "";
                             $searchArray = array("{studentName}", "{studentRoll}", "{studentEmail}", "{studentUsername}", "{parentName}", "{parentEmail}", "{absentDate}", "{absentStatus}", "{schoolTitle}");
                             $replaceArray = array($student->fullName, $student->studentRollId, $student->email, $student->username, $parent->fullName, $parent->email, Input::get('attendanceDay'), $absentStatus, $this->panelInit->settingsArray['siteTitle']);
                             $studentTemplate = str_replace($searchArray, $replaceArray, $studentTemplate);
                             $MailSmsHandler->sms($parent->mobileNo, $studentTemplate);
                         }
                     }
                 }
             } else {
                 if ($attendanceList[$key] != $value['attendance']) {
                     $attendanceN = attendance::where('studentId', $key)->where('date', Input::get('attendanceDay'))->where('classId', Input::get('classId'))->first();
                     $attendanceN->status = $value['attendance'];
                     if ($this->data['panelInit']->settingsArray['attendanceModel'] == "subject") {
                         $attendanceN->subjectId = Input::get('subject');
                     }
                     $attendanceN->save();
                     if ($value['attendance'] != "1" and $this->panelInit->settingsArray['absentNotif'] != "0") {
                         $parents = User::where('parentOf', 'like', '%"' . $key . '"%')->get();
                         $student = User::where('id', $key)->first();
                         $absentStatus = "";
                         switch ($value['attendance']) {
                             case '0':
                                 $absentStatus = $this->panelInit->language['Absent'];
                                 break;
                             case '2':
                                 $absentStatus = $this->panelInit->language['Late'];
                                 break;
                             case '3':
                                 $absentStatus = $this->panelInit->language['LateExecuse'];
                                 break;
                             case '4':
                                 $absentStatus = $this->panelInit->language['earlyDismissal'];
                                 break;
                             case '9':
                                 $absentStatus = $this->panelInit->language['acceptedVacation'];
                                 break;
                         }
                         $MailSmsHandler = new MailSmsHandler();
                         foreach ($parents as $parent) {
                             if (isset($mail)) {
                                 $studentTemplate = $mailTemplate->templateMail;
                                 $examGradesTable = "";
                                 $searchArray = array("{studentName}", "{studentRoll}", "{studentEmail}", "{studentUsername}", "{parentName}", "{parentEmail}", "{absentDate}", "{absentStatus}", "{schoolTitle}");
                                 $replaceArray = array($student->fullName, $student->studentRollId, $student->email, $student->username, $parent->fullName, $parent->email, Input::get('attendanceDay'), $absentStatus, $this->panelInit->settingsArray['siteTitle']);
                                 $studentTemplate = str_replace($searchArray, $replaceArray, $studentTemplate);
                                 $MailSmsHandler->mail($parent->email, $this->panelInit->language['absentReport'], $studentTemplate);
                             }
                             if (isset($sms) and $parent->mobileNo != "") {
                                 $studentTemplate = $mailTemplate->templateSMS;
                                 $examGradesTable = "";
                                 $searchArray = array("{studentName}", "{studentRoll}", "{studentEmail}", "{studentUsername}", "{parentName}", "{parentEmail}", "{absentDate}", "{absentStatus}", "{schoolTitle}");
                                 $replaceArray = array($student->fullName, $student->studentRollId, $student->email, $student->username, $parent->fullName, $parent->email, Input::get('attendanceDay'), $absentStatus, $this->panelInit->settingsArray['siteTitle']);
                                 $studentTemplate = str_replace($searchArray, $replaceArray, $studentTemplate);
                                 $MailSmsHandler->sms($parent->mobileNo, $studentTemplate);
                             }
                         }
                     }
                 }
             }
         }
     }
     return $this->panelInit->apiOutput(true, "Attendance", $this->panelInit->language['attendanceSaved']);
 }