Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 14
CRAP
0.00% covered (danger)
0.00%
0 / 145
BookService
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 14
702.00
0.00% covered (danger)
0.00%
0 / 145
 __construct
0.00% covered (danger)
0.00%
0 / 1
2.00
0.00% covered (danger)
0.00%
0 / 3
 __clone
0.00% covered (danger)
0.00%
0 / 1
2.00
0.00% covered (danger)
0.00%
0 / 1
 getInstance
0.00% covered (danger)
0.00%
0 / 1
6.00
0.00% covered (danger)
0.00%
0 / 5
 addAccessionNumberPrefix
0.00% covered (danger)
0.00%
0 / 1
6.00
0.00% covered (danger)
0.00%
0 / 8
 getAccessionNumberPrefix
0.00% covered (danger)
0.00%
0 / 1
6.00
0.00% covered (danger)
0.00%
0 / 13
 updateAccessionNumberPrefix
0.00% covered (danger)
0.00%
0 / 1
6.00
0.00% covered (danger)
0.00%
0 / 11
 deleteAccessionNumberPrefix
0.00% covered (danger)
0.00%
0 / 1
6.00
0.00% covered (danger)
0.00%
0 / 11
 getAccessionNumberPerfixByDeptId
0.00% covered (danger)
0.00%
0 / 1
6.00
0.00% covered (danger)
0.00%
0 / 13
 getAccessionNumberPerfixById
0.00% covered (danger)
0.00%
0 / 1
6.00
0.00% covered (danger)
0.00%
0 / 13
 getAllBook
0.00% covered (danger)
0.00%
0 / 1
6.00
0.00% covered (danger)
0.00%
0 / 13
 getBookDetailsById
0.00% covered (danger)
0.00%
0 / 1
6.00
0.00% covered (danger)
0.00%
0 / 13
 getLastGeneratedAccessionNumber
0.00% covered (danger)
0.00%
0 / 1
6.00
0.00% covered (danger)
0.00%
0 / 13
 getLastGeneratedAccessionNumberByPrefixId
0.00% covered (danger)
0.00%
0 / 1
6.00
0.00% covered (danger)
0.00%
0 / 14
 getLastGeneratedAccessionNumberByStaffId
0.00% covered (danger)
0.00%
0 / 1
6.00
0.00% covered (danger)
0.00%
0 / 14
<?php
namespace service;
namespace com\linways\core\ams\professional\service;
use com\linways\core\ams\professional\exception\ProfessionalException;
use com\linways\core\ams\professional\dto\AccessionPrefix;
use com\linways\core\ams\professional\mapper\BookServiceMapper;
class BookService extends BaseService
{
    // /Condition 1 - Presence of a static member variable
    private static $_instance = null;
    
    // /Condition 2 - Locked down the constructor
    private function __construct()
    {
        $this->mapper = BookServiceMapper::getInstance()->getMapper();
    }
    // 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;
    }
    
    /**
     * add accession number prefix for a department
     * @param AccessionPrefix $accessionPrefix
     * @throws ProfessionalException
     * @return \com\linways\base\dto\MySqlResult
     */
    public function addAccessionNumberPrefix($accessionPrefix)
    {
        $sql="INSERT INTO accessionPrefix(divisionId, prefix, createdBy, updatedBy, createdDate, updatedDate) VALUES ($accessionPrefix->divisionId,'$accessionPrefix->prefix',$accessionPrefix->createdBy,$accessionPrefix->updatedBy,utc_timestamp(),utc_timestamp())";
        try {
            return $this->executeQueryForObject($sql);
        } catch (\Exception $e) {
            
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
    }
    
    public function getAccessionNumberPrefix()
    {
        $prefixList=NULL;
        $sql ="SELECT DISTINCT ap.id, dept.deptID,dept.deptName, bct.type_name, ap.prefix FROM accessionPrefix ap INNER JOIN department dept ON dept.deptID=ap.deptId INNER JOIN batch_course_type bct ON bct.id=ap.courseTypeId";
        try 
        {
            $prefixList = $this->executeQueryForList($sql,$this->mapper[BookServiceMapper::GET_ACCESSION_PREFIX]);
        } 
        catch (\Exception $e) 
        {
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
        
        return $prefixList;
    }
    
    /**
     * update prefix
     * @param string $prefix
     * @param int $divisionId
     * @throws ProfessionalException
     * @return object|NULL|\com\linways\base\util\$objectList[]
     */
    public function updateAccessionNumberPrefix($prefix, $divisionId)
    {
        $sql ="UPDATE accessionPrefix SET prefix='$prefix' WHERE divisionId=$divisionId";
        try
        {
          return  $this->executeQueryForObject($sql);
        }
        catch (\Exception $e)
        {
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
    }
    /**
     * delete accession number prefix
     * @param array $divisionId
     * @throws ProfessionalException
     * @return object|NULL|\com\linways\base\util\$objectList[]
     */
    public function deleteAccessionNumberPrefix($divisionId)
    {
        $sql ="DELETE FROM accessionPrefix WHERE divisionId =$divisionId";
        try
        {
            return  $this->executeQueryForObject($sql);
        }
        catch (\Exception $e)
        {
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
    }
    
    /**
     * get accession number prefix by department id
     * @param int $deptId
     * @param int $courseTypeId
     * @throws ProfessionalException
     * @return object|NULL|\com\linways\base\util\$objectList[]
     */
    public function getAccessionNumberPerfixByDeptId($deptId,$courseTypeId)
    {
        $prefix=NULL;
        $sql ="SELECT id, prefix FROM accessionPrefix WHERE deptId=$deptId AND courseTypeId=$courseTypeId";
        try
        {
            $prefix = $this->executeQueryForObject($sql);
        }
        catch (\Exception $e)
        {
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
        return $prefix;
        
    }
    
    /**
     * get accession number prefix by department id
     * @param int $id
     * @throws ProfessionalException
     * @return object|NULL|\com\linways\base\util\$objectList[]
     */
    public function getAccessionNumberPerfixById($id)
    {
        $prefix=NULL;
        $sql ="SELECT * FROM accessionPrefix WHERE id=$id";
        try
        {
            $prefix = $this->executeQueryForObject($sql);
        }
        catch (\Exception $e)
        {
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
        return $prefix;
        
    }
    
    /**
     * get all book details
     * @throws ProfessionalException
     * @return object|array|\com\linways\base\util\$objectList[]
     */
    public function getAllBook()
    {
        $bookList=NULL;
        $sql="SELECT lb.bookID, lb.bookMaterialType, lb.bookTitle, lb.authorID, lb.bookAccNo, ap.prefix ,ld.drawName, lr.rackName FROM library_bookinfo lb INNER JOIN library_drawentry ld ON ld.drawID=lb.drawID INNER JOIN library_rackentry lr ON lr.rackID=lb.rackID INNER JOIN accessionPrefix ap ON ap.id=lb.prefixId ORDER BY lb.bookAccNo";
        try
        {
            $bookList = $this->executeQueryForList($sql);
        }
        catch (\Exception $e)
        {
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
        return $bookList;
    }
    
    /**
     * get book detials by bookid
     * @param int $bookId
     * @throws ProfessionalException
     * @return object|NULL|\com\linways\base\util\$objectList[]
     */
    public function getBookDetailsById($bookId)
    {
        $bookDetails=NULL;
        $sql ="SELECT lb.bookMaterialType, lb.bookAccNo, lb.bookClass, lb.bookTitle, lb.authorID, lb.bookCallNo, lb.bookISBN, ld.deptName, ls.subjectName, ll.langID, lb.bookEdition, lb.bookVolume, lp.publisherName, lsu.supplierName, la.attachmentID, ldr.drawID, lr.rackID, lb.bookRefonly, lb.bookYearofPub, lb.bookPrice, lc.currencyID, lb.bookArrDate, lb.bookBillDate, lb.bookStatus, lb.bookEditor, lb.bookPages, lb.bookBillno, lb.bookBBSNo, ap.id as prefixId, ap.prefix FROM library_bookinfo lb LEFT JOIN library_department ld ON lb.deptID = ld.deptID LEFT JOIN library_subject ls ON lb.subjectID = ls.subjectID LEFT JOIN library_language ll ON lb.langID = ll.langID LEFT JOIN library_publisher lp ON lb.publisherID = lp.publisherID LEFT JOIN  library_supplier lsu ON lb.supplierID = lsu.supplierID LEFT JOIN library_attachments la ON lb.attachmentID = la.attachmentID INNER JOIN library_drawentry ldr ON lb.drawID = ldr.drawID LEFT JOIN  library_rackentry lr ON lb.rackID = lr.rackID LEFT JOIN library_currency lc ON lb.currencyID = lc.currencyID INNER JOIN accessionPrefix ap ON ap.id=lb.prefixId WHERE lb.bookID=$bookId";
        try
        {
            $bookDetails = $this->executeQueryForObject($sql);
        }
        catch (\Exception $e)
        {
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
        
        return $bookDetails;
    }
    
    /**
     * get last generated accession number
     * @throws ProfessionalException
     * @return object|NULL|\com\linways\base\util\$objectList[]
     */
    public function getLastGeneratedAccessionNumber()
    {
        $prefixDetails=null;
        $sql = "SELECT lb.prefixId, ap.prefix, lb.bookAccNo, lb.bookTitle, ld.name as divisionName FROM library_bookinfo lb INNER JOIN accessionPrefix ap ON ap.id=lb.prefixId INNER JOIN libraryDivision ld ON ld.id=ap.divisionId ORDER BY bookID DESC LIMIT 1";
        try
        {
            $prefixDetails = $this->executeQueryForObject($sql);
        }
        catch (\Exception $e)
        {
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
        
        return $prefixDetails;
    }
    
    /**
     * get last generated accession number
     * @var int $prefixId
     * @throws ProfessionalException
     * @return object|NULL|\com\linways\base\util\$objectList[]
     */
    public function getLastGeneratedAccessionNumberByPrefixId($prefixId)
    {
        $prefixId = $this->realEscapeString($prefixId);
        $prefixDetails=null;
        $sql = "SELECT ap.id , ap.prefix, if(lb.bookAccNo,lb.bookAccNo,0) as bookAccNo, lb.bookTitle, ld.name as divisionName FROM library_bookinfo lb RIGHT JOIN accessionPrefix ap ON ap.id=lb.prefixId RIGHT JOIN libraryDivision ld ON ld.id=ap.divisionId WHERE ap.id=$prefixId ORDER BY bookID DESC LIMIT 1";
        try
        {
            $prefixDetails = $this->executeQueryForObject($sql);
        }
        catch (\Exception $e)
        {
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
        
        return $prefixDetails;
    }
    
    /**
     * get last generated accession number by staff id
     * @var int $staffId
     * @throws ProfessionalException
     * @return object|NULL|\com\linways\base\util\$objectList[]
     */
    public function getLastGeneratedAccessionNumberByStaffId($staffId)
    {
        $staffId = $this->realEscapeString($staffId);
        $prefixDetails=null;
        $sql = "SELECT ap.id , ap.prefix, if(lb.bookAccNo,lb.bookAccNo,0) as bookAccNo, lb.bookTitle, ld.name as divisionName FROM library_bookinfo lb RIGHT JOIN accessionPrefix ap ON ap.id=lb.prefixId RIGHT JOIN libraryDivision ld ON ld.id=ap.divisionId RIGHT JOIN library_staff_division lsd ON lsd.divisionId=ap.divisionId AND lsd.divisionId=ld.id WHERE lsd.staffId=$staffId ORDER BY bookID DESC LIMIT 1";
        try
        {
            $prefixDetails = $this->executeQueryForObject($sql);
        }
        catch (\Exception $e)
        {
            throw new ProfessionalException($e->getCode(), $e->getMessage());
        }
        
        return $prefixDetails;
    }
}