bug fixes

This commit is contained in:
Hesabix 2024-04-27 08:16:30 +00:00
parent 613321c07a
commit 508b82f5e8
5 changed files with 172 additions and 76 deletions

View file

@ -16,6 +16,7 @@ use App\Entity\Business;
use App\Entity\Hook; use App\Entity\Hook;
use App\Entity\Year; use App\Entity\Year;
use App\Service\Access; use App\Service\Access;
use App\Service\Explore;
use App\Service\Jdate; use App\Service\Jdate;
use App\Service\Log; use App\Service\Log;
use App\Service\Provider; use App\Service\Provider;
@ -74,7 +75,7 @@ class BusinessController extends AbstractController
$response['website'] = $bus->getWesite(); $response['website'] = $bus->getWesite();
$response['email'] = $bus->getEmail(); $response['email'] = $bus->getEmail();
$response['maliyatafzode'] = $bus->getMaliyatafzode(); $response['maliyatafzode'] = $bus->getMaliyatafzode();
$response['arzmain'] = $bus->getMoney()->getName(); $response['arzmain'] = Explore::ExploreMoney($bus->getMoney());
$response['type'] = $bus->getType(); $response['type'] = $bus->getType();
$response['zarinpalCode'] = $bus->getZarinpalCode(); $response['zarinpalCode'] = $bus->getZarinpalCode();
$response['smsCharge'] = $bus->getSmsCharge(); $response['smsCharge'] = $bus->getSmsCharge();
@ -83,6 +84,12 @@ class BusinessController extends AbstractController
$response['walletMatchBank'] = null; $response['walletMatchBank'] = null;
if ($bus->isWalletEnable()) if ($bus->isWalletEnable())
$response['walletMatchBank'] = $provider->Entity2Array($bus->getWalletMatchBank(), 0); $response['walletMatchBank'] = $provider->Entity2Array($bus->getWalletMatchBank(), 0);
$year = $entityManager->getRepository(Year::class)->findOneBy([
'bid' => $bus,
'head'=>true
]);
$response['year'] = Explore::ExploreYear($year);
return $this->json($response); return $this->json($response);
} }
@ -235,6 +242,20 @@ class BusinessController extends AbstractController
$entityManager->persist($year); $entityManager->persist($year);
$entityManager->flush(); $entityManager->flush();
} }
else{
//not new business update business year
$year = $entityManager->getRepository(Year::class)->findOneBy([
'bid' => $business,
'head'=>true
]);
$startYearArray = explode('-', $params['year']['startShamsi']);
$year->setStart($jdate->jmktime(0, 0, 0, $startYearArray[1], $startYearArray[2], $startYearArray[0]));
$endYearArray = explode('-', $params['year']['endShamsi']);
$year->setEnd($jdate->jmktime(0, 0, 0, $endYearArray[1], $endYearArray[2], $endYearArray[0]));
$year->setLabel($params['year']['label']);
$entityManager->persist($year);
$entityManager->flush();
}
//add log to system //add log to system
$log->insert('تنظیمات پایه', 'اطلاعات کسب و کار ایجاد/ویرایش شد.', $this->getUser(), $business); $log->insert('تنظیمات پایه', 'اطلاعات کسب و کار ایجاد/ویرایش شد.', $this->getUser(), $business);
} }

View file

@ -2,16 +2,19 @@
namespace App\Controller; namespace App\Controller;
use App\Entity\HesabdariDoc;
use App\Entity\HesabdariRow;
use App\Entity\Person; use App\Entity\Person;
use App\Service\Access; use App\Service\Access;
use App\Service\pdfMGR; use App\Service\pdfMGR;
use App\Service\Provider;
use App\Entity\HesabdariDoc;
use App\Entity\HesabdariRow;
use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\StreamedResponse;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
class ReportController extends AbstractController class ReportController extends AbstractController
{ {
@ -62,6 +65,7 @@ class ReportController extends AbstractController
foreach ($result as $item) { foreach ($result as $item) {
$temp = [ $temp = [
'id' => $item->getCommodity()->getId(), 'id' => $item->getCommodity()->getId(),
'rowId' => $item->getId(),
'code' => $item->getCommodity()->getCode(), 'code' => $item->getCommodity()->getCode(),
'khadamat' => $item->getCommodity()->isKhadamat(), 'khadamat' => $item->getCommodity()->isKhadamat(),
'name' => $item->getCommodity()->getName(), 'name' => $item->getCommodity()->getName(),
@ -86,4 +90,57 @@ class ReportController extends AbstractController
} }
return $this->json($response); return $this->json($response);
} }
#[Route('/api/report/person/buysell/export/excel', name: 'app_report_person_buysell_export_excell')]
public function app_report_person_buysell_export_excell(Provider $provider, Access $access, Request $request, EntityManagerInterface $entityManagerInterface): BinaryFileResponse | JsonResponse | StreamedResponse
{
$acc = $access->hasRole('reports');
if (!$acc)
throw $this->createAccessDeniedException();
$params = [];
if ($content = $request->getContent()) {
$params = json_decode($content, true);
}
$items = [];
foreach ($params['items'] as $param) {
$prs = $entityManagerInterface->getRepository(HesabdariRow::class)->findOneBy([
'id' => $param['rowId'],
'bid' => $acc['bid']
]);
if ($prs)
$items[] = $prs;
}
$response = [];
foreach ($items as $item) {
$temp = [
'id' => $item->getCommodity()->getId(),
'code' => $item->getCommodity()->getCode(),
'khadamat' => $item->getCommodity()->isKhadamat(),
'name' => $item->getCommodity()->getName(),
'unit' => $item->getCommodity()->getUnit()->getName(),
'count' => $item->getCommdityCount(),
'date' => $item->getDoc()->getDate(),
'docCode' => $item->getDoc()->getCode(),
'type' => $item->getDoc()->getType()
];
if ($item->getDoc()->getType() == 'buy') {
$temp['priceAll'] = $item->getBd();
} elseif ($item->getDoc()->getType() == 'sell') {
$temp['priceAll'] = $item->getBs();
}
if ($temp['count'] != 0) {
$temp['priceOne'] = $temp['priceAll'] / $temp['count'];
$temp['priceAll'] = number_format($temp['priceAll']);
$temp['priceOne'] = number_format($temp['priceOne']);
$temp['count'] = number_format($temp['count']);
$response[] = $temp;
}
}
$labels = [
'کد حسابداری'
];
return new BinaryFileResponse($provider->createExcellFromArray($response));
}
} }

View file

@ -21,36 +21,36 @@ use Symfony\Component\Serializer\SerializerInterface;
class SupportController extends AbstractController class SupportController extends AbstractController
{ {
#[Route('/api/admin/support/list', name: 'app_admin_support_list')] #[Route('/api/admin/support/list', name: 'app_admin_support_list')]
public function app_admin_support_list(Provider $provider,Jdate $jdate,EntityManagerInterface $entityManager): JsonResponse public function app_admin_support_list(Provider $provider, Jdate $jdate, EntityManagerInterface $entityManager): JsonResponse
{ {
$items = $entityManager->getRepository(Support::class)->findBy(['main' => 0],['id'=>'DESC']); $items = $entityManager->getRepository(Support::class)->findBy(['main' => 0], ['id' => 'DESC']);
foreach ($items as $item){ foreach ($items as $item) {
$item->setDateSubmit($jdate->jdate('Y/n/d H:i',$item->getDateSubmit())); $item->setDateSubmit($jdate->jdate('Y/n/d H:i', $item->getDateSubmit()));
} }
return $this->json($provider->ArrayEntity2Array($items,1)); return $this->json($provider->ArrayEntity2Array($items, 1));
} }
#[Route('/api/admin/support/view/{id}', name: 'app_admin_support_view')] #[Route('/api/admin/support/view/{id}', name: 'app_admin_support_view')]
public function app_admin_support_view(Jdate $jdate, EntityManagerInterface $entityManager,string $id = ''): JsonResponse public function app_admin_support_view(Jdate $jdate, EntityManagerInterface $entityManager, string $id = ''): JsonResponse
{ {
$item = $entityManager->getRepository(Support::class)->find($id); $item = $entityManager->getRepository(Support::class)->find($id);
if(!$item) throw $this->createNotFoundException(); if (!$item) throw $this->createNotFoundException();
$replays = $entityManager->getRepository(Support::class)->findBy(['main'=>$item->getId()]); $replays = $entityManager->getRepository(Support::class)->findBy(['main' => $item->getId()]);
foreach ($replays as $replay){ foreach ($replays as $replay) {
$replay->setDateSubmit($jdate->jdate('Y/n/d H:i',$replay->getDateSubmit())); $replay->setDateSubmit($jdate->jdate('Y/n/d H:i', $replay->getDateSubmit()));
$replay->setTitle($replay->getSubmitter()->getFullname()); $replay->setTitle($replay->getSubmitter()->getFullname());
if($replay->getSubmitter() == $this->getUser()) if ($replay->getSubmitter() == $this->getUser())
$replay->setState(1); $replay->setState(1);
else else
$replay->setState(0); $replay->setState(0);
} }
$item->setDateSubmit($jdate->jdate('Y/n/d H:i',$item->getDateSubmit())); $item->setDateSubmit($jdate->jdate('Y/n/d H:i', $item->getDateSubmit()));
return $this->json([ return $this->json([
'item'=> $item, 'item' => $item,
'replays'=> $replays 'replays' => $replays
]); ]);
} }
#[Route('/api/admin/support/mod/{id}', name: 'app_admin_support_mod')] #[Route('/api/admin/support/mod/{id}', name: 'app_admin_support_mod')]
public function app_admin_support_mod(registryMGR $registryMGR, SMS $SMS,Request $request, EntityManagerInterface $entityManager,Notification $notifi,string $id = ''): JsonResponse public function app_admin_support_mod(registryMGR $registryMGR, SMS $SMS, Request $request, EntityManagerInterface $entityManager, Notification $notifi, string $id = ''): JsonResponse
{ {
$params = []; $params = [];
if ($content = $request->getContent()) { if ($content = $request->getContent()) {
@ -58,8 +58,8 @@ class SupportController extends AbstractController
} }
$item = $entityManager->getRepository(Support::class)->find($id); $item = $entityManager->getRepository(Support::class)->find($id);
if(!$item) $this->createNotFoundException(); if (!$item) $this->createNotFoundException();
if(array_key_exists('body',$params)){ if (array_key_exists('body', $params)) {
$support = new Support(); $support = new Support();
$support->setDateSubmit(time()); $support->setDateSubmit(time());
$support->setTitle('0'); $support->setTitle('0');
@ -73,52 +73,54 @@ class SupportController extends AbstractController
$entityManager->persist($support); $entityManager->persist($support);
$entityManager->flush(); $entityManager->flush();
//send sms to customer //send sms to customer
if($item->getSubmitter()->getMobile()){ if ($item->getSubmitter()->getMobile()) {
$SMS->send( $SMS->send(
[$item->getId()], [$item->getId()],
$registryMGR->get('sms','ticketReplay'), $registryMGR->get('sms', 'ticketReplay'),
$item->getSubmitter()->getMobile() $item->getSubmitter()->getMobile()
); );
} }
//send notification to user //send notification to user
$settings = $entityManager->getRepository(Settings::class)->findAll()[0]; $settings = $entityManager->getRepository(Settings::class)->findAll()[0];
$url = $settings->getAppSite() . '/profile/support-view/' . $item->getId(); $url = $settings->getAppSite() . '/profile/support-view/' . $item->getId();
$notifi->insert("به درخواست پشتیبانی پاسخ داده شد",$url,null,$item->getSubmitter()); $notifi->insert("به درخواست پشتیبانی پاسخ داده شد", $url, null, $item->getSubmitter());
return $this->json([ return $this->json([
'error'=> 0, 'error' => 0,
'message'=> 'successful' 'message' => 'successful'
]); ]);
} }
return $this->json([ return $this->json([
'error'=> 999, 'error' => 999,
'message'=> 'تمام موارد لازم را وارد کنید.' 'message' => 'تمام موارد لازم را وارد کنید.'
]); ]);
} }
#[Route('/api/support/list', name: 'app_support_list')] #[Route('/api/support/list', name: 'app_support_list')]
public function app_support_list(Jdate $jdate,EntityManagerInterface $entityManager): JsonResponse public function app_support_list(Jdate $jdate, EntityManagerInterface $entityManager): JsonResponse
{ {
$items = $entityManager->getRepository(Support::class)->findBy([ $items = $entityManager->getRepository(Support::class)->findBy(
'submitter'=>$this->getUser(), [
'main'=>0 'submitter' => $this->getUser(),
'main' => 0
], ],
[ [
'id'=>'DESC' 'id' => 'DESC'
]); ]
foreach ($items as $item){ );
$item->setDateSubmit($jdate->jdate('Y/n/d H:i',$item->getDateSubmit())); foreach ($items as $item) {
$item->setDateSubmit($jdate->jdate('Y/n/d H:i', $item->getDateSubmit()));
} }
return $this->json($items); return $this->json($items);
} }
#[Route('/api/support/mod/{id}', name: 'app_support_mod')] #[Route('/api/support/mod/{id}', name: 'app_support_mod')]
public function app_support_mod(registryMGR $registryMGR,SMS $SMS,Request $request, EntityManagerInterface $entityManager,string $id = ''): JsonResponse public function app_support_mod(registryMGR $registryMGR, SMS $SMS, Request $request, EntityManagerInterface $entityManager, string $id = ''): JsonResponse
{ {
$params = []; $params = [];
if ($content = $request->getContent()) { if ($content = $request->getContent()) {
$params = json_decode($content, true); $params = json_decode($content, true);
} }
if($id == ''){ if ($id == '') {
if(array_key_exists('title',$params) && array_key_exists('body',$params)){ if (array_key_exists('title', $params) && array_key_exists('body', $params)) {
$item = new Support(); $item = new Support();
$item->setBody($params['body']); $item->setBody($params['body']);
$item->setTitle($params['title']); $item->setTitle($params['title']);
@ -131,22 +133,21 @@ class SupportController extends AbstractController
//send sms to manager //send sms to manager
$SMS->send( $SMS->send(
[$item->getId()], [$item->getId()],
$registryMGR->get('sms','ticketRec'), $registryMGR->get('sms', 'ticketRec'),
$registryMGR->get('ticket','managerMobile') $registryMGR->get('ticket', 'managerMobile')
); );
return $this->json([ return $this->json([
'error'=> 0, 'error' => 0,
'message'=> 'ok', 'message' => 'ok',
'url'=>$item->getId() 'url' => $item->getId()
]); ]);
} }
} } else {
else{ if (array_key_exists('body', $params)) {
if(array_key_exists('body',$params) ){
$item = new Support(); $item = new Support();
$upper = $entityManager->getRepository(Support::class)->find($id); $upper = $entityManager->getRepository(Support::class)->find($id);
if($upper) if ($upper)
$item->setMain($upper->getid()); $item->setMain($upper->getid());
$item->setBody($params['body']); $item->setBody($params['body']);
$item->setTitle($upper->getTitle()); $item->setTitle($upper->getTitle());
@ -159,47 +160,44 @@ class SupportController extends AbstractController
$entityManager->persist($upper); $entityManager->persist($upper);
$entityManager->flush(); $entityManager->flush();
//send sms to manager //send sms to manager
$admins = $entityManager->getRepository(User::class)->findByRole('ROLE_ADMIN');
foreach($admins as $admin){
$SMS->send( $SMS->send(
[$item->getId()], [$item->getId()],
$registryMGR->get('sms','ticketRec'), $registryMGR->get('sms', 'ticketRec'),
$admin->getMobile() $registryMGR->get('ticket', 'managerMobile')
); );
}
return $this->json([ return $this->json([
'error'=> 0, 'error' => 0,
'message'=> 'ok', 'message' => 'ok',
'url'=>$item->getId() 'url' => $item->getId()
]); ]);
} }
} }
return $this->json([ return $this->json([
'error'=> 999, 'error' => 999,
'message'=> 'تمام موارد لازم را وارد کنید.' 'message' => 'تمام موارد لازم را وارد کنید.'
]); ]);
} }
#[Route('/api/support/view/{id}', name: 'app_support_view')] #[Route('/api/support/view/{id}', name: 'app_support_view')]
public function app_support_view(Jdate $jdate, EntityManagerInterface $entityManager,string $id = ''): JsonResponse public function app_support_view(Jdate $jdate, EntityManagerInterface $entityManager, string $id = ''): JsonResponse
{ {
$item = $entityManager->getRepository(Support::class)->find($id); $item = $entityManager->getRepository(Support::class)->find($id);
if(!$item) throw $this->createNotFoundException(); if (!$item) throw $this->createNotFoundException();
if($item->getSubmitter() != $this->getUser()) throw $this->createAccessDeniedException(); if ($item->getSubmitter() != $this->getUser()) throw $this->createAccessDeniedException();
$replays = $entityManager->getRepository(Support::class)->findBy(['main'=>$item->getId()]); $replays = $entityManager->getRepository(Support::class)->findBy(['main' => $item->getId()]);
foreach ($replays as $replay){ foreach ($replays as $replay) {
$replay->setDateSubmit($jdate->jdate('Y/n/d H:i',$replay->getDateSubmit())); $replay->setDateSubmit($jdate->jdate('Y/n/d H:i', $replay->getDateSubmit()));
$replay->setTitle($replay->getSubmitter()->getFullname()); $replay->setTitle($replay->getSubmitter()->getFullname());
if($replay->getSubmitter() == $this->getUser()) if ($replay->getSubmitter() == $this->getUser())
$replay->setState(1); $replay->setState(1);
else else
$replay->setState(0); $replay->setState(0);
} }
$item->setDateSubmit($jdate->jdate('Y/n/d H:i',$item->getDateSubmit())); $item->setDateSubmit($jdate->jdate('Y/n/d H:i', $item->getDateSubmit()));
return $this->json([ return $this->json([
'item'=> $item, 'item' => $item,
'replays'=> $replays 'replays' => $replays
]); ]);
} }
} }

View file

@ -251,13 +251,16 @@ class Explore
} }
public static function ExploreYear(Year $year) public static function ExploreYear(Year $year)
{ {
$jdate = new Jdate();
return [ return [
'id' => $year->getId(), 'id' => $year->getId(),
'label' => $year->getLabel(), 'label' => $year->getLabel(),
'head' => $year->isHead(), 'head' => $year->isHead(),
'start' => $year->getStart(), 'start' => $year->getStart(),
'end' => $year->getEnd(), 'end' => $year->getEnd(),
'now' => time() 'now' => time(),
'startShamsi'=> $jdate->jdate('Y-n-d',$year->getStart()),
'endShamsi'=> $jdate->jdate('Y-n-d',$year->getEnd()),
]; ];
} }

View file

@ -170,6 +170,23 @@ class Provider
$writer->save($filePath); $writer->save($filePath);
return $filePath; return $filePath;
} }
/**
* @throws Exception
*/
public function createExcellFromArray(array $entities,array $headers = null){
$spreadsheet = new Spreadsheet();
$activeWorksheet = $spreadsheet->getActiveSheet();
$activeWorksheet->fromArray($entities,null,'A1');
$activeWorksheet->setRightToLeft(true);
$activeWorksheet->getHeaderFooter()->setOddHeader('&CHeader of the Document');
$writer = new Xlsx($spreadsheet);
$filePath = __DIR__ . '/../../var/'.$this->RandomString(12).'.xlsx';
$writer->save($filePath);
return $filePath;
}
/** /**
* function to generate random strings * function to generate random strings
* @param int $length number of characters in the generated string * @param int $length number of characters in the generated string