public function downloadAction() { $type = $this->getRequest()->getQuery('type'); $f = $this->getRequest()->getQuery('f'); if (!$type || !$f) { return $this->page404(); } $file = ''; $fileName = ''; switch ($type) { case Media::TYPE_CRM_LEAD_TEMPLATE_EXCEL: $file = BASE_PATH . '/public/media/leads/' . $f; $fileName = $f; break; case Media::TYPE_CRM_CONTRACT_FILE: $fileContract = new \Crm\Model\Contract\File(); $fileContract->setId($f); $fileMapper = $this->getServiceLocator()->get('\\Crm\\Model\\Contract\\FileMapper'); if (!$fileMapper->get($fileContract)) { return $this->page404(); } $file = BASE_PATH . '/public/media/contracts/' . $fileContract->getContractId() . '/' . $fileContract->getFileName(); $fileName = $fileContract->getFileName(); break; case Media::TYPE_WORK_PROJECT_FILE: $d = $this->getRequest()->getQuery('d'); $document = new \Work\Model\Document(); $documentFile = new \Work\Model\DocumentFile(); $documentFile->setId($f); $document->setId($d); $documentMapper = $this->getServiceLocator()->get('\\Work\\Model\\DocumentMapper'); $documentFileMapper = $this->getServiceLocator()->get('\\Work\\Model\\DocumentFileMapper'); if (!$documentMapper->get($document) || !$documentFileMapper->get($documentFile)) { return $this->page404(); } $createdDate = $documentFileMapper->get($documentFile)->getCreatedDateTime(); $createdDateFolder = DateBase::createFromFormat(DateBase::COMMON_DATETIME_FORMAT, $createdDate)->format('Ymd'); $file = MEDIA_PATH . '/projects/documents/' . $createdDateFolder . '/' . $documentFile->getFileName(); $fileName = $documentFile->getFileName(); break; case Media::TYPE_CRM_ACITITY_PHONECALL: $phoneCall = new \Crm\Model\Activity(); $phoneCall->setId($f); $activityMapper = $this->getServiceLocator()->get('\\Crm\\Model\\ActivityMapper'); if (!$activityMapper->get($phoneCall) || $phoneCall->getType() != \Crm\Model\Activity::TYPE_PHONECALL || !$phoneCall->getFileName()) { return $this->page404(); } $file = BASE_PATH . '/public/media/phonecall/' . $phoneCall->getFilePath() . '/' . $phoneCall->getFileName(); $fileName = $phoneCall->getFileName(); break; case Media::TYPE_WORK_TASK_FILE: $attachFile = new \Work\Model\TaskFile(); $attachFile->setId($f); $attachFileMapper = $this->getServiceLocator()->get('\\Work\\Model\\TaskFileMapper'); if (!$attachFileMapper->get($attachFile)) { return $this->page404(); } //Check oldfile $file = Uri::getSavePath($attachFile) . '/' . $attachFile->getFileName(); $fileName = $attachFile->getFileName(); break; case Media::TYPE_DOCUMENT_DOCUMENT_FILE: $documentFile = new \Document\Model\DocumentFile(); $documentFile->setId($f); $documentFileMapper = $this->getServiceLocator()->get('\\Document\\Model\\DocumentFileMapper'); if (!$documentFile->getId() || !$documentFileMapper->get($documentFile)) { return $this->page404(); } $file = Uri::getSavePath($documentFile) . '/' . $documentFile->getFileName(); $fileName = $documentFile->getFileName(); break; case Media::TYPE_COMPANY_ANNOUNCEMENT_FILE: $d = $this->getRequest()->getQuery('d'); $announcementFile = new \Company\Model\AnnouncementFile(); $announcement = new \Company\Model\Announcement(); $announcementFile->setId($f); $announcement->setId($d); $announcementMapper = $this->getServiceLocator()->get('\\Company\\Model\\AnnouncementMapper'); $announcementFileMapper = $this->getServiceLocator()->get('\\Company\\Model\\AnnouncementFileMapper'); if (!$announcementMapper->get($announcement) || !$announcementFileMapper->get($announcementFile)) { return null; } $createdDate = $announcementFileMapper->get($announcementFile)->getCreatedDateTime(); $createdDateFolder = DateBase::createFromFormat(DateBase::COMMON_DATETIME_FORMAT, $createdDate)->format('Ymd'); $file = Uri::getSavePath($announcementFile) . '/' . $announcementFile->getFileName(); $fileName = $announcementFile->getFileName(); break; case Media::TYPE_WORK_MEETING_FILE: $d = $this->getRequest()->getQuery('d'); $meeting = new \Work\Model\Meeting(); $meetingFile = new \Work\Model\MeetingFile(); $meetingFile->setId($f); $meeting->setId($d); $meetingMapper = $this->getServiceLocator()->get('\\Work\\Model\\MeetingMapper'); $meetingFileMapper = $this->getServiceLocator()->get('\\Work\\Model\\MeetingFileMapper'); if (!$meetingMapper->get($meeting) || !$meetingFileMapper->get($meetingFile)) { return $this->page404(); } $meetingFile->setMeetingId($meeting->getId()); $createdDate = $meetingFileMapper->get($meetingFile)->getCreatedDateTime(); $createdDateFolder = DateBase::createFromFormat(DateBase::COMMON_DATETIME_FORMAT, $createdDate)->format('Ymd'); $file = Uri::getSavePath($meetingFile) . '/' . $meetingFile->getFileName(); $fileName = $meetingFile->getFileName(); break; case Media::TYPE_HRM_TEST_TEMPLATE_EXCEL: $file = BASE_PATH . '/public/media/test/' . $f; $fileName = $f; break; case Media::TYPE_IDEA_FILE: $fileModel = new \Idea\Model\File(); $fileModel->setId($f); $fileMapper = $this->getServiceLocator()->get('\\Idea\\Model\\FileMapper'); if (!$fileMapper->get($fileModel)) { return $this->page404(); } $file = \Home\Service\Uri::getSavePath($fileModel); $fileName = $fileModel->getFileName(); break; } if ($file && !file_exists($file)) { die("File not found."); } $ext = strtolower(pathinfo($file, PATHINFO_EXTENSION)); switch ($ext) { case "pdf": $ctype = "application/pdf"; break; case "exe": $ctype = "application/octet-stream"; break; case "zip": $ctype = "application/zip"; break; case "doc": case "docx": $ctype = "application/msword"; break; case "xls": $ctype = "application/vnd.ms-excel"; break; case "xlsx": $ctype = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'; break; case "ppt": case "pptx": $ctype = "application/vnd.ms-powerpoint"; break; case "gif": $ctype = "image/gif"; break; case "png": $ctype = "image/png"; break; case "jpe": case "jpeg": case "jpg": $ctype = "image/jpg"; break; default: $ctype = "application/force-download"; } header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: private", false); header("Content-Type: {$ctype}"); //echo $file;die; header("Content-Disposition: attachment; filename=\"" . $fileName . "\";"); header("Content-Transfer-Encoding: binary"); header("Content-Length: " . filesize($file)); readfile("{$file}") or die("File not found!"); exit; }
/** * @param Object $obj * @param string|null $thumbnail * @return string */ public static function getViewPath($obj, $thumbnail = null) { switch ($obj) { case $obj instanceof \Crm\Model\Contract\File: if ($obj->getFileName()) { return '/media/contracts/' . $obj->getContractId() . '/' . $obj->getFileName(); } break; case $obj instanceof \Hrm\Model\Recruitment\Candidate: $filePath = DateBase::createFromFormat(DateBase::COMMON_DATE_FORMAT, $obj->getCreatedDate())->format('Ymd'); return '/media/hrm/candidate/' . $filePath . '/' . $obj->getFileName(); break; case $obj instanceof \Work\Model\TaskFile: $filePath = DateBase::createFromFormat(DateBase::COMMON_DATETIME_FORMAT, $obj->getCreatedDateTime())->format('Ymd'); return '/media/work/attachfile/' . $filePath . '/' . $obj->getTaskId() . '/' . $obj->getFileName(); break; case $obj instanceof \Work\Model\MeetingFile: $filePath = DateBase::createFromFormat(DateBase::COMMON_DATETIME_FORMAT, $obj->getCreatedDateTime())->format('Ymd'); return '/media/projects/meetings/' . $filePath . '/' . $obj->getMeetingId() . '/' . $obj->getFileName(); break; case $obj instanceof \Company\Model\AnnouncementFile: //return '/media/company/announcement/'.$obj->getOption('companyId').'/'.$obj->getAnnouncementId().'/'.$obj->getFileName(); if (!$obj->getFilePath()) { return '/media/announcement/temp/' . $obj->getAnnouncementId(); } else { return '/media/announcement/' . $obj->getFilePath() . '/' . $obj->getAnnouncementId(); } break; case $obj instanceof \Document\Model\DocumentFile: $filePath = DateBase::createFromFormat(DateBase::COMMON_DATETIME_FORMAT, $obj->getCreatedDateTime())->format('Ymd'); return '/media/document/documents/' . $filePath . '/' . $obj->getDocumentId() . '/' . $obj->getFileName(); break; case $obj instanceof \Idea\Model\File: $filePath = DateBase::createFromFormat(DateBase::COMMON_DATETIME_FORMAT, $obj->getCreatedDateTime())->format('Ymd'); return '/media/idea/' . $obj->getFilePath() . '/' . $obj->getIdeaId() . '/' . $obj->getFileName(); break; case $obj instanceof \User\Model\User: if (!$obj->getCreatedDateTime()) { return '/media/users/default/' . $obj->getId() . '/'; } $datePath = DateBase::toFormat($obj->getCreatedDateTime(), 'Ymd'); return '/media/user/' . $datePath . '/' . $obj->getId() . '/' . $obj->getAvatar(); break; } return ''; }
public function createaccountproductAction() { $dbSql = $this->getServiceLocator()->get('dbSql'); $dbAdapter = $this->getServiceLocator()->get('dbAdapter'); $select = $dbSql->select(['cp' => \Crm\Model\Contract\ProductMapper::TABLE_NAME]); $select->join(['c' => \Crm\Model\ContractMapper::TABLE_NAME], 'c.id=cp.contractId', ['accountId']); $select->join(['p' => \Company\Model\ProductMapper::TABLE_NAME], 'cp.productId=p.id', ['p.type' => 'type']); $paginatorAdapter = new \Zend\Paginator\Adapter\DbSelect($select, $dbAdapter); $paginator = new \Zend\Paginator\Paginator($paginatorAdapter); $paginator->setItemCountPerPage(200); $page = $this->getRequest()->getQuery('page', 1); $paginator->setCurrentPageNumber($page); $accountProductMapper = $this->getServiceLocator()->get('\\Crm\\Model\\Account\\ProductMapper'); $totalItem = $this->getRequest()->getQuery('totalItem', 0); foreach ($paginator as $row) { $row = (array) $row; $accountProduct = new \Crm\Model\Account\Product(); $accountProduct->setAccountId($row['accountId']); $accountProduct->setProductId($row['productId']); if ($accountProductMapper->isExisted($accountProduct)) { if ($row['p.type'] == \Company\Model\Product::TYPE_SERVICE_FIXED_FEE) { $accountProduct->setExpiredDate(null); $accountProduct->setStatus(\Crm\Model\Account\Product::STATUS_USING); } else { $expriteDate = DateBase::createFromFormat(DateBase::COMMON_DATE_FORMAT, $row['expirationDate']); $currentExpried = DateBase::createFromFormat(DateBase::COMMON_DATE_FORMAT, $accountProduct->getExpiredDate()); if ($expriteDate > $currentExpried) { $accountProduct->setExpiredDate($expriteDate->format(DateBase::COMMON_DATE_FORMAT)); $accountProduct->setStatus(\Crm\Model\Account\Product::STATUS_USING); } } } else { if ($row['p.type'] == \Company\Model\Product::TYPE_SERVICE_FIXED_FEE) { $accountProduct->setExpiredDate(null); $accountProduct->setStatus(\Crm\Model\Account\Product::STATUS_USING); } else { $accountProduct->setExpiredDate($row['expirationDate']); $expriteDate = DateBase::createFromFormat(DateBase::COMMON_DATE_FORMAT, $row['expirationDate']); $currentExpried = DateBase::createFromFormat(DateBase::COMMON_DATE_FORMAT, DateBase::getCurrentDate()); if ($expriteDate > $currentExpried) { $accountProduct->setStatus(\Crm\Model\Account\Product::STATUS_USING); } else { $accountProduct->setStatus(\Crm\Model\Account\Product::STATUS_EXPRIRED); } } } $accountProduct->setLastUpdatedDateTime(DateBase::getCurrentDateTime()); $accountProductMapper->save($accountProduct); $totalItem++; } $this->getViewModel()->setTerminal(true); $this->getViewModel()->setVariable('page', $page); $this->getViewModel()->setVariable('totalPages', $paginator->count() + 1); if ($page <= $paginator->count()) { $this->getViewModel()->setVariable('redirectUri', '/system/tool/createaccountproduct?page=' . ($page + 1) . '&totalItem=' . $totalItem); } $this->getViewModel()->setVariable('totalItem', $totalItem); return $this->getViewModel(); }