add datatbles for invoices, add pdf icon, refactor icons components, add autocomplete on search, adapt searching to meilisearch

This commit is contained in:
ludo
2024-02-04 02:51:38 +01:00
parent 5c20e6d5d0
commit 6c88e43b74
39 changed files with 503 additions and 211 deletions

View File

@@ -18,7 +18,7 @@ class Articles
public static function autocomplete($str)
{
$data = Article::byAutocomplete($str)->orderBy('name')->limit(30)->pluck('name', 'id');
$data = Article::byAutocomplete($str)->orderBy('name')->limit(20)->pluck('name', 'id');
$export = [];
foreach ($data as $key => $name) {
$export[] = ['value' => $key, 'text' => $name];
@@ -143,6 +143,7 @@ class Articles
public static function getArticlesToSell($options)
{
$articles = self::getArticlesWithOffers($options);
$searchOrder = array_flip($options['ids']->toArray() ?? []);
foreach ($articles as $article) {
$price_lists = $article->offers[0]->tariff->price_lists->toArray();
if (! count($price_lists)) {
@@ -150,6 +151,7 @@ class Articles
}
if (! is_array($data[$article->name] ?? false)) {
$data[$article->name] = self::getDataForSale($article);
$data[$article->name]['searchOrder'] = $searchOrder[$article->id];
}
$prices = $price_lists[0]['price_list_values'][0];
$article_nature_name = strtolower($article->article_nature->name);
@@ -248,20 +250,17 @@ class Articles
public static function getModelByOptions($options = false)
{
$category_id = $options['category_id'] ?? false;
$search = $options['search'] ?? false;
$tags = $options['tags'] ?? false;
$article_nature_id = $options['article_nature_id'] ?? false;
$article_nature_ids = $options['article_nature_ids'] ?? false;
$product_type = $options['product_type'] ?? false;
$model = $options['homepage'] ?? false ? Article::homepage()->visible() : Article::visible();
$model = $category_id ? $model->byCategoryParent($category_id) : $model;
$model = $tags ? $model->byTags($tags) : $model;
$model = $search ? $model->search($search) : $model;
$model = $options['category_id'] ?? false ? $model->byCategoryParent($options['category_id']) : $model;
$model = $options['tags'] ?? false ? $model->byTags($options['tags']) : $model;
$model = $options['search'] ?? false ? $model->rawSearch($options['search']) : $model;
$model = $options['ids'] ?? false ? $model->byIDs($options['ids']) : $model;
$model = $article_nature_id ? $model->byArticleNature($article_nature_id) : $model;
$model = $article_nature_ids ? $model->byArticleNatures($article_nature_ids) : $model;
switch ($product_type) {
switch ($options['product_type'] ?? false) {
case 'botanic':
$model = $model->botanic();
break;
@@ -324,11 +323,6 @@ class Articles
return $data;
}
public static function getPricesByArticle($article)
{
return Prices::getByArticle($article->id);
}
public static function storeFull($data)
{
$images = $data['images'] ?? false;