src/Controller/Admin/Stock/BuyingInTurkeyController.php line 187

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Admin\Stock;
  3. use App\Entity\BuyInTurkey;
  4. use App\Entity\Product;
  5. use App\Form\BuyingTurkeyType;
  6. use App\Services\BuyInTurkey\BuyInTurkeyService;
  7. use App\Utils\CurrencyHelper;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Symfony\Component\HttpFoundation\Response;
  12. use Symfony\Component\Routing\Annotation\Route;
  13. class BuyingInTurkeyController extends AbstractController
  14. {
  15.     private BuyInTurkeyService $buyInTurkeyService;
  16.     private EntityManagerInterface $entityManager;
  17.     /**
  18.      * @param EntityManagerInterface $entityManager
  19.      */
  20.     public function __construct(EntityManagerInterface $entityManager)
  21.     {
  22.         $this->entityManager $entityManager;
  23.     }
  24.     #[Route('/buying/in/turkey'name'app_buying_in_turkey')]
  25.     public function index(Request $request): Response
  26.     {
  27.         return $this->render('admin/buying_in_turkey/index.html.twig');
  28.     }
  29.     #[Route('//buying-in-turkey/delete/{id}')]
  30.     public function delete(Request $request$id)
  31.     {
  32.         $entity $this->entityManager->getRepository(BuyInTurkey::class)->find($id);
  33.         $this->entityManager->remove($entity);
  34.         $this->entityManager->flush();
  35.         $this->addFlash('success''Türkiye alış başarıyla silindi');
  36.         return $this->redirectToRoute('app_buying_in_turkey');
  37.     }
  38.     #[Route('/buying-in-turkey/make-transfer/{id}'name:'app_buying_in_turkey_delete')]
  39.     public function makeTransfer(Request $request$id)
  40.     {
  41.         $entity $this->entityManager->getRepository(BuyInTurkey::class)->find($id);
  42.         if(!$entity->isIsTransported()){
  43.             $entity->setIsTransported(true);
  44.             $this->entityManager->persist($entity);
  45.             $this->entityManager->flush();
  46.         }
  47.         $this->addFlash('success''Türkiye Alış transfer edildi listesine eklendi');
  48.         return $this->redirectToRoute('app_buying_in_turkey');
  49.     }
  50.     #[Route('/buying-in-turkey/new'name:'app_buying_in_turkey_new')]
  51.     public function add(Request $request)
  52.     {
  53.         $entity  =new BuyInTurkey();
  54.         $form $this->createForm(BuyingTurkeyType::class, $entity);
  55.         $form->handleRequest($request);
  56.         if($form->isSubmitted() && $form->isValid()){
  57.             $entity $form->getData();
  58.             $this->buyInTurkeyService->create($entity);
  59.             $this->addFlash('success''Kayıt Başarıyla Eklendi');
  60.             return $this->redirectToRoute('app_buying_in_turkey');
  61.         }
  62.         return $this->render('admin/buying_in_turkey/new.html.twig', [
  63.             'form'=>$form->createView(),
  64.         ]);
  65.     }
  66.     #[Route('/buying-in-turkey/edit/{id}'name'app_buying_in_turkey_edit')]
  67.     public function edit(Request $request$id)
  68.     {
  69.         $entity $this->entityManager->getRepository(BuyInTurkey::class)->find($id);
  70.         $form $this->createForm(BuyingTurkeyType::class, $entity);
  71.         $form->handleRequest($request);
  72.         $entities $this->entityManager->getRepository(BuyInTurkey::class)
  73.             ->findBy(['invoiceNumber'=>$entity->getInvoiceNumber()]);
  74.         if($form->isSubmitted() && $form->isValid()){
  75.             $buyInTurkey $form->getData();
  76.             $alisFiyati round(CurrencyHelper::convertToFloat($buyInTurkey->getBuyingPrice()), 3);
  77.             $transferUcreti round(CurrencyHelper::convertToFloat($buyInTurkey->getTransportPrice()), 3);
  78.             $lashing round(CurrencyHelper::convertToFloat($buyInTurkey->getLashing()), 3);
  79.             $gumruk round(CurrencyHelper::convertToFloat($buyInTurkey->getCustomsPrice()), 3);
  80.             $fob round(CurrencyHelper::convertToFloat($buyInTurkey->getPriceFob()), 3);
  81.             $karmarji round(CurrencyHelper::convertToFloat($buyInTurkey->getProfitMargin()), 3);
  82.             $buyInTurkey->setTotalPurhcaseQuantity(round($buyInTurkey->getQuantity(), 3));
  83.             $totalCost $alisFiyati $transferUcreti $lashing $gumruk $fob $karmarji;
  84.             $buyInTurkey->setTotalCostPrice(round($totalCost3));
  85.             $totalPurchase round(CurrencyHelper::convertToFloat($buyInTurkey->getQuantity()) * $totalCost3);
  86.             $buyInTurkey->setTotalPuchasePrice($totalPurchase);
  87.             $buyInTurkey->setTotalPurhcaseQuantity($entity->getQuantity());
  88.             $this->entityManager->persist($buyInTurkey);
  89.             $this->entityManager->flush();
  90.             $this->addFlash('success''Türkiye alış başarıyla güncellendi');
  91.             return $this->redirectToRoute('app_buying_in_turkey');
  92.         }
  93.         return $this->render('admin/buying_in_turkey/edit.html.twig', [
  94.             'form'=>$form->createView(),
  95.             'entity'=>$entity,
  96.             'entities'=>$entities,
  97.         ]);
  98.     }
  99.     #[Route('/buying/in/turkey/purchases/'name'buy_in_turkey_purchases')]
  100.     public function ajax(Request $request)
  101.     {
  102.         $status $request->get('status');
  103.         $s $request->get('search')['value'];
  104.         $id $request->get('id');
  105.         $column $request->get('order')[0]['column'];
  106.         $dir $request->get('order')[0]['dir'];
  107.         $limit $request->get('length');
  108.         if($request->get('start'))
  109.             $page + ($request->get('start') / $limit);
  110.         else
  111.             $page 1;
  112.         $entities $this->createArrayForDataTable(
  113.             $this->buyInTurkeyService->getAllPurchasesByTransportStatus($page$limit$status$s)
  114.         );
  115.         $this->sortArrayByKey($entities['data'], $columnfalse$dir == 'asc');
  116.         return $this->json($entities);
  117.     }
  118.     function sortArrayByKey(&$array,$key,$string false,$asc true){
  119.         if($string){
  120.             usort($array,function ($a$b) use(&$key,&$asc)
  121.             {
  122.                 if($asc)    return strcmp(strtolower($a[$key]), strtolower($b[$key]));
  123.                 else        return strcmp(strtolower($b[$key]), strtolower($a[$key]));
  124.             });
  125.         }else{
  126.             usort($array,function ($a$b) use(&$key,&$asc)
  127.             {
  128.                 if($a[$key] == $b[$key]){return 0;}
  129.                 if($asc) return ($a[$key] < $b[$key]) ? -1;
  130.                 else     return ($a[$key] > $b[$key]) ? -1;
  131.             });
  132.         }
  133.     }
  134.     private function createArrayForDataTable($stocks): array{
  135.         $records = [];
  136.         $records['recordsTotal'] = $stocks->getTotalItemCount();
  137.         $records['recordsFiltered'] = $stocks->getTotalItemCount();
  138.         $records["data"] = [];
  139.         foreach ($stocks as $entity) {
  140.             $records["data"][] = array(
  141.                 $entity->getId(),
  142.                 $entity->getProduct()->getName(),
  143.                 $entity->getProduct()->getCode(),
  144.                 $entity->getProduct()->getMeasurement()->getMeasurement(),
  145.                 $entity->getInvoiceNumber(),
  146.                 $entity->getQuantity(),
  147.                 $entity->getTotalPurhcaseQuantity(),
  148.                 $entity->getBuyingPrice(),
  149.                 $entity->getTransportPrice(),
  150.                 $entity->getLashing(),
  151.                 $entity->getCustomsPrice(),
  152.                 $entity->getPriceFob(),
  153.                 $entity->getProfitMargin(),
  154.                 $entity->getTotalCostPrice(),
  155.                 $entity->getTotalPuchasePrice(),
  156.                 $entity->getBuyingCompany(),
  157.                 $entity->getBuyingDate()->format('d.m.y')
  158.             );
  159.         }
  160.         return $records;
  161.     }
  162.     public function getUnTransferedPurchases()
  163.     {
  164.         $repo $this->entityManager->getRepository(BuyInTurkey::class);
  165.         $result $repo->findBy(['isTransported'=>false]);
  166.         return $this->render('admin/components/customswaitingtr.html.twig', [
  167.             'result'=>$result,
  168.             'resultCount'=>count($result)
  169.         ]);
  170.     }
  171.     public function setBuyInTurkeyService(BuyInTurkeyService $buyInTurkeyService): void
  172.     {
  173.         $this->buyInTurkeyService $buyInTurkeyService;
  174.     }
  175. }