Nuevos cambios hechos de diseño

This commit is contained in:
ellecio2
2023-08-23 17:33:44 -04:00
parent 7a806f84ff
commit d2e9ba53ab
3485 changed files with 691106 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

View File

@@ -0,0 +1,101 @@
{
"name":"auction",
"unique_identifier":"auction",
"version":"1.5",
"minimum_item_version":"7.0.0",
"addon_banner":"auction.png",
"directory":[
{
"name":[
"app/Services",
"resources/views/auction",
"resources/views/auction/auction_products",
"resources/views/auction/frontend",
"resources/views/auction/frontend/seller"
]
}
],
"sql_file":"",
"files":[
{
"root_directory":"addons/auction/assets/auction.png",
"update_directory":"public/auction.png"
},
{
"root_directory":"addons/auction/controllers/AuctionProductBidController.php",
"update_directory":"app/Http/Controllers/AuctionProductBidController.php"
},
{
"root_directory":"addons/auction/controllers/AuctionProductController.php",
"update_directory":"app/Http/Controllers/AuctionProductController.php"
},
{
"root_directory":"addons/auction/services/AuctionService.php",
"update_directory":"app/Services/AuctionService.php"
},
{
"root_directory":"addons/auction/views/auction/auction_products/bids.blade.php",
"update_directory":"resources/views/auction/auction_products/bids.blade.php"
},
{
"root_directory":"addons/auction/views/auction/auction_products/create.blade.php",
"update_directory":"resources/views/auction/auction_products/create.blade.php"
},
{
"root_directory":"addons/auction/views/auction/auction_products/edit.blade.php",
"update_directory":"resources/views/auction/auction_products/edit.blade.php"
},
{
"root_directory":"addons/auction/views/auction/auction_products/index.blade.php",
"update_directory":"resources/views/auction/auction_products/index.blade.php"
},
{
"root_directory":"addons/auction/views/auction/frontend/seller/auction_product_edit.blade.php",
"update_directory":"resources/views/auction/frontend/seller/auction_product_edit.blade.php"
},
{
"root_directory":"addons/auction/views/auction/frontend/seller/auction_product_list.blade.php",
"update_directory":"resources/views/auction/frontend/seller/auction_product_list.blade.php"
},
{
"root_directory":"addons/auction/views/auction/frontend/seller/auction_product_orders.blade.php",
"update_directory":"resources/views/auction/frontend/seller/auction_product_orders.blade.php"
},
{
"root_directory":"addons/auction/views/auction/frontend/seller/auction_product_upload.blade.php",
"update_directory":"resources/views/auction/frontend/seller/auction_product_upload.blade.php"
},
{
"root_directory":"addons/auction/views/auction/frontend/seller/auction_products_bids.blade.php",
"update_directory":"resources/views/auction/frontend/seller/auction_products_bids.blade.php"
},
{
"root_directory":"addons/auction/views/auction/frontend/addToCartAuction.blade.php",
"update_directory":"resources/views/auction/frontend/addToCartAuction.blade.php"
},
{
"root_directory":"addons/auction/views/auction/frontend/all_auction_products.blade.php",
"update_directory":"resources/views/auction/frontend/all_auction_products.blade.php"
},
{
"root_directory":"addons/auction/views/auction/frontend/auction_product_details.blade.php",
"update_directory":"resources/views/auction/frontend/auction_product_details.blade.php"
},
{
"root_directory":"addons/auction/views/auction/frontend/auction_products_section.blade.php",
"update_directory":"resources/views/auction/frontend/auction_products_section.blade.php"
},
{
"root_directory":"addons/auction/views/auction/frontend/my_bidded_products.blade.php",
"update_directory":"resources/views/auction/frontend/my_bidded_products.blade.php"
},
{
"root_directory":"addons/auction/views/auction/frontend/purchase_history.blade.php",
"update_directory":"resources/views/auction/frontend/purchase_history.blade.php"
},
{
"root_directory":"addons/auction/views/auction/auction_product_orders.blade.php",
"update_directory":"resources/views/auction/auction_product_orders.blade.php"
}
]
}

View File

@@ -0,0 +1,146 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\AuctionProductBid;
use App\Models\Product;
use Auth;
use Mail;
use DB;
use App\Mail\AuctionBidMailManager;
class AuctionProductBidController extends Controller
{
public function __construct() {
// Staff Permission Check
$this->middleware(['permission:view_auction_product_bids'])->only('product_bids_admin');
$this->middleware(['permission:delete_auction_product_bids'])->only('bid_destroy_admin');
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$bids = DB::table('auction_product_bids')
->orderBy('id', 'desc')
->join('products', 'auction_product_bids.product_id', '=', 'products.id')
->where('auction_product_bids.user_id', Auth::user()->id)
->select('auction_product_bids.id')
->distinct()
->paginate(10);
return view('auction.frontend.my_bidded_products', compact('bids'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$bid = AuctionProductBid::where('product_id', $request->product_id)->where('user_id', Auth::user()->id)->first();
if ($bid == null) {
$bid = new AuctionProductBid;
$bid->user_id = Auth::user()->id;
}
$bid->product_id = $request->product_id;
$bid->amount = $request->amount;
if ($bid->save()) {
$secound_max_bid = AuctionProductBid::where('product_id', $request->product_id)->orderBy('amount','desc')->skip(1)->first();
if($secound_max_bid != null){
if($secound_max_bid->user->email != null){
$product = Product::where('id',$request->product_id)->first();
$array['view'] = 'emails.auction_bid';
$array['subject'] = translate('Auction Bid');
$array['from'] = env('MAIL_FROM_ADDRESS');
$array['content'] = 'Hi! A new user bidded more then you for the product, '.$product->name.'. '.'Highest bid amount: '.$bid->amount;
$array['link'] = route('auction-product', $product->slug);
try {
Mail::to($secound_max_bid->user->email)->queue(new AuctionBidMailManager($array));
} catch (\Exception $e) {
//dd($e->getMessage());
}
}
}
flash(translate('Bid Placed Successfully'))->success();
} else {
flash(translate('Something went wrong!'))->error();
}
return back();
}
public function product_bids_admin($id)
{
$product = Product::where('id', $id)->first();
$bids = AuctionProductBid::latest()->where('product_id', $id)->paginate(15);
return view('auction.auction_products.bids', compact('bids', 'product'));
}
public function product_bids_seller($id)
{
$product = Product::where('id', $id)->first();
$bids = AuctionProductBid::latest()->where('product_id', $id)->paginate(15);
return view('auction.frontend.seller.auction_products_bids', compact('bids', 'product'));
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function bid_destroy_admin($id)
{
AuctionProductBid::destroy($id);
flash(translate('Bid deleted successfully'))->success();
return back();
}
public function bid_destroy_seller($id)
{
AuctionProductBid::destroy($id);
flash(translate('Bid deleted successfully'))->success();
return back();
}
}

View File

@@ -0,0 +1,408 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Product;
use App\Models\Category;
use App\Models\Order;
use App\Models\OrderDetail;
use App\Models\User;
use App\Services\AuctionService;
use App\Models\ProductQuery;
use Auth;
use Carbon\Carbon;
use DB;
class AuctionProductController extends Controller
{
public function __construct() {
// Staff Permission Check
$this->middleware(['permission:view_all_auction_products'])->only('all_auction_product_list');
$this->middleware(['permission:view_inhouse_auction_products'])->only('inhouse_auction_products');
$this->middleware(['permission:view_seller_auction_products'])->only('seller_auction_products');
$this->middleware(['permission:add_auction_product'])->only('product_create_admin');
$this->middleware(['permission:edit_auction_product'])->only('product_edit_admin');
$this->middleware(['permission:delete_auction_product'])->only('product_destroy_admin');
$this->middleware(['permission:view_auction_product_orders'])->only('admin_auction_product_orders');
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
// Auction products list admin panel
public function all_auction_product_list(Request $request)
{
$sort_search = null;
$seller_id = null;
$type = 'all';
$products = Product::orderBy('created_at', 'desc')->where('auction_product', 1);
if ($request->has('user_id') && $request->user_id != null) {
$products = $products->where('user_id', $request->user_id);
$seller_id = $request->user_id;
}
if ($request->search != null) {
$products = $products->where('name', 'like', '%' . $request->search . '%');
$sort_search = $request->search;
}
$products = $products->paginate(15);
return view('auction.auction_products.index', compact('products', 'sort_search', 'type', 'seller_id'));
}
public function inhouse_auction_products(Request $request)
{
$sort_search = null;
$seller_id = null;
$type = 'in_house';
$products = Product::where('added_by', 'admin')->orderBy('created_at', 'desc')->where('auction_product', 1);
if ($request->search != null) {
$products = $products->where('name', 'like', '%' . $request->search . '%');
$sort_search = $request->search;
}
$products = $products->paginate(15);
return view('auction.auction_products.index', compact('products', 'sort_search', 'type', 'seller_id'));
}
public function seller_auction_products(Request $request)
{
$sort_search = null;
$seller_id = null;
$type = 'seller';
$products = Product::where('added_by', 'seller')->orderBy('created_at', 'desc')->where('auction_product', 1);
if ($request->has('user_id') && $request->user_id != null) {
$products = $products->where('user_id', $request->user_id);
$seller_id = $request->user_id;
}
if ($request->search != null) {
$products = $products
->where('name', 'like', '%' . $request->search . '%');
$sort_search = $request->search;
}
$products = $products->paginate(15);
return view('auction.auction_products.index', compact('products', 'sort_search', 'type', 'seller_id'));
}
// Auction products list admin panel end
// Auction Products list in Seller panel
public function auction_product_list_seller(Request $request)
{
if (get_setting('seller_auction_product') == 0) {
return redirect()->route('home');
}
$sort_search = null;
$products = Product::where('auction_product', 1)->where('user_id', Auth::user()->id)->orderBy('created_at', 'desc');
if ($request->search != null) {
$products = $products
->where('name', 'like', '%' . $request->search . '%');
$sort_search = $request->search;
}
$products = $products->paginate(15);
return view('auction.frontend.seller.auction_product_list', compact('products', 'sort_search'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function product_create_admin()
{
$categories = Category::where('parent_id', 0)
->where('digital', 0)
->with('childrenCategories')
->get();
return view('auction.auction_products.create', compact('categories'));
}
public function product_create_seller()
{
$categories = Category::where('parent_id', 0)
->where('digital', 0)
->with('childrenCategories')
->get();
if (get_setting('seller_auction_product') == 1) {
if (addon_is_activated('seller_subscription')) {
if (Auth::user()->shop->seller_package != null && Auth::user()->shop->seller_package->product_upload_limit > Auth::user()->products()->count()) {
return view('auction.frontend.seller.auction_product_upload', compact('categories'));
} else {
flash(translate('Upload limit has been reached. Please upgrade your package.'))->warning();
return back();
}
} else {
return view('auction.frontend.seller.auction_product_upload', compact('categories'));
}
}
}
public function product_store_admin(Request $request)
{
(new AuctionService)->store($request);
return redirect()->route('auction.inhouse_products');
}
public function product_store_seller(Request $request)
{
if (addon_is_activated('seller_subscription')) {
if (
Auth::user()->shop->seller_package == null ||
Auth::user()->shop->seller_package->product_upload_limit <= Auth::user()->products()->count()
) {
flash(translate('Upload limit has been reached. Please upgrade your package.'))->warning();
return back();
}
}
(new AuctionService)->store($request);
return redirect()->route('auction_products.seller.index');
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function product_destroy_admin($id)
{
(new AuctionService)->destroy($id);
return redirect()->route('auction.inhouse_products');
}
public function product_destroy_seller($id)
{
(new AuctionService)->destroy($id);
return redirect()->route('auction_products.seller.index');
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function product_edit_admin(Request $request, $id)
{
$product = Product::findOrFail($id);
$lang = $request->lang;
$tags = json_decode($product->tags);
$categories = Category::where('parent_id', 0)
->where('digital', 0)
->with('childrenCategories')
->get();
return view('auction.auction_products.edit', compact('product', 'categories', 'tags', 'lang'));
}
public function product_edit_seller(Request $request, $id)
{
$product = Product::findOrFail($id);
$lang = $request->lang;
$tags = json_decode($product->tags);
$categories = Category::where('parent_id', 0)
->where('digital', 0)
->with('childrenCategories')
->get();
return view('auction.frontend.seller.auction_product_edit', compact('product', 'categories', 'tags', 'lang'));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function product_update_admin(Request $request, $id)
{
(new AuctionService)->update($request, $id);
return back();
}
public function product_update_seller(Request $request, $id)
{
(new AuctionService)->update($request, $id);
return back();
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
(new AuctionService)->destroy($id);
return back();
}
public function get_products_by_brand(Request $request)
{
$products = Product::where('brand_id', $request->brand_id)->get();
return view('partials.product_select', compact('products'));
}
public function updatePublished(Request $request)
{
$product = Product::findOrFail($request->id);
$product->published = $request->status;
if ($product->added_by == 'seller' && addon_is_activated('seller_subscription')) {
$seller = $product->user->shop;
if ($seller->package_invalid_at != null && Carbon::now()->diffInDays(Carbon::parse($seller->package_invalid_at), false) <= 0) {
return 0;
}
}
$product->save();
return 1;
}
public function all_auction_products()
{
$products = Product::latest()->where('published', 1)->where('auction_product', 1);
if (get_setting('seller_auction_product') == 0) {
$products = $products->where('added_by', 'admin');
}
$products = $products->where('auction_start_date', '<=', strtotime("now"))->where('auction_end_date', '>=', strtotime("now"))->paginate(15);
return view('auction.frontend.all_auction_products', compact('products'));
}
public function auction_product_details(Request $request, $slug)
{
$detailedProduct = Product::where('slug', $slug)->first();
$product_queries = ProductQuery::where('product_id', $detailedProduct->id)->where('customer_id', '!=', Auth::id())->latest('id')->paginate(3);
$total_query = ProductQuery::where('product_id', $detailedProduct->id)->count();
$reviews = $detailedProduct->reviews()->paginate(3);
// review status
$review_status = 0;
if (Auth::check()) {
$OrderDetail = OrderDetail::with(['order' => function ($q) {
$q->where('user_id', Auth::id());
}])->where('product_id', $detailedProduct->id)->where('delivery_status', 'delivered')->first();
$review_status = $OrderDetail ? 1 : 0;
}
if ($detailedProduct != null) {
return view('frontend.product_details', compact('detailedProduct', 'product_queries', 'total_query', 'reviews', 'review_status'));
}
abort(404);
}
public function purchase_history_user()
{
$orders = DB::table('orders')
->orderBy('code', 'desc')
->join('order_details', 'orders.id', '=', 'order_details.order_id')
->join('products', 'order_details.product_id', '=', 'products.id')
->where('orders.user_id', Auth::user()->id)
->where('products.auction_product', '1')
->select('order_details.order_id as id')
->paginate(15);
return view('auction.frontend.purchase_history', compact('orders'));
}
public function admin_auction_product_orders(Request $request)
{
$payment_status = null;
$delivery_status = null;
$sort_search = null;
$date = $request->date;
$orders = DB::table('orders')
->orderBy('code', 'desc')
->join('order_details', 'orders.id', '=', 'order_details.order_id')
->join('products', 'order_details.product_id', '=', 'products.id')
->where('products.auction_product', '1')
->select('orders.id');
if ($request->payment_status != null) {
$orders = $orders->where('payment_status', $request->payment_status);
$payment_status = $request->payment_status;
}
if ($request->delivery_status != null) {
$orders = $orders->where('delivery_status', $request->delivery_status);
$delivery_status = $request->delivery_status;
}
if ($request->has('search')) {
$sort_search = $request->search;
$orders = $orders->where('code', 'like', '%' . $sort_search . '%');
}
if ($date != null) {
$orders = $orders->whereDate('orders.created_at', '>=', date('Y-m-d', strtotime(explode(" to ", $date)[0])))->whereDate('orders.created_at', '<=', date('Y-m-d', strtotime(explode(" to ", $date)[1])));
}
$orders = $orders->paginate(15);
return view('auction.auction_product_orders', compact('orders', 'payment_status', 'delivery_status', 'sort_search', 'date'));
}
public function auction_orders_show($id)
{
$order = Order::findOrFail(decrypt($id));
$order_shipping_address = json_decode($order->shipping_address);
$delivery_boys = User::where('city', $order_shipping_address->city)
->where('user_type', 'delivery_boy')
->get();
$order->viewed = 1;
$order->save();
return view('auction.auction_product_order_details', compact('order', 'delivery_boys'));
}
public function seller_auction_product_orders(Request $request)
{
if (get_setting('seller_auction_product') == 0) {
return redirect()->route('home');
}
$payment_status = null;
$delivery_status = null;
$sort_search = null;
$orders = DB::table('orders')
->orderBy('code', 'desc')
->where('orders.seller_id', Auth::user()->id)
->join('order_details', 'orders.id', '=', 'order_details.order_id')
->join('products', 'order_details.product_id', '=', 'products.id')
->where('products.auction_product', '1')
->select('orders.id');
if ($request->payment_status != null) {
$orders = $orders->where('payment_status', $request->payment_status);
$payment_status = $request->payment_status;
}
if ($request->delivery_status != null) {
$orders = $orders->where('delivery_status', $request->delivery_status);
$delivery_status = $request->delivery_status;
}
if ($request->has('search')) {
$sort_search = $request->search;
$orders = $orders->where('code', 'like', '%' . $sort_search . '%');
}
$orders = $orders->paginate(15);
return view('auction.frontend.seller.auction_product_orders', compact('orders', 'payment_status', 'delivery_status', 'sort_search'));
}
}

View File

@@ -0,0 +1,322 @@
<?php
namespace App\Services;
use App\Models\Cart;
use App\Models\Product;
use App\Models\ProductStock;
use App\Models\ProductTax;
use App\Models\ProductTranslation;
use Artisan;
use Auth;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
class AuctionService
{
public function store(Request $request){
$product = new Product;
$product->name = $request->name;
$product->added_by = $request->added_by;
if(Auth::user()->user_type == 'seller'){
$product->user_id = Auth::user()->id;
if(get_setting('product_approve_by_admin') == 1) {
$product->approved = 0;
}
}
else{
$product->user_id = \App\Models\User::where('user_type', 'admin')->first()->id;
}
$product->auction_product = 1;
$product->category_id = $request->category_id;
$product->brand_id = $request->brand_id;
$product->barcode = $request->barcode;
$product->starting_bid = $request->starting_bid;
if (addon_is_activated('refund_request')) {
if ($request->refundable != null) {
$product->refundable = 1;
}
else {
$product->refundable = 0;
}
}
$product->photos = $request->photos;
$product->thumbnail_img = $request->thumbnail_img;
// $product->min_qty = 1;
// $product->stock_visibility_state = '';
$tags = array();
if($request->tags[0] != null){
foreach (json_decode($request->tags[0]) as $key => $tag) {
array_push($tags, $tag->value);
}
}
$product->tags = implode(',', $tags);
$product->description = $request->description;
$product->video_provider = $request->video_provider;
$product->video_link = $request->video_link;
if ($request->auction_date_range != null) {
$date_var = explode(" to ", $request->auction_date_range);
$product->auction_start_date = strtotime($date_var[0]);
$product->auction_end_date = strtotime($date_var[1]);
}
$product->shipping_type = $request->shipping_type;
$product->est_shipping_days = $request->est_shipping_days;
if (addon_is_activated('club_point')) {
if($request->earn_point) {
$product->earn_point = $request->earn_point;
}
}
if ($request->has('shipping_type')) {
if($request->shipping_type == 'free'){
$product->shipping_cost = 0;
}
elseif ($request->shipping_type == 'flat_rate') {
$product->shipping_cost = $request->flat_shipping_cost;
}
elseif ($request->shipping_type == 'product_wise') {
$product->shipping_cost = json_encode($request->shipping_cost);
}
}
if ($request->has('is_quantity_multiplied')) {
$product->is_quantity_multiplied = 1;
}
$product->meta_title = $request->meta_title;
$product->meta_description = $request->meta_description;
if($request->has('meta_img')){
$product->meta_img = $request->meta_img;
} else {
$product->meta_img = $product->thumbnail_img;
}
if($product->meta_title == null) {
$product->meta_title = $product->name;
}
if($product->meta_description == null) {
$product->meta_description = strip_tags($product->description);
}
if($product->meta_img == null) {
$product->meta_img = $product->thumbnail_img;
}
if($request->hasFile('pdf')){
$product->pdf = $request->pdf->store('uploads/products/pdf');
}
$product->slug = preg_replace('/[^A-Za-z0-9\-]/', '', str_replace(' ', '-', $request->name)).'-'.Str::random(5);
$product->colors = json_encode(array());
$product->attributes = json_encode(array());
$product->choice_options = json_encode(array(), JSON_UNESCAPED_UNICODE);
if ($request->has('cash_on_delivery')) {
$product->cash_on_delivery = 1;
}
if ($request->has('todays_deal')) {
$product->todays_deal = 1;
}
$product->cash_on_delivery = 0;
if ($request->cash_on_delivery) {
$product->cash_on_delivery = 1;
}
$product->save();
//VAT & Tax
if($request->tax_id) {
foreach ($request->tax_id as $key => $val) {
$product_tax = new ProductTax;
$product_tax->tax_id = $val;
$product_tax->product_id = $product->id;
$product_tax->tax = $request->tax[$key];
$product_tax->tax_type = $request->tax_type[$key];
$product_tax->save();
}
}
//Generates the combinations of customer choice options
$product_stock = new ProductStock;
$product_stock->product_id = $product->id;
$product_stock->variant = '';
$product_stock->price = 0;
$product_stock->sku = $request->sku;
$product_stock->qty = 1;
$product_stock->save();
//combinations end
$product->save();
// Product Translations
$product_translation = ProductTranslation::firstOrNew(['lang' => env('DEFAULT_LANGUAGE'), 'product_id' => $product->id]);
$product_translation->name = $request->name;
$product_translation->unit = $request->unit;
$product_translation->description = $request->description;
$product_translation->save();
flash(translate('Product has been inserted successfully'))->success();
Artisan::call('view:clear');
Artisan::call('cache:clear');
}
public function update(Request $request , $id){
$product = Product::findOrFail($id);
$product->category_id = $request->category_id;
$product->brand_id = $request->brand_id;
$product->barcode = $request->barcode;
$product->cash_on_delivery = 0;
$product->is_quantity_multiplied = 0;
if (addon_is_activated('refund_request')) {
if ($request->refundable != null) {
$product->refundable = 1;
}
else {
$product->refundable = 0;
}
}
if($request->lang == env("DEFAULT_LANGUAGE")){
$product->name = $request->name;
$product->unit = $request->unit;
$product->description = $request->description;
$product->slug = strtolower($request->slug);
}
$product->photos = $request->photos;
$product->thumbnail_img = $request->thumbnail_img;
$tags = array();
if($request->tags[0] != null){
foreach (json_decode($request->tags[0]) as $key => $tag) {
array_push($tags, $tag->value);
}
}
$product->tags = implode(',', $tags);
$product->video_provider = $request->video_provider;
$product->video_link = $request->video_link;
$product->starting_bid = $request->starting_bid;
if ($request->auction_date_range != null) {
$date_var = explode(" to ", $request->auction_date_range);
$product->auction_start_date = strtotime($date_var[0]);
$product->auction_end_date = strtotime( $date_var[1]);
}
$product->shipping_type = $request->shipping_type;
$product->est_shipping_days = $request->est_shipping_days;
if (addon_is_activated('club_point')) {
if($request->earn_point) {
$product->earn_point = $request->earn_point;
}
}
if ($request->has('shipping_type')) {
if($request->shipping_type == 'free'){
$product->shipping_cost = 0;
}
elseif ($request->shipping_type == 'flat_rate') {
$product->shipping_cost = $request->flat_shipping_cost;
}
elseif ($request->shipping_type == 'product_wise') {
$product->shipping_cost = json_encode($request->shipping_cost);
}
}
if ($request->has('is_quantity_multiplied')) {
$product->is_quantity_multiplied = 1;
}
if ($request->has('cash_on_delivery')) {
$product->cash_on_delivery = 1;
}
$product->meta_title = $request->meta_title;
$product->meta_description = $request->meta_description;
$product->meta_img = $request->meta_img;
if($product->meta_title == null) {
$product->meta_title = $product->name;
}
if($product->meta_description == null) {
$product->meta_description = strip_tags($product->description);
}
if($product->meta_img == null) {
$product->meta_img = $product->thumbnail_img;
}
$product->pdf = $request->pdf;
$product->colors = json_encode(array());
$product->attributes = json_encode(array());
$product->choice_options = json_encode(array(), JSON_UNESCAPED_UNICODE);
$product->save();
//VAT & Tax
if($request->tax_id) {
ProductTax::where('product_id', $product->id)->delete();
foreach ($request->tax_id as $key => $val) {
$product_tax = new ProductTax;
$product_tax->tax_id = $val;
$product_tax->product_id = $product->id;
$product_tax->tax = $request->tax[$key];
$product_tax->tax_type = $request->tax_type[$key];
$product_tax->save();
}
}
// Product Translations
$product_translation = ProductTranslation::firstOrNew(['lang' => $request->lang, 'product_id' => $product->id]);
$product_translation->name = $request->name;
$product_translation->unit = $request->unit;
$product_translation->description = $request->description;
$product_translation->save();
flash(translate('Product has been updated successfully'))->success();
Artisan::call('view:clear');
Artisan::call('cache:clear');
}
public function destroy($id){
$product = Product::findOrFail($id);
foreach ($product->product_translations as $key => $product_translations) {
$product_translations->delete();
}
foreach ($product->bids as $key => $bid) {
$bid->delete();
}
if(Product::destroy($id)){
Cart::where('product_id', $id)->delete();
flash(translate('Product has been deleted successfully'))->success();
Artisan::call('view:clear');
Artisan::call('cache:clear');
}
else{
flash(translate('Something went wrong'))->error();
}
}
}

View File

@@ -0,0 +1 @@
COMMIT;

View File

@@ -0,0 +1 @@
COMMIT;

View File

@@ -0,0 +1 @@
COMMIT;

View File

@@ -0,0 +1 @@
COMMIT;

View File

@@ -0,0 +1 @@
COMMIT;

View File

@@ -0,0 +1,20 @@
CREATE TABLE `auction_product_bids` (
`id` int(11) NOT NULL,
`product_id` bigint(20) UNSIGNED NOT NULL,
`user_id` bigint(20) UNSIGNED NOT NULL,
`amount` double(8,2) NOT NULL,
`created_at` timestamp NULL DEFAULT current_timestamp(),
`updated_at` timestamp NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
ALTER TABLE `auction_product_bids`
ADD PRIMARY KEY (`id`);
ALTER TABLE `auction_product_bids`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
ALTER TABLE `products` ADD `starting_bid` double(20,2) DEFAULT '0.00' AFTER `discount_end_date`;
ALTER TABLE `products` ADD `auction_start_date` INT(11) DEFAULT NULL AFTER `starting_bid`;
ALTER TABLE `products` ADD `auction_end_date` INT(11) DEFAULT NULL AFTER `auction_start_date`;
COMMIT;

View File

@@ -0,0 +1,163 @@
@extends('backend.layouts.app')
@section('content')
<div class="card">
<form class="" id=" sort_orders" action="" method="GET">
<div class="card-header row gutters-5">
<div class="col text-center text-md-left">
<h5 class="mb-md-0 h6">{{ translate('Auction Product Orders') }}</h5>
</div>
<div class="col-lg-2">
<div class="form-group mb-0">
<input type="text" class="aiz-date-range form-control" value="{{ $date }}" name="date"
placeholder="{{ translate('Filter by date') }}" data-format="DD-MM-Y" data-separator=" to "
data-advanced-range="true" autocomplete="off">
</div>
</div>
<div class="col-lg-2 ml-auto">
<select class="form-control aiz-selectpicker" name="payment_type" id="payment_type"
onchange="sort_orders()">
<option value="">{{ translate('Filter by Payment Status') }}</option>
<option value="paid" @isset($payment_status) @if ($payment_status == 'paid') selected @endif @endisset>
{{ translate('Paid') }}</option>
<option value="unpaid" @isset($payment_status) @if ($payment_status == 'unpaid') selected @endif @endisset>
{{ translate('Un-Paid') }}</option>
</select>
</div>
<div class="col-lg-2 ml-auto">
<select class="form-control aiz-selectpicker" name="delivery_status" id="delivery_status"
onchange="sort_orders()">
<option value="">{{ translate('Filter by Deliver Status') }}</option>
<option value="pending" @isset($delivery_status) @if ($delivery_status == 'pending') selected @endif @endisset>
{{ translate('Pending') }}</option>
<option value="confirmed" @isset($delivery_status) @if ($delivery_status == 'confirmed') selected @endif @endisset>
{{ translate('Confirmed') }}</option>
<option value="on_delivery" @isset($delivery_status) @if ($delivery_status == 'on_delivery') selected @endif @endisset>
{{ translate('On delivery') }}</option>
<option value="delivered" @isset($delivery_status) @if ($delivery_status == 'delivered') selected @endif @endisset>
{{ translate('Delivered') }}</option>
</select>
</div>
<div class="col-lg-2">
<div class="form-group mb-0">
<input type="text" class="form-control" id="search" name="search" @isset($sort_search)
value="{{ $sort_search }}" @endisset
placeholder="{{ translate('Type Order code & hit Enter') }}">
</div>
</div>
<div class="col-auto">
<div class="form-group mb-0">
<button type="submit" class="btn btn-primary">{{ translate('Filter') }}</button>
</div>
</div>
</div>
</form>
<div class="card-body">
<table class="table aiz-table mb-0">
<thead>
<tr>
<th>#</th>
<th>{{ translate('Order Code') }}</th>
<th data-breakpoints="md">{{ translate('Customer') }}</th>
<th data-breakpoints="md">{{ translate('Amount') }}</th>
<th data-breakpoints="md">{{ translate('Delivery Status') }}</th>
<th data-breakpoints="md">{{ translate('Payment Method') }}</th>
<th data-breakpoints="md">{{ translate('Payment Status') }}</th>
@if (addon_is_activated('refund_request'))
<th>{{ translate('Refund') }}</th>
@endif
<th class="text-right" width="15%">{{ translate('Options') }}</th>
</tr>
</thead>
<tbody>
@foreach ($orders as $key => $order_id)
@php
$order = \App\Models\Order::find($order_id->id);
@endphp
@if ($order != null)
<tr>
<td>
{{ $key + 1 + ($orders->currentPage() - 1) * $orders->perPage() }}
</td>
<td>
{{ $order->code }}@if ($order->viewed == 0) <span class="badge badge-inline badge-info">{{ translate('New') }}</span>@endif
</td>
<td>
@if ($order->user != null)
{{ $order->user->name }}
@else
Guest ({{ $order->guest_id }})
@endif
</td>
<td>
{{ single_price($order->grand_total) }}
</td>
<td>
@php
$status = $order->delivery_status;
@endphp
{{ translate(ucfirst(str_replace('_', ' ', $status))) }}
</td>
<td>
{{ translate(ucfirst(str_replace('_', ' ', $order->payment_type))) }}
</td>
<td>
@if ($order->payment_status == 'paid')
<span class="badge badge-inline badge-success">{{ translate('Paid') }}</span>
@else
<span class="badge badge-inline badge-danger">{{ translate('Unpaid') }}</span>
@endif
</td>
@if (addon_is_activated('refund_request'))
<td>
@if (count($order->refund_requests) > 0)
{{ count($order->refund_requests) }} {{ translate('Refund') }}
@else
{{ translate('No Refund') }}
@endif
</td>
@endif
<td class="text-right">
@can('view_order_details')
<a class="btn btn-soft-primary btn-icon btn-circle btn-sm" href="{{route('all_orders.show', encrypt($order->id))}}" title="{{ translate('View') }}">
<i class="las la-eye"></i>
</a>
@endcan
<a class="btn btn-soft-primary btn-icon btn-circle btn-sm"
href="{{ route('invoice.download', $order->id) }}"
title="{{ translate('Download Invoice') }}">
<i class="las la-download"></i>
</a>
@can('delete_order')
<a href="#" class="btn btn-soft-danger btn-icon btn-circle btn-sm confirm-delete" data-href="{{ route('orders.destroy', $order->id) }}" title="{{ translate('Delete') }}">
<i class="las la-trash"></i>
</a>
@endcan
</td>
</tr>
@endif
@endforeach
</tbody>
</table>
<div class="aiz-pagination">
{{ $orders->appends(request()->input())->links() }}
</div>
</div>
</div>
@endsection
@section('modal')
@include('modals.delete_modal')
@endsection
@section('script')
<script type="text/javascript">
function sort_orders(el) {
$('#sort_orders').submit();
}
</script>
@endsection

View File

@@ -0,0 +1,64 @@
@extends('backend.layouts.app')
@section('content')
<div class="aiz-titlebar text-left mt-2 mb-3">
<div class="row align-items-center">
<div class="col-auto">
<h1 class="h3">{{translate('Bids For').$product->name}}</h1>
</div>
</div>
</div>
<br>
<div class="card">
<div class="card-header row gutters-5">
<div class="col">
<h5 class="mb-md-0 h6">{{ translate('All Bids') }}</h5>
</div>
</div>
<div class="card-body">
<table class="table aiz-table mb-0">
<thead>
<tr>
<th>#</th>
<th>{{translate('Customer Name')}}</th>
<th>{{translate('Email')}}</th>
<th>{{translate('Phone')}}</th>
<th>{{translate('Bid Amount')}}</th>
<th>{{translate('Date')}}</th>
<th data-breakpoints="sm" class="text-right">{{translate('Options')}}</th>
</tr>
</thead>
<tbody>
@foreach($bids as $key => $bid)
<tr>
<td>{{ ($key+1) + ($bids->currentPage() - 1)*$bids->perPage() }}</td>
<td>{{ $bid->user->name ?? translate('User Deleted') }}</td>
<td>{{ $bid->user->email ?? '' }}</td>
<td>{{ $bid->user->phone ?? '' }}</td>
<td>{{ single_price($bid->amount) }}</td>
<td>{{ date('d-m-Y', strtotime($bid->created_at)) }}</td>
<td class="text-right">
@can('delete_auction_product_bids')
<a href="#" class="btn btn-soft-danger btn-icon btn-circle btn-sm confirm-delete" data-href="{{route('product_bids_destroy.admin', $bid->id)}}" title="{{ translate('Delete') }}">
<i class="las la-trash"></i>
</a>
@endcan
</td>
</tr>
@endforeach
</tbody>
</table>
<div class="aiz-pagination">
{{ $bids->appends(request()->input())->links() }}
</div>
</div>
</div>
@endsection
@section('modal')
@include('modals.delete_modal')
@endsection

View File

@@ -0,0 +1,388 @@
@extends('backend.layouts.app')
@section('content')
<div class="aiz-titlebar text-left mt-2 mb-3">
<h5 class="mb-0 h6">{{translate('Add New Auction Product')}}</h5>
</div>
<div class="">
<form class="form form-horizontal mar-top" action="{{route('auction_product_store.admin')}}" method="POST" enctype="multipart/form-data" id="choice_form">
<div class="row gutters-5">
<div class="col-lg-8">
@csrf
<input type="hidden" name="added_by" value="admin">
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{translate('Product Information')}}</h5>
</div>
<div class="card-body">
<div class="form-group row">
<label class="col-md-3 col-from-label">{{translate('Product Name')}} <span class="text-danger">*</span></label>
<div class="col-md-8">
<input type="text" class="form-control" name="name" placeholder="{{ translate('Product Name') }}" onchange="update_sku()" required>
</div>
</div>
<div class="form-group row" id="category">
<label class="col-md-3 col-from-label">{{translate('Category')}} <span class="text-danger">*</span></label>
<div class="col-md-8">
<select class="form-control aiz-selectpicker" name="category_id" id="category_id" data-live-search="true" required>
@foreach ($categories as $category)
<option value="{{ $category->id }}">{{ $category->getTranslation('name') }}</option>
@foreach ($category->childrenCategories as $childCategory)
@include('categories.child_category', ['child_category' => $childCategory])
@endforeach
@endforeach
</select>
</div>
</div>
<div class="form-group row" id="brand">
<label class="col-md-3 col-from-label">{{translate('Brand')}}</label>
<div class="col-md-8">
<select class="form-control aiz-selectpicker" name="brand_id" id="brand_id" data-live-search="true">
<option value="">{{ translate('Select Brand') }}</option>
@foreach (\App\Models\Brand::all() as $brand)
<option value="{{ $brand->id }}">{{ $brand->getTranslation('name') }}</option>
@endforeach
</select>
</div>
</div>
<div class="form-group row">
<label class="col-md-3 col-from-label">{{translate('Unit')}}</label>
<div class="col-md-8">
<input type="text" class="form-control" name="unit" placeholder="{{ translate('Unit (e.g. KG, Pc etc)') }}" required>
</div>
</div>
<div class="form-group row">
<label class="col-md-3 col-from-label">{{translate('Tags')}} <span class="text-danger">*</span></label>
<div class="col-md-8">
<input type="text" class="form-control aiz-tag-input" name="tags[]" placeholder="{{ translate('Type and hit enter to add a tag') }}">
<small class="text-muted">{{translate('This is used for search. Input those words by which cutomer can find this product.')}}</small>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{translate('Product Images')}}</h5>
</div>
<div class="card-body">
<div class="form-group row">
<label class="col-md-3 col-form-label" for="signinSrEmail">{{translate('Gallery Images')}} <small>(600x600)</small></label>
<div class="col-md-8">
<div class="input-group" data-toggle="aizuploader" data-type="image" data-multiple="true">
<div class="input-group-prepend">
<div class="input-group-text bg-soft-secondary font-weight-medium">{{ translate('Browse')}}</div>
</div>
<div class="form-control file-amount">{{ translate('Choose File') }}</div>
<input type="hidden" name="photos" class="selected-files">
</div>
<div class="file-preview box sm">
</div>
<small class="text-muted">{{translate('These images are visible in product details page gallery. Use 600x600 sizes images.')}}</small>
</div>
</div>
<div class="form-group row">
<label class="col-md-3 col-form-label" for="signinSrEmail">{{translate('Thumbnail Image')}} <small>(300x300)</small></label>
<div class="col-md-8">
<div class="input-group" data-toggle="aizuploader" data-type="image">
<div class="input-group-prepend">
<div class="input-group-text bg-soft-secondary font-weight-medium">{{ translate('Browse')}}</div>
</div>
<div class="form-control file-amount">{{ translate('Choose File') }}</div>
<input type="hidden" name="thumbnail_img" class="selected-files">
</div>
<div class="file-preview box sm">
</div>
<small class="text-muted">{{translate('This image is visible in all product box. Use 300x300 sizes image. Keep some blank space around main object of your image as we had to crop some edge in different devices to make it responsive.')}}</small>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{translate('Product Videos')}}</h5>
</div>
<div class="card-body">
<div class="form-group row">
<label class="col-md-3 col-from-label">{{translate('Video Provider')}}</label>
<div class="col-md-8">
<select class="form-control aiz-selectpicker" name="video_provider" id="video_provider">
<option value="youtube">{{translate('Youtube')}}</option>
<option value="dailymotion">{{translate('Dailymotion')}}</option>
<option value="vimeo">{{translate('Vimeo')}}</option>
</select>
</div>
</div>
<div class="form-group row">
<label class="col-md-3 col-from-label">{{translate('Video Link')}}</label>
<div class="col-md-8">
<input type="text" class="form-control" name="video_link" placeholder="{{ translate('Video Link') }}">
<small class="text-muted">{{translate("Use proper link without extra parameter. Don't use short share link/embeded iframe code.")}}</small>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{translate('Product Bidding Price + Date Range')}}</h5>
</div>
<div class="card-body">
<div class="form-group row">
<label class="col-md-3 col-from-label">{{translate('Starting Bidding Price')}} <span class="text-danger">*</span></label>
<div class="col-md-9">
<input type="number" lang="en" min="0" value="0" step="0.01" placeholder="{{ translate('Starting bidding price') }}" name="starting_bid" class="form-control" required>
</div>
</div>
<div class="form-group row">
<label class="col-sm-3 control-label" for="start_date">{{translate('Auction Date Range')}}</label>
<div class="col-sm-9">
<input type="text" class="form-control aiz-date-range" name="auction_date_range" placeholder="{{translate('Select Date')}}" data-time-picker="true" data-format="DD-MM-Y HH:mm:ss" data-separator=" to " autocomplete="off">
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{translate('Product Description')}}</h5>
</div>
<div class="card-body">
<div class="form-group row">
<label class="col-md-3 col-from-label">{{translate('Description')}}</label>
<div class="col-md-8">
<textarea class="aiz-text-editor" name="description"></textarea>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{translate('PDF Specification')}}</h5>
</div>
<div class="card-body">
<div class="form-group row">
<label class="col-md-3 col-form-label" for="signinSrEmail">{{translate('PDF Specification')}}</label>
<div class="col-md-8">
<div class="input-group" data-toggle="aizuploader" data-type="document">
<div class="input-group-prepend">
<div class="input-group-text bg-soft-secondary font-weight-medium">{{ translate('Browse')}}</div>
</div>
<div class="form-control file-amount">{{ translate('Choose File') }}</div>
<input type="hidden" name="pdf" class="selected-files">
</div>
<div class="file-preview box sm">
</div>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{translate('SEO Meta Tags')}}</h5>
</div>
<div class="card-body">
<div class="form-group row">
<label class="col-md-3 col-from-label">{{translate('Meta Title')}}</label>
<div class="col-md-8">
<input type="text" class="form-control" name="meta_title" placeholder="{{ translate('Meta Title') }}">
</div>
</div>
<div class="form-group row">
<label class="col-md-3 col-from-label">{{translate('Description')}}</label>
<div class="col-md-8">
<textarea name="meta_description" rows="8" class="form-control"></textarea>
</div>
</div>
<div class="form-group row">
<label class="col-md-3 col-form-label" for="signinSrEmail">{{ translate('Meta Image') }}</label>
<div class="col-md-8">
<div class="input-group" data-toggle="aizuploader" data-type="image">
<div class="input-group-prepend">
<div class="input-group-text bg-soft-secondary font-weight-medium">{{ translate('Browse')}}</div>
</div>
<div class="form-control file-amount">{{ translate('Choose File') }}</div>
<input type="hidden" name="meta_img" class="selected-files">
</div>
<div class="file-preview box sm">
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-lg-4">
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">
{{translate('Shipping Configuration')}}
</h5>
</div>
<div class="card-body">
@if (get_setting('shipping_type') == 'product_wise_shipping')
<div class="form-group row">
<label class="col-md-6 col-from-label">{{translate('Free Shipping')}}</label>
<div class="col-md-6">
<label class="aiz-switch aiz-switch-success mb-0">
<input type="radio" name="shipping_type" value="free" checked>
<span></span>
</label>
</div>
</div>
<div class="form-group row">
<label class="col-md-6 col-from-label">{{translate('Flat Rate')}}</label>
<div class="col-md-6">
<label class="aiz-switch aiz-switch-success mb-0">
<input type="radio" name="shipping_type" value="flat_rate">
<span></span>
</label>
</div>
</div>
<div class="flat_rate_shipping_div" style="display: none">
<div class="form-group row">
<label class="col-md-6 col-from-label">{{translate('Shipping cost')}}</label>
<div class="col-md-6">
<input type="number" lang="en" min="0" value="0" step="0.01" placeholder="{{ translate('Shipping cost') }}" name="flat_shipping_cost" class="form-control" required>
</div>
</div>
</div>
<div class="form-group row">
<label class="col-md-6 col-from-label">{{translate('Is Product Quantity Mulitiply')}}</label>
<div class="col-md-6">
<label class="aiz-switch aiz-switch-success mb-0">
<input type="checkbox" name="is_quantity_multiplied" value="1">
<span></span>
</label>
</div>
</div>
@else
<p>
{{ translate('Product wise shipping cost is disable. Shipping cost is configured from here') }}
<a href="{{route('shipping_configuration.index')}}" class="aiz-side-nav-link {{ areActiveRoutes(['shipping_configuration.index','shipping_configuration.edit','shipping_configuration.update'])}}">
<span class="aiz-side-nav-text">{{translate('Shipping Configuration')}}</span>
</a>
</p>
@endif
</div>
</div>
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{translate('Cash On Delivery')}}</h5>
</div>
<div class="card-body">
@if (get_setting('cash_payment') == '1')
<div class="form-group row">
<label class="col-md-6 col-from-label">{{translate('Status')}}</label>
<div class="col-md-6">
<label class="aiz-switch aiz-switch-success mb-0">
<input type="checkbox" name="cash_on_delivery" value="1" checked="">
<span></span>
</label>
</div>
</div>
@else
<p>
{{ translate('Cash On Delivery option is disabled. Activate this feature from here') }}
<a href="{{route('activation.index')}}" class="aiz-side-nav-link {{ areActiveRoutes(['shipping_configuration.index','shipping_configuration.edit','shipping_configuration.update'])}}">
<span class="aiz-side-nav-text">{{translate('Cash Payment Activation')}}</span>
</a>
</p>
@endif
</div>
</div>
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{translate('Estimate Shipping Time')}}</h5>
</div>
<div class="card-body">
<div class="form-group mb-3">
<label for="name">
{{translate('Shipping Days')}}
</label>
<div class="input-group">
<input type="number" class="form-control" name="est_shipping_days" min="1" step="1" placeholder="{{translate('Shipping Days')}}">
<div class="input-group-prepend">
<span class="input-group-text" id="inputGroupPrepend">{{translate('Days')}}</span>
</div>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{translate('VAT & Tax')}}</h5>
</div>
<div class="card-body">
@foreach(\App\Models\Tax::where('tax_status', 1)->get() as $tax)
<label for="name">
{{$tax->name}}
<input type="hidden" value="{{$tax->id}}" name="tax_id[]">
</label>
<div class="form-row">
<div class="form-group col-md-6">
<input type="number" lang="en" min="0" value="0" step="0.01" placeholder="{{ translate('Tax') }}" name="tax[]" class="form-control" required>
</div>
<div class="form-group col-md-6">
<select class="form-control aiz-selectpicker" name="tax_type[]">
<option value="amount">{{translate('Flat')}}</option>
<option value="percent">{{translate('Percent')}}</option>
</select>
</div>
</div>
@endforeach
</div>
</div>
</div>
<div class="col-12">
<div class="btn-toolbar float-right mb-3" role="toolbar" aria-label="Toolbar with button groups">
<div class="btn-group mr-2" role="group" aria-label="First group">
<button type="submit" name="button" value="draft" class="btn btn-primary">{{ translate('Save') }}</button>
</div>
</div>
</div>
</div>
</form>
</div>
@endsection
@section('script')
<script type="text/javascript">
$('form').bind('submit', function (e) {
// Disable the submit button while evaluating if the form should be submitted
$("button[type='submit']").prop('disabled', true);
var valid = true;
if (!valid) {
e.preventDefault();
// Reactivate the button if the form was not submitted
$("button[type='submit']").button.prop('disabled', false);
}
});
$("[name=shipping_type]").on("change", function (){
$(".flat_rate_shipping_div").hide();
if($(this).val() == 'flat_rate'){
$(".flat_rate_shipping_div").show();
}
});
</script>
@endsection

View File

@@ -0,0 +1,424 @@
@extends('backend.layouts.app')
@section('content')
<div class="aiz-titlebar text-left mt-2 mb-3">
<h1 class="mb-0 h6">{{ translate('Edit Auction Product') }}</h5>
</div>
<div class="">
<form class="form form-horizontal mar-top" action="{{route('auction_product_update.admin', $product->id)}}" method="POST" enctype="multipart/form-data">
<input name="_method" type="hidden" value="POST">
<input type="hidden" name="id" value="{{ $product->id }}">
<input type="hidden" name="lang" value="{{ $lang }}">
@csrf
<div class="row gutters-5">
<div class="col-lg-8">
<div class="card">
<ul class="nav nav-tabs nav-fill border-light">
@foreach (\App\Models\Language::all() as $key => $language)
<li class="nav-item">
<a class="nav-link text-reset @if ($language->code == $lang) active @else bg-soft-dark border-light border-left-0 @endif py-3" href="{{ route('auction_product_edit.admin', ['id'=>$product->id, 'lang'=> $language->code] ) }}">
<img src="{{ static_asset('assets/img/flags/'.$language->code.'.png') }}" height="11" class="mr-1">
<span>{{$language->name}}</span>
</a>
</li>
@endforeach
</ul>
<div class="card-body">
<div class="form-group row">
<label class="col-lg-3 col-from-label">{{translate('Product Name')}} <i class="las la-language text-danger" title="{{translate('Translatable')}}"></i></label>
<div class="col-lg-8">
<input type="text" class="form-control" name="name" placeholder="{{translate('Product Name')}}" value="{{ $product->getTranslation('name', $lang) }}" required>
</div>
</div>
<div class="form-group row" id="category">
<label class="col-lg-3 col-from-label">{{translate('Category')}}</label>
<div class="col-lg-8">
<select class="form-control aiz-selectpicker" name="category_id" id="category_id" data-selected="{{ $product->category_id }}" data-live-search="true" required>
@foreach ($categories as $category)
<option value="{{ $category->id }}">{{ $category->getTranslation('name') }}</option>
@foreach ($category->childrenCategories as $childCategory)
@include('categories.child_category', ['child_category' => $childCategory])
@endforeach
@endforeach
</select>
</div>
</div>
<div class="form-group row" id="brand">
<label class="col-lg-3 col-from-label">{{translate('Brand')}}</label>
<div class="col-lg-8">
<select class="form-control aiz-selectpicker" name="brand_id" id="brand_id" data-live-search="true">
<option value="">{{ translate('Select Brand') }}</option>
@foreach (\App\Models\Brand::all() as $brand)
<option value="{{ $brand->id }}" @if($product->brand_id == $brand->id) selected @endif>{{ $brand->getTranslation('name') }}</option>
@endforeach
</select>
</div>
</div>
<div class="form-group row">
<label class="col-lg-3 col-from-label">{{translate('Unit')}} <i class="las la-language text-danger" title="{{translate('Translatable')}}"></i> </label>
<div class="col-lg-8">
<input type="text" class="form-control" name="unit" placeholder="{{ translate('Unit (e.g. KG, Pc etc)') }}" value="{{$product->getTranslation('unit', $lang)}}" required>
</div>
</div>
<div class="form-group row">
<label class="col-lg-3 col-from-label">{{translate('Tags')}}</label>
<div class="col-lg-8">
<input type="text" class="form-control aiz-tag-input" name="tags[]" id="tags" value="{{ $product->tags }}" placeholder="{{ translate('Type to add a tag') }}" data-role="tagsinput">
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{translate('Product Images')}}</h5>
</div>
<div class="card-body">
<div class="form-group row">
<label class="col-md-3 col-form-label" for="signinSrEmail">{{translate('Gallery Images')}}</label>
<div class="col-md-8">
<div class="input-group" data-toggle="aizuploader" data-type="image" data-multiple="true">
<div class="input-group-prepend">
<div class="input-group-text bg-soft-secondary font-weight-medium">{{ translate('Browse')}}</div>
</div>
<div class="form-control file-amount">{{ translate('Choose File') }}</div>
<input type="hidden" name="photos" value="{{ $product->photos }}" class="selected-files">
</div>
<div class="file-preview box sm">
</div>
</div>
</div>
<div class="form-group row">
<label class="col-md-3 col-form-label" for="signinSrEmail">{{translate('Thumbnail Image')}} <small>(290x300)</small></label>
<div class="col-md-8">
<div class="input-group" data-toggle="aizuploader" data-type="image">
<div class="input-group-prepend">
<div class="input-group-text bg-soft-secondary font-weight-medium">{{ translate('Browse')}}</div>
</div>
<div class="form-control file-amount">{{ translate('Choose File') }}</div>
<input type="hidden" name="thumbnail_img" value="{{ $product->thumbnail_img }}" class="selected-files">
</div>
<div class="file-preview box sm">
</div>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{translate('Product Videos')}}</h5>
</div>
<div class="card-body">
<div class="form-group row">
<label class="col-lg-3 col-from-label">{{translate('Video Provider')}}</label>
<div class="col-lg-8">
<select class="form-control aiz-selectpicker" name="video_provider" id="video_provider">
<option value="youtube" <?php if ($product->video_provider == 'youtube') echo "selected"; ?> >{{translate('Youtube')}}</option>
<option value="dailymotion" <?php if ($product->video_provider == 'dailymotion') echo "selected"; ?> >{{translate('Dailymotion')}}</option>
<option value="vimeo" <?php if ($product->video_provider == 'vimeo') echo "selected"; ?> >{{translate('Vimeo')}}</option>
</select>
</div>
</div>
<div class="form-group row">
<label class="col-lg-3 col-from-label">{{translate('Video Link')}}</label>
<div class="col-lg-8">
<input type="text" class="form-control" name="video_link" value="{{ $product->video_link }}" placeholder="{{ translate('Video Link') }}">
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{translate('Product Bidding Price + Date Range')}}</h5>
</div>
<div class="card-body">
<div class="form-group row">
<label class="col-lg-3 col-from-label">{{translate('Starting Bidding Price')}}</label>
<div class="col-lg-6">
<input type="text" placeholder="{{translate('Starting Bidding Price')}}" name="starting_bid" class="form-control" value="{{$product->starting_bid}}" required>
</div>
</div>
@php
$start_date = date('d-m-Y H:i:s', $product->auction_start_date);
$end_date = date('d-m-Y H:i:s', $product->auction_end_date);
@endphp
<div class="form-group row">
<label class="col-sm-3 col-from-label" for="start_date">{{translate('Auction Date Range')}}</label>
<div class="col-sm-9">
<input type="text" class="form-control aiz-date-range" value="{{ $start_date.' to '.$end_date }}" name="auction_date_range" placeholder="{{translate('Select Date')}}" data-time-picker="true" data-format="DD-MM-Y HH:mm:ss" data-separator=" to " autocomplete="off">
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{translate('Product Description')}}</h5>
</div>
<div class="card-body">
<div class="form-group row">
<label class="col-lg-3 col-from-label">{{translate('Description')}} <i class="las la-language text-danger" title="{{translate('Translatable')}}"></i></label>
<div class="col-lg-9">
<textarea class="aiz-text-editor" name="description">{{ $product->getTranslation('description', $lang) }}</textarea>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{translate('PDF Specification')}}</h5>
</div>
<div class="card-body">
<div class="form-group row">
<label class="col-md-3 col-form-label" for="signinSrEmail">{{translate('PDF Specification')}}</label>
<div class="col-md-8">
<div class="input-group" data-toggle="aizuploader">
<div class="input-group-prepend">
<div class="input-group-text bg-soft-secondary font-weight-medium">{{ translate('Browse')}}</div>
</div>
<div class="form-control file-amount">{{ translate('Choose File') }}</div>
<input type="hidden" name="pdf" value="{{ $product->pdf }}" class="selected-files">
</div>
<div class="file-preview box sm">
</div>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{translate('SEO Meta Tags')}}</h5>
</div>
<div class="card-body">
<div class="form-group row">
<label class="col-lg-3 col-from-label">{{translate('Meta Title')}}</label>
<div class="col-lg-8">
<input type="text" class="form-control" name="meta_title" value="{{ $product->meta_title }}" placeholder="{{translate('Meta Title')}}">
</div>
</div>
<div class="form-group row">
<label class="col-lg-3 col-from-label">{{translate('Description')}}</label>
<div class="col-lg-8">
<textarea name="meta_description" rows="8" class="form-control">{{ $product->meta_description }}</textarea>
</div>
</div>
<div class="form-group row">
<label class="col-md-3 col-form-label" for="signinSrEmail">{{translate('Meta Images')}}</label>
<div class="col-md-8">
<div class="input-group" data-toggle="aizuploader" data-type="image" data-multiple="true">
<div class="input-group-prepend">
<div class="input-group-text bg-soft-secondary font-weight-medium">{{ translate('Browse')}}</div>
</div>
<div class="form-control file-amount">{{ translate('Choose File') }}</div>
<input type="hidden" name="meta_img" value="{{ $product->meta_img }}" class="selected-files">
</div>
<div class="file-preview box sm">
</div>
</div>
</div>
<div class="form-group row">
<label class="col-md-3 col-form-label">{{translate('Slug')}}</label>
<div class="col-md-8">
<input type="text" placeholder="{{translate('Slug')}}" id="slug" name="slug" value="{{ $product->slug }}" class="form-control">
</div>
</div>
</div>
</div>
</div>
<div class="col-lg-4">
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6" class="dropdown-toggle" data-toggle="collapse" data-target="#collapse_2">
{{translate('Shipping Configuration')}}
</h5>
</div>
<div class="card-body collapse show" id="collapse_2">
@if (get_setting('shipping_type') == 'product_wise_shipping')
<div class="form-group row">
<label class="col-lg-6 col-from-label">{{translate('Free Shipping')}}</label>
<div class="col-lg-6">
<label class="aiz-switch aiz-switch-success mb-0">
<input type="radio" name="shipping_type" value="free" @if($product->shipping_type == 'free') checked @endif>
<span></span>
</label>
</div>
</div>
<div class="form-group row">
<label class="col-lg-6 col-from-label">{{translate('Flat Rate')}}</label>
<div class="col-lg-6">
<label class="aiz-switch aiz-switch-success mb-0">
<input type="radio" name="shipping_type" value="flat_rate" @if($product->shipping_type == 'flat_rate') checked @endif>
<span></span>
</label>
</div>
</div>
<div class="flat_rate_shipping_div" style="display: none">
<div class="form-group row">
<label class="col-lg-6 col-from-label">{{translate('Shipping cost')}}</label>
<div class="col-lg-6">
<input type="number" lang="en" min="0" value="{{ $product->shipping_cost }}" step="0.01" placeholder="{{ translate('Shipping cost') }}" name="flat_shipping_cost" class="form-control">
</div>
</div>
</div>
<div class="form-group row">
<label class="col-md-6 col-from-label">{{translate('Is Product Quantity Mulitiply')}}</label>
<div class="col-md-6">
<label class="aiz-switch aiz-switch-success mb-0">
<input type="checkbox" name="is_quantity_multiplied" value="1" @if($product->is_quantity_multiplied == 1) checked @endif>
<span></span>
</label>
</div>
</div>
@else
<p>
{{ translate('Product wise shipping cost is disable. Shipping cost is configured from here') }}
<a href="{{route('shipping_configuration.index')}}" class="aiz-side-nav-link {{ areActiveRoutes(['shipping_configuration.index','shipping_configuration.edit','shipping_configuration.update'])}}">
<span class="aiz-side-nav-text">{{translate('Shipping Configuration')}}</span>
</a>
</p>
@endif
</div>
</div>
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{translate('Cash On Delivery')}}</h5>
</div>
<div class="card-body">
@if (get_setting('cash_payment') == '1')
<div class="form-group row">
<div class="col-md-12">
<div class="form-group row">
<label class="col-md-6 col-from-label">{{translate('Status')}}</label>
<div class="col-md-6">
<label class="aiz-switch aiz-switch-success mb-0">
<input type="checkbox" name="cash_on_delivery" value="1" @if($product->cash_on_delivery == 1) checked @endif>
<span></span>
</label>
</div>
</div>
</div>
</div>
@else
<p>
{{ translate('Cash On Delivery option is disabled. Activate this feature from here') }}
<a href="{{route('activation.index')}}" class="aiz-side-nav-link {{ areActiveRoutes(['shipping_configuration.index','shipping_configuration.edit','shipping_configuration.update'])}}">
<span class="aiz-side-nav-text">{{translate('Cash Payment Activation')}}</span>
</a>
</p>
@endif
</div>
</div>
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{translate('Estimate Shipping Time')}}</h5>
</div>
<div class="card-body">
<div class="form-group mb-3">
<label for="name">
{{translate('Shipping Days')}}
</label>
<div class="input-group">
<input type="number" class="form-control" name="est_shipping_days" value="{{ $product->est_shipping_days }}" min="1" step="1" placeholder="{{translate('Shipping Days')}}">
<div class="input-group-prepend">
<span class="input-group-text" id="inputGroupPrepend">{{translate('Days')}}</span>
</div>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{translate('VAT & Tax')}}</h5>
</div>
<div class="card-body">
@foreach(\App\Models\Tax::where('tax_status', 1)->get() as $tax)
<label for="name">
{{$tax->name}}
<input type="hidden" value="{{$tax->id}}" name="tax_id[]">
</label>
@php
$tax_amount = 0;
$tax_type = '';
foreach($tax->product_taxes as $row) {
if($product->id == $row->product_id) {
$tax_amount = $row->tax;
$tax_type = $row->tax_type;
}
}
@endphp
<div class="form-row">
<div class="form-group col-md-6">
<input type="number" lang="en" min="0" value="{{ $tax_amount }}" step="0.01" placeholder="{{ translate('Tax') }}" name="tax[]" class="form-control" required>
</div>
<div class="form-group col-md-6">
<select class="form-control aiz-selectpicker" name="tax_type[]">
<option value="amount" @if($tax_type == 'amount') selected @endif>
{{translate('Flat')}}
</option>
<option value="percent" @if($tax_type == 'percent') selected @endif>
{{translate('Percent')}}
</option>
</select>
</div>
</div>
@endforeach
</div>
</div>
</div>
<div class="col-12">
<div class="mb-3 text-right">
<button type="submit" name="button" class="btn btn-info">{{ translate('Update Product') }}</button>
</div>
</div>
</div>
</form>
</div>
@endsection
@section('script')
<script type="text/javascript">
$(document).ready(function (){
show_hide_shipping_div();
});
$("[name=shipping_type]").on("change", function (){
show_hide_shipping_div();
});
function show_hide_shipping_div() {
var shipping_val = $("[name=shipping_type]:checked").val();
$(".flat_rate_shipping_div").hide();
if(shipping_val == 'flat_rate'){
$(".flat_rate_shipping_div").show();
}
}
AIZ.plugins.tagify();
$(document).ready(function(){
$('.remove-files').on('click', function(){
$(this).parents(".col-md-4").remove();
});
});
</script>
@endsection

View File

@@ -0,0 +1,172 @@
@extends('backend.layouts.app')
@section('content')
<div class="aiz-titlebar text-left mt-2 mb-3">
<div class="row align-items-center">
<div class="col-auto">
<h1 class="h3">{{translate('Auction products')}}</h1>
</div>
@can('add_auction_product')
<div class="col text-right">
<a href="{{ route('auction_product_create.admin') }}" class="btn btn-circle btn-info">
<span>{{translate('Add New Auction Product')}}</span>
</a>
</div>
@endcan
</div>
</div>
<br>
<div class="card">
<form class="" id="sort_products" action="" method="GET">
<div class="card-header row gutters-5">
<div class="col">
<h5 class="mb-md-0 h6">{{ translate('Auction Product') }}</h5>
</div>
@if($type == 'seller')
<div class="col-md-2 ml-auto">
<select class="form-control form-control-sm aiz-selectpicker mb-2 mb-md-0" id="user_id" name="user_id" onchange="sort_products()">
<option value="">{{ translate('All Sellers') }}</option>
@foreach (App\Models\Seller::all() as $key => $seller)
@if ($seller->user != null && $seller->user->shop != null)
<option value="{{ $seller->user->id }}" @if ($seller->user->id == $seller_id) selected @endif>{{ $seller->user->shop->name }} ({{ $seller->user->name }})</option>
@endif
@endforeach
</select>
</div>
@endif
@if($type == 'all')
<div class="col-md-2 ml-auto">
<select class="form-control form-control-sm aiz-selectpicker mb-2 mb-md-0" id="user_id" name="user_id" onchange="sort_products()">
<option value="">{{ translate('All Sellers') }}</option>
@foreach (App\Models\User::where('user_type', '=', 'admin')->orWhere('user_type', '=', 'seller')->get() as $key => $seller)
<option value="{{ $seller->id }}" @if ($seller->id == $seller_id) selected @endif>{{ $seller->name }}</option>
@endforeach
</select>
</div>
@endif
<div class="col-md-2">
<div class="form-group mb-0">
<input type="text" class="form-control form-control-sm" id="search" name="search"@isset($sort_search) value="{{ $sort_search }}" @endisset placeholder="{{ translate('Type & Enter') }}">
</div>
</div>
</div>
<div class="card-body">
<table class="table aiz-table mb-0">
<thead>
<tr>
<th>#</th>
<th>{{translate('Name')}}</th>
@if($type == 'all' || $type == 'seller')
<th data-breakpoints="sm">{{translate('Added By')}}</th>
@endif
<th data-breakpoints="sm">{{translate('Bid Starting Amount')}}</th>
<th data-breakpoints="sm">{{translate('Auction Start Date')}}</th>
<th data-breakpoints="sm">{{translate('Auction End Date')}}</th>
<th data-breakpoints="sm">{{translate('Total Bids')}}</th>
@if(get_setting('product_approve_by_admin') == 1 && $type == 'seller')
<th data-breakpoints="lg">{{translate('Approved')}}</th>
@endif
<th data-breakpoints="sm" class="text-right">{{translate('Options')}}</th>
</tr>
</thead>
<tbody>
@foreach($products as $key => $product)
<tr>
<td>{{ ($key+1) + ($products->currentPage() - 1)*$products->perPage() }}</td>
<td>
<div class="row gutters-5 w-200px w-md-300px mw-100">
<div class="col-auto">
<img src="{{ uploaded_asset($product->thumbnail_img)}}" alt="Image" class="size-50px img-fit">
</div>
<div class="col">
<span class="text-muted text-truncate-2">{{ $product->getTranslation('name') }}</span>
</div>
</div>
</td>
@if($type == 'seller' || $type == 'all')
<td>{{ $product->user->name }}</td>
@endif
<td>{{ single_price($product->starting_bid) }}</td>
<td>{{ date('Y-m-d H:i:s', $product->auction_start_date) }}</td>
<td>{{ date('Y-m-d H:i:s', $product->auction_end_date) }}</td>
<td>{{ $product->bids->count() }}</td>
@if(get_setting('product_approve_by_admin') == 1 && $type == 'seller')
<td>
<label class="aiz-switch aiz-switch-success mb-0">
<input onchange="update_approved(this)" value="{{ $product->id }}" type="checkbox" <?php if ($product->approved == 1) echo "checked"; ?> >
<span class="slider round"></span>
</label>
</td>
@endif
<td class="text-right">
@if($product->auction_start_date > strtotime("now") && auth()->user()->can('edit_auction_product'))
<a class="btn btn-soft-primary btn-icon btn-circle btn-sm" href="{{route('auction_product_edit.admin', ['id'=>$product->id, 'lang'=>env('DEFAULT_LANGUAGE')] )}}" title="{{ translate('Edit') }}">
<i class="las la-edit"></i>
</a>
@endif
<a class="btn btn-soft-success btn-icon btn-circle btn-sm" href="{{ route('auction-product', $product->slug) }}" target="_blank" title="{{ translate('View Products') }}">
<i class="las la-eye"></i>
</a>
@can('view_auction_product_bids')
<a class="btn btn-soft-info btn-icon btn-circle btn-sm" href="{{ route('product_bids.admin', $product->id) }}" target="_blank" title="{{ translate('View All Bids') }}">
<i class="las la-gavel"></i>
</a>
@endcan
@can('delete_auction_product')
<a href="#" class="btn btn-soft-danger btn-icon btn-circle btn-sm confirm-delete" data-href="{{route('auction_product_destroy.admin', $product->id)}}" title="{{ translate('Delete') }}">
<i class="las la-trash"></i>
</a>
@endcan
</td>
</tr>
@endforeach
</tbody>
</table>
<div class="aiz-pagination">
{{ $products->appends(request()->input())->links() }}
</div>
</div>
</form>
</div>
@endsection
@section('modal')
@include('modals.delete_modal')
@endsection
@section('script')
<script type="text/javascript">
function sort_products(el){
$('#sort_products').submit();
}
function update_approved(el){
if(el.checked){
var approved = 1;
}
else{
var approved = 0;
}
$.post('{{ route('products.approved') }}', {
_token : '{{ csrf_token() }}',
id : el.value,
approved : approved
}, function(data){
if(data == 1){
AIZ.plugins.notify('success', '{{ translate('Product approval update successfully') }}');
}
else{
AIZ.plugins.notify('danger', '{{ translate('Something went wrong') }}');
}
});
}
</script>
@endsection

View File

@@ -0,0 +1,97 @@
<div class="modal-body p-4 c-scrollbar-light">
<div class="row">
<div class="col-lg-6">
<div class="row gutters-10 flex-row-reverse">
@php
$photos = explode(',',$product->photos);
@endphp
<div class="col">
<div class="aiz-carousel product-gallery" data-nav-for='.product-gallery-thumb' data-fade='true' data-auto-height='true'>
@foreach ($photos as $key => $photo)
<div class="carousel-box img-zoom rounded">
<img class="img-fluid lazyload"
src="{{ static_asset('assets/img/placeholder.jpg') }}"
data-src="{{ uploaded_asset($photo) }}"
onerror="this.onerror=null;this.src='{{ static_asset('assets/img/placeholder.jpg') }}';">
</div>
@endforeach
@foreach ($product->stocks as $key => $stock)
@if ($stock->image != null)
<div class="carousel-box img-zoom rounded">
<img class="img-fluid lazyload"
src="{{ static_asset('assets/img/placeholder.jpg') }}"
data-src="{{ uploaded_asset($stock->image) }}"
onerror="this.onerror=null;this.src='{{ static_asset('assets/img/placeholder.jpg') }}';">
</div>
@endif
@endforeach
</div>
</div>
<div class="col-auto w-90px">
<div class="aiz-carousel carousel-thumb product-gallery-thumb" data-items='5' data-nav-for='.product-gallery' data-vertical='true' data-focus-select='true'>
@foreach ($photos as $key => $photo)
<div class="carousel-box c-pointer border p-1 rounded">
<img class="lazyload mw-100 size-60px mx-auto"
src="{{ static_asset('assets/img/placeholder.jpg') }}"
data-src="{{ uploaded_asset($photo) }}"
onerror="this.onerror=null;this.src='{{ static_asset('assets/img/placeholder.jpg') }}';">
</div>
@endforeach
@foreach ($product->stocks as $key => $stock)
@if ($stock->image != null)
<div class="carousel-box c-pointer border p-1 rounded" data-variation="{{ $stock->variant }}">
<img class="lazyload mw-100 size-50px mx-auto"
src="{{ static_asset('assets/img/placeholder.jpg') }}"
data-src="{{ uploaded_asset($stock->image) }}"
onerror="this.onerror=null;this.src='{{ static_asset('assets/img/placeholder.jpg') }}';">
</div>
@endif
@endforeach
</div>
</div>
</div>
</div>
<div class="col-lg-6">
<div class="text-left">
<h2 class="mb-2 fs-20 fw-600">
{{ $product->getTranslation('name') }}
</h2>
<div class="row no-gutters mt-3">
<div class="col-2">
<div class="opacity-50 mt-2">{{ translate('Price')}}:</div>
</div>
<div class="col-10">
<div class="">
<strong class="h2 fw-600 text-primary">
{{ single_price($product->bids->max('amount')) }}
</strong>
<span class="opacity-70">/{{ $product->unit }}</span>
</div>
</div>
</div>
<hr>
@php
$qty = 0;
foreach ($product->stocks as $key => $stock) {
$qty += $stock->qty;
}
@endphp
<form id="option-choice-form">
@csrf
<input type="hidden" name="id" value="{{ $product->id }}">
<input type="hidden" name="quantity" value="1" >
</form>
<div class="mt-3">
<button type="button" class="btn btn-primary buy-now fw-600 add-to-cart" onclick="addToCart()">
<i class="la la-shopping-cart"></i>
<span class="d-none d-md-inline-block"> {{ translate('Add to cart')}}</span>
</button>
</div>
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,100 @@
@extends('frontend.layouts.app')
@if (isset($category_id))
@php
$meta_title = \App\Models\Category::find($category_id)->meta_title;
$meta_description = \App\Models\Category::find($category_id)->meta_description;
@endphp
@elseif (isset($brand_id))
@php
$meta_title = \App\Models\Brand::find($brand_id)->meta_title;
$meta_description = \App\Models\Brand::find($brand_id)->meta_description;
@endphp
@else
@php
$meta_title = get_setting('meta_title');
$meta_description = get_setting('meta_description');
@endphp
@endif
@section('meta_title'){{ $meta_title }}@stop
@section('meta_description'){{ $meta_description }}@stop
@section('meta')
<!-- Schema.org markup for Google+ -->
<meta itemprop="name" content="{{ $meta_title }}">
<meta itemprop="description" content="{{ $meta_description }}">
<!-- Twitter Card data -->
<meta name="twitter:title" content="{{ $meta_title }}">
<meta name="twitter:description" content="{{ $meta_description }}">
<!-- Open Graph data -->
<meta property="og:title" content="{{ $meta_title }}" />
<meta property="og:description" content="{{ $meta_description }}" />
@endsection
@section('content')
<!-- Breadcrumb -->
<section class="mb-4 pt-4">
<div class="container">
<div class="row">
<div class="col-lg-6 text-lg-left text-center">
<h1 class="fw-700 fs-20 fs-md-24 text-dark">{{ translate('All Auction Products') }}</h1>
</div>
<div class="col-lg-6">
<ul class="breadcrumb justify-content-center justify-content-lg-end bg-transparent p-0">
<li class="breadcrumb-item has-transition opacity-60 hov-opacity-80">
<a class="text-reset" href="{{ route('home') }}">{{ translate('Home') }}</a>
</li>
<li class="text-dark fw-600 breadcrumb-item">
<span class="text-dark">{{ translate('All Auction Products') }}</span>
</li>
</ul>
</div>
</div>
</div>
</section>
<!-- All Auction Products -->
<section class="mb-4 pt-3">
<div class="container">
<div class="bg-white px-3 pt-3">
<div class="row gutters-16 row-cols-xxl-5 row-cols-lg-4 row-cols-md-3 row-cols-2 border-top border-left">
@foreach ($products as $key => $product)
<div class="col text-center border-right border-bottom hov-scale-img has-transition hov-shadow-out z-1">
<div class="position-relative">
<a href="{{ route('auction-product', $product->slug) }}" class="d-block p-3">
<img class="lazyload h-sm-120px h-md-210px img-fit mx-auto has-transition"
src="{{ static_asset('assets/img/placeholder.jpg') }}"
data-src="{{ uploaded_asset($product->thumbnail_img) }}"
alt="{{ $product->getTranslation('name') }}" title="{{ $product->getTranslation('name') }}"
onerror="this.onerror=null;this.src='{{ static_asset('assets/img/placeholder.jpg') }}';">
</a>
</div>
<div class="p-md-3 p-2 text-center">
<h3 class="fw-400 fs-14 text-truncate-2 lh-1-4 mb-0 h-35px mb-2">
<a href="{{ route('auction-product', $product->slug) }}" class="d-block text-reset hov-text-primary"
title="{{ $product->getTranslation('name') }}">{{ $product->getTranslation('name') }}</a>
</h3>
<div class="fs-14">
<span class="fw-700 text-primary">{{ single_price($product->starting_bid) }}</span>
</div>
</div>
</div>
@endforeach
</div>
<div class="aiz-pagination aiz-pagination-center mt-4">
{{ $products->appends(request()->input())->links() }}
</div>
</div>
</div>
</section>
@endsection
@section('script')
<script type="text/javascript">
</script>
@endsection

View File

@@ -0,0 +1,574 @@
@extends('frontend.layouts.app')
@section('meta_title'){{ $detailedProduct->meta_title }}@stop
@section('meta_description'){{ $detailedProduct->meta_description }}@stop
@section('meta_keywords'){{ $detailedProduct->tags }}@stop
@section('meta')
<!-- Schema.org markup for Google+ -->
<meta itemprop="name" content="{{ $detailedProduct->meta_title }}">
<meta itemprop="description" content="{{ $detailedProduct->meta_description }}">
<meta itemprop="image" content="{{ uploaded_asset($detailedProduct->meta_img) }}">
<!-- Twitter Card data -->
<meta name="twitter:card" content="product">
<meta name="twitter:site" content="@publisher_handle">
<meta name="twitter:title" content="{{ $detailedProduct->meta_title }}">
<meta name="twitter:description" content="{{ $detailedProduct->meta_description }}">
<meta name="twitter:creator" content="@author_handle">
<meta name="twitter:image" content="{{ uploaded_asset($detailedProduct->meta_img) }}">
<meta name="twitter:data1" content="{{ single_price($detailedProduct->unit_price) }}">
<meta name="twitter:label1" content="Price">
<!-- Open Graph data -->
<meta property="og:title" content="{{ $detailedProduct->meta_title }}" />
<meta property="og:type" content="og:product" />
<meta property="og:url" content="{{ route('product', $detailedProduct->slug) }}" />
<meta property="og:image" content="{{ uploaded_asset($detailedProduct->meta_img) }}" />
<meta property="og:description" content="{{ $detailedProduct->meta_description }}" />
<meta property="og:site_name" content="{{ get_setting('meta_title') }}" />
<meta property="og:price:amount" content="{{ single_price($detailedProduct->unit_price) }}" />
<meta property="product:price:currency" content="{{ \App\Models\Currency::findOrFail(get_setting('system_default_currency'))->code }}" />
<meta property="fb:app_id" content="{{ env('FACEBOOK_PIXEL_ID') }}">
@endsection
@section('content')
<section class="mb-4 pt-3">
<div class="container">
<div class="bg-white shadow-sm rounded p-3">
<div class="row">
<div class="col-xl-5 col-lg-6 mb-4">
<div class="sticky-top z-3 row gutters-10">
@php
$photos = explode(',', $detailedProduct->photos);
@endphp
<div class="col order-1 order-md-2">
<div class="aiz-carousel product-gallery" data-nav-for='.product-gallery-thumb' data-fade='true' data-auto-height='true'>
@foreach ($photos as $key => $photo)
<div class="carousel-box img-zoom rounded">
<img class="img-fluid lazyload"
src="{{ static_asset('assets/img/placeholder.jpg') }}"
data-src="{{ uploaded_asset($photo) }}"
onerror="this.onerror=null;this.src='{{ static_asset('assets/img/placeholder.jpg') }}';">
</div>
@endforeach
@foreach ($detailedProduct->stocks as $key => $stock)
@if ($stock->image != null)
<div class="carousel-box img-zoom rounded">
<img class="img-fluid lazyload"
src="{{ static_asset('assets/img/placeholder.jpg') }}"
data-src="{{ uploaded_asset($stock->image) }}"
onerror="this.onerror=null;this.src='{{ static_asset('assets/img/placeholder.jpg') }}';">
</div>
@endif
@endforeach
</div>
</div>
<div class="col-12 col-md-auto w-md-80px order-2 order-md-1 mt-3 mt-md-0">
<div class="aiz-carousel product-gallery-thumb" data-items='5' data-nav-for='.product-gallery' data-vertical='true' data-vertical-sm='false' data-focus-select='true' data-arrows='true'>
@foreach ($photos as $key => $photo)
<div class="carousel-box c-pointer border p-1 rounded">
<img class="lazyload mw-100 size-50px mx-auto"
src="{{ static_asset('assets/img/placeholder.jpg') }}"
data-src="{{ uploaded_asset($photo) }}"
onerror="this.onerror=null;this.src='{{ static_asset('assets/img/placeholder.jpg') }}';">
</div>
@endforeach
@foreach ($detailedProduct->stocks as $key => $stock)
@if ($stock->image != null)
<div class="carousel-box c-pointer border p-1 rounded" data-variation="{{ $stock->variant }}">
<img class="lazyload mw-100 size-50px mx-auto"
src="{{ static_asset('assets/img/placeholder.jpg') }}"
data-src="{{ uploaded_asset($stock->image) }}"
onerror="this.onerror=null;this.src='{{ static_asset('assets/img/placeholder.jpg') }}';">
</div>
@endif
@endforeach
</div>
</div>
</div>
</div>
<div class="col-xl-7 col-lg-6">
<div class="text-left">
<h1 class="mb-2 fs-20 fw-600">
{{ $detailedProduct->getTranslation('name') }}
</h1>
<div class="row align-items-center">
@if ($detailedProduct->est_shipping_days)
<div class="col-auto ml">
<small class="mr-2 opacity-50">{{ translate('Estimate Shipping Time')}}: </small>{{ $detailedProduct->est_shipping_days }} {{ translate('Days') }}
</div>
@endif
</div>
<hr>
<div class="row align-items-center">
<div class="col-auto">
<small class="mr-2 opacity-50">{{ translate('Sold by')}}: </small><br>
@if ($detailedProduct->added_by == 'seller' && get_setting('vendor_system_activation') == 1)
<a href="{{ route('shop.visit', $detailedProduct->user->shop->slug) }}" class="text-reset">{{ $detailedProduct->user->shop->name }}</a>
@else
{{ translate('Inhouse product') }}
@endif
</div>
@if (get_setting('conversation_system') == 1)
<div class="col-auto">
<button class="btn btn-sm btn-soft-primary" onclick="show_chat_modal()">{{ translate('Message Seller')}}</button>
</div>
@endif
@if ($detailedProduct->brand != null)
<div class="col-auto">
<a href="{{ route('products.brand',$detailedProduct->brand->slug) }}">
<img src="{{ uploaded_asset($detailedProduct->brand->logo) }}" alt="{{ $detailedProduct->brand->getTranslation('name') }}" height="30">
</a>
</div>
@endif
</div>
<hr>
<div class="row no-gutters mt-3">
<div class="col-sm-2">
<div class="opacity-50 my-2">{{ translate('Auction Will End')}}:</div>
</div>
<div class="col-sm-10">
@if($detailedProduct->auction_end_date > strtotime("now"))
<div class="aiz-count-down align-items-center" data-date="{{ date('Y/m/d H:i:s', $detailedProduct->auction_end_date) }}"></div>
@else
<p>Ended</p>
@endif
</div>
</div>
<hr>
<div class="row no-gutters mt-3">
<div class="col-sm-2">
<div class="opacity-50 my-2">{{ translate('Starting Bid')}}:</div>
</div>
<div class="col-sm-10">
<span class="opacity-50 fs-20">
{{ single_price($detailedProduct->starting_bid) }}
</span>
@if($detailedProduct->unit != null)
<span class="opacity-70">/{{ $detailedProduct->getTranslation('unit') }}</span>
@endif
</div>
</div>
<hr>
@if(Auth::check() && Auth::user()->product_bids->where('product_id',$detailedProduct->id)->first() != null)
<div class="row no-gutters">
<div class="col-sm-2">
<div class="opacity-50">{{ translate('My Bidded Amount')}}:</div>
</div>
<div class="col-sm-10">
<span class="opacity-50 fs-20">
{{ single_price(Auth::user()->product_bids->where('product_id',$detailedProduct->id)->first()->amount) }}
</span>
</div>
</div>
<hr>
@endif
@php $highest_bid = $detailedProduct->bids->max('amount'); @endphp
<div class="row no-gutters my-2">
<div class="col-sm-2">
<div class="opacity-50">{{ translate('Highest Bid')}}:</div>
</div>
<div class="col-sm-10">
<strong class="h3 fw-600 text-primary">
@if($highest_bid != null)
{{ single_price($highest_bid) }}
@endif
</strong>
</div>
</div>
<hr>
@php $min_bid_amount = $highest_bid != null ? $highest_bid+1 : $detailedProduct->starting_bid; @endphp
@if($detailedProduct->auction_end_date >= strtotime("now"))
<div class="mt-3">
@if(Auth::check() && $detailedProduct->user_id == Auth::user()->id)
<span class="badge badge-inline badge-danger">{{ translate('Seller Can Not Place Bid to His Own Product') }}</span>
@else
<button type="button" class="btn btn-primary buy-now fw-600" onclick="bid_modal()">
<i class="las la-gavel"></i>
@if(Auth::check() && Auth::user()->product_bids->where('product_id',$detailedProduct->id)->first() != null)
{{ translate('Change Bid')}}
@else
{{ translate('Place Bid')}}
@endif
</button>
@endif
</div>
@endif
<div class="row no-gutters mt-4">
<div class="col-sm-2">
<div class="opacity-50 my-2">{{ translate('Share')}}:</div>
</div>
<div class="col-sm-10">
<div class="aiz-share"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="mb-4">
<div class="container">
<div class="row gutters-10">
<div class="col-xl-12 order-0 order-xl-1">
<div class="bg-white mb-3 shadow-sm rounded">
<div class="nav border-bottom aiz-nav-tabs">
<a href="#tab_default_1" data-toggle="tab" class="p-3 fs-16 fw-600 text-reset active show">{{ translate('Description')}}</a>
@if($detailedProduct->video_link != null)
<a href="#tab_default_2" data-toggle="tab" class="p-3 fs-16 fw-600 text-reset">{{ translate('Video')}}</a>
@endif
@if($detailedProduct->pdf != null)
<a href="#tab_default_3" data-toggle="tab" class="p-3 fs-16 fw-600 text-reset">{{ translate('Downloads')}}</a>
@endif
@if($detailedProduct->auction_product == 0)
<a href="#tab_default_4" data-toggle="tab" class="p-3 fs-16 fw-600 text-reset">{{ translate('Reviews')}}</a>
@endif
</div>
<div class="tab-content pt-0">
<div class="tab-pane fade active show" id="tab_default_1">
<div class="p-4">
<div class="mw-100 overflow-hidden text-left aiz-editor-data">
<?php echo $detailedProduct->getTranslation('description'); ?>
</div>
</div>
</div>
<div class="tab-pane fade" id="tab_default_2">
<div class="p-4">
<div class="embed-responsive embed-responsive-16by9">
@if ($detailedProduct->video_provider == 'youtube' && isset(explode('=', $detailedProduct->video_link)[1]))
<iframe class="embed-responsive-item" src="https://www.youtube.com/embed/{{ explode('=', $detailedProduct->video_link)[1] }}"></iframe>
@elseif ($detailedProduct->video_provider == 'dailymotion' && isset(explode('video/', $detailedProduct->video_link)[1]))
<iframe class="embed-responsive-item" src="https://www.dailymotion.com/embed/video/{{ explode('video/', $detailedProduct->video_link)[1] }}"></iframe>
@elseif ($detailedProduct->video_provider == 'vimeo' && isset(explode('vimeo.com/', $detailedProduct->video_link)[1]))
<iframe src="https://player.vimeo.com/video/{{ explode('vimeo.com/', $detailedProduct->video_link)[1] }}" width="500" height="281" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
@endif
</div>
</div>
</div>
<div class="tab-pane fade" id="tab_default_3">
<div class="p-4 text-center ">
<a href="{{ uploaded_asset($detailedProduct->pdf) }}" class="btn btn-primary">{{ translate('Download') }}</a>
</div>
</div>
<div class="tab-pane fade" id="tab_default_4">
<div class="p-4">
<ul class="list-group list-group-flush">
@foreach ($detailedProduct->reviews as $key => $review)
@if($review->user != null)
<li class="media list-group-item d-flex">
<span class="avatar avatar-md mr-3">
<img class="lazyload"
src="{{ static_asset('assets/img/placeholder.jpg') }}"
onerror="this.onerror=null;this.src='{{ static_asset('assets/img/placeholder.jpg') }}';"
@if($review->user->avatar_original !=null)
data-src="{{ uploaded_asset($review->user->avatar_original) }}"
@else
data-src="{{ static_asset('assets/img/placeholder.jpg') }}"
@endif
>
</span>
<div class="media-body text-left">
<div class="d-flex justify-content-between">
<h3 class="fs-15 fw-600 mb-0">{{ $review->user->name }}</h3>
<span class="rating rating-sm">
@for ($i=0; $i < $review->rating; $i++)
<i class="las la-star active"></i>
@endfor
@for ($i=0; $i < 5-$review->rating; $i++)
<i class="las la-star"></i>
@endfor
</span>
</div>
<div class="opacity-60 mb-2">{{ date('d-m-Y', strtotime($review->created_at)) }}</div>
<p class="comment-text">
{{ $review->comment }}
</p>
</div>
</li>
@endif
@endforeach
</ul>
@if(count($detailedProduct->reviews) <= 0)
<div class="text-center fs-18 opacity-70">
{{ translate('There have been no reviews for this product yet.') }}
</div>
@endif
@if(Auth::check())
@php
$commentable = false;
@endphp
@foreach ($detailedProduct->orderDetails as $key => $orderDetail)
@if($orderDetail->order != null && $orderDetail->order->user_id == Auth::user()->id &&
$orderDetail->delivery_status == 'delivered' &&
\App\Models\Review::where('user_id', Auth::user()->id)->where('product_id', $detailedProduct->id)->first() == null)
@php
$commentable = true;
@endphp
@endif
@endforeach
@if ($commentable)
<div class="pt-4">
<div class="border-bottom mb-4">
<h3 class="fs-17 fw-600">
{{ translate('Write a review')}}
</h3>
</div>
<form class="form-default" role="form" action="{{ route('reviews.store') }}" method="POST">
@csrf
<input type="hidden" name="product_id" value="{{ $detailedProduct->id }}">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label for="" class="text-uppercase c-gray-light">{{ translate('Your name')}}</label>
<input type="text" name="name" value="{{ Auth::user()->name }}" class="form-control" disabled required>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label for="" class="text-uppercase c-gray-light">{{ translate('Email')}}</label>
<input type="text" name="email" value="{{ Auth::user()->email }}" class="form-control" required disabled>
</div>
</div>
</div>
<div class="form-group">
<label class="opacity-60">{{ translate('Rating')}}</label>
<div class="rating rating-input">
<label>
<input type="radio" name="rating" value="1" required>
<i class="las la-star"></i>
</label>
<label>
<input type="radio" name="rating" value="2">
<i class="las la-star"></i>
</label>
<label>
<input type="radio" name="rating" value="3">
<i class="las la-star"></i>
</label>
<label>
<input type="radio" name="rating" value="4">
<i class="las la-star"></i>
</label>
<label>
<input type="radio" name="rating" value="5">
<i class="las la-star"></i>
</label>
</div>
</div>
<div class="form-group">
<label class="opacity-60">{{ translate('Comment')}}</label>
<textarea class="form-control" rows="4" name="comment" placeholder="{{ translate('Your review')}}" required></textarea>
</div>
<div class="text-right">
<button type="submit" class="btn btn-primary mt-3">
{{ translate('Submit review')}}
</button>
</div>
</form>
</div>
@endif
@endif
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
@endsection
@section('modal')
<div class="modal fade" id="chat_modal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered modal-dialog-zoom product-modal" id="modal-size" role="document">
<div class="modal-content position-relative">
<div class="modal-header">
<h5 class="modal-title fw-600 h5">{{ translate('Any query about this product')}}</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<form class="" action="{{ route('conversations.store') }}" method="POST" enctype="multipart/form-data">
@csrf
<input type="hidden" name="product_id" value="{{ $detailedProduct->id }}">
<div class="modal-body gry-bg px-3 pt-3">
<div class="form-group">
<input type="text" class="form-control mb-3" name="title" value="{{ $detailedProduct->name }}" placeholder="{{ translate('Product Name') }}" required>
</div>
<div class="form-group">
<textarea class="form-control" rows="8" name="message" required placeholder="{{ translate('Your Question') }}">{{ route('product', $detailedProduct->slug) }}</textarea>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-outline-primary fw-600" data-dismiss="modal">{{ translate('Cancel')}}</button>
<button type="submit" class="btn btn-primary fw-600">{{ translate('Send')}}</button>
</div>
</form>
</div>
</div>
</div>
<!-- Modal -->
<div class="modal fade" id="login_modal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-zoom" role="document">
<div class="modal-content">
<div class="modal-header">
<h6 class="modal-title fw-600">{{ translate('Login')}}</h6>
<button type="button" class="close" data-dismiss="modal">
<span aria-hidden="true"></span>
</button>
</div>
<div class="modal-body">
<div class="p-3">
<form class="form-default" role="form" action="{{ route('cart.login.submit') }}" method="POST">
@csrf
<div class="form-group">
@if (addon_is_activated('otp_system'))
<input type="text" class="form-control h-auto form-control-lg {{ $errors->has('email') ? ' is-invalid' : '' }}" value="{{ old('email') }}" placeholder="{{ translate('Email Or Phone')}}" name="email" id="email">
@else
<input type="email" class="form-control h-auto form-control-lg {{ $errors->has('email') ? ' is-invalid' : '' }}" value="{{ old('email') }}" placeholder="{{ translate('Email') }}" name="email">
@endif
@if (addon_is_activated('otp_system'))
<span class="opacity-60">{{ translate('Use country code before number') }}</span>
@endif
</div>
<div class="form-group">
<input type="password" name="password" class="form-control h-auto form-control-lg" placeholder="{{ translate('Password')}}">
</div>
<div class="row mb-2">
<div class="col-6">
<label class="aiz-checkbox">
<input type="checkbox" name="remember" {{ old('remember') ? 'checked' : '' }}>
<span class=opacity-60>{{ translate('Remember Me') }}</span>
<span class="aiz-square-check"></span>
</label>
</div>
<div class="col-6 text-right">
<a href="{{ route('password.request') }}" class="text-reset opacity-60 fs-14">{{ translate('Forgot password?')}}</a>
</div>
</div>
<div class="mb-5">
<button type="submit" class="btn btn-primary btn-block fw-600">{{ translate('Login') }}</button>
</div>
</form>
<div class="text-center mb-3">
<p class="text-muted mb-0">{{ translate('Dont have an account?')}}</p>
<a href="{{ route('user.registration') }}">{{ translate('Register Now')}}</a>
</div>
@if(get_setting('google_login') == 1 ||
get_setting('facebook_login') == 1 ||
get_setting('twitter_login') == 1)
<div class="separator mb-3">
<span class="bg-white px-3 opacity-60">{{ translate('Or Login With')}}</span>
</div>
<ul class="list-inline social colored text-center mb-5">
@if (get_setting('facebook_login') == 1)
<li class="list-inline-item">
<a href="{{ route('social.login', ['provider' => 'facebook']) }}" class="facebook">
<i class="lab la-facebook-f"></i>
</a>
</li>
@endif
@if(get_setting('google_login') == 1)
<li class="list-inline-item">
<a href="{{ route('social.login', ['provider' => 'google']) }}" class="google">
<i class="lab la-google"></i>
</a>
</li>
@endif
@if (get_setting('twitter_login') == 1)
<li class="list-inline-item">
<a href="{{ route('social.login', ['provider' => 'twitter']) }}" class="twitter">
<i class="lab la-twitter"></i>
</a>
</li>
@endif
</ul>
@endif
</div>
</div>
</div>
</div>
</div>
@if($detailedProduct->auction_product == 1)
{{-- Bid Modal --}}
<div class="modal fade" id="bid_for_product" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">{{ translate('Bid For Product') }} <small>({{ translate('Min Bid Amount: ').$min_bid_amount }})</small> </h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
</button>
</div>
<div class="modal-body">
<form class="form-horizontal" action="{{ route('auction_product_bids.store') }}" method="POST" enctype="multipart/form-data">
@csrf
<input type="hidden" name="product_id" value="{{ $detailedProduct->id }}">
<div class="form-group">
<label class="form-label">
{{translate('Place Bid Price')}}
<span class="text-danger">*</span>
</label>
<div class="form-group">
<input type="number" step="0.01" class="form-control form-control-sm" name="amount" min="{{ $min_bid_amount }}" placeholder="{{ translate('Enter Amount') }}" required>
</div>
</div>
<div class="form-group text-right">
<button type="submit" class="btn btn-sm btn-primary transition-3d-hover mr-1">{{ translate('Submit') }}</button>
</div>
</form>
</div>
</div>
</div>
</div>
@endif
@endsection
@section('script')
<script type="text/javascript">
function show_chat_modal(){
@if (Auth::check())
$('#chat_modal').modal('show');
@else
$('#login_modal').modal('show');
@endif
}
function bid_modal(){
@if (Auth::check() && (Auth::user()->user_type == 'customer' || Auth::user()->user_type == 'seller'))
$('#bid_for_product').modal('show');
@else
$('#login_modal').modal('show');
@endif
}
</script>
@endsection

View File

@@ -0,0 +1,138 @@
<section class="mb-2 mb-md-3 mt-2 mt-md-3">
<div class="container">
<!-- Top Section -->
<div class="d-flex mb-2 mb-md-3 align-items-baseline justify-content-between">
<!-- Title -->
<h3 class="fs-16 fs-md-20 fw-700 mb-2 mb-sm-0">
<span class="">{{ translate('Auction Products') }}</span>
</h3>
<!-- Links -->
<div class="d-flex">
<a class="text-blue fs-10 fs-md-12 fw-700 hov-text-primary animate-underline-primary" href="{{ route('auction_products.all') }}">{{ translate('View All Products') }}</a>
</div>
</div>
<!-- Products Section -->
<div class="row gutters-16">
<div class="col-xl-4 col-lg-6 mb-3 mb-lg-0">
<div class="h-100 w-100 overflow-hidden">
<a href="{{ route('auction_products.all') }}" class="hov-scale-img">
<img class="img-fit lazyload mx-auto h-400px h-lg-485px has-transition"
src="{{ static_asset('assets/img/placeholder.jpg') }}"
data-src="{{ uploaded_asset(get_setting('auction_banner_image')) }}"
alt="{{ env('APP_NAME') }} promo"
onerror="this.onerror=null;this.src='{{ static_asset('assets/img/placeholder.jpg') }}';">
</a>
</div>
</div>
@php
$products = \App\Models\Product::latest()->where('published', 1)->where('auction_product', 1);
if(get_setting('seller_auction_product') == 0){
$products = $products->where('added_by','admin');
}
$products = $products->where('auction_start_date','<=', strtotime("now"))->where('auction_end_date','>=', strtotime("now"))->limit(6)->get();
@endphp
<div class="col-xl-8 col-lg-6">
<div class="aiz-carousel arrow-x-0 border-right arrow-inactive-none" data-items="2" data-xxl-items="2" data-xl-items="2" data-lg-items="1" data-md-items="2" data-sm-items="1" data-xs-items="1" data-arrows="true" data-dots="false">
@php
$init = 0 ;
$end = 2 ;
@endphp
@for ($i = 0; $i < 2; $i++)
<div class="carousel-box border-top border-left">
@foreach ($products as $key => $product)
@if ($key >= $init && $key <= $end)
<div class="position-relative border-bottom @if($i==1) border-right @endif has-transition hov-animate-outline">
<div class="row hov-scale-img">
<div class="col-5">
<a href="{{ route('auction-product', $product->slug) }}" class="d-block overflow-hidden h-100px h-sm-120px h-md-140px text-center p-2">
<img class="img-fluid h-100 lazyload mx-auto has-transition"
src="{{ static_asset('assets/img/placeholder.jpg') }}"
data-src="{{ uploaded_asset($product->thumbnail_img) }}"
alt="{{ $product->getTranslation('name') }}"
onerror="this.onerror=null;this.src='{{ static_asset('assets/img/placeholder.jpg') }}';">
</a>
</div>
<div class="col p-2 ">
<h3 class="fw-400 fs-14 text-truncate-2 lh-1-4 mb-0 h-35px mb-3 d-none d-md-block">
<a href="{{ route('auction-product', $product->slug) }}" class="d-block text-reset hov-text-primary">{{ $product->getTranslation('name') }}</a>
</h3>
<div class="fs-14">
<span class="text-secondary">{{ translate('Starting Bid') }}</span><br>
<span class="fw-700 text-primary">{{ single_price($product->starting_bid) }}</span>
</div>
@php
$highest_bid = $product->bids->max('amount');
$min_bid_amount = $highest_bid != null ? $highest_bid+1 : $product->starting_bid;
@endphp
<button class="btn btn-primary btn-sm rounded-0 mt-3" onclick="bid_single_modal({{ $product->id }}, {{ $min_bid_amount }})">{{ translate('Place Bid') }}</button>
</div>
</div>
</div>
@endif
@endforeach
@php
$init += 3;
$end += 3;
@endphp
</div>
@endfor
</div>
</div>
</div>
</div>
</section>
<script type="text/javascript">
// Country Code
var isPhoneShown = true,
countryData = window.intlTelInputGlobals.getCountryData(),
input = document.querySelector("#phone-code");
for (var i = 0; i < countryData.length; i++) {
var country = countryData[i];
if (country.iso2 == 'bd') {
country.dialCode = '88';
}
}
var iti = intlTelInput(input, {
separateDialCode: true,
utilsScript: "{{ static_asset('assets/js/intlTelutils.js') }}?1590403638580",
onlyCountries: @php echo json_encode(\App\Models\Country::where('status', 1)->pluck('code')->toArray()) @endphp,
customPlaceholder: function(selectedCountryPlaceholder, selectedCountryData) {
if (selectedCountryData.iso2 == 'bd') {
return "01xxxxxxxxx";
}
return selectedCountryPlaceholder;
}
});
var country = iti.getSelectedCountryData();
$('input[name=country_code]').val(country.dialCode);
input.addEventListener("countrychange", function(e) {
// var currentMask = e.currentTarget.placeholder;
var country = iti.getSelectedCountryData();
$('input[name=country_code]').val(country.dialCode);
});
function toggleEmailPhone(el) {
if (isPhoneShown) {
$('.phone-form-group').addClass('d-none');
$('.email-form-group').removeClass('d-none');
$('input[name=phone]').val(null);
isPhoneShown = false;
$(el).html('{{ translate('Use Phone Instead') }}');
} else {
$('.phone-form-group').removeClass('d-none');
$('.email-form-group').addClass('d-none');
$('input[name=email]').val(null);
isPhoneShown = true;
$(el).html('{{ translate('Use Email Instead') }}');
}
}
</script>

View File

@@ -0,0 +1,124 @@
@extends('frontend.layouts.user_panel')
@section('panel_content')
<div class="card rounded-0 shadow-none border">
<div class="card-header border-bottom-0">
<h5 class="mb-0 fs-20 fw-700 text-dark">{{ translate('All Bidded Products') }}</h5>
</div>
<div class="card-body py-0">
<table class="table aiz-table mb-0">
<thead class="text-gray fs-12">
<tr>
<th class="pl-0">#</th>
<th width="40%" >{{ translate('Product')}}</th>
<th data-breakpoints="md">{{ translate('My Bid')}}</th>
<th data-breakpoints="md">{{ translate('Highest Bid')}}</th>
<th data-breakpoints="md">{{ translate('End Date')}}</th>
<th class="text-right pr-0">{{ translate('Action')}}</th>
</tr>
</thead>
<tbody class="fs-14">
@foreach ($bids as $key => $bid_id)
@php
$bid = \App\Models\AuctionProductBid::find($bid_id->id);
@endphp
<tr>
<td class="pl-0" style="vertical-align: middle;">{{ sprintf('%02d', ($key+1) + ($bids->currentPage() - 1)*$bids->perPage()) }}</td>
<td class="text-dark" style="vertical-align: middle;">
<a href="{{ route('auction-product', $bid->product->slug) }}" class="text-reset hov-text-primary d-flex align-items-center">
<img class="lazyload img-fit size-70px"
src="{{ static_asset('assets/img/placeholder.jpg') }}"
data-src="{{ uploaded_asset($bid->product->thumbnail_img) }}"
alt="{{ $bid->product->getTranslation('name') }}"
onerror="this.onerror=null;this.src='{{ static_asset('assets/img/placeholder.jpg') }}';">
<span class="ml-1">{{ $bid->product->getTranslation('name') }}</span>
</a>
</td>
<td class="fw-700" style="vertical-align: middle;">{{ single_price($bid->amount) }}</td>
<td style="vertical-align: middle;">
@php $highest_bid = $bid->where('product_id',$bid->product_id)->max('amount'); @endphp
<span class="badge badge-inline @if($bid->amount < $highest_bid) badge-danger @else badge-success @endif p-3 fs-12" style="border-radius: 25px; min-width: 80px !important;">
{{ single_price($highest_bid) }}
</span>
</td>
<td style="vertical-align: middle;">
@if($bid->product->auction_end_date < strtotime("now"))
{{ translate('Ended') }}
@else
{{ date('d.m.Y H:i:s', $bid->product->auction_end_date) }}
@endif
</td>
<td class="text-right pr-0" style="vertical-align: middle;">
@php
$order = null;
$order_detail = \App\Models\OrderDetail::where('product_id',$bid->product_id)->first();
if($order_detail != null ){
$order = \App\Models\Order::where('id',$order_detail->order_id)->where('user_id',Auth::user()->id)->first();
}
@endphp
@if($bid->product->auction_end_date < strtotime("now") && $bid->amount == $highest_bid && $order == null)
@php
$carts = \App\Models\Cart::where('user_id', Auth::user()->id)->get();
@endphp
@if(count($carts) > 0 )
@php
$cart_has_this_product = false;
foreach ($carts as $key => $cart){
if($cart->product_id == $bid->product_id){
$cart_has_this_product = true;
break;
}
}
@endphp
@if($cart_has_this_product)
<button type="button" class="btn btn-sm btn-primary buy-now fw-600 rounded-0" data-toggle="tooltip" title="{{ translate('Item alreday added to the cart.') }}">
{{ translate('Buy') }}
</button>
@else
<button type="button" class="btn btn-sm btn-primary buy-now fw-600 rounded-0" data-toggle="tooltip" title="{{ translate('Remove other items to add auction product.') }}">
{{ translate('Buy') }}
</button>
@endif
@else
<button type="button" class="btn btn-sm btn-primary buy-now fw-600 rounded-0" onclick="showAuctionAddToCartModal({{ $bid->product_id }})">
{{ translate('Buy') }}
</button>
@endif
@elseif($order != null)
<span class="badge badge-success p-3 fs-12" style="border-radius: 25px; min-width: 80px !important;" >{{ translate('Purchased') }}</span>
@else
N\A
@endif
</td>
</tr>
@endforeach
</tbody>
</table>
<div class="aiz-pagination">
{{ $bids->links() }}
</div>
</div>
</div>
@endsection
@section('script')
<script type="text/javascript">
function showAuctionAddToCartModal(id){
if(!$('#modal-size').hasClass('modal-lg')){
$('#modal-size').addClass('modal-lg');
}
$('#addToCart-modal-body').html(null);
$('#addToCart').modal();
$('.c-preloader').show();
$.post('{{ route('auction.cart.showCartModal') }}', {_token: AIZ.data.csrf, id:id}, function(data){
$('.c-preloader').hide();
$('#addToCart-modal-body').html(data);
AIZ.plugins.slickCarousel();
AIZ.plugins.zoom();
AIZ.extra.plusMinus();
getVariantPrice();
});
}
</script>
@endsection

View File

@@ -0,0 +1,108 @@
@extends('frontend.layouts.user_panel')
@section('panel_content')
<div class="card rounded-0 shadow-none border">
<div class="card-header border-bottom-0">
<h5 class="mb-0 fs-20 fw-700 text-dark">{{ translate('Purchase History from Auction') }}</h5>
</div>
<div class="card-body py-0">
<table class="table aiz-table mb-0">
<thead class="text-gray fs-12">
<tr>
<th class="pl-0">{{ translate('Code')}}</th>
<th data-breakpoints="md">{{ translate('Date')}}</th>
<th>{{ translate('Amount')}}</th>
<th data-breakpoints="md">{{ translate('Delivery Status')}}</th>
<th data-breakpoints="md">{{ translate('Payment Status')}}</th>
<th class="text-right pr-0">{{ translate('Options')}}</th>
</tr>
</thead>
<tbody class="fs-14">
@foreach ($orders as $key => $order_id)
@php
$order = \App\Models\Order::find($order_id->id);
@endphp
<tr>
<td class="pl-0">
<a href="#{{ $order->code }}" onclick="show_purchase_history_details({{ $order->id }})" class="fw-700 text-primary">{{ $order->code }}</a>
</td>
<td class="text-secondary">{{ date('d-m-Y', $order->date) }}</td>
<td class="fw-700">
{{ single_price($order->grand_total) }}
</td>
<td class="fw-700">
{{ translate(ucfirst(str_replace('_', ' ', $order->orderDetails->first()->delivery_status))) }}
@if($order->delivery_viewed == 0)
<span class="ml-2" style="color:green"><strong>*</strong></span>
@endif
</td>
<td>
@if ($order->payment_status == 'paid')
<span class="badge badge-inline badge-success p-3 fs-12" style="border-radius: 25px; min-width: 80px !important;">{{translate('Paid')}}</span>
@else
<span class="badge badge-inline badge-danger p-3 fs-12" style="border-radius: 25px; min-width: 80px !important;">{{translate('Unpaid')}}</span>
@endif
@if($order->payment_status_viewed == 0)
<span class="ml-2" style="color:green"><strong>*</strong></span>
@endif
</td>
<td class="text-right pr-0">
@if ($order->orderDetails->first()->delivery_status == 'pending' && $order->payment_status == 'unpaid')
<a href="javascript:void(0)" class="btn btn-soft-danger btn-icon btn-circle btn-sm hov-svg-white confirm-delete" data-href="{{route('orders.destroy', $order->id)}}" title="{{ translate('Cancel') }}">
<svg xmlns="http://www.w3.org/2000/svg" width="9.202" height="12" viewBox="0 0 9.202 12">
<path id="Path_28714" data-name="Path 28714" d="M15.041,7.608l-.193,5.85a1.927,1.927,0,0,1-1.933,1.864H9.243A1.927,1.927,0,0,1,7.31,13.46L7.117,7.608a.483.483,0,0,1,.966-.032l.193,5.851a.966.966,0,0,0,.966.929h3.672a.966.966,0,0,0,.966-.931l.193-5.849a.483.483,0,1,1,.966.032Zm.639-1.947a.483.483,0,0,1-.483.483H6.961a.483.483,0,1,1,0-.966h1.5a.617.617,0,0,0,.615-.555,1.445,1.445,0,0,1,1.442-1.3h1.126a1.445,1.445,0,0,1,1.442,1.3.617.617,0,0,0,.615.555h1.5a.483.483,0,0,1,.483.483ZM9.913,5.178h2.333a1.6,1.6,0,0,1-.123-.456.483.483,0,0,0-.48-.435H10.516a.483.483,0,0,0-.48.435,1.6,1.6,0,0,1-.124.456ZM10.4,12.5V8.385a.483.483,0,0,0-.966,0V12.5a.483.483,0,1,0,.966,0Zm2.326,0V8.385a.483.483,0,0,0-.966,0V12.5a.483.483,0,1,0,.966,0Z" transform="translate(-6.478 -3.322)" fill="#d43533"/>
</svg>
</a>
@endif
<a href="javascript:void(0)" class="btn btn-soft-info btn-icon btn-circle btn-sm hov-svg-white" onclick="show_purchase_history_details({{ $order->id }})" title="{{ translate('Order Details') }}">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="10" viewBox="0 0 12 10">
<g id="Group_24807" data-name="Group 24807" transform="translate(-1339 -422)">
<rect id="Rectangle_18658" data-name="Rectangle 18658" width="12" height="1" transform="translate(1339 422)" fill="#3490f3"/>
<rect id="Rectangle_18659" data-name="Rectangle 18659" width="12" height="1" transform="translate(1339 425)" fill="#3490f3"/>
<rect id="Rectangle_18660" data-name="Rectangle 18660" width="12" height="1" transform="translate(1339 428)" fill="#3490f3"/>
<rect id="Rectangle_18661" data-name="Rectangle 18661" width="12" height="1" transform="translate(1339 431)" fill="#3490f3"/>
</g>
</svg>
</a>
<a class="btn btn-soft-warning btn-icon btn-circle btn-sm hov-svg-white" href="{{ route('invoice.download', $order->id) }}" title="{{ translate('Download Invoice') }}">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12.001" viewBox="0 0 12 12.001">
<g id="Group_24807" data-name="Group 24807" transform="translate(-1341 -424.999)">
<path id="Union_17" data-name="Union 17" d="M13936.389,851.5l.707-.707,2.355,2.355V846h1v7.1l2.306-2.306.707.707-3.538,3.538Z" transform="translate(-12592.95 -421)" fill="#f3af3d"/>
<rect id="Rectangle_18661" data-name="Rectangle 18661" width="12" height="1" transform="translate(1341 436)" fill="#f3af3d"/>
</g>
</svg>
</a>
</td>
</tr>
@endforeach
</tbody>
</table>
<div class="aiz-pagination">
{{ $orders->links() }}
</div>
</div>
</div>
@endsection
@section('modal')
@include('modals.delete_modal')
<div class="modal fade" id="order_details" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered modal-xl" role="document">
<div class="modal-content">
<div id="order-details-modal-body">
</div>
</div>
</div>
</div>
@endsection
@section('script')
<script type="text/javascript">
$('#order_details').on('hidden.bs.modal', function () {
location.reload();
})
</script>
@endsection

View File

@@ -0,0 +1,424 @@
@extends('seller.layouts.app')
@section('panel_content')
<div class="aiz-titlebar text-left mt-2 mb-3">
<h1 class="mb-0 h6">{{ translate('Edit Auction Product') }}</h5>
</div>
<div class="">
<form class="form form-horizontal mar-top" action="{{route('auction_product_update.seller', $product->id)}}" method="POST" enctype="multipart/form-data">
<input name="_method" type="hidden" value="POST">
<input type="hidden" name="id" value="{{ $product->id }}">
<input type="hidden" name="lang" value="{{ $lang }}">
@csrf
<div class="row gutters-5">
<div class="col-lg-8">
<div class="card">
<ul class="nav nav-tabs nav-fill border-light">
@foreach (\App\Models\Language::all() as $key => $language)
<li class="nav-item">
<a class="nav-link text-reset @if ($language->code == $lang) active @else bg-soft-dark border-light border-left-0 @endif py-3" href="{{ route('auction_product_edit.seller', ['id'=>$product->id, 'lang'=> $language->code] ) }}">
<img src="{{ static_asset('assets/img/flags/'.$language->code.'.png') }}" height="11" class="mr-1">
<span>{{$language->name}}</span>
</a>
</li>
@endforeach
</ul>
<div class="card-body">
<div class="form-group row">
<label class="col-lg-3 col-from-label">{{translate('Product Name')}} <i class="las la-language text-danger" title="{{translate('Translatable')}}"></i></label>
<div class="col-lg-8">
<input type="text" class="form-control" name="name" placeholder="{{translate('Product Name')}}" value="{{ $product->getTranslation('name', $lang) }}" required>
</div>
</div>
<div class="form-group row" id="category">
<label class="col-lg-3 col-from-label">{{translate('Category')}}</label>
<div class="col-lg-8">
<select class="form-control aiz-selectpicker" name="category_id" id="category_id" data-selected="{{ $product->category_id }}" data-live-search="true" required>
@foreach ($categories as $category)
<option value="{{ $category->id }}">{{ $category->getTranslation('name') }}</option>
@foreach ($category->childrenCategories as $childCategory)
@include('categories.child_category', ['child_category' => $childCategory])
@endforeach
@endforeach
</select>
</div>
</div>
<div class="form-group row" id="brand">
<label class="col-lg-3 col-from-label">{{translate('Brand')}}</label>
<div class="col-lg-8">
<select class="form-control aiz-selectpicker" name="brand_id" id="brand_id" data-live-search="true">
<option value="">{{ translate('Select Brand') }}</option>
@foreach (\App\Models\Brand::all() as $brand)
<option value="{{ $brand->id }}" @if($product->brand_id == $brand->id) selected @endif>{{ $brand->getTranslation('name') }}</option>
@endforeach
</select>
</div>
</div>
<div class="form-group row">
<label class="col-lg-3 col-from-label">{{translate('Unit')}} <i class="las la-language text-danger" title="{{translate('Translatable')}}"></i> </label>
<div class="col-lg-8">
<input type="text" class="form-control" name="unit" placeholder="{{ translate('Unit (e.g. KG, Pc etc)') }}" value="{{$product->getTranslation('unit', $lang)}}" required>
</div>
</div>
<div class="form-group row">
<label class="col-lg-3 col-from-label">{{translate('Tags')}}</label>
<div class="col-lg-8">
<input type="text" class="form-control aiz-tag-input" name="tags[]" id="tags" value="{{ $product->tags }}" placeholder="{{ translate('Type to add a tag') }}" data-role="tagsinput">
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{translate('Product Images')}}</h5>
</div>
<div class="card-body">
<div class="form-group row">
<label class="col-md-3 col-form-label" for="signinSrEmail">{{translate('Gallery Images')}}</label>
<div class="col-md-8">
<div class="input-group" data-toggle="aizuploader" data-type="image" data-multiple="true">
<div class="input-group-prepend">
<div class="input-group-text bg-soft-secondary font-weight-medium">{{ translate('Browse')}}</div>
</div>
<div class="form-control file-amount">{{ translate('Choose File') }}</div>
<input type="hidden" name="photos" value="{{ $product->photos }}" class="selected-files">
</div>
<div class="file-preview box sm">
</div>
</div>
</div>
<div class="form-group row">
<label class="col-md-3 col-form-label" for="signinSrEmail">{{translate('Thumbnail Image')}} <small>(290x300)</small></label>
<div class="col-md-8">
<div class="input-group" data-toggle="aizuploader" data-type="image">
<div class="input-group-prepend">
<div class="input-group-text bg-soft-secondary font-weight-medium">{{ translate('Browse')}}</div>
</div>
<div class="form-control file-amount">{{ translate('Choose File') }}</div>
<input type="hidden" name="thumbnail_img" value="{{ $product->thumbnail_img }}" class="selected-files">
</div>
<div class="file-preview box sm">
</div>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{translate('Product Videos')}}</h5>
</div>
<div class="card-body">
<div class="form-group row">
<label class="col-lg-3 col-from-label">{{translate('Video Provider')}}</label>
<div class="col-lg-8">
<select class="form-control aiz-selectpicker" name="video_provider" id="video_provider">
<option value="youtube" <?php if ($product->video_provider == 'youtube') echo "selected"; ?> >{{translate('Youtube')}}</option>
<option value="dailymotion" <?php if ($product->video_provider == 'dailymotion') echo "selected"; ?> >{{translate('Dailymotion')}}</option>
<option value="vimeo" <?php if ($product->video_provider == 'vimeo') echo "selected"; ?> >{{translate('Vimeo')}}</option>
</select>
</div>
</div>
<div class="form-group row">
<label class="col-lg-3 col-from-label">{{translate('Video Link')}}</label>
<div class="col-lg-8">
<input type="text" class="form-control" name="video_link" value="{{ $product->video_link }}" placeholder="{{ translate('Video Link') }}">
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{translate('Product Bidding Price + Date Range')}}</h5>
</div>
<div class="card-body">
<div class="form-group row">
<label class="col-lg-3 col-from-label">{{translate('Starting Bidding Price')}}</label>
<div class="col-lg-6">
<input type="text" placeholder="{{translate('Starting Bidding Price')}}" name="starting_bid" class="form-control" value="{{$product->starting_bid}}" required>
</div>
</div>
@php
$start_date = date('d-m-Y H:i:s', $product->auction_start_date);
$end_date = date('d-m-Y H:i:s', $product->auction_end_date);
@endphp
<div class="form-group row">
<label class="col-sm-3 col-from-label" for="start_date">{{translate('Auction Date Range')}}</label>
<div class="col-sm-9">
<input type="text" class="form-control aiz-date-range" value="{{ $start_date.' to '.$end_date }}" name="auction_date_range" placeholder="{{translate('Select Date')}}" data-time-picker="true" data-format="DD-MM-Y HH:mm:ss" data-separator=" to " autocomplete="off">
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{translate('Product Description')}}</h5>
</div>
<div class="card-body">
<div class="form-group row">
<label class="col-lg-3 col-from-label">{{translate('Description')}} <i class="las la-language text-danger" title="{{translate('Translatable')}}"></i></label>
<div class="col-lg-9">
<textarea class="aiz-text-editor" name="description">{{ $product->getTranslation('description', $lang) }}</textarea>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{translate('PDF Specification')}}</h5>
</div>
<div class="card-body">
<div class="form-group row">
<label class="col-md-3 col-form-label" for="signinSrEmail">{{translate('PDF Specification')}}</label>
<div class="col-md-8">
<div class="input-group" data-toggle="aizuploader">
<div class="input-group-prepend">
<div class="input-group-text bg-soft-secondary font-weight-medium">{{ translate('Browse')}}</div>
</div>
<div class="form-control file-amount">{{ translate('Choose File') }}</div>
<input type="hidden" name="pdf" value="{{ $product->pdf }}" class="selected-files">
</div>
<div class="file-preview box sm">
</div>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{translate('SEO Meta Tags')}}</h5>
</div>
<div class="card-body">
<div class="form-group row">
<label class="col-lg-3 col-from-label">{{translate('Meta Title')}}</label>
<div class="col-lg-8">
<input type="text" class="form-control" name="meta_title" value="{{ $product->meta_title }}" placeholder="{{translate('Meta Title')}}">
</div>
</div>
<div class="form-group row">
<label class="col-lg-3 col-from-label">{{translate('Description')}}</label>
<div class="col-lg-8">
<textarea name="meta_description" rows="8" class="form-control">{{ $product->meta_description }}</textarea>
</div>
</div>
<div class="form-group row">
<label class="col-md-3 col-form-label" for="signinSrEmail">{{translate('Meta Images')}}</label>
<div class="col-md-8">
<div class="input-group" data-toggle="aizuploader" data-type="image" data-multiple="true">
<div class="input-group-prepend">
<div class="input-group-text bg-soft-secondary font-weight-medium">{{ translate('Browse')}}</div>
</div>
<div class="form-control file-amount">{{ translate('Choose File') }}</div>
<input type="hidden" name="meta_img" value="{{ $product->meta_img }}" class="selected-files">
</div>
<div class="file-preview box sm">
</div>
</div>
</div>
<div class="form-group row">
<label class="col-md-3 col-form-label">{{translate('Slug')}}</label>
<div class="col-md-8">
<input type="text" placeholder="{{translate('Slug')}}" id="slug" name="slug" value="{{ $product->slug }}" class="form-control">
</div>
</div>
</div>
</div>
</div>
<div class="col-lg-4">
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6" class="dropdown-toggle" data-toggle="collapse" data-target="#collapse_2">
{{translate('Shipping Configuration')}}
</h5>
</div>
<div class="card-body collapse show" id="collapse_2">
@if (get_setting('shipping_type') == 'product_wise_shipping')
<div class="form-group row">
<label class="col-lg-6 col-from-label">{{translate('Free Shipping')}}</label>
<div class="col-lg-6">
<label class="aiz-switch aiz-switch-success mb-0">
<input type="radio" name="shipping_type" value="free" @if($product->shipping_type == 'free') checked @endif>
<span></span>
</label>
</div>
</div>
<div class="form-group row">
<label class="col-lg-6 col-from-label">{{translate('Flat Rate')}}</label>
<div class="col-lg-6">
<label class="aiz-switch aiz-switch-success mb-0">
<input type="radio" name="shipping_type" value="flat_rate" @if($product->shipping_type == 'flat_rate') checked @endif>
<span></span>
</label>
</div>
</div>
<div class="flat_rate_shipping_div" style="display: none">
<div class="form-group row">
<label class="col-lg-6 col-from-label">{{translate('Shipping cost')}}</label>
<div class="col-lg-6">
<input type="number" lang="en" min="0" value="{{ $product->shipping_cost }}" step="0.01" placeholder="{{ translate('Shipping cost') }}" name="flat_shipping_cost" class="form-control">
</div>
</div>
</div>
<div class="form-group row">
<label class="col-md-6 col-from-label">{{translate('Is Product Quantity Mulitiply')}}</label>
<div class="col-md-6">
<label class="aiz-switch aiz-switch-success mb-0">
<input type="checkbox" name="is_quantity_multiplied" value="1" @if($product->is_quantity_multiplied == 1) checked @endif>
<span></span>
</label>
</div>
</div>
@else
<p>
{{ translate('Product wise shipping cost is disable. Shipping cost is configured from here') }}
<a href="{{route('shipping_configuration.index')}}" class="aiz-side-nav-link {{ areActiveRoutes(['shipping_configuration.index','shipping_configuration.edit','shipping_configuration.update'])}}">
<span class="aiz-side-nav-text">{{translate('Shipping Configuration')}}</span>
</a>
</p>
@endif
</div>
</div>
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{translate('Cash On Delivery')}}</h5>
</div>
<div class="card-body">
@if (get_setting('cash_payment') == '1')
<div class="form-group row">
<div class="col-md-12">
<div class="form-group row">
<label class="col-md-6 col-from-label">{{translate('Status')}}</label>
<div class="col-md-6">
<label class="aiz-switch aiz-switch-success mb-0">
<input type="checkbox" name="cash_on_delivery" value="1" @if($product->cash_on_delivery == 1) checked @endif>
<span></span>
</label>
</div>
</div>
</div>
</div>
@else
<p>
{{ translate('Cash On Delivery option is disabled. Activate this feature from here') }}
<a href="{{route('activation.index')}}" class="aiz-side-nav-link {{ areActiveRoutes(['shipping_configuration.index','shipping_configuration.edit','shipping_configuration.update'])}}">
<span class="aiz-side-nav-text">{{translate('Cash Payment Activation')}}</span>
</a>
</p>
@endif
</div>
</div>
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{translate('Estimate Shipping Time')}}</h5>
</div>
<div class="card-body">
<div class="form-group mb-3">
<label for="name">
{{translate('Shipping Days')}}
</label>
<div class="input-group">
<input type="number" class="form-control" name="est_shipping_days" value="{{ $product->est_shipping_days }}" min="1" step="1" placeholder="{{translate('Shipping Days')}}">
<div class="input-group-prepend">
<span class="input-group-text" id="inputGroupPrepend">{{translate('Days')}}</span>
</div>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{translate('VAT & Tax')}}</h5>
</div>
<div class="card-body">
@foreach(\App\Models\Tax::where('tax_status', 1)->get() as $tax)
<label for="name">
{{$tax->name}}
<input type="hidden" value="{{$tax->id}}" name="tax_id[]">
</label>
@php
$tax_amount = 0;
$tax_type = '';
foreach($tax->product_taxes as $row) {
if($product->id == $row->product_id) {
$tax_amount = $row->tax;
$tax_type = $row->tax_type;
}
}
@endphp
<div class="form-row">
<div class="form-group col-md-6">
<input type="number" lang="en" min="0" value="{{ $tax_amount }}" step="0.01" placeholder="{{ translate('Tax') }}" name="tax[]" class="form-control" required>
</div>
<div class="form-group col-md-6">
<select class="form-control aiz-selectpicker" name="tax_type[]">
<option value="amount" @if($tax_type == 'amount') selected @endif>
{{translate('Flat')}}
</option>
<option value="percent" @if($tax_type == 'percent') selected @endif>
{{translate('Percent')}}
</option>
</select>
</div>
</div>
@endforeach
</div>
</div>
</div>
<div class="col-12">
<div class="mb-3 text-right">
<button type="submit" name="button" class="btn btn-info">{{ translate('Update Product') }}</button>
</div>
</div>
</div>
</form>
</div>
@endsection
@section('script')
<script type="text/javascript">
$(document).ready(function (){
show_hide_shipping_div();
});
$("[name=shipping_type]").on("change", function (){
show_hide_shipping_div();
});
function show_hide_shipping_div() {
var shipping_val = $("[name=shipping_type]:checked").val();
$(".flat_rate_shipping_div").hide();
if(shipping_val == 'flat_rate'){
$(".flat_rate_shipping_div").show();
}
}
AIZ.plugins.tagify();
$(document).ready(function(){
$('.remove-files').on('click', function(){
$(this).parents(".col-md-4").remove();
});
});
</script>
@endsection

View File

@@ -0,0 +1,135 @@
@extends('seller.layouts.app')
@section('panel_content')
<div class="row gutters-10 justify-content-center">
@if (addon_is_activated('seller_subscription'))
<div class="col-md-4 mx-auto mb-3" >
<div class="bg-grad-1 text-white rounded-lg overflow-hidden">
<span class="size-30px rounded-circle mx-auto bg-soft-primary d-flex align-items-center justify-content-center mt-3">
<i class="las la-upload la-2x text-white"></i>
</span>
<div class="px-3 pt-3 pb-3">
<div class="h4 fw-700 text-center">
{{ Auth::user()->shop->seller_package != null ? Auth::user()->shop->seller_package->product_upload_limit - Auth::user()->products()->count() : 0 }}
</div>
<div class="opacity-50 text-center">{{ translate('Remaining Uploads') }}</div>
</div>
</div>
</div>
@endif
<div class="col-md-4 mx-auto mb-3" >
<a href="{{ route('auction_product_create.seller')}}">
<div class="p-3 rounded mb-3 c-pointer text-center bg-white shadow-sm hov-shadow-lg has-transition">
<span class="size-60px rounded-circle mx-auto bg-secondary d-flex align-items-center justify-content-center mb-3">
<i class="las la-plus la-3x text-white"></i>
</span>
<div class="fs-18 text-primary">{{ translate('Add New Auction Product') }}</div>
</div>
</a>
</div>
@if (addon_is_activated('seller_subscription'))
@php
$seller_package = \App\Models\SellerPackage::find(Auth::user()->shop->seller_package_id);
@endphp
<div class="col-md-4">
<a href="{{ route('seller.seller_packages_list') }}" class="text-center bg-white shadow-sm hov-shadow-lg text-center d-block p-3 rounded">
@if($seller_package != null)
<img src="{{ uploaded_asset($seller_package->logo) }}" height="44" class="mw-100 mx-auto">
<span class="d-block sub-title mb-2">{{ translate('Current Package')}}: {{ $seller_package->getTranslation('name') }}</span>
@else
<i class="la la-frown-o mb-2 la-3x"></i>
<div class="d-block sub-title mb-2">{{ translate('No Package Found')}}</div>
@endif
<div class="btn btn-outline-primary py-1">{{ translate('Upgrade Package')}}</div>
</a>
</div>
@endif
</div>
<div class="card">
<form class="" id="sort_products" action="" method="GET">
<div class="card-header row gutters-5">
<div class="col">
<h5 class="mb-md-0 h6">{{ translate('All Auction Product') }}</h5>
</div>
<div class="col-md-2">
<div class="form-group mb-0">
<input type="text" class="form-control form-control-sm" id="search" name="search"@isset($sort_search) value="{{ $sort_search }}" @endisset placeholder="{{ translate('Type & Enter') }}">
</div>
</div>
</div>
<div class="card-body">
<table class="table aiz-table mb-0">
<thead>
<tr>
<th>#</th>
<th>{{translate('Name')}}</th>
<th data-breakpoints="sm">{{translate('Bid Starting Amount')}}</th>
<th data-breakpoints="sm">{{translate('Auction Start Date')}}</th>
<th data-breakpoints="sm">{{translate('Auction End Date')}}</th>
<th data-breakpoints="sm">{{translate('Total Bids')}}</th>
<th data-breakpoints="sm" class="text-right" width="20%">{{translate('Options')}}</th>
</tr>
</thead>
<tbody>
@foreach($products as $key => $product)
<tr>
<td>{{ ($key+1) + ($products->currentPage() - 1)*$products->perPage() }}</td>
<td>
<div class="row gutters-5 w-200px w-md-300px mw-100">
<div class="col-auto">
<img src="{{ uploaded_asset($product->thumbnail_img)}}" alt="Image" class="size-50px img-fit">
</div>
<div class="col">
<span class="text-muted text-truncate-2">{{ $product->getTranslation('name') }}</span>
</div>
</div>
</td>
<td>{{ single_price($product->starting_bid) }}</td>
<td>{{ date('Y-m-d H:i:s', $product->auction_start_date) }}</td>
<td>{{ date('Y-m-d H:i:s', $product->auction_end_date) }}</td>
<td>{{ $product->bids->count() }}</td>
<td class="text-right">
@if($product->auction_start_date > strtotime("now"))
<a class="btn btn-soft-info btn-icon btn-circle btn-sm" href="{{route('auction_product_edit.seller', ['id'=>$product->id, 'lang'=>env('DEFAULT_LANGUAGE')] )}}" title="{{ translate('Edit') }}">
<i class="las la-edit"></i>
</a>
@endif
<a class="btn btn-soft-success btn-icon btn-circle btn-sm" href="{{ route('auction-product', $product->slug) }}" target="_blank" title="{{ translate('View Products') }}">
<i class="las la-eye"></i>
</a>
<a class="btn btn-soft-info btn-icon btn-circle btn-sm" href="{{ route('product_bids.seller', $product->id) }}" target="_blank" title="{{ translate('View All Bids') }}">
<i class="las la-gavel"></i>
</a>
<a href="#" class="btn btn-soft-danger btn-icon btn-circle btn-sm confirm-delete" data-href="{{route('auction_product_destroy.seller', $product->id)}}" title="{{ translate('Delete') }}">
<i class="las la-trash"></i>
</a>
</td>
</tr>
@endforeach
</tbody>
</table>
<div class="aiz-pagination">
{{ $products->appends(request()->input())->links() }}
</div>
</div>
</form>
</div>
@endsection
@section('modal')
@include('modals.delete_modal')
@endsection
@section('script')
<script type="text/javascript">
function sort_products(el){
$('#sort_products').submit();
}
</script>
@endsection

View File

@@ -0,0 +1,181 @@
@extends('seller.layouts.app')
@section('panel_content')
<div class="card">
<form class="" id=" sort_orders" action="" method="GET">
<div class="card-header row gutters-5">
<div class="col text-center text-md-left">
<h5 class="mb-md-0 h6">{{ translate('Inhouse Orders') }}</h5>
</div>
<div class="col-lg-3 ml-auto">
<select class="form-control aiz-selectpicker" name="payment_type" id="payment_type"
onchange="sort_orders()">
<option value="">{{ translate('Filter by Payment Status') }}</option>
<option value="paid" @isset($payment_status) @if ($payment_status == 'paid') selected @endif @endisset>
{{ translate('Paid') }}</option>
<option value="unpaid" @isset($payment_status) @if ($payment_status == 'unpaid') selected @endif @endisset>
{{ translate('Un-Paid') }}</option>
</select>
</div>
<div class="col-lg-3 ml-auto">
<select class="form-control aiz-selectpicker" name="delivery_status" id="delivery_status"
onchange="sort_orders()">
<option value="">{{ translate('Filter by Deliver Status') }}</option>
<option value="pending" @isset($delivery_status) @if ($delivery_status == 'pending') selected @endif @endisset>
{{ translate('Pending') }}</option>
<option value="confirmed" @isset($delivery_status) @if ($delivery_status == 'confirmed') selected @endif @endisset>
{{ translate('Confirmed') }}</option>
<option value="on_delivery" @isset($delivery_status) @if ($delivery_status == 'on_delivery') selected @endif @endisset>
{{ translate('On delivery') }}</option>
<option value="delivered" @isset($delivery_status) @if ($delivery_status == 'delivered') selected @endif @endisset>
{{ translate('Delivered') }}</option>
</select>
</div>
<div class="col-lg-3">
<div class="form-group mb-0">
<input type="text" class="form-control" id="search" name="search" @isset($sort_search)
value="{{ $sort_search }}" @endisset
placeholder="{{ translate('Type Order code & hit Enter') }}">
</div>
</div>
<div class="col-auto">
<div class="form-group mb-0">
<button type="submit" class="btn btn-primary">{{ translate('Filter') }}</button>
</div>
</div>
</div>
</form>
<div class="card-body">
<table class="table aiz-table mb-0">
<thead>
<tr>
<th>#</th>
<th>{{ translate('Order Code') }}</th>
<th data-breakpoints="md">{{ translate('Customer') }}</th>
<th data-breakpoints="md">{{ translate('Amount') }}</th>
<th data-breakpoints="md">{{ translate('Delivery Status') }}</th>
<th data-breakpoints="md">{{ translate('Payment Method') }}</th>
<th data-breakpoints="md">{{ translate('Payment Status') }}</th>
@if (addon_is_activated('refund_request'))
<th>{{ translate('Refund') }}</th>
@endif
<th class="text-right" width="15%">{{ translate('Options') }}</th>
</tr>
</thead>
<tbody>
@foreach ($orders as $key => $order_id)
@php
$order = \App\Models\Order::find($order_id->id);
@endphp
@if ($order != null)
<tr>
<td>
{{ $key + 1 + ($orders->currentPage() - 1) * $orders->perPage() }}
</td>
<td>
{{ $order->code }}@if ($order->viewed == 0) <span class="badge badge-inline badge-info">{{ translate('New') }}</span>@endif
</td>
<td>
@if ($order->user != null)
{{ $order->user->name }}
@else
Guest ({{ $order->guest_id }})
@endif
</td>
<td>
{{ single_price($order->grand_total) }}
</td>
<td>
@php
$status = $order->delivery_status;
@endphp
{{ translate(ucfirst(str_replace('_', ' ', $status))) }}
</td>
<td>
{{ translate(ucfirst(str_replace('_', ' ', $order->payment_type))) }}
</td>
<td>
@if ($order->payment_status == 'paid')
<span class="badge badge-inline badge-success">{{ translate('Paid') }}</span>
@else
<span class="badge badge-inline badge-danger">{{ translate('Unpaid') }}</span>
@endif
</td>
@if (addon_is_activated('refund_request'))
<td>
@if (count($order->refund_requests) > 0)
{{ count($order->refund_requests) }} {{ translate('Refund') }}
@else
{{ translate('No Refund') }}
@endif
</td>
@endif
<td class="text-right">
<a href="javascript:void(0)" class="btn btn-soft-info btn-icon btn-circle btn-sm"
onclick="show_order_details({{ $order->id }})"
title="{{ translate('Order Details') }}">
<i class="las la-eye"></i>
</a>
<a class="btn btn-soft-success btn-icon btn-circle btn-sm"
href="{{ route('invoice.download', $order->id) }}"
title="{{ translate('Download Invoice') }}">
<i class="las la-download"></i>
</a>
</td>
</tr>
@endif
@endforeach
</tbody>
</table>
<div class="aiz-pagination">
{{ $orders->appends(request()->input())->links() }}
</div>
</div>
</div>
@endsection
@section('modal')
@include('modals.delete_modal')
<div class="modal fade" id="order_details" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel"
aria-hidden="true">
<div class="modal-dialog modal-dialog-centered modal-xl" role="document">
<div class="modal-content">
<div id="order-details-modal-body">
</div>
</div>
</div>
</div>
@endsection
@section('script')
<script type="text/javascript">
function sort_orders(el) {
$('#sort_orders').submit();
}
function show_order_details(order_id) {
$('#order-details-modal-body').html(null);
if (!$('#modal-size').hasClass('modal-lg')) {
$('#modal-size').addClass('modal-lg');
}
$.post('{{ route('orders.details') }}', {
_token: AIZ.data.csrf,
order_id: order_id
}, function(data) {
$('#order-details-modal-body').html(data);
$('#order_details').modal();
$('.c-preloader').hide();
AIZ.plugins.bootstrapSelect('refresh');
});
}
</script>
@endsection

View File

@@ -0,0 +1,428 @@
@extends('seller.layouts.app')
@section('panel_content')
<div class="aiz-titlebar text-left mt-2 mb-3">
<h5 class="mb-0 h6">{{ translate('Add New Auction Product') }}</h5>
</div>
<div class="">
<form class=" form form-horizontal mar-top" action="{{ route('auction_product_store.seller') }}"
method="POST" enctype="multipart/form-data" id="choice_form">
<div class="row gutters-5">
<div class="col-lg-8">
@csrf
<input type="hidden" name="added_by" value="seller">
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{ translate('Product Information') }}</h5>
</div>
<div class="card-body">
<div class="form-group row">
<label class="col-md-3 col-from-label">{{ translate('Product Name') }} <span
class="text-danger">*</span></label>
<div class="col-md-8">
<input type="text" class="form-control" name="name"
placeholder="{{ translate('Product Name') }}" onchange="update_sku()" required>
</div>
</div>
<div class="form-group row" id="category">
<label class="col-md-3 col-from-label">{{ translate('Category') }} <span
class="text-danger">*</span></label>
<div class="col-md-8">
<select class="form-control aiz-selectpicker" name="category_id" id="category_id"
data-live-search="true" required>
@foreach ($categories as $category)
<option value="{{ $category->id }}">{{ $category->getTranslation('name') }}
</option>
@foreach ($category->childrenCategories as $childCategory)
@include('categories.child_category', ['child_category' => $childCategory])
@endforeach
@endforeach
</select>
</div>
</div>
<div class="form-group row" id="brand">
<label class="col-md-3 col-from-label">{{ translate('Brand') }}</label>
<div class="col-md-8">
<select class="form-control aiz-selectpicker" name="brand_id" id="brand_id"
data-live-search="true">
<option value="">{{ translate('Select Brand') }}</option>
@foreach (\App\Models\Brand::all() as $brand)
<option value="{{ $brand->id }}">{{ $brand->getTranslation('name') }}
</option>
@endforeach
</select>
</div>
</div>
<div class="form-group row">
<label class="col-md-3 col-from-label">{{ translate('Unit') }}</label>
<div class="col-md-8">
<input type="text" class="form-control" name="unit"
placeholder="{{ translate('Unit (e.g. KG, Pc etc)') }}" required>
</div>
</div>
<div class="form-group row">
<label class="col-md-3 col-from-label">{{ translate('Tags') }} <span
class="text-danger">*</span></label>
<div class="col-md-8">
<input type="text" class="form-control aiz-tag-input" name="tags[]"
placeholder="{{ translate('Type and hit enter to add a tag') }}">
<small
class="text-muted">{{ translate('This is used for search. Input those words by which cutomer can find this product.') }}</small>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{ translate('Product Images') }}</h5>
</div>
<div class="card-body">
<div class="form-group row">
<label class="col-md-3 col-form-label" for="signinSrEmail">{{ translate('Gallery Images') }}
<small>(600x600)</small></label>
<div class="col-md-8">
<div class="input-group" data-toggle="aizuploader" data-type="image"
data-multiple="true">
<div class="input-group-prepend">
<div class="input-group-text bg-soft-secondary font-weight-medium">{{ translate('Browse') }}</div>
</div>
<div class="form-control file-amount">{{ translate('Choose File') }}</div>
<input type="hidden" name="photos" class="selected-files">
</div>
<div class="file-preview box sm">
</div>
<small
class="text-muted">{{ translate('These images are visible in product details page gallery. Use 600x600 sizes images.') }}</small>
</div>
</div>
<div class="form-group row">
<label class="col-md-3 col-form-label" for="signinSrEmail">{{ translate('Thumbnail Image') }}
<small>(300x300)</small></label>
<div class="col-md-8">
<div class="input-group" data-toggle="aizuploader" data-type="image">
<div class="input-group-prepend">
<div class="input-group-text bg-soft-secondary font-weight-medium">
{{ translate('Browse') }}</div>
</div>
<div class="form-control file-amount">{{ translate('Choose File') }}</div>
<input type="hidden" name="thumbnail_img" class="selected-files">
</div>
<div class="file-preview box sm">
</div>
<small
class="text-muted">{{ translate('This image is visible in all product box. Use 300x300 sizes image. Keep some blank space around main object of your image as we had to crop some edge in different devices to make it responsive.') }}</small>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{ translate('Product Videos') }}</h5>
</div>
<div class="card-body">
<div class="form-group row">
<label class="col-md-3 col-from-label">{{ translate('Video Provider') }}</label>
<div class="col-md-8">
<select class="form-control aiz-selectpicker" name="video_provider" id="video_provider">
<option value="youtube">{{ translate('Youtube') }}</option>
<option value="dailymotion">{{ translate('Dailymotion') }}</option>
<option value="vimeo">{{ translate('Vimeo') }}</option>
</select>
</div>
</div>
<div class="form-group row">
<label class="col-md-3 col-from-label">{{ translate('Video Link') }}</label>
<div class="col-md-8">
<input type="text" class="form-control" name="video_link"
placeholder="{{ translate('Video Link') }}">
<small
class="text-muted">{{ translate("Use proper link without extra parameter. Don't use short share link/embeded iframe code.") }}</small>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{ translate('Product Bidding Price + Date Range') }}</h5>
</div>
<div class="card-body">
<div class="form-group row">
<label class="col-md-3 col-from-label">{{ translate('Starting Bidding Price') }} <span
class="text-danger">*</span></label>
<div class="col-md-9">
<input type="number" lang="en" min="0" value="0" step="0.01"
placeholder="{{ translate('Starting bidding price') }}" name="starting_bid"
class="form-control" required>
</div>
</div>
<div class="form-group row">
<label class="col-sm-3 control-label"
for="start_date">{{ translate('Auction Date Range') }}</label>
<div class="col-sm-9">
<input type="text" class="form-control aiz-date-range" name="auction_date_range"
placeholder="{{ translate('Select Date') }}" data-time-picker="true"
data-format="DD-MM-Y HH:mm:ss" data-separator=" to " autocomplete="off">
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{ translate('Product Description') }}</h5>
</div>
<div class="card-body">
<div class="form-group row">
<label class="col-md-3 col-from-label">{{ translate('Description') }}</label>
<div class="col-md-8">
<textarea class="aiz-text-editor" name="description"></textarea>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{ translate('PDF Specification') }}</h5>
</div>
<div class="card-body">
<div class="form-group row">
<label class="col-md-3 col-form-label"
for="signinSrEmail">{{ translate('PDF Specification') }}</label>
<div class="col-md-8">
<div class="input-group" data-toggle="aizuploader" data-type="document">
<div class="input-group-prepend">
<div class="input-group-text bg-soft-secondary font-weight-medium">
{{ translate('Browse') }}</div>
</div>
<div class="form-control file-amount">{{ translate('Choose File') }}</div>
<input type="hidden" name="pdf" class="selected-files">
</div>
<div class="file-preview box sm">
</div>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{ translate('SEO Meta Tags') }}</h5>
</div>
<div class="card-body">
<div class="form-group row">
<label class="col-md-3 col-from-label">{{ translate('Meta Title') }}</label>
<div class="col-md-8">
<input type="text" class="form-control" name="meta_title"
placeholder="{{ translate('Meta Title') }}">
</div>
</div>
<div class="form-group row">
<label class="col-md-3 col-from-label">{{ translate('Description') }}</label>
<div class="col-md-8">
<textarea name="meta_description" rows="8" class="form-control"></textarea>
</div>
</div>
<div class="form-group row">
<label class="col-md-3 col-form-label"
for="signinSrEmail">{{ translate('Meta Image') }}</label>
<div class="col-md-8">
<div class="input-group" data-toggle="aizuploader" data-type="image">
<div class="input-group-prepend">
<div class="input-group-text bg-soft-secondary font-weight-medium">
{{ translate('Browse') }}</div>
</div>
<div class="form-control file-amount">{{ translate('Choose File') }}</div>
<input type="hidden" name="meta_img" class="selected-files">
</div>
<div class="file-preview box sm">
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-lg-4">
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">
{{ translate('Shipping Configuration') }}
</h5>
</div>
<div class="card-body">
@if (get_setting('shipping_type') == 'product_wise_shipping')
<div class="form-group row">
<label class="col-md-6 col-from-label">{{ translate('Free Shipping') }}</label>
<div class="col-md-6">
<label class="aiz-switch aiz-switch-success mb-0">
<input type="radio" name="shipping_type" value="free" checked>
<span></span>
</label>
</div>
</div>
<div class="form-group row">
<label class="col-md-6 col-from-label">{{ translate('Flat Rate') }}</label>
<div class="col-md-6">
<label class="aiz-switch aiz-switch-success mb-0">
<input type="radio" name="shipping_type" value="flat_rate">
<span></span>
</label>
</div>
</div>
<div class="flat_rate_shipping_div" style="display: none">
<div class="form-group row">
<label class="col-md-6 col-from-label">{{ translate('Shipping cost') }}</label>
<div class="col-md-6">
<input type="number" lang="en" min="0" value="0" step="0.01"
placeholder="{{ translate('Shipping cost') }}" name="flat_shipping_cost"
class="form-control" required>
</div>
</div>
</div>
<div class="form-group row">
<label
class="col-md-6 col-from-label">{{ translate('Is Product Quantity Mulitiply') }}</label>
<div class="col-md-6">
<label class="aiz-switch aiz-switch-success mb-0">
<input type="checkbox" name="is_quantity_multiplied" value="1">
<span></span>
</label>
</div>
</div>
@else
<p>
{{ translate('Product wise shipping cost is disable. Shipping cost is configured from here') }}
<a href="{{ route('shipping_configuration.index') }}"
class="aiz-side-nav-link {{ areActiveRoutes(['shipping_configuration.index', 'shipping_configuration.edit', 'shipping_configuration.update']) }}">
<span class="aiz-side-nav-text">{{ translate('Shipping Configuration') }}</span>
</a>
</p>
@endif
</div>
</div>
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{ translate('Cash On Delivery') }}</h5>
</div>
<div class="card-body">
@if (get_setting('cash_payment') == '1')
<div class="form-group row">
<label class="col-md-6 col-from-label">{{ translate('Status') }}</label>
<div class="col-md-6">
<label class="aiz-switch aiz-switch-success mb-0">
<input type="checkbox" name="cash_on_delivery" value="1" checked="">
<span></span>
</label>
</div>
</div>
@else
<p>
{{ translate('Cash On Delivery option is disabled. Activate this feature from here') }}
<a href="{{ route('activation.index') }}"
class="aiz-side-nav-link {{ areActiveRoutes(['shipping_configuration.index', 'shipping_configuration.edit', 'shipping_configuration.update']) }}">
<span class="aiz-side-nav-text">{{ translate('Cash Payment Activation') }}</span>
</a>
</p>
@endif
</div>
</div>
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{ translate('Estimate Shipping Time') }}</h5>
</div>
<div class="card-body">
<div class="form-group mb-3">
<label for="name">
{{ translate('Shipping Days') }}
</label>
<div class="input-group">
<input type="number" class="form-control" name="est_shipping_days" min="1" step="1"
placeholder="{{ translate('Shipping Days') }}">
<div class="input-group-prepend">
<span class="input-group-text" id="inputGroupPrepend">{{ translate('Days') }}</span>
</div>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{ translate('VAT & Tax') }}</h5>
</div>
<div class="card-body">
@foreach (\App\Models\Tax::where('tax_status', 1)->get() as $tax)
<label for="name">
{{ $tax->name }}
<input type="hidden" value="{{ $tax->id }}" name="tax_id[]">
</label>
<div class="form-row">
<div class="form-group col-md-6">
<input type="number" lang="en" min="0" value="0" step="0.01"
placeholder="{{ translate('Tax') }}" name="tax[]" class="form-control"
required>
</div>
<div class="form-group col-md-6">
<select class="form-control aiz-selectpicker" name="tax_type[]">
<option value="amount">{{ translate('Flat') }}</option>
<option value="percent">{{ translate('Percent') }}</option>
</select>
</div>
</div>
@endforeach
</div>
</div>
</div>
<div class="col-12">
<div class="btn-toolbar float-right mb-3" role="toolbar" aria-label="Toolbar with button groups">
<div class="btn-group mr-2" role="group" aria-label="First group">
<button type="submit" name="button" value="draft"
class="btn btn-primary">{{ translate('Save') }}</button>
</div>
</div>
</div>
</div>
</form>
</div>
@endsection
@section('script')
<script type="text/javascript">
$('form').bind('submit', function(e) {
// Disable the submit button while evaluating if the form should be submitted
$("button[type='submit']").prop('disabled', true);
var valid = true;
if (!valid) {
e.preventDefault();
// Reactivate the button if the form was not submitted
$("button[type='submit']").button.prop('disabled', false);
}
});
$("[name=shipping_type]").on("change", function() {
$(".flat_rate_shipping_div").hide();
if ($(this).val() == 'flat_rate') {
$(".flat_rate_shipping_div").show();
}
});
</script>
@endsection

View File

@@ -0,0 +1,62 @@
@extends('seller.layouts.app')
@section('panel_content')
<div class="aiz-titlebar text-left mt-2 mb-3">
<div class="row align-items-center">
<div class="col-auto">
<h1 class="h3">{{translate('Bids For').$product->name}}</h1>
</div>
</div>
</div>
<br>
<div class="card">
<div class="card-header row gutters-5">
<div class="col">
<h5 class="mb-md-0 h6">{{ translate('All Bids') }}</h5>
</div>
</div>
<div class="card-body">
<table class="table aiz-table mb-0">
<thead>
<tr>
<th>#</th>
<th>{{translate('Customer Name')}}</th>
<th>{{translate('Email')}}</th>
<th>{{translate('Phone')}}</th>
<th>{{translate('Bid Amount')}}</th>
<th>{{translate('Date')}}</th>
<th data-breakpoints="sm" class="text-right">{{translate('Options')}}</th>
</tr>
</thead>
<tbody>
@foreach($bids as $key => $bid)
<tr>
<td>{{ ($key+1) + ($bids->currentPage() - 1)*$bids->perPage() }}</td>
<td>{{ $bid->user->name }}</td>
<td>{{ $bid->user->email }}</td>
<td>{{ $bid->user->phone }}</td>
<td>{{ single_price($bid->amount) }}</td>
<td>{{ date('d-m-Y', strtotime($bid->created_at)) }}</td>
<td class="text-right">
<a href="#" class="btn btn-soft-danger btn-icon btn-circle btn-sm confirm-delete" data-href="{{route('product_bids_destroy.seller', $bid->id)}}" title="{{ translate('Delete') }}">
<i class="las la-trash"></i>
</a>
</td>
</tr>
@endforeach
</tbody>
</table>
<div class="aiz-pagination">
{{ $bids->appends(request()->input())->links() }}
</div>
</div>
</div>
@endsection
@section('modal')
@include('modals.delete_modal')
@endsection