Handling the progress sent from the frontend to the controller.
This commit is contained in:
@@ -34,8 +34,6 @@ export default {
|
||||
created() {
|
||||
window.EventBus.$on('updateProgress', (data) => {
|
||||
this.newProgress = data.readPages;
|
||||
console.info(this.newProgress);
|
||||
console.info(this.progress);
|
||||
});
|
||||
},
|
||||
methods: {}
|
||||
|
||||
@@ -5,13 +5,14 @@
|
||||
</span>
|
||||
<span v-show="editmode">
|
||||
<input type="number" @keydown.esc="cancelEdit" @keydown.enter="submit" ref="readPagesInput" min="0"
|
||||
:max="totalPages" v-model.number="newProgress" />
|
||||
:max="totalPages" v-model.number="newProgress"/>
|
||||
</span>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {EventBus} from "../event-bus";
|
||||
import axios from "axios";
|
||||
|
||||
export default {
|
||||
name: 'Progresseditor',
|
||||
@@ -20,7 +21,8 @@ export default {
|
||||
},
|
||||
props: {
|
||||
totalPages: Number,
|
||||
readPages: Number
|
||||
readPages: Number,
|
||||
bookId: Number
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
@@ -48,7 +50,16 @@ export default {
|
||||
},
|
||||
submit: function () {
|
||||
this.editmode = false;
|
||||
window.EventBus.$emit('updateProgress', {readPages: this.newProgress});
|
||||
axios.post('/progress/update', {
|
||||
bookId: this.bookId,
|
||||
progress: this.newProgress
|
||||
}, {
|
||||
headers: {
|
||||
'content-type': 'text/json'
|
||||
}
|
||||
}).then(() => {
|
||||
window.EventBus.$emit('updateProgress', {readPages: this.newProgress});
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ use App\Form\BookType;
|
||||
use App\Form\FileType;
|
||||
use App\Form\SearchType;
|
||||
use App\Repository\BookRepository;
|
||||
use App\Service\FileService;
|
||||
use App\Service\ProgressService;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\File\UploadedFile;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
@@ -29,7 +29,7 @@ class BookController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/new', name: 'app_book_new', methods: ['GET', 'POST'])]
|
||||
public function new(Request $request, BookRepository $bookRepository, FileService $fileService): Response
|
||||
public function new(Request $request, BookRepository $bookRepository, ProgressService $fileService): Response
|
||||
{
|
||||
$book = new Book();
|
||||
$form = $this->createForm(BookType::class, $book);
|
||||
@@ -95,7 +95,7 @@ class BookController extends AbstractController
|
||||
public function show(
|
||||
Book $book,
|
||||
Request $request,
|
||||
FileService $fileService
|
||||
ProgressService $fileService
|
||||
): Response {
|
||||
$fileForm = $this->createForm(FileType::class);
|
||||
$fileForm->handleRequest($request);
|
||||
@@ -124,7 +124,7 @@ class BookController extends AbstractController
|
||||
Request $request,
|
||||
Book $book,
|
||||
BookRepository $bookRepository,
|
||||
FileService $fileService
|
||||
ProgressService $fileService
|
||||
): Response {
|
||||
$form = $this->createForm(BookType::class, $book);
|
||||
$form->handleRequest($request);
|
||||
@@ -162,7 +162,7 @@ class BookController extends AbstractController
|
||||
Request $request,
|
||||
Book $book,
|
||||
BookRepository $bookRepository,
|
||||
FileService $fileService
|
||||
ProgressService $fileService
|
||||
): Response {
|
||||
if ($this->isCsrfTokenValid('delete' . $book->getId(), $request->request->get('_token'))) {
|
||||
$fileService->removeFiles($book->getFiles());
|
||||
|
||||
@@ -2,13 +2,10 @@
|
||||
|
||||
namespace App\Controller;
|
||||
|
||||
use App\Entity\Book;
|
||||
use App\Entity\File;
|
||||
use App\Repository\FileRepository;
|
||||
use App\Service\FileService;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\Filesystem\Filesystem;
|
||||
use Symfony\Component\HttpFoundation\BinaryFileResponse;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Annotation\Route;
|
||||
|
||||
24
src/Controller/ProgressController.php
Normal file
24
src/Controller/ProgressController.php
Normal file
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace App\Controller;
|
||||
|
||||
use App\Service\ProgressService;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\Routing\Annotation\Route;
|
||||
|
||||
#[Route('/progress')]
|
||||
class ProgressController extends AbstractController
|
||||
{
|
||||
#[Route('/update', name: 'app_progress_update', methods: ['POST'])]
|
||||
public function index(Request $request, ProgressService $progressService): JsonResponse
|
||||
{
|
||||
$data = $request->toArray();
|
||||
$progress = $progressService->updateProgress($data['bookId'], $data['progress']);
|
||||
return $this->json([
|
||||
'bookId' => $progress->getBook()->getId(),
|
||||
'progress' => $progress->getPages(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
34
src/Service/ProgressService.php
Normal file
34
src/Service/ProgressService.php
Normal file
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
namespace App\Service;
|
||||
|
||||
use App\Entity\Progress;
|
||||
use App\Repository\BookRepository;
|
||||
use App\Repository\ProgressRepository;
|
||||
|
||||
class ProgressService
|
||||
{
|
||||
private ProgressRepository $progressRepository;
|
||||
private BookRepository $bookRepository;
|
||||
|
||||
public function __construct(ProgressRepository $progressRepository, BookRepository $bookRepository)
|
||||
{
|
||||
$this->progressRepository = $progressRepository;
|
||||
$this->bookRepository = $bookRepository;
|
||||
}
|
||||
|
||||
public function updateProgress(int $bookId, int $progressPages): Progress
|
||||
{
|
||||
/** @var Progress $progress */
|
||||
$progress = $this->progressRepository->findOneBy(['book' => $bookId, 'date' => date_create()]);
|
||||
if (!$progress) {
|
||||
$progress = new Progress();
|
||||
$progress->setBook($this->bookRepository->find($bookId));
|
||||
$progress->setDate(date_create());
|
||||
}
|
||||
$progress->setPages($progressPages);
|
||||
$this->progressRepository->add($progress, true);
|
||||
return $progress;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -56,7 +56,11 @@
|
||||
{% endif %}
|
||||
<tr>
|
||||
<th>Progress</th>
|
||||
<td><progresseditor :read-pages="{{ progress_pages }}" :total-pages="{{ book.pages }}"></progresseditor></td>
|
||||
<td>
|
||||
<progresseditor :book-id="{{ book.id }}"
|
||||
:read-pages="{{ progress_pages }}"
|
||||
:total-pages="{{ book.pages }}"></progresseditor>
|
||||
</td>
|
||||
<th>Pages</th>
|
||||
<td>{{ book.pages }}</td>
|
||||
</tr>
|
||||
|
||||
Reference in New Issue
Block a user