Articles::getOptionsWithNature(), 'tariffs' => Tariffs::getOptions(), 'variations' => Variations::getOptions(), ]; } public static function getWeight($id, $quantity = 1) { $offer = self::get($id); return $offer ? $offer->weight * $quantity : 0; } public static function getWithVariationByIds($ids) { return Offer::with('variation')->byIds($ids)->get(); } public static function getWithPricesByIds($ids, $saleChannelId = false) { $saleChannelId = $saleChannelId ? $saleChannelId : SaleChannels::getDefaultID(); return Offer::with([ 'variation', 'article.article_nature', 'article.product', 'article.image', 'price_lists.price_list_values', ])->withPriceListsBySaleChannel($saleChannelId)->byIds($ids)->get(); } public static function getFull($id, $saleChannelId = false) { $saleChannelId = $saleChannelId ? $saleChannelId : SaleChannels::getDefaultID(); $offer = Offer::with([ 'article.article_nature', 'article.product', 'tariff' => function ($query) use ($saleChannelId) { $query->bySaleChannel($saleChannelId); }, 'tariff.price_lists' => function ($query) use ($saleChannelId) { $query->BySaleChannel($saleChannelId); }, 'tariff.price_lists.price_list_values', 'variation', ])->find($id); $images = Articles::getFullImagesByArticle($offer->article); $offer->article->image = Articles::getPreviewSrc($images[0] ?? false); return $offer; } public static function getPrice($id, $quantity = 1, $saleChannelId = false) { $saleChannelId = $saleChannelId ? $saleChannelId : SaleChannels::getDefaultID(); $offer = Offer::withPriceBySaleChannelByQuantity($saleChannelId, $quantity)->find($id); $priceList = $offer->price_lists->first(); return $priceList ? $priceList->price_list_values->first() : false; } public static function getOffersByArticles($article_ids, $saleChannelId = false) { return self::getOffersBySaleChannelRaw($saleChannelId)->byArticles($article_ids)->get(); } public static function getOffersByArticle($article_id, $saleChannelId = false) { return self::getOffersBySaleChannelRaw($saleChannelId)->byArticle($article_id)->get(); } public static function getOffersBySaleChannel($saleChannelId = false) { return self::getOffersBySaleChannelRaw($saleChannelId)->get(); } public static function getOffersBySaleChannelRaw($saleChannelId = false) { $saleChannelId = $saleChannelId ? $saleChannelId : SaleChannels::getDefaultID(); return Offer::active()->byStockAvailable() ->with([ 'article_nature', 'variation', 'tariff.price_lists' => function ($query) use ($saleChannelId) { $query->bySaleChannel($saleChannelId); }, 'tariff.price_lists.price_list_values', ]) ->bySaleChannel($saleChannelId); } public static function getThumbSrcById($id) { return self::getThumbSrc(self::get($id)); } public static function getThumbSrc(Offer $offer) { $image = $offer->article ? Articles::getFullImageByArticle($offer->article) : false; return $image ? Articles::getThumbSrc($image) : false; } public static function getLast() { return Offer::with(['article.image'])->active()->orderByDesc('updated_at')->get(); } public static function getByCategoryWithTags($category_id) { $category = Categories::get($category_id); $tags = Categories::getTagsByCategory($category); $offers1 = self::getByCategory($category_id)->toArray(); $offers2 = self::getByTags($tags)->toArray(); return array_merge($offers1, $offers2); } public static function getByCategory($category_id) { return Offer::with(['article.image'])->byCategory($category_id)->get(); } public static function getByTags($tags) { return Offer::with(['article.tags'])->byTags($tags)->get(); } public static function toggle_active($id, $status_id) { return self::update(['status_id' => $status_id], $id); } public static function getModel() { return Offer::query(); } }