예제 #1
0
 public function addTempDisciplinesToRequest()
 {
     $this->load->model('temporaryrequest_model');
     $courseId = $this->input->post('courseId');
     $userId = $this->input->post('userId');
     $dataIsOk = $this->validateTempDisciplineData();
     if ($dataIsOk) {
         $disciplineCode = $this->input->post('discipline_code_search');
         $semesterId = $this->input->post('semesterId');
         $offer = new Offer();
         $courseOffer = $offer->getOfferBySemesterAndCourse($semesterId, $courseId);
         if ($courseOffer !== FALSE) {
             $disciplineExistsInOfferList = $offer->disciplineExistsInOffer($disciplineCode, $courseOffer['id_offer']);
         } else {
             $disciplineExistsInOfferList = FALSE;
         }
         if ($disciplineExistsInOfferList) {
             $disciplineClass = $this->input->post('discipline_class_search');
             $classExists = $offer->checkIfClassExistsInDiscipline($courseOffer['id_offer'], $disciplineCode, $disciplineClass);
             if ($classExists) {
                 $offerDiscipline = $offer->getCourseOfferDisciplineByClass($disciplineCode, $courseOffer['id_offer'], $disciplineClass);
                 if ($offerDiscipline !== FALSE) {
                     $idOfferDiscipline = $offerDiscipline['id_offer_discipline'];
                     $userTempRequest = $this->getUserTempRequest($userId, $courseId, $semesterId);
                     $tryToSave = FALSE;
                     if ($userTempRequest !== FALSE) {
                         // Get the requested discipline hours
                         $schedule = new Schedule();
                         $schedule->getDisciplineHours($idOfferDiscipline);
                         $requestedDisciplineSchedule = $schedule->getDisciplineSchedule();
                         // Get disciplines hours from already inserted to resquest disciplines
                         $insertedDisciplines = array();
                         foreach ($userTempRequest as $registeredRequest) {
                             $schedule = new Schedule();
                             $schedule->getDisciplineHours($registeredRequest['discipline_class']);
                             $disciplineSchedule = $schedule->getDisciplineSchedule();
                             $insertedDisciplines[] = $disciplineSchedule;
                         }
                         $conflicts = $schedule->checkHourConflits($requestedDisciplineSchedule, $insertedDisciplines);
                         $tryToSave = FALSE;
                         if ($conflicts !== FALSE) {
                             $status = "danger";
                             $message = "Não foi possível adicionar a disciplina pedida porque houve conflito de horários com disciplinas já adicionadas.<br>\n\t\t\t\t\t\t\t\t<i>Conflito no horário <b>" . $conflicts->getDayHourPair() . "</b>.</i>";
                         } else {
                             $tryToSave = TRUE;
                         }
                     } else {
                         // In this case there is no discipline added to temp request, so is not a problem to add
                         $tryToSave = TRUE;
                     }
                     if ($tryToSave) {
                         $requestWasSaved = $this->saveTempRequest($userId, $courseId, $semesterId, $disciplineCode, $idOfferDiscipline);
                         if ($requestWasSaved) {
                             $status = "success";
                             $message = "Disciplina adicionada com sucesso à solicitação";
                         } else {
                             $status = "danger";
                             $message = "Não foi possível adicionar a disciplina informada.\n\t\t\t\t\t\t\t\t\t\t\t Cheque os dados informados e tente novamente.<br>\t\n\t\t\t\t\t\t\t\t\t\t\t Não é possível adicionar a mesma turma de uma disciplina várias vezes.";
                         }
                     }
                 } else {
                     $status = "danger";
                     $message = "Não foi possível adicionar a disciplina informada.\n\t\t\t\t\t\t\t\t\t Cheque os dados informados e tente novamente.<br>\t\n\t\t\t\t\t\t\t\t\t Não é possível adicionar a mesma turma de uma disciplina várias vezes.";
                 }
             } else {
                 $status = "danger";
                 $message = "Turma não encontrada para disciplina informada.";
             }
         } else {
             $status = "danger";
             $message = "Disciplina não encontrada na lista de oferta do seu curso.";
         }
     } else {
         $status = "danger";
         $message = "Dados na forma incorreta. Informe apenas números para o código e letras para a turma.";
     }
     $this->session->set_flashdata($status, $message);
     redirect("request/studentEnrollment/{$courseId}/{$userId}");
 }