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: 89 KiB

View File

@@ -0,0 +1,50 @@
{
"name":"Seller Subscription System",
"unique_identifier":"seller_subscription",
"version":"1.9",
"minimum_item_version":"7.0.0",
"addon_banner":"seller_subscription.jpg",
"directory":[
{
"name":[
"resources/views/seller_packages",
"resources/views/seller_packages/frontend"
]
}
],
"sql_file":"",
"files":[
{
"root_directory":"addons/seller_subscription/views/seller_packages/frontend/seller_packages_list.blade.php",
"update_directory":"resources/views/seller_packages/frontend/seller_packages_list.blade.php"
},
{
"root_directory":"addons/seller_subscription/views/seller_packages/frontend/packages_payment_list.blade.php",
"update_directory":"resources/views/seller_packages/frontend/packages_payment_list.blade.php"
},
{
"root_directory":"addons/seller_subscription/views/seller_packages/create.blade.php",
"update_directory":"resources/views/seller_packages/create.blade.php"
},
{
"root_directory":"addons/seller_subscription/views/seller_packages/edit.blade.php",
"update_directory":"resources/views/seller_packages/edit.blade.php"
},
{
"root_directory":"addons/seller_subscription/views/seller_packages/index.blade.php",
"update_directory":"resources/views/seller_packages/index.blade.php"
},
{
"root_directory":"addons/seller_subscription/controllers/SellerPackageController.php",
"update_directory":"app/Http/Controllers/SellerPackageController.php"
},
{
"root_directory":"addons/seller_subscription/controllers/SellerPackagePaymentController.php",
"update_directory":"app/Http/Controllers/SellerPackagePaymentController.php"
},
{
"root_directory":"addons/seller_subscription/assets/seller_subscription.jpg",
"update_directory":"public/seller_subscription.jpg"
}
]
}

View File

@@ -0,0 +1,240 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\SellerPackage;
use App\Models\SellerPackageTranslation;
use App\Models\SellerPackagePayment;
use App\Models\Shop;
use Artisan;
use Auth;
use Session;
use Carbon\Carbon;
class SellerPackageController extends Controller
{
public function __construct() {
// Staff Permission Check
$this->middleware(['permission:view_all_seller_packages'])->only('index');
$this->middleware(['permission:add_seller_package'])->only('create');
$this->middleware(['permission:edit_seller_package'])->only('edit');
$this->middleware(['permission:delete_seller_package'])->only('destroy');
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$seller_packages = SellerPackage::all();
return view('seller_packages.index', compact('seller_packages'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
return view('seller_packages.create');
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$seller_package = new SellerPackage;
$seller_package->name = $request->name;
$seller_package->amount = $request->amount;
$seller_package->product_upload_limit = $request->product_upload_limit;
$seller_package->duration = $request->duration;
$seller_package->logo = $request->logo;
if ($seller_package->save()) {
$seller_package_translation = SellerPackageTranslation::firstOrNew(['lang' => env('DEFAULT_LANGUAGE'), 'seller_package_id' => $seller_package->id]);
$seller_package_translation->name = $request->name;
$seller_package_translation->save();
flash(translate('Package has been inserted successfully'))->success();
return redirect()->route('seller_packages.index');
} else {
flash(translate('Something went wrong'))->error();
return back();
}
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit(Request $request, $id)
{
$lang = $request->lang;
$seller_package = SellerPackage::findOrFail($id);
return view('seller_packages.edit', compact('seller_package', 'lang'));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
$seller_package = SellerPackage::findOrFail($id);
if ($request->lang == env("DEFAULT_LANGUAGE")) {
$seller_package->name = $request->name;
}
$seller_package->amount = $request->amount;
$seller_package->product_upload_limit = $request->product_upload_limit;
$seller_package->duration = $request->duration;
$seller_package->logo = $request->logo;
if ($seller_package->save()) {
$seller_package_translation = SellerPackageTranslation::firstOrNew(['lang' => $request->lang, 'seller_package_id' => $seller_package->id]);
$seller_package_translation->name = $request->name;
$seller_package_translation->save();
flash(translate('Package has been inserted successfully'))->success();
return redirect()->route('seller_packages.index');
} else {
flash(translate('Something went wrong'))->error();
return back();
}
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
$seller_package = SellerPackage::findOrFail($id);
foreach ($seller_package->seller_package_translations as $key => $seller_package_translation) {
$seller_package_translation->delete();
}
SellerPackage::destroy($id);
flash(translate('Package has been deleted successfully'))->success();
return redirect()->route('seller_packages.index');
}
//FrontEnd
//@index
public function packages_payment_list()
{
$seller_packages_payment = SellerPackagePayment::with('seller_package')->where('user_id', Auth::user()->id)->paginate(15);
return view('seller_packages.frontend.packages_payment_list', compact('seller_packages_payment'));
}
public function seller_packages_list()
{
$seller_packages = SellerPackage::all();
return view('seller_packages.frontend.seller_packages_list', compact('seller_packages'));
}
public function purchase_package(Request $request)
{
$data['seller_package_id'] = $request->seller_package_id;
$data['payment_method'] = $request->payment_option;
$request->session()->put('payment_type', 'seller_package_payment');
$request->session()->put('payment_data', $data);
$seller_package = SellerPackage::findOrFail(Session::get('payment_data')['seller_package_id']);
if ($seller_package->amount == 0) {
return $this->purchase_payment_done(Session::get('payment_data'), null);
} elseif (Auth::user()->shop->seller_package != null && $seller_package->product_upload_limit < Auth::user()->shop->seller_package->product_upload_limit) {
flash(translate('You have more uploaded products than this package limit. You need to remove excessive products to downgrade.'))->warning();
return back();
}
$decorator = __NAMESPACE__ . '\\Payment\\' . str_replace(' ', '', ucwords(str_replace('_', ' ', $request->payment_option))) . "Controller";
if (class_exists($decorator)) {
return (new $decorator)->pay($request);
}
}
public function purchase_payment_done($payment_data, $payment)
{
$seller = Auth::user()->shop;
$seller->seller_package_id = Session::get('payment_data')['seller_package_id'];
$seller_package = SellerPackage::findOrFail(Session::get('payment_data')['seller_package_id']);
$seller->product_upload_limit = $seller_package->product_upload_limit;
$seller->package_invalid_at = date('Y-m-d', strtotime($seller->package_invalid_at . ' +' . $seller_package->duration . 'days'));
$seller->save();
$seller_package = new SellerPackagePayment;
$seller_package->user_id = Auth::user()->id;
$seller_package->seller_package_id = Session::get('payment_data')['seller_package_id'];
$seller_package->payment_method = Session::get('payment_data')['payment_method'];
$seller_package->payment_details = $payment;
$seller_package->approval = 1;
$seller_package->offline_payment = 2;
$seller_package->save();
flash(translate('Package purchasing successful'))->success();
return redirect()->route('seller.dashboard');
}
public function unpublish_products(Request $request)
{
foreach (Shop::all() as $shop) {
if ($shop->package_invalid_at != null && Carbon::now()->diffInDays(Carbon::parse($shop->package_invalid_at), false) <= 0) {
foreach ($shop->user->products as $product) {
$product->published = 0;
$product->save();
}
$shop->seller_package_id = null;
$shop->save();
}
}
Artisan::call('cache:clear');
}
public function purchase_package_offline(Request $request)
{
$seller_package = SellerPackage::findOrFail($request->package_id);
if (Auth::user()->shop->seller_package != null && $seller_package->product_upload_limit < Auth::user()->shop->seller_package->product_upload_limit) {
flash(translate('You have more uploaded products than this package limit. You need to remove excessive products to downgrade.'))->warning();
return redirect()->route('seller.seller_packages_list');
}
$seller_package = new SellerPackagePayment;
$seller_package->user_id = Auth::user()->id;
$seller_package->seller_package_id = $request->package_id;
$seller_package->payment_method = $request->payment_option;
$seller_package->payment_details = $request->trx_id;
$seller_package->approval = 0;
$seller_package->offline_payment = 1;
$seller_package->reciept = $request->photo;
$seller_package->save();
flash(translate('Offline payment has been done. Please wait for response.'))->success();
return redirect()->route('seller.products');
}
}

View File

@@ -0,0 +1,113 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\SellerPackagePayment;
use App\Models\SellerPackage;
class SellerPackagePaymentController extends Controller
{
public function __construct() {
// Staff Permission Check
$this->middleware(['permission:view_all_offline_seller_package_payments'])->only('offline_payment_request');
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}
public function offline_payment_request(){
$package_payment_requests = SellerPackagePayment::where('offline_payment',1)->orderBy('id', 'desc')->paginate(10);
return view('manual_payment_methods.seller_package_payment_request', compact('package_payment_requests'));
}
public function offline_payment_approval(Request $request)
{
$package_payment = SellerPackagePayment::findOrFail($request->id);
$package_details = SellerPackage::findOrFail($package_payment->seller_package_id);
$package_payment->approval = $request->status;
if($package_payment->save()){
$seller = $package_payment->user->shop;
$seller->seller_package_id = $package_payment->seller_package_id;
$seller->product_upload_limit = $package_details->product_upload_limit;
$seller->package_invalid_at = date('Y-m-d', strtotime( $seller->package_invalid_at. ' +'. $package_details->duration .'days'));
if($seller->save()){
return 1;
}
}
return 0;
}
/**
* 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)
{
//
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* 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 destroy($id)
{
//
}
}

View File

@@ -0,0 +1,22 @@
CREATE TABLE `seller_package_payments` (
`id` int(11) NOT NULL,
`user_id` int(11) NOT NULL,
`seller_package_id` int(11) NOT NULL,
`payment_method` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`payment_details` longtext COLLATE utf8_unicode_ci NOT NULL,
`approval` int(1) NOT NULL,
`offline_payment` int(1) NOT NULL COMMENT '1=offline payment\r\n2=online paymnet',
`reciept` varchar(150) COLLATE utf8_unicode_ci NOT NULL,
`created_at` timestamp NOT NULL DEFAULT current_timestamp(),
`updated_at` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
ALTER TABLE `seller_package_payments`
ADD PRIMARY KEY (`id`);
ALTER TABLE `seller_package_payments`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;

View File

@@ -0,0 +1,16 @@
CREATE TABLE `seller_package_translations` (
`id` bigint(20) NOT NULL,
`seller_package_id` bigint(20) NOT NULL,
`name` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`lang` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
`created_at` timestamp NOT NULL DEFAULT current_timestamp(),
`updated_at` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
ALTER TABLE `seller_package_translations`
ADD PRIMARY KEY (`id`);
ALTER TABLE `seller_package_translations`
MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT;
COMMIT;

View File

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

View File

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

View File

@@ -0,0 +1,3 @@
ALTER TABLE `seller_packages` CHANGE `product_upload` `product_upload_limit` INT(11) NOT NULL DEFAULT '0';
COMMIT;

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,4 @@
ALTER TABLE `seller_package_payments` CHANGE `payment_details` `payment_details` LONGTEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL;
ALTER TABLE `seller_package_payments` CHANGE `payment_method` `payment_method` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL;
COMMIT;

View File

@@ -0,0 +1,113 @@
ALTER TABLE `sellers` ADD `seller_package_id` INT NULL DEFAULT NULL AFTER `user_id`;
ALTER TABLE `sellers` ADD `remaining_uploads` INT NOT NULL DEFAULT '0' AFTER `seller_package_id`;
ALTER TABLE `sellers` ADD `remaining_digital_uploads` INT NOT NULL DEFAULT '0' AFTER `remaining_uploads`;
ALTER TABLE `sellers` ADD `invalid_at` DATE NULL DEFAULT NULL AFTER `remaining_digital_uploads`;
ALTER TABLE `sellers` ADD `remaining_auction_uploads` INT(11) NULL DEFAULT '0' AFTER `invalid_at`;
-- phpMyAdmin SQL Dump
-- version 4.9.0.1
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1
-- Generation Time: Jul 08, 2020 at 10:32 AM
-- Server version: 10.3.16-MariaDB
-- PHP Version: 7.3.7
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `shop_demo`
--
-- --------------------------------------------------------
--
-- Table structure for table `seller_packages`
--
CREATE TABLE `seller_packages` (
`id` int(11) NOT NULL,
`name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`amount` double(11,2) NOT NULL DEFAULT 0.00,
`product_upload_limit` int(11) NOT NULL DEFAULT 0,
`logo` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`duration` int(11) NOT NULL DEFAULT 0,
`created_at` timestamp NULL DEFAULT current_timestamp(),
`updated_at` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
--
-- Indexes for dumped tables
--
--
-- Indexes for table `seller_packages`
--
ALTER TABLE `seller_packages`
ADD PRIMARY KEY (`id`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `seller_packages`
--
ALTER TABLE `seller_packages`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;
CREATE TABLE `seller_package_translations` (
`id` bigint(20) NOT NULL,
`seller_package_id` bigint(20) NOT NULL,
`name` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`lang` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
`created_at` timestamp NOT NULL DEFAULT current_timestamp(),
`updated_at` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
ALTER TABLE `seller_package_translations`
ADD PRIMARY KEY (`id`);
ALTER TABLE `seller_package_translations`
MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT;
CREATE TABLE `seller_package_payments` (
`id` int(11) NOT NULL,
`user_id` int(11) NOT NULL,
`seller_package_id` int(11) NOT NULL,
`payment_method` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`payment_details` longtext COLLATE utf8_unicode_ci DEFAULT NULL,
`approval` int(1) NOT NULL,
`offline_payment` int(1) NOT NULL COMMENT '1=offline payment\r\n2=online paymnet',
`reciept` varchar(150) COLLATE utf8_unicode_ci DEFAULT NULL,
`created_at` timestamp NOT NULL DEFAULT current_timestamp(),
`updated_at` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
ALTER TABLE `seller_package_payments`
ADD PRIMARY KEY (`id`);
ALTER TABLE `seller_package_payments`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

View File

@@ -0,0 +1,60 @@
@extends('backend.layouts.app')
@section('content')
<div class="col-lg-10 mx-auto">
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{translate('Create New Seller Package')}}</h5>
</div>
<form class="form-horizontal" action="{{ route('seller_packages.store') }}" method="POST" enctype="multipart/form-data">
@csrf
<div class="card-body">
<div class="form-group row">
<label class="col-sm-2 col-from-label" for="name">{{translate('Package Name')}}</label>
<div class="col-sm-10">
<input type="text" placeholder="{{translate('Name')}}" id="name" name="name" class="form-control" required>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-from-label" for="amount">{{translate('Amount')}}</label>
<div class="col-sm-10">
<input type="number" min="0" step="0.01" placeholder="{{translate('Amount')}}" id="amount" name="amount" class="form-control" required>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-from-label" for="product_upload_limit">{{translate('Product Upload Limit')}}</label>
<div class="col-sm-10">
<input type="number" min="0" step="1" placeholder="{{translate('Product Upload Limit')}}" id="product_upload_limit" name="product_upload_limit" class="form-control" required>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-from-label" for="duration">{{translate('Duration')}}</label>
<div class="col-sm-10">
<input type="number" min="0" step="1" placeholder="{{translate('Validity in number of days')}}" id="duration" name="duration" class="form-control" required>
</div>
</div>
<div class="form-group row">
<label class="col-md-2 col-form-label" for="signinSrEmail">{{translate('Package Logo')}}</label>
<div class="col-md-10">
<div class="input-group" data-toggle="aizuploader" data-type="image" data-multiple="false">
<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="logo" class="selected-files">
</div>
<div class="file-preview box sm">
</div>
</div>
</div>
<div class="form-group mb-0 text-right">
<button type="submit" class="btn btn-sm btn-primary">{{translate('Save')}}</button>
</div>
</div>
</form>
</div>
</div>
@endsection

View File

@@ -0,0 +1,71 @@
@extends('backend.layouts.app')
@section('content')
<div class="aiz-titlebar mt-2 mb-3">
<h5 class="mb-0 h6">{{translate('Update Package Information')}}</h5>
</div>
<div class="col-lg-10 mx-auto">
<div class="card">
<div class="card-body p-0">
<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('seller_packages.edit', ['id'=>$seller_package->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>
<form class="p-4" action="{{ route('seller_packages.update', $seller_package->id) }}" method="POST">
<input type="hidden" name="_method" value="PATCH">
<input type="hidden" name="lang" value="{{ $lang }}">
@csrf
<div class="form-group row">
<label class="col-sm-2 col-from-label" for="name">{{translate('Package Name')}}</label>
<div class="col-sm-10">
<input type="text" placeholder="{{translate('Name')}}" value="{{ $seller_package->getTranslation('name', $lang) }}" id="name" name="name" class="form-control" required>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-from-label" for="amount">{{translate('Amount')}}</label>
<div class="col-sm-10">
<input type="number" min="0" step="0.01" placeholder="{{translate('Amount')}}" value="{{ $seller_package->amount }}" id="amount" name="amount" class="form-control" required>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-from-label" for="product_upload_limit">{{translate('Product Upload Limit')}}</label>
<div class="col-sm-10">
<input type="number" min="0" step="1" placeholder="{{translate('Product Upload Limit')}}" value="{{ $seller_package->product_upload_limit }}" id="product_upload_limit" name="product_upload_limit" class="form-control" required>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-from-label" for="duration">{{translate('Duration')}}</label>
<div class="col-sm-10">
<input type="number" min="0" step="1" placeholder="{{translate('Validity in number of days')}}" value="{{ $seller_package->duration }}" id="duration" name="duration" class="form-control" required>
</div>
</div>
<div class="form-group row">
<label class="col-md-2 col-form-label" for="signinSrEmail">{{translate('Package Logo')}}</label>
<div class="col-md-10">
<div class="input-group" data-toggle="aizuploader" data-type="image" data-multiple="false">
<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="logo" value="{{ $seller_package->logo }}" class="selected-files">
</div>
<div class="file-preview box sm">
</div>
</div>
</div>
<div class="form-group mb-0 text-right">
<button type="submit" class="btn btn-sm btn-primary">{{translate('Save')}}</button>
</div>
</form>
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,52 @@
@extends('seller.layouts.app')
@section('panel_content')
<div class="aiz-titlebar mt-2 mb-4">
<div class="row align-items-center">
<div class="col-md-6">
<h1 class="h3">{{ translate('Purchase Package List') }}</h1>
</div>
</div>
</div>
<div class="card">
<div class="card-header row gutters-5">
<div class="col">
<h5 class="mb-md-0 h6">{{ translate('All Purchase Package') }}</h5>
</div>
</div>
<div class="card-body">
<table class="table aiz-table mb-0">
<thead>
<tr>
<th>#</th>
<th width="30%">{{ translate('Package')}}</th>
<th data-breakpoints="md">{{ translate('Package Price')}}</th>
<th data-breakpoints="md">{{ translate('Payment Type')}}</th>
</tr>
</thead>
<tbody>
@foreach ($seller_packages_payment as $key => $payment)
<tr>
<td>{{ ($key+1) + ($seller_packages_payment->currentPage() - 1) * $seller_packages_payment->perPage() }}</td>
<td>{{ $payment->seller_package->name ?? translate('Package Unavailable') }}</td>
<td>{{ $payment->seller_package->amount ?? translate('Package Unavailable') }}</td>
<td>
@if($payment->offline_payment == 1)
{{ translate('Offline Payment') }}
@else
{{ translate('Online Payment') }}
@endif
</td>
</tr>
@endforeach
</tbody>
</table>
<div class="aiz-pagination">
{{ $seller_packages_payment->links() }}
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,254 @@
@extends('seller.layouts.app')
@section('panel_content')
<section class="py-8 bg-soft-primary">
<div class="container">
<div class="row">
<div class="col-xl-8 mx-auto text-center">
<h1 class="mb-0 fw-700">{{ translate('Premium Packages for Sellers') }}</h1>
</div>
</div>
</div>
</section>
<section class="py-4 py-lg-5">
<div class="container">
<div class="row row-cols-xxl-4 row-cols-lg-3 row-cols-md-2 row-cols-1 gutters-10 justify-content-center">
@foreach ($seller_packages as $key => $seller_package)
<div class="col">
<div class="card overflow-hidden">
<div class="card-body">
<div class="text-center mb-4 mt-3">
<img class="mw-100 mx-auto mb-4" src="{{ uploaded_asset($seller_package->logo) }}"
height="100">
<h5 class="mb-3 h5 fw-600">{{ $seller_package->getTranslation('name') }}</h5>
</div>
<ul class="list-group list-group-raw fs-15 mb-5">
<li class="list-group-item py-2">
<i class="las la-check text-success mr-2"></i>
{{ $seller_package->product_upload_limit }} {{ translate('Product Upload Limit') }}
</li>
</ul>
<div class="mb-5 d-flex align-items-center justify-content-center">
@if ($seller_package->amount == 0)
<span class="fs-30 fw-600 lh-1 mb-0">{{ translate('Free') }}</span>
@else
<span
class="fs-30 fw-600 lh-1 mb-0">{{ single_price($seller_package->amount) }}</span>
@endif
<span
class="text-secondary border-left ml-2 pl-2">{{ $seller_package->duration }}<br>{{ translate('Days') }}</span>
</div>
<div class="text-center">
@if ($seller_package->amount == 0)
<button class="btn btn-primary fw-600"
onclick="get_free_package({{ $seller_package->id }})">{{ translate('Free Package') }}</button>
@else
@if (addon_is_activated('offline_payment'))
<button class="btn btn-primary fw-600"
onclick="select_payment_type({{ $seller_package->id }})">{{ translate('Purchase Package') }}</button>
@else
<button class="btn btn-primary fw-600"
onclick="show_price_modal({{ $seller_package->id }})">{{ translate('Purchase Package') }}</button>
@endif
@endif
</div>
</div>
</div>
</div>
@endforeach
</div>
</div>
</section>
@endsection
@section('modal')
<!-- Select Payment Type Modal -->
<div class="modal fade" id="select_payment_type_modal" 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('Select Payment Type') }}</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<input type="hidden" id="package_id" name="package_id" value="">
<div class="row">
<div class="col-md-2">
<label>{{ translate('Payment Type') }}</label>
</div>
<div class="col-md-10">
<div class="mb-3">
<select class="form-control aiz-selectpicker" onchange="payment_type(this.value)"
data-minimum-results-for-search="Infinity">
<option value="">{{ translate('Select One') }}</option>
<option value="online">{{ translate('Online payment') }}</option>
<option value="offline">{{ translate('Offline payment') }}</option>
</select>
</div>
</div>
</div>
<div class="form-group text-right">
<button type="button" class="btn btn-sm btn-primary transition-3d-hover mr-1"
id="select_type_cancel" data-dismiss="modal">{{ translate('Cancel') }}</button>
</div>
</div>
</div>
</div>
</div>
<!-- Online payment Modal-->
<div class="modal fade" id="price_modal" 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('Purchase Your Package') }}</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"></button>
</div>
<form class="" id="package_payment_form" action="{{ route('seller_packages.purchase') }}"
method="post">
@csrf
<input type="hidden" name="seller_package_id" value="">
<div class="modal-body" style="overflow-y: unset;">
<div class="row">
<div class="col-md-2">
<label>{{ translate('Payment Method') }}</label>
</div>
<div class="col-md-10">
<div class="mb-3">
<select class="form-control aiz-selectpicker" data-live-search="true"
name="payment_option">
@if (get_setting('paypal_payment') == 1)
<option value="paypal">{{ translate('Paypal') }}</option>
@endif
@if (get_setting('stripe_payment') == 1)
<option value="stripe">{{ translate('Stripe') }}</option>
@endif
@if (get_setting('mercadopago_payment') == 1)
<option value="mercadopago">{{ translate('Mercadopago') }}</option>
<option value="paypal">{{ translate('Paypal') }}</option>
@endif
@if (get_setting('toyyibpay_payment') == 1)
<option value="toyyibpay">{{ translate('ToyyibPay') }}</option>
@endif
@if (get_setting('sslcommerz_payment') == 1)
<option value="sslcommerz">{{ translate('sslcommerz') }}</option>
@endif
@if (get_setting('instamojo_payment') == 1)
<option value="instamojo">{{ translate('Instamojo') }}</option>
@endif
@if (get_setting('razorpay') == 1)
<option value="razorpay">{{ translate('RazorPay') }}</option>
@endif
@if (get_setting('paystack') == 1)
<option value="paystack">{{ translate('PayStack') }}</option>
@endif
@if (get_setting('payhere') == 1)
<option value="payhere">{{ translate('Payhere') }}</option>
@endif
@if (get_setting('ngenius') == 1)
<option value="ngenius">{{ translate('Ngenius') }}</option>
@endif
@if (get_setting('iyzico') == 1)
<option value="iyzico">{{ translate('Iyzico') }}</option>
@endif
@if (get_setting('nagad') == 1)
<option value="nagad">{{ translate('Nagad') }}</option>
@endif
@if (get_setting('bkash') == 1)
<option value="bkash">{{ translate('Bkash') }}</option>
@endif
@if (get_setting('aamarpay') == 1)
<option value="aamarpay">{{ translate('Amarpay') }}</option>
@endif
@if (addon_is_activated('african_pg'))
@if (get_setting('mpesa') == 1)
<option value="mpesa">{{ translate('Mpesa') }}</option>
@endif
@if (get_setting('flutterwave') == 1)
<option value="flutterwave">{{ translate('Flutterwave') }}</option>
@endif
@if (get_setting('payfast') == 1)
<option value="payfast">{{ translate('PayFast') }}</option>
@endif
@endif
@if (addon_is_activated('paytm'))
@if (get_setting('myfatoorah') == 1)
<option value="myfatoorah">{{ translate('MyFatoorah') }}</option>
@endif
@if (get_setting('khalti_payment') == 1)
<option value="khalti">{{ translate('Khalti') }}</option>
@endif
@endif
</select>
</div>
</div>
</div>
<div class="form-group text-right">
<button type="button" class="btn btn-sm btn-secondary transition-3d-hover mr-1"
data-dismiss="modal">{{ translate('cancel') }}</button>
<button type="submit"
class="btn btn-sm btn-primary transition-3d-hover mr-1">{{ translate('Confirm') }}</button>
</div>
</div>
</form>
</div>
</div>
</div>
<!-- offline payment Modal -->
<div class="modal fade" id="offline_seller_package_purchase_modal" tabindex="-1" role="dialog"
aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title strong-600 heading-5">{{ translate('Offline Package Payment') }}</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div id="offline_seller_package_purchase_modal_body"></div>
</div>
</div>
</div>
@endsection
@section('script')
<script type="text/javascript">
function select_payment_type(id) {
$('input[name=package_id]').val(id);
$('#select_payment_type_modal').modal('show');
}
function payment_type(type) {
var package_id = $('#package_id').val();
if (type == 'online') {
$("#select_type_cancel").click();
show_price_modal(package_id);
} else if (type == 'offline') {
$("#select_type_cancel").click();
$.post('{{ route('seller.offline_seller_package_purchase_modal') }}', {
_token: '{{ csrf_token() }}',
package_id: package_id
}, function(data) {
$('#offline_seller_package_purchase_modal_body').html(data);
$('#offline_seller_package_purchase_modal').modal('show');
});
}
}
function show_price_modal(id) {
$('input[name=seller_package_id]').val(id);
$('#price_modal').modal('show');
}
function get_free_package(id) {
$('input[name=seller_package_id]').val(id);
$('#package_payment_form').submit();
}
</script>
@endsection

View File

@@ -0,0 +1,51 @@
@extends('backend.layouts.app')
@section('content')
<div class="aiz-titlebar mt-2 mb-3">
<div class="row align-items-center">
<div class="col-md-6">
<h1 class="h3">{{translate('All Seller Packages')}}</h1>
</div>
@can('add_seller_package')
<div class="col-md-6 text-md-right">
<a href="{{ route('seller_packages.create') }}" class="btn btn-circle btn-info">
<span>{{translate('Add New Package')}}</span>
</a>
</div>
@endcan
</div>
</div>
<div class="row">
@foreach ($seller_packages as $key => $seller_package)
<div class="col-lg-4 col-md-4 col-sm-12">
<div class="card">
<div class="card-body text-center">
<img alt="{{ translate('Package Logo')}}" src="{{ uploaded_asset($seller_package->logo) }}" class="mw-100 mx-auto mb-4" height="150px">
<p class="mb-3 h6 fw-600">{{ $seller_package->getTranslation('name') }}</p>
<p class="h4">{{single_price($seller_package->amount)}}</p>
<p class="fs-15">{{translate('Product Upload Limit') }}:
<b class="text-bold">{{$seller_package->product_upload_limit}}</b>
</p>
<p class="fs-15">{{translate('Package Duration') }}:
<b class="text-bold">{{$seller_package->duration}} {{translate('days')}}</b>
</p>
<div class="mar-top">
@can('edit_seller_package')
<a href="{{route('seller_packages.edit', ['id'=>$seller_package->id, 'lang'=>env('DEFAULT_LANGUAGE')] )}}" class="btn btn-sm btn-info">{{translate('Edit')}}</a>
@endcan
@can('delete_seller_package')
<a href="#" data-href="{{route('seller_packages.destroy', $seller_package->id)}}" class="btn btn-sm btn-danger confirm-delete">{{translate('Delete')}}</a>
@endcan
</div>
</div>
</div>
</div>
@endforeach
</div>
@endsection
@section('modal')
@include('modals.delete_modal')
@endsection