src\Mobile\UsersController.php line 37

Open in your IDE?
  1. <?php
  2. namespace App\Mobile;
  3. use App\Controller\Sms\SmsController;
  4. use App\Entity\Branch;
  5. use App\Entity\SystemUser;
  6. use App\Entity\User;
  7. use Doctrine\Persistence\ManagerRegistry;
  8. use Doctrine\Persistence\ObjectManager;
  9. use JMS\Serializer\SerializationContext;
  10. use JMS\Serializer\SerializerBuilder;
  11. use Psr\Log\LoggerInterface;
  12. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  13. use Symfony\Component\HttpFoundation\Request;
  14. use Symfony\Component\HttpFoundation\Response;
  15. use Symfony\Component\Routing\Annotation\Route;
  16. use Symfony\Contracts\HttpClient\HttpClientInterface;
  17. class UsersController extends AbstractController {
  18.     private ObjectManager $em;
  19.     public function __construct(ManagerRegistry $managerRegistry)
  20.     {
  21.         $this->em $managerRegistry->getManager();
  22.     }
  23.     /**
  24.      * @Route("/sign_up", methods={"POST"}, name="signUpUsers")
  25.      * @param Request $request
  26.      * @param HttpClientInterface $client
  27.      * @return Response
  28.      */
  29.     public function systemUsers(Request $requestHttpClientInterface $client): Response
  30.     {
  31.         $em $this->em;
  32.         $phone $request->query->get('phone');
  33.         $isTesting $request->query->get('testing');
  34. //        dump($phone);
  35.         $phone str_replace(' '''$phone);
  36.         $systemUser $em->getRepository(SystemUser::class)->findOneBy([
  37.             'phone' => "$phone"
  38.         ]);
  39.         if($systemUser){
  40.             $code strtoupper($this->generateString(6));
  41.             $systemUser->setSignUpCode($code);
  42.             $sendSms = new SmsController($client);
  43. //            $message = "account activation code is #".$code."\nBzlxYnMSSpw";
  44. //            $message = "<#> Your NEEMA activation code is: ".$code." BzlxYnMSSpw";
  45.             $message "<#> Your NEEMA activation code is: ".$code." Vu/h9juJ+BR";
  46.             if($request->query->get('text')){
  47.                 $co $request->query->get('text');
  48.                 $message "<#> Your NEEMA activation code is: ".$code.{$co}";
  49.             }
  50.             // $message = "<#> Your NEEMA activation code is: ".$code." nYVeso+m3Uu";
  51.             
  52.             $id $systemUser->getId();
  53.             $response $sendSms->sendSignUpMessage($message,$systemUser->getPhone(),$id);
  54.             $em->flush();
  55.             if($isTesting){
  56.                 $data = [
  57.                     'message' => 'Successful please wait for activation code',
  58.                     'code' => $code
  59.                 ];
  60.             }else {
  61.                 $data = [
  62.                     'message' => 'Successful please wait for activation code'
  63.                 ];
  64.             }
  65.             
  66.             $dataJson json_encode($data);
  67.             return new Response($dataJsonResponse::HTTP_OK,[
  68.                 'content-type'=>'application/json'
  69.             ]);
  70.         }
  71.         return new Response('USER NOT REGISTERED',Response::HTTP_NOT_FOUND);
  72.     }
  73.     /**
  74.      * @Route("/sign_up/{signUpCode}", methods={"GET"}, name="getUser")
  75.      * @param Request $request
  76.      * @param $signUpCode
  77.      * @return Response
  78.      */
  79.     public function getUsers(Request $request$signUpCode): Response
  80.     {
  81.         $em $this->getDoctrine()->getManager();
  82.         $systemUser $em->getRepository(SystemUser::class)->findOneBy([
  83.             'signUpCode' => $signUpCode
  84.         ]);
  85.         if($systemUser){
  86.             $branch $em->getRepository(Branch::class)->findOneBy([
  87.                 'branchCode' => $systemUser->getBranchCode()
  88.             ]);
  89.             
  90.             $oldUser $em->getRepository(User::class)->findOneBy([
  91.                 'systemUser' => $systemUser
  92.             ]);
  93.             if($oldUser){
  94.                 
  95.                 $oldUser->setPhone($systemUser->getPhone());
  96.                 $oldUser->setBranch$branch);
  97.                 
  98.                 $data = [
  99.                     'system_user' => [
  100.                         'user_name' => $systemUser->getStaffName(),
  101.                         'phone' => $systemUser->getPhone(),
  102.                         'created_at' => $systemUser->getCreatedAt(),
  103.                         'branch_name' => $branch->getBranchName()
  104.                     ],
  105.                     'user' => [
  106.                         'phone_number' => $systemUser->getPhone(),
  107.                         'user_name' => $systemUser->getStaffName(),
  108.                         'branch' => $branch->getBranchCode(),
  109.                     ]
  110.                 ];
  111.                 
  112.                   $em->flush();
  113.                  
  114.                 // $em->persist($oldUser);
  115.                 $jsonData  json_encode($data);
  116.                 return new Response($jsonDataResponse::HTTP_OK,[
  117.                     'content-type'=>'application/json'
  118.                 ]);
  119.             }else if($branch && !$oldUser){
  120.                 $user = new User();
  121.                 $user->setCreatedAt(new \DateTime());
  122.                 $user->setPhone($systemUser->getPhone());
  123.                 $user->setBranch($branch);
  124.                 $user->setPassword('awesome');
  125.                 $user->setRoles(['ROLE_USER']);
  126.                 $user->setSystemUser($systemUser);
  127.                 $user->setIsActive(false);
  128.                 $em->persist($user);
  129.             }
  130.             $em->flush();
  131.             $data = [
  132.                 'system_user' => [
  133.                   'user_name' => $systemUser->getStaffName(),
  134.                   'phone' => $systemUser->getPhone(),
  135.                   'created_at' => $systemUser->getCreatedAt(),
  136.                   'branch_name' => $branch->getBranchName()
  137.                 ],
  138.                 'user' => [
  139.                     'phone_number' => $systemUser->getPhone(),
  140.                     'user_name' => $systemUser->getStaffName(),
  141.                     'branch' => $branch->getBranchCode(),
  142.                 ]
  143.             ];
  144.             $jsonData  json_encode($data);
  145.             return new Response($jsonDataResponse::HTTP_OK,[
  146.                 'content-type'=>'application/json'
  147.             ]);
  148.         }
  149.         $context = new SerializationContext();
  150.         $context->setSerializeNull(true);
  151.         $serializer SerializerBuilder::create()->build();
  152. //        $data = $serializer->serialize($mpesaTransaction, 'json', $context);
  153.         return new Response("NOT FOUND"Response::HTTP_NOT_FOUND);
  154.     }
  155.     function generateString($strength 6): string
  156.     {
  157.         $input '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
  158.         $input_length strlen($input);
  159.         $random_string '';
  160.         for($i 0$i $strength$i++) {
  161.             $random_character $input[mt_rand(0$input_length 1)];
  162.             $random_string .= $random_character;
  163.         }
  164.         return $random_string;
  165.     }
  166. }