diff --git a/hesabixCore/src/Controller/AdminController.php b/hesabixCore/src/Controller/AdminController.php index f561585..c583810 100644 --- a/hesabixCore/src/Controller/AdminController.php +++ b/hesabixCore/src/Controller/AdminController.php @@ -2,6 +2,7 @@ namespace App\Controller; +use App\Entity\Business; use App\Entity\ChangeReport; use App\Entity\User; use App\Service\Jdate; @@ -14,8 +15,11 @@ use Symfony\Component\Console\Input\ArrayInput; use Symfony\Component\Console\Output\BufferedOutput; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\KernelInterface; +use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface; use Symfony\Component\Routing\Annotation\Route; +use Symfony\Component\Security\Http\Attribute\CurrentUser; class AdminController extends AbstractController { @@ -63,16 +67,23 @@ class AdminController extends AbstractController ]); } - /** - * @throws Exception - */ - #[Route('/api/admin/users/list', name: 'app_admin_users_list')] - public function app_admin_users_list(Provider $provider,EntityManagerInterface $entityManager): JsonResponse + #[Route('/api/admin/users/list', name: 'admin_users_list')] + public function admin_users_list(Jdate $jdate,#[CurrentUser] ?User $user,UserPasswordHasherInterface $userPasswordHasher, EntityManagerInterface $entityManager,Request $request): Response { - $users = $entityManager->getRepository(User::class)->findAll(); - return $this->json($provider->ArrayEntity2ArrayJustIncludes($users,[ - - ])); + $users = $entityManager->getRepository(User::class)->findBy([],['id'=>'DESC']); + $resp = []; + foreach ($users as $user) { + $temp =[]; + $temp['id'] = $user->getId(); + $temp['email'] = $user->getEmail(); + $temp['mobile'] = $user->getMobile(); + $temp['fullname'] = $user->getFullName(); + $temp['status'] = $user->isActive(); + $temp['dateRegister'] = $jdate->jdate('Y/n/d',$user->getDateRegister()); + $temp['bidCount'] = count($entityManager->getRepository(Business::class)->findBy(['owner'=>$user])); + $resp[] = $temp; + } + return $this->json($resp); } #[Route('/api/admin/reportchange/lists', name: 'app_admin_reportchange_list')] diff --git a/hesabixCore/src/Controller/ShareHolderController.php b/hesabixCore/src/Controller/ShareHolderController.php index 4ec3fdb..163a809 100644 --- a/hesabixCore/src/Controller/ShareHolderController.php +++ b/hesabixCore/src/Controller/ShareHolderController.php @@ -2,6 +2,7 @@ namespace App\Controller; +use App\Entity\Person; use App\Entity\Shareholder; use App\Service\Access; use App\Service\Log; @@ -25,10 +26,65 @@ class ShareHolderController extends AbstractController $resp = []; foreach($datas as $data){ $temp = []; + $temp['id']= $data->getId(); $temp['person'] = ['id'=>$data->getPerson()->getId(),'nikename'=>$data->getPerson()->getNikename()]; $temp['percent'] = $data->getPercent(); $resp[] = $temp; } return $this->json($resp); } + #[Route('/api/shareholders/insert', name: 'app_shareholders_insert')] + public function app_shareholders_insert(Request $request,Access $access,Log $log,EntityManagerInterface $entityManager): JsonResponse + { + $acc = $access->hasRole('shareholder'); + if(!$acc) + throw $this->createAccessDeniedException(); + $params = []; + if ($content = $request->getContent()) { + $params = json_decode($content, true); + } + if(!array_key_exists('person',$params) && !array_key_exists('count',$params)) + return $this->json(['result'=>-1]); + $person = $entityManager->getRepository(Person::class)->find($params['person']); + if($person){ + if($person->getBid()->getId() != $acc['bid']->getId()){ + throw $this->createAccessDeniedException(); + } + else { + $item = $entityManager->getRepository(Shareholder::class)->findOneBy(['person'=>$person]); + if($item){ + $item->setPercent($item->getPercent() + (int)$params['count']); + } + else{ + $item = new Shareholder(); + $item->setBid($acc['bid']); + $item->setPerson($person); + $item->setPercent((int)$params['count']); + } + $entityManager->persist($item); + $entityManager->flush(); + $log->insert('سهامداران','تعداد ' . $params['count'] . ' سهم به نام ' . $person->getName() . ' افزوده/ویرایش شد.',$this->getUser(),$acc['bid']); + return $this->json(['result'=>1]); + } + } + throw $this->createNotFoundException(); + } + + #[Route('/api/shareholders/remove/{id}', name: 'app_shareholders_remove')] + public function app_shareholders_remove(string $id,Request $request,Access $access,Log $log,EntityManagerInterface $entityManager): JsonResponse + { + $acc = $access->hasRole('shareholder'); + if(!$acc) + throw $this->createAccessDeniedException(); + $shareholder = $entityManager->getRepository(Shareholder::class)->find($id); + if($shareholder){ + if($shareholder->getBid()->getId() == $acc['bid']->getId()){ + $log->insert('سهامداران','سهامدار با نام ' . $shareholder->getPerson()->getNikename() . ' حذف شد. ',$this->getUser(),$acc['bid']); + $entityManager->remove($shareholder); + $entityManager->flush(); + return $this->json(['result'=>1]); + } + } + throw $this->createNotFoundException(); + } }