Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 8 |
CRAP | |
0.00% |
0 / 120 |
| DocumentService | |
0.00% |
0 / 1 |
|
0.00% |
0 / 8 |
702.00 | |
0.00% |
0 / 120 |
| __construct | |
0.00% |
0 / 1 |
2.00 | |
0.00% |
0 / 1 |
|||
| __clone | |
0.00% |
0 / 1 |
2.00 | |
0.00% |
0 / 1 |
|||
| getInstance | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 4 |
|||
| searchDocuments | |
0.00% |
0 / 1 |
156.00 | |
0.00% |
0 / 63 |
|||
| getDocument | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 17 |
|||
| givePermissionToUpload | |
0.00% |
0 / 1 |
20.00 | |
0.00% |
0 / 15 |
|||
| checkDocUploadPermission | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 10 |
|||
| documentUploadPermittedStaff | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 9 |
|||
| <?php | |
| namespace com\linways\core\ams\professional\service; | |
| use com\linways\core\ams\professional\response\SearchDocumentResponse; | |
| use com\linways\core\ams\professional\exception\ProfessionalException; | |
| class DocumentService extends BaseService | |
| { | |
| private static $_instance = null; | |
| // /Condition 2 - Locked down the constructor | |
| private function __construct() { | |
| } | |
| // Prevent any oustide instantiation of this class | |
| // /Condition 3 - Prevent any object or instance of that class to be cloned | |
| private function __clone() { | |
| } | |
| // Prevent any copy of this object | |
| // /Condition 4 - Have a single globally accessible static method | |
| public static function getInstance() { | |
| if (! is_object ( self::$_instance )) // or if( is_null(self::$_instance) ) or if( self::$_instance == null ) | |
| self::$_instance = new self (); | |
| return self::$_instance; | |
| } | |
| /** | |
| * Search Documents | |
| * @param SearchDocumentRequest | |
| * @return SearchDocumentResponse | |
| * Supported Sort options : | |
| * <table> | |
| * <tr> | |
| * <th>Name</th> | |
| * <th>Value</th> | |
| * </tr> | |
| * <tr> <td> Name </td><td> docName</td> </tr> | |
| * <tr> <td> staffName </td><td> staffName</td> </tr> | |
| * <tr> <td> MostRead </td><td> sd.docVisitors</td> </tr> | |
| * | |
| * </table> | |
| */ | |
| public function searchDocuments($searchDocumentRequest) | |
| { | |
| $response = new SearchDocumentResponse(); | |
| $criteria = NULL; | |
| $sqlCount = "SELECT count(sd.docID) as totalRecords"; | |
| $fromCondition =" FROM staff_document sd INNER JOIN staffaccounts sa ON sa.staffID = sd.staffID WHERE sd.docID IS NOT NULL "; | |
| $sqlSearch = "SELECT sd.docID as id, | |
| sd.docName as name, | |
| sd.docImgPath as imagePath, | |
| sd.staffID as staffId, | |
| sa.staffName as staffName, | |
| sa.staffAccount as staffAccount, | |
| sd.docVisitors as noofVisitors, sd.is_private as isPrivate "; | |
| //From condtion added | |
| $sqlCount .= $fromCondition; | |
| $sqlSearch .= $fromCondition; | |
| if(!empty($searchDocumentRequest)) | |
| { | |
| //Category ID | |
| if(!empty($searchDocumentRequest->categoryId) ) | |
| { | |
| $criteria .= " AND sd.docCatID = $searchDocumentRequest->categoryId"; | |
| } | |
| //Sub Category | |
| if(!empty($searchDocumentRequest->subCategoryId) ) | |
| { | |
| $criteria .= " AND sd.docSubCatID = $searchDocumentRequest->subCategoryId"; | |
| } | |
| //document Name | |
| if(!empty($searchDocumentRequest->documentName) ) | |
| { | |
| $criteria .= " AND sd.docName LIKE '%$searchDocumentRequest->documentName%' "; | |
| } | |
| //staff | |
| if(!empty($searchDocumentRequest->staffId) ) | |
| { | |
| $criteria .= " AND sd.staffID=$searchDocumentRequest->staffId "; | |
| } | |
| //adding start date and end date | |
| if (!empty($searchDocumentRequest->startDate) && !empty($searchDocumentRequest->endDate)) { | |
| if (strtotime($searchDocumentRequest->startDate) > strtotime($searchDocumentRequest->endDate)) { | |
| throw new ProfessionalException(ProfessionalException::INVALID_DATE_RANGE,"Please choose start date and end date correctly"); | |
| } | |
| else | |
| { | |
| $criteria .= " AND sd.docUploadTime BETWEEN '$searchDocumentRequest->startDate' AND '$searchDocumentRequest->endDate'"; | |
| } | |
| } | |
| //show private documents | |
| $isPrivate = $searchDocumentRequest->showPrivateDocuments ? 1 : 0; | |
| $criteria .= " AND sd.is_private=$isPrivate "; | |
| //Set criteria to count and select query | |
| $sqlCount .= $criteria; | |
| //Add Sort condtion | |
| if(!empty($searchDocumentRequest->sortBy)) | |
| { | |
| $criteria .= " ORDER BY $searchDocumentRequest->sortBy $searchDocumentRequest->sortOrder"; | |
| } | |
| //Add Pagination | |
| $pagination = " LIMIT $searchDocumentRequest->startIndex,$searchDocumentRequest->endIndex"; | |
| $sqlSearch .= $criteria.$pagination; | |
| try { | |
| $response->totalRecords = $this->executeQueryForObject($sqlCount)->totalRecords; | |
| $response->documents = $this->executeQueryForList($sqlSearch); | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException($e->getCode(),$e->getMessage()); | |
| } | |
| } | |
| else | |
| { | |
| throw new ProfessionalException(ProfessionalException::INVALID_REQUEST,"SearchDocumentRequest is null!"); | |
| } | |
| return $response; | |
| } | |
| /** | |
| * Get document by document Id | |
| * @param int $documentId | |
| * @return $document | |
| */ | |
| public function getDocument($documentId) | |
| { | |
| $document = NULL; | |
| $sql = "SELECT sd.docID as id, | |
| sd.docName as name, | |
| sd.docImgPath as imagePath, | |
| sd.staffID as staffId, | |
| sa.staffName as staffName, | |
| sa.staffAccount as staffAccount, | |
| sd.docVisitors as noofVisitors, sd.is_private as isPrivate | |
| FROM staff_document sd INNER JOIN staffaccounts sa ON sa.staffID = sd.staffID WHERE sd.docID=$documentId "; | |
| try { | |
| $document = $this->executeQueryForObject($sql); | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException($e->getCode(),$e->getMessage()); | |
| } | |
| return $document; | |
| } | |
| /** | |
| * @param staffId, action(delete or insert), createdBy user | |
| */ | |
| function givePermissionToUpload($staffId,$action,$userId) | |
| { | |
| if ($action == 'INSERT') | |
| { | |
| $sql = "INSERT INTO document_upload_permission (staffID,createdBy) VALUES ('$staffId','$userId')"; | |
| } | |
| elseif ($action == 'DELETE') | |
| { | |
| $sql = "DELETE FROM document_upload_permission WHERE staffID = '$staffId'"; | |
| } | |
| try { | |
| $this->executeQuery($sql); | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException($e->getCode(),$e->getMessage()); | |
| } | |
| } | |
| /** | |
| * check if the staff has permission to upload the document | |
| * @param $staffId | |
| */ | |
| function checkDocUploadPermission($staffId) | |
| { | |
| $result = null; | |
| $sql = "SELECT staffID FROM document_upload_permission WHERE staffID = ".$staffId.""; | |
| try { | |
| $result = $this->executeQueryForObject($sql); | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException($e->getCode(),$e->getMessage()); | |
| } | |
| return $result; | |
| } | |
| /** | |
| * @return Staff | |
| */ | |
| function documentUploadPermittedStaff($sortBy='staffName',$sortOrder='ASC') { | |
| $stafflist = null; | |
| $sql = "SELECT sa.staffName as staffName,dup.staffID as staffId FROM document_upload_permission dup INNER JOIN staffaccounts sa ON sa.staffID = dup.staffID"; | |
| try { | |
| $stafflist = $this->executeQueryForList($sql); | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException($e->getCode(),$e->getMessage()); | |
| } | |
| return $stafflist; | |
| } | |
| } | |