????ThemeService.php000064400000015266150072506270007656 0ustar00file('theme_upload'); $filename = $file->getClientOriginalName(); $tempPath = $file->storeAs('temp', $filename); $zip = new ZipArchive(); if ($zip->open(storage_path('app/' . $tempPath)) === TRUE) { $genFolderName = explode('/', $zip->getNameIndex(0))[0]; if ($genFolderName === "__MACOSX") { for ($i = 0; $i < $zip->numFiles; $i++) { if (strpos($zip->getNameIndex($i), "__MACOSX") === false) { $getThemeFolder = explode('/', $zip->getNameIndex($i))[0]; break; } } } $getThemeFolder = explode('.', $genFolderName)[0]; $zip->extractTo(storage_path('app/temp')); $infoPath = storage_path('app/temp/'.$getThemeFolder.'/public/addon/info.php'); if(File::exists($infoPath)) { $extractPath = base_path('resources/themes'); $zip->extractTo($extractPath); $zip->close(); File::chmod($extractPath.'/'.$getThemeFolder.'/public/addon', 0777); $status = 'success'; $message = translate('theme_upload_successfully'); }else { File::cleanDirectory(storage_path('app/temp')); $status = 'error'; $message = translate('invalid_theme'); } }else{ $status = 'error'; $message = translate('theme_upload_fail'); } if (File::exists(base_path('resources/themes/__MACOSX'))) { File::deleteDirectory(base_path('resources/themes/__MACOSX')); } File::cleanDirectory(storage_path('app/temp')); return [ 'status' => $status, 'message'=> $message ]; } public function getPublishData(object $request): array { $themeInfo = include(base_path('resources/themes/'.$request['theme'].'/public/addon/info.php')); if ($request['theme'] != 'default' && (empty($themeInfo['purchase_code']) || empty($themeInfo['username']) || $themeInfo['is_active'] == '0')) { $theme = $request['theme']; return [ 'flag' => 'inactive', 'view' => view(ThemeSetup::ACTIVE_MODAL[VIEW], compact('themeInfo', 'theme'))->render(), ]; } $currentTheme = theme_root_path(); $currentThemeRoutes = include(base_path('resources/themes/'.$currentTheme.'/public/addon/theme_routes.php')); $this->setEnvironmentValue('WEB_THEME', $request['theme']); $reloadAction = 1; $informationModal = ''; if (is_file(base_path('resources/themes/'.$request['theme'].'/public/addon/theme_routes.php'))) { $themeRoutes = include(base_path('resources/themes/'.$request['theme'].'/public/addon/theme_routes.php')); $reloadAction = 0; $informationModal = view(ThemeSetup::INFO_MODAL[VIEW], compact('currentTheme', 'themeInfo', 'themeRoutes', 'currentThemeRoutes'))->render(); } return [ 'reload_action' => $reloadAction, 'informationModal' => $informationModal, ]; } public function getActivationData(object $request): bool { $activationStatus = 0; $remove = ["http://", "https://", "www."]; $url = str_replace($remove, "", url('/')); $full_data = include(base_path('resources/themes/'.$request['theme'].'/public/addon/info.php')); $post = [ base64_decode('dXNlcm5hbWU=') => $request['username'], base64_decode('cHVyY2hhc2Vfa2V5') => $request['purchase_code'], base64_decode('ZG9tYWlu') => $url, ]; $response = Http::post(base64_decode('aHR0cHM6Ly9jaGVjay42YW10ZWNoLmNvbS9hcGkvdjEvZG9tYWluLXJlZ2lzdGVy'), $post)->json(); $status = base64_decode($response['active']) ?? 1; if((int)$status){ $full_data['is_active'] = 1; $full_data['username'] = $request['username']; $full_data['purchase_code'] = $request['purchase_code']; $str = " 'admin', 'sent_to' => 'seller', 'title' => 'Theme Changed to '.ucwords(str_replace('_',' ',theme_root_path())), 'description' => 'Theme Changed Description, time - '.Carbon::now(), 'image' => $request->has('image') ? $this->upload(dir: 'notification/', format: 'webp', image: $request->file('image')) : null, 'status' => 1, 'notification_count' => 1 ]; } public function deleteTheme(object $request): array { if(theme_root_path() == $request['theme']){ $status = 'error'; $message = translate("cannot_delete_the_active_theme"); }else { $full_path = base_path('resources/themes/'.$request['theme']); if(File::deleteDirectory($full_path)){ $status = 'success'; $message = translate("theme_delete_successfully"); }else{ $status = 'error'; $message = translate("theme_delete_fail"); } } return [ 'status' => $status, 'message'=> $message ]; } function getDirectories(): array { $scan = scandir(base_path('resources/themes')); $themesFolders = array_diff($scan, ['.', '..','.DS_Store']); $themes = []; foreach ($themesFolders as $folder){ if(file_exists(base_path('resources/themes/'.$folder.'/public/addon/info.php'))) { $info = include(base_path('resources/themes/'.$folder.'/public/addon/info.php')); }else { $info = []; } $themes[$folder] = $info; } return $themes; } } WithdrawRequestService.php000064400000003023150072506270011742 0ustar00 $addedBy === 'vendor' ? $vendorId : '', 'amount' => currencyConverter($request['amount']), 'transaction_note' => null, 'withdrawal_method_id' => $request['withdraw_method'], 'withdrawal_method_fields' => json_encode($this->getWithdrawMethodFields(request:$request,withdrawMethod:$withdrawMethod)), 'approved' => 0, 'created_at' => now(), 'updated_at' => now() ]; } /** * @param object $request * @param object $withdrawMethod * @return array */ public function getWithdrawMethodFields(object $request, object $withdrawMethod):array { $inputFields = array_column($withdrawMethod['method_fields'], 'input_name'); $method['method_name'] = $withdrawMethod['method_name']; $values = $request->all(); foreach ($inputFields as $field) { if(key_exists($field, $values)) { $method[$field] = $values[$field]; } } return $method; } } CartService.php000064400000033456150072506270007506 0ustar00makeVariation( request:$request, colorName: $colorName, choiceOptions: json_decode($product['choice_options']) ); if ($variation != null) { $count = count(json_decode($product->variation)); for ($i = 0; $i < $count; $i++) { if (json_decode($product->variation)[$i]->type == $variation) { $discount = $this->getDiscountAmount(price:json_decode($product->variation)[$i]->price,discount: $product['discount'],discountType: $product['discount_type']); $tax = $product->tax_model=='exclude' ? $this->getTaxAmount(price: json_decode($product->variation)[$i]->price-$discount, tax: $product['tax']) : 0; $price = json_decode($product->variation)[$i]->price - $discount + $tax; $quantity = json_decode($product->variation)[$i]->qty; } } } else { $discount = $this->getDiscountAmount(price:$product['unit_price'],discount:$product['discount'],discountType:$product['discount_type']); $tax = $product->tax_model=='exclude' ? $this->getTaxAmount(price:$product->unit_price-$discount, tax:$product['tax']) : 0; $price = $product['unit_price'] - $discount + $tax; $quantity = $product['current_stock']; } $requestQuantity = (int)$request['quantity']; $inCartStatus = 0; $cartData = session()->get(session(SessionKey::CURRENT_USER)) ?? []; $inCartData = null; foreach ($cartData as $cart) { if(is_array($cart) && $cart['id'] == $product['id'] && $cart['variant'] == $variation){ $inCartStatus = 1; if ($product['discount_type'] == 'percent') { $discount = ($cart['price'] * $product['discount']) / 100; } elseif ($product['discount_type'] == 'flat') { $discount = $product['discount']; } $inCartData = [ 'price' => usdToDefaultCurrency(amount:($cart['price']-$discount+$tax)*$cart['quantity']), 'discount' => usdToDefaultCurrency($discount), 'tax' => $product->tax_model == 'exclude' ? setCurrencySymbol(amount: usdToDefaultCurrency(amount: $tax * $cart['quantity']), currencyCode: getCurrencyCode()) : 'incl.', 'quantity' => (int)$cart['quantity'], 'variant' => $cart['variant'], 'id' => $cart['id'], ]; $requestQuantity = (int)$request['quantity_in_cart']; } } return [ 'price' => usdToDefaultCurrency(amount: $price * $requestQuantity), 'discount' => usdToDefaultCurrency($discount), 'tax' => $product->tax_model == 'exclude' ? setCurrencySymbol(amount: usdToDefaultCurrency(amount: $tax * $requestQuantity), currencyCode: getCurrencyCode()) : 'incl.', 'quantity' => $product['product_type'] == 'physical' ? $quantity : 100, 'inCartStatus' => $inCartStatus, 'inCartData' => $inCartData, 'requestQuantity' => $requestQuantity, ]; } public function makeVariation(object $request , string|null $colorName ,array $choiceOptions):string { $variation = ''; if ($colorName) { $variation = $colorName; } foreach ($choiceOptions as $key => $choice) { if ($variation != null) { $variation .= '-' . str_replace(' ', '', $request[$choice->name]); } else { $variation .= str_replace(' ', '', $request[$choice->name]); } } return $variation; } public function getUserId():int { $userId = 0; if(Str::contains(session(SessionKey::CURRENT_USER), 'saved-customer')) { $userId = explode('-',session(SessionKey::CURRENT_USER))[2]; } return $userId; } public function getUserType():string { $userType = 'walking-customer'; if(Str::contains(session(SessionKey::CURRENT_USER), 'saved-customer')) { $userType = 'saved-customer'; } return $userType; } public function getNewCartSession( string|int $cartId):Void { if(!session()->has(SessionKey::CURRENT_USER)){ session()->put(SessionKey::CURRENT_USER,$cartId); } if(!session()->has(SessionKey::CART_NAME)) { if(!in_array($cartId,session(SessionKey::CART_NAME)??[])) { session()->push(SessionKey::CART_NAME, $cartId); } } } public function getCartKeeper():Void { $cartId = session(SessionKey::CURRENT_USER); $cart = session($cartId); $cartKeeper = []; if (session()->has($cartId) && count($cart) > 0) { foreach ($cart as $cartItem) { $cartKeeper[] = $cartItem; } } session()->put(session(SessionKey::CURRENT_USER) , $cartKeeper); } public function getVariationPrice(array $variation,string $variant):float { $count = count($variation); $price = 0; for ($i = 0; $i < $count; $i++) { if ($variation[$i]->type == $variant) { $price = $variation[$i]->price; } } return $price; } public function getVariationQuantity(array $variation,string $variant):int { $count = count($variation); $productQuantity = 0; for ($i = 0; $i < $count; $i++) { if ($variation[$i]->type == $variant) { $productQuantity = $variation[$i]->qty; } } return $productQuantity; } public function getCurrentQuantity($variation,$variant,$quantity):int { $productQuantity = $this->getVariationQuantity($variation,$variant); return $productQuantity - $quantity; } public function addCartDataOnSession(object $product,int $quantity,float $price,float $discount,string $variant,array $variations):array { $cartId =session(SessionKey::CURRENT_USER); $sessionData =[ 'id' => $product['id'], 'customerId' => $this->getUserId(), 'customerOnHold' => false, 'quantity' => $quantity, 'price' => $price, 'name' => $product['name'], 'productType' => $product['product_type'], 'image'=> $product['thumbnail'], 'discount' => $discount, 'tax_model'=>$product['tax_model'], 'variant' => $variant, 'variations' => $variations, ]; if (session()->has($cartId)) { $keeper = []; foreach (session($cartId) as $item) { $keeper[] = $item; } $keeper[] = $sessionData; if(!isset(session()->get($cartId)['add_to_cart_time'])) { $keeper += ['add_to_cart_time' => Carbon::now()]; } session()->put($cartId, $keeper); } else { session()->put($cartId, [$sessionData]+['add_to_cart_time' => Carbon::now()]); } return $sessionData ; } public function getQuantityAndUpdateTime(object $request,object $product):int { $quantity = 0 ; $cartId = session(SessionKey::CURRENT_USER); $cart = session($cartId); $keeper=[]; foreach ($cart as $item){ if (is_array($item)) { $variantCheck = false; if(!empty($item['variant']) && ($item['variant'] ==$request['variant']) && ($item['id'] == $request['key'])){ $variantCheck = true; }elseif(empty($request['variant']) && $item['id'] == $request['key']){ $variantCheck = true; } if ($variantCheck) { $variant = ''; if($item['variations']) { foreach($item['variations'] as $value) { if($variant!=null) { $variant .= '-' . str_replace(' ', '', $value); }else{ $variant .= str_replace(' ', '', $value); } } } if ($variant != null) { $productQuantity = $this->getVariationQuantity(json_decode($product['variation']),$variant); } else { $productQuantity = $product['current_stock']; } $quantity = $productQuantity - $request['quantity'] ; if($product['product_type'] =='physical' && $quantity < 0) { return $quantity ; } $item['quantity'] = $request['quantity']; } $keeper[] = $item; } } $keeper += ['add_to_cart_time' => Carbon::now()]; session()->put($cartId, $keeper); return $quantity; } public function getNewCartId():void { $cartId = 'walking-customer-'.rand(10,1000); session()->put(SessionKey::CURRENT_USER,$cartId); if(!in_array($cartId,session(SessionKey::CART_NAME)??[])) { session()->push(SessionKey::CART_NAME, $cartId); } } public function getCartSubtotalCalculation(object $product,array $cartItem,array $calculation):array { $taxCalculate = $calculation['taxCalculate'] + ($this->getTaxAmount($cartItem['price'], $product['tax'])*$cartItem['quantity']); $productSubtotal = (($cartItem['price']-$cartItem['discount']) * $cartItem['quantity']); return [ 'countItem' => $calculation['countItem']+1, 'taxCalculate' => $taxCalculate , 'totalTaxShow' => $calculation['totalTaxShow'] + $taxCalculate, 'totalTax' => $taxCalculate, 'productSubtotal' => $productSubtotal, 'subtotal' => $calculation['subtotal'] + $productSubtotal - ($cartItem['tax_model'] == 'include'?$taxCalculate : 0 ), 'discountOnProduct' => $calculation['discountOnProduct'] + ($cartItem['discount'] * $cartItem['quantity']), ]; } public function getTotalCalculation(array $subTotalCalculation, string $cartName):array { $total = $subTotalCalculation['subtotal']; $extraDiscount = session()->get($cartName)['ext_discount'] ?? 0; $extraDiscountType = session()->get($cartName)['ext_discount_type'] ?? 'amount'; if ($extraDiscountType == 'percent' && $extraDiscount > 0) { $extraDiscount = (($subTotalCalculation['subtotal']+$subTotalCalculation['discountOnProduct']) * $extraDiscount) / 100; } if ($extraDiscount) { $total -= $extraDiscount; } $couponDiscount = 0; if (isset(session()->get($cartName)['coupon_discount'])) { $couponDiscount = session()->get($cartName)['coupon_discount']; } return [ 'total' => $total, 'couponDiscount' => $couponDiscount, 'extraDiscount' => $extraDiscount ]; } public function customerOnHoldStatus($status):void { $cart = session(session(SessionKey::CURRENT_USER)); $cartKeeper = []; if (session()->has(session(SessionKey::CURRENT_USER)) && count($cart) > 0) { foreach ($cart as $cartItem) { if (is_array($cartItem)) { $cartItem['customerOnHold'] = $status; } $cartKeeper[] = $cartItem; } } session()->put(session(SessionKey::CURRENT_USER) , $cartKeeper); } public function checkCurrentStock(string $variant,array $variation,int $productQty,int $quantity):int { if ($variant != null) { $currentQty = $this->getCurrentQuantity(variation:$variation,variant: $variant,quantity: $quantity); }else { $currentQty = $productQty - $quantity; } return $currentQty; } public function checkProductTypeDigital(string|int $cartId):bool { $cart = session($cartId); $isDigitalProduct = false; foreach($cart as $item) { if(is_array($item) && $item['productType'] == 'digital' ) { $isDigitalProduct = true; } } return $isDigitalProduct; } public function getCustomerInfo(object|null $currentCustomerData,int $customerId):array { if($currentCustomerData) { $customerName = $currentCustomerData['f_name'] . ' ' . $currentCustomerData['l_name']; $customerPhone = $currentCustomerData['phone']; }else{ $customerName = ""; $customerPhone = ""; session()->forget(session($customerId)); $this->getNewCartId(); } return [ 'customerName'=>$customerName, 'customerPhone'=>$customerPhone ]; } } FileManagerService.php000064400000003551150072506270010760 0ustar00hasfile('images')) { $images = $request->file('images'); foreach ($images as $image) { $name = $image->getClientOriginalName(); Storage::disk('local')->put($request['path'] . '/' . $name, file_get_contents($image)); } } if ($request->hasfile('file')) { Madzipper::make($request->file('file'))->extractTo('storage/app/' . $request['path']); } return true; } private function getFileName($path): bool|string { $temp = explode('/', $path); return end($temp); } private function getFileExtension($name): bool|string { $temp = explode('.', $name); return end($temp); } private function getPathForDatabase($fullPath): bool|string { $temp = explode('/', $fullPath, 3); return end($temp); } public function formatFileAndFolders($files, $type): array { $data = []; foreach ($files as $file) { $name = self::getFileName($file); $ext = self::getFileExtension($name); $path = ''; if ($type == 'file') { $path = $file; } if ($type == 'folder') { $path = $file; } if (in_array($ext, ['jpg', 'png', 'jpeg', 'gif', 'bmp', 'tif', 'tiff', 'webp']) || $type == 'folder') $data[] = [ 'name' => $name, 'path' => $path, 'db_path' => self::getPathForDatabase($file), 'type' => $type ]; } return $data; } } SettingService.php000064400000012037150072506270010222 0ustar00each(fn($item, $key) => $request[$item] = $request->has($item) ? (int)$request[$item] : 0); $validation = [ 'gateway' => 'required|in:releans,twilio,nexmo,2factor,msg91,hubtel,paradox,signal_wire,019_sms,viatech,global_sms,akandit_sms,sms_to,alphanet_sms', 'mode' => 'required|in:live,test' ]; $additional_data = []; if ($request['gateway'] == 'releans') { $additional_data = [ 'status' => 'required|in:1,0', 'api_key' => 'required', 'from' => 'required', 'otp_template' => 'required' ]; } elseif ($request['gateway'] == 'twilio') { $additional_data = [ 'status' => 'required|in:1,0', 'sid' => 'required', 'messaging_service_sid' => 'required', 'token' => 'required', 'from' => 'required', 'otp_template' => 'required' ]; } elseif ($request['gateway'] == 'nexmo') { $additional_data = [ 'status' => 'required|in:1,0', 'api_key' => 'required', 'api_secret' => 'required', 'token' => 'required', 'from' => 'required', 'otp_template' => 'required' ]; } elseif ($request['gateway'] == '2factor') { $additional_data = [ 'status' => 'required|in:1,0', 'api_key' => 'required' ]; } elseif ($request['gateway'] == 'msg91') { $additional_data = [ 'status' => 'required|in:1,0', 'template_id' => 'required', 'auth_key' => 'required', ]; } elseif ($request['gateway'] == 'hubtel') { $additional_data = [ 'status' => 'required|in:1,0', 'sender_id' => 'required', 'client_id' => 'required', 'client_secret' => 'required', 'otp_template' => 'required', ]; } elseif ($request['gateway'] == 'paradox') { $additional_data = [ 'status' => 'required|in:1,0', 'api_key' => 'required', 'sender_id' => 'required', ]; } elseif ($request['gateway'] == 'signal_wire') { $additional_data = [ 'status' => 'required|in:1,0', 'project_id' => 'required', 'token' => 'required', 'space_url' => 'required', 'from' => 'required', 'otp_template' => 'required', ]; } elseif ($request['gateway'] == '019_sms') { $additional_data = [ 'status' => 'required|in:1,0', 'password' => 'required', 'username' => 'required', 'username_for_token' => 'required', 'sender' => 'required', 'otp_template' => 'required', ]; } elseif ($request['gateway'] == 'viatech') { $additional_data = [ 'status' => 'required|in:1,0', 'api_url' => 'required', 'api_key' => 'required', 'sender_id' => 'required', 'otp_template' => 'required', ]; } elseif ($request['gateway'] == 'global_sms') { $additional_data = [ 'status' => 'required|in:1,0', 'user_name' => 'required', 'password' => 'required', 'from' => 'required', 'otp_template' => 'required', ]; } elseif ($request['gateway'] == 'akandit_sms') { $additional_data = [ 'status' => 'required|in:1,0', 'username' => 'required', 'password' => 'required', 'otp_template' => 'required', ]; } elseif ($request['gateway'] == 'sms_to') { $additional_data = [ 'status' => 'required|in:1,0', 'api_key' => 'required', 'sender_id' => 'required', 'otp_template' => 'required', ]; } elseif ($request['gateway'] == 'alphanet_sms') { $additional_data = [ 'status' => 'required|in:1,0', 'api_key' => 'required', 'otp_template' => 'required', ]; } return $request->validate(array_merge($validation, $additional_data));; } } LanguageService.php000064400000015214150072506270010330 0ustar00 $data) { if ($data['code'] != $request['code']) { if (!array_key_exists('default', $data)) { $default = array('default' => $data['code'] == 'en'); $data = array_merge($data, $default); } $languageArray[] = $data; $codes[] = $data['code']; } } $codes[] = $request['code']; if (!file_exists(base_path('resources/lang/' . $request['code']))) { mkdir(base_path('resources/lang/' . $request['code']), 0777, true); } $lang_file = fopen(base_path('resources/lang/' . $request['code'] . '/' . 'messages.php'), "w") or die("Unable to open file!"); $read = file_get_contents(base_path('resources/lang/en/messages.php')); fwrite($lang_file, $read); $languageValue = json_decode($language['value'], true); $languageCount = count($languageValue); $id = $languageValue[$languageCount-1]['id']+1; $languageArray[] = [ 'id' => $id, 'name' => $request['name'], 'code' => $request['code'], 'direction' => $request['direction'], 'status' => 0, 'default' => false, ]; return [ 'languages' => $languageArray, 'codes' => $codes, ]; } public function getStatusData(object $request, object $language): array { $languageArray = []; foreach (json_decode($language['value'], true) as $key => $data) { if ($data['code'] == $request['code']) { $lang = [ 'id' => $data['id'], 'name' => $data['name'], 'direction' => $data['direction'] ?? 'ltr', 'code' => $data['code'], 'status' => $data['status'] == 1 ? 0 : 1, 'default' => (array_key_exists('default', $data) ? $data['default'] : $data['code'] == 'en'), ]; } else { $lang = [ 'id' => $data['id'], 'name' => $data['name'], 'direction' => $data['direction'] ?? 'ltr', 'code' => $data['code'], 'status' => $data['status'], 'default' => (array_key_exists('default', $data) ? $data['default'] : $data['code'] == 'en'), ]; } $languageArray[] = $lang; } return $languageArray; } public function getDefaultData(object $request, object $language): array { $languageArray = []; foreach (json_decode($language['value'], true) as $key => $data) { if ($data['code'] == $request['code']) { $lang = [ 'id' => $data['id'], 'name' => $data['name'], 'direction' => $data['direction'] ?? 'ltr', 'code' => $data['code'], 'status' => 1, 'default' => true, ]; } else { $lang = [ 'id' => $data['id'], 'name' => $data['name'], 'direction' => $data['direction'] ?? 'ltr', 'code' => $data['code'], 'status' => $data['status'], 'default' => false, ]; } $languageArray[] = $lang; } return $languageArray; } public function getUpdateData(object $request, object $language): array { $languageArray = []; foreach (json_decode($language['value'], true) as $key => $data) { if ($data['code'] == $request['code']) { $lang = [ 'id' => $data['id'], 'name' => $request['name'], 'direction' => $request['direction'] ?? 'ltr', 'code' => $data['code'], 'status' => 0, 'default' => (array_key_exists('default', $data) ? $data['default'] : (($data['code'] == 'en') ? true : false)), ]; } else { $lang = [ 'id' => $data['id'], 'name' => $data['name'], 'direction' => $data['direction'] ?? 'ltr', 'code' => $data['code'], 'status' => $data['status'], 'default' => (array_key_exists('default', $data) ? $data['default'] : (($data['code'] == 'en') ? true : false)), ]; } $languageArray[] = $lang; } return $languageArray; } public function getLangDelete(object $language, string $code): array { $del_default = false; foreach (json_decode($language['value'], true) as $key => $data) { if ($data['code'] == $code && array_key_exists('default', $data) && $data['default']) { $del_default = true; } } $languageArray = []; foreach (json_decode($language['value'], true) as $key => $data) { if ($data['code'] != $code) { $lang_data = [ 'id' => $data['id'], 'name' => $data['name'], 'direction' => $data['direction'] ?? 'ltr', 'code' => $data['code'], 'status' => ($del_default && $data['code'] == 'en') ? 1 : $data['status'], 'default' => ($del_default && $data['code'] == 'en') ? true : (array_key_exists('default', $data) ? $data['default'] : $data['code'] == 'en'), ]; $languageArray[] = $lang_data; } } $dir = base_path('resources/lang/' . $code); if (File::isDirectory($dir)) { $it = new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS); $files = new RecursiveIteratorIterator($it, RecursiveIteratorIterator::CHILD_FIRST); foreach ($files as $file) { if ($file->isDir()) { rmdir($file->getRealPath()); } else { unlink($file->getRealPath()); } } rmdir($dir); } return $languageArray; } } ProductService.php000064400000062642150072506270010234 0ustar00has('colors_active') && $request->has('colors') && count($request['colors']) > 0) { foreach ($request['colors'] as $color) { $color_ = Str::replace('#', '', $color); $img = 'color_image_' . $color_; if ($request->file($img)) { $image = $this->upload(dir: 'product/', format: 'webp', image: $request->file($img)); $colorImageSerial[] = [ 'color' => $color_, 'image_name' => $image, ]; $imageNames[] = $image; }else if($request->has($img)){ $image = $request->$img[0]; $colorImageSerial[] = [ 'color' => $color_, 'image_name' => $image, ]; $imageNames[] = $image; } } } if ($request->file('images')) { foreach ($request->file('images') as $image) { $images = $this->upload(dir: 'product/', format: 'webp', image: $image); $imageNames[] = $images; if($request->has('colors_active') && $request->has('colors') && count($request['colors']) > 0){ $colorImageSerial[] = [ 'color' => null, 'image_name' => $images, ]; } } } if(!empty($request->existing_images)){ foreach ($request->existing_images as $image) { $colorImageSerial[] = [ 'color' => null, 'image_name' => $image, ]; $imageNames[] = $image; } } return [ 'image_names' => $imageNames ?? [], 'colored_image_names' => $colorImageSerial ?? [] ]; } public function getProcessedUpdateImages(object $request, object $product): array { $productImages = json_decode($product->images); $colorImageArray = []; if ($request->has('colors_active') && $request->has('colors') && count($request->colors) > 0) { $dbColorImage = $product->color_image ? json_decode($product->color_image, true) : []; if (!$dbColorImage) { foreach ($productImages as $image) { $dbColorImage[] = [ 'color' => null, 'image_name' => $image, ]; } } $dbColorImageFinal = []; if ($dbColorImage) { foreach ($dbColorImage as $colorImage) { if ($colorImage['color']) { $dbColorImageFinal[] = $colorImage['color']; } } } $inputColors = []; foreach ($request->colors as $color) { $inputColors[] = str_replace('#', '', $color); } $colorImageArray = $dbColorImage; foreach ($inputColors as $color) { if (!in_array($color, $dbColorImageFinal)) { $image = 'color_image_' . $color; if ($request->file($image)) { $imageName = $this->upload(dir: 'product/', format: 'webp', image: $request->file($image)); $productImages[] = $imageName; $colorImages = [ 'color' => $color, 'image_name' => $imageName, ]; $colorImageArray[] = $colorImages; } } } } if ($request->file('images')) { foreach ($request->file('images') as $image) { $imageName = $this->upload(dir: 'product/', format: 'webp', image: $image); $productImages[] = $imageName; if ($request->has('colors_active') && $request->has('colors') && count($request->colors) > 0) { $colorImageArray[] = [ 'color' => null, 'image_name' => $imageName, ]; } } } return [ 'image_names' => $productImages ?? [], 'colored_image_names' => $colorImageArray ?? [] ]; } public function getCategoriesArray(object $request): array { $category = []; if ($request['category_id'] != null) { $category[] = [ 'id' => $request['category_id'], 'position' => 1, ]; } if ($request['sub_category_id'] != null) { $category[] = [ 'id' => $request['sub_category_id'], 'position' => 2, ]; } if ($request['sub_sub_category_id'] != null) { $category[] = [ 'id' => $request['sub_sub_category_id'], 'position' => 3, ]; } return $category; } public function getColorsObject(object $request): bool|string { if ($request->has('colors_active') && $request->has('colors') && count($request['colors']) > 0) { $colors = $request['product_type'] == 'physical' ? json_encode($request['colors']) : json_encode([]); } else { $colors = json_encode([]); } return $colors; } public function getSlug(object $request): string { return Str::slug($request['name'][array_search('en', $request['lang'])], '-') . '-' . Str::random(6); } public function getChoiceOptions(object $request): array { $choice_options = []; if ($request->has('choice')) { foreach ($request->choice_no as $key => $no) { $str = 'choice_options_' . $no; $item['name'] = 'choice_' . $no; $item['title'] = $request->choice[$key]; $item['options'] = explode(',', implode('|', $request[$str])); $choice_options[] = $item; } } return $choice_options; } public function getOptions(object $request): array { $options = []; if ($request->has('colors_active') && $request->has('colors') && count($request->colors) > 0) { $options[] = $request->colors; } if ($request->has('choice_no')) { foreach ($request->choice_no as $no) { $name = 'choice_options_' . $no; $my_str = implode('|', $request[$name]); $options[] = explode(',', $my_str); } } return $options; } public function getCombinations(array $arrays): array { $result = [[]]; foreach ($arrays as $property => $property_values) { $tmp = []; foreach ($result as $result_item) { foreach ($property_values as $property_value) { $tmp[] = array_merge($result_item, [$property => $property_value]); } } $result = $tmp; } return $result; } public function getSkuCombinationView(object $request): string { $colorsActive = ($request->has('colors_active') && $request->has('colors') && count($request['colors']) > 0) ? 1 : 0; $unitPrice = $request['unit_price']; $productName = $request['name'][array_search('en', $request['lang'])]; $options = $this->getOptions(request: $request); $combinations = $this->getCombinations(arrays: $options); return view(Product::SKU_COMBINATION[VIEW], compact('combinations', 'unitPrice', 'colorsActive', 'productName'))->render(); } public function getVariations(object $request, array $combinations): array { $variations = []; if (count($combinations[0]) > 0) { foreach ($combinations as $combination) { $str = ''; foreach ($combination as $k => $item) { if ($k > 0) { $str .= '-' . str_replace(' ', '', $item); } else { if ($request->has('colors_active') && $request->has('colors') && count($request['colors']) > 0) { $color_name = $this->color->where('code', $item)->first()->name; $str .= $color_name; } else { $str .= str_replace(' ', '', $item); } } } $item = []; $item['type'] = $str; $item['price'] = currencyConverter(abs($request['price_' . str_replace('.', '_', $str)])); $item['sku'] = $request['sku_' . str_replace('.', '_', $str)]; $item['qty'] = abs($request['qty_' . str_replace('.', '_', $str)]); $variations[] = $item; } } return $variations; } public function getTotalQuantity(array $variations): int { $sum = 0; foreach ($variations as $item) { if (isset($item['qty'])) { $sum += $item['qty']; } } return $sum; } public function getCategoryDropdown(object $request, object $categories): string { $dropdown = ''; foreach ($categories as $row) { if ($row->id == $request['sub_category']) { $dropdown .= ''; } else { $dropdown .= ''; } } return $dropdown; } public function deleteImages(object $product): bool { foreach (json_decode($product['images']) as $image) { $this->delete(filePath: '/product/' . $image); } $this->delete(filePath: '/product/thumbnail/' . $product['thumbnail']); return true; } public function deleteImage(object $request, object $product): array { $colors = json_decode($product['colors']); $color_image = json_decode($product['color_image']); $images = []; $color_images = []; if($colors && $color_image){ foreach($color_image as $img){ if($img->color != $request['color'] && $img->image_name != $request['name']){ $color_images[] = [ 'color' =>$img->color!=null ? $img->color:null, 'image_name' =>$img->image_name, ]; } } } foreach (json_decode($product['images']) as $image) { if ($image != $request['name']) { $images[] = $image; } } return [ 'images' => $images, 'color_images' => $color_images ]; } public function getAddProductData(object $request, string $addedBy): array { $processedImages = $this->getProcessedImages(request: $request); //once the images are processed do not call this function again just use the variable $combinations = $this->getCombinations($this->getOptions(request: $request)); $variations = $this->getVariations(request: $request, combinations: $combinations); $stockCount = count($combinations[0]) > 0 ? $this->getTotalQuantity(variations: $variations) : (integer)$request['current_stock']; $digitalFile = ''; if ($request['product_type'] == 'digital' && $request['digital_product_type'] == 'ready_product') { $digitalFile = $this->fileUpload(dir: 'product/digital-product/', format: $request['digital_file_ready']->getClientOriginalExtension(), file: $request['digital_file_ready']); } return [ 'added_by' => $addedBy, 'user_id' => $addedBy == 'admin' ? auth('admin')->id() : auth('seller')->id(), 'name' => $request['name'][array_search('en', $request['lang'])], 'code' => $request['code'], 'slug' => $this->getSlug($request), 'category_ids' => json_encode($this->getCategoriesArray(request: $request)), 'category_id' => $request['category_id'], 'sub_category_id' => $request['sub_category_id'], 'sub_sub_category_id' => $request['sub_sub_category_id'], 'brand_id' => $request['brand_id'], 'unit' => $request['product_type'] == 'physical' ? $request['unit'] : null, 'digital_product_type' => $request['product_type'] == 'digital' ? $request['digital_product_type'] : null, 'product_type' => $request['product_type'], 'details' => $request['description'][array_search('en', $request['lang'])], 'colors' => $this->getColorsObject(request: $request), 'choice_options' => $request['product_type'] == 'physical' ? json_encode($this->getChoiceOptions(request: $request)) : json_encode([]), 'variation' => $request['product_type'] == 'physical' ? json_encode($variations) : json_encode([]), 'unit_price' => currencyConverter(amount: $request['unit_price']), 'purchase_price' => 0, 'tax' => $request['tax_type'] == 'flat' ? currencyConverter(amount: $request['tax']) : $request['tax'], 'tax_type' => $request['tax_type'], 'tax_model' => $request['tax_model'], 'discount' => $request['discount_type'] == 'flat' ? currencyConverter(amount: $request['discount']) : $request['discount'], 'discount_type' => $request['discount_type'], 'attributes' => $request['product_type'] == 'physical' ? json_encode($request['choice_attributes']) : json_encode([]), 'current_stock' => $request['product_type'] == 'physical' ? abs($stockCount) : 999999999, 'minimum_order_qty' => $request['minimum_order_qty'], 'video_provider' => 'youtube', 'video_url' => $request['video_url'], 'status' => $addedBy == 'admin' ? 1 : 0, 'request_status' => $addedBy == 'admin' ? 1 : (getWebConfig(name: 'new_product_approval') == 1 ? 0 : 1), 'shipping_cost' => $request['product_type'] == 'physical' ? currencyConverter(amount: $request['shipping_cost']) : 0, 'multiply_qty' => ($request['product_type'] == 'physical') ? ($request['multiply_qty'] == 'on' ? 1 : 0) : 0, //to be changed in form multiply_qty 'color_image' => json_encode($processedImages['colored_image_names']), 'images' => json_encode($processedImages['image_names']), 'thumbnail' =>$request->has('image')? $this->upload(dir: 'product/thumbnail/', format: 'webp', image: $request['image']):$request->existing_thumbnail, 'digital_file_ready' => $digitalFile, 'meta_title' => $request['meta_title'], 'meta_description' => $request['meta_description'], 'meta_image' => $request->has('meta_image') ?$this->upload(dir: 'product/meta/', format: 'webp', image: $request['meta_image']) : $request->existing_meta_image, ]; } public function getUpdateProductData(object $request, object $product, string $updateBy): array { $processedImages = $this->getProcessedUpdateImages(request: $request, product: $product); $combinations = $this->getCombinations($this->getOptions(request: $request)); $variations = $this->getVariations(request: $request, combinations: $combinations); $stockCount = count($combinations[0]) > 0 ? $this->getTotalQuantity(variations: $variations) : (integer)$request['current_stock']; $digitalFile = null; if ($request['product_type'] == 'digital') { if ($request['digital_product_type'] == 'ready_product' && $request->hasFile('digital_file_ready')) { $digitalFile = $this->update(dir: 'product/digital-product/', oldImage: $product['digital_file_ready'], format: $request['digital_file_ready']->getClientOriginalExtension(), image: $request['digital_file_ready'], fileType: 'file'); } elseif (($request['digital_product_type'] == 'ready_after_sell') && $product['digital_file_ready']) { $this->delete(filePath: 'product/digital-product/' . $product['digital_file_ready']); } } elseif ($request['product_type'] == 'physical' && $product['digital_file_ready']) { $this->delete(filePath: 'product/digital-product/' . $product['digital_file_ready']); } $dataArray = [ 'name' => $request['name'][array_search('en', $request['lang'])], 'code' => $request['code'], 'product_type' => $request['product_type'], 'category_ids' => json_encode($this->getCategoriesArray(request: $request)), 'category_id' => $request['category_id'], 'sub_category_id' => $request['sub_category_id'], 'sub_sub_category_id' => $request['sub_sub_category_id'], 'brand_id' => $request['brand_id'], 'unit' => $request['product_type'] == 'physical' ? $request['unit'] : null, 'digital_product_type' => $request['product_type'] == 'digital' ? $request['digital_product_type'] : null, 'details' => $request['description'][array_search('en', $request['lang'])], 'colors' => $this->getColorsObject(request: $request), 'choice_options' => $request['product_type'] == 'physical' ? json_encode($this->getChoiceOptions(request: $request)) : json_encode([]), 'variation' => $request['product_type'] == 'physical' ? json_encode($variations) : json_encode([]), 'unit_price' => currencyConverter(amount: $request['unit_price']), 'purchase_price' => 0, 'tax' => $request['tax_type'] == 'flat' ? currencyConverter(amount: $request['tax']) : $request['tax'], 'tax_type' => $request['tax_type'], 'tax_model' => $request['tax_model'], 'discount' => $request['discount_type'] == 'flat' ? currencyConverter(amount: $request['discount']) : $request['discount'], 'discount_type' => $request['discount_type'], 'attributes' => $request['product_type'] == 'physical' ? json_encode($request['choice_attributes']) : json_encode([]), 'current_stock' => $request['product_type'] == 'physical' ? abs($stockCount) : 999999999, 'minimum_order_qty' => $request['minimum_order_qty'], 'video_provider' => 'youtube', 'video_url' => $request['video_url'], 'shipping_cost' => $request['product_type'] == 'physical' ? (getWebConfig(name: 'product_wise_shipping_cost_approval')==1 && $product->shipping_cost == currencyConverter($request->shipping_cost) ? $product->shipping_cost : currencyConverter(amount: $request['shipping_cost'])) : 0, 'multiply_qty' => ($request['product_type'] == 'physical') ? ($request['multiply_qty'] == 'on' ? 1 : 0) : 0, 'color_image' => json_encode($processedImages['colored_image_names']), 'images' => json_encode($processedImages['image_names']), 'digital_file_ready' => $digitalFile, 'meta_title' => $request['meta_title'], 'meta_description' => $request['meta_description'], 'meta_image' => $request->file('meta_image') ? $this->update(dir: 'product/meta/', oldImage: $product['meta_image'], format: 'png', image: $request['meta_image']) : $product['meta_image'], ]; if ($request->file('image')) { $dataArray += [ 'thumbnail' => $this->update(dir: 'product/thumbnail/', oldImage: $product['thumbnail'], format: 'webp', image: $request['image'], fileType: 'image') ]; } if($updateBy=='seller' && getWebConfig(name: 'product_wise_shipping_cost_approval')==1 && $product->shipping_cost != currencyConverter($request->shipping_cost)) { $dataArray += [ 'temp_shipping_cost' => currencyConverter($request->shipping_cost), 'is_shipping_cost_updated' => 0 ]; } if($updateBy=='seller' && $product->request_status == 2){ $dataArray += [ 'request_status' => 0 ]; } if($updateBy=='admin' && $product->added_by == 'seller' && $product->request_status == 2){ $dataArray += [ 'request_status' => 1 ]; } return $dataArray; } public function getImportBulkProductData(object $request, string $addedBy): array { try { $collections = (new FastExcel)->import($request->file('products_file')); } catch (\Exception $exception) { return [ 'status' => false, 'message' => translate('you_have_uploaded_a_wrong_format_file') . ',' . translate('please_upload_the_right_file'), 'products' => [] ]; } $columnKey = [ 'name', 'category_id', 'sub_category_id', 'sub_sub_category_id', 'brand_id', 'unit', 'minimum_order_qty', 'refundable', 'youtube_video_url', 'unit_price', // 'purchase_price', 'tax', 'discount', 'discount_type', 'current_stock', 'details', 'thumbnail' ]; $skip = ['youtube_video_url', 'details', 'thumbnail']; if (count($collections) <= 0) { return [ 'status' => false, 'message' => translate('you_need_to_upload_with_proper_data'), 'products' => [] ]; } $products = []; foreach ($collections as $collection) { foreach ($collection as $key => $value) { if ($key != "" && !in_array($key, $columnKey)) { return [ 'status' => false, 'message' => translate('Please_upload_the_correct_format_file'), 'products' => [] ]; } if ($key != "" && $value === "" && !in_array($key, $skip)) { return [ 'status' => false, 'message' => translate('Please fill ' . $key . ' fields'), 'products' => [] ]; } } $thumbnail = explode('/', $collection['thumbnail']); $products[] = [ 'name' => $collection['name'], 'slug' => Str::slug($collection['name'], '-') . '-' . Str::random(6), 'category_ids' => json_encode([['id' => (string)$collection['category_id'], 'position' => 1], ['id' => (string)$collection['sub_category_id'], 'position' => 2], ['id' => (string)$collection['sub_sub_category_id'], 'position' => 3]]), 'category_id' => $collection['category_id'], 'sub_category_id' => $collection['sub_category_id'], 'sub_sub_category_id' => $collection['sub_sub_category_id'], 'brand_id' => $collection['brand_id'], 'unit' => $collection['unit'], 'minimum_order_qty' => $collection['minimum_order_qty'], 'refundable' => $collection['refundable'], 'unit_price' => $collection['unit_price'], 'purchase_price' => 0, 'tax' => $collection['tax'], 'discount' => $collection['discount'], 'discount_type' => $collection['discount_type'], 'shipping_cost' => 0, 'current_stock' => $collection['current_stock'], 'details' => $collection['details'], 'video_provider' => 'youtube', 'video_url' => $collection['youtube_video_url'], 'images' => json_encode(['def.png']), 'thumbnail' => $thumbnail[1] ?? $thumbnail[0], 'status' => 0, 'request_status' => 1, 'colors' => json_encode([]), 'attributes' => json_encode([]), 'choice_options' => json_encode([]), 'variation' => json_encode([]), 'featured_status' => 0, 'added_by' => $addedBy, 'user_id' => $addedBy == 'admin' ? auth('admin')->id() : auth('seller')->id(), 'created_at' => now(), ]; } return [ 'status' => true, 'message' => count($products) . ' - ' . translate('products_imported_successfully'), 'products' => $products ]; } public function checkLimitedStock(object $products):bool { foreach ($products as $product) { if ($product['product_type'] == 'physical' && $product['current_stock'] < (int)getWebConfig('stock_limit')) { return true; } } return false; } } OrderService.php000064400000003361150072506270007660 0ustar00 $orderId, 'customer_id' => $userId, 'customer_type' => 'customer', 'payment_status' => 'paid', 'order_status' => 'delivered', 'seller_id' => $addedBy =='seller' ? auth('seller')->id() : auth('admin')->id(), 'seller_is' => $addedBy, 'payment_method' => $paymentType, 'order_type' => 'POS', 'checked' =>1, 'extra_discount' =>$cart['ext_discount'] ?? 0, 'extra_discount_type' => $cart['ext_discount_type'] ?? null, 'order_amount' => currencyConverter($amount), 'discount_amount' => $cart['coupon_discount'] ?? 0, 'coupon_code' => $cart['coupon_code']??null, 'discount_type' => (isset($cart['coupon_code']) && $cart['coupon_code']) ? 'coupon_discount' : NULL, 'coupon_discount_bearer' => $cart['coupon_bearer'] ?? 'inhouse', 'created_at' => now(), 'updated_at' => now(), ]; } public function getCheckIsOrderOnlyDigital(object $order): bool { $isOrderOnlyDigital = true; if($order->orderDetails) { foreach ($order->orderDetails as $detail) { $product = json_decode($detail->product_details); if (isset($product->product_type) && $product->product_type == 'physical') { $isOrderOnlyDigital = false; } } } return $isOrderOnlyDigital; } } DeliveryManTransactionService.php000064400000001504150072506270013227 0ustar00 $id, 'user_id' => $addedBy == 'seller' ? auth('seller')->id() : 0, 'user_type' => $addedBy, 'credit' => currencyConverter($amount), 'transaction_id' => Uuid::uuid4(), 'transaction_type' => $transactionType, 'created_at' => now(), 'updated_at' => now(), ]; } } DeliveryManWalletService.php000064400000002047150072506270012175 0ustar00 $id, 'current_balance' => currencyConverter($deliverymanCharge) ?? 0, 'cash_in_hand' => currencyConverter($cashInHand), 'pending_withdraw' => 0, 'total_withdraw' => 0, ]; } public function getDeliveryManWalletData(object $request, object $wallet, object $withdraw):array { return [ 'total_withdraw' => $request['approved'] == 1 ? ($wallet['total_withdraw'] + currencyConverter($withdraw['amount'])) : $wallet['total_withdraw'], 'pending_withdraw' => $wallet['pending_withdraw'] - currencyConverter($withdraw['amount']), 'current_balance' => $request['approved'] == 1 ? ($wallet['current_balance'] - currencyConverter($withdraw['amount'])) : $wallet['current_balance'], ]; } } MailService.php000064400000003327150072506270007471 0ustar00 $request->get('status', 0), "name" => $request['name'], "host" => $request['host'], "driver" => $request['driver'], "port" => $request['port'], "username" => $request['username'], "email_id" => $request['email'], "encryption" => $request['encryption'], "password" => $request['password'] ]; } public function getMailData(object|array $mailData): array { return [ "status" => 0, "name" => $mailData['name'], "host" => $mailData['host'], "driver" => $mailData['driver'], "port" => $mailData['port'], "username" => $mailData['username'], "email_id" => $mailData['email_id'], "encryption" => $mailData['encryption'], "password" => $mailData['password'] ]; } public function sendMail(object $request): int|string { $responseFlag = 0; try { $emailServicesSmtp = getWebConfig(name: 'mail_config'); if ($emailServicesSmtp['status'] == 0) { $emailServicesSmtp = getWebConfig(name: 'mail_config_sendgrid'); } if ($emailServicesSmtp['status'] == 1) { Mail::to($request->email)->send(new TestEmailSender()); $responseFlag = 1; } } catch (Exception $exception) { $responseFlag = 2; } return $responseFlag; } } BannerService.php000064400000005205150072506270010011 0ustar00file('image') ? $this->update(dir:'banner/', oldImage:$image, format: 'webp', image: $request->file('image')) : $image; }else { $imageName = $this->upload(dir:'banner/', format: 'webp', image: $request->file('image')); } return [ 'banner_type' => $request['banner_type'], 'resource_type' => $request['resource_type'], 'resource_id' => $request[$request->resource_type . '_id'], 'theme' => theme_root_path(), 'title' => $request['title'], 'sub_title' => $request['sub_title'], 'button_text' => $request['button_text'], 'background_color' => $request['background_color'], 'url' => $request['url'], 'photo' => $imageName, ]; } public function getBannerTypes(): array { $bannerTypes = []; if (theme_root_path() == 'default') { $bannerTypes = [ "Main Banner" => translate('main_Banner'), "Popup Banner" => translate('popup_Banner'), "Footer Banner" => translate('footer_Banner'), "Main Section Banner" => translate('main_Section_Banner') ]; }elseif (theme_root_path() == 'theme_aster') { $bannerTypes = [ "Main Banner" => translate('main_Banner'), "Popup Banner" => translate('popup_Banner'), "Footer Banner" => translate('footer_Banner'), "Main Section Banner" => translate('main_Section_Banner'), "Header Banner" => translate('header_Banner'), "Sidebar Banner" => translate('sidebar_Banner'), "Top Side Banner" => translate('top_Side_Banner'), ]; }elseif (theme_root_path() == 'theme_fashion') { $bannerTypes = [ "Main Banner" => translate('main_Banner'), "Popup Banner" => translate('popup_Banner'), "Promo Banner Left" => translate('promo_banner_left'), "Promo Banner Middle Top" => translate('promo_banner_middle_top'), "Promo Banner Middle Bottom" => translate('promo_banner_middle_bottom'), "Promo Banner Right" => translate('promo_banner_right'), "Promo Banner Bottom" => translate('promo_banner_bottom'), ]; } return $bannerTypes; } } FeaturesSectionService.php000064400000004756150072506270011721 0ustar00 $value) { $image = ''; if (!empty($request['features_section_bottom_icon']) && isset($request['features_section_bottom_icon'][$key])) { $image = $this->upload(dir: 'banner/', format: 'webp', image: $request['features_section_bottom_icon'][$key]); } $bottomSectionData[] = [ 'title' => $request['features_section_bottom']['title'][$key], 'subtitle' => $request['features_section_bottom']['subtitle'][$key], 'icon' => $image, ]; } return $bottomSectionData; } public function getDeleteData(object $request, object $data): array { $newArray = []; foreach(json_decode($data->value) as $item) { if($request->title != $item->title && $request->subtitle != $item->subtitle){ $newArray[] = $item; }else{ $this->delete(filePath: "/banner/" . $item->icon); } } return $newArray; } public function getReliabilityUpdateData(object $request, object $data): array { $image = ''; $item = []; if ($request->has('image')) { $image = $this->upload(dir: 'company-reliability/', format: 'webp', image: $request->file('image')); } foreach (json_decode($data['value'], true) as $key => $data) { if ($data['item'] == $request['item']) { $item_data = [ 'item' => $request['item'], 'title' => $request->title ?? '', 'image' => $image === '' ? $data['image'] : $image, 'status' => $request->status ?? 0, ]; } else { $item_data = [ 'item' => $data['item'], 'title' => $data['title'], 'image' => $data['image'] , 'status' => $data['status'] ??0, ]; } $item[] = $item_data; } return $item; } } AttributeService.php000064400000000074150072506270010546 0ustar00 $addedBy == 'seller' ? auth('seller')->id() : auth('admin')->id(), 'creator_type' => $addedBy, 'title' => $request['title'], 'duration' => $request['duration'], 'cost' => currencyConverter($request['cost']), 'created_at' => now(), 'updated_at' => now() ]; } } DeliveryManService.php000064400000011220150072506270011015 0ustar00 $addedBy == 'seller' ? auth('seller')->id() : 0, 'f_name' => $request['f_name'], 'l_name' => $request['l_name'], 'address' => $request['address'], 'email' => $request['email'], 'country_code' => '+'.$request['country_code'], 'phone' => $request['phone'], 'identity_number' => $request['identity_number'], 'identity_type' => $request['identity_type'], 'password' => bcrypt($request['password']), 'created_at' => now(), 'updated_at' => now(), ]; } /** * @param object $request * @param string $addedBy * @return array * This array return column name and there value when add delivery man */ public function getDeliveryManAddData(object $request, string $addedBy): array { $identityImage = []; if (!empty($request->file('identity_image'))) { foreach ($request->identity_image as $image) { $identityImage[] = $this->upload(dir: 'delivery-man/', format: 'webp', image: $image); } $identityImage = json_encode($identityImage); } else { $identityImage = json_encode([]); } $commonArray = $this->getCommonDeliveryManData(request: $request, addedBy: $addedBy); $imageArray = [ 'identity_image' => $identityImage, 'image' => $this->upload(dir: 'delivery-man/', format: 'webp', image: $request->file('image')), ]; return array_merge($commonArray,$imageArray); } /** * @param object $request * @param string $addedBy * @param string $identityImages * @param string $deliveryManImage * @return array * This array return column name and there value when update delivery man */ public function getDeliveryManUpdateData(object $request,string $addedBy,string $identityImages,string $deliveryManImage): array { if (!empty($request->file('identity_image'))) { foreach (json_decode($identityImages, true) as $image) { $this->delete(filePath: 'delivery-man/' . $image); } $identityImage = []; foreach ($request['identity_image'] as $img) { $identityImage[] = $this->upload('delivery-man/', 'webp', $img); } $identityImage = json_encode($identityImage); } else { $identityImage = $identityImages; } if($request->has('image')){ $image = $this->update(dir: 'delivery-man/', oldImage: $deliveryManImage, format: 'webp', image: $request->file('image')); }else{ $image = $deliveryManImage; } $commonArray = $this->getCommonDeliveryManData(request: $request, addedBy: $addedBy); $imageArray = [ 'identity_image' => $identityImage, 'image' => $image, ]; return array_merge($commonArray, $imageArray); } function deleteImages(object $deliveryMan): bool { $this->delete(filePath: 'delivery-man/' . $deliveryMan['image']); foreach (json_decode($deliveryMan['identity_image'], true) as $image) { $this->delete(filePath: 'delivery-man/' . $image); } return true; } public function getOrderHistoryListExportData(object $request, object $deliveryMan, object $orders): array { $orders->each(function ($order) { $totalQty = $order->details->sum('qty'); $order->total_qty = $totalQty; }); return [ 'delivery_man' => $deliveryMan, 'orders' => $orders, 'total_earn' => $this->delivery_man_total_earn($deliveryMan['id']), 'withdrawable_balance' => $this->delivery_man_withdrawable_balance($deliveryMan['id']), 'search' => $request['searchValue'], 'type' => $request['type'], ]; } public function checkConditions():bool { $shippingMethod = getWebConfig(name: 'shipping_method'); if($shippingMethod == 'inhouse_shipping') { Toastr::warning(translate('access_denied!!')); return false; } return true; } } EmergencyContactService.php000064400000001363150072506270012037 0ustar00 $id, 'country_code' => $request['country_code'], 'name' => $request['name'], 'phone' => $request['phone'], 'status' => 1, ]; } public function getEmergencyContactUpdateData(object $request):array { return [ 'country_code' => $request['country_code'], 'name' => $request['name'], 'phone' => $request['phone'], 'updated_at' =>now(), ]; } } RefundStatusService.php000064400000005234150072506270011235 0ustar00 $refund['id'], 'change_by' => $changeBy, 'change_by_id' => $changeBy === 'seller' ? auth('seller')->id() : 1, 'status' => $request['refund_status'], 'message' => $request['approved_note'] ?? $request['rejected_note'] ?? null, 'approved_note' => $request['approved_note'] ?? null, 'rejected_note' => $request['rejected_note'] ?? null, ]; } public function getRefundStatusProcessData(object $request, object $orderDetails, object $refund, string|float|int $loyaltyPoint): array { $refundStatus = [ 'refund_request_id' => $refund['id'], 'change_by' => 'admin', 'change_by_id' => auth('admin')->id(), 'status' => $request['refund_status'], ]; $refundData = []; if ($request['refund_status'] == 'pending') { $orderDetails['refund_request'] = 1; } elseif ($request['refund_status'] == 'approved') { $orderDetails['refund_request'] = 2; $refundData['approved_note'] = $request['approved_note']; $refundStatus['message'] = $request['approved_note']; } elseif ($request['refund_status'] == 'rejected') { $orderDetails['refund_request'] = 3; $refundData['rejected_note'] = $request['rejected_note']; $refundStatus['message'] = $request['rejected_note']; } elseif ($request['refund_status'] == 'refunded') { $orderDetails['refund_request'] = 4; $refundData['payment_info'] = $request['payment_info']; $refundStatus['message'] = $request['payment_info']; $walletAddRefund = getWebConfig(name: 'wallet_add_refund'); if ($walletAddRefund == 1 && $request['payment_method'] == 'customer_wallet') { $this->createWalletTransaction(user_id: $refund['customer_id'], amount: usdToDefaultCurrency(amount: $refund['amount']), transaction_type: 'order_refund', reference: 'order_refund'); } } $refundData['status'] = $request['refund_status']; $refundData['change_by'] = 'admin'; return [ 'refund' => $refundData, 'orderDetails' => $orderDetails, 'refundStatus' => $refundStatus, ]; } } CategoryShippingCostService.php000064400000001571150072506270012716 0ustar00 $addedBy === 'seller' ? auth('seller')->id() : 0, 'category_id' => $id, 'cost' => 0, ]; } /** * @param int $key * @param int|string $id * @param object $request * @return array */ public function getUpdateCategoryWiseShippingData(int $key, int|string $id, object $request): array { return [ 'cost' => currencyConverter($request['cost'][$key], 'usd'), 'multiply_qty' => isset($request['multiplyQTY']) ? (in_array($id, $request['multiplyQTY']) ? 1 : 0) : 0 ]; } } PasswordResetService.php000064400000000515150072506270011410 0ustar00 $identity, 'token' => $token, 'user_type'=>$userType, 'created_at' => now(), ]; } } FlashDealService.php000064400000004311150072506270010424 0ustar00 $request['title'][array_search('en', $request['lang'])], 'start_date' => $request['start_date'], 'end_date' => $request['end_date'], 'background_color' => $request['background_color'], 'text_color' => $request['text_color'], 'banner' => $request->has('image') ? $this->upload(dir:'deal/', format: 'webp', image: $request->file('image')) : 'def.webp', 'slug' => Str::slug($request['title'][array_search('en', $request['lang'])]), 'featured' => $request['featured'] == 1 ? 1 : 0, 'deal_type' => $request['deal_type'] == 'flash_deal' ? 'flash_deal' : 'feature_deal', 'status' => 0, 'created_at' => now(), 'updated_at' => now(), ]; } public function getUpdateData(object $request, object $data): array { return [ 'title' => $request['title'][array_search('en', $request['lang'])], 'start_date' => $request['start_date'], 'end_date' => $request['end_date'], 'background_color' => $request['background_color'], 'text_color' => $request['text_color'], 'banner' => $request->file('image') ? $this->update('deal/', $data['banner'],'webp', $request->file('image')) : $data['banner'], 'slug' => Str::slug($request['title'][array_search('en', $request->lang)]), 'featured' => $request['featured'] == 'on' ? 1 : 0, 'deal_type' => $request['deal_type'] == 'flash_deal' ? 'flash_deal' : 'feature_deal', 'updated_at' => now(), ]; } public function getAddProduct(object $request, string|int $id): array { return [ 'product_id' => $request['product_id'], 'flash_deal_id' => $id, 'discount' => $request['discount'] ?? 0, 'discount_type' => $request['discount_type'] ?? 0, 'created_at' => now(), 'updated_at' => now(), ]; } } ContactService.php000064400000001702150072506270010175 0ustar00 $request['name'], 'email' => $request['email'], 'mobile_number' => $request['mobile_number'], 'subject' => $request['subject'], 'message' => $request['message'], ]; } public function getMailData(object $request, array $data, object $contact, string $companyName): array { Mail::send('email-templates.customer-message', $data, function ($message) use ($contact, $request, $companyName) { $message->to($contact['email'], $companyName) ->subject($request['subject']); }); return [ 'reply' => json_encode([ 'subject' => $request['subject'], 'body' => $request['mail_body'] ]) ]; } } PushNotificationService.php000064400000005123150072506270012071 0ustar00 $customer, 'seller' => $vendor, 'delivery_man' => $delivery_man, }; } public function getAddData(string $userType, string $value):array { return [ 'user_type' => $userType, 'key' => $value, 'message' => 'customize your' . ' ' . str_replace('_', ' ', $value) . ' ' . 'message', 'created_at' => now(), 'updated_at' => now(), ]; } public function getUpdateData(object $request,string $message,string $status,string $lang):array { return [ 'message'=>$request->$message[array_search('en', $request->$lang)], 'status'=>$request->$status ?? false, 'updated_at'=>now(), ]; } } PrioritySetupService.php000064400000011717150072506270011453 0ustar00 $request->get('custom_sorting_status', 0), 'sort_by' => $request['sort_by'] ?? null, ]; } public function updateTopVendorPrioritySetupData($request): array { return [ 'custom_sorting_status' => $request->get('custom_sorting_status', 0), 'minimum_rating_point' => $request['minimum_rating_point'] ?? null, 'sort_by' => $request['sort_by'] ?? null, 'vacation_mode_sorting' => $request['vacation_mode_sorting'] ?? null, 'temporary_close_sorting' => $request['temporary_close_sorting'] ?? null, ]; } public function updateVendorPrioritySetupData($request): array { return [ 'custom_sorting_status' => $request->get('custom_sorting_status', 0), 'sort_by' => $request['sort_by'] ?? null, 'vacation_mode_sorting' => $request['vacation_mode_sorting'] ?? null, 'temporary_close_sorting' => $request['temporary_close_sorting'] ?? null, ]; } public function updateVendorProductListPrioritySetupData($request): array { return [ 'custom_sorting_status' => $request->get('custom_sorting_status', 0), 'sort_by' => $request['sort_by'] ?? null, 'out_of_stock_product' => $request['out_of_stock_product'] ?? null, ]; } public function updateFeaturedProductPrioritySetupData($request): array { return [ 'custom_sorting_status' => $request->get('custom_sorting_status', 0), 'sort_by' => $request['sort_by'] ?? null, 'out_of_stock_product' => $request['out_of_stock_product'] ?? null, 'temporary_close_sorting' => $request['temporary_close_sorting'] ?? null, ]; } public function updateFeatureDealPrioritySetupData($request): array { return [ 'custom_sorting_status' => $request->get('custom_sorting_status', 0), 'sort_by' => $request['sort_by'] ?? null, 'out_of_stock_product' => $request['out_of_stock_product'] ?? null, 'temporary_close_sorting' => $request['temporary_close_sorting'] ?? null, ]; } public function updateFlashDealPrioritySetupData($request): array { return [ 'custom_sorting_status' => $request->get('custom_sorting_status', 0), 'sort_by' => $request['sort_by'] ?? null, 'out_of_stock_product' => $request['out_of_stock_product'] ?? null, 'temporary_close_sorting' => $request['temporary_close_sorting'] ?? null, ]; } public function updateNewArrivalProductListPrioritySetupData($request): array { return [ 'custom_sorting_status' => $request->get('custom_sorting_status', 0), 'duration' => $request['duration'] ?? 1, 'duration_type' => $request['duration_type'] ?? 'month', 'sort_by' => $request['sort_by'] ?? null, 'out_of_stock_product' => $request['out_of_stock_product'] ?? null, 'temporary_close_sorting' => $request['temporary_close_sorting'] ?? null, ]; } public function updateTopRatedProductListPrioritySetupData($request): array { return [ 'custom_sorting_status' => $request->get('custom_sorting_status', 0), 'minimum_rating_point' => $request['minimum_rating_point'] ?? null, 'sort_by' => $request['sort_by'] ?? null, 'out_of_stock_product' => $request['out_of_stock_product'] ?? null, 'temporary_close_sorting' => $request['temporary_close_sorting'] ?? null, ]; } public function updateCategoryWiseProductListPrioritySetupData($request): array { return [ 'custom_sorting_status' => $request->get('custom_sorting_status', 0), 'sort_by' => $request['sort_by'] ?? null, 'out_of_stock_product' => $request['out_of_stock_product'] ?? null, 'temporary_close_sorting' => $request['temporary_close_sorting'] ?? null, ]; } public function updateBestSellingProductListPrioritySetupData($request): array { return [ 'custom_sorting_status' => $request->get('custom_sorting_status', 0), 'sort_by' => $request['sort_by'] ?? null, 'out_of_stock_product' => $request['out_of_stock_product'] ?? null, 'temporary_close_sorting' => $request['temporary_close_sorting'] ?? null, ]; } public function updateProductListPrioritySetupData($request): array { return [ 'custom_sorting_status' => $request->get('custom_sorting_status', 0), 'out_of_stock_product' => $request['out_of_stock_product'] ?? null, 'temporary_close_sorting' => $request['temporary_close_sorting'] ?? null, ]; } } VendorRegistrationSettingService.php000064400000005350150072506270013773 0ustar00 $request['title'], 'sub_title' => $request['sub_title'], 'image' => $this->getImageDataProcess(request: $request,image:$image,requestImageName: 'image'), ]; } public function getBusinessProcessUpdateData(object $request):array { return [ 'title' => $request['title'], 'sub_title' => $request['sub_title'], ]; } public function getBusinessProcessStepUpdateData(object $request,$businessProcessStep):array { $array = []; for($index=1;$index<=3;$index++){ $image = (isset($businessProcessStep[$index-1]) ? $businessProcessStep[$index-1]?->image : null); $array[]=[ 'title' => $request['section_'.$index.'_title'], 'description' => $request['section_'.$index.'_description'], 'image' => $this->getImageDataProcess(request: $request,image: $image,requestImageName: 'section_'.$index.'_image'), ]; } return $array; } protected function getImageDataProcess($request ,$image,$requestImageName):string|null { if ($image) { $imageName = $request->file($requestImageName) ? $this->update(dir:'vendor-registration-setting/', oldImage:$image, format: 'webp', image: $request->file($requestImageName)) : $image; }else { $imageName = $request->file($requestImageName) ? $this->upload(dir:'vendor-registration-setting/', format: 'webp', image: $request->file($requestImageName)) :null; } return $imageName; } public function getVendorRegistrationReasonData(object $request):array { return [ 'title' => $request['title'], 'description' => $request['description'], 'priority' => $request['priority'], 'status' => $request->get('status',0), ]; } public function getDownloadVendorAppUpdateData(object $request,$image):array { return [ 'title' => $request['title'], 'sub_title' => $request['sub_title'], 'image' => $this->getImageDataProcess(request: $request,image:$image,requestImageName: 'image'), 'download_google_app' => $request['download_google_app'], 'download_google_app_status' => $request->get('download_google_app_status',0), 'download_apple_app' => $request['download_apple_app'], 'download_apple_app_status' => $request->get('download_apple_app_status',0), ]; } } CategoryService.php000064400000004172150072506270010363 0ustar00 $request['name'][array_search('en', $request['lang'])], 'slug' => Str::slug($request['name'][array_search('en', $request['lang'])]), 'icon' => $this->upload('category/', 'webp', $request->file('image')), 'parent_id' => $request->get('parent_id', 0), 'position' => $request['position'], 'priority' => $request['priority'], ]; } public function getUpdateData(object $request, object $data): array { $image = $request->file('image') ? $this->update('category/', $data['image'], 'webp', $request->file('image')) : $data['icon']; return [ 'name' => $request['name'][array_search('en', $request['lang'])], 'slug' => Str::slug($request['name'][array_search('en', $request['lang'])]), 'icon' => $image, 'priority' => $request['priority'], ]; } public function getSelectOptionHtml(object $data): string { $output = ''; foreach ($data as $row) { $output .= ''; } return $output; } public function deleteImages(object $data): bool { if ($data->childes) { foreach ($data->childes as $child) { if ($child->childes) { foreach ($child->childes as $item) { if ($item['icon']) { $this->delete('category/' . $item['icon']); } } } if ($child['icon']) { $this->delete('category/' . $child['icon']); } } } if ($data['icon']) { $this->delete('category/' . $data['icon']); } return true; } } SocialLoginService.php000064400000003651150072506270011012 0ustar00 $data) { if ($data['login_medium'] == $service) { $cred = [ 'login_medium' => $service, 'client_id' => $request['client_id'], 'client_secret' => $request['client_secret'], 'status' => $request['status'] ?? 0, ]; $credentialArray[] = $cred; } else { $credentialArray[] = $data; } } return $credentialArray; } public function getAppleData(object $request, object $appleLogin, string $service): array { $credentialArray = []; if ($request->hasfile('service_file')) { $fileName = $this->fileUpload(dir: 'apple-login/', format: 'p8', file: $request->file('service_file')); } foreach (json_decode($appleLogin['value'], true) as $key => $data) { if ($data['login_medium'] == $service) { $cred = [ 'login_medium' => $service, 'client_id' => $request['client_id'], 'client_secret' => $request['client_secret'], 'status' => $request['status'] ?? 0, 'team_id' => $request['team_id'], 'key_id' => $request['key_id'], 'service_file' => $fileName ?? $data['service_file'], 'redirect_url' => $request['redirect_url'], ]; $credentialArray[] = $cred; } else { $credentialArray[] = $data; } } return $credentialArray; } } BusinessSettingService.php000064400000002710150072506270011733 0ustar00 $data) { if ($data['code'] == $request['language']) { $lang = [ 'id' => $data['id'], 'name' => $data['name'], 'direction' => $data['direction'] ?? 'ltr', 'code' => $data['code'], 'status' => 1, 'default' => true, ]; } else { $lang = [ 'id' => $data['id'], 'name' => $data['name'], 'direction' => $data['direction'] ?? 'ltr', 'code' => $data['code'], 'status' => $data['status'], 'default' => false, ]; } $languageArray[] = $lang; } return $languageArray; } public function getInvoiceSettingsData(object|null $request,string|null $image):array { return [ 'terms_and_condition' => $request['terms_and_condition'] ?? null, 'business_identity' => $request['business_identity']?? null, 'business_identity_value' => $request['business_identity_value'] ?? null, 'image' => $image ?? null, ]; } } OrderStatusHistoryService.php000064400000001211150072506270012436 0ustar00 $orderId, 'user_id' => $userId, 'user_type' => $userType, 'status' => $status, 'cause' => $cause, ]; } } WithdrawalMethodService.php000064400000001700150072506270012047 0ustar00 $field_name) { $method_fields[] = [ 'input_type' => $request['field_type'][$key], 'input_name' => strtolower(str_replace(' ', "_", $request['field_name'][$key])), 'placeholder' => $request['placeholder_text'][$key], 'is_required' => isset($request['is_required'][$key]) ? 1 : 0, ]; } return [ 'method_name' => $request['method_name'], 'method_fields' => $method_fields, 'is_default' => ($request->has('is_default') && $request['is_default'] || $dataCount == 0) == '1' ? 1 : 0, ]; } } CustomerWalletService.php000064400000001771150072506270011562 0ustar00cm_firebase_token; if(!empty($customer_fcm_token)) { $lang = $customer?->app_language ?? getDefaultLanguage(); $value= $this->pushNotificationMessage('fund_added_by_admin_message','customer', $lang); if ($value != null) { $data = [ 'title' => setCurrencySymbol(amount: currencyConverter(amount: $request['amount']), currencyCode: getCurrencyCode(type: 'default')).' '.translate('_fund_added'), 'description' => $value, 'image' => '', 'type' => 'wallet' ]; $this->sendPushNotificationToDevice($customer_fcm_token, $data); } } return true; } } OfflinePaymentMethodService.php000064400000004617150072506270012673 0ustar00has('input_name')) { foreach ($request->input_name as $key => $field_name) { $methodFields[] = [ 'input_name' => strtolower(str_replace("'", '', preg_replace('/[^a-zA-Z0-9\']/', '_', $request->input_name[$key]))), 'input_data' => $request->input_data[$key], ]; } } return $methodFields; } public function getMethodInformationData($request):array|bool { $methodInformation = []; if($request->has('customer_input')) { foreach ($request->customer_input as $key => $field_name) { $input_key = strtolower(str_replace("'", '', preg_replace('/[^a-zA-Z0-9\']/', '_', $request->customer_input[$key]))); $keyExists = false; foreach ($methodInformation as $info) { if ($info['customer_input'] === $input_key) { $keyExists = true; break; } } if (!$keyExists) { if (!array_key_exists($request->customer_input[$key], $methodInformation)) { $methodInformation[] = [ 'customer_input' => $input_key, 'customer_placeholder' => $request->customer_placeholder[$key], 'is_required' => isset($request['is_required']) && isset($request['is_required'][$key]) ? 1 : 0, ]; } }else { Toastr::error(translate('information_Input_Field_Name_must_be_unique')); return false; } } } return $methodInformation; } public function getOfflinePaymentMethodData(string $methodName,array $methodFields,array $methodInformation,string $addOrUpdate):array { $addOrUpdate = $addOrUpdate == 'add' ? 'created_at' : 'updated_at'; return [ 'method_name' => $methodName, 'method_fields' => $methodFields, 'method_informations' => $methodInformation, $addOrUpdate => now(), ]; } } EmailTemplateService.php000064400000027653150072506270011342 0ustar00 $admin, 'customer' => $customer, 'vendor' => $vendor, 'delivery-man' => $deliveryMan, }; } public function getHiddenField(string $userType, string $templateName):array|null { $hiddenData = [ EmailTemplateKey::REGISTRATION=>array('product_information','order_information','button_content','banner_image'), EmailTemplateKey::REGISTRATION_VERIFICATION=>array('product_information','order_information','button_content','banner_image'), EmailTemplateKey::REGISTRATION_FROM_POS=>array('product_information','order_information','button_url','button_content_status','banner_image'), EmailTemplateKey::REGISTRATION_APPROVED=>array('product_information','order_information','button_content','banner_image'), EmailTemplateKey::REGISTRATION_DENIED=>array('product_information','order_information','button_content','banner_image'), EmailTemplateKey::ACCOUNT_ACTIVATION=>array('product_information','order_information','button_content','banner_image'), EmailTemplateKey::ACCOUNT_SUSPENDED=>array('product_information','order_information','button_content','banner_image'), EmailTemplateKey::ACCOUNT_UNBLOCK=>array('product_information','order_information','button_content','banner_image'), EmailTemplateKey::ACCOUNT_BLOCK=>array('product_information','order_information','button_content','banner_image'), EmailTemplateKey::DIGITAL_PRODUCT_DOWNLOAD=>array('product_information','button_content','banner_image'), EmailTemplateKey::DIGITAL_PRODUCT_OTP=>array('product_information','order_information','button_content','banner_image'), EmailTemplateKey::ORDER_PLACE=>array('icon','product_information','banner_image'), EmailTemplateKey::ORDER_DElIVERED=>array('product_information','order_information','button_content','banner_image'), EmailTemplateKey::FORGET_PASSWORD=>array('product_information','order_information','button_content','banner_image'), EmailTemplateKey::ORDER_RECEIVED=>array('icon','product_information','button_content','banner_image'), EmailTemplateKey::ADD_FUND_TO_WALLET=>array('product_information','order_information','button_content','banner_image'), EmailTemplateKey::RESET_PASSWORD_VERIFICATION=>array('product_information','order_information','button_content','banner_image'), ]; return $hiddenData[$templateName]; } public function getAddData(string $userType,string $templateName,array|null $hideField,string $title, string $body):array { return [ 'template_name' => $templateName, 'user_type' => $userType, 'template_design_name' => $templateName, 'title' => $title, 'body' => $body, 'hide_field' => $hideField , 'copyright_text' => translate('copyright_').date('Y').' '.getWebConfig('company_name').'. '.translate('all_right_reserved').'.', 'footer_text' => translate('please_contact_us_for_any_queries').','.translate('_we’re_always_happy_to_help').'.', ]; } public function getUpdateData(object $request,$template):array { $image = $request['image'] ? $this->update(dir:'email-template/', oldImage: $template['image'], format: 'webp',image: $request->file('image')) : $template['image']; $logo = $request['logo'] ? $this->update(dir:'email-template/', oldImage: $template['logo'], format: 'webp',image: $request->file('logo')) : $template['logo']; $icon = $request['icon'] ? $this->update(dir:'email-template/', oldImage: $template['logo'], format: 'webp',image: $request->file('icon')) : $template['icon']; $bannerImage = $request['banner_image'] ? $this->update(dir: 'email-template/',oldImage: $template['banner_image'], format: 'webp',image: $request->file('banner_image')): $template['banner_image']; return [ 'title' => $request['title']['en'], 'body' => $request['body']['en'], 'banner_image' => $bannerImage, 'image' => $icon, 'logo' => $logo, 'button_name' => $request['button_name']['en'] ?? null, 'button_url' => $request['button_url'], 'footer_text' => $request['footer_text']['en'], 'copyright_text' => $request['copyright_text']['en'], 'pages' => $request['social_media'] ? array_keys($request['pages']) :null, 'social_media' =>$request['social_media'] ? array_keys($request['social_media']) : null, 'button_content_status' => $request->get('button_content_status', 0), 'product_information_status' => $request->get('product_information_status', 0), 'order_information_status' => $request->get('order_information_status', 0), ]; } public function getTitleData(string $userType,$templateName):string { $titleData = [ EmailTemplateKey::REGISTRATION=>'Registration Complete', EmailTemplateKey::REGISTRATION_VERIFICATION=>'Registration Verification', EmailTemplateKey::REGISTRATION_FROM_POS=>'Registration Complete', EmailTemplateKey::REGISTRATION_APPROVED=>'Registration Approved', EmailTemplateKey::REGISTRATION_DENIED=>'Registration Denied', EmailTemplateKey::ACCOUNT_ACTIVATION=>'Account Activation', EmailTemplateKey::ACCOUNT_SUSPENDED=>'Account Suspended', EmailTemplateKey::ACCOUNT_UNBLOCK=>'Account Unblocked', EmailTemplateKey::ACCOUNT_BLOCK=>'Account Blocked', EmailTemplateKey::DIGITAL_PRODUCT_DOWNLOAD=>'Congratulations', EmailTemplateKey::DIGITAL_PRODUCT_OTP=>'Digital Product Download OTP Verification', EmailTemplateKey::ORDER_PLACE=>'Order'.' # '.'{orderId}'.' Has Been Placed Successfully!', EmailTemplateKey::FORGET_PASSWORD=>'Change Password Request', EmailTemplateKey::ORDER_RECEIVED=>'New Order Received', EmailTemplateKey::ADD_FUND_TO_WALLET=>'Transaction Successful', EmailTemplateKey::RESET_PASSWORD_VERIFICATION=>'OTP Verification For Password Reset', ]; return $titleData[$templateName]; } public function getBodyData(string $userType,$templateName):string { $userType = match ($userType) { 'admin' => '{adminName}', 'customer' => '{userName}', 'vendor' => '{vendorName}', 'delivery-man' => '{deliveryManName}', }; $bodyData = [ EmailTemplateKey::REGISTRATION=>'
Hi '.$userType.',

Congratulation! Your registration request has been send to admin successfully! Please wait until admin reviewal.

meanwhile click here to visit the '.getWebConfig('company_name').' Shop Website
'.url('/').'
', EmailTemplateKey::REGISTRATION_VERIFICATION=>'

Hi '.$userType.',

Your verification code is

', EmailTemplateKey::REGISTRATION_FROM_POS=>'

Hi '.$userType.',

Thank you for joining '.getWebConfig('company_name').' Shop.If you want to become a registered customer then reset your password below by using this email. Then you’ll be able to explore the website and app as a registered customer.

', EmailTemplateKey::REGISTRATION_APPROVED=>'
Hi '.$userType.',

Your registration request has been approved by admin. Now you can complete your store setting and start selling your product on '.getWebConfig('company_name').' Shop.

Meanwhile, click here to visit the'.getWebConfig('company_name').' shop website
'.url('/').'
', EmailTemplateKey::REGISTRATION_DENIED=>'
Hi '.$userType.',

Your registration request has been denied by admin. Please contact with admin or support center if you have any queries.

Meanwhile, click here to visit the'.getWebConfig('company_name').' shop website
'.url('/').'
', EmailTemplateKey::ACCOUNT_ACTIVATION=>'
Hi '.$userType.',

Your account suspension has been revoked by admin. From now you can access your app and panel again Please contact us for any queries we’re always happy to help.

Meanwhile, click here to visit the'.getWebConfig('company_name').' shop website
'.url('/').'
', EmailTemplateKey::ACCOUNT_SUSPENDED=>'
Hi '.$userType.',

Your account access has been suspended by admin.From now you can access your app and panel again Please contact us for any queries we’re always happy to help.

Meanwhile, click here to visit the'.getWebConfig('company_name').' shop website
'.url('/').'
', EmailTemplateKey::ACCOUNT_UNBLOCK=>'
Hi '.$userType.',

Your account has been successfully unblocked. We appreciate your cooperation in resolving this issue. Thank you for your understanding and patience.

Meanwhile, click here to visit the'.getWebConfig('company_name').' shop website
'.url('/').'
', EmailTemplateKey::ACCOUNT_BLOCK=>'
Hi '.$userType.',

Your account has been blocked due to suspicious activity by the admin .To resolve this issue please contact with admin or support center. We apologize for any inconvenience caused.

Meanwhile, click here to visit the'.getWebConfig('company_name').'shop website
'.url('/').'
', EmailTemplateKey::DIGITAL_PRODUCT_DOWNLOAD=>'

Thank you for choosing '.getWebConfig('company_name') .' shop! Your digital product is ready for download. To download your product use your email {emailId} and order # {orderId} below.

', EmailTemplateKey::DIGITAL_PRODUCT_OTP=>'

Hi '.$userType.',

Your verification code is

', EmailTemplateKey::ORDER_PLACE=>'

Hi '.$userType.',

Your order from {shopName} has been placed to know the current status of your order click track order

', EmailTemplateKey::FORGET_PASSWORD=>'

Hi '.$userType.',

Please click the link below to change your password.

', EmailTemplateKey::ORDER_RECEIVED=> '

Hi '.$userType.',

We have sent you this email to notify that you have a new order.You will be able to see your orders after login to your panel.

', EmailTemplateKey::ADD_FUND_TO_WALLET=>'
Amount successfully credited to your wallet .

', EmailTemplateKey::RESET_PASSWORD_VERIFICATION=>'

Hi '.$userType.',

Your verification code is

', ]; return $bodyData[$templateName]; } } CustomerService.php000064400000001747150072506270010414 0ustar00 $request['f_name'], 'l_name' => $request['l_name'], 'email' => $request['email'], 'phone' => $request['phone'], 'country' => $request['country']??null, 'city' => $request['city']??null, 'zip' => $request['zip_code']??null, 'street_address' =>$request['address']??null, 'password' => bcrypt($request['password'] ?? 'password') ]; } public function deleteImage(object $data): bool { if ($data['image']) {$this->delete('profile/'.$data['image']);}; return true; } } OrderDetailsService.php000064400000001651150072506270011166 0ustar00 $orderId, 'product_id' => $item['id'], 'product_details' => $product, 'qty' => $item['quantity'], 'price' => $price, 'seller_id' => $product['user_id'], 'tax' => $tax*$item['quantity'], 'tax_model' => $product['tax_model'], 'discount' => $item['discount']*$item['quantity'], 'discount_type' => 'discount_on_product', 'delivery_status' => 'delivered', 'payment_status' => 'paid', 'variant' => $item['variant'], 'variation' => json_encode($item['variations']), 'created_at' => now(), 'updated_at' => now() ]; } } WithdrawService.php000064400000001014150072506270010367 0ustar00 $wallet['total_earning'] + currencyConverter($withdrawRequest['amount'],to:'usd'), 'pending_withdraw' => $wallet['pending_withdraw'] - currencyConverter($withdrawRequest['amount'],to:'usd'), ]; } } RefundRequestService.php000064400000000100150072506270011365 0ustar00$vendor['id'], 'name' => $vendor['f_name'], 'address' => '', 'contact' => $vendor['phone'], 'image' => 'def.png', 'created_at' => now(), 'updated_at' => now() ]; } /** * @return array[name: mixed, address: mixed, contact: mixed, image: bool|mixed, banner: bool|mixed, bottomBanner: bool|mixed, offerBanner: bool|mixed] */ public function getShopDataForUpdate(object $request , object $shop):array { $image = $request['image'] ? $this->update(dir:'shop/', oldImage: $shop['image'], format: 'webp',image: $request->file('image')) : $shop['image']; $banner = $request['banner'] ? $this->update(dir: 'shop/banner/',oldImage: $shop['banner'], format: 'webp',image: $request->file('banner')): $shop['banner']; $bottomBanner = $request['bottom_banner'] ? $this->update(dir: 'shop/banner/', oldImage: $shop['bottom_banner'], format: 'webp', image: $request->file('bottom_banner')) : $shop['bottom_banner']; $offerBanner = $request['offer_banner'] ? $this->update(dir: 'shop/banner/', oldImage: $shop['offer_banner'], format: 'webp',image: $request->file('offer_banner')) : $shop['offer_banner']; return [ 'name'=>$request['name'], 'address'=>$request['address'], 'contact'=>$request['contact'], 'image'=> $image, 'banner'=> $banner, 'bottom_banner'=> $bottomBanner, 'offer_banner'=> $offerBanner, ]; } /** * @return array[vacation_status: int, vacation_start_date: mixed, vacation_end_date: mixed, vacation_note: mixed] */ public function getVacationData(object $request):array { return [ 'vacation_status' => $request['vacation_status'] == 'on' ? 1 : 0, 'vacation_start_date' => $request['vacation_start_date'], 'vacation_end_date' => $request['vacation_end_date'], 'vacation_note' => $request['vacation_note'], ]; } public function getAddShopDataForRegistration(object $request,int $vendorId):array { return [ 'seller_id' => $vendorId, 'name' => $request['shop_name'], 'slug' => Str::slug($request['shop_name'], '-') . '-' . Str::random(6), 'address'=>$request['shop_address'], 'contact' => $request['phone'], 'image' => $this->upload(dir: 'shop/', format: 'webp', image: $request->file('logo')), 'banner' => $this->upload(dir: 'shop/banner/', format: 'webp', image: $request->file('banner')), 'bottom_banner' => $this->upload(dir: 'shop/banner/', format: 'webp', image: $request->file('bottom_banner')), ]; } } AddonService.php000064400000013117150072506270007632 0ustar00file('file_upload'); $filename = $file->getClientOriginalName(); $tempPath = $file->storeAs('temp', $filename); $zip = new ZipArchive(); if ($zip->open(storage_path('app/' . $tempPath)) === TRUE) { $genFolderName = explode('/', $zip->getNameIndex(0))[0]; if ($genFolderName === "__MACOSX") { for ($i = 0; $i < $zip->numFiles; $i++) { if (strpos($zip->getNameIndex($i), "__MACOSX") === false) { $getAddonFolder = explode('/', $zip->getNameIndex($i))[0]; break; } } } $getAddonFolder = explode('.', $genFolderName)[0]; $zip->extractTo(storage_path('app/temp')); $infoPath = storage_path('app/temp/'.$getAddonFolder.'/Addon/info.php'); if(File::exists($infoPath)) { $extractPath = base_path('Modules'); if (!File::exists($extractPath)) { File::makeDirectory($extractPath); } if (File::exists($extractPath.'/'.$getAddonFolder)) { $message = translate('already_installed'); $status = 'error'; }else{ $zip->extractTo($extractPath); $zip->close(); File::chmod($extractPath.'/'.$getAddonFolder.'/Addon', 0777); $status = 'success'; $message = translate('upload_successfully'); } }else{ File::cleanDirectory(storage_path('app/temp')); $status = 'error'; $message = translate('invalid_file!'); } }else{ $status = 'error'; $message = translate('file_upload_fail!'); } if (File::exists(base_path('Modules/__MACOSX'))) { File::deleteDirectory(base_path('Modules/__MACOSX')); } File::cleanDirectory(storage_path('app/temp')); return [ 'status' => $status, 'message'=> $message ]; } public function getPublishData(object $request): array { $fullData = include($request['path'] . '/Addon/info.php'); $path = $request['path']; $addonName = $fullData['name']; if ($fullData['purchase_code'] == null || $fullData['username'] == null) { return [ 'flag' => 'inactive', 'view' => view(AddonSetup::ACTIVE_MODAL[VIEW], compact('fullData', 'path', 'addonName'))->render(), ]; } $fullData['is_published'] = $fullData['is_published'] ? 0 : 1; $str = " 'success', 'message'=> 'status_updated_successfully' ]; } public function getActivationData(object $request): array { $remove = ["http://", "https://", "www."]; $url = str_replace($remove, "", url('/')); $full_data = include($request['path'] . '/Addon/info.php'); $post = [ base64_decode('dXNlcm5hbWU=') => $request['username'], base64_decode('cHVyY2hhc2Vfa2V5') => $request['purchase_code'], base64_decode('c29mdHdhcmVfaWQ=') => $full_data['software_id'], base64_decode('ZG9tYWlu') => $url, ]; $response = Http::post(base64_decode('aHR0cHM6Ly9jaGVjay42YW10ZWNoLmNvbS9hcGkvdjEvYWN0aXZhdGlvbi1jaGVjaw=='), $post)->json(); $status = base64_decode($response['active']) ?? 1; if((int)$status){ $full_data['is_published'] = 1; $full_data['username'] = $request['username']; $full_data['purchase_code'] = $request['purchase_code']; $str = " (int)$status, 'activationUrl' => $activationUrl ]; } public function deleteAddon(object $request): array { $path = $request['path']; $full_path = base_path($path); $old = base_path('app/Traits/Payment.php'); $new = base_path('app/Traits/Payment.txt'); copy($new, $old); if(File::deleteDirectory($full_path)){ $status = 'success'; $message = translate('file_delete_successfully'); }else{ $status = 'error'; $message = translate('file_delete_fail'); } return [ 'status' => $status, 'message'=> $message ]; } } RefundTransactionService.php000064400000002543150072506270012237 0ustar00 $refund['order_id'], 'payment_for'=> 'Refund Request', 'payer_id'=> $order['seller_id'], 'payment_receiver_id'=> $refund['customer_id'], 'paid_by'=> $order['seller_is'], 'paid_to'=> 'customer', 'payment_method'=> $request['payment_method'], 'payment_status'=> $request['payment_method'] != null ? 'paid' : 'unpaid', 'amount'=> $refund['amount'], 'transaction_type'=> 'Refund', 'order_details_id'=> $refund['order_details_id'], 'refund_id'=> $refund['id'], ]; } public function getPDFData(string $companyPhone,string $companyEmail,string $companyName,string $companyWebLogo,object $refundTransactions,):array { $totalAmount = 0; foreach($refundTransactions as $transaction){ $totalAmount += $transaction['amount']; } return [ 'total_amount' => $totalAmount, 'company_phone' => $companyPhone, 'company_email' => $companyEmail, 'company_name' => $companyName, 'company_web_logo' => $companyWebLogo, ]; } } DeliveryCountryCodeService.php000064400000001254150072506270012546 0ustar00 $country) { if ($country['code'] == $deliveryCountryCode['country_code']) { $data[$key]['code'] = $country['code']; $data[$key]['name'] = $country['name']; } } } return $data; } } CouponService.php000064400000013321150072506270010045 0ustar00 $addedBy, 'coupon_type' => $request['coupon_type'], 'title' => $request['title'], 'code' => $request['code'], 'start_date' => $request['start_date'], 'expire_date' => $request['expire_date'], 'coupon_bearer' => $addedBy == 'seller' ? 'seller' : $request['coupon_bearer'], 'seller_id' => $addedBy == 'seller' ? auth('seller')->id() : null, 'customer_id' => $request['customer_id'], 'limit' => $request['limit'], 'min_purchase' => currencyConverter(amount: $request['min_purchase']), 'discount_type' => $request['coupon_type'] == 'discount_on_purchase' ? $request['discount_type'] : 'amount', 'discount' => $request['coupon_type'] == 'discount_on_purchase' ? ($request['discount_type'] == 'amount' ? currencyConverter(amount: $request['discount']) : $request['discount']) : 0, 'max_discount' => $request['coupon_type'] == 'discount_on_purchase' && $request['discount_type'] == 'percentage' ? currencyConverter(amount: $request['max_discount'] != null ? $request['max_discount'] : $request['discount']) : 0, 'created_at' => now(), 'updated_at' => now(), ]; } public function getAddData(object $request): array { $data = [ 'coupon_type' => $request['coupon_type'], 'title' => $request['title'], 'code' => $request['code'], 'start_date' => $request['start_date'], 'expire_date' => $request['expire_date'], 'status' => 1, 'min_purchase' => currencyConverter(amount: $request['min_purchase']), ]; if ($request['coupon_type'] == 'discount_on_purchase' || $request['coupon_type'] == 'free_delivery') { $data += [ 'coupon_bearer' => $request['coupon_bearer'], 'seller_id' => $request['seller_id'] == 'inhouse' ? NULL : $request['seller_id'], 'customer_id' => $request['customer_id'], 'limit' => $request['limit'], ]; } if ($request['coupon_type'] == 'discount_on_purchase' || $request['coupon_type'] == 'first_order') { $data += [ 'discount_type' => $request['discount_type'], 'customer_id' => 0, 'discount' => $request['discount_type'] == 'amount' ? currencyConverter(amount: $request['discount']) : $request['discount'], 'max_discount' => currencyConverter(amount: $request['max_discount'] != null ? $request['max_discount'] : $request['discount']), ]; } return $data; } public function getUpdateData(object $request): array { $data = [ 'coupon_type' => $request['coupon_type'], 'title' => $request['title'], 'code' => $request['code'], 'start_date' => $request['start_date'], 'expire_date' => $request['expire_date'], 'status' => 1, 'min_purchase' => currencyConverter(amount: $request['min_purchase']), ]; if ($request['coupon_type'] == 'discount_on_purchase' || $request['coupon_type'] == 'free_delivery') { $data += [ 'coupon_bearer' => $request['coupon_bearer'], 'seller_id' => $request['seller_id'] == 'inhouse' ? NULL : $request['seller_id'], 'customer_id' => $request['customer_id'], 'limit' => $request['limit'], ]; } if ($request['coupon_type'] == 'discount_on_purchase') { $data += [ 'discount_type' => $request['discount_type'], 'seller_id' => $request['seller_id'] == 'inhouse' ? NULL : $request['seller_id'], 'customer_id' => $request['customer_id'], 'limit' => $request['limit'], ]; } if ($request['coupon_type'] == 'discount_on_purchase' || $request['coupon_type'] == 'first_order') { $data += [ 'discount_type' => $request['discount_type'], 'customer_id' => 0, 'discount' => $request['discount_type'] == 'amount' ? currencyConverter($request['discount']) : $request['discount'], 'max_discount' => currencyConverter($request['max_discount'] != null ? $request['max_discount'] : $request['discount']), ]; } if ($request['coupon_type'] == 'free_delivery') { $data['discount_type'] = 'percentage'; $data['discount'] = 0; $data['max_discount'] = 0; } elseif ($request['coupon_type'] == 'first_order') { $data['coupon_bearer'] = 'inhouse'; $data['seller_id'] = NULL; $data['customer_id'] = 0; $data['limit'] = 0; } return $data; } public function checkConditions(object $request):bool { if ( $request['coupon_type'] == 'discount_on_purchase' && $request['discount_type'] == 'amount' && $request['discount'] > $request['min_purchase']) { Toastr::error(translate('the_minimum_purchase_amount_must_be_greater_than_discount_amount')); return false; }elseif ($request['discount_type'] == 'percentage' && $request['discount'] >= 100 ) { Toastr::error(translate('when_discount_type percentage,discount_amount_will_be_less_than_100')); return false; } return true; } } VendorWalletService.php000064400000000653150072506270011214 0ustar00 $totalEarning, 'pending_withdraw' =>$pendingWithdraw, ]; } } SupportTicketService.php000064400000001415150072506270011423 0ustar00file('image')) { foreach ($request->image as $key => $imageFile) { $image_name = $this->upload(dir:'support-ticket/', format: 'webp', image: $imageFile); $images[] = $image_name; } } return [ 'admin_message' => $request['replay'], 'admin_id' => $request['adminId'], 'support_ticket_id' => $request['id'], 'attachment' => json_encode($images), 'created_at' => now(), 'updated_at' => now() ]; } } POSService.php000064400000011553150072506270007250 0ustar00has(SessionKey::CART_NAME)){ foreach (session(SessionKey::CART_NAME) as $item){ if (session()->has($item) && count(session($item)) > 1){ if (isset(session($item)[0]) && is_array(session($item)[0]) && isset(session($item)[0]['customerOnHold']) && session($item)[0]['customerOnHold']) { $totalHoldOrders++; } } } } return $totalHoldOrders; } public function getCartNames():array { $cartNames = []; if (session()->has(SessionKey::CART_NAME)){ foreach (session(SessionKey::CART_NAME) as $item){ if (session()->has($item) && count(session($item)) > 1){ $cartNames[] = $item; } } } return $cartNames ; } public function UpdateSessionWhenCustomerChange(string $cartId):void { if(!in_array($cartId,session(SessionKey::CART_NAME)??[])) { session()->push(SessionKey::CART_NAME, $cartId); } $cart = session(session(SessionKey::CURRENT_USER)); $cartKeeper = []; if (session()->has(session(SessionKey::CURRENT_USER)) && count($cart) > 0) { foreach ($cart as $cartItem) { if (is_array($cartItem)) { $cartItem['customerId'] = Str::contains($cartId, 'walking-customer') ? '0' : explode('-',$cartId)[2]; } $cartKeeper[] = $cartItem; } } if(session(SessionKey::CURRENT_USER) != $cartId) { $tempCartName = []; foreach(session(SessionKey::CART_NAME) as $cartName) { if($cartName != session(SessionKey::CURRENT_USER)) { $tempCartName[] = $cartName; } } session()->put(SessionKey::CART_NAME,$tempCartName); } session()->forget(session(SessionKey::CURRENT_USER)); session()->put($cartId , $cartKeeper); session()->put(SessionKey::CURRENT_USER,$cartId); } public function checkConditions(float $amount):bool { $condition = false; $cartId =session(SessionKey::CURRENT_USER); if (session()->has($cartId)) { if (count(session()->get($cartId)) < 1) { Toastr::error(translate('cart_empty_warning')); $condition = true; } }else { Toastr::error(translate('cart_empty_warning')); $condition = true; } if($amount <= 0) { Toastr::error(translate('amount_cannot_be_lees_then_0')); $condition = true; } return $condition; } public function getCouponCalculation(object $coupon, float $totalProductPrice, float $productDiscount, float $productTax): array { $extraDiscount = 0; if ($coupon['discount_type'] === 'percentage') { $discount = min((($totalProductPrice / 100) * $coupon['discount']), $coupon['max_discount']); } else { $discount = $coupon['discount']; } if (isset($carts['ext_discount_type'])) { $extraDiscount = $this->getDiscountAmount(price: $totalProductPrice, discount: $carts['ext_discount'], discountType: $carts['ext_discount_type']); } $total = $totalProductPrice - $productDiscount + $productTax - $discount - $extraDiscount; return [ 'total' => $total, 'discount' => $discount, ]; } public function putCouponDataOnSession($cartId,$discount,$couponTitle,$couponBearer,$couponCode):void { $cart = session($cartId, collect([])); $cart['coupon_code'] = $couponCode; $cart['coupon_discount'] = $discount; $cart['coupon_title'] = $couponTitle; $cart['coupon_bearer'] = $couponBearer; session()->put($cartId, $cart); } public function getVariantData(string $type,array $variation,int $quantity):array { $variationData = []; foreach ($variation as $variant) { if ($type == $variant['type']) { $variant['qty'] -= $quantity; } $variationData[] = $variant; } return $variationData; } public function getSummaryData():array { return [ 'cartName'=>session(SessionKey::CART_NAME), 'currentUser'=>session(SessionKey::CURRENT_USER), 'totalHoldOrders'=>$this->getTotalHoldOrders(), 'cartNames' =>$this->getCartNames(), ]; } } AllPagesBannerService.php000064400000001713150072506270011422 0ustar00image ?? ''; $imageName = $request->file('image') ? $this->update(dir:'banner/', oldImage:$oldImage, format: 'webp', image: $request->file('image')) : $oldImage; }else { $imageName = $this->upload(dir:'banner/', format: 'webp', image: $request->file('image')); } return [ 'type' => $request['type'], 'value' => json_encode([ 'status' => 0, 'image' => $imageName, ]), 'created_at' => now() ]; } public function deleteImage(string $image): bool { $this->delete(filePath: "/banner/" . $image); return true; } } DealOfTheDayService.php000064400000002221150072506270011030 0ustar00 $request['title'][array_search('en', $request->lang)], 'discount' => $product['discount_type'] == 'amount' ? usdToDefaultCurrency(amount:$product['discount']) : $product['discount'], 'discount_type' => $product['discount_type'], 'product_id' => $request['product_id'], 'status' => 0, 'created_at' => now(), 'updated_at' => now(), ]; } public function getUpdateData(object $request, object $product): array { return [ 'title' => $request['title'][array_search('en', $request->lang)], 'discount' => $product['discount_type'] == 'amount' ? usdToDefaultCurrency(amount:$product['discount']) : $product['discount'], 'discount_type' => $product['discount_type'], 'product_id' => $request['product_id'], 'status' => 0, 'updated_at' => now(), ]; } } ShippingAddressService.php000064400000001221150072506270011665 0ustar00 $customerId, 'contact_person_name' => $request['f_name'].' '.$request['f_name'], 'address_type' => $addressType, 'address' => $request['address'], 'city' => $request['city'], 'zip' => $request['zip_code'], 'country' => $request['country'], 'phone' => $request['phone'], 'is_billing' => 0, 'latitude' => 0, 'longitude' => 0, ]; } } DeliveryManWithdrawService.php000064400000002703150072506270012535 0ustar00 $request['approved'], 'transaction_note' => $request['note'] ]; } /** * @param object $request * @param object $wallet * @param object $withdraw * @return array[] */ public function getUpdateData(object $request, object $wallet, object $withdraw) : array { $withdrawData = []; $withdrawData['approved'] = $request['approved']; $withdrawData['transaction_note'] = $request['note']; $walletData = []; if ($request['approved'] == 1) { $walletData['total_withdraw'] = $wallet->total_withdraw + currencyConverter($withdraw['amount'],'usd'); $walletData['pending_withdraw'] = $wallet->pending_withdraw - currencyConverter($withdraw['amount'],'usd'); $walletData['current_balance'] = $wallet->current_balance - currencyConverter($withdraw['amount'],'usd'); }else{ $walletData['pending_withdraw'] = $wallet->pending_withdraw - currencyConverter($withdraw['amount'],'usd'); } return [ 'wallet'=>$walletData, 'withdraw'=>$withdrawData, ]; } } ShopFollowerService.php000064400000000375150072506270011232 0ustar00 $customerId, 'shop_id' => $shopId ]; } } BrandService.php000064400000001616150072506270007634 0ustar00 $request['name'][array_search('en', $request['lang'])], 'image' => $this->upload('brand/', 'webp', $request->file('image')), 'status' => 1, ]; } public function getUpdateData(object $request, object $data): array { $image = $request->file('image') ? $this->update('brand/', $data['image'],'webp', $request->file('image')) : $data['image']; return [ 'name' => $request->name[array_search('en', $request['lang'])], 'image' => $image, ]; } public function deleteImage(object $data): bool { if ($data['image']) {$this->delete('profile/'.$data['image']);}; return true; } } MostDemandedService.php000064400000001324150072506270011146 0ustar00file('image') ? $this->update(dir:'most-demanded/', oldImage:$image, format: 'webp', image: $request->file('image')) : $image; }else { $imageName = $this->upload(dir:'most-demanded/', format: 'webp', image: $request->file('image')); } return [ 'product_id'=>$request['product_id'], 'banner' => $imageName, 'created_at' => now(), 'updated_at' => now(), ]; } } AdminService.php000064400000004546150072506270007643 0ustar00attempt(['email' => $email, 'password' => $password], $rememberToken)) { return true; } return false; } public function logout(): void { auth()->guard('web')->logout(); session()->invalidate(); } public function getIdentityImages(object $request, object $oldImages = null): bool|string { if (!empty($oldImages['identify_image'])) { foreach (json_decode($oldImages['identify_image'], true) as $image) { $this->delete('admin/' . $image); } } $identity_images = []; if (!empty($request->file('identity_image'))) { foreach ($request['identity_image'] as $img) { $identity_images[] = $this->upload('admin/', 'webp', $img); } $identity_images = json_encode($identity_images); } else { $identity_images = json_encode([]); } return $identity_images; } public function getProceedImage(object $request, string $oldImage = null): bool|string { if ($oldImage) { $image = $this->update('admin/', $oldImage, 'webp', $request['image']); }else { $image = $this->upload('admin/', 'webp', $request['image']); } return $image; } /** * @return array[f_name: mixed, l_name: mixed, phone: mixed, image: mixed|string] */ public function getAdminDataForUpdate(object $request, object $admin):array { $image = $request['image'] ? $this->update(dir: 'admin/', oldImage: $admin['image'], format: 'webp', image: $request->file('image')) : $admin['image']; return [ 'name' => $request['name'], 'email' => $request['email'], 'phone' => $request['phone'], 'image' => $image, ]; } /** * @return array[password: string] */ public function getAdminPasswordData(object $request):array { return [ 'password' => bcrypt($request['password']), ]; } } VendorService.php000064400000006565150072506270010053 0ustar00attempt(['email' => $email, 'password' => $password], $rememberToken)) { return true; } return false; } /** * @return array */ public function getInitialWalletData(int $vendorId): array { return [ 'seller_id' => $vendorId, 'withdrawn' => 0, 'commission_given' => 0, 'total_earning' => 0, 'pending_withdraw' => 0, 'delivery_charge_earned' => 0, 'collected_cash' => 0, 'created_at' => now(), 'updated_at' => now(), ]; } public function logout(): void { auth()->guard('seller')->logout(); session()->invalidate(); } /** * @param object $request * @return array */ public function getFreeDeliveryOverAmountData(object $request):array { return [ 'free_delivery_status' => $request['free_delivery_status'] == 'on' ? 1 : 0, 'free_delivery_over_amount' => currencyConverter($request['free_delivery_over_amount'], 'usd'), ]; } /** * @return array[minimum_order_amount: float|int] */ public function getMinimumOrderAmount(object $request) :array { return [ 'minimum_order_amount' => currencyConverter($request['minimum_order_amount'], 'usd') ]; } /** * @param object $request * @param object $vendor * @return array */ public function getVendorDataForUpdate(object $request, object $vendor):array { $image = $request['image'] ? $this->update(dir: 'seller/', oldImage: $vendor['image'], format: 'webp', image: $request->file('image')) : $vendor['image']; return [ 'f_name' => $request['f_name'], 'l_name' => $request['l_name'], 'phone' => $request['phone'], 'image' => $image, ]; } /** * @return array[password: string] */ public function getVendorPasswordData(object $request):array { return [ 'password' => bcrypt($request['password']), ]; } /** * @param object $request * @return array */ public function getVendorBankInfoData(object $request):array { return [ 'bank_name' => $request['bank_name'], 'branch' => $request['branch'], 'holder_name' => $request['holder_name'], 'account_no' => $request['account_no'], ]; } public function getAddData(object $request):array { return [ 'f_name' => $request['f_name'], 'l_name' => $request['l_name'], 'phone' => $request['phone'], 'email' => $request['email'], 'image' => $this->upload(dir: 'seller/', format: 'webp', image: $request->file('image')), 'password' => bcrypt($request['password']), 'status' => $request['status'] == 'approved' ? 'approved' : 'pending', ]; } } DeliveryManCashCollectService.php000064400000000765150072506270013136 0ustar00 $deliveryMan['id'], 'user_id' => 0, 'user_type' => 'admin', 'credit' => usdToDefaultCurrency(amount: $request['amount']), 'transaction_type' => 'cash_in_hand' ]; } } ChattingService.php000064400000005426150072506270010352 0ustar00file('image')) { foreach ($request['image'] as $key=>$value) { $attachment[] = $this->upload('chatting/', 'webp', $value); } } return $attachment; } /** * @param object $request * @param string|int $shopId * @param string|int $vendorId * @return array */ public function getDeliveryManChattingData(object $request , string|int $shopId, string|int $vendorId):array { return [ 'delivery_man_id' => $request['delivery_man_id'], 'seller_id' => $vendorId, 'shop_id' => $shopId, 'message' => $request['message'], 'attachment' =>json_encode($this->getAttachment($request)), 'sent_by_seller' => 1, 'seen_by_seller' => 1, 'seen_by_delivery_man' => 0, 'notification_receiver' => 'deliveryman', 'created_at' => now(), ]; } /** * @param object $request * @param string|int $shopId * @param string|int $vendorId * @return array */ public function getCustomerChattingData(object $request , string|int $shopId, string|int $vendorId):array { return [ 'user_id' => $request['user_id'], 'seller_id' => $vendorId, 'shop_id' => $shopId, 'message' => $request->message, 'attachment' =>json_encode($this->getAttachment($request)), 'sent_by_seller' => 1, 'seen_by_seller' => 1, 'seen_by_customer' => 0, 'notification_receiver' => 'customer', 'created_at' => now(), ]; } /** * @param object $request * @param string $type * @return array */ public function addChattingData(object $request,string $type):array { $attachment = $this->getAttachment(request: $request); return [ 'delivery_man_id' => $type == 'delivery-man' ? $request['delivery_man_id'] : null , 'user_id' => $type == 'customer' ? $request['user_id'] : null , 'admin_id' => 0, 'message' => $request['message'], 'attachment' => json_encode($attachment), 'sent_by_admin' => 1, 'seen_by_admin' => 1, 'seen_by_customer' => 0, 'seen_by_delivery_man' => $type == 'delivery-man' ? 0 : null, 'notification_receiver' => $type == 'delivery-man' ? 'deliveryman' : 'customer', 'created_at' => now(), ]; } } NotificationService.php000064400000001676150072506270011242 0ustar00upload(dir:'notification/', format: 'webp',image: $request->file('image')) : ''; return [ 'title' => $request['title'], 'description' => $request['description'], 'image' => $image, 'notification_count' => 1 ]; } public function getNotificationUpdateData(object $request,string|null $notificationImage):array { $image = $request['image'] ? $this->update(dir:'notification/', oldImage: $notificationImage, format: 'webp',image: $request->file('image')) : $notificationImage; return [ 'title' => $request['title'], 'description' => $request['description'], 'image' => $image, ]; } } DashboardService.php000064400000003675150072506270010504 0ustar00startOfYear()->format('Y-m-d'); $to = Carbon::now()->endOfYear()->format('Y-m-d'); $range = range(1, 12); $type = 'month'; $keyRange = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; } elseif ($dateType == 'MonthEarn') { $from = date('Y-m-01'); $to = date('Y-m-t 23:59:59'); $endRange = date('d', strtotime($to)); $range = range(1, $endRange); $type = 'day'; $keyRange = $range; } elseif ($dateType == 'WeekEarn') { $from = Carbon::now()->startOfWeek(Carbon::SUNDAY)->format('Y-m-d'); $to = Carbon::now()->endOfWeek(Carbon::SATURDAY)->format('Y-m-d'); $range = ['Sunday','Monday','Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; $type = 'day_of_week'; $keyRange = $range; } return [ 'from' =>$from, 'to' =>$to, 'range' =>$range, 'type' => $type, 'keyRange' => $keyRange ]; } public function getDateWiseAmount(array $range,string $type,object|array $amountArray):array { $dateWiseAmount = []; foreach ($range as $value){ if (count($amountArray) > 0) { $amountArray->map(function ($amount) use ($type, $range, &$dateWiseAmount, $value) { $dateWiseAmount[$value] = usdToDefaultCurrency($amount[$type] == $value ? $amount['sums'] : 0); }); }else{ $dateWiseAmount[$value] = 0; } } return $dateWiseAmount; } } ProductCompareService.php000064400000000411150072506270011525 0ustar00 $customerId, 'product_id' => $productId, ]; } } SocialMediaService.php000064400000001354150072506270010757 0ustar00 $id, 'shipping_type' => $request['shippingType'], ]; } /** * @param object $request * @return array */ public function getShippingTypeDataForUpdate(object $request) : array { return [ 'shipping_type' => $request['shippingType'], ]; } }