src\Web\SystemUsersController.php line 258

Open in your IDE?
  1. <?php
  2. namespace App\Web;
  3. use App\Entity\Branch;
  4. use App\Entity\SystemUser;
  5. use App\Entity\User;
  6. use App\Entity\UserBranch;
  7. use App\Form\SystemUserType;
  8. use ContainerLSzrMBa\getPasswordHasherInterfaceService;
  9. use Doctrine\Persistence\ManagerRegistry;
  10. use Doctrine\Persistence\ObjectManager;
  11. use JMS\Serializer\SerializationContext;
  12. use JMS\Serializer\SerializerBuilder;
  13. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  14. use Symfony\Component\Form\FormError;
  15. use Symfony\Component\HttpFoundation\JsonResponse;
  16. use Symfony\Component\HttpFoundation\Request;
  17. use Symfony\Component\HttpFoundation\Response;
  18. use Symfony\Component\PasswordHasher\Hasher\PasswordHasherFactory;
  19. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  20. use Symfony\Component\PasswordHasher\PasswordHasherInterface;
  21. use Symfony\Component\Routing\Annotation\Route;
  22. class SystemUsersController extends AbstractController
  23. {
  24.     private ObjectManager $em;
  25. //["ROLE_USER","ROLE_WEB","ROLE_ADMIN_WEB"]
  26.     private array $ROLES = [
  27.         => ["ROLE_USER""ROLE_WEB""ROLE_ADMIN_WEB""ROLE_MPESA_ADMIN"],
  28.         => ["ROLE_USER""ROLE_WEB""ROLE_WEB_BRANCH","ROLE_MPESA_ADMIN"],
  29.         => ["ROLE_USER"]
  30.     ];
  31.     private UserPasswordHasherInterface $passwordHasher;
  32.     public function __construct(ManagerRegistry $managerRegistryUserPasswordHasherInterface $passwordHasher)
  33.     {
  34.         $this->em $managerRegistry->getManager();
  35.         $this->passwordHasher $passwordHasher;
  36.     }
  37.     /**
  38.      * @Route("/system_users",  name="systemUsersHomeRoute")
  39.      * @param Request $request
  40.      * @return Response
  41.      */
  42.     public function systemUsersHomeAction(Request $request)
  43.     {
  44.         return $this->render('system_users/all_system_users.html.twig', [
  45.         ]);
  46.     }
  47.     /**
  48.      * @Route("/system_user/new",  name="systemUserNewRoute")
  49.      * @param Request $request
  50.      * @return Response
  51.      */
  52.     public function systemUserNewAction(Request $request)
  53.     {
  54.         $em $this->em;
  55.         $systemUser = new SystemUser();
  56.         $systemUser->setCreatedAt(new \DateTime());
  57.         $form $this->createForm(SystemUserType::class, $systemUser, [
  58.             'validation_groups' => [
  59.                 'Default'
  60.             ]
  61.         ]);
  62.         $form->handleRequest($request);
  63.         /* $sysUser = $em->getRepository(SystemUser::class)->findOneBy([
  64.              'idNumber' => $systemUser->getIdNumber()
  65.          ]);*/
  66.         if ($form->isSubmitted()) {
  67.             $sysUser $em->getRepository(SystemUser::class)->getMainSystemUser($systemUser->getPhone());
  68.             $branch null;
  69.             if (!$sysUser) {
  70.                 $form->get('phone')->addError(new FormError('User not found'));
  71.             }else{
  72.                 $branch $em->getRepository(Branch::class)->findOneBy([
  73.                     'branchCode' => $sysUser['branchID']
  74.                 ]);
  75.                 if (!$branch) {
  76.                     $form->get('phone')->addError(new FormError("Branch code: {$sysUser['branchID']} not available ... "));
  77.                 }
  78.             }
  79.             if ($form->isValid()) {
  80.                 $name $sysUser['username'];
  81.                 $phone $sysUser['phoneNumber'];
  82.                 $email trim($sysUser['emailAddress']);
  83.                 $branchId $sysUser['branchID'];
  84.                 $userid $sysUser['userID'];
  85.                 $systemUser = new SystemUser();
  86.                 $systemUser->setPhone(trim($phone));
  87.                 $systemUser->setCreatedAt(new \DateTime());
  88.                 $systemUser->setBranchCode(trim($branchId));
  89.                 $systemUser->setStaffName(trim($name));
  90.                 $systemUser->setIdNumber(trim($phone));
  91.                 $systemUser->setStaffCode(trim($userid));
  92.                 $this->em->persist($systemUser);
  93.                 $role $form->get('roles')->getData();
  94.                 try {
  95.                     if ($role == || $role == 2) {
  96.                         $user = new User();
  97.                         $user->setRoles($this->ROLES[$role]);
  98.                         $user->setSystemUser($systemUser);
  99.                         $user->setBranch($branch);
  100.                         $user->setCreatedAt(new \DateTime());
  101.                         $user->setPhone($email);
  102.                         $user->setIsActive(true);
  103.                         $hashedPass $this->passwordHasher->hashPassword($user$systemUser->getPhone());
  104.                         $user->setPassword($hashedPass);
  105.                         /** @var Branch[] $branches */
  106.                         $branches $form->get('branches')->getData();
  107.                         dump($branches);
  108.                         foreach ($branches as $index => $br) {
  109.                             $userBranch = new UserBranch();
  110.                             $userBranch->setUser($user);
  111.                             $userBranch->setBranch($br);
  112.                             $userBranch->setCreatedBy($this->getUser());
  113.                             $userBranch->setCreatedAt(new \DateTime());
  114.                             $this->em->persist($userBranch);
  115.                         }
  116.                         $userBranch = new UserBranch();
  117.                         $userBranch->setUser($user);
  118.                         $userBranch->setBranch($branch);
  119.                         $userBranch->setCreatedBy($this->getUser());
  120.                         $userBranch->setCreatedAt(new \DateTime());
  121.                         $this->em->persist($userBranch);
  122.                         $em->persist($user);
  123.                         dump($user);
  124.                     }
  125.                     $em->flush();
  126.                     return $this->redirectToRoute('systemUserNewRoute');
  127.                 } catch (\Exception $e) {
  128.                     dump($e);
  129.                 }
  130.             }
  131.         }
  132.         return $this->render('system_users/system_user_new.html.twig', [
  133.             'form' => $form->createView()
  134.         ]);
  135.     }
  136.     /**
  137.      * @Route("/system_user/{id}",  name="systemUserUpdateRoute")
  138.      * @param Request $request
  139.      * @return Response
  140.      */
  141.     public function systemUserUpdateAction(Request $request$id)
  142.     {
  143.         $em $this->em;
  144.         $systemUser $em->getRepository('App:SystemUser')->findOneBy([
  145.             'id' => $id
  146.         ]);
  147.         if (!$systemUser) {
  148.             return $this->render('system_users/system_user_new.html.twig', [
  149.                 'form' => $form->createView()
  150.             ]);
  151.         }
  152.         $systemUser->setCreatedAt(new \DateTime());
  153.         $form $this->createForm(SystemUserType::class, $systemUser, [
  154.             'validation_groups' => [
  155.                 'Default'
  156.             ]
  157.         ]);
  158.         $form->handleRequest($request);
  159.         if ($form->isSubmitted() && $form->isValid()) {
  160.             $branch $form->get('branch')->getData();
  161.             $systemUser->setBranchCode($branch->getBranchCode());
  162.             try {
  163.                 $lastUser $em->getRepository('App:SystemUser')->findOneBy([], [
  164.                     'id' => 'desc'
  165.                 ]);
  166.                 $systemUser->setStaffCode($lastUser->getStaffCode() + 1);
  167.                 $em->persist($systemUser);
  168.                 $em->flush();
  169.                 return $this->redirectToRoute('systemUserNewRoute');
  170.             } catch (\Exception $e) {
  171.                 dump($e);
  172.             }
  173.         }
  174.         return $this->render('system_users/system_user_new.html.twig', [
  175.             'form' => $form->createView()
  176.         ]);
  177.     }
  178.     /**
  179.      * @Route("/system_users/json", name="systemUsersJSONRoute")
  180.      * @return Response
  181.      */
  182.     public function systemUsersJSON(Request $request)
  183.     {
  184.         $context = new SerializationContext();
  185.         $context->setSerializeNull(true);
  186.         $serializer SerializerBuilder::create()->build();
  187.         $em $this->getDoctrine()->getManager();
  188.         $page $request->request->get('page') > $request->request->get('page') : 1;
  189.         $rows $request->request->get('rows') > $request->request->get('rows') : 20;
  190.         $offset = ($page 1) * $rows;
  191.         $filterRules $request->request->get('filterRules');
  192.         $transactions $em->getRepository(SystemUser::class)->getAllSystemUsers($filterRules$offset$rows);
  193.         $count $em->getRepository(SystemUser::class)->getAllSystemUsersCounter($filterRules);
  194.         $data = [
  195.             'total' => $count,
  196.             'rows' => $transactions,
  197.         ];
  198. //        $data = $serializer->serialize($data, 'json', $context);
  199. //        $data = json_encode($data, false);
  200.         return new JsonResponse($dataResponse::HTTP_OK, [
  201.             'ContentType' => 'application/json'
  202.         ]);
  203.     }
  204. }