src/Controller/ServicoBoletimMedicaoAdminController.php line 19

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\BoletimMedicao;
  4. use App\Entity\ServicoBoletimMedicao;
  5. use App\Entity\ServicoPropostaComercial;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use Symfony\Component\HttpFoundation\JsonResponse;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. class ServicoBoletimMedicaoAdminController extends AbstractController
  12. {
  13.     /**
  14.      * @Route("/app/servicoboletimmedicao/{id}/update-quantidade", name="admin_servico_boletim_medicao_update_quantidade", methods={"POST"})
  15.      */
  16.     public function updateQuantidade(Request $requestServicoBoletimMedicao $servicoEntityManagerInterface $em): JsonResponse
  17.     {
  18.         try {
  19.             $quantidade $request->request->get('quantidade');
  20.             $valor $request->request->get('valor');
  21.             $servicoId $request->request->get('servicoId');
  22.             
  23.             if ($quantidade === null) {
  24.                 return new JsonResponse(['success' => false'message' => 'Quantidade não fornecida'], 400);
  25.             }
  26.             
  27.             // Atualizar quantidade do ServicoBoletimMedicao
  28.             $servico->setQuantidade((float) $quantidade);
  29.             
  30.             // Se o valor foi fornecido, atualizar o valor no ServicoPropostaComercial
  31.             if ($valor !== null && $servicoId) {
  32.                 $servicoPropostaComercial $em->getRepository(ServicoPropostaComercial::class)->find($servicoId);
  33.                 if ($servicoPropostaComercial) {
  34.                     $servicoPropostaComercial->setValor((float) $valor);
  35.                 }
  36.             }
  37.             
  38.             $em->flush();
  39.             
  40.             return new JsonResponse([
  41.                 'success' => true,
  42.                 'message' => 'Dados atualizados com sucesso',
  43.                 'quantidade' => $servico->getQuantidade(),
  44.                 'valor' => $valor
  45.             ]);
  46.         } catch (\Exception $e) {
  47.             return new JsonResponse([
  48.                 'success' => false,
  49.                 'message' => 'Erro ao atualizar: ' $e->getMessage()
  50.             ], 500);
  51.         }
  52.     }
  53.     /**
  54.      * @Route("/app/boletimmedicao/{id}/servicos-disponiveis", name="admin_boletim_medicao_servicos_disponiveis", methods={"GET"})
  55.      */
  56.     public function servicosDisponiveis(BoletimMedicao $boletimEntityManagerInterface $em): JsonResponse
  57.     {
  58.         try {
  59.             $proposta $boletim->getOs()->getProposta();
  60.             $servicosProposta $proposta->getServicos();
  61.             
  62.             $servicos = [];
  63.             foreach ($servicosProposta as $servicoProposta) {
  64.                 $servicos[] = [
  65.                     'id' => $servicoProposta->getId(),
  66.                     'titulo' => $servicoProposta->getServico()->getTitulo(),
  67.                     'valor' => $servicoProposta->getValor(),
  68.                     'quantidade' => $servicoProposta->getQuantidade() ?: 1,
  69.                     'unidade' => $servicoProposta->getUnidade()
  70.                 ];
  71.             }
  72.             
  73.             return new JsonResponse([
  74.                 'success' => true,
  75.                 'servicos' => $servicos
  76.             ]);
  77.         } catch (\Exception $e) {
  78.             return new JsonResponse([
  79.                 'success' => false,
  80.                 'message' => 'Erro ao buscar serviços: ' $e->getMessage()
  81.             ], 500);
  82.         }
  83.     }
  84.     /**
  85.      * @Route("/app/boletimmedicao/{id}/adicionar-servico", name="admin_boletim_medicao_adicionar_servico", methods={"POST"})
  86.      */
  87.     public function adicionarServico(Request $requestBoletimMedicao $boletimEntityManagerInterface $em): JsonResponse
  88.     {
  89.         try {
  90.             $servicoPropostaId $request->request->get('servicoPropostaId');
  91.             $quantidade $request->request->get('quantidade'1);
  92.             
  93.             if (!$servicoPropostaId) {
  94.                 return new JsonResponse(['success' => false'message' => 'Serviço não informado'], 400);
  95.             }
  96.             
  97.             $servicoProposta $em->getRepository(ServicoPropostaComercial::class)->find($servicoPropostaId);
  98.             
  99.             if (!$servicoProposta) {
  100.                 return new JsonResponse(['success' => false'message' => 'Serviço não encontrado'], 404);
  101.             }
  102.             
  103.             // Verificar se o serviço já existe no boletim
  104.             foreach ($boletim->getServicos() as $servicoExistente) {
  105.                 if ($servicoExistente->getServico()->getId() == $servicoPropostaId) {
  106.                     return new JsonResponse(['success' => false'message' => 'Serviço já adicionado ao boletim'], 400);
  107.                 }
  108.             }
  109.             
  110.             $servicoBoletim = new ServicoBoletimMedicao();
  111.             $servicoBoletim->setServico($servicoProposta);
  112.             $servicoBoletim->setProposta($boletim->getOs()->getProposta());
  113.             $servicoBoletim->setBoletim($boletim);
  114.             $servicoBoletim->setQuantidade((float) $quantidade);
  115.             
  116.             $em->persist($servicoBoletim);
  117.             $em->flush();
  118.             
  119.             return new JsonResponse([
  120.                 'success' => true,
  121.                 'message' => 'Serviço adicionado com sucesso',
  122.                 'servico' => [
  123.                     'id' => $servicoBoletim->getId(),
  124.                     'titulo' => $servicoProposta->getServico()->getTitulo(),
  125.                     'valor' => $servicoProposta->getValor(),
  126.                     'quantidade' => $servicoBoletim->getQuantidade(),
  127.                     'servicoPropostaId' => $servicoProposta->getId()
  128.                 ]
  129.             ]);
  130.         } catch (\Exception $e) {
  131.             return new JsonResponse([
  132.                 'success' => false,
  133.                 'message' => 'Erro ao adicionar serviço: ' $e->getMessage()
  134.             ], 500);
  135.         }
  136.     }
  137. }