make(true); } public static function getAll() { return Article::orderBy('name','asc')->get(); } public static function getFull($id) { $article = Articles::get($id); $data = $article->toArray(); $data['categories'] = self::getCategoriesByArticle($article); $data['tags'] = self::getTagsByArticle($article); $data = self::getMeta($data); return $data; } public static function getMeta($data = []) { $data['categories_options'] = Categories::getOptions(); $data['families_options'] = ArticleFamilies::getOptions(); $data['taxes_options'] = Taxes::getOptions(); $data['attribute_families_options'] = ArticleAttributeFamilies::getOptions(); $data['tags_list'] = TagGroups::getTreeTags(); $data['models_options'] = ['App\Models\Botanic\Specie' => 'Espèces', 'App\Models\Botanic\Variety' => 'Variétés']; return $data; } public static function getCategoriesByArticle($article) { return $article->categories->pluck('id')->toArray(); } public static function getTagsByArticle($article) { return $article->tags->pluck('id')->toArray(); } public static function get($id) { return Article::find($id); } public static function storeFull($data) { $images = isset($data['images']) ? $data['images'] : false; $categories = isset($data['categories']) ? $data['categories'] : false; $tags = isset($data['tags']) ? $data['tags'] : false; $prices = isset($data['prices']) ? $data['prices'] : false; unset($data['images']); unset($data['categories']); unset($data['tags']); unset($data['prices']); $article = self::store($data); self::storeImages($article, $images); self::storeCategories($article, $categories); self::storeTags($article, $tags); self::storePrices($article, $prices); return $article; } public static function store($data) { $id = isset($data['id']) ? $data['id'] : false; return $id ? self::update($data) : self::create($data); } public static function create($data) { return Article::create($data); } public static function update($data, $id = false) { $id = $id ? $id : $data['id']; $article = Article::find($id); $ret = $article->update($data); return $article; } public static function destroy($id) { return Article::destroy($id); } public static function storeCategories($article, $categories) { if ($categories) { $categories = collect($categories)->transform(function ($item, $key) { return (int) $item; })->toArray(); return $article->syncCategories($categories, true); } else { return false; } } public static function storeTags($article, $tags) { if ($tags) { $tags = collect($tags)->transform(function ($item, $key) { return (int) $item; })->toArray(); return $article->syncTags($tags, true); } else return false; } public static function storePrices($article, $prices) { return ArticlePrices::storePrices($article->id, $prices); } public static function storeImages($article, $files) { if ($files) { foreach ($files as $file) { self::storeImage($article, $file); } } } public static function storeImage($article, $file) { return $article->addMedia($file)->withResponsiveImages()->toMediaCollection('images'); } public static function getImages($id) { $article = self::get($id); if ($article) { $article->getMedia(); foreach ($article->media as $key => $media) { $article->media[$key]['url'] = $media->getUrl(); } return $article->media; } else { return false; } } public static function deleteImage($id, $index) { $article = self::get($id); $article->getMedia(); $ret = $article->media[$index]->delete(); return "1"; } }