<?php
namespace App\Controller;
use App\Controller\HelperController;
use App\Entity\Membership;
use App\Entity\MembershipDocument;
use App\Entity\MembershipStatusType;
use App\Entity\MembershipSurvey;
use App\Entity\MembershipTypeManager;
use App\Entity\ProductDocument;
use App\Entity\SurveyFieldsType;
use App\ModelService\ConfigurationService;
use App\ModelService\MembershipManagerService;
use App\ModelService\MembershipService;
use App\Service\CacheService;
use App\Packages\GlobalEnv;
use App\Packages\ModelUtil\TypeUtil;
use App\Query\Filter;
use App\Query\OrderCriterion;
use App\Query\QueryData;
use App\Service\AjaxService;
use App\Service\Authentication\Authentication;
use App\Service\ModelServiceManager;
use App\Service\RecordLock\RecordLock;
use App\Service\SessionService;
use App\Service\UserService;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Contracts\Translation\TranslatorInterface;
class HomeController extends AbstractController
{
const ACTION_VIEW = 'view';
const TTL_CACHE_STATISTIC_DATA = 60 * 60 * 24; //1 GIORNO
private $authentication;
private $ajaxService;
// private $eventStoreService;
private $modelServiceManager;
private $sessionService;
private $translator;
private $helperController;
private $recordLockService;
private $membershipService;
private $membershipManagerService;
//cache Service
private $cacheService;
public function __construct(
Authentication $authentication,
AjaxService $ajaxService,
ModelServiceManager $modelServiceManager,
SessionService $sessionService,
TranslatorInterface $translator,
RecordLock $recordLockService,
UserService $userService,
CacheService $cacheService,
) {
$this->authentication = $authentication;
$this->ajaxService = $ajaxService;
$this->modelServiceManager = $modelServiceManager;
$this->sessionService = $sessionService;
$this->translator = $translator;
// $this->eventStoreService = $this->modelServiceManager->getModelService('eventStore');
$this->documentService = $this->modelServiceManager->getModelService('document');
$this->recordLockService = $recordLockService;
$this->cacheService = $cacheService;
$this->helperController = new HelperController(
$this->authentication,
$this->modelServiceManager,
$this->recordLockService,
$userService,
);
}
/**
* @Route("/", name="home", methods={"GET"})
*/
public function index(Request $request)
{
// Legge dati autenticazione dalla queryString della request
$authToken = $request->get('auth');
// Effettua autenticazione
// Se utente non autenticato, mostra apposita pagina di errore
$result = $this->authentication->authenticate($authToken);
if (!$result) {
return $this->render('unauthenticated.html.twig');
} else {
$loggedUser = $result;
}
if ($loggedUser["hasCompleteView"]) {
// Efettuo il caricamento in cache dei clienti di wp
//$this->userService->loadUsers();
$data = array();
$data['logged_user'] = $this->authentication->getLoggedUser();
if ($loggedUser["isAdmin"]) {
$data['categoryExclusive'] = $this->getModelServiceConfiguration()->getCategoryExclusive();
$data['categoryNutrition'] = $this->getModelServiceConfiguration()->getCategoryNutrition();
$data['categoryBasic'] = $this->getModelServiceConfiguration()->getCategoryBasic();
$data['categoryFocus'] = $this->getModelServiceConfiguration()->getCategoryFocus();
$data['membershipUsers'] = $this->getModelCountsMemberships(true);
$data['membershipBasicActiveUsers'] = $this->getModelCountMembershipsBasicFocus(true, $data['categoryBasic']);
$data['membershipBasicUsers'] = $this->getModelCountMembershipsBasicFocus(false, $data['categoryBasic']);
$data['membershipNutritionUsers'] = $this->getModelCountMembershipsAdvanced(true, $data['categoryNutrition']);
$data['membershipNutritionUsersPendingPayment'] = $this->getModelCountMembershipsInStatusX(MembershipStatusType::PENDING_PAYMENT, $data['categoryNutrition']);
$data['membershipNutritionUsersPendingTrainingCard'] = $this->getModelCountMembershipsInStatusX(MembershipStatusType::PENDING_TRAINING_CARD, $data['categoryNutrition']);
$data['membershipNutritionUsersInQueue'] = $this->getModelCountMembershipsInStatusX(MembershipStatusType::IN_QUEUE, $data['categoryNutrition']);
$entityKey = CacheService::PREFIX_ENTITYTAG_STATISTIC_QUEUE;
if ($this->getCacheService()->hasItem($entityKey)) {
$dataResponse = $this->getCacheService()->getItemValue($entityKey);
} else {
$averageDaysQueueAccess = $this->getMembershipService()->getAverageDaysQueueAccessTime();
$weekUnlockingFromQueue = $this->getMembershipService()->getWeekUnlockingFromQueue();
$weekUnlockingFromQueue = '' . $weekUnlockingFromQueue;
$weekUnlockingFromQueue = substr($weekUnlockingFromQueue, 0, 4) . '-' . substr($weekUnlockingFromQueue, 4);
$dataResponse = array('averageDaysQueueAccess' => $averageDaysQueueAccess, 'weekUnlockingFromQueue' => $weekUnlockingFromQueue);
$this->setCacheStatisticQueue($dataResponse);
}
$data['nuAverangeDaysToNutritionServiceAccess'] = $dataResponse["averageDaysQueueAccess"];
$data['nuWeekUnlockingFromQueue'] = $dataResponse["weekUnlockingFromQueue"];
$data["exportXlsInfo"] = true;
} else if ($loggedUser["isNutritionist"]) {
$data['membershipAssignManagerMe'] = $this->getCountMyMembershipsAssigned(MembershipTypeManager::NUTRITIONIST, $loggedUser["external_id"]);
$data['membershipWaitingProgrammMe'] = $this->getCountMyMembershipsWaitingProgram(MembershipTypeManager::NUTRITIONIST, $loggedUser["external_id"]);
} else if ($loggedUser["isNutritionistSupervisor"]) {
$data['membershipAssignManager'] = $this->getCountMyMembershipsAssigned(MembershipTypeManager::NUTRITIONIST);
$data['membershipWaitingProgramm'] = $this->getCountMyMembershipsWaitingProgram(MembershipTypeManager::NUTRITIONIST);
}
return $this->render('homeAdmin.html.twig', $data);
} else {
//recupero le membership by userId
$membershipsByUserId = $this->getMembershipsByUserId($loggedUser['external_id']);
$data = array(
'logged_user' => $loggedUser,
'exclusiveMemberships' => $this->printExclusiveMemberships($membershipsByUserId),
'nutritionMemberships' => $this->printNutritionMemberships($membershipsByUserId),
'basicMemberships' => $this->printBasicMemberships($membershipsByUserId),
);
return $this->render('homeUser.html.twig', $data);
}
}
/**
* @Route("/logout", name="logout" , methods={"POST"})
*/
public function logout()
{
$this->sessionService->invalidate();
return $this->render('sessionExpired.html.twig');
}
/**
* @Route("/survey/view", name="survey_view", methods={"POST"})
*/
public function viewSurvey(Request $request)
{
// Imposta ajax service
$this->ajaxService->clearMessages();
// Controllo autenticazione e autorizzazioni
$loggedUser = $this->authentication->getLoggedUser();
if (!$loggedUser) {
//authentication failed
$this->ajaxService->addMessageRedirect($this->generateUrl("home"));
return new Response(
$this->ajaxService->getXmlResponse(),
Response::HTTP_OK,
array('content-type' => 'application/xml')
);
}
// load model
$modelKey = 'membershipSurvey';
$modelId = $request->get('rowId');
$model = $this->modelServiceManager->getModelService($modelKey)->getById($modelId);
// // EventStore view operation
// $this->eventStoreService->addEventStore(
// self::ACTION_VIEW,
// $loggedUser['username'],
// $this->translator->trans('infoViewModel', array('%modelKey%' => $modelKey)),
// $model->getId()
// );
// Gestione risposta
$this->ajaxService->addMessageOpenDialog(
'row_detail',
'detail/membershipSummarySurvey.html.twig',
$modelKey,
self::ACTION_VIEW,
$this->createFormBuilder(array())->getForm(),
array(
'modelPrintName' => $model->printName(),
'rowId' => $model->getId(),
'model' => $this->printSurveyQA($model),
)
);
return new Response(
$this->ajaxService->getXmlResponse(),
Response::HTTP_OK,
array('content-type' => 'application/xml')
);
}
/**
* @Route("/document/view", name="document_view")
*/
public function viewDocument(Request $request)
{
return $this->render('unauthenticated.html.twig'); // TODO: view document
}
/**
* @Route("/exportExpiredNoRenewal/{productCategoryId}", name="export_expired_norenewal")
*/
public function membershipExpiredWithoutRenewal($productCategoryId, Request $req)
{
$categoryBasic = $this->getModelServiceConfiguration()->getCategoryBasic();
if ($productCategoryId == $categoryBasic) {
$basicProductDurationDays = $this->getModelServiceConfiguration()->getAdvProductDurationDays($categoryBasic);
$now1 = new \DateTime();
$now2 = new \DateTime();
$controlStartDate = $now1->sub(new \DateInterval('P' . $basicProductDurationDays . 'D'));
$controlEndDate = $now2->sub(new \DateInterval('P2D'));
}
$qd = new QueryData();
$qd->addFilter(new Filter('status', MembershipStatusType::EXPIRED, Filter::OPERATOR_EQUAL));
$qd->addFilter(new Filter('productCategoryId', $productCategoryId, Filter::OPERATOR_EQUAL));
if ($productCategoryId == $categoryBasic) {
$qd->addFilter(new Filter('endDate', $controlStartDate, Filter::OPERATOR_BIGGER_EQUAL));
}
$qd->addOrderCriterion(new OrderCriterion('statusDate', true));
$expiredMemberships = $this->getMembershipService()->query($qd);
$expiredUserIds = array_map(
function ($model) {
return $model->getUserId();
},
$expiredMemberships
);
$expiredUserIds = array_unique($expiredUserIds);
$qd = new QueryData();
$qd->addFilter(new Filter('userId', $expiredUserIds, Filter::OPERATOR_IN));
$qd->addFilter(new Filter('status', MembershipStatusType::ACTIVE_STATES, Filter::OPERATOR_IN));
if ($productCategoryId != $categoryBasic) {
$qd->addFilter(new Filter('productCategoryId', $productCategoryId, Filter::OPERATOR_EQUAL));
}
if ($productCategoryId == $categoryBasic) {
$qd->addFilter(new Filter('purchaseDate', $controlStartDate, Filter::OPERATOR_BIGGER_EQUAL));
}
$qd->addOrderCriterion(new OrderCriterion('statusDate', true));
$activeMemberships = $this->getMembershipService()->query($qd);
$activeUserIds = array_map(
function ($model) {
return $model->getUserId();
},
$activeMemberships
);
$activeUserIds = array_unique($activeUserIds);
$userIds = array_diff($expiredUserIds, $activeUserIds);
$dataTableResult = [];
foreach ($userIds as $userId) {
$item = null;
$endDate = "";
$monthPurchased = "";
foreach ($expiredMemberships as $struct) {
if ($userId == $struct->getUserId()) {
$item = $struct;
break;
}
}
if ($item != null) {
$endDate = $item->getEndDate()->format('Y-m-d H:i:s');
$monthPurchased = $item->getMonthPurchased();
$productName = $item->getProductName();
}
$userModel = $this->helperController->getUserById($userId);
$userData = array($userModel['username'], $userModel['email'], $endDate, $monthPurchased, $productName);
array_push($dataTableResult, $userData);
}
$header = array("username", "email", "endDate", "monthPurchased", "productName");
return $this->createResponseCsvFile($dataTableResult, $header);
}
private function createResponseCsvFile($data, $headers)
{
$csv = $this->adaptCsv($data, $headers);
//creazione file da scaricare
$this->ajaxService->addMessageDownloadFile(base64_encode($csv));
return new Response(
$this->ajaxService->getXmlResponse(),
Response::HTTP_OK,
array('content-type' => 'application/xml')
);
}
public function adaptCsv($data, $headers)
{
//prepara il file risposta csv pronto per essere esportato
$handle = fopen('php://temp', 'rw');
fputcsv($handle, $headers, ';');
foreach ($data as $key => $value) {
//create fields
$fields = [];
foreach ($value as $i) {
if ($this->helperController->is_html($i) == false) {
$fields[] = $i;
}
}
fputcsv($handle, $fields, ';');
}
rewind($handle);
$csv = stream_get_contents($handle);
fclose($handle);
return $csv;
}
private function getModelCountMembershipsInStatusX($status, $categoryId = null)
{
$queryData = new QueryData();
if ($status != null) {
$queryData->addFilter(new Filter('status', $status, Filter::OPERATOR_EQUAL));
}
if ($categoryId != null) {
$queryData->addFilter(new Filter('productCategoryId', $categoryId, Filter::OPERATOR_EQUAL));
}
return $this->getMembershipService()->count($queryData);
}
private function getModelCountsMemberships($notExpired)
{
$queryData = new QueryData();
if ($notExpired) {
$queryData->addFilter(new Filter('status', MembershipStatusType::ACTIVE_STATES, Filter::OPERATOR_IN));
}
return $this->getMembershipService()->count($queryData);
}
private function getModelCountMembershipsExclusive($notExpiredAndNotInqueue)
{
$queryData = new QueryData();
$queryData->addFilter(new Filter('productCategoryId', $this->getModelServiceConfiguration()->getCategoryExclusive(), Filter::OPERATOR_EQUAL));
if ($notExpiredAndNotInqueue) {
$queryData->addFilter(new Filter('status', MembershipStatusType::ACTIVE_STATES, Filter::OPERATOR_IN));
}
return $this->getMembershipService()->count($queryData);
}
private function getMembershipService(): MembershipService
{
if (!$this->membershipService) {
$this->membershipService = $this->modelServiceManager->getModelService('membership');
}
return $this->membershipService;
}
private function getMembershipsByUserId($userId): array
{
$qd = new QueryData();
$qd->addFilter(new Filter('userId', $userId, Filter::OPERATOR_EQUAL));
$qd->addOrderCriterion(new OrderCriterion('creationDate', true));
return $this->getMembershipService()->query($qd);
}
private function printExclusiveMemberships($memberships): array
{
$result = array();
if (is_array($memberships) && count($memberships)) {
foreach ($memberships as $membership) {
if ($membership->getProductCategoryId() == $this->getModelServiceConfiguration()->getCategoryExclusive()) {
$result[] = array(
'id' => $membership->getId(),
'status' => $this->translator->trans('membership.status.' . $membership->getStatus(), array(), 'models'),
'productName' => $membership->getProductName(),
'productCategoryId' => $membership->getProductCategoryId(),
'monthPurchased' => $membership->getMonthPurchased(),
'endDate' => TypeUtil::printDateTime($membership->getEndDate()),
'months' => $this->printAdvancedMonths($membership),
'isInactive' => $this->isInactive($membership),
);
}
}
}
return $result;
}
private function printNutritionMemberships($memberships): array
{
$result = array();
if (is_array($memberships) && count($memberships)) {
foreach ($memberships as $membership) {
if ($membership->getProductCategoryId() == $this->getModelServiceConfiguration()->getCategoryNutrition()) {
$result[] = array(
'id' => $membership->getId(),
'status' => $this->translator->trans('membership.status.' . $membership->getStatus(), array(), 'models'),
'productName' => $membership->getProductName(),
'productCategoryId' => $membership->getProductCategoryId(),
'monthPurchased' => $membership->getMonthPurchased(),
'endDate' => TypeUtil::printDateTime($membership->getEndDate()),
'months' => $this->printAdvancedMonths($membership),
'isInactive' => $this->isInactive($membership),
);
}
}
}
return $result;
}
private function printBasicMemberships($memberships): array
{
$result = array();
if (is_array($memberships) && count($memberships)) {
foreach ($memberships as $membership) {
if (
$membership->getProductCategoryId() == $this->getModelServiceConfiguration()->getCategoryBasic() ||
$membership->getProductCategoryId() == $this->getModelServiceConfiguration()->getCategoryFocus()
) {
$result[] = array(
'id' => $membership->getId(),
'status' => $this->translator->trans('membership.status.' . $membership->getStatus(), array(), 'models'),
'productName' => $membership->getProductName(),
'productCategoryId' => $membership->getProductCategoryId(),
'monthPurchased' => $membership->getMonthPurchased(),
'endDate' => TypeUtil::printDateTime($membership->getEndDate()),
'startDate' => TypeUtil::printDateTime($membership->getStartDate()),
'documents' => $this->getProductDocuments($membership),
);
}
}
}
return $result;
}
private function printAdvancedMonths(Membership $membership): array
{
$result = array();
if (
$membership->getStatus() != MembershipStatusType::IN_QUEUE &&
$membership->getStatus() != MembershipStatusType::PENDING_PAYMENT
) {
$monthPurchased = $membership->getMonthPurchased();
$currentMonth = $this->getMembershipService()->getCurrentMonth($membership);
$monthTotal = $monthPurchased - ($monthPurchased - $currentMonth);
for ($i = 1; $i <= $monthTotal; $i++) {
$result[] = array(
'id' => $i,
'name' => $this->calcYearMonthName($membership, $i),
'endDate' => $this->calcMonthEndDate($membership, $i),
'documents' => $this->getAdvancedDocumentsByMonth($membership, $i),
'survey' => $this->getSurveyByMonth($membership, $i),
);
}
}
return array_reverse($result);
}
private function calcYearMonthName(Membership $membership, int $month): ?string
{
if ($month == $this->getMembershipService()->getCurrentMonth($membership) && $membership->getStatus() == MembershipStatusType::PENDING_SURVEY) {
return $this->translator->trans('Preliminarly.activity', array(), 'forms');
} else {
$startDate = $this->getMembershipService()->getMonthStartDate($membership, $month);
if ($startDate != null) {
return $this->translator->trans('Month.' . $startDate->format('F'), array(), 'forms') . ' - ' . $startDate->format('Y');
} else {
return null;
}
}
}
private function calcMonthEndDate(Membership $membership, int $month): ?string
{
$endDate = $this->getMembershipService()->getMonthEndDate($membership, $month);
if ($endDate != null) {
return TypeUtil::printDateTime($endDate);
}
return null;
}
private function getSurveyByMonth(Membership $membership, int $month): ?array
{
$mSurvey = $this->getMembershipService()->getSurveyByMonth($membership, $month);
if ($mSurvey != null) {
return $this->printMembershipSurvey($mSurvey);
}
return null;
}
private function getAdvancedDocumentsByMonth(Membership $membership, int $month): array
{
// avoid to show document not validated yet
$currentMonth = $this->getMembershipService()->getCurrentMonth($membership);
if ($membership->getStatus() === MembershipStatusType::PENDING_TRAINING_CARD && $currentMonth === $month) {
return array();
}
$qd = new QueryData();
$qd->addFilter(new Filter('membership', $membership->getId()));
$qd->addFilter(new Filter('month', $month));
$mDocuments = $this->modelServiceManager->getModelService('membershipDocument')->query($qd);
$printedDocuments = array();
foreach ($mDocuments as $mDocument) {
$printedDocuments[] = $this->printMembershipDocument($mDocument);
}
return $printedDocuments;
}
private function getProductDocuments(Membership $membership): array
{
$qd = new QueryData();
$qd->addFilter(new Filter('productId', $membership->getProductId()));
$mDocuments = $this->modelServiceManager->getModelService('productDocument')->query($qd);
if (count($mDocuments)) {
$printedDocuments = array();
foreach ($mDocuments as $mDocument) {
$printedDocuments[] = $this->printProductDocument($mDocument, $membership);
}
return $printedDocuments;
}
return array();
}
private function printMembershipSurvey(MembershipSurvey $mSurvey): array
{
return array(
'id' => $mSurvey->getId(),
'name' => $mSurvey->getSurvey()->getDescription(),
'completeDate' => TypeUtil::printDateTime($mSurvey->getCompleteDate()),
);
}
private function printMembershipDocument(MembershipDocument $mDocument): array
{
$document = $mDocument->getDocument();
$documentLink = null;
$dataResponse = $this->documentService->downloadDocument($document->getTicket()); // TODO: avoid to download document
if (stripos($document->getName(), 'DIETA') !== false) {
$documentLink = '<img src="img/food.png" alt="Food file"><p>' . $document->getName() . '</p>';
} elseif (stripos($document->getName(), 'WORKOUT') !== false) {
$documentLink = '<img src="img/gym.png" alt="Gym file"><p>' . $document->getName() . '</p>';
} elseif (stripos($document->getName(), 'MAG') !== false) {
$documentLink = '<img src="img/sgpmag.png" alt="Magazine file"><p>' . $document->getName() . '</p>';
} elseif (stripos($document->getName(), 'COOK') !== false) {
$documentLink = '<img src="img/sgpcookbook.png" alt="Cookbook file"><p>' . $document->getName() . '</p>';
} else {
$documentLink = '<img src="img/generic.png" alt="File"><p>' . $document->getName() . '</p>';
}
if ($dataResponse['status']) {
$loggedUser = $this->authentication->getLoggedUser();
// se non hai un ruolo dirigenziale
if (!$loggedUser) {
return $this->render('unauthenticated.html.twig');
}
$addHref = 'href="/membershipSummary/membershipSummaryDocument/view/' . $document->getId() . '"';
if ($loggedUser["isAdmin"] == false && $loggedUser["isPersonalTrainer"] == false && $loggedUser["isNutritionist"] == false) {
if (!$this->pdfCanDownload($mDocument->getMembership())) {
$addHref = "";
}
}
$namelink = '<a ' . $addHref . '>' . $documentLink . '</a>';
} else {
$namelink = $this->translator->trans('Home.membership.deletedDocument', array(), 'forms');
}
return array(
'id' => $document->getId(),
'name_link' => $namelink,
'creationDate' => TypeUtil::printDateTime($document->getCreationDate()),
'actions' => '',
);
}
private function pdfCanDownload(Membership $membership): bool
{
$response = true;
if (GlobalEnv::get('MIN_PURCHASE_DATE_DOWNLOAD_PDF')) {
$dateLimitDownload = $this->strToDate(GlobalEnv::get('MIN_PURCHASE_DATE_DOWNLOAD_PDF'));
$response = $membership->getPurchaseDate() > $dateLimitDownload;
}
return $response;
}
public function strToDate($strDate)
{
return isset($strDate) ? (\DateTime::createFromFormat("Y-m-d H:i:s", $strDate)) : null;
}
private function printProductDocument(ProductDocument $mDocument, Membership $membership): array
{
$document = $mDocument->getDocument();
if (stripos($document->getName(), 'DIETA') !== false) {
$documentLink = '<img src="img/food.png" alt="Food file"><p>' . $document->getName() . '</p>';
} elseif (stripos($document->getName(), 'WORKOUT') !== false) {
$documentLink = '<img src="img/gym.png" alt="Gym file"><p>' . $document->getName() . '</p>';
} elseif (stripos($document->getName(), 'MAG') !== false) {
$documentLink = '<img src="img/sgpmag.png" alt="Magazine file"><p>' . $document->getName() . '</p>';
} elseif (stripos($document->getName(), 'COOK') !== false) {
$documentLink = '<img src="img/sgpcookbook.png" alt="Cookbook file"><p>' . $document->getName() . '</p>';
} else {
$documentLink = '<img src="img/generic.png" alt="File"><p>' . $document->getName() . '</p>';
}
$loggedUser = $this->authentication->getLoggedUser();
if (!$loggedUser) {
return $this->render('unauthenticated.html.twig');
}
$addHref = 'href="/membershipSummary/membershipSummaryDocument/view/' . $document->getId() . '"';
if ($loggedUser["isAdmin"] == false && $loggedUser["isPersonalTrainer"] == false && $loggedUser["isNutritionist"] == false) {
if (!$this->pdfCanDownload($membership)) {
$addHref = "";
}
}
$namelink = '<a ' . $addHref . '>' . $documentLink . '</a>';
return array(
'id' => $document->getId(),
'name_link' => $namelink,
'creationDate' => TypeUtil::printDateTime($document->getCreationDate()),
'actions' => '',
);
}
private function printSurveyQA(MembershipSurvey $mSurvey): array
{
$result = array();
$mAnswers = $mSurvey->getAnswers();
foreach ($mAnswers as $mAnswer) {
$question = $mAnswer->getSurveyDetail();
$answer = $mAnswer->getValue();
if ($question->getTypeField() == SurveyFieldsType::DATE || $question->getTypeField() == SurveyFieldsType::DATETIME) {
$answer = TypeUtil::printDate(new \DateTime($answer));
}
$result[] = array(
'id' => $mAnswer->getId(),
'question' => $question->getDescription(),
'answer' => $answer,
);
}
return $result;
}
private function isInactive(Membership $membership)
{
if ($membership->getStatus() == MembershipStatusType::INACTIVE) {
return true;
} else {
return false;
}
}
private function getModelServiceConfiguration(): ConfigurationService
{
return $this->modelServiceManager->getModelService('configuration');
}
private function getCountMyMembershipsAssigned($typeManager, $managerId = null)
{
return $this->getMembershipManagerService()->getWorkLoadManager($typeManager, $managerId);
}
private function getCountMyMembershipsWaitingProgram($typeManager, $managerId = null)
{
return $this->getMembershipService()->getCountMembershipWaitingProgram($typeManager, $managerId);
}
private function getModelCountMembershipsBasicFocus($notExpired, $productCategoryId)
{
$queryData = new QueryData();
$queryData->addFilter(new Filter('productCategoryId', $productCategoryId, Filter::OPERATOR_EQUAL));
if ($notExpired) {
$queryData->addFilter(new Filter('status', MembershipStatusType::ACTIVE_STATES, Filter::OPERATOR_IN));
}
return $this->getMembershipService()->count($queryData);
}
private function getModelCountMembershipsAdvanced($notExpiredAndNotInqueue, $productCategoryId)
{
$queryData = new QueryData();
$queryData->addFilter(new Filter('productCategoryId', $productCategoryId, Filter::OPERATOR_EQUAL));
if ($notExpiredAndNotInqueue) {
$queryData->addFilter(new Filter('status', MembershipStatusType::ACTIVE_STATES, Filter::OPERATOR_IN));
}
return $this->getMembershipService()->count($queryData);
}
private function getMembershipManagerService(): MembershipManagerService
{
if (!$this->membershipManagerService) {
$this->membershipManagerService = $this->modelServiceManager->getModelService('membershipManager');
}
return $this->membershipManagerService;
}
protected function getCacheService(): CacheService
{
return $this->cacheService;
}
protected function setCacheStatisticQueue(array $statisticData)
{
$this->getCacheService()->set(CacheService::PREFIX_ENTITYTAG_STATISTIC_QUEUE, $statisticData, self::TTL_CACHE_STATISTIC_DATA, null, array("STATISTIC_QUEUE"), true);
}
}