<?php
namespace App\Service;
use Knp\Component\Pager\PaginatorInterface;
use App\Entity\Process;
use App\Entity\User;
class Ajax
{
private $em;
private $router;
private $kernel;
private $tokenStorage;
private $userPermissionService;
public function __construct($em, $router, $kernel, $tokenStorage, $userPermissionService, PaginatorInterface $paginator)
{
$this->em = $em;
$this->router = $router;
$this->kernel = $kernel;
$this->paginator = $paginator;
$this->tokenStorage = $tokenStorage;
$this->userPermissionService = $userPermissionService;
}
function call($request)
{
$ROUTE = $request->get("_route");
$retval = array();
if(!empty($request->get("todoForProcesses")))
{
$process = $this->em->getRepository(\App\Entity\Process::class)->findOneBy(["id" => $request->get("todoForProcesses")]);
$todo = $this->em->getRepository(\App\Entity\Todo::class)->findBy(['processes' => $process->getProcesses()]);
foreach($todo as $to)
{
array_push($retval, array(
'id' => $to->getId(),
'name' => $to->getName()
));
}
}
if(!empty($request->get('suppliersForCustomer')))
{
$customer = intval($request->get('suppliersForCustomer'));
$csr = $this->em->getRepository(\App\Entity\CustomerSupplierRelation::class)->findBy(["customer" => $customer]);
foreach ($csr as $relation) {
if ($relation->getSupplier()->getActive() == 1)
{
array_push($retval, array(
'id' => $relation->getSupplier()->getId(),
'name' => $relation->getSupplier()->getCompanyName()
));
}
}
}
if(!empty($request->get("cpsCustomer")))
{
$customerId = $request->get("cpsCustomer");
if($customerId)
{
$customer = $this->em->getRepository(\App\Entity\Customer::class)->findOneBy(['id' => $customerId]);
if($customer)
{
$contactPersons = $customer->getUsers();
foreach($contactPersons as $user)
{
array_push($retval, array(
'id' => $user->getId(),
'name' => $user->getNameAndFunction()
));
}
}
}
}
if(!empty($request->get("cpsSupplier")) && !empty($request->get("customer")))
{
$supplierId = $request->get("cpsSupplier");
$customerId = $request->get("customer");
if($supplierId && $customerId)
{
$supplier = $this->em->getRepository(\App\Entity\Supplier::class)->findOneBy(['id' => $supplierId]);
$customer = $this->em->getRepository(\App\Entity\Customer::class)->findOneBy(['id' => $customerId]);
if($supplier && $customer)
{
if ($supplier != null && $customer != null)
{
$csr = $this->em->getRepository(\App\Entity\CustomerSupplierRelation::class)->findOneBy(['supplier' => $supplier, 'customer' => $customer]);
if ($csr != null)
{
foreach ($csr->getUsers()->getvalues() as $user)
{
if ($user->getSupplier() != null)
{
array_push($retval, [
'id' => $user->getId(),
'name' => $user->getNameAndFunction()
]);
}
}
}
}
}
}
// if ($supplier != null)
// {
// $contactPersons = $this->em->getRepository(\App\Entity\User::class)->FindBy(['supplier' => $supplier, 'active' => 1]);
// foreach($contactPersons as $user)
// {
// array_push($retval, array(
// 'id' => $user->getId(),
// 'name' => $user->getNameAndFunction()
// ));
// }
// }
}
if($ROUTE == "reportperiod_new" || $ROUTE == 'reportperiod_edit')
{
if (!empty($request->get("currency")) && !empty($request->get('exchangeIn')) && !empty( $date = $request->get('date')))
{
$currencyFrom = $request->get("currency");
$exchangeIn = $request->get('exchangeIn');
$date = json_decode($request->get('date'), true);
if (strtolower($currencyFrom) == "eur") {
foreach ($date as $item)
{
$exchangeRate = floatval($this->em->getRepository(\App\Entity\ExchangeRates::class)->getExchangeRate(strtolower($exchangeIn), $item)[strtolower($exchangeIn)]);
array_push($retval, 1/$exchangeRate);
}
} elseif ($exchangeIn == "eur") {
foreach ($date as $item)
{
array_push($retval, floatval($this->em->getRepository(\App\Entity\ExchangeRates::class)->getExchangeRate(strtolower($currencyFrom), $item)[strtolower($currencyFrom)]));
}
} else {
foreach ($date as $item)
{
$rate1 = $this->em->getRepository(\App\Entity\ExchangeRates::class)->getExchangeRate(strtolower($currencyFrom), $item)[strtolower($currencyFrom)];
$rate2 = $this->em->getRepository(\App\Entity\ExchangeRates::class)->getExchangeRate2(strtolower($exchangeIn), $item)[strtolower($exchangeIn)];
array_push($retval, $rate1/floatval($rate2));
}
}
}
}
elseif ($ROUTE == "todos_new" || $ROUTE == "todos_edit") {
if ($request->get('loadBackTemplateData') == 1)
{
if(!empty($request->get("todoId")) && !empty($request->get("procId") && !empty($request->get('retry'))))
{
$todoId = intval($request->get("todoId"));
$retry = intval($request->get('retry'));
$processId = intval($request->get('procId'));
$template = $this->em->getRepository(\App\Entity\MailTemplates::class)->findOneBy(['todo' => $todoId, 'try' => $retry]);
$process = $this->em->getRepository(\App\Entity\Process::class)->findOneBy(['id' => $processId]);
if ($template != null)
{
if ($template->getTodo()->getResponsibility() == 1)
{
$contactPerson = $process->getContactPersonCustomer();
$mail = $contactPerson->getEmail();
$name = $contactPerson->getNameAndFunction();
$emailName = $mail . " - [ " . $name . " ]";
} elseif ($template->getToDo()->getResponsibility() == 2) {
$contactPerson = $process->getContactPersonSupplier();
$mail = $contactPerson->getEmail();
$name = $contactPerson->getNameAndFunction();
$emailName = $mail . " - [ " . $name . " ]";
}
else {
$contactPerson = $this->em->getRepository(\App\Entity\User::class)->findOneBy(['email' => 'scorebox@fra-services.de']);
$mail = $contactPerson->getEmail();
$name = $contactPerson->getNameAndFunction();
$emailName = $mail . " - [ " . $name . " ]";
}
$contactPersonActive = in_array($contactPerson->getUserStatus()->getId(), [2, 5]) ? 0 : -1;
if ($contactPersonActive == -1) {
$emailName = $emailName . ' - [!' . 'INAKTIV' . '!]';
}
$retval = array (
'subject' => $template->getSubject(),
'body' => $template->getBody(),
'responsibility' => $emailName,
'userId' => $this->router->generate('activate_user', ['id' => $contactPerson->getId()]),
'userActive' => $contactPersonActive
);
}
} else {
$retval = array (
'subject' => "",
'body' => "",
'responsibility' => "",
'userId' => 0,
'userActive' => 0
);
}
}
if(!empty($request->get("processToTodo")))
{
$processesId = $request->get("processToTodo");
$todos = $this->em->getRepository(\App\Entity\Todo::class)->findBy(["processes" => $processesId]);
foreach($todos as $todo)
{
array_push($retval, array(
'id' => $todo->getId(),
'name' => $todo->getName()
));
}
}
if (!empty($request->get("customerId")))
{
$customerId = intval($request->get("customerId"));
if($customerId)
{
$customer = $em->getRepository(\App\Entity\Customer::class)->findOneBy(["id" => $customerId]);
if($customer)
{
}
}
$customerContactPersons = $this->em->getRepository(\App\Entity\User::class)->findBy(["customer" => $customerId]);
foreach($customerContactPersons as $user)
{
array_push($retval, array(
'id' => $user->getId(),
'name' => $user->getName()
));
}
}
if (!empty($request->get("supplierId")))
{
$supplierId = intval($request->get("supplierId"));
if($supplierId)
{
$supplier = $em->getRepository(\App\Entity\Supplier::class);
if($supplier)
{
$supplierContactPersons = $supplier->getUsers();
foreach($supplierContactPersons as $user)
{
array_push($retval, array(
'id' => $user->getId(),
'name' => $user->getName()
));
}
}
}
}
if(!empty($request->get("getProcessData")))
{
$processId = intval($request->get("todosProcess"));
$process = $this->em->getRepository(\App\Entity\Process::class)->findOneBy(['id' => $processId]);
array_push($retval, array(
'id' => $process->getId(),
'customer' => array(
'id' => $process->getCustomer()->getId(),
'name' => $process->getCustomer()->getcompanyName()
),
'supplier' => array(
'id' => $process->getSupplier()->getId(),
'name' => $process->getSupplier()->getCompanyName()
),
'contactPersonCustomer' => array(
'id' => $process->getContactPersonCustomer()->getId(),
'name' => $process->getContactPersonCustomer()->getName() . ' (' . $process->getContactPersonCustomer()->getFunction() . ')'
),
'contactPersonSupplier' => array(
'id' => $process->getContactPersonSupplier()->getId(),
'name' => $process->getContactPersonSupplier()->getName() . ' (' . $process->getContactPersonSupplier()->getFunction() . ')'
)
));
}
if ($request->get('getFilesForTodo') == 1)
{
if(!empty($request->get("procId")) && !empty($request->get("todoId")))
{
$processId = intval($request->get("procId"));
$todoId = intval($request->get("todoId"));
$process = $this->em->getRepository(\App\Entity\Process::class)->findOneBy(["id" => $processId]);
$todo = $this->em->getRepository(\App\Entity\Todo::class)->findOneBy(["id" => $todoId]);
$files = array();
if(!empty($todo) && !empty($process)){
if($todo->getResponsibility() == 1)
{
$company = $process->getCustomer();
$files = $this->em->getRepository(\App\Entity\DocumentUser::class)->findByCustomerSupplierLetter($company);
}
elseif($todo->getResponsibility() == 2)
{
$company = $process->getSupplier();
$filesSupplier = $this->em->getRepository(\App\Entity\DocumentUser::class)->findBySupplierSupplierLetter($company);
$filesCustomer = $this->em->getRepository(\App\Entity\DocumentUser::class)->findByCustomerSupplierLetter($process->getCustomer());
$files = array_merge($filesSupplier, $filesCustomer);
}
foreach($files as $file)
{
array_push($retval, array(
"id" => $file["id"],
"name" => $file["fileName"]
));
}
}
}
}
}
if($ROUTE == "report_request_new")
{
if (!empty($request->get("supplierId")))
{
$supplierId = $request->get("supplierId");
if($supplierId)
{
$supplier = $em->getRepository(\App\Entity\Supplier::class)->findOneBy(["id" => $supplierId]);
if($supplier)
{
$cpSuppliers = $supplier->getUsers();
$i = 0;
foreach($cpSuppliers as $cpSupplier)
{
$retval[$i] = array (
'id' => $cpSupplier->getId(),
'name' => $cpSupplier->getFirstnamelastname(),
);
$i++;
}
}
}
}
if (!empty($request->get("customerId")))
{
$customerId = $request->get("customerId");
if($customerId)
{
$customer = $em->getRepository(\App\Entity\Customer::class)->findOneBy(['id' => $customerId]);
if($customer)
{
$cpCustomers = $customer->getUsers();
$i = 0;
foreach($cpCustomers as $cpCustomer)
{
$retval[$i] = array (
'id' => $cpCustomer->getId(),
'name' => $cpCustomer->getFirstnamelastname(),
);
$i++;
}
}
}
}
}
if($ROUTE == "report_view")
{
if (!empty($request->get("processId")))
{
$processId = $request->get("processId");
$process = $this->em->getRepository(Process::class)->findOneBy(['id' => $processId]);
if($process)
{
$i = 0;
$retval['customer'] = 'c' . $process->getCustomer()->getId();
$users = $process->getCustomer()->getUsers();
foreach($users as $user)
{
$userStatus = in_array($user->getUserStatus()->getId(), [2, 5]) ? 0 : -1;
if ($userStatus == -1) {
$lastname = $user->getLastname() . ' (' . $user->getFunction() . ')' . ' - [!' . 'INAKTIV' . '!]';
} else {
$lastname = $user->getLastname() . ' (' . $user->getFunction() . ')';
}
$retval['user'][$i] = array (
'id' => $user->getId(),
'lastname' => $lastname,
'notationReport' => $process->getCustomer() != null ? $process->getCustomer()->getNotationreport() : "",
'reportPrice' => $process->getCustomer() != null ? $process->getCustomer()->getReportPrice() : "",
'userStatus' => $user->getUserStatus()->getId(),
'userUrl' => $this->router->generate('activate_user', ['id' => $user->getId()]),
);
$i++;
}
}
}
if (!empty($request->get("userId")))
{
$userId = $request->get("userId");
if ($userId)
{
$user = $this->em->getRepository(\App\Entity\User::class)->findOneBy(['id' => $userId]);
if ($user)
{
$retval = array(
'userStatus' => $user->getUserstatus()->getId(),
'url' => $this->router->generate('activate_user', ['id' => $user->getId()])
);
}
}
}
}
if($ROUTE == "dashboard_index")
{
if (!empty($request->get('openTodos')))
{
$pageStart = $request->get('start');
$pageLength = $request->get('length');
$sortColumn = $request->get('columns')[$request->get('order')[0]['column']]['data'];
$sortDir = $request->get('order')[0]['dir'];
$search = $request->get('search')['value'] != "" ? str_replace("+", " ", $request->get('search')['value']) : "NULL";
if ($pageStart == 0)
{
$pageNumber = 1;
} else {
$page = $pageStart / $pageLength + 1;
$pageNumber = $page;
}
$pagination = $this->paginator->paginate($this->em->getRepository(\App\Entity\Todos::class)->
findOpenTodos($search), $pageNumber, $pageLength, [
'defaultSortFieldName' => '['.$sortColumn.']',
'defaultSortDirection' => $sortDir,
]);
$retval = [
'recordsTotal' => $pagination->getTotalItemCount(),
'recordsFiltered' => $pagination->getTotalItemCount(),
'data' => $pagination->getItems()
];
}
if (!empty($request->get('workingTodos')))
{
$pageStart = $request->get('start');
$pageLength = $request->get('length');
$sortColumn = $request->get('columns')[$request->get('order')[0]['column']]['data'];
$sortDir = $request->get('order')[0]['dir'];
$search = $request->get('search')['value'] != "" ? str_replace("+", " ", $request->get('search')['value']) : "NULL";
if ($pageStart == 0)
{
$pageNumber = 1;
} else {
$page = $pageStart / $pageLength + 1;
$pageNumber = $page;
}
$pagination = $this->paginator->paginate($this->em->getRepository(\App\Entity\Todos::class)->
findWorkingTodos($search), $pageNumber, $pageLength, [
'defaultSortFieldName' => '['.$sortColumn.']',
'defaultSortDirection' => $sortDir,
]);
$retval = [
'recordsTotal' => $pagination->getTotalItemCount(),
'recordsFiltered' => $pagination->getTotalItemCount(),
'data' => $pagination->getItems()
];
}
if (!empty($request->get('finishedTodos')))
{
$pageStart = $request->get('start');
$pageLength = $request->get('length');
$sortColumn = $request->get('columns')[$request->get('order')[0]['column']]['data'];
$sortDir = $request->get('order')[0]['dir'];
$search = $request->get('search')['value'] != "" ? str_replace("+", " ", $request->get('search')['value']) : "NULL";
if ($pageStart == 0)
{
$pageNumber = 1;
} else {
$page = $pageStart / $pageLength + 1;
$pageNumber = $page;
}
$pagination = $this->paginator->paginate($this->em->getRepository(\App\Entity\Todos::class)->
findClosedTodos($search), $pageNumber, $pageLength, [
'defaultSortFieldName' => '['.$sortColumn.']',
'defaultSortDirection' => $sortDir,
]);
$retval = [
'recordsTotal' => $pagination->getTotalItemCount(),
'recordsFiltered' => $pagination->getTotalItemCount(),
'data' => $pagination->getItems()
];
}
if (!empty($request->get('openProcess')))
{
$pageStart = $request->get('start');
$pageLength = $request->get('length');
$sortColumn = $request->get('columns')[$request->get('order')[0]['column']]['data'];
$sortDir = $request->get('order')[0]['dir'];
$search = $request->get('search')['value'] != "" ? str_replace("+", " ", $request->get('search')['value']) : "NULL";
if ($pageStart == 0)
{
$pageNumber = 1;
} else {
$page = $pageStart / $pageLength + 1;
$pageNumber = $page;
}
$pagination = $this->paginator->paginate($this->em->getRepository(\App\Entity\Process::class)->
findOpenProcess($search), $pageNumber, $pageLength, [
'defaultSortFieldName' => '['.$sortColumn.']',
'defaultSortDirection' => $sortDir,
]);
$retval = [
'recordsTotal' => $pagination->getTotalItemCount(),
'recordsFiltered' => $pagination->getTotalItemCount(),
'data' => $pagination->getItems()
];
}
if (!empty($request->get('closedProcess')))
{
$pageStart = $request->get('start');
$pageLength = $request->get('length');
$sortColumn = $request->get('columns')[$request->get('order')[0]['column']]['data'];
$sortDir = $request->get('order')[0]['dir'];
$search = $request->get('search')['value'] != "" ? str_replace("+", " ", $request->get('search')['value']) : "NULL";
if ($pageStart == 0)
{
$pageNumber = 1;
} else {
$page = $pageStart / $pageLength + 1;
$pageNumber = $page;
}
$pagination = $this->paginator->paginate($this->em->getRepository(\App\Entity\Process::class)->
findClosedProcess($search), $pageNumber, $pageLength, [
'defaultSortFieldName' => '['.$sortColumn.']',
'defaultSortDirection' => $sortDir,
]);
$retval = [
'recordsTotal' => $pagination->getTotalItemCount(),
'recordsFiltered' => $pagination->getTotalItemCount(),
'data' => $pagination->getItems()
];
}
if (!empty($request->get('evaluation')) && !empty($request->get('startDate')) && !empty($request->get('endDate')) && !empty($request->get('evaluationCustomerStatus')))
{
$startDate = date("Y-m-d", strtotime($request->get('startDate')));
$endDate = date("Y-m-d 23:59:59", strtotime($request->get('endDate')));
$customerStatus = $request->get('evaluationCustomerStatus');
$pageStart = $request->get('start');
$pageLength = $request->get('length');
$sortColumn = $request->get('order')[0]['column'] + 1;
$sortDir = $request->get('order')[0]['dir'];
$search = $request->get('search')['value'] != "" ? str_replace("+", " ", $request->get('search')['value']) : "NULL";
if ($pageStart == 0)
{
$pageNumber = 1;
} else {
$page = $pageStart / $pageLength + 1;
$pageNumber = $page;
}
if ($customerStatus == 'all')
{
$customers = $this->em->getRepository(\App\Entity\Customer::class)->findAll();
$active = "0|1";
$pagination = $this->paginator->paginate($this->em->getRepository(\App\Entity\Process::class)->
findAnalysis(6, $startDate, $endDate, $sortColumn, $sortDir, $search, $active), $pageNumber, $pageLength);
$sumAnalysis = $this->em->getRepository(\App\Entity\Process::class)->sumFindAnalysis(6, $startDate,
$endDate, $sortColumn, $sortDir, $search, $active);
} elseif ($customerStatus == 'active') {
$active = "1";
$pagination = $this->paginator->paginate($this->em->getRepository(\App\Entity\Process::class)->
findAnalysis(6, $startDate, $endDate, $sortColumn, $sortDir, $search, $active), $pageNumber, $pageLength);
$sumAnalysis = $this->em->getRepository(\App\Entity\Process::class)->sumFindAnalysis(6, $startDate,
$endDate, $sortColumn, $sortDir, $search, $active);
} elseif ($customerStatus == 'non-active') {
$active = "0";
$pagination = $this->paginator->paginate($this->em->getRepository(\App\Entity\Process::class)->
findAnalysis(6, $startDate, $endDate, $sortColumn, $sortDir, $search, $active), $pageNumber, $pageLength);
$sumAnalysis = $this->em->getRepository(\App\Entity\Process::class)->sumFindAnalysis(6, $startDate,
$endDate, $sortColumn, $sortDir, $search, $active);
}
$data['data'] = $pagination->getItems();
$data['sum'] = $sumAnalysis;
$retval = array(
'recordsTotal' => $pagination->getTotalItemCount(),
'recordsFiltered' => $pagination->getTotalItemCount(),
'data' => $data,
);
}
if (!empty($request->get('sales')) && !empty($request->get('startDate')) && !empty($request->get('endDate')) && !empty($request->get('customerStatus')))
{
$startDate = date("Y-m-d", strtotime($request->get('startDate')));
$endDate = date("Y-m-d 23:59:59", strtotime($request->get('endDate')));
$customerStatus = $request->get('customerStatus');
if ($customerStatus == 'all')
{
$customers = $this->em->getRepository(\App\Entity\Customer::class)->findAll();
} elseif ($customerStatus == 'active') {
$customers = $this->em->getRepository(\App\Entity\Customer::class)->findBy(['active' => 1]);
} elseif ($customerStatus == 'non-active') {
$customers = $this->em->getRepository(\App\Entity\Customer::class)->findBy(['active' => 0]);
}
$statisticSales = [];
foreach ($customers as $customer)
{
$salesSelectedPrevPeriod = $this->em->getRepository(\App\Entity\Process::class)->salesSelectedPrevPeriod($customer->getid(), date("Y-m-d", strtotime("-1 year", strtotime($startDate))), date("Y-m-d", strtotime("-1 year", strtotime($endDate))));
$salesSelectedPeriod = $this->em->getRepository(\App\Entity\Process::class)->salesSelectedPeriod($customer->getId(), $startDate, $endDate);
$result = $this->em->getRepository(\App\Entity\Process::class)->openAnalyticsWithType2($customer->getId(), 6, $startDate, $endDate, 2);
if (isset($result['summary'])) {
$openRequestsInProcess = $result['summary'] * $customer->getReportPrice();
} else {
// Handle the case where 'summary' does not exist
$openRequestsInProcess = 0;
}
$result = $this->em->getRepository(\App\Entity\Process::class)->openAnalyticsWithType3($customer->getId(), 6, $startDate, $endDate, 1);
if (isset($result['summary'])) {
$openSalesInRequest = $result['summary'] * $customer->getReportPrice();
} else {
// Handle the case where 'summary' does not exist
$openSalesInRequest = 0;
}
$forecast = $salesSelectedPeriod + $openRequestsInProcess + $openSalesInRequest;
array_push($statisticSales, ['customerid' => $customer->getId(), "customer" => $customer->getCompanyName(),
'salesSelectedPrevPeriod' => $salesSelectedPrevPeriod, 'salesSelectedPeriod' => $salesSelectedPeriod,
'openRequestsInProcess' => $openRequestsInProcess,
'openSalesInRequest' => $openSalesInRequest,
'forecast' => $forecast]);
}
$retval = array(
'data' => $statisticSales
);
}
if (!empty($request->get('pipeline')))
{
$pageStart = $request->get('start');
$pageLength = $request->get('length');
$sortColumn = $request->get('columns')[$request->get('order')[0]['column']]['data'];
$sortDir = $request->get('order')[0]['dir'];
$search = $request->get('search')['value'] != "" ? str_replace("+", " ", $request->get('search')['value']) : "NULL";
if ($pageStart == 0)
{
$pageNumber = 1;
} else {
$page = $pageStart / $pageLength + 1;
$pageNumber = $page;
}
$pagination = $this->paginator->paginate($this->em->getRepository(\App\Entity\BackTemplates::class)->
findPipeline($search), $pageNumber, $pageLength, [
'defaultSortFieldName' => '['.$sortColumn.']',
'defaultSortDirection' => $sortDir,
]);
$retval = [
'recordsTotal' => $pagination->getTotalItemCount(),
'recordsFiltered' => $pagination->getTotalItemCount(),
'data' => $pagination->getItems()
];
}
if (!empty($request->get('backtemplateSent')))
{
$pageStart = $request->get('start');
$pageLength = $request->get('length');
$sortColumn = $request->get('columns')[$request->get('order')[0]['column']]['data'];
$sortDir = $request->get('order')[0]['dir'];
$search = $request->get('search')['value'] != "" ? str_replace("+", " ", $request->get('search')['value']) : "NULL";
if ($pageStart == 0)
{
$pageNumber = 1;
} else {
$page = $pageStart / $pageLength + 1;
$pageNumber = $page;
}
$pagination = $this->paginator->paginate($this->em->getRepository(\App\Entity\BackTemplates::class)->
findShipped($search), $pageNumber, $pageLength, [
'defaultSortFieldName' => '['.$sortColumn.']',
'defaultSortDirection' => $sortDir,
]);
$retval = [
'recordsTotal' => $pagination->getTotalItemCount(),
'recordsFiltered' => $pagination->getTotalItemCount(),
'data' => $pagination->getItems()
];
}
}
if($ROUTE == "customer_index")
{
if (!empty($request->get('customerList'))) {
$pageStart = $request->get('start');
$pageLength = $request->get('length');
$sortColumn = $request->get('columns')[$request->get('order')[0]['column']]['data'];
$sortDir = $request->get('order')[0]['dir'];
$search = $request->get('search')['value'] != "" ? str_replace("+", " ", $request->get('search')['value']) : "NULL";
$user = $this->tokenStorage->getToken()->getUser();
if ($pageStart == 0)
{
$pageNumber = 1;
} else {
$page = $pageStart / $pageLength + 1;
$pageNumber = $page;
}
if ($user->getRole()->getId() == User::ROLE_SUPER_ADMIN || $user->getRole()->getId() == User::ROLE_ADMIN)
{
$pagination = $this->paginator->paginate($this->em->getRepository(\App\Entity\Customer::class)->
getAllCustomers($search), $pageNumber, $pageLength, [
'defaultSortFieldName' => '['.$sortColumn.']',
'defaultSortDirection' => $sortDir,
]);
} elseif ($user->getSupplier() != null) {
if ($this->userPermissionService->CheckUserPermission('view_customers', $user))
{
$pagination = $this->paginator->paginate($this->em->getRepository(\App\Entity\Customer::class)->
getPartialCustomers($search, $user->getSupplier()->getId()), $pageNumber, $pageLength, [
'defaultSortFieldName' => '['.$sortColumn.']',
'defaultSortDirection' => $sortDir,
]);
}
}
// $pagination = $this->paginator->paginate($this->em->getRepository(\App\Entity\Customer::class)->
// getAllCustomers($search), $pageNumber, $pageLength, [
// 'defaultSortFieldName' => '['.$sortColumn.']',
// 'defaultSortDirection' => $sortDir,
// ]);
$retval = [
'recordsTotal' => $pagination->getTotalItemCount(),
'recordsFiltered' => $pagination->getTotalItemCount(),
'data' => $pagination->getItems()
];
}
}
if($ROUTE == "supplier_index")
{
if (!empty($request->get('supplierList'))) {
$pageStart = $request->get('start');
$pageLength = $request->get('length');
$sortColumn = $request->get('columns')[$request->get('order')[0]['column']]['data'];
$sortDir = $request->get('order')[0]['dir'];
$search = $request->get('search')['value'] != "" ? str_replace("+", " ", $request->get('search')['value']) : "NULL";
$user = $this->tokenStorage->getToken()->getUser();
if ($pageStart == 0)
{
$pageNumber = 1;
} else {
$page = $pageStart / $pageLength + 1;
$pageNumber = $page;
}
if ($user->getRole()->getId() == User::ROLE_SUPER_ADMIN || $user->getRole()->getId() == User::ROLE_ADMIN)
{
$pagination = $this->paginator->paginate($this->em->getRepository(\App\Entity\Supplier::class)->
getAllSupplier($search), $pageNumber, $pageLength, [
'defaultSortFieldName' => '['.$sortColumn.']',
'defaultSortDirection' => $sortDir,
]);
} elseif ($user->getCustomer() != null) {
if ($this->userPermissionService->CheckUserPermission('view_all_suppliers', $user))
{
$pagination = $this->paginator->paginate($this->em->getRepository(\App\Entity\Supplier::class)->
getCustomerAllSupplier($search, $user->getCustomer()->getId()), $pageNumber, $pageLength, [
'defaultSortFieldName' => '['.$sortColumn.']',
'defaultSortDirection' => $sortDir,
]);
}
if ($this->userPermissionService->CheckUserPermission('view_suppliers', $user))
{
$pagination = $this->paginator->paginate($this->em->getRepository(\App\Entity\Supplier::class)->
getCustomerPartialSupplier($search, $user->getCustomer()->getId(), $user->getId()), $pageNumber, $pageLength, [
'defaultSortFieldName' => '['.$sortColumn.']',
'defaultSortDirection' => $sortDir,
]);
}
}
$retval = [
'recordsTotal' => $pagination->getTotalItemCount(),
'recordsFiltered' => $pagination->getTotalItemCount(),
'data' => $pagination->getItems()
];
}
}
if($ROUTE == "document_index")
{
if (!empty($request->get('documentList'))) {
$pageStart = $request->get('start');
$pageLength = $request->get('length');
$sortColumn = $request->get('columns')[$request->get('order')[0]['column']]['data'];
$sortDir = $request->get('order')[0]['dir'];
$search = $request->get('search')['value'] != "" ? str_replace("+", " ", $request->get('search')['value']) : "NULL";
$user = $this->tokenStorage->getToken()->getUser();
if ($pageStart == 0)
{
$pageNumber = 1;
} else {
$page = $pageStart / $pageLength + 1;
$pageNumber = $page;
}
if ($user->getRole()->getId() == User::ROLE_SUPER_ADMIN || $user->getRole()->getId() == User::ROLE_ADMIN)
{
$pagination = $this->paginator->paginate($this->em->getRepository(\App\Entity\DocumentUser::class)->
getAllDocuments($search, $sortColumn, $sortDir), $pageNumber, $pageLength, [
'defaultSortFieldName' => '['.$sortColumn.']',
'defaultSortDirection' => $sortDir,
]);
} elseif ($user->getCustomer() != null) {
if ($this->userPermissionService->CheckUserPermission('view_all_suppliers_documents', $user))
{
$pagination = $this->paginator->paginate($this->em->getRepository(\App\Entity\DocumentUser::class)->
getCustomerAllDocuments($search, $sortColumn, $sortDir, $user->getCustomer()->getId()), $pageNumber, $pageLength, [
'defaultSortFieldName' => '['.$sortColumn.']',
'defaultSortDirection' => $sortDir,
]);
}
if ($this->userPermissionService->CheckUserPermission('view_suppliers_document', $user))
{
$pagination = $this->paginator->paginate($this->em->getRepository(\App\Entity\DocumentUser::class)->
getCustomerPartialDocuments($search, $sortColumn, $sortDir, $user->getCustomer()->getId(), $user->getId()), $pageNumber, $pageLength, [
'defaultSortFieldName' => '['.$sortColumn.']',
'defaultSortDirection' => $sortDir,
]);
}
} elseif ($user->getSupplier() !== null) {
$pagination = $this->paginator->paginate($this->em->getRepository(\App\Entity\DocumentUser::class)->
getSupplierDocuments($search, $sortColumn, $sortDir, $user->getSupplier()->getId(), $user->getId()), $pageNumber, $pageLength, [
'defaultSortFieldName' => '['.$sortColumn.']',
'defaultSortDirection' => $sortDir,
]);
}
if (!isset($pagination))
{
$retval = [
'recordsTotal' => 0,
'recordsFiltered' => 0,
'data' => ""
];
} else {
$retval = [
'recordsTotal' => $pagination->getTotalItemCount(),
'recordsFiltered' => $pagination->getTotalItemCount(),
'data' => $pagination->getItems()
];
}
}
}
return $retval;
}
}