work on users manager

This commit is contained in:
Hesabix 2023-11-14 11:22:39 -05:00
parent b77ce36b99
commit c49045bbe7
2 changed files with 76 additions and 9 deletions

View file

@ -2,6 +2,7 @@
namespace App\Controller; namespace App\Controller;
use App\Entity\Business;
use App\Entity\ChangeReport; use App\Entity\ChangeReport;
use App\Entity\User; use App\Entity\User;
use App\Service\Jdate; use App\Service\Jdate;
@ -14,8 +15,11 @@ use Symfony\Component\Console\Input\ArrayInput;
use Symfony\Component\Console\Output\BufferedOutput; use Symfony\Component\Console\Output\BufferedOutput;
use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\KernelInterface; use Symfony\Component\HttpKernel\KernelInterface;
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Http\Attribute\CurrentUser;
class AdminController extends AbstractController class AdminController extends AbstractController
{ {
@ -63,16 +67,23 @@ class AdminController extends AbstractController
]); ]);
} }
/** #[Route('/api/admin/users/list', name: 'admin_users_list')]
* @throws Exception public function admin_users_list(Jdate $jdate,#[CurrentUser] ?User $user,UserPasswordHasherInterface $userPasswordHasher, EntityManagerInterface $entityManager,Request $request): Response
*/
#[Route('/api/admin/users/list', name: 'app_admin_users_list')]
public function app_admin_users_list(Provider $provider,EntityManagerInterface $entityManager): JsonResponse
{ {
$users = $entityManager->getRepository(User::class)->findAll(); $users = $entityManager->getRepository(User::class)->findBy([],['id'=>'DESC']);
return $this->json($provider->ArrayEntity2ArrayJustIncludes($users,[ $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')] #[Route('/api/admin/reportchange/lists', name: 'app_admin_reportchange_list')]

View file

@ -2,6 +2,7 @@
namespace App\Controller; namespace App\Controller;
use App\Entity\Person;
use App\Entity\Shareholder; use App\Entity\Shareholder;
use App\Service\Access; use App\Service\Access;
use App\Service\Log; use App\Service\Log;
@ -25,10 +26,65 @@ class ShareHolderController extends AbstractController
$resp = []; $resp = [];
foreach($datas as $data){ foreach($datas as $data){
$temp = []; $temp = [];
$temp['id']= $data->getId();
$temp['person'] = ['id'=>$data->getPerson()->getId(),'nikename'=>$data->getPerson()->getNikename()]; $temp['person'] = ['id'=>$data->getPerson()->getId(),'nikename'=>$data->getPerson()->getNikename()];
$temp['percent'] = $data->getPercent(); $temp['percent'] = $data->getPercent();
$resp[] = $temp; $resp[] = $temp;
} }
return $this->json($resp); 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();
}
} }