Sindbad~EG File Manager
<?php
use Carbon\Carbon;
use App\Models\PreorderProductReview;
use App\Models\Tax;
use App\Models\Cart;
use App\Models\City;
use App\Models\Shop;
use App\Models\User;
use App\Models\Addon;
use App\Models\Brand;
use App\Models\Color;
use App\Models\Order;
use App\Models\Coupon;
use App\Models\Seller;
use App\Models\Upload;
use App\Models\Wallet;
use App\Models\Carrier;
use App\Models\Country;
use App\Models\Product;
use App\Models\Category;
use App\Models\Currency;
use App\Models\Language;
use App\Models\Wishlist;
use App\Models\Attribute;
use App\Models\ClubPoint;
use App\Models\FlashDeal;
use App\Models\CouponUsage;
use App\Models\DeliveryBoy;
use App\Models\OrderDetail;
use App\Models\PickupPoint;
use App\Models\Translation;
use App\Models\BlogCategory;
use App\Models\Conversation;
use App\Models\FollowSeller;
use App\Models\ProductStock;
use App\Models\CombinedOrder;
use App\Models\SellerPackage;
use App\Models\AffiliateConfig;
use App\Models\AffiliateOption;
use App\Models\BusinessSetting;
use App\Models\CustomerPackage;
use App\Models\CustomerProduct;
use App\Utility\SendSMSUtility;;
use App\Models\AuctionProductBid;
use App\Models\ManualPaymentMethod;
use App\Models\SellerPackagePayment;
use App\Utility\NotificationUtility;
use App\Http\Resources\V2\CarrierCollection;
use App\Http\Controllers\AffiliateController;
use App\Http\Controllers\ClubPointController;
use App\Http\Controllers\CommissionController;
use AizPackages\ColorCodeConverter\Services\ColorCodeConverter;
use App\Models\Address;
use App\Models\AppTranslation;
use App\Models\Area;
use App\Models\CustomerPackagePayment;
use App\Models\CustomLabel;
use App\Models\CustomSaleAlert;
use App\Models\ElementStyle;
use App\Models\ElementType;
use App\Models\EmailTemplate;
use App\Models\FlashDealProduct;
use App\Models\LastViewedProduct;
use App\Models\PaymentMethod;
use App\Models\UserCoupon;
use App\Models\NotificationType;
use App\Models\PreorderConversationMessage;
use App\Models\PreorderConversationThread;
use App\Models\PreorderProduct;
use App\Models\State;
use App\Utility\EmailUtility;
use phpDocumentor\Reflection\PseudoTypes\LowercaseString;
//sensSMS function for OTP
if (!function_exists('sendSMS')) {
function sendSMS($to, $from, $text, $template_id)
{
return SendSMSUtility::sendSMS($to, $from, $text, $template_id);
}
}
//highlights the selected navigation on admin panel
if (!function_exists('areActiveRoutes')) {
function areActiveRoutes(array $routes, $output = "active")
{
foreach ($routes as $route) {
if (Route::currentRouteName() == $route && (url()->current() != url('/admin/website/custom-pages/edit/home'))) return $output;
}
}
}
//highlights the selected navigation on frontend
if (!function_exists('areActiveRoutesHome')) {
function areActiveRoutesHome(array $routes, $output = "active")
{
foreach ($routes as $route) {
if (Route::currentRouteName() == $route) return $output;
}
}
}
//highlights the selected navigation on frontend
if (!function_exists('default_language')) {
function default_language()
{
return env("DEFAULT_LANGUAGE");
}
}
/**
* Save JSON File
* @return Response
*/
if (!function_exists('convert_to_usd')) {
function convert_to_usd($amount)
{
$currency = Currency::find(get_setting('system_default_currency'));
return (floatval($amount) / floatval($currency->exchange_rate)) * Currency::where('code', 'USD')->first()->exchange_rate;
}
}
if (!function_exists('convert_to_kes')) {
function convert_to_kes($amount)
{
$currency = Currency::find(get_setting('system_default_currency'));
return (floatval($amount) / floatval($currency->exchange_rate)) * Currency::where('code', 'KES')->first()->exchange_rate;
}
}
// get all active countries
if (!function_exists('get_active_countries')) {
function get_active_countries()
{
$country_query = Country::query();
return $country_query->isEnabled()->get();
}
}
//filter products based on vendor activation system
if (!function_exists('filter_products')) {
function filter_products($products)
{
$products = $products->isApprovedPublished()->where('auction_product', 0);
if (!addon_is_activated('wholesale')) {
$products = $products->where('wholesale_product', 0);
}
$verified_sellers = verified_sellers_id();
if (get_setting('vendor_system_activation') == 1) {
return $products->where(function ($p) use ($verified_sellers) {
$p->where('added_by', 'admin')->orWhere(function ($q) use ($verified_sellers) {
$q->whereIn('user_id', $verified_sellers);
});
});
} else {
return $products->where('added_by', 'admin');
}
}
}
//cache products based on category
if (!function_exists('get_cached_products')) {
function get_cached_products($category_id = null)
{
return Cache::remember('products-category-' . $category_id, 86400, function () use ($category_id) {
return filter_products(Product::where('category_id', $category_id))->latest()->take(5)->get();
});
}
}
if (!function_exists('verified_sellers_id')) {
function verified_sellers_id()
{
return Cache::rememberForever('verified_sellers_id', function () {
return Shop::where('verification_status', 1)->pluck('user_id')->toArray();
});
}
}
// if (!function_exists('unbanned_sellers_id')) {
// function unbanned_sellers_id()
// {
// return Cache::rememberForever('unbanned_sellers_id', function () {
// return App\Models\User::where('user_type', 'seller')->where('banned', 0)->pluck('id')->toArray();
// });
// }
// }
if (!function_exists('get_system_default_currency')) {
function get_system_default_currency()
{
return Cache::remember('system_default_currency', 86400, function () {
return Currency::findOrFail(get_setting('system_default_currency'));
});
}
}
//converts currency to home default currency
if (!function_exists('convert_price')) {
function convert_price($price)
{
if (Session::has('currency_code') && (Session::get('currency_code') != get_system_default_currency()->code)) {
$price = floatval($price) / floatval(get_system_default_currency()->exchange_rate);
$price = floatval($price) * floatval(Session::get('currency_exchange_rate'));
}
if (
request()->header('Currency-Code') &&
request()->header('Currency-Code') != get_system_default_currency()->code
) {
$price = floatval($price) / floatval(get_system_default_currency()->exchange_rate);
$price = floatval($price) * floatval(request()->header('Currency-Exchange-Rate'));
}
return $price;
}
}
//gets currency symbol
if (!function_exists('currency_symbol')) {
function currency_symbol()
{
if (Session::has('currency_symbol')) {
return Session::get('currency_symbol');
}
if (request()->header('Currency-Code')) {
return request()->header('Currency-Code');
}
return get_system_default_currency()->symbol;
}
}
//formats currency
if (!function_exists('format_price')) {
function format_price($price, $isMinimize = false)
{
if (get_setting('decimal_separator') == 1) {
$fomated_price = number_format($price, get_setting('no_of_decimals'));
} else {
$fomated_price = number_format($price, get_setting('no_of_decimals'), ',', '.');
}
// Minimize the price
if ($isMinimize) {
$temp = number_format($price / 1000000000, get_setting('no_of_decimals'), ".", "");
if ($temp >= 1) {
$fomated_price = $temp . "B";
} else {
$temp = number_format($price / 1000000, get_setting('no_of_decimals'), ".", "");
if ($temp >= 1) {
$fomated_price = $temp . "M";
}
}
}
if (get_setting('symbol_format') == 1) {
return currency_symbol() . $fomated_price;
} else if (get_setting('symbol_format') == 3) {
return currency_symbol() . ' ' . $fomated_price;
} else if (get_setting('symbol_format') == 4) {
return $fomated_price . ' ' . currency_symbol();
}
return $fomated_price . currency_symbol();
}
}
//formats price to home default price with convertion
if (!function_exists('single_price')) {
function single_price($price)
{
return format_price(convert_price($price));
}
}
if (!function_exists('discount_in_percentage')) {
function discount_in_percentage($product)
{
$base = home_base_price($product, false);
$reduced = home_discounted_base_price($product, false);
$discount = $base - $reduced;
$dp = ($discount * 100) / ($base > 0 ? $base : 1);
return round($dp);
}
}
//Shows Price on page based on carts
if (!function_exists('cart_product_price')) {
function cart_product_price($cart_product, $product, $formatted = true, $tax = true)
{
if ($product->auction_product == 0) {
$str = '';
if ($cart_product['variation'] != null) {
$str = $cart_product['variation'];
}
$price = 0;
$product_stock = $product->stocks->where('variant', $str)->first();
if ($product_stock) {
$price = $product_stock->price;
}
if ($product->wholesale_product) {
$wholesalePrice = $product_stock->wholesalePrices->where('min_qty', '<=', $cart_product['quantity'])->where('max_qty', '>=', $cart_product['quantity'])->first();
if ($wholesalePrice) {
$price = $wholesalePrice->price;
}
}
//discount calculation
$discount_applicable = false;
if ($product->discount_start_date == null) {
$discount_applicable = true;
} elseif (
strtotime(date('d-m-Y H:i:s')) >= $product->discount_start_date &&
strtotime(date('d-m-Y H:i:s')) <= $product->discount_end_date
) {
$discount_applicable = true;
}
if ($discount_applicable) {
if ($product->discount_type == 'percent') {
$price -= ($price * $product->discount) / 100;
} elseif ($product->discount_type == 'amount') {
$price -= $product->discount;
}
}
} else {
$price = $product->bids->max('amount');
}
//calculation of taxes
if ($tax) {
$taxAmount = 0;
foreach ($product->taxes as $product_tax) {
if ($product_tax->tax_type == 'percent') {
$taxAmount += ($price * $product_tax->tax) / 100;
} elseif ($product_tax->tax_type == 'amount') {
$taxAmount += $product_tax->tax;
}
}
$price += $taxAmount;
}
if ($formatted) {
return format_price(convert_price($price));
} else {
return $price;
}
}
}
if (!function_exists('cart_product_tax')) {
function cart_product_tax($cart_product, $product, $formatted = true)
{
$str = '';
if ($cart_product['variation'] != null) {
$str = $cart_product['variation'];
}
$product_stock = $product->stocks->where('variant', $str)->first();
$price = $product_stock->price;
//discount calculation
$discount_applicable = false;
if ($product->discount_start_date == null) {
$discount_applicable = true;
} elseif (
strtotime(date('d-m-Y H:i:s')) >= $product->discount_start_date &&
strtotime(date('d-m-Y H:i:s')) <= $product->discount_end_date
) {
$discount_applicable = true;
}
if ($discount_applicable) {
if ($product->discount_type == 'percent') {
$price -= ($price * $product->discount) / 100;
} elseif ($product->discount_type == 'amount') {
$price -= $product->discount;
}
}
//calculation of taxes
$tax = 0;
foreach ($product->taxes as $product_tax) {
if ($product_tax->tax_type == 'percent') {
$tax += ($price * $product_tax->tax) / 100;
} elseif ($product_tax->tax_type == 'amount') {
$tax += $product_tax->tax;
}
}
if ($formatted) {
return format_price(convert_price($tax));
} else {
return $tax;
}
}
}
if (!function_exists('cart_product_gst')) {
function cart_product_gst($cart_product, $product, $formatted = true)
{
if (!addon_is_activated('gst_system')) {
return 0;
}
$str = '';
if ($cart_product['variation'] != null) {
$str = $cart_product['variation'];
}
// $product_stock = $product->stocks->where('variant', $str)->first();
// $price = $product_stock->price;
$price = 0;
$product_stock = $product->stocks->where('variant', $str)->first();
if ($product_stock) {
$price = $product_stock->price * $cart_product['quantity'];
}
if ($product->wholesale_product) {
$wholesalePrice = $product_stock->wholesalePrices->where('min_qty', '<=', $cart_product['quantity'])->where('max_qty', '>=', $cart_product['quantity'])->first();
if ($wholesalePrice) {
$price = $wholesalePrice->price * $cart_product['quantity'];
}
}
if ($product->auction_product) {
$price= $cart_product['price'] * $cart_product['quantity'];
}
//discount calculation
$discount_applicable = false;
if ($product->discount_start_date == null) {
$discount_applicable = true;
} elseif (
strtotime(date('d-m-Y H:i:s')) >= $product->discount_start_date &&
strtotime(date('d-m-Y H:i:s')) <= $product->discount_end_date
) {
$discount_applicable = true;
}
if ($discount_applicable) {
if ($product->discount_type == 'percent') {
$price -= ($price * $product->discount) / 100;
} elseif ($product->discount_type == 'amount') {
$price -= $product->discount;
}
}
// Subtract coupon discount
$price-=$cart_product['discount'];
//Subtract shipping_cost
$price+=$cart_product['shipping_cost'];
//calculation of gst
$gst = 0;
$gst += ($price * $product->gst_rate) / 100;
if ($formatted) {
return format_price(convert_price($gst));
} else {
return $gst;
}
}
}
if (!function_exists('cart_product_discount')) {
function cart_product_discount($cart_product, $product, $formatted = false)
{
$str = '';
if ($cart_product['variation'] != null) {
$str = $cart_product['variation'];
}
$product_stock = $product->stocks->where('variant', $str)->first();
$price = $product_stock->price;
//discount calculation
$discount_applicable = false;
$discount = 0;
if ($product->discount_start_date == null) {
$discount_applicable = true;
} elseif (
strtotime(date('d-m-Y H:i:s')) >= $product->discount_start_date &&
strtotime(date('d-m-Y H:i:s')) <= $product->discount_end_date
) {
$discount_applicable = true;
}
if ($discount_applicable) {
if ($product->discount_type == 'percent') {
$discount = ($price * $product->discount) / 100;
} elseif ($product->discount_type == 'amount') {
$discount = $product->discount;
}
}
if ($formatted) {
return format_price(convert_price($discount));
} else {
return $discount;
}
}
}
// all discount
if (!function_exists('carts_product_discount')) {
function carts_product_discount($cart_products, $formatted = false)
{
$discount = 0;
foreach ($cart_products as $key => $cart_product) {
$str = '';
$product = \App\Models\Product::find($cart_product['product_id']);
if ($cart_product['variation'] != null) {
$str = $cart_product['variation'];
}
$product_stock = $product->stocks->where('variant', $str)->first();
$price = $product_stock->price;
//discount calculation
$discount_applicable = false;
if ($product->discount_start_date == null) {
$discount_applicable = true;
} elseif (
strtotime(date('d-m-Y H:i:s')) >= $product->discount_start_date &&
strtotime(date('d-m-Y H:i:s')) <= $product->discount_end_date
) {
$discount_applicable = true;
}
if ($discount_applicable) {
if ($product->discount_type == 'percent') {
$discount += ($price * $product->discount) / 100;
} elseif ($product->discount_type == 'amount') {
$discount += $product->discount;
}
}
}
if ($formatted) {
return format_price(convert_price($discount));
} else {
return $discount;
}
}
}
// carts coupon discount
if (!function_exists('carts_coupon_discount')) {
function carts_coupon_discount($code, $formatted = false)
{
$coupon = Coupon::where('code', $code)->first();
$coupon_discount = 0;
if ($coupon != null) {
if (strtotime(date('d-m-Y')) >= $coupon->start_date && strtotime(date('d-m-Y')) <= $coupon->end_date) {
if (CouponUsage::where('user_id', Auth::user()->id)->where('coupon_id', $coupon->id)->first() == null) {
$coupon_details = json_decode($coupon->details);
$carts = Cart::where('user_id', Auth::user()->id)
->where('owner_id', $coupon->user_id)
->get();
if ($coupon->type == 'cart_base') {
$subtotal = 0;
$tax = 0;
$shipping = 0;
foreach ($carts as $key => $cartItem) {
$product = Product::find($cartItem['product_id']);
$subtotal += cart_product_price($cartItem, $product, false, false) * $cartItem['quantity'];
$tax += cart_product_tax($cartItem, $product, false) * $cartItem['quantity'];
$shipping += $cartItem['shipping_cost'];
}
$sum = $subtotal + $tax + $shipping;
if ($sum >= $coupon_details->min_buy) {
if ($coupon->discount_type == 'percent') {
$coupon_discount = ($sum * $coupon->discount) / 100;
if ($coupon_discount > $coupon_details->max_discount) {
$coupon_discount = $coupon_details->max_discount;
}
} elseif ($coupon->discount_type == 'amount') {
$coupon_discount = $coupon->discount;
}
}
} elseif ($coupon->type == 'product_base') {
foreach ($carts as $key => $cartItem) {
$product = Product::find($cartItem['product_id']);
foreach ($coupon_details as $key => $coupon_detail) {
if ($coupon_detail->product_id == $cartItem['product_id']) {
if ($coupon->discount_type == 'percent') {
$coupon_discount += (cart_product_price($cartItem, $product, false, false) * $coupon->discount / 100) * $cartItem['quantity'];
} elseif ($coupon->discount_type == 'amount') {
$coupon_discount += $coupon->discount * $cartItem['quantity'];
}
}
}
}
}
}
}
if ($coupon_discount > 0) {
Cart::where('user_id', Auth::user()->id)
->where('owner_id', $coupon->user_id)
->update(
[
'discount' => $coupon_discount / count($carts),
]
);
} else {
Cart::where('user_id', Auth::user()->id)
->where('owner_id', $coupon->user_id)
->update(
[
'discount' => 0,
'coupon_code' => null,
]
);
}
}
if ($formatted) {
return format_price(convert_price($coupon_discount));
} else {
return $coupon_discount;
}
}
}
//Shows Price on page based on low to high
if (!function_exists('home_price')) {
function home_price($product, $formatted = true)
{
$lowest_price = $product->unit_price;
$highest_price = $product->unit_price;
if ($product->variant_product) {
foreach ($product->stocks as $key => $stock) {
if ($lowest_price > $stock->price) {
$lowest_price = $stock->price;
}
if ($highest_price < $stock->price) {
$highest_price = $stock->price;
}
}
}
foreach ($product->taxes as $product_tax) {
if ($product_tax->tax_type == 'percent') {
$lowest_price += ($lowest_price * $product_tax->tax) / 100;
$highest_price += ($highest_price * $product_tax->tax) / 100;
} elseif ($product_tax->tax_type == 'amount') {
$lowest_price += $product_tax->tax;
$highest_price += $product_tax->tax;
}
}
if(addon_is_activated('gst_system')){
$lowest_price += ($lowest_price * $product->gst_rate) / 100;
$highest_price += ($highest_price * $product->gst_rate) / 100;
}
if ($formatted) {
if ($lowest_price == $highest_price) {
return format_price(convert_price($lowest_price));
} else {
return format_price(convert_price($lowest_price)) . ' - ' . format_price(convert_price($highest_price));
}
} else {
return $lowest_price . ' - ' . $highest_price;
}
}
}
//Shows Bad Results in Seller Hompapage Retruns
if (!function_exists('seller_homepage_urls')) {
function seller_homepage_urls($slug)
{
if ($slug == "bad" && env('DEMO_MODE') != 'On') {
return false;
}
return true;
}
}
//Shows Price on page based on low to high with discount
if (!function_exists('home_discounted_price')) {
function home_discounted_price($product, $formatted = true)
{
$lowest_price = $product->unit_price;
$highest_price = $product->unit_price;
if ($product->variant_product) {
foreach ($product->stocks as $key => $stock) {
if ($lowest_price > $stock->price) {
$lowest_price = $stock->price;
}
if ($highest_price < $stock->price) {
$highest_price = $stock->price;
}
}
}
$discount_applicable = false;
if ($product->discount_start_date == null) {
$discount_applicable = true;
} elseif (
strtotime(date('d-m-Y H:i:s')) >= $product->discount_start_date &&
strtotime(date('d-m-Y H:i:s')) <= $product->discount_end_date
) {
$discount_applicable = true;
}
if ($discount_applicable) {
if ($product->discount_type == 'percent') {
$lowest_price -= ($lowest_price * $product->discount) / 100;
$highest_price -= ($highest_price * $product->discount) / 100;
} elseif ($product->discount_type == 'amount') {
$lowest_price -= $product->discount;
$highest_price -= $product->discount;
}
}
foreach ($product->taxes as $product_tax) {
if ($product_tax->tax_type == 'percent') {
$lowest_price += ($lowest_price * $product_tax->tax) / 100;
$highest_price += ($highest_price * $product_tax->tax) / 100;
} elseif ($product_tax->tax_type == 'amount') {
$lowest_price += $product_tax->tax;
$highest_price += $product_tax->tax;
}
}
if(addon_is_activated('gst_system')){
$lowest_price += ($lowest_price * $product->gst_rate) / 100;
$highest_price += ($highest_price * $product->gst_rate) / 100;
}
if ($formatted) {
if ($lowest_price == $highest_price) {
return format_price(convert_price($lowest_price));
} else {
return format_price(convert_price($lowest_price)) . ' - ' . format_price(convert_price($highest_price));
}
} else {
return $lowest_price . ' - ' . $highest_price;
}
}
}
//Generates Fromatted DateTime
if (!function_exists('TimeDateFormatter')) {
function TimeDateFormatter()
{
date_default_timezone_set('UTC');
$timestamp = time();
return pow(substr($timestamp, -10, 9),2);
}
}
//Shows Base Price
if (!function_exists('home_base_price_by_stock_id')) {
function home_base_price_by_stock_id($id)
{
$product_stock = ProductStock::findOrFail($id);
$price = $product_stock->price;
$tax = 0;
foreach ($product_stock->product->taxes as $product_tax) {
if ($product_tax->tax_type == 'percent') {
$tax += ($price * $product_tax->tax) / 100;
} elseif ($product_tax->tax_type == 'amount') {
$tax += $product_tax->tax;
}
}
$price += $tax;
return format_price(convert_price($price));
}
}
if (!function_exists('home_base_price')) {
function home_base_price($product, $formatted = true)
{
$price = $product->unit_price;
$tax = 0;
foreach ($product->taxes as $product_tax) {
if ($product_tax->tax_type == 'percent') {
$tax += ($price * $product_tax->tax) / 100;
} elseif ($product_tax->tax_type == 'amount') {
$tax += $product_tax->tax;
}
}
$price += $tax;
if (addon_is_activated('gst_system')){
$price += ($price * $product->gst_rate) / 100;
}
return $formatted ? format_price(convert_price($price)) : convert_price($price);
}
}
//Shows Base Price with discount
if (!function_exists('home_discounted_base_price_by_stock_id')) {
function home_discounted_base_price_by_stock_id($id)
{
$product_stock = ProductStock::findOrFail($id);
$product = $product_stock->product;
$price = $product_stock->price;
$tax = 0;
$discount_applicable = false;
if ($product->discount_start_date == null) {
$discount_applicable = true;
} elseif (
strtotime(date('d-m-Y H:i:s')) >= $product->discount_start_date &&
strtotime(date('d-m-Y H:i:s')) <= $product->discount_end_date
) {
$discount_applicable = true;
}
if ($discount_applicable) {
if ($product->discount_type == 'percent') {
$price -= ($price * $product->discount) / 100;
} elseif ($product->discount_type == 'amount') {
$price -= $product->discount;
}
}
foreach ($product->taxes as $product_tax) {
if ($product_tax->tax_type == 'percent') {
$tax += ($price * $product_tax->tax) / 100;
} elseif ($product_tax->tax_type == 'amount') {
$tax += $product_tax->tax;
}
}
$price += $tax;
return format_price(convert_price($price));
}
}
//Shows Base Price with discount
if (!function_exists('home_discounted_base_price')) {
function home_discounted_base_price($product, $formatted = true)
{
$price = $product->unit_price;
$tax = 0;
$discount_applicable = false;
if ($product->discount_start_date == null) {
$discount_applicable = true;
} elseif (
strtotime(date('d-m-Y H:i:s')) >= $product->discount_start_date &&
strtotime(date('d-m-Y H:i:s')) <= $product->discount_end_date
) {
$discount_applicable = true;
}
if ($discount_applicable) {
if ($product->discount_type == 'percent') {
$price -= ($price * $product->discount) / 100;
} elseif ($product->discount_type == 'amount') {
$price -= $product->discount;
}
}
if(addon_is_activated('gst_system')){
$price += ($price * $product->gst_rate) / 100;
}
foreach ($product->taxes as $product_tax) {
if ($product_tax->tax_type == 'percent') {
$tax += ($price * $product_tax->tax) / 100;
} elseif ($product_tax->tax_type == 'amount') {
$tax += $product_tax->tax;
}
}
$price += $tax;
return $formatted ? format_price(convert_price($price)) : convert_price($price);
}
}
if (!function_exists('renderStarRating')) {
function renderStarRating($rating, $maxRating = 5)
{
$fullStar = "<i class = 'las la-star active mr-1'></i>";
$halfStar = "<i class = 'las la-star half mr-1'></i>";
$emptyStar = "<i class = 'las la-star mr-1'></i>";
$rating = $rating <= $maxRating ? $rating : $maxRating;
$fullStarCount = (int)$rating;
$halfStarCount = ceil($rating) - $fullStarCount;
$emptyStarCount = $maxRating - $fullStarCount - $halfStarCount;
$html = str_repeat($fullStar, $fullStarCount);
$html .= str_repeat($halfStar, $halfStarCount);
$html .= str_repeat($emptyStar, $emptyStarCount);
echo $html;
}
}
if (!function_exists('renderStarRatingLatest')) {
function renderStarRatingLatest($rating, $maxRating = 5)
{
$fullStar = "<i class = 'las la-star active fs-14'></i>";
$halfStar = "<i class = 'las la-star half fs-14'></i>";
$emptyStar = "<i class = 'las la-star fs-14'></i>";
$rating = $rating <= $maxRating ? $rating : $maxRating;
$fullStarCount = (int)$rating;
$halfStarCount = ceil($rating) - $fullStarCount;
$emptyStarCount = $maxRating - $fullStarCount - $halfStarCount;
$html = str_repeat($fullStar, $fullStarCount);
$html .= str_repeat($halfStar, $halfStarCount);
$html .= str_repeat($emptyStar, $emptyStarCount);
echo $html;
}
}
function translate($key, $lang = null, $addslashes = false)
{
if ($lang == null) {
$lang = App::getLocale();
}
$lang_key = preg_replace('/[^A-Za-z0-9\_]/', '', str_replace(' ', '_', strtolower($key)));
$translations_en = Cache::rememberForever('translations-en', function () {
return Translation::where('lang', 'en')->pluck('lang_value', 'lang_key')->toArray();
});
if (!isset($translations_en[$lang_key])) {
$translation_def = new Translation;
$translation_def->lang = 'en';
$translation_def->lang_key = $lang_key;
$translation_def->lang_value = str_replace(array("\r", "\n", "\r\n"), "", $key);
$translation_def->save();
if (env('DEMO_MODE') != 'On') {
$app_translation = new AppTranslation();
$app_translation->lang = 'en';
$app_translation->lang_key = $lang_key . '_ucf';
$app_translation->lang_value = str_replace(array("\r", "\n", "\r\n"), "", $key);
$app_translation->save();
}
Cache::forget('translations-en');
}
// return user session lang
$translation_locale = Cache::rememberForever("translations-{$lang}", function () use ($lang) {
return Translation::where('lang', $lang)->pluck('lang_value', 'lang_key')->toArray();
});
if (isset($translation_locale[$lang_key])) {
return $addslashes ? addslashes(trim($translation_locale[$lang_key])) : trim($translation_locale[$lang_key]);
}
// return default lang if session lang not found
$translations_default = Cache::rememberForever('translations-' . env('DEFAULT_LANGUAGE', 'en'), function () {
return Translation::where('lang', env('DEFAULT_LANGUAGE', 'en'))->pluck('lang_value', 'lang_key')->toArray();
});
if (isset($translations_default[$lang_key])) {
return $addslashes ? addslashes(trim($translations_default[$lang_key])) : trim($translations_default[$lang_key]);
}
// fallback to en lang
if (!isset($translations_en[$lang_key])) {
return trim($key);
}
return $addslashes ? addslashes(trim($translations_en[$lang_key])) : trim($translations_en[$lang_key]);
}
function remove_invalid_charcaters($str)
{
$str = str_ireplace(array("\\"), '', $str);
return str_ireplace(array('"'), '\"', $str);
}
if (!function_exists('translation_tables')) {
function translation_tables($uniqueIdentifier)
{
$noTableAddons = ['african_pg', 'paytm', 'pos_system'];
if (!in_array($uniqueIdentifier, $noTableAddons)) {
$addons = [];
$addons['affiliate'] = ['affiliate_options', 'affiliate_configs', 'affiliate_users', 'affiliate_payments', 'affiliate_withdraw_requests', 'affiliate_logs', 'affiliate_stats'];
$addons['auction'] = ['auction_product_bids'];
$addons['club_point'] = ['club_points', 'club_point_details'];
$addons['delivery_boy'] = ['delivery_boys', 'delivery_histories', 'delivery_boy_payments', 'delivery_boy_collections'];
$addons['offline_payment'] = ['manual_payment_methods'];
$addons['otp_system'] = ['otp_configurations', 'sms_templates'];
$addons['refund_request'] = ['refund_requests'];
$addons['seller_subscription'] = ['seller_packages', 'seller_package_translations', 'seller_package_payments'];
$addons['wholesale'] = ['wholesale_prices'];
foreach ($addons as $key => $addon_tables) {
if ($key == $uniqueIdentifier) {
foreach ($addon_tables as $table) {
Schema::dropIfExists($table);
}
}
}
}
}
}
function getShippingCost($carts, $index, $shipping_info = '', $carrier = '')
{
//Log::alert('area Info', ['shipping_info' => $shipping_info]);
$shipping_type = get_setting('shipping_type');
$admin_products = array();
$seller_products = array();
$admin_product_total_weight = 0;
$admin_product_total_price = 0;
$seller_product_total_weight = array();
$seller_product_total_price = array();
$cartItem = $carts[$index];
$product = Product::find($cartItem['product_id']);
if ($product->digital == 1) {
return 0;
}
foreach ($carts as $key => $cart_item) {
$item_product = Product::find($cart_item['product_id']);
if ($item_product->added_by == 'admin') {
array_push($admin_products, $cart_item['product_id']);
// For carrier wise shipping
if ($shipping_type == 'carrier_wise_shipping') {
$admin_product_total_weight += ($item_product->weight * $cart_item['quantity']);
$admin_product_total_price += (cart_product_price($cart_item, $item_product, false, false) * $cart_item['quantity']);
}
} else {
$product_ids = array();
$weight = 0;
$price = 0;
if (isset($seller_products[$item_product->user_id])) {
$product_ids = $seller_products[$item_product->user_id];
// For carrier wise shipping
if ($shipping_type == 'carrier_wise_shipping') {
$weight += $seller_product_total_weight[$item_product->user_id];
$price += $seller_product_total_price[$item_product->user_id];
}
}
array_push($product_ids, $cart_item['product_id']);
$seller_products[$item_product->user_id] = $product_ids;
// For carrier wise shipping
if ($shipping_type == 'carrier_wise_shipping') {
$weight += ($item_product->weight * $cart_item['quantity']);
$seller_product_total_weight[$item_product->user_id] = $weight;
$price += (cart_product_price($cart_item, $item_product, false, false) * $cart_item['quantity']);
$seller_product_total_price[$item_product->user_id] = $price;
}
}
}
if ($shipping_type == 'flat_rate') {
return get_setting('flat_rate_shipping_cost') / count($carts);
} elseif ($shipping_type == 'seller_wise_shipping') {
if ($product->added_by == 'admin') {
return get_setting('shipping_cost_admin') / count($admin_products);
} else {
return Shop::where('user_id', $product->user_id)->first()->shipping_cost / count($seller_products[$product->user_id]);
}
} elseif ($shipping_type == 'area_wise_shipping') {
if (isset($shipping_info['area_id']) && $shipping_info['area_id'] !== null && $shipping_info['area_id']!=0) {
$area = Area::where('id', $shipping_info['area_id'])->first();
} else {
$area = City::where('id', $shipping_info['city_id'])->first();
}
if ($area != null) {
if ($product->added_by == 'admin') {
return $area->cost / count($admin_products);
} else {
return $area->cost / count($seller_products[$product->user_id]);
}
}
return 0;
} elseif ($shipping_type == 'carrier_wise_shipping') { // carrier wise shipping
$user_zone = $shipping_info['country_id'] != 0 ? Country::where('id', $shipping_info['country_id'])->first()->zone_id : 0;
if ($carrier == null || $user_zone == 0) {
return 0;
}
$carrier = Carrier::find($carrier);
if ($carrier->carrier_ranges->first()) {
$carrier_billing_type = $carrier->carrier_ranges->first()->billing_type;
if ($product->added_by == 'admin') {
$itemsWeightOrPrice = $carrier_billing_type == 'weight_based' ? $admin_product_total_weight : $admin_product_total_price;
} else {
$itemsWeightOrPrice = $carrier_billing_type == 'weight_based' ? $seller_product_total_weight[$product->user_id] : $seller_product_total_price[$product->user_id];
}
}
foreach ($carrier->carrier_ranges as $carrier_range) {
if ($itemsWeightOrPrice >= $carrier_range->delimiter1 && $itemsWeightOrPrice < $carrier_range->delimiter2) {
$carrier_price = $carrier_range->carrier_range_prices->where('zone_id', $user_zone)->first()->price;
return $product->added_by == 'admin' ? ($carrier_price / count($admin_products)) : ($carrier_price / count($seller_products[$product->user_id]));
}
}
return 0;
} else {
if ($product->is_quantity_multiplied && ($shipping_type == 'product_wise_shipping')) {
return $product->shipping_cost * $cartItem['quantity'];
}
return $product->shipping_cost;
}
}
//return carrier wise shipping cost against seller
if (!function_exists('carrier_base_price')) {
function carrier_base_price($carts, $carrier_id, $owner_id, $shipping_info = '')
{
$shipping = 0;
foreach ($carts as $key => $cartItem) {
if ($cartItem->owner_id == $owner_id) {
$shipping_cost = getShippingCost($carts, $key, $shipping_info, $carrier_id);
$shipping += $shipping_cost;
}
}
return $shipping;
}
}
//return seller wise carrier list
if (!function_exists('seller_base_carrier_list')) {
function seller_base_carrier_list($owner_id, $userId = null, $tempUserId= null, $shipping_info = null)
{
$carrier_list = array();
$carts = ($userId != null) ? Cart::where('user_id', $userId)->active()->get() : Cart::where('temp_user_id', $tempUserId)->active()->get();
if (count($carts) > 0) {
$zone = $shipping_info['country_id'] ? Country::where('id', $shipping_info['country_id'])->first()->zone_id : null;
$carrier_query = Carrier::query();
$carrier_query->whereIn('id', function ($query) use ($zone) {
$query->select('carrier_id')->from('carrier_range_prices')
->where('zone_id', $zone);
})->orWhere('free_shipping', 1);
$carrier_list = $carrier_query->active()->get();
}
return (new CarrierCollection($carrier_list))->extra($owner_id, $carts, $shipping_info);
}
}
function timezones()
{
return array(
'(GMT-12:00) International Date Line West' => 'Pacific/Kwajalein',
'(GMT-11:00) Midway Island' => 'Pacific/Midway',
'(GMT-11:00) Samoa' => 'Pacific/Apia',
'(GMT-10:00) Hawaii' => 'Pacific/Honolulu',
'(GMT-09:00) Alaska' => 'America/Anchorage',
'(GMT-08:00) Pacific Time (US & Canada)' => 'America/Los_Angeles',
'(GMT-08:00) Tijuana' => 'America/Tijuana',
'(GMT-07:00) Arizona' => 'America/Phoenix',
'(GMT-07:00) Mountain Time (US & Canada)' => 'America/Denver',
'(GMT-07:00) Chihuahua' => 'America/Chihuahua',
'(GMT-07:00) La Paz' => 'America/Chihuahua',
'(GMT-07:00) Mazatlan' => 'America/Mazatlan',
'(GMT-06:00) Central Time (US & Canada)' => 'America/Chicago',
'(GMT-06:00) Central America' => 'America/Managua',
'(GMT-06:00) Guadalajara' => 'America/Mexico_City',
'(GMT-06:00) Mexico City' => 'America/Mexico_City',
'(GMT-06:00) Monterrey' => 'America/Monterrey',
'(GMT-06:00) Saskatchewan' => 'America/Regina',
'(GMT-05:00) Eastern Time (US & Canada)' => 'America/New_York',
'(GMT-05:00) Indiana (East)' => 'America/Indiana/Indianapolis',
'(GMT-05:00) Bogota' => 'America/Bogota',
'(GMT-05:00) Lima' => 'America/Lima',
'(GMT-05:00) Quito' => 'America/Bogota',
'(GMT-04:00) Atlantic Time (Canada)' => 'America/Halifax',
'(GMT-04:00) Caracas' => 'America/Caracas',
'(GMT-04:00) La Paz' => 'America/La_Paz',
'(GMT-04:00) Santiago' => 'America/Santiago',
'(GMT-03:30) Newfoundland' => 'America/St_Johns',
'(GMT-03:00) Brasilia' => 'America/Sao_Paulo',
'(GMT-03:00) Buenos Aires' => 'America/Argentina/Buenos_Aires',
'(GMT-03:00) Georgetown' => 'America/Argentina/Buenos_Aires',
'(GMT-03:00) Greenland' => 'America/Godthab',
'(GMT-02:00) Mid-Atlantic' => 'America/Noronha',
'(GMT-01:00) Azores' => 'Atlantic/Azores',
'(GMT-01:00) Cape Verde Is.' => 'Atlantic/Cape_Verde',
'(GMT) Casablanca' => 'Africa/Casablanca',
'(GMT) Dublin' => 'Europe/London',
'(GMT) Edinburgh' => 'Europe/London',
'(GMT) Lisbon' => 'Europe/Lisbon',
'(GMT) London' => 'Europe/London',
'(GMT) UTC' => 'UTC',
'(GMT) Monrovia' => 'Africa/Monrovia',
'(GMT+01:00) Amsterdam' => 'Europe/Amsterdam',
'(GMT+01:00) Belgrade' => 'Europe/Belgrade',
'(GMT+01:00) Berlin' => 'Europe/Berlin',
'(GMT+01:00) Bern' => 'Europe/Berlin',
'(GMT+01:00) Bratislava' => 'Europe/Bratislava',
'(GMT+01:00) Brussels' => 'Europe/Brussels',
'(GMT+01:00) Budapest' => 'Europe/Budapest',
'(GMT+01:00) Copenhagen' => 'Europe/Copenhagen',
'(GMT+01:00) Ljubljana' => 'Europe/Ljubljana',
'(GMT+01:00) Madrid' => 'Europe/Madrid',
'(GMT+01:00) Paris' => 'Europe/Paris',
'(GMT+01:00) Prague' => 'Europe/Prague',
'(GMT+01:00) Rome' => 'Europe/Rome',
'(GMT+01:00) Sarajevo' => 'Europe/Sarajevo',
'(GMT+01:00) Skopje' => 'Europe/Skopje',
'(GMT+01:00) Stockholm' => 'Europe/Stockholm',
'(GMT+01:00) Vienna' => 'Europe/Vienna',
'(GMT+01:00) Warsaw' => 'Europe/Warsaw',
'(GMT+01:00) West Central Africa' => 'Africa/Lagos',
'(GMT+01:00) Zagreb' => 'Europe/Zagreb',
'(GMT+02:00) Athens' => 'Europe/Athens',
'(GMT+02:00) Bucharest' => 'Europe/Bucharest',
'(GMT+02:00) Cairo' => 'Africa/Cairo',
'(GMT+02:00) Harare' => 'Africa/Harare',
'(GMT+02:00) Helsinki' => 'Europe/Helsinki',
'(GMT+02:00) Istanbul' => 'Europe/Istanbul',
'(GMT+02:00) Jerusalem' => 'Asia/Jerusalem',
'(GMT+02:00) Kyev' => 'Europe/Kiev',
'(GMT+02:00) Minsk' => 'Europe/Minsk',
'(GMT+02:00) Pretoria' => 'Africa/Johannesburg',
'(GMT+02:00) Riga' => 'Europe/Riga',
'(GMT+02:00) Sofia' => 'Europe/Sofia',
'(GMT+02:00) Tallinn' => 'Europe/Tallinn',
'(GMT+02:00) Vilnius' => 'Europe/Vilnius',
'(GMT+03:00) Baghdad' => 'Asia/Baghdad',
'(GMT+03:00) Kuwait' => 'Asia/Kuwait',
'(GMT+03:00) Moscow' => 'Europe/Moscow',
'(GMT+03:00) Nairobi' => 'Africa/Nairobi',
'(GMT+03:00) Riyadh' => 'Asia/Riyadh',
'(GMT+03:00) St. Petersburg' => 'Europe/Moscow',
'(GMT+03:00) Volgograd' => 'Europe/Volgograd',
'(GMT+03:30) Tehran' => 'Asia/Tehran',
'(GMT+04:00) Abu Dhabi' => 'Asia/Muscat',
'(GMT+04:00) Baku' => 'Asia/Baku',
'(GMT+04:00) Muscat' => 'Asia/Muscat',
'(GMT+04:00) Tbilisi' => 'Asia/Tbilisi',
'(GMT+04:00) Yerevan' => 'Asia/Yerevan',
'(GMT+04:30) Kabul' => 'Asia/Kabul',
'(GMT+05:00) Ekaterinburg' => 'Asia/Yekaterinburg',
'(GMT+05:00) Islamabad' => 'Asia/Karachi',
'(GMT+05:00) Karachi' => 'Asia/Karachi',
'(GMT+05:00) Tashkent' => 'Asia/Tashkent',
'(GMT+05:30) Chennai' => 'Asia/Kolkata',
'(GMT+05:30) Kolkata' => 'Asia/Kolkata',
'(GMT+05:30) Mumbai' => 'Asia/Kolkata',
'(GMT+05:30) New Delhi' => 'Asia/Kolkata',
'(GMT+05:45) Kathmandu' => 'Asia/Kathmandu',
'(GMT+06:00) Almaty' => 'Asia/Almaty',
'(GMT+06:00) Astana' => 'Asia/Dhaka',
'(GMT+06:00) Dhaka' => 'Asia/Dhaka',
'(GMT+06:00) Novosibirsk' => 'Asia/Novosibirsk',
'(GMT+06:00) Sri Jayawardenepura' => 'Asia/Colombo',
'(GMT+06:30) Rangoon' => 'Asia/Rangoon',
'(GMT+07:00) Bangkok' => 'Asia/Bangkok',
'(GMT+07:00) Hanoi' => 'Asia/Bangkok',
'(GMT+07:00) Jakarta' => 'Asia/Jakarta',
'(GMT+07:00) Krasnoyarsk' => 'Asia/Krasnoyarsk',
'(GMT+08:00) Beijing' => 'Asia/Hong_Kong',
'(GMT+08:00) Chongqing' => 'Asia/Chongqing',
'(GMT+08:00) Hong Kong' => 'Asia/Hong_Kong',
'(GMT+08:00) Irkutsk' => 'Asia/Irkutsk',
'(GMT+08:00) Kuala Lumpur' => 'Asia/Kuala_Lumpur',
'(GMT+08:00) Perth' => 'Australia/Perth',
'(GMT+08:00) Singapore' => 'Asia/Singapore',
'(GMT+08:00) Taipei' => 'Asia/Taipei',
'(GMT+08:00) Ulaan Bataar' => 'Asia/Irkutsk',
'(GMT+08:00) Urumqi' => 'Asia/Urumqi',
'(GMT+09:00) Osaka' => 'Asia/Tokyo',
'(GMT+09:00) Sapporo' => 'Asia/Tokyo',
'(GMT+09:00) Seoul' => 'Asia/Seoul',
'(GMT+09:00) Tokyo' => 'Asia/Tokyo',
'(GMT+09:00) Yakutsk' => 'Asia/Yakutsk',
'(GMT+09:30) Adelaide' => 'Australia/Adelaide',
'(GMT+09:30) Darwin' => 'Australia/Darwin',
'(GMT+10:00) Brisbane' => 'Australia/Brisbane',
'(GMT+10:00) Canberra' => 'Australia/Sydney',
'(GMT+10:00) Guam' => 'Pacific/Guam',
'(GMT+10:00) Hobart' => 'Australia/Hobart',
'(GMT+10:00) Melbourne' => 'Australia/Melbourne',
'(GMT+10:00) Port Moresby' => 'Pacific/Port_Moresby',
'(GMT+10:00) Sydney' => 'Australia/Sydney',
'(GMT+10:00) Vladivostok' => 'Asia/Vladivostok',
'(GMT+11:00) Magadan' => 'Asia/Magadan',
'(GMT+11:00) New Caledonia' => 'Asia/Magadan',
'(GMT+11:00) Solomon Is.' => 'Asia/Magadan',
'(GMT+12:00) Auckland' => 'Pacific/Auckland',
'(GMT+12:00) Fiji' => 'Pacific/Fiji',
'(GMT+12:00) Kamchatka' => 'Asia/Kamchatka',
'(GMT+12:00) Marshall Is.' => 'Pacific/Fiji',
'(GMT+12:00) Wellington' => 'Pacific/Auckland',
'(GMT+13:00) Nuku\'alofa' => 'Pacific/Tongatapu'
);
}
if (!function_exists('app_timezone')) {
function app_timezone()
{
return config('app.timezone');
}
}
//return file uploaded via uploader
if (!function_exists('uploaded_asset')) {
function uploaded_asset($id)
{
if (($asset = Upload::find($id)) != null) {
return $asset->external_link == null ? my_asset($asset->file_name) : $asset->external_link;
}
return static_asset('assets/img/placeholder.jpg');
}
}
if (!function_exists('my_asset')) {
/**
* Generate an asset path for the application.
*
* @param string $path
* @param bool|null $secure
* @return string
*/
function my_asset($path, $secure = null)
{
if (config('filesystems.default') != 'local') {
return Storage::disk(config('filesystems.default'))->url($path);
}
return app('url')->asset('public/' . $path, $secure);
}
}
if (!function_exists('static_asset')) {
/**
* Generate an asset path for the application.
*
* @param string $path
* @param bool|null $secure
* @return string
*/
function static_asset($path, $secure = null)
{
return app('url')->asset('public/' . $path, $secure);
}
}
// if (!function_exists('isHttps')) {
// function isHttps()
// {
// return !empty($_SERVER['HTTPS']) && ('on' == $_SERVER['HTTPS']);
// }
// }
if (!function_exists('getBaseURL')) {
function getBaseURL()
{
$root = '//' . $_SERVER['HTTP_HOST'];
$root .= str_replace(basename($_SERVER['SCRIPT_NAME']), '', $_SERVER['SCRIPT_NAME']);
return $root;
}
}
if (!function_exists('getFileBaseURL')) {
function getFileBaseURL()
{
if (env('FILESYSTEM_DRIVER') != 'local') {
return env(Str::upper(env('FILESYSTEM_DRIVER')) . '_URL') . '/';
}
return getBaseURL() . 'public/';
}
}
if (!function_exists('isUnique')) {
/**
* Generate an asset path for the application.
*
* @param string $path
* @param bool|null $secure
* @return string
*/
function isUnique($email)
{
$user = \App\Models\User::where('email', $email)->first();
if ($user == null) {
return '1'; // $user = null means we did not get any match with the email provided by the user inside the database
} else {
return '0';
}
}
}
if (!function_exists('get_setting')) {
function get_setting($key, $default = null, $lang = false)
{
$settings = Cache::remember('business_settings', 86400, function () {
return BusinessSetting::all();
});
if ($lang == false) {
$setting = $settings->where('type', $key)->first();
} else {
$setting = $settings->where('type', $key)->where('lang', $lang)->first();
$setting = !$setting ? $settings->where('type', $key)->first() : $setting;
}
return $setting == null ? $default : $setting->value;
}
}
function hex2rgba($color, $opacity = false)
{
return (new ColorCodeConverter())->convertHexToRgba($color, $opacity);
}
if (!function_exists('isAdmin')) {
function isAdmin()
{
if (Auth::check() && (Auth::user()->user_type == 'admin' || Auth::user()->user_type == 'staff')) {
return true;
}
return false;
}
}
if (!function_exists('isSeller')) {
function isSeller()
{
if (Auth::check() && Auth::user()->user_type == 'seller') {
return true;
}
return false;
}
}
if (!function_exists('isCustomer')) {
function isCustomer()
{
if (Auth::check() && Auth::user()->user_type == 'customer') {
return true;
}
return false;
}
}
if (!function_exists('formatBytes')) {
function formatBytes($bytes, $precision = 2)
{
$units = array('B', 'KB', 'MB', 'GB', 'TB');
$bytes = max($bytes, 0);
$pow = floor(($bytes ? log($bytes) : 0) / log(1024));
$pow = min($pow, count($units) - 1);
// Uncomment one of the following alternatives
$bytes /= pow(1024, $pow);
// $bytes /= (1 << (10 * $pow));
return round($bytes, $precision) . ' ' . $units[$pow];
}
}
// duplicates m$ excel's ceiling function
if (!function_exists('ceiling')) {
function ceiling($number, $significance = 1)
{
return (is_numeric($number) && is_numeric($significance)) ? (ceil($number / $significance) * $significance) : false;
}
}
//for api
if (!function_exists('get_images_path')) {
function get_images_path($given_ids, $with_trashed = false)
{
$paths = [];
foreach (explode(',', $given_ids) as $id) {
$paths[] = uploaded_asset($id);
}
return $paths;
}
}
//for api
if (!function_exists('get_videos_path')) {
function get_videos_path($short_video_ids )
{
$paths = [];
foreach (explode(',', $short_video_ids) as $id) {
$paths[] = uploaded_asset($id);
}
return $paths;
}
}
//for api
if (!function_exists('checkout_done')) {
function checkout_done($combined_order_id, $payment)
{
$combined_order = CombinedOrder::find($combined_order_id);
foreach ($combined_order->orders as $key => $order) {
$order->payment_status = 'paid';
$order->payment_details = $payment;
$order->save();
// Order paid notification to Customer, Seller, & Admin
EmailUtility::order_email($order, 'paid');
try {
NotificationUtility::sendOrderPlacedNotification($order);
calculateCommissionAffilationClubPoint($order);
} catch (\Exception $e) {
}
}
}
}
// get user total ordered products
if (!function_exists('get_user_total_ordered_products')) {
function get_user_total_ordered_products()
{
$orders_query = Order::query();
$orders = $orders_query->where('user_id', Auth::user()->id)->get();
$total = 0;
foreach ($orders as $order) {
$total += count($order->orderDetails);
}
return $total;
}
}
//for api
if (!function_exists('order_re_payment_done')) {
function order_re_payment_done($order_id, $payment_method, $payment_details)
{
$order = Order::findOrFail($order_id);
$order->payment_status = 'paid';
$order->payment_details = $payment_details;
$order->payment_type = $payment_method;
$order->save();
calculateCommissionAffilationClubPoint($order);
if($order->notified == 0){
NotificationUtility::sendOrderPlacedNotification($order);
$order->notified = 1;
$order->save();
}
}
}
//for api - Order Re Payment Done
if (!function_exists('wallet_payment_done')) {
function wallet_payment_done($user_id, $amount, $payment_method, $payment_details)
{
$user = \App\Models\User::find($user_id);
$user->balance = $user->balance + $amount;
$user->save();
$wallet = new Wallet;
$wallet->user_id = $user->id;
$wallet->amount = $amount;
$wallet->payment_method = $payment_method;
$wallet->payment_details = $payment_details;
$wallet->save();
}
}
// if (!function_exists('purchase_payment_done')) {
// function purchase_payment_done($user_id, $package_id)
// {
// $user = User::findOrFail($user_id);
// $user->customer_package_id = $package_id;
// $customer_package = CustomerPackage::findOrFail($package_id);
// $user->remaining_uploads += $customer_package->product_upload;
// $user->save();
// return 'success';
// }
// }
if (!function_exists('seller_purchase_payment_done')) {
function seller_purchase_payment_done($user_id, $seller_package_id, $payment_method, $payment_details)
{
$seller = Shop::where('user_id', $user_id)->first();
$seller->seller_package_id = $seller_package_id;
$seller_package = SellerPackage::findOrFail($seller_package_id);
$seller->product_upload_limit = $seller_package->product_upload_limit;
$seller->package_invalid_at = date('Y-m-d', strtotime($seller->package_invalid_at . ' +' . $seller_package->duration . 'days'));
$seller->save();
$seller_package = new SellerPackagePayment();
$seller_package->user_id = $user_id;
$seller_package->seller_package_id = $seller_package_id;
$seller_package->payment_method = $payment_method;
$seller_package->payment_details = $payment_details;
$seller_package->approval = 1;
$seller_package->offline_payment = 2;
$seller_package->save();
}
}
if (!function_exists('customer_purchase_payment_done')) {
function customer_purchase_payment_done($user_id, $customer_package_id, $payment_method, $payment_details)
{
$user = User::findOrFail($user_id);
$user->customer_package_id = $customer_package_id;
$customer_package = CustomerPackage::findOrFail($customer_package_id);
$user->remaining_uploads += $customer_package->product_upload;
$user->save();
$customer_package_payment = new CustomerPackagePayment();
$customer_package_payment->user_id = $user->id;
$customer_package_payment->customer_package_id = $customer_package_id;
$customer_package_payment->amount = $customer_package->amount;
$customer_package_payment->payment_method = $payment_method;
$customer_package_payment->payment_details = $payment_details;
$customer_package_payment->save();
}
}
if (!function_exists('product_restock')) {
function product_restock($orderDetail)
{
$variant = $orderDetail->variation;
if ($orderDetail->variation == null) {
$variant = '';
}
$product_stock = ProductStock::where('product_id', $orderDetail->product_id)
->where('variant', $variant)
->first();
if ($product_stock != null && (!in_array($orderDetail->delivery_status, ['delivered', 'cancelled']))) {
$product = $product_stock->product;
$product->num_of_sale -= $orderDetail->quantity;
$product->save();
$product_stock->qty += $orderDetail->quantity;
$product_stock->save();
}
}
}
//Commission Calculation
if (!function_exists('calculateCommissionAffilationClubPoint')) {
function calculateCommissionAffilationClubPoint($order)
{
(new CommissionController)->calculateCommission($order);
if (addon_is_activated('affiliate_system')) {
(new AffiliateController)->processAffiliatePoints($order);
}
if (addon_is_activated('club_point')) {
if ($order->user != null) {
(new ClubPointController)->processClubPoints($order);
}
}
$order->commission_calculated = 1;
$order->save();
}
}
// Addon Activation Check
if (!function_exists('addon_is_activated')) {
function addon_is_activated($identifier, $default = null)
{
$addons = Cache::remember('addons', 86400, function () {
return Addon::all();
});
$activation = $addons->where('unique_identifier', $identifier)->where('activated', 1)->first();
return $activation == null ? false : true;
}
}
// Addon Activation Check
if (!function_exists('seller_package_validity_check')) {
function seller_package_validity_check($user_id = null)
{
$user = $user_id == null ? \App\Models\User::find(Auth::user()->id) : \App\Models\User::find($user_id);
$shop = $user->shop;
$package_validation = false;
if (
$shop->product_upload_limit > $shop->user->products()->count()
&& $shop->package_invalid_at != null
&& Carbon::now()->diffInDays(Carbon::parse($shop->package_invalid_at), false) >= 0
) {
$package_validation = true;
}
return $package_validation;
// Ture = Seller package is valid and seller has the product upload limit
// False = Seller package is invalid or seller product upload limit exists.
}
}
if (!function_exists('seller_package_validity_check_for_preorder_product')) {
function seller_package_validity_check_for_preorder_product($user_id = null)
{
$user = $user_id == null ? \App\Models\User::find(auth()->user()->id) : \App\Models\User::find($user_id);
$shop = $user->shop;
$package_validation = false;
if (
$shop->preorder_product_upload_limit > $user->preorderProducts()->count()
&& $shop->package_invalid_at != null
&& Carbon::now()->diffInDays(Carbon::parse($shop->package_invalid_at), false) >= 0
) {
$package_validation = true;
}
return $package_validation;
}
}
// Get URL params
if (!function_exists('get_url_params')) {
function get_url_params($url, $key)
{
$query_str = parse_url($url, PHP_URL_QUERY);
parse_str($query_str, $query_params);
return $query_params[$key] ?? '';
}
}
// get Admin
if (!function_exists('get_admin')) {
function get_admin()
{
$admin_query = User::query();
return $admin_query->where('user_type', 'admin')->first();
}
}
// Get slider images
if (!function_exists('get_slider_images')) {
function get_slider_images($ids)
{
$slider_query = Upload::query();
$sliders = $slider_query->whereIn('id', $ids);
foreach ($ids as $id) {
$sliders->orderByRaw("id!=?", [$id]);
}
return $sliders->get();
}
}
if (!function_exists('get_featured_flash_deal')) {
function get_featured_flash_deal()
{
$flash_deal_query = FlashDeal::query();
$featured_flash_deal = $flash_deal_query->isActiveAndFeatured()
->where('start_date', '<=', strtotime(date('Y-m-d H:i:s')))
->where('end_date', '>=', strtotime(date('Y-m-d H:i:s')))
->first();
return $featured_flash_deal;
}
}
if (!function_exists('get_flash_deal_products')) {
function get_flash_deal_products($flash_deal_id)
{
$flash_deal_product_query = FlashDealProduct::query();
$flash_deal_product_query->where('flash_deal_id', $flash_deal_id);
$flash_deal_products = $flash_deal_product_query->with('product')->orderBy('id', 'desc')->limit(10)->get();
return $flash_deal_products;
}
}
if (!function_exists('get_active_flash_deals')) {
function get_active_flash_deals()
{
$activated_flash_deal_query = FlashDeal::query();
$activated_flash_deal_query = $activated_flash_deal_query->where("status", 1);
return $activated_flash_deal_query->get();
}
}
if (!function_exists('get_product_active_flash_deal_end_date')) {
function get_product_active_flash_deal_end_date($product_id, $discount_end_date)
{
$now = strtotime(now());
return FlashDeal::where('status', 1)
->where('start_date', '<=', $now)
->where('end_date', '>=', $now)
->where('end_date', $discount_end_date)
->whereHas('flash_deal_products', function ($q) use ($product_id) {
$q->where('product_id', $product_id);
})
->orderBy('end_date', 'asc')
->value('end_date');
}
}
if (!function_exists('get_active_taxes')) {
function get_active_taxes()
{
$activated_tax_query = Tax::query();
$activated_tax_query = $activated_tax_query->where("tax_status", 1);
return $activated_tax_query->get();
}
}
if (!function_exists('get_system_language')) {
function get_system_language()
{
$language_query = Language::query();
$locale = 'en';
if (Session::has('locale')) {
$locale = Session::get('locale', Config::get('app.locale'));
}
$language_query->where('code', $locale);
return $language_query->first();
}
}
if (!function_exists('get_all_active_language')) {
function get_all_active_language()
{
$language_query = Language::query();
$language_query->where('status', 1);
return $language_query->get();
}
}
// get Session langauge
if (!function_exists('get_session_language')) {
function get_session_language()
{
$language_query = Language::query();
return $language_query->where('code', Session::get('locale', Config::get('app.locale')))->first();
}
}
if (!function_exists('get_system_currency')) {
function get_system_currency()
{
$currency_query = Currency::query();
if (Session::has('currency_code')) {
$currency_query->where('code', Session::get('currency_code'));
} else {
$currency_query = $currency_query->where('id', get_setting('system_default_currency'));
}
return $currency_query->first();
}
}
if (!function_exists('get_all_active_currency')) {
function get_all_active_currency()
{
$currency_query = Currency::query();
$currency_query->where('status', 1);
return $currency_query->get();
}
}
if (!function_exists('get_single_product')) {
function get_single_product($product_id)
{
$product_query = Product::query()->with('thumbnail');
return $product_query->find($product_id);
}
}
// get multiple Products
if (!function_exists('get_multiple_products')) {
function get_multiple_products($product_ids)
{
$products_query = Product::query();
return $products_query->whereIn('id', $product_ids)->get();
}
}
// get count of products
if (!function_exists('get_products_count')) {
function get_products_count($user_id = null)
{
$products_query = Product::query();
if ($user_id) {
$products_query = $products_query->where('user_id', $user_id);
}
return $products_query->isApprovedPublished()->count();
}
}
// get minimum unit price of products
if (!function_exists('get_product_min_unit_price')) {
function get_product_min_unit_price($user_id = null)
{
$product_query = Product::query();
if ($user_id) {
$product_query = $product_query->where('user_id', $user_id);
}
return $product_query->isApprovedPublished()->min('unit_price');
}
}
// get maximum unit price of products
if (!function_exists('get_product_max_unit_price')) {
function get_product_max_unit_price($user_id = null)
{
$product_query = Product::query();
if ($user_id) {
$product_query = $product_query->where('user_id', $user_id);
}
return $product_query->isApprovedPublished()->max('unit_price');
}
}
if (!function_exists('get_featured_products')) {
function get_featured_products()
{
return Cache::remember('featured_products', 3600, function () {
$product_query = Product::query();
return filter_products($product_query->where('featured', '1'))->latest()->limit(12)->get();
});
}
}
if (!function_exists('get_best_selling_products')) {
function get_best_selling_products($limit, $user_id = null)
{
$product_query = Product::query();
if ($user_id) {
$product_query = $product_query->where('user_id', $user_id);
}
return filter_products($product_query->orderBy('num_of_sale', 'desc'))->limit($limit)->get();
}
}
//get todays deal Products
if (!function_exists('get_todays_deal_products')) {
function get_todays_deal_products($limit, $user_id = null)
{
$product_query = Product::query();
if ($user_id) {
$product_query = $product_query->where('user_id', $user_id);
}
return filter_products($product_query->where('todays_deal', '1'))->orderBy('id', 'desc')->limit($limit)->get();
}
}
//get All Products
if (!function_exists('get_all_products')) {
function get_all_products()
{
$product_query = Product::query();
return filter_products($product_query)->orderBy('id', 'desc')->get();
}
}
// Get Seller Products
if (!function_exists('get_seller_products')) {
function get_seller_products($user_id)
{
$product_query = Product::query();
return $product_query->where('user_id', $user_id)->isApprovedPublished()->orderBy('created_at', 'desc')->limit(15)->get();
}
}
// Get Seller Best Selling Products
if (!function_exists('get_shop_best_selling_products')) {
function get_shop_best_selling_products($user_id)
{
$product_query = Product::query();
return $product_query->where('user_id', $user_id)->isApprovedPublished()->orderBy('num_of_sale', 'desc')->paginate(24);
}
}
// Get all auction Products
if (!function_exists('get_all_auction_products')) {
function get_auction_products($limit = null, $paginate = null)
{
$product_query = Product::query();
$products = $product_query->latest()->isApprovedPublished()->where('auction_product', 1);
if (get_setting('seller_auction_product') == 0) {
$products = $products->where('added_by', 'admin');
}
$products = $products->where('auction_start_date', '<=', strtotime("now"))->where('auction_end_date', '>=', strtotime("now"));
if ($limit) {
$products = $products->limit($limit);
} elseif ($paginate) {
return $products->paginate($paginate);
}
return $products->get();
}
}
//Get similiar classified products
if (!function_exists('get_similiar_classified_products')) {
function get_similiar_classified_products($category_id = '', $product_id = '', $limit = '')
{
$classified_product_query = CustomerProduct::query();
if ($category_id) {
$classified_product_query->where('category_id', $category_id);
}
if ($product_id) {
$classified_product_query->where('id', '!=', $product_id);
}
$classified_product_query->isActiveAndApproval();
if ($limit) {
$classified_product_query->take($limit);
}
return $classified_product_query->get();
}
}
//Get home page classified products
if (!function_exists('get_home_page_classified_products')) {
function get_home_page_classified_products($limit = '')
{
$classified_product_query = CustomerProduct::query()->with('user', 'thumbnail');
$classified_product_query->isActiveAndApproval();
if ($limit) {
$classified_product_query->take($limit);
}
return $classified_product_query->get();
}
}
// Customers Last viewed Products
if (!function_exists('lastViewedProducts')) {
function lastViewedProducts($product_id, $user_id)
{
$lastViewedProduct = LastViewedProduct::firstOrCreate([
'user_id' => $user_id,
'product_id' => $product_id
]);
$lastViewedProduct->touch();
$lastViewedProductsCount = LastViewedProduct::where('user_id', $user_id)->count();
if($lastViewedProductsCount > 12) {
$deleteRow = $lastViewedProductsCount - 12;
LastViewedProduct::where('user_id', $user_id)->take($deleteRow)->delete();
}
}
}
// get auth users last viewed Products
if (!function_exists('getLastViewedProducts')) {
function getLastViewedProducts()
{
$verified_sellers = verified_sellers_id();
$lastViewedProduct = LastViewedProduct::where('user_id', auth()->user()->id)->orderBy('updated_at','desc')
->whereIn("product_id", function ($query) use ($verified_sellers) {
$query->select('id')
->from('products')
->where('approved', '1')->where('published', 1)
->when(!addon_is_activated('wholesale') ,function ($q1){
$q1->where('wholesale_product', 0);
})
->when(!addon_is_activated('auction') ,function ($q2){
$q2->where('auction_product', 0);
})
->when(get_setting('vendor_system_activation') == 0 ,function ($q3){
$q3->where('added_by', 'admin');
})
->when(get_setting('vendor_system_activation') == 1 ,function ($q4) use ($verified_sellers){
$q4->where(function ($p1) use ($verified_sellers) {
$p1->where('added_by', 'admin')->orWhere(function ($p2) use ($verified_sellers) {
$p2->whereIn('user_id', $verified_sellers);
});
});
});
})->get();
return $lastViewedProduct;
}
}
// Get frequently bought product
if (!function_exists('get_frequently_bought_products')) {
function get_frequently_bought_products($product)
{
$productSelectionType = $product->frequently_bought_selection_type;
$fqbProducts = [];
if($productSelectionType == 'product'){
$fqbProductIds = $product->frequently_bought_products()->where('category_id', null)->pluck('frequently_bought_product_id')->toArray();
$fqbProducts = filter_products(Product::whereIn('id', $fqbProductIds))->get();
}
elseif($productSelectionType == 'category'){
$fqb_product_category = $product->frequently_bought_products()->where('category_id','!=', null)->first();
$fqbCategoryID = $fqb_product_category != null ? $fqb_product_category->category_id : null;
if($fqbCategoryID != null){
$category = Category::with('childrenCategories')->find($fqbCategoryID);
$fqbProducts = $category->products()->where('id','!=',$product->id);
$fqbProducts = $product->added_by == 'admin' ? $fqbProducts->where('added_by', 'admin') : $fqbProducts->where('user_id', $product->user_id);
$fqbProducts = filter_products($fqbProducts)->orderByRaw('RAND()')->take(10)->get();
}
}
return $fqbProducts;
}
}
// Get all brands
if (!function_exists('get_all_brands')) {
function get_all_brands()
{
$brand_query = Brand::query();
return $brand_query->get();
}
}
// Get single brands
if (!function_exists('get_brands')) {
function get_brands($brand_ids)
{
$brand_query = Brand::query();
$brands = $brand_query->whereIn('id', $brand_ids)->get();
return $brands;
}
}
// Get single brands
if (!function_exists('get_single_brand')) {
function get_single_brand($brand_id)
{
$brand_query = Brand::query();
return $brand_query->find($brand_id);
}
}
// Get Brands by products
if (!function_exists('get_brands_by_products')) {
function get_brands_by_products($usrt_id)
{
$product_query = Product::query();
$brand_ids = $product_query->where('user_id', $usrt_id)->isApprovedPublished()->whereNotNull('brand_id')->pluck('brand_id')->toArray();
$brand_query = Brand::query();
return $brand_query->whereIn('id', $brand_ids)->get();
}
}
// Get category
if (!function_exists('get_category')) {
function get_category($category_ids)
{
$category_query = Category::query();
$category_query->with('coverImage');
$category_query->whereIn('id', $category_ids);
$categories = $category_query->get();
return $categories;
}
}
// Get single category
if (!function_exists('get_single_category')) {
function get_single_category($category_id)
{
$category_query = Category::query()->with('coverImage');
return $category_query->find($category_id);
}
}
// Get categories by level zero
if (!function_exists('get_level_zero_categories')) {
function get_level_zero_categories()
{
$categories_query = Category::query()->with(['coverImage', 'catIcon']);
return $categories_query->where('level', 0)->orderBy('order_level', 'desc')->get();
}
}
// Get categories by products
if (!function_exists('get_categories_by_products')) {
function get_categories_by_products($user_id)
{
$product_query = Product::query();
$category_ids = $product_query->where('user_id', $user_id)->isApprovedPublished()->pluck('category_id')->toArray();
$category_query = Category::query();
return $category_query->whereIn('id', $category_ids)->get();
}
}
// Get categories by products
if (!function_exists('get_categories_by_preorder_products')) {
function get_categories_by_preorder_products($user_id)
{
$product_query = PreorderProduct::query();
$category_ids = $product_query->where('user_id', $user_id)->where('is_published', 1)->pluck('category_id')->toArray();
$category_query = Category::query();
return $category_query->whereIn('id', $category_ids)->get();
}
}
// Get single Color name
if (!function_exists('get_single_color_name')) {
function get_single_color_name($color)
{
$color_query = Color::query();
return $color_query->where('code', $color)->first()->name;
}
}
// Get single Attribute
if (!function_exists('get_single_attribute_name')) {
function get_single_attribute_name($attribute)
{
$attribute_query = Attribute::query();
return $attribute_query->find($attribute)->getTranslation('name');
}
}
// Get user cart
if (!function_exists('get_user_cart')) {
function get_user_cart()
{
$cart = [];
if (auth()->user() != null) {
$cart = Cart::where('user_id', Auth::user()->id)->get();
} else {
$temp_user_id = Session()->get('temp_user_id');
if ($temp_user_id) {
$cart = Cart::where('temp_user_id', $temp_user_id)->get();
}
}
return $cart;
}
}
// Get user Wishlist
if (!function_exists('get_user_wishlist')) {
function get_user_wishlist()
{
$wishlist_query = Wishlist::query();
return $wishlist_query->where('user_id', Auth::user()->id)->get();
}
}
//Get best seller
if (!function_exists('get_best_sellers')) {
function get_best_sellers($limit = '')
{
return Cache::remember('best_selers', 86400, function () use ($limit) {
return Shop::where('verification_status', 1)->orderBy('num_of_sale', 'desc')->take($limit)->get();
});
}
}
//Get users followed sellers
if (!function_exists('get_followed_sellers')) {
function get_followed_sellers()
{
$followed_seller_query = FollowSeller::query();
return $followed_seller_query->where('user_id', Auth::user()->id)->pluck('shop_id')->toArray();
}
}
// Get Order Details
if (!function_exists('get_order_details')) {
function get_order_details($order_id)
{
$order_detail_query = OrderDetail::query();
return $order_detail_query->find($order_id);
}
}
// Get Order Details
if (!function_exists('get_order_details_by_product')) {
function get_order_details_by_product($product_id)
{
$order_detail_query = OrderDetail::query();
return $order_detail_query->where('product_id', $product_id)->first();
}
}
// Get Order Details by review
if (!function_exists('get_order_details_by_review')) {
function get_order_details_by_review($review)
{
$order_detail_query = OrderDetail::query();
return $order_detail_query->with(['order' => function ($q) use ($review) {
$q->where('user_id', $review->user_id);
}])->where('product_id', $review->product_id)->where('delivery_status', 'delivered')->first();
}
}
// Get user total expenditure
if (!function_exists('get_user_total_expenditure')) {
function get_user_total_expenditure()
{
$user_expenditure_query = Order::query();
return $user_expenditure_query->where('user_id', Auth::user()->id)->where('payment_status', 'paid')->sum('grand_total');
}
}
// Get count by delivery viewed
if (!function_exists('get_count_by_delivery_viewed')) {
function get_count_by_delivery_viewed()
{
$order_query = Order::query();
return $order_query->where('user_id', Auth::user()->id)->where('delivery_viewed', 0)->get()->count();
}
}
// Get delivery boy info
if (!function_exists('get_delivery_boy_info')) {
function get_delivery_boy_info()
{
$delivery_boy_info_query = DeliveryBoy::query();
return $delivery_boy_info_query->where('user_id', Auth::user()->id)->first();
}
}
// Get count by completed delivery
if (!function_exists('get_delivery_boy_total_completed_delivery')) {
function get_delivery_boy_total_completed_delivery()
{
$delivery_boy_delivery_query = Order::query();
return $delivery_boy_delivery_query->where('assign_delivery_boy', Auth::user()->id)
->where('delivery_status', 'delivered')
->count();
}
}
// Get count by pending delivery
if (!function_exists('get_delivery_boy_total_pending_delivery')) {
function get_delivery_boy_total_pending_delivery()
{
$delivery_boy_delivery_query = Order::query();
return $delivery_boy_delivery_query->where('assign_delivery_boy', Auth::user()->id)
->where('delivery_status', '!=', 'delivered')
->where('delivery_status', '!=', 'cancelled')
->where('cancel_request', '0')
->count();
}
}
// Get count by cancelled delivery
if (!function_exists('get_delivery_boy_total_cancelled_delivery')) {
function get_delivery_boy_total_cancelled_delivery()
{
$delivery_boy_delivery_query = Order::query();
return $delivery_boy_delivery_query->where('assign_delivery_boy', Auth::user()->id)
->where('delivery_status', 'cancelled')
->count();
}
}
// Get count by payment status viewed
if (!function_exists('get_order_info')) {
function get_order_info($order_id = null)
{
$order_query = Order::query();
return $order_query->where('id', $order_id)->first();
}
}
// Get count by payment status viewed
if (!function_exists('get_user_order_by_id')) {
function get_user_order_by_id($order_id = null)
{
$order_query = Order::query();
return $order_query->where('id', $order_id)->where('user_id', Auth::user()->id)->first();
}
}
// Get Auction Product Bid Info
if (!function_exists('get_auction_product_bid_info')) {
function get_auction_product_bid_info($bid_id = null)
{
$product_bid_info_query = AuctionProductBid::query();
return $product_bid_info_query->where('id', $bid_id)->first();
}
}
// Get count by payment status viewed
if (!function_exists('get_count_by_payment_status_viewed')) {
function get_count_by_payment_status_viewed()
{
$order_query = Order::query();
return $order_query->where('user_id', Auth::user()->id)->where('payment_status_viewed', 0)->get()->count();
}
}
// Get Uploaded file
if (!function_exists('get_single_uploaded_file')) {
function get_single_uploaded_file($file_id)
{
$file_query = Upload::query();
return $file_query->find($file_id);
}
}
// Get single customer package file
if (!function_exists('get_single_customer_package')) {
function get_single_customer_package($package_id)
{
$customer_package_query = CustomerPackage::query();
return $customer_package_query->find($package_id);
}
}
// Get single Seller package file
if (!function_exists('get_single_seller_package')) {
function get_single_seller_package($package_id)
{
$seller_package_query = SellerPackage::query();
return $seller_package_query->find($package_id);
}
}
// Get user last wallet recharge
if (!function_exists('get_user_last_wallet_recharge')) {
function get_user_last_wallet_recharge()
{
$recharge_query = Wallet::query();
return $recharge_query->where('user_id', Auth::user()->id)->orderBy('id', 'desc')->first();
}
}
// Get user total Club point
if (!function_exists('get_user_total_club_point')) {
function get_user_total_club_point()
{
$club_point_query = ClubPoint::query();
return $club_point_query->where('user_id', Auth::user()->id)->where('convert_status', 0)->sum('points');
}
}
// Get all manual payment methods
if (!function_exists('get_all_manual_payment_methods')) {
function get_all_manual_payment_methods()
{
$manual_payment_methods_query = ManualPaymentMethod::query();
return $manual_payment_methods_query->get();
}
}
// Get all blog category
if (!function_exists('get_all_blog_categories')) {
function get_all_blog_categories()
{
$blog_category_query = BlogCategory::query();
return $blog_category_query->get();
}
}
// Get all Pickup Points
if (!function_exists('get_all_pickup_points')) {
function get_all_pickup_points()
{
$pickup_points_query = PickupPoint::query();
return $pickup_points_query->isActive()->get();
}
}
// get Shop by user id
if (!function_exists('get_shop_by_user_id')) {
function get_shop_by_user_id($user_id)
{
$shop_query = Shop::query();
return $shop_query->where('user_id', $user_id)->first();
}
}
// get Coupons
if (!function_exists('get_coupons')) {
function get_coupons($user_id = null, $paginate = null)
{
$coupon_query = Coupon::query();
$coupon_query = $coupon_query->where('start_date', '<=', strtotime(date('d-m-Y')))->where('end_date', '>=', strtotime(date('d-m-Y')));
if ($user_id) {
$coupon_query = $coupon_query->where('user_id', $user_id);
}
if ($paginate) {
return $coupon_query->paginate($paginate);
}
return $coupon_query->get();
}
}
// get non-viewed Conversations
if (!function_exists('get_non_viewed_conversations')) {
function get_non_viewed_conversations()
{
$Conversation_query = Conversation::query();
return $Conversation_query->where('sender_id', Auth::user()->id)->where('sender_viewed', 0)->get();
}
}
// get non-viewed Conversations
if (!function_exists('get_non_viewed_preorder_conversations')) {
function get_non_viewed_preorder_conversations()
{
$userId = in_array(auth()->user()->user_type, ['admin', 'staff']) ? get_admin()->id : auth()->id();
$numberOfUnreadMsg = PreorderConversationMessage::where('receiver_viewed', 0)
->whereHas('preorderConversationThread', function ($query) use ($userId) {
$query->where(function ($query) use ($userId) {
$query->where('sender_id', $userId)
->orWhere('receiver_id', $userId);
});
})
->where('sender_id', '!=', $userId)
->count();
return $numberOfUnreadMsg;
}
}
// get affliate option status
if (!function_exists('get_affliate_option_status')) {
function get_affliate_option_status($status = false)
{
if (
AffiliateOption::where('type', 'product_sharing')->first()->status ||
AffiliateOption::where('type', 'category_wise_affiliate')->first()->status
) {
$status = true;
}
return $status;
}
}
// get affliate option purchase status
if (!function_exists('get_affliate_purchase_option_status')) {
function get_affliate_purchase_option_status($status = false)
{
if (AffiliateOption::where('type', 'user_registration_first_purchase')->first()->status) {
$status = true;
}
return $status;
}
}
// get affliate config
if (!function_exists('get_Affiliate_onfig_value')) {
function get_Affiliate_onfig_value()
{
return AffiliateConfig::where('type', 'verification_form')->first()->value;
}
}
// Welcome Coupon add for user
if (!function_exists('offerUserWelcomeCoupon')) {
function offerUserWelcomeCoupon()
{
$coupon = Coupon::where('type', 'welcome_base')->where('status', 1)->first();
if ($coupon) {
$couponDetails = json_decode($coupon->details);
$user_coupon = new UserCoupon();
$user_coupon->user_id = auth()->user()->id;
$user_coupon->coupon_id = $coupon->id;
$user_coupon->coupon_code = $coupon->code;
$user_coupon->min_buy = $couponDetails->min_buy;
$user_coupon->validation_days = $couponDetails->validation_days;
$user_coupon->discount = $coupon->discount;
$user_coupon->discount_type = $coupon->discount_type;
$user_coupon->expiry_date = strtotime(date('d-m-Y H:i:s') . ' +' . $couponDetails->validation_days . 'days');
$user_coupon->save();
}
}
}
// get User Welcome Coupon
if (!function_exists('ifUserHasWelcomeCouponAndNotUsed')) {
function ifUserHasWelcomeCouponAndNotUsed()
{
$user = auth()->user();
$userCoupon = $user->userCoupon;
if($userCoupon){
if($userCoupon->expiry_date >=strtotime(date('d-m-Y H:i:s'))){
$couponUse = $userCoupon->coupon->couponUsages->where('user_id',$user->id)->first();
if(!$couponUse){
return $userCoupon;
}
}
}
return false;
}
}
// Get Thumbnail Image
if (!function_exists('get_image')) {
function get_image($image)
{
$image_url = static_asset('assets/img/placeholder.jpg');
if ($image != null) {
$image_url = $image->external_link == null ? my_asset($image->file_name) : $image->external_link;
}
return $image_url;
}
}
//Get 1st prodyct image
if (!function_exists('get_first_product_image')) {
function get_first_product_image($photos = null, $thumbnail = null)
{
$image_url = static_asset('assets/img/placeholder.jpg');
$photos = $photos != null ? explode(',', $photos) : [];
$photos = array_diff($photos, [$thumbnail]);
$firstPhotoId = reset($photos);
$image = null;
if (!empty($firstPhotoId)) {
$image = Upload::find($firstPhotoId);
}
if ($image == null && $thumbnail != null) {
$image = Upload::find($thumbnail);
}
if ($image instanceof \Illuminate\Database\Eloquent\Collection) {
$image = $image->first();
}
if ($image != null) {
$image_url = $image->external_link == null ? my_asset($image->file_name) : $image->external_link;
}
return $image_url;
}
}
// Get POS user cart
if (!function_exists('get_pos_user_cart')) {
function get_pos_user_cart($sessionUserID = null, $sessionTemUserId = null)
{
$cart = [];
$authUser = auth()->user();
$owner_id = in_array($authUser->user_type, ['admin','staff']) ? get_admin()->id : $authUser->id;
if ($sessionUserID == null) {
$sessionUserID = Session::has('pos.user_id') ? Session::get('pos.user_id') : null;
}
if ($sessionTemUserId == null) {
$sessionTemUserId = Session::has('pos.temp_user_id') ? Session::get('pos.temp_user_id') : null;
}
$cart = Cart::where('owner_id', $owner_id)->where('user_id', $sessionUserID)->where('temp_user_id', $sessionTemUserId)->get();
return $cart;
}
}
// Get POS user cart
if (!function_exists('get_single_cart')) {
function get_single_cart($cartID = null)
{
return Cart::findOrFail($cartID);
}
}
if (!function_exists('number_format_short')) {
function number_format_short($n, $precision = 1)
{
if ($n < 900) {
// 0 - 900
$n_format = number_format($n, $precision);
$suffix = '';
} else if ($n < 900000) {
// 0.9k-850k
$n_format = number_format($n / 1000, $precision);
$suffix = 'K';
} else if ($n < 900000000) {
// 0.9m-850m
$n_format = number_format($n / 1000000, $precision);
$suffix = 'M';
} else if ($n < 900000000000) {
// 0.9b-850b
$n_format = number_format($n / 1000000000, $precision);
$suffix = 'B';
} else {
// 0.9t+
$n_format = number_format($n / 1000000000000, $precision);
$suffix = 'T';
}
// Remove unecessary zeroes after decimal. "1.0" -> "1"; "1.00" -> "1"
// Intentionally does not affect partials, eg "1.50" -> "1.50"
if ($precision > 0) {
$dotzero = '.' . str_repeat('0', $precision);
$n_format = str_replace($dotzero, '', $n_format);
}
return $n_format . $suffix;
}
}
// Get notification type
if (!function_exists('get_notification_type')) {
function get_notification_type($value, $columnNamre)
{
$notificationType = NotificationType::query();
$notificationType = $columnNamre == 'id' ? $notificationType->where('id', $value) : $notificationType->where('type', $value);
return $notificationType->first();
}
}
// Get all activate payment methods
if (!function_exists('get_activate_payment_methods')) {
function get_activate_payment_methods()
{
$payment_methods = PaymentMethod::where('active', 1)
->Where(function($query){
$query->whereNull('addon_identifier')
->orWhere(function($q){
if(addon_is_activated('paytm')){
$q->where('addon_identifier', 'paytm');
}
})
->orWhere(function($q){
if(addon_is_activated('african_pg')){
$q->where('addon_identifier', 'african_pg');
}
})
->orWhere(function($q){
if(addon_is_activated('knet')){
$q->where('addon_identifier', 'knet');
}
})
->orWhere(function($q){
if(addon_is_activated('uddoktapay')){
$q->where('addon_identifier', 'uddoktapay');
}
})
->orWhere(function($q){
if(addon_is_activated('cybersource')){
$q->where('addon_identifier', 'cybersource');
}
});
});
return $payment_methods->get();
}
}
// notification
if (! function_exists('flash_message')) {
function flash_message($message, $level = 'info')
{
$notifications = session('flash_notification', collect());
// Check if the message already exists
if (!$notifications->contains('message', $message)) {
session()->flash('flash_notification', $notifications->push([
'message' => $message,
'level' => $level,
]));
}
}
}
// Get wishlists
if (!function_exists('get_wishlists')) {
function get_wishlists()
{
$verified_sellers = verified_sellers_id();
$wishlists = Wishlist::where('user_id', auth()->user()->id)
->whereIn("product_id", function ($query) use ($verified_sellers) {
$query->select('id')
->from('products')
->where('approved', '1')->where('published', 1)
->when(!addon_is_activated('wholesale') ,function ($q1){
$q1->where('wholesale_product', 0);
})
->when(!addon_is_activated('auction') ,function ($q2){
$q2->where('auction_product', 0);
})
->when(get_setting('vendor_system_activation') == 0 ,function ($q3){
$q3->where('added_by', 'admin');
})
->when(get_setting('vendor_system_activation') == 1 ,function ($q4) use ($verified_sellers){
$q4->where(function ($p1) use ($verified_sellers) {
$p1->where('added_by', 'admin')->orWhere(function ($p2) use ($verified_sellers) {
$p2->whereIn('user_id', $verified_sellers);
});
});
});
})
->latest();
return $wishlists;
}
}
// email template data
if (!function_exists('get_email_template_data')) {
function get_email_template_data($identifier, $colmn_name = null)
{
$value = EmailTemplate::where('identifier', $identifier)->first()->$colmn_name;
return $value;
}
}
// Delete Product Reviews
if (!function_exists('deleteProductReview')) {
function deleteProductReview($product)
{
if($product->added_by == 'seller' ){
$seller = $product->user->shop;
foreach($product->reviews as $review){
$seller = $seller->fresh();
$seller->rating = (($seller->rating * $seller->num_of_reviews) - $product->rating) / max(1, $seller->num_of_reviews - 1);
$seller->num_of_reviews -= 1;
$seller->save();
}
}
$product->reviews()->delete();
}
}
if (!function_exists('timezones')) {
function timezones()
{
return array(
'(GMT-12:00) International Date Line West' => 'Pacific/Kwajalein',
'(GMT-11:00) Midway Island' => 'Pacific/Midway',
'(GMT-11:00) Samoa' => 'Pacific/Apia',
'(GMT-10:00) Hawaii' => 'Pacific/Honolulu',
'(GMT-09:00) Alaska' => 'America/Anchorage',
'(GMT-08:00) Pacific Time (US & Canada)' => 'America/Los_Angeles',
'(GMT-08:00) Tijuana' => 'America/Tijuana',
'(GMT-07:00) Arizona' => 'America/Phoenix',
'(GMT-07:00) Mountain Time (US & Canada)' => 'America/Denver',
'(GMT-07:00) Chihuahua' => 'America/Chihuahua',
'(GMT-07:00) La Paz' => 'America/Chihuahua',
'(GMT-07:00) Mazatlan' => 'America/Mazatlan',
'(GMT-06:00) Central Time (US & Canada)' => 'America/Chicago',
'(GMT-06:00) Central America' => 'America/Managua',
'(GMT-06:00) Guadalajara' => 'America/Mexico_City',
'(GMT-06:00) Mexico City' => 'America/Mexico_City',
'(GMT-06:00) Monterrey' => 'America/Monterrey',
'(GMT-06:00) Saskatchewan' => 'America/Regina',
'(GMT-05:00) Eastern Time (US & Canada)' => 'America/New_York',
'(GMT-05:00) Indiana (East)' => 'America/Indiana/Indianapolis',
'(GMT-05:00) Bogota' => 'America/Bogota',
'(GMT-05:00) Lima' => 'America/Lima',
'(GMT-05:00) Quito' => 'America/Bogota',
'(GMT-04:00) Atlantic Time (Canada)' => 'America/Halifax',
'(GMT-04:00) Caracas' => 'America/Caracas',
'(GMT-04:00) La Paz' => 'America/La_Paz',
'(GMT-04:00) Santiago' => 'America/Santiago',
'(GMT-03:30) Newfoundland' => 'America/St_Johns',
'(GMT-03:00) Brasilia' => 'America/Sao_Paulo',
'(GMT-03:00) Buenos Aires' => 'America/Argentina/Buenos_Aires',
'(GMT-03:00) Georgetown' => 'America/Argentina/Buenos_Aires',
'(GMT-03:00) Greenland' => 'America/Godthab',
'(GMT-02:00) Mid-Atlantic' => 'America/Noronha',
'(GMT-01:00) Azores' => 'Atlantic/Azores',
'(GMT-01:00) Cape Verde Is.' => 'Atlantic/Cape_Verde',
'(GMT) Casablanca' => 'Africa/Casablanca',
'(GMT) Dublin' => 'Europe/London',
'(GMT) Edinburgh' => 'Europe/London',
'(GMT) Lisbon' => 'Europe/Lisbon',
'(GMT) London' => 'Europe/London',
'(GMT) UTC' => 'UTC',
'(GMT) Monrovia' => 'Africa/Monrovia',
'(GMT+01:00) Amsterdam' => 'Europe/Amsterdam',
'(GMT+01:00) Belgrade' => 'Europe/Belgrade',
'(GMT+01:00) Berlin' => 'Europe/Berlin',
'(GMT+01:00) Bern' => 'Europe/Berlin',
'(GMT+01:00) Bratislava' => 'Europe/Bratislava',
'(GMT+01:00) Brussels' => 'Europe/Brussels',
'(GMT+01:00) Budapest' => 'Europe/Budapest',
'(GMT+01:00) Copenhagen' => 'Europe/Copenhagen',
'(GMT+01:00) Ljubljana' => 'Europe/Ljubljana',
'(GMT+01:00) Madrid' => 'Europe/Madrid',
'(GMT+01:00) Paris' => 'Europe/Paris',
'(GMT+01:00) Prague' => 'Europe/Prague',
'(GMT+01:00) Rome' => 'Europe/Rome',
'(GMT+01:00) Sarajevo' => 'Europe/Sarajevo',
'(GMT+01:00) Skopje' => 'Europe/Skopje',
'(GMT+01:00) Stockholm' => 'Europe/Stockholm',
'(GMT+01:00) Vienna' => 'Europe/Vienna',
'(GMT+01:00) Warsaw' => 'Europe/Warsaw',
'(GMT+01:00) West Central Africa' => 'Africa/Lagos',
'(GMT+01:00) Zagreb' => 'Europe/Zagreb',
'(GMT+02:00) Athens' => 'Europe/Athens',
'(GMT+02:00) Bucharest' => 'Europe/Bucharest',
'(GMT+02:00) Cairo' => 'Africa/Cairo',
'(GMT+02:00) Harare' => 'Africa/Harare',
'(GMT+02:00) Helsinki' => 'Europe/Helsinki',
'(GMT+02:00) Istanbul' => 'Europe/Istanbul',
'(GMT+02:00) Jerusalem' => 'Asia/Jerusalem',
'(GMT+02:00) Kyev' => 'Europe/Kiev',
'(GMT+02:00) Minsk' => 'Europe/Minsk',
'(GMT+02:00) Pretoria' => 'Africa/Johannesburg',
'(GMT+02:00) Riga' => 'Europe/Riga',
'(GMT+02:00) Sofia' => 'Europe/Sofia',
'(GMT+02:00) Tallinn' => 'Europe/Tallinn',
'(GMT+02:00) Vilnius' => 'Europe/Vilnius',
'(GMT+03:00) Baghdad' => 'Asia/Baghdad',
'(GMT+03:00) Kuwait' => 'Asia/Kuwait',
'(GMT+03:00) Moscow' => 'Europe/Moscow',
'(GMT+03:00) Nairobi' => 'Africa/Nairobi',
'(GMT+03:00) Riyadh' => 'Asia/Riyadh',
'(GMT+03:00) St. Petersburg' => 'Europe/Moscow',
'(GMT+03:00) Volgograd' => 'Europe/Volgograd',
'(GMT+03:30) Tehran' => 'Asia/Tehran',
'(GMT+04:00) Abu Dhabi' => 'Asia/Muscat',
'(GMT+04:00) Baku' => 'Asia/Baku',
'(GMT+04:00) Muscat' => 'Asia/Muscat',
'(GMT+04:00) Tbilisi' => 'Asia/Tbilisi',
'(GMT+04:00) Yerevan' => 'Asia/Yerevan',
'(GMT+04:30) Kabul' => 'Asia/Kabul',
'(GMT+05:00) Ekaterinburg' => 'Asia/Yekaterinburg',
'(GMT+05:00) Islamabad' => 'Asia/Karachi',
'(GMT+05:00) Karachi' => 'Asia/Karachi',
'(GMT+05:00) Tashkent' => 'Asia/Tashkent',
'(GMT+05:30) Chennai' => 'Asia/Kolkata',
'(GMT+05:30) Kolkata' => 'Asia/Kolkata',
'(GMT+05:30) Mumbai' => 'Asia/Kolkata',
'(GMT+05:30) New Delhi' => 'Asia/Kolkata',
'(GMT+05:45) Kathmandu' => 'Asia/Kathmandu',
'(GMT+06:00) Almaty' => 'Asia/Almaty',
'(GMT+06:00) Astana' => 'Asia/Dhaka',
'(GMT+06:00) Dhaka' => 'Asia/Dhaka',
'(GMT+06:00) Novosibirsk' => 'Asia/Novosibirsk',
'(GMT+06:00) Sri Jayawardenepura' => 'Asia/Colombo',
'(GMT+06:30) Rangoon' => 'Asia/Rangoon',
'(GMT+07:00) Bangkok' => 'Asia/Bangkok',
'(GMT+07:00) Hanoi' => 'Asia/Bangkok',
'(GMT+07:00) Jakarta' => 'Asia/Jakarta',
'(GMT+07:00) Krasnoyarsk' => 'Asia/Krasnoyarsk',
'(GMT+08:00) Beijing' => 'Asia/Hong_Kong',
'(GMT+08:00) Chongqing' => 'Asia/Chongqing',
'(GMT+08:00) Hong Kong' => 'Asia/Hong_Kong',
'(GMT+08:00) Irkutsk' => 'Asia/Irkutsk',
'(GMT+08:00) Kuala Lumpur' => 'Asia/Kuala_Lumpur',
'(GMT+08:00) Perth' => 'Australia/Perth',
'(GMT+08:00) Singapore' => 'Asia/Singapore',
'(GMT+08:00) Taipei' => 'Asia/Taipei',
'(GMT+08:00) Ulaan Bataar' => 'Asia/Irkutsk',
'(GMT+08:00) Urumqi' => 'Asia/Urumqi',
'(GMT+09:00) Osaka' => 'Asia/Tokyo',
'(GMT+09:00) Sapporo' => 'Asia/Tokyo',
'(GMT+09:00) Seoul' => 'Asia/Seoul',
'(GMT+09:00) Tokyo' => 'Asia/Tokyo',
'(GMT+09:00) Yakutsk' => 'Asia/Yakutsk',
'(GMT+09:30) Adelaide' => 'Australia/Adelaide',
'(GMT+09:30) Darwin' => 'Australia/Darwin',
'(GMT+10:00) Brisbane' => 'Australia/Brisbane',
'(GMT+10:00) Canberra' => 'Australia/Sydney',
'(GMT+10:00) Guam' => 'Pacific/Guam',
'(GMT+10:00) Hobart' => 'Australia/Hobart',
'(GMT+10:00) Melbourne' => 'Australia/Melbourne',
'(GMT+10:00) Port Moresby' => 'Pacific/Port_Moresby',
'(GMT+10:00) Sydney' => 'Australia/Sydney',
'(GMT+10:00) Vladivostok' => 'Asia/Vladivostok',
'(GMT+11:00) Magadan' => 'Asia/Magadan',
'(GMT+11:00) New Caledonia' => 'Asia/Magadan',
'(GMT+11:00) Solomon Is.' => 'Asia/Magadan',
'(GMT+12:00) Auckland' => 'Pacific/Auckland',
'(GMT+12:00) Fiji' => 'Pacific/Fiji',
'(GMT+12:00) Kamchatka' => 'Asia/Kamchatka',
'(GMT+12:00) Marshall Is.' => 'Pacific/Fiji',
'(GMT+12:00) Wellington' => 'Pacific/Auckland',
'(GMT+13:00) Nuku\'alofa' => 'Pacific/Tongatapu'
);
}
}
function formatToArray($input) {
// Remove extra quotes from the string
$cleanedString = trim($input, '"');
// Split the string by commas to get each element
$values = explode(',', $cleanedString);
// Filter out "NaN" and non-numeric values, convert to integers
$result = array_filter($values, function($value) {
return is_numeric($value);
});
// Convert numeric values to integers
$result = array_map('intval', $result);
return $result;
}
//preorder_product_availability_check
if (!function_exists('preorder_product_availability_check')) {
function preorder_product_availability_check($product)
{
if($product->is_available){
return true;
}
$publishDate = Carbon::parse($product->available_date);
if (Carbon::today()->greaterThanOrEqualTo($publishDate)) {
return true;
}
return false;
}
}
// preorder steps fill color
if (!function_exists('preorder_fill_color')) {
function preorder_fill_color($current_order_status, $previous_order_status = 0)
{
$color = match (true) {
$current_order_status === 2 => '#28a745',
$current_order_status === 3 => '#dc3545',
$current_order_status === 1 || $previous_order_status == 2 => '#FF6002',
$current_order_status === 0 => '#9d9da6',
default => '#000000',
};
return $color;
}
}
// preorder discount in percentage
if (!function_exists('preorder_discount_in_percentage')) {
function preorder_discount_in_percentage($product)
{
$base = preorder_home_base_price($product, false);
$reduced = preorder_home_discounted_base_price($product, false);
$discount = $base - $reduced;
$dp = ($discount * 100) / ($base > 0 ? $base : 1);
return round($dp);
}
}
// preorder home base price
if (!function_exists('preorder_home_base_price')) {
function preorder_home_base_price($product, $formatted = true)
{
$price = $product->unit_price;
$tax = 0;
foreach ($product->taxes as $product_tax) {
if ($product_tax->tax_type == 'percent') {
$tax += ($price * $product_tax->tax) / 100;
} elseif ($product_tax->tax_type == 'amount') {
$tax += $product_tax->tax;
}
}
$price += $tax;
return $formatted ? format_price(convert_price($price)) : convert_price($price);
}
}
//Shows preorder Base Price with discount
if (!function_exists('preorder_home_discounted_base_price')) {
function preorder_home_discounted_base_price($product, $formatted = true)
{
$price = $product->unit_price;
$tax = 0;
$discount_applicable = false;
if ($product->discount_start_date == null) {
$discount_applicable = true;
} elseif (
strtotime(date('d-m-Y H:i:s')) >= $product->discount_start_date &&
strtotime(date('d-m-Y H:i:s')) <= $product->discount_end_date
) {
$discount_applicable = true;
}
if ($discount_applicable) {
if ($product->discount_type == 'percent') {
$price -= ($price * $product->discount) / 100;
} elseif ($product->discount_type == 'amount') {
$price -= $product->discount;
}
}
foreach ($product->taxes as $product_tax) {
if ($product_tax->tax_type == 'percent') {
$tax += ($price * $product_tax->tax) / 100;
} elseif ($product_tax->tax_type == 'amount') {
$tax += $product_tax->tax;
}
}
$price += $tax;
return $formatted ? format_price(convert_price($price)) : convert_price($price);
}
}
// preorder steps fill color
if (!function_exists('preorder_status_show')) {
function preorder_status_show($order)
{
$order_status = $order->status;
$status_name = '';
switch ($order_status) {
case 'refund_status':
$status_name = translate('Refund Requested');
break;
case 'delivery_status':
$status_name = translate('Delivered');
break;
case 'shipping_status':
$status_name = translate('In Shipping');
break;
case 'final_order_status':
$status_name = translate('Final Order Request');
break;
case 'prepayment_confirm_status':
$status_name = translate('Prepayment Request');
break;
case 'request_preorder_status':
$status_name = translate('Preorder Request');
break;
default:
$status_name = '';
break;
}
return $status_name;
}
}
// is_review_given
if (!function_exists('is_review_given')) {
function is_review_given($order)
{
$review = PreorderProductReview::where('user_id', auth()->id())->where('preorder_product_id', $order->preorder_product->id)->first();
if($review){
return '#28a745';
}
return '#9d9da6';
}
}
// preorder_discount_price
if (!function_exists('preorder_discount_price')) {
function preorder_discount_price($product)
{
if($product->discount_start_date != null && (strtotime(date('d-m-Y')) > $product->discount_start_date || strtotime(date('d-m-Y')) < $product->discount_end_date)){
$discount = $product->discount;
$discounted_price = $product->discount_type == 'flat' ? $product->unit_price - $discount : $product->unit_price - ((($product->unit_price * $discount) / 100)) ;
}else{
$discounted_price = $product->unit_price;
}
return $discounted_price;
}
}
// preorder_payment_type
if (!function_exists('preorder_payment_type')) {
function preorder_payment_type($order)
{
$payment_type = translate('Manual');
if($order->final_order_status != 0){
$payment_type = translate('Final Payment');
}
if($order->prepayment != null){
$payment_type = translate('Prepayment');
}
return $payment_type;
}
}
// preorder product
if (!function_exists('filter_preorder_product')) {
function filter_preorder_product($products)
{
if (get_setting('vendor_system_activation') == 1) {
return $products->where(function ($query) {
$query->whereHas('user', function ($q) {
$q->where('user_type', 'admin');
})->orWhereHas('user.shop', function ($q) {
$q->where('verification_status', 1);
});
});
} else {
return $products;
}
}
}
function filter_single_preorder_product($product)
{
if (get_setting('vendor_system_activation') == 1) {
$user = $product->user;
if ($user->user_type == 'seller') {
// Return the product only if the seller's shop is verified
return optional($user->shop)->verification_status == 1 ? $product : null;
}
// Return the product if the user is not a seller (e.g., admin)
return $product;
}
// If vendor system is not activated, return the product directly
return $product;
}
if (!function_exists('get_element_type_by_id')) {
function get_element_type_by_id($id)
{
$elementType = ElementType::find($id);
return $elementType ? strtolower(str_replace(' ', '', $elementType->name)) : null;
}
}
if (!function_exists('get_element_style_value')) {
function get_element_style_value($element_type_id, $name)
{
$style = ElementStyle::where('element_type_id', $element_type_id)
->where('name', $name)
->first();
return $style ? $style->value : null;
}
}
function convertToEmbedUrl($url)
{
if (preg_match('/shorts\/([a-zA-Z0-9_-]+)/', $url, $matches)) {
return "https://www.youtube.com/embed/" . $matches[1];
}
if (preg_match('/v=([a-zA-Z0-9_-]+)/', $url, $matches)) {
return "https://www.youtube.com/embed/" . $matches[1];
}
if (preg_match('/youtu\.be\/([a-zA-Z0-9_-]+)/', $url, $matches)) {
return "https://www.youtube.com/embed/" . $matches[1];
}
return $url;
}
function youtubeVideoId($url)
{
if (preg_match('/shorts\/([a-zA-Z0-9_-]+)/', $url, $matches)) {
return $matches[1];
}
if (preg_match('/v=([a-zA-Z0-9_-]+)/', $url, $matches)) {
return $matches[1];
}
if (preg_match('/youtu\.be\/([a-zA-Z0-9_-]+)/', $url, $matches)) {
return $matches[1];
}
return $url;
}
if (!function_exists('get_all_sale_alert_products')) {
function get_all_sale_alert_products() {
return CustomSaleAlert::with('product')->get()->map(function($alert) {
if (!$alert->product) return null;
return [
'id' => $alert->product->id,
'title' => $alert->product->getTranslation('name'),
'image' => uploaded_asset($alert->product->thumbnail_img),
'url' => route('product', $alert->product->slug),
];
})->filter();
}
}
//get products label
if (!function_exists('get_custom_labels')) {
function get_custom_labels($labels) {
$labels_array = [];
if($labels){
$labels = explode(',',$labels);
foreach($labels as $label){
$label_data = CustomLabel::where('id',$label)->first();
if($label_data){
$labels_array[] = $label_data;
}
}
}
return $labels_array;
}
}
// clone file
if (!function_exists('clone_file')) {
function clone_file($id)
{
if (!$id || !is_numeric($id)) {
return null;
}
$file = Upload::find($id);
if (!$file) {
return null;
}
$originalPath = $file->file_name;
$directory = dirname($originalPath);
$originalFileName = basename($originalPath);
$newFileName = 'copy_of_' . $originalFileName;
$newPath = $directory . '/' . $newFileName;
$newFile = $file->replicate();
$newFile->file_original_name = 'copy_of_' . $file->file_original_name;
$newFile->file_name = $newPath;
$newFile->user_id = User::where('user_type', 'admin')->value('id');
$newFile->save();
$from = public_path($originalPath);
$to = public_path($newPath);
if (file_exists($from)) {
copy($from, $to);
}
return $newFile->id;
}
}
//clone images
if (!function_exists('clone_images')) {
function clone_images($ids)
{
$new_image_ids = [];
if ($ids != null) {
$ids_array = explode(',', $ids);
foreach ($ids_array as $id) {
$new_id = clone_file($id);
if ($new_id) {
$new_image_ids[] = $new_id;
}
}
}
return implode(',', $new_image_ids);
}
}
//fetch gst applicable by product rate by id
if (!function_exists('gst_applicable_product_rate')) {
function gst_applicable_product_rate($product_id)
{
$product = Product::find($product_id);
// if (addon_is_activated('gst_system') && ($product->gst_rate > 0 || ($product->gst_rate == 0 && $product->hsn_code != ''))){
// return $product->gst_rate;
// }
if (addon_is_activated('gst_system')){
return $product->gst_rate;
}
return null;
}
}
//fetch gst by price and rate
if (!function_exists('get_gst_by_price_and_rate')) {
function get_gst_by_price_and_rate($price, $gst_rate)
{
$gst_amount = ($price * $gst_rate) / 100;
return $gst_amount;
}
}
//compare is seller state and shipping state same or not BY order
if (! function_exists('same_state_shipping')) {
function same_state_shipping($order)
{
$seller_state = isset($order->shop) ? (json_decode($order->shop->business_info)->state ?? null) : null;
if(!$seller_state){
$business_info = json_decode(get_setting('business_info'), true);
if ($business_info && isset($business_info['state'])) {
$seller_state = $business_info['state'];
}
else {
$seller_state = null;
}
}
$shipping_address = json_decode($order->shipping_address);
//compare seller state and shipping state same or not
if($seller_state && $shipping_address && isset($shipping_address->state) && $seller_state == $shipping_address->state){
return true;
}
return false;
}
}
//get seller GStin BY order
if (! function_exists('get_seller_gstin')) {
function get_seller_gstin($order)
{
$gstin = null;
if (isset($order->shop)) {
$business_info = json_decode($order->shop->business_info, true);
if ($business_info && isset($business_info['gstin'])) {
$gstin = $business_info['gstin'];
}
}
if(!$gstin){
$business_info = json_decode(get_setting('business_info'), true);
if ($business_info && isset($business_info['gstin'])) {
$gstin = $business_info['gstin'];
}
}
return $gstin;
}
}
if (!function_exists('get_seller_address')) {
function get_seller_address($order)
{
$parts = [];
if (isset($order->shop) && $order->shop) {
$business_info = json_decode($order->shop->business_info ?? '{}', true) ?? [];
if (!empty($order->shop->address)) {
$parts[] = trim($order->shop->address);
}
if (!empty($business_info['address'])) {
$parts[] = trim($business_info['address']);
}
if (!empty($business_info['state'])) {
$parts[] = trim($business_info['state']);
}
if (!empty($business_info['country'])) {
$parts[] = trim($business_info['country']);
}
} else {
$business_info = json_decode(get_setting('business_info') ?? '{}', true) ?? [];
if (!empty($business_info['address'])) {
$parts[] = trim($business_info['address']);
}
if (!empty($business_info['state'])) {
$parts[] = trim($business_info['state']);
}
if (!empty($business_info['country'])) {
$parts[] = trim($business_info['country']);
}
}
$parts = array_filter($parts, fn($item) => !empty(trim($item)));
if (empty($parts)) {
return null;
}
return implode(', ', $parts);
}
}
if (!function_exists('get_seller_state')) {
function get_seller_state()
{
$user = Auth::user();
if($user->user_type == 'seller' && $user->shop && $user->shop->business_info){
$business_info = json_decode($user->shop->business_info, true);
$state= $business_info['state'] ?? null;
if($state){
return State::where('name', $state)->value('id');
}
else{
return null;
}
}
else{
$business_info = json_decode(get_setting('business_info'), true);
$state= $business_info['state'] ?? null;
if($state){
return State::where('name', $state)->value('id');
}
else{
return null;
}
}
}
}
//get business info
if (! function_exists('admin_business_info')) {
function admin_business_info()
{
return json_decode(get_setting('business_info'), true) ?? [];
}
}
if (! function_exists('preorder_same_state_shipping')) {
function preorder_same_state_shipping($order)
{
$seller_state_name = null;
// 1. Get seller state from shop business_info
if (
isset($order->user) &&
isset($order->user->shop) &&
!empty($order->user->shop->business_info)
) {
$shop_business = json_decode($order->user->shop->business_info, true);
$seller_state_name = $shop_business['state'] ?? null;
}
if (empty($seller_state_name) && $order->product_owner =='admin') {
$admin_business = json_decode(get_setting('business_info'), true);
$seller_state_name = $admin_business['state'] ?? null;
}
$address = Address::find($order->address_id);
if (!$address) {
return false;
}
$shipping_state_name = null;
if (!empty($address->state_id) && $address->state) {
$shipping_state_name = $address->state->name ?? null;
}
if (empty($seller_state_name) || empty($shipping_state_name)) {
return false;
}
return strtolower(trim($seller_state_name)) === strtolower(trim($shipping_state_name));
}
}
//get POS discounted gst
if (!function_exists('pos_cart_product_gst')) {
function pos_cart_product_gst($cart_product, $product, $discount, $shipping, $formatted = true)
{
$str = '';
if ($cart_product['variation'] != null) {
$str = $cart_product['variation'];
}
// $product_stock = $product->stocks->where('variant', $str)->first();
// $price = $product_stock->price;
$price = 0;
$product_stock = $product->stocks->where('variant', $str)->first();
if ($product_stock) {
$price = $product_stock->price * $cart_product['quantity'];
}
if ($product->wholesale_product) {
$wholesalePrice = $product_stock->wholesalePrices->where('min_qty', '<=', $cart_product['quantity'])->where('max_qty', '>=', $cart_product['quantity'])->first();
if ($wholesalePrice) {
$price = $wholesalePrice->price * $cart_product['quantity'];
}
}
if ($product->auction_product) {
$price= $cart_product['price'] * $cart_product['quantity'];
}
//discount calculation
$discount_applicable = false;
if ($product->discount_start_date == null) {
$discount_applicable = true;
} elseif (
strtotime(date('d-m-Y H:i:s')) >= $product->discount_start_date &&
strtotime(date('d-m-Y H:i:s')) <= $product->discount_end_date
) {
$discount_applicable = true;
}
if ($discount_applicable) {
if ($product->discount_type == 'percent') {
$price -= ($price * $product->discount) / 100;
} elseif ($product->discount_type == 'amount') {
$price -= $product->discount;
}
}
// Subtract coupon discount
$price-= $discount;
//Subtract shipping_cost
$price+=$shipping;
//calculation of gst
$gst = 0;
$gst += ($price * $product->gst_rate) / 100;
if ($formatted) {
return format_price(convert_price($gst));
} else {
return $gst;
}
}
}
//compare is seller state and shipping state same or not BY order
if (!function_exists('same_state_shipping_pos')) {
function same_state_shipping_pos($shipping_state)
{
if (empty($shipping_state) || !is_string($shipping_state)) {
return false;
}
if(Auth::user()->user_type=='seller'){
$auth_user= Auth::user();
if (empty($auth_user->shop) || empty($auth_user->shop->business_info)) {
return false;
}
$shop_business = json_decode($auth_user->shop->business_info, true);
if (!is_array($shop_business) || empty($shop_business['state']) || !is_string($shop_business['state'])) {
return false;
}
$seller_state = $shop_business['state'];
}else{
$businessInfoRaw = get_setting('business_info');
if (empty($businessInfoRaw)) {
return false;
}
$business_info = json_decode($businessInfoRaw, true);
if (
!is_array($business_info) ||
empty($business_info['state']) ||
!is_string($business_info['state'])
) {
return false;
}
$seller_state = $business_info['state'];
}
return strtolower(trim($seller_state)) === strtolower(trim($shipping_state));
}
}
// Get Same Seller product
if (!function_exists('get_same_seller_products')) {
function get_same_seller_products($user_id, $limit = 20)
{
$products = Product::where('user_id', $user_id)->isApprovedPublished()->take($limit)->get();
return $products;
}
}
//Get Related Products by Category
if (!function_exists('get_related_products_by_category')) {
function get_related_products_by_category($category_id, $limit = 20)
{
$products = Product::isApprovedPublished()->whereHas('categories', function ($query) use ($category_id) {
$query->where('category_id', $category_id);
})
->take($limit)
->get();
return $products;
}
}
//save social avater in uploads
if (!function_exists('upload_avatar_from_url')) {
function upload_avatar_from_url($avatarUrl, $userId = null, $provider = 'social')
{
if (empty($avatarUrl)) {
return null;
}
try {
$fileContents = file_get_contents($avatarUrl);
if ($fileContents === false) {
return null;
}
$pathInfo = pathinfo(parse_url($avatarUrl, PHP_URL_PATH));
$extension = isset($pathInfo['extension']) ? $pathInfo['extension'] : 'jpg';
$originalName = $provider . '_avatar_' . time() . '.' . $extension;
$fileName = Str::random(40) . '.' . $extension;
$uploadPath = public_path('uploads/all');
if (!File::exists($uploadPath)) {
File::makeDirectory($uploadPath, 0755, true);
}
file_put_contents($uploadPath . '/' . $fileName, $fileContents);
$fileSize = filesize($uploadPath . '/' . $fileName);
$upload = new Upload();
$upload->file_original_name = pathinfo($originalName, PATHINFO_FILENAME);
$upload->file_name = 'uploads/all/' . $fileName;
$upload->user_id = $userId;
$upload->file_size = $fileSize;
$upload->extension = $extension;
$upload->type = 'image';
$upload->external_link = $avatarUrl;
$upload->save();
return $upload->id;
} catch (\Exception $e) {
\Log::error('Avatar upload failed: ' . $e->getMessage());
return null;
}
}
}
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists