feature/lowest-price #27
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
1. Clone repository using `git clone https://git.techtube.pl/krzysiej/ryobi-crawler.git`
|
1. Clone repository using `git clone https://git.techtube.pl/krzysiej/ryobi-crawler.git`
|
||||||
2. Cd into project directory `cd ryobi-crawler`
|
2. Cd into project directory `cd ryobi-crawler`
|
||||||
3. Build and start docker container `docker compose up -d`
|
3. Build and start docker container `docker compose up -d --build --force-recreate`
|
||||||
4. Run `docker compose exec php-app php console.php app:migrate` file to create `database.sqlite` and create tables.
|
4. Run `docker compose exec php-app php console.php app:migrate` file to create `database.sqlite` and create tables.
|
||||||
5. Run `docker compose exec php-app php console.php app:scrape` command to scrape all the products from the ryobi website.
|
5. Run `docker compose exec php-app php console.php app:scrape` command to scrape all the products from the ryobi website.
|
||||||
6. Access web interface using `localhost:9001` address in web browser.
|
6. Access web interface using `localhost:9001` address in web browser.
|
||||||
|
|||||||
@@ -11,10 +11,10 @@ final class IndexController extends BaseController
|
|||||||
#[Route('/', name: 'app_home')]
|
#[Route('/', name: 'app_home')]
|
||||||
public function __invoke(): Response
|
public function __invoke(): Response
|
||||||
{
|
{
|
||||||
if($this->cache->getItem('list_all')->isHit()) {
|
// if($this->cache->getItem('list_all')->isHit()) {
|
||||||
return $this->render('productList.html.twig', ['listType' => 'all']);
|
// return $this->render('productList.html.twig', ['listType' => 'all']);
|
||||||
}
|
// }
|
||||||
$products = Product::with(['currentStock', 'price'])
|
$products = Product::with(['currentStock', 'price', 'lowestPrice'])
|
||||||
->orderByDesc('starred')
|
->orderByDesc('starred')
|
||||||
->orderByDesc('created_by')
|
->orderByDesc('created_by')
|
||||||
->get();
|
->get();
|
||||||
|
|||||||
@@ -41,6 +41,11 @@ class Product extends Model
|
|||||||
return $this->hasOne(Price::class)->latestOfMany('created_at');
|
return $this->hasOne(Price::class)->latestOfMany('created_at');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function lowestPrice(): HasOne
|
||||||
|
{
|
||||||
|
return $this->hasOne(Price::class)->ofMany('price', 'MIN');
|
||||||
|
}
|
||||||
|
|
||||||
public function stock(): HasMany
|
public function stock(): HasMany
|
||||||
{
|
{
|
||||||
return $this->hasMany(Stock::class);
|
return $this->hasMany(Stock::class);
|
||||||
|
|||||||
@@ -46,6 +46,7 @@
|
|||||||
</td>
|
</td>
|
||||||
<td class="align-middle"><a href='https://pl.ryobitools.eu/{{ product.url }}'>link</a></td>
|
<td class="align-middle"><a href='https://pl.ryobitools.eu/{{ product.url }}'>link</a></td>
|
||||||
<td class="align-middle">{{ product.price.last.price | format_currency('PLN', {}, 'pl') }}</td>
|
<td class="align-middle">{{ product.price.last.price | format_currency('PLN', {}, 'pl') }}</td>
|
||||||
|
<td class="align-middle">{{ product.lowestPrice.price | format_currency('PLN', {}, 'pl') }}</td>
|
||||||
<td class="align-middle">
|
<td class="align-middle">
|
||||||
<div class="d-flex flex-row">
|
<div class="d-flex flex-row">
|
||||||
{% if product.price.last.price != product.price.last.productStandardPrice %}<span
|
{% if product.price.last.price != product.price.last.productStandardPrice %}<span
|
||||||
|
|||||||
Reference in New Issue
Block a user