src/Controller/Admin/WorkersCrudController.php line 81

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Admin;
  3. use App\Entity\Workers;
  4. use App\Entity\WorkHours;
  5. use App\Form\Type\WorkhourType;
  6. use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController;
  7. use EasyCorp\Bundle\EasyAdminBundle\Field\IdField;
  8. use EasyCorp\Bundle\EasyAdminBundle\Field\FormField;
  9. use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
  10. use EasyCorp\Bundle\EasyAdminBundle\Field\TextEditorField;
  11. use EasyCorp\Bundle\EasyAdminBundle\Field\MoneyField;
  12. use EasyCorp\Bundle\EasyAdminBundle\Field\IntegerField;
  13. use EasyCorp\Bundle\EasyAdminBundle\Field\DateTimeField;
  14. use EasyCorp\Bundle\EasyAdminBundle\Field\DateField;
  15. use EasyCorp\Bundle\EasyAdminBundle\Field\AssociationField;
  16. use EasyCorp\Bundle\EasyAdminBundle\Field\CollectionField;
  17. use EasyCorp\Bundle\EasyAdminBundle\Field\ArrayField;
  18. use EasyCorp\Bundle\EasyAdminBundle\Field\ChoiceField;
  19. use EasyCorp\Bundle\EasyAdminBundle\Field\TelephoneField;
  20. use EasyCorp\Bundle\EasyAdminBundle\Field\NumberField;
  21. use EasyCorp\Bundle\EasyAdminBundle\Field\EmailField;
  22. use EasyCorp\Bundle\EasyAdminBundle\Field\BooleanField;
  23. use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
  24. use EasyCorp\Bundle\EasyAdminBundle\Config\Action;
  25. use EasyCorp\Bundle\EasyAdminBundle\Config\Actions;
  26. use Symfony\Component\HttpFoundation\Request;
  27. use Symfony\Component\HttpFoundation\Response;
  28. class WorkersCrudController extends AbstractCrudController
  29. {
  30. public static function getEntityFqcn(): string
  31. {
  32. return Workers::class;
  33. }
  34. public function configureFields(string $pageName): iterable
  35. {
  36. yield IdField::new('id')->hideOnForm();
  37. yield TextField::new('full_name');
  38. yield MoneyField::new('price_hour','Órabér')->setCurrency('HUF')->setNumDecimals(0)->setStoredAsCents(false)->hideOnIndex();
  39. yield MoneyField::new('price_month','Havibér')->setCurrency('HUF')->setNumDecimals(0)->setStoredAsCents(false)->hideOnIndex();
  40. yield MoneyField::new('contribution','Járulék')->setCurrency('HUF')->setNumDecimals(0)->setStoredAsCents(false)->hideOnIndex();
  41. yield BooleanField::new('active', 'Aktív');
  42. yield CollectionField::new('workhours','Munkaóra')->onlyOnForms()->setEntryType(WorkhourType::class)->setCustomOption('download_uri','SSS')->addCssClass('small-cubes');
  43. }
  44. /**
  45. * Init crud
  46. */
  47. public function configureCrud(Crud $crud): Crud
  48. {
  49. return $crud
  50. ->setEntityLabelInSingular('Worker')
  51. ->setDefaultSort([ 'active'=>'DESC', 'created'=>'DESC'])
  52. ;
  53. }
  54. public function configureActions(Actions $actions): Actions
  55. {
  56. $actionBatch = Action::new('actionBatch', 'Fizetés', 'fa fa-money')->linkToCrudAction('actionBatch');
  57. $actions->add(Crud::PAGE_INDEX, $actionBatch);
  58. $actions->add(Crud::PAGE_INDEX, Action::DETAIL);
  59. $actions->add(Crud::PAGE_EDIT, Action::DETAIL);
  60. return $actions;
  61. }
  62. public function actionBatch(Request $request){
  63. $worker = $this->getDoctrine()->getRepository(Workers::class)->findOneBy(['id'=>$request->query->get('entityId')]);
  64. if(!$this->getUser()->hasRoles('ROLE_ADMIN') && $this->getUser()->getId() != $worker->getUser()->getId()){
  65. throw $this->createAccessDeniedException();
  66. }
  67. $em = $this->getDoctrine()->getManager();
  68. if(isset($_POST['submit'])){
  69. foreach ($_POST['workhours'] as $key => $value) {
  70. $hour = $this->getDoctrine()->getRepository(WorkHours::class)->findOneBy(['id'=>$value]);
  71. dump($hour);
  72. $hour->setPayed(new \DateTime());
  73. $hour->setPayedHourPrice(intval($_POST['priceHour']));
  74. $em->persist($hour);
  75. $em->flush();
  76. }
  77. }
  78. $qb = $em->createQueryBuilder();
  79. $workHours = $qb->select(['w'])
  80. ->from('App:WorkHours', 'w')
  81. //->leftJoin('App:Projects', 'p', 'WITH', 'w.project = p.id')
  82. ->where('w.worker = :id')
  83. ->andWhere('w.payed is null')
  84. ->setParameter('id', $request->query->get('entityId'))
  85. ->getQuery()
  86. //->getResult(\Doctrine\ORM\Query::HYDRATE_ARRAY);
  87. ->getResult();
  88. if(!$this->getUser()->hasRoles('ROLE_ADMIN') ){
  89. return $this->render('workhour/payView.html.twig',[
  90. 'worker' => $worker,
  91. 'hours' => $workHours
  92. ]);
  93. }else{
  94. return $this->render('workhour/pay.html.twig',[
  95. 'worker' => $worker,
  96. 'hours' => $workHours
  97. ]);
  98. }
  99. }
  100. }