Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 9 |
CRAP | |
0.00% |
0 / 210 |
| AcademicDegreeService | |
0.00% |
0 / 1 |
|
0.00% |
0 / 9 |
1482.00 | |
0.00% |
0 / 210 |
| searchDegreeService | |
0.00% |
0 / 1 |
20.00 | |
0.00% |
0 / 42 |
|||
| saveAcademicTerm | |
0.00% |
0 / 1 |
56.00 | |
0.00% |
0 / 25 |
|||
| validateSaveAcademicTermRequest | |
0.00% |
0 / 1 |
12.00 | |
0.00% |
0 / 6 |
|||
| insertAcademicTerm | |
0.00% |
0 / 1 |
12.00 | |
0.00% |
0 / 14 |
|||
| updateAcademicTerm | |
0.00% |
0 / 1 |
12.00 | |
0.00% |
0 / 18 |
|||
| deleteAcademicTerm | |
0.00% |
0 / 1 |
12.00 | |
0.00% |
0 / 18 |
|||
| restoreAcademicTerm | |
0.00% |
0 / 1 |
12.00 | |
0.00% |
0 / 18 |
|||
| searchAcademicTerm | |
0.00% |
0 / 1 |
90.00 | |
0.00% |
0 / 44 |
|||
| getAcademicTermDetails | |
0.00% |
0 / 1 |
12.00 | |
0.00% |
0 / 25 |
|||
| <?php | |
| namespace com\linways\core\ams\professional\service\academic; | |
| use com\linways\base\util\SecurityUtils; | |
| use com\linways\base\util\MakeSingletonTrait; | |
| use com\linways\core\ams\professional\service\BaseService; | |
| use com\linways\core\ams\professional\exception\ProfessionalException; | |
| use com\linways\core\ams\professional\constant\academic\StatusConstants; | |
| use com\linways\core\ams\professional\dto\api\AcademicTerm; | |
| use com\linways\core\ams\professional\dto\api\Degree; | |
| use com\linways\core\ams\professional\mapper\academic\AcademicTermServiceMapper; | |
| use com\linways\core\ams\professional\request\academic\SearchAcademicTermRequest; | |
| use stdClass; | |
| class AcademicDegreeService extends BaseService | |
| { | |
| use MakeSingletonTrait; | |
| /** | |
| * Search user | |
| * @param User $user | |
| * @param SortBy $sortBy | |
| * @param SortOrder $sortOrder | |
| * @throws TrainingException | |
| * @author Krishnajith | |
| * @return User $user | |
| */ | |
| public function searchDegreeService($degree){ | |
| try | |
| { | |
| $response = new stdClass; | |
| $user = $this->realEscapeObject($degree); // every parameter of each function should be real-escaped. | |
| $condition = NULL; | |
| if(!empty($degree->name)) | |
| { | |
| $condition .= " AND degree.name LIKE '%$degree->name%'"; | |
| } | |
| if(!empty($degree->discription)) | |
| { | |
| $condition .= " AND degree.discription LIKE '%$degree->discription%'"; | |
| } | |
| $sql = "SELECT | |
| degree.id, | |
| degree.name, | |
| degree.discription, | |
| degree.created_by, | |
| degree.created_date, | |
| degree.updated_by, | |
| degree.updated_date | |
| FROM | |
| `degree` | |
| WHERE | |
| 1=1 | |
| $condition "; | |
| $totalRecordSql = "SELECT | |
| COUNT(DISTINCT degree.id )as | |
| FROM | |
| `degree` | |
| WHERE | |
| 1=1 | |
| $condition "; | |
| $response->DegreeArray = $this->executeQueryForList($sql); | |
| $response->totalRecords = $this->executeQueryForObject($totalRecordSql); | |
| } | |
| catch(\Exception $e) | |
| { | |
| throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
| } | |
| return $response; | |
| } | |
| /** | |
| * Save academic term | |
| * @param AcademicTerm $academicTerm | |
| * @return String $id | |
| */ | |
| public function saveAcademicTerm (AcademicTerm $academicTerm) | |
| { | |
| $academicTerm = $this->realEscapeObject($academicTerm); | |
| $academicTerm->createdBy = $GLOBALS['userId'] ?? $academicTerm->createdBy; | |
| $academicTerm->updatedBy = $GLOBALS['userId'] ?? $academicTerm->updatedBy; | |
| try{ | |
| $this->validateSaveAcademicTermRequest($academicTerm); | |
| if(!empty($academicTerm->id)) | |
| { | |
| $academicTerm->id = $this->updateAcademicTerm($academicTerm); | |
| } | |
| else | |
| { | |
| $academicTerm->id = $this->insertAcademicTerm($academicTerm); | |
| } | |
| }catch(\Exception $e) { | |
| if($e->getCode() !== ProfessionalException::INVALID_PARAMETER && $e->getCode() !== ProfessionalException::EMPTY_PARAMETERS && $e->getCode() !== ProfessionalException::DUPLICATE_ENTRY) { | |
| throw new ProfessionalException($e->getCode(),"Failed to save academic term! Please try again"); | |
| } else if ($e->getCode() === ProfessionalException::DUPLICATE_ENTRY) { | |
| throw new ProfessionalException (ProfessionalException::DUPLICATE_ENTRY,"Cannot create academic term.$academicTerm->name already exists!"); | |
| } else { | |
| throw new ProfessionalException ($e->getCode(),$e->getMessage()); | |
| } | |
| } | |
| return $academicTerm->id; | |
| } | |
| /** | |
| * Validate Academic term Request Before Saving | |
| * @param AcademicTerm $academicTerm | |
| * @return NULL | |
| */ | |
| private function validateSaveAcademicTermRequest($academicTerm) | |
| { | |
| if(empty($academicTerm->name)) | |
| throw new ProfessionalException(ProfessionalException::EMPTY_PARAMETERS,"Academic term name is empty! Please enter a name for academic term"); | |
| if(empty($academicTerm->type)) | |
| throw new ProfessionalException(ProfessionalException::EMPTY_PARAMETERS,"Academic term type is empty! Please choose a academic term type"); | |
| } | |
| /** | |
| * Insert Academic term | |
| * @param AcademicTerm $academicTerm | |
| * @return String $id | |
| */ | |
| private function insertAcademicTerm(AcademicTerm $academicTerm) | |
| { | |
| $properties = !empty($academicTerm->properties) ? "'" . json_encode($academicTerm->properties) . "'" : "NULL"; | |
| $id = SecurityUtils::getRandomString(); | |
| $query = "INSERT INTO `academic_term` | |
| (`id`,`name`,`type`,`properties`,`created_by`,`updated_by`) | |
| VALUES | |
| ('$id','$academicTerm->name','$academicTerm->type',$properties,'$academicTerm->createdBy','$academicTerm->updatedBy')"; | |
| try { | |
| $this->executeQuery($query); | |
| return $id; | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException($e->getCode(),$e->getMessage()); | |
| } | |
| } | |
| /** | |
| * Update Academic term | |
| * @param AcademicTerm $academicTerm | |
| * @return NULL | |
| */ | |
| private function updateAcademicTerm(AcademicTerm $academicTerm) | |
| { | |
| $properties = !empty($academicTerm->properties) ? "'".json_encode($academicTerm->properties)."'" : "NULL"; | |
| $query = "UPDATE | |
| `academic_term` | |
| SET | |
| `name` = '$academicTerm->name', | |
| `type` = '$academicTerm->type', | |
| `properties` = $properties, | |
| `updated_by` = '$academicTerm->updatedBy' | |
| WHERE | |
| `id` = '$academicTerm->id'"; | |
| try { | |
| $this->executeQuery($query); | |
| return $academicTerm->id; | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException($e->getCode(),$e->getMessage()); | |
| } | |
| } | |
| /** | |
| * Delete Academic term (Soft Delete) | |
| * @param String $id | |
| * @return NULL | |
| */ | |
| public function deleteAcademicTerm($id) | |
| { | |
| $id = $this->realEscapeString($id); | |
| $updatedBy = $GLOBALS['userId']; | |
| if(empty($id)) | |
| throw new ProfessionalException(ProfessionalException::EMPTY_PARAMETERS,"Academic term is invalid! Please enter a valid academic term"); | |
| $query = "UPDATE | |
| `academic_term` | |
| SET | |
| `trashed` = UTC_TIMESTAMP(), | |
| `updated_by` = '$updatedBy' | |
| WHERE | |
| `id` = '$id'"; | |
| try { | |
| $this->executeQuery($query); | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException(ProfessionalException::ERROR_DELETING,"Error deleting academic term! Please try again"); | |
| } | |
| } | |
| /** | |
| * Restore Academic term | |
| * @param String $id | |
| * @return NULL | |
| */ | |
| public function restoreAcademicTerm($id) | |
| { | |
| $id = $this->realEscapeString($id); | |
| $updatedBy = $GLOBALS['userId']; | |
| if(empty($id)) | |
| throw new ProfessionalException(ProfessionalException::EMPTY_PARAMETERS,"Academic term is invalid! Please enter a valid academic term"); | |
| $query = "UPDATE | |
| `academic_term` | |
| SET | |
| `trashed` = NULL, | |
| `updated_by` = '$updatedBy' | |
| WHERE | |
| `id` = '$id'"; | |
| try { | |
| $this->executeQuery($query); | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException(ProfessionalException::ERROR_RESTORING,"Error restoring academic term! Please try again"); | |
| } | |
| } | |
| /** | |
| * Search Academic term Details | |
| * @param SearchAcademicTermRequest $request | |
| * @return AcademicTerm | |
| */ | |
| public function searchAcademicTerm(SearchAcademicTermRequest $request) | |
| { | |
| $request = $this->realEscapeObject($request); | |
| $whereQuery = ""; | |
| $limitQuery = ""; | |
| if(!empty($request->id)) { | |
| $whereQuery .= " AND act.id='$request->id' "; | |
| } | |
| if($request->trashed === StatusConstants::ACTIVE) { | |
| $whereQuery .= " AND act.trashed IS NULL "; | |
| } | |
| if($request->trashed === StatusConstants::TRASHED) { | |
| $whereQuery .= " AND act.trashed IS NOT NULL "; | |
| } | |
| if(!empty($request->name)) { | |
| $whereQuery .= " AND act.name LIKE '%$request->name%' "; | |
| } | |
| if(!empty($request->type)) { | |
| $whereQuery .= " AND act.`type` LIKE '%$request->type%' "; | |
| } | |
| if($request->startIndex !== "" && $request->endIndex !== "") | |
| { | |
| $limitQuery .= " LIMIT $request->startIndex,$request->endIndex"; | |
| } | |
| $query = "SELECT | |
| act.id, | |
| act.name, | |
| act.`type`, | |
| act.properties, | |
| act.trashed, | |
| act.created_by, | |
| act.created_date, | |
| act.updated_by, | |
| act.updated_date | |
| FROM | |
| `academic_term` act | |
| WHERE | |
| 1 = 1"; | |
| try { | |
| $academicTerms = $this->executeQueryForList($query.$whereQuery.$limitQuery, $this->mapper[AcademicTermServiceMapper::SEARCH_ACADEMIC_TERMS]); | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException(ProfessionalException::ERROR_FETCHING,"Cannot fetch academic term details! Please try again"); | |
| } | |
| return $academicTerms; | |
| } | |
| /** | |
| * get Academic term by id | |
| * @param String $id | |
| * @return AcademicTerm | |
| */ | |
| public function getAcademicTermDetails($id) | |
| { | |
| $request = $this->realEscapeObject($id); | |
| if(empty($id)) | |
| throw new ProfessionalException(ProfessionalException::EMPTY_PARAMETERS,"Academic term is invalid! Please enter a valid academic term"); | |
| $query = "SELECT | |
| act.id, | |
| act.name, | |
| act.`type`, | |
| act.properties, | |
| act.trashed, | |
| act.created_by, | |
| act.created_date, | |
| act.updated_by, | |
| act.updated_date | |
| FROM | |
| academic_term act | |
| WHERE | |
| act.id='$id'"; | |
| try { | |
| $academicTerm = $this->executeQueryForObject($query, $this->mapper[AcademicTermServiceMapper::SEARCH_ACADEMIC_TERMS]); | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException(ProfessionalException::ERROR_FETCHING,"Cannot fetch academic term details! Please try again"); | |
| } | |
| return $academicTerm; | |
| } | |
| } |