diff --git a/src/Controller/StackController.php b/src/Controller/StackController.php index 77430d8..d35fa8c 100644 --- a/src/Controller/StackController.php +++ b/src/Controller/StackController.php @@ -140,7 +140,14 @@ class StackController extends AbstractController } $response[] = $temp; } - return $this->json($response); + // calc has next page + $nextPage = true; + if((int)$provider->maxPages($params,$entityManager->getRepository(StackContent::class)->getAllContentCount()) == $params['page']) + $nextPage = false; + return $this->json([ + 'data'=>$response, + 'nextPage'=>$nextPage + ]); } #[Route('/api/stack/replays/search/{url}', name: 'app_stack_replays_get')] @@ -306,4 +313,30 @@ class StackController extends AbstractController 'message'=> 'تمام موارد لازم را وارد کنید.' ]); } + + #[Route('/api/stack/replayedit/{id}', name: 'app_stack_replay_edit')] + public function app_stack_replay_edit($id,Request $request,SerializerInterface $serializer, EntityManagerInterface $entityManager): JsonResponse + { + $params = []; + if ($content = $request->getContent()) { + $params = json_decode($content, true); + } + if( array_key_exists('body',$params )){ + $stack = $entityManager->getRepository(StackContent::class)->find($id); + if(! $stack) + throw $this->createNotFoundException(); + $stack->setBody($params['body']); + $entityManager->persist($stack); + $entityManager->flush(); + return $this->json([ + 'error'=> 0, + 'message'=> 'ok', + 'url'=>$stack->getUrl() + ]); + } + return $this->json([ + 'error'=> 999, + 'message'=> 'تمام موارد لازم را وارد کنید.' + ]); + } } diff --git a/src/Repository/StackContentRepository.php b/src/Repository/StackContentRepository.php index 7668e73..965f616 100644 --- a/src/Repository/StackContentRepository.php +++ b/src/Repository/StackContentRepository.php @@ -95,6 +95,19 @@ class StackContentRepository extends ServiceEntityRepository ; } + /** + * @throws \Doctrine\ORM\NonUniqueResultException + * @throws \Doctrine\ORM\NoResultException + */ + public function getAllContentCount(): int{ + return $this->createQueryBuilder('s') + ->select('count(s.id)') + ->andWhere('s.upper IS NULL') + ->getQuery() + ->getSingleScalarResult() + ; + } + /** * @throws \Doctrine\ORM\NonUniqueResultException * @throws \Doctrine\ORM\NoResultException diff --git a/src/Service/Provider.php b/src/Service/Provider.php index f125eb5..76bba86 100644 --- a/src/Service/Provider.php +++ b/src/Service/Provider.php @@ -19,8 +19,13 @@ class Provider $page = $params['page']; $response['page'] = $page; + $cat = ''; + if(array_key_exists('cat',$params)) + $cat = $params['cat']; + $response['cat'] = $cat; + //set max Count of content want to search - $count = 30; + $count = 15; if(array_key_exists('count',$params)) $count = $params['count']; $response['count'] = $count; @@ -33,6 +38,11 @@ class Provider return $response; } + + public function maxPages($params,$rowsAllCount){ + $res = $rowsAllCount / $params['count']; + return is_float($res) ? (int)$res+1:$res; + } public function gravatarHash($email){ return md5( strtolower( trim( $email) ) ); }