src/Controller/Api/MaterialController.php line 24

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Api;
  3. use App\Entity\Material;
  4. use App\Entity\MaterialUnitTypes;
  5. use App\Entity\Suppliers;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. use Symfony\Component\Serializer\SerializerInterface;
  12. use Symfony\Component\HttpFoundation\Request;
  13. /**
  14.  * @Route("/api/material")
  15. */
  16. class MaterialController extends AbstractController
  17. {
  18.     /**
  19.      * @Route("/materials/{supplier_id}", name="app_material", defaults={"supplier_id"=null})
  20.      */
  21.     public function materials(EntityManagerInterface $managerSerializerInterface $serializer, ?int $supplier_id null ): Response
  22.     {
  23.         if(!$supplier_id){
  24.             $materials $manager->getRepository(Material::class)->findAll();
  25.         } else {
  26.             $supplier $manager->getRepository(Suppliers::class)->find($supplier_id);
  27.             $materials $supplier->getMaterials();
  28.             #dd($materials);
  29.             $materials $manager->getRepository(Material::class)->findBy(["supplier" => $supplier_id]);
  30.         }
  31.         #dd($supplier_id);
  32.         $materials $serializer->serialize($materials'json', [
  33.             'groups' => [
  34.                 'material.base',
  35.                 "material.unit.type.base"
  36.             ]
  37.         ]);
  38.         #dd($materials);
  39.         return $this->json([
  40.             "message" => "Successfully",
  41.             "severity" => "success",
  42.             "materials" => json_decode($materialstrue)
  43.         ], Response::HTTP_OK );
  44.     }
  45.     /**
  46.      * @Route("/fetch-manage-nested-data", name="app_material_fetch_manage_nested_data")
  47.      */
  48.     public function fetchMaterialManageNestedData(EntityManagerInterface $managerSerializerInterface $serializer ): Response
  49.     {
  50.         try{
  51.             $unitTypes $manager->getRepository(MaterialUnitTypes::class)->findAll();
  52.             $unitTypes json_decode($serializer->serialize($unitTypes'json', [
  53.                 'groups' => [
  54.                     "material.unit.type.base"
  55.                 ]
  56.             ]));
  57.             $suppliers $manager->getRepository(Suppliers::class)->findAll();
  58.             $suppliers json_decode($serializer->serialize($suppliers'json', [
  59.                 'groups' => [
  60.                     "supplier.base"
  61.                 ]
  62.             ]));
  63.         } catch (\Exception $exception){
  64.             return $this->json([
  65.                 "message" => $exception->getMessage(),
  66.                 "severity" => "error"
  67.             ], Response::HTTP_NOT_FOUND );
  68.         }
  69.         return $this->json([
  70.             "message" => "Successfully",
  71.             "severity" => "successful",
  72.             "unit_types" => $unitTypes,
  73.             "suppliers" => $suppliers
  74.         ], Response::HTTP_OK );
  75.     }
  76.     /**
  77.      * @Route("/save/{material_id}", name="app_material_save", defaults={"material_id": null })
  78.      * @ParamConverter("material", options={"mapping":{"material_id": "id"}})
  79.      */
  80.     public function save(?Material $materialEntityManagerInterface $managerRequest $requestSerializerInterface $serializer, ?int $material_id null ): Response
  81.     {
  82.         $params $request->request;
  83.         #dd($params->all());
  84.         if( $material_id && !$material ){
  85.             return $this->json([
  86.                 "message" => "Material not found!",
  87.                 "severity" => "error"
  88.             ], Response::HTTP_NOT_FOUND );
  89.         }
  90.         if(!$material){
  91.             $material = new Material();
  92.         }
  93.         if( $params->get('supplier') ){
  94.             $supplier $manager->getRepository(Suppliers::class)->find($params->get('supplier'));
  95.             $material->setSupplier($supplier);
  96.         }
  97.         try{
  98.             $unitType $manager->getRepository(MaterialUnitTypes::class)->find($params->get('unit_type'));
  99.             $material
  100.                 ->setAlias($params->get('alias'))
  101.                 ->setContent($params->get('content'))
  102.                 ->setUnitType($unitType)
  103.                 ->setPrice($params->get('price'))
  104.                 ->setArticleNr($params->get('article_nr'))
  105.                 ->setDescription($params->get('description') ?? null );
  106.             $manager->persist($material);
  107.             $manager->flush();
  108.         } catch (\Exception $exception){
  109.             return $this->json([
  110.                 "message" => $exception->getMessage(),
  111.                 "severity" => "error"
  112.             ], Response::HTTP_NOT_FOUND );
  113.         }
  114.         $material json_decode($serializer->serialize($material'json', [
  115.             'groups' => [
  116.                 'material.base'
  117.             ]
  118.         ]), true );
  119.         return $this->json([
  120.             "message" => "Saved successfully",
  121.             "severity" => "success",
  122.             "material" => $material
  123.         ], Response::HTTP_OK );
  124.     }
  125. }