Nuevos cambios hechos de diseño
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
@extends('seller.layouts.app')
|
||||
|
||||
@section('panel_content')
|
||||
<div class="card">
|
||||
<form class="" action="" id="sort_commission_history" method="GET">
|
||||
<div class="card-header row gutters-5">
|
||||
<div class="col">
|
||||
<h5 class="mb-md-0 h6">{{ translate('Commission History') }}</h5>
|
||||
</div>
|
||||
<div class="col-lg-2">
|
||||
<div class="form-group mb-0">
|
||||
<input type="text" class="form-control form-control-sm aiz-date-range" id="search" name="date_range"@isset($date_range) value="{{ $date_range }}" @endisset placeholder="{{ translate('Daterange') }}" autocomplete="off">
|
||||
</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 data-breakpoints="lg">{{ translate('Order Code') }}</th>
|
||||
<th>{{ translate('Admin Commission') }}</th>
|
||||
<th>{{ translate('Earning') }}</th>
|
||||
<th data-breakpoints="lg">{{ translate('Created At') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($commission_history as $key => $history)
|
||||
<tr>
|
||||
<td>{{ ($key+1) }}</td>
|
||||
<td>
|
||||
@if(isset($history->order))
|
||||
{{ $history->order->code }}
|
||||
@else
|
||||
<span class="badge badge-inline badge-danger">
|
||||
{{ translate('Order Deleted') }}
|
||||
</span>
|
||||
@endif
|
||||
</td>
|
||||
<td>{{ $history->admin_commission }}</td>
|
||||
<td>{{ $history->seller_earning }}</td>
|
||||
<td>{{ $history->created_at }}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="aiz-pagination mt-4">
|
||||
{{ $commission_history->links() }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
<script type="text/javascript">
|
||||
function sort_commission_history(el){
|
||||
$('#sort_commission_history').submit();
|
||||
}
|
||||
</script>
|
||||
@endsection
|
||||
@@ -0,0 +1,75 @@
|
||||
@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">
|
||||
<b class="h4">{{ translate('Conversations')}}</b>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<ul class="list-group list-group-flush">
|
||||
@foreach ($conversations as $key => $conversation)
|
||||
@if ($conversation->receiver != null && $conversation->sender != null)
|
||||
<li class="list-group-item px-0">
|
||||
<div class="row gutters-10">
|
||||
<div class="col-auto">
|
||||
<div class="media">
|
||||
<span class="avatar avatar-sm flex-shrink-0">
|
||||
@if (Auth::user()->id == $conversation->sender_id)
|
||||
<img @if ($conversation->receiver->avatar_original == null) src="{{ static_asset('assets/img/avatar-place.png') }}" @else src="{{ uploaded_asset($conversation->receiver->avatar_original) }}" @endif onerror="this.onerror=null;this.src='{{ static_asset('assets/img/avatar-place.png') }}';">
|
||||
@else
|
||||
<img @if ($conversation->sender->avatar_original == null) src="{{ static_asset('assets/img/avatar-place.png') }}" @else src="{{ uploaded_asset($conversation->sender->avatar_original) }}" @endif class="rounded-circle" onerror="this.onerror=null;this.src='{{ static_asset('assets/img/avatar-place.png') }}';">
|
||||
@endif
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-auto col-lg-3">
|
||||
<p>
|
||||
@if (Auth::user()->id == $conversation->sender_id)
|
||||
<span class="fw-600">{{ $conversation->receiver->name }}</span>
|
||||
@else
|
||||
<span class="fw-600">{{ $conversation->sender->name }}</span>
|
||||
@endif
|
||||
<br>
|
||||
<span class="opacity-50">
|
||||
{{ date('h:i:m d-m-Y', strtotime($conversation->messages->last()->created_at)) }}
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-12 col-lg">
|
||||
<div class="block-body">
|
||||
<div class="block-body-inner pb-3">
|
||||
<div class="row no-gutters">
|
||||
<div class="col">
|
||||
<h6 class="mt-0">n.
|
||||
<a href="{{ route('seller.conversations.show', encrypt($conversation->id)) }}" class="text-dark fw-600">
|
||||
{{ $conversation->title }}
|
||||
</a>
|
||||
@if ((Auth::user()->id == $conversation->sender_id && $conversation->sender_viewed == 0) || (Auth::user()->id == $conversation->receiver_id && $conversation->receiver_viewed == 0))
|
||||
<span class="badge badge-inline badge-danger">{{ translate('New') }}</span>
|
||||
@endif
|
||||
</h6>
|
||||
</div>
|
||||
</div>
|
||||
<p class="mb-0 opacity-50">
|
||||
{{ $conversation->messages->last()->message }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
@endif
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="aiz-pagination">
|
||||
{{ $conversations->links() }}
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
@@ -0,0 +1,74 @@
|
||||
@extends('seller.layouts.app')
|
||||
|
||||
@section('panel_content')
|
||||
<div class="aiz-titlebar mt-2 mb-4">
|
||||
<div class="h6">
|
||||
<span>{{ translate('Conversations With ')}}</span>
|
||||
@if ($conversation->sender_id == Auth::user()->id && $conversation->receiver->shop != null)
|
||||
<a href="{{ route('shop.visit', $conversation->receiver->shop->slug) }}" class="">{{ $conversation->receiver->shop->name }}</a>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="card-title fs-16 fw-600 mb-0">#{{ $conversation->title }}
|
||||
(
|
||||
{{ translate('Between you and') }}
|
||||
@if ($conversation->sender_id == Auth::user()->id)
|
||||
{{ $conversation->receiver->name }}
|
||||
@else
|
||||
{{ $conversation->sender->name }}
|
||||
@endif
|
||||
)
|
||||
</h5>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<ul class="list-group list-group-flush">
|
||||
@foreach($conversation->messages as $message)
|
||||
<li class="list-group-item px-0">
|
||||
<div class="media mb-2">
|
||||
<img class="avatar avatar-xs mr-3" @if($message->user != null) src="{{ uploaded_asset($message->user->avatar_original) }}" @endif onerror="this.onerror=null;this.src='{{ static_asset('assets/img/avatar-place.png') }}';">
|
||||
<div class="media-body">
|
||||
<h6 class="mb-0 fw-600">
|
||||
@if ($message->user != null)
|
||||
{{ $message->user->name }}
|
||||
@endif
|
||||
</h6>
|
||||
<p class="opacity-50">{{$message->created_at}}</p>
|
||||
</div>
|
||||
</div>
|
||||
<p>
|
||||
{{ $message->message }}
|
||||
</p>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
<form class="pt-4" action="{{ route('seller.conversations.message_store') }}" method="POST">
|
||||
@csrf
|
||||
<input type="hidden" name="conversation_id" value="{{ $conversation->id }}">
|
||||
<div class="form-group">
|
||||
<textarea class="form-control" rows="4" name="message" placeholder="{{ translate('Type your reply') }}" required></textarea>
|
||||
</div>
|
||||
<div class="form-group mb-0 text-right">
|
||||
<button type="submit" class="btn btn-primary">{{ translate('Send') }}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
<script type="text/javascript">
|
||||
function refresh_messages(){
|
||||
$.post('{{ route('seller.conversations.refresh') }}', {_token:'{{ @csrf_token() }}', id:'{{ encrypt($conversation->id) }}'}, function(data){
|
||||
$('#messages').html(data);
|
||||
})
|
||||
}
|
||||
|
||||
refresh_messages(); // This will run on page load
|
||||
setInterval(function(){
|
||||
refresh_messages() // this will run after every 5 seconds
|
||||
}, 4000);
|
||||
</script>
|
||||
@endsection
|
||||
71
desarrollo2/resources/views/seller/coupons/create.blade.php
Normal file
71
desarrollo2/resources/views/seller/coupons/create.blade.php
Normal file
@@ -0,0 +1,71 @@
|
||||
@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('Add Your Coupon') }}</h1>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row gutters-5">
|
||||
<div class="col-lg-10 mx-auto">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('Coupon Information Adding')}}</h5>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<form class="form-horizontal" action="{{ route('seller.coupon.store') }}" method="POST" enctype="multipart/form-data">
|
||||
@csrf
|
||||
@if ($errors->any())
|
||||
<div class="alert alert-danger">
|
||||
<ul class="mt-3">
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
@endif
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-3 col-from-label" for="name">{{translate('Coupon Type')}}</label>
|
||||
<div class="col-lg-9">
|
||||
<select name="type" id="coupon_type" class="form-control aiz-selectpicker" onchange="coupon_form()" required>
|
||||
<option value="">{{translate('Select One') }}</option>
|
||||
<option value="product_base" @if (old('type') == 'product_base') selected @endif>{{translate('For Products')}}</option>
|
||||
<option value="cart_base" @if (old('type') == 'cart_base') selected @endif>{{translate('For Total Orders')}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="coupon_form">
|
||||
|
||||
</div>
|
||||
<div class="form-group mb-0 text-right">
|
||||
<button type="submit" class="btn btn-primary">{{translate('Save')}}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
|
||||
<script type="text/javascript">
|
||||
function coupon_form(){
|
||||
var coupon_type = $('#coupon_type').val();
|
||||
$.post('{{ route('seller.coupon.get_coupon_form') }}',{_token:'{{ csrf_token() }}', coupon_type:coupon_type}, function(data){
|
||||
$('#coupon_form').html(data);
|
||||
});
|
||||
}
|
||||
|
||||
@if($errors->any())
|
||||
coupon_form();
|
||||
@endif
|
||||
|
||||
</script>
|
||||
@endsection
|
||||
79
desarrollo2/resources/views/seller/coupons/edit.blade.php
Normal file
79
desarrollo2/resources/views/seller/coupons/edit.blade.php
Normal file
@@ -0,0 +1,79 @@
|
||||
@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('Edit Your Coupon') }}</h1>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row gutters-5">
|
||||
<div class="col-lg-10 mx-auto">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="mb-0 h6">{{translate('Coupon Information Update')}}</h3>
|
||||
</div>
|
||||
<form action="{{ route('seller.coupon.update', $coupon->id) }}" method="POST">
|
||||
<input name="_method" type="hidden" value="PATCH">
|
||||
@csrf
|
||||
@if ($errors->any())
|
||||
<div class="alert alert-danger">
|
||||
<ul class="mt-3">
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
@endif
|
||||
<div class="card-body">
|
||||
<input type="hidden" name="id" value="{{ $coupon->id }}" id="id">
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-3 col-from-label" for="name">{{translate('Coupon Type')}}</label>
|
||||
<div class="col-lg-9">
|
||||
<select name="type" id="coupon_type" class="form-control aiz-selectpicker" onchange="coupon_form()" required>
|
||||
@if ($coupon->type == "product_base"))
|
||||
<option value="product_base" selected>{{translate('For Products')}}</option>
|
||||
@elseif ($coupon->type == "cart_base")
|
||||
<option value="cart_base">{{translate('For Total Orders')}}</option>
|
||||
@endif
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="coupon_form">
|
||||
|
||||
</div>
|
||||
<div class="form-group mb-0 text-right">
|
||||
<button type="submit" class="btn btn-primary">{{translate('Save')}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@endsection
|
||||
@section('script')
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
function coupon_form(){
|
||||
var coupon_type = $('#coupon_type').val();
|
||||
var id = $('#id').val();
|
||||
$.post('{{ route('seller.coupon.get_coupon_form_edit') }}',{_token:'{{ csrf_token() }}', coupon_type:coupon_type, id:id}, function(data){
|
||||
$('#coupon_form').html(data);
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
$(document).ready(function(){
|
||||
coupon_form();
|
||||
});
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
@endsection
|
||||
73
desarrollo2/resources/views/seller/coupons/index.blade.php
Normal file
73
desarrollo2/resources/views/seller/coupons/index.blade.php
Normal file
@@ -0,0 +1,73 @@
|
||||
@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('Coupons') }}</h1>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row gutters-10 justify-content-center">
|
||||
<div class="col-md-4 mx-auto mb-3" >
|
||||
<a href="{{ route('seller.coupon.create')}}">
|
||||
<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 Coupon') }}</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-header row gutters-5">
|
||||
<div class="col">
|
||||
<h5 class="mb-md-0 h6">{{ translate('All Coupons') }}</h5>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table aiz-table p-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th data-breakpoints="lg">#</th>
|
||||
<th>{{translate('Code')}}</th>
|
||||
<th data-breakpoints="lg">{{translate('Type')}}</th>
|
||||
<th data-breakpoints="lg">{{translate('Start Date')}}</th>
|
||||
<th data-breakpoints="lg">{{translate('End Date')}}</th>
|
||||
<th width="10%">{{translate('Options')}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($coupons as $key => $coupon)
|
||||
<tr>
|
||||
<td>{{$key+1}}</td>
|
||||
<td>{{$coupon->code}}</td>
|
||||
<td>@if ($coupon->type == 'cart_base')
|
||||
{{ translate('Cart Base') }}
|
||||
@elseif ($coupon->type == 'product_base')
|
||||
{{ translate('Product Base') }}
|
||||
@endif</td>
|
||||
<td>{{ date('d-m-Y', $coupon->start_date) }}</td>
|
||||
<td>{{ date('d-m-Y', $coupon->end_date) }}</td>
|
||||
<td class="text-right">
|
||||
<a class="btn btn-soft-primary btn-icon btn-circle btn-sm" href="{{route('seller.coupon.edit', encrypt($coupon->id) )}}" title="{{ translate('Edit') }}">
|
||||
<i class="las la-edit"></i>
|
||||
</a>
|
||||
<a href="#" class="btn btn-soft-danger btn-icon btn-circle btn-sm confirm-delete" data-href="{{route('seller.coupon.destroy', $coupon->id)}}" title="{{ translate('Delete') }}">
|
||||
<i class="las la-trash"></i>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
@section('modal')
|
||||
@include('modals.delete_modal')
|
||||
@endsection
|
||||
644
desarrollo2/resources/views/seller/dashboard.blade.php
Normal file
644
desarrollo2/resources/views/seller/dashboard.blade.php
Normal file
@@ -0,0 +1,644 @@
|
||||
@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 text-primary">{{ translate('Dashboard') }}</h1>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-6 col-md-6 col-xxl-3">
|
||||
<div class="card shadow-none mb-4 bg-primary py-4">
|
||||
<div class="card-body">
|
||||
<div class="row align-items-center">
|
||||
<div class="col">
|
||||
<p class="small text-muted mb-0">
|
||||
<span class="fe fe-arrow-down fe-12"></span>
|
||||
<span class="fs-14 text-light">{{ translate('Products') }}</span>
|
||||
</p>
|
||||
<h3 class="mb-0 text-white fs-30">
|
||||
{{ \App\Models\Product::where('user_id', Auth::user()->id)->count() }}
|
||||
</h3>
|
||||
|
||||
</div>
|
||||
<div class="col-auto text-right">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="64.001" height="64" viewBox="0 0 64.001 64">
|
||||
<path id="Path_66" data-name="Path 66"
|
||||
d="M146.431,117.56l-26.514-10.606a8.014,8.014,0,0,0-5.944,0L87.458,117.56a4,4,0,0,0-2.514,3.714v34.217a4,4,0,0,0,2.514,3.714l26.514,10.606a8.013,8.013,0,0,0,5.944,0L146.431,159.2a4,4,0,0,0,2.514-3.714V121.274a4,4,0,0,0-2.514-3.714m-31.714-8.748a5.981,5.981,0,0,1,4.456,0l26.1,10.44a1,1,0,0,1,0,1.858l-12.332,4.932-30.654-12.26Zm1.228,59.633L88.2,157.347a2,2,0,0,1-1.258-1.856V122.6l29,11.6Zm1-36L88.612,121.11a1,1,0,0,1,0-1.858L99.6,114.858l30.654,12.262Zm30,23.048a2,2,0,0,1-1.258,1.856l-27.742,11.1V134.2l13-5.2V146.61a1.035,1.035,0,0,0,2-.466V128.2l14-5.6Z"
|
||||
transform="translate(-84.944 -106.382)" fill="#FFFFFF" />
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6 col-md-6 col-xxl-3">
|
||||
<div class="card shadow-none mb-4 bg-primary py-4">
|
||||
<div class="card-body">
|
||||
<div class="row align-items-center">
|
||||
<div class="col">
|
||||
<p class="small text-muted mb-0">
|
||||
<span class="fe fe-arrow-down fe-12"></span>
|
||||
<span class="fs-14 text-light">{{ translate('Rating') }}</span>
|
||||
</p>
|
||||
<h3 class="mb-0 text-white fs-30">
|
||||
@if(Auth::user()->shop && Auth::user()->shop->rating)
|
||||
{{ Auth::user()->shop->rating }}
|
||||
@endif
|
||||
</h3>
|
||||
|
||||
</div>
|
||||
<div class="col-auto text-right">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="64" height="61.143" viewBox="0 0 64 61.143">
|
||||
<path id="Path_57" data-name="Path 57"
|
||||
d="M63.286,22.145a2.821,2.821,0,0,0-1.816-.926L43.958,19.455a2.816,2.816,0,0,1-2.294-1.666L34.574,1.68a2.813,2.813,0,0,0-5.148,0l-7.09,16.11a2.813,2.813,0,0,1-2.292,1.666L2.53,21.219a2.813,2.813,0,0,0-1.59,4.9l13.13,11.72a2.818,2.818,0,0,1,.876,2.7l-3.734,17.2a2.812,2.812,0,0,0,4.166,3.026L30.584,51.9a2.8,2.8,0,0,1,2.832,0l15.206,8.864a2.813,2.813,0,0,0,4.166-3.026l-3.734-17.2a2.818,2.818,0,0,1,.876-2.7l13.13-11.72a2.813,2.813,0,0,0,.226-3.972m-1.5,2.546L48.658,36.413a4.717,4.717,0,0,0-1.47,4.524l3.732,17.2a.9.9,0,0,1-1.336.97l-15.2-8.866a4.729,4.729,0,0,0-4.758,0L14.416,59.109a.9.9,0,0,1-1.336-.97l3.732-17.2a4.717,4.717,0,0,0-1.47-4.524L2.212,24.691a.9.9,0,0,1,.51-1.57l17.512-1.766a4.721,4.721,0,0,0,3.85-2.8l7.09-16.11a.9.9,0,0,1,1.652,0l7.09,16.11a4.721,4.721,0,0,0,3.85,2.8l17.512,1.766a.9.9,0,0,1,.51,1.57"
|
||||
transform="translate(0 0)" fill="#FFFFFF" />
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6 col-md-6 col-xxl-3">
|
||||
<div class="card shadow-none mb-4 bg-primary py-4">
|
||||
<div class="card-body">
|
||||
<div class="row align-items-center">
|
||||
<div class="col">
|
||||
<p class="small text-muted mb-0">
|
||||
<span class="fe fe-arrow-down fe-12"></span>
|
||||
<span class="fs-14 text-light">{{ translate('Total Order') }}</span>
|
||||
</p>
|
||||
<h3 class="mb-0 text-white fs-30">
|
||||
{{ \App\Models\Order::where('seller_id', Auth::user()->id)->where('delivery_status', 'delivered')->count() }}
|
||||
</h3>
|
||||
</div>
|
||||
<div class="col-auto text-right">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64">
|
||||
<g id="Group_25" data-name="Group 25" transform="translate(-1561.844 1020.618)">
|
||||
<path id="Path_58" data-name="Path 58"
|
||||
d="M229.23,106.382h-12a6,6,0,0,0,0,12h12a6,6,0,0,0,0-12m0,10h-12a4,4,0,0,1,0-8h12a4,4,0,0,1,0,8"
|
||||
transform="translate(1370.615 -1127)" fill="#FFFFFF" />
|
||||
<path id="Path_59" data-name="Path 59"
|
||||
d="M213.73,117.882h24a1,1,0,0,1,0,2h-24a1,1,0,0,1,0-2"
|
||||
transform="translate(1372.115 -1115.5)" fill="#FFFFFF" />
|
||||
<path id="Path_60" data-name="Path 60" d="M210.23,117.382a2,2,0,1,0,2,2,2,2,0,0,0-2-2"
|
||||
transform="translate(1367.615 -1116)" fill="#FFFFFF" />
|
||||
<line id="Line_1" data-name="Line 1" transform="translate(1578.047 -1014.618)"
|
||||
fill="none" stroke="red" stroke-linecap="round" stroke-linejoin="round"
|
||||
stroke-width="0.142" />
|
||||
<line id="Line_2" data-name="Line 2" transform="translate(1609.643 -1014.618)"
|
||||
fill="none" stroke="red" stroke-linecap="round" stroke-linejoin="round"
|
||||
stroke-width="0.142" />
|
||||
<path id="Path_61" data-name="Path 61"
|
||||
d="M213.73,123.882h24a1,1,0,0,1,0,2h-24a1,1,0,0,1,0-2"
|
||||
transform="translate(1372.115 -1109.5)" fill="#FFFFFF" />
|
||||
<path id="Path_62" data-name="Path 62" d="M210.23,123.382a2,2,0,1,0,2,2,2,2,0,0,0-2-2"
|
||||
transform="translate(1367.615 -1110)" fill="#FFFFFF" />
|
||||
<path id="Path_63" data-name="Path 63"
|
||||
d="M213.73,129.882h24a1,1,0,0,1,0,2h-24a1,1,0,1,1,0-2"
|
||||
transform="translate(1372.115 -1103.5)" fill="#FFFFFF" />
|
||||
<path id="Path_64" data-name="Path 64" d="M210.23,129.382a2,2,0,1,0,2,2,2,2,0,0,0-2-2"
|
||||
transform="translate(1367.615 -1104)" fill="#FFFFFF" />
|
||||
<line id="Line_3" data-name="Line 3" transform="translate(1609.643 -1015.618)"
|
||||
fill="none" stroke="red" stroke-linecap="round" stroke-linejoin="round"
|
||||
stroke-width="0.142" />
|
||||
<line id="Line_4" data-name="Line 4" transform="translate(1578.047 -1015.618)"
|
||||
fill="none" stroke="red" stroke-linecap="round" stroke-linejoin="round"
|
||||
stroke-width="0.142" />
|
||||
<path id="Path_65" data-name="Path 65"
|
||||
d="M265.23,116.382a8,8,0,0,0-8-8h-7.2a1,1,0,0,0,0,2h7.2a6,6,0,0,1,6,6v44a6,6,0,0,1-6,6h-48a6,6,0,0,1-6-6v-44a6,6,0,0,1,6-6h7.2a1,1,0,0,0,0-2h-7.2a8,8,0,0,0-8,8v44a8,8,0,0,0,8,8h48a8,8,0,0,0,8-8Z"
|
||||
transform="translate(1360.615 -1125)" fill="#FFFFFF" />
|
||||
</g>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6 col-md-6 col-xxl-3">
|
||||
<div class="card shadow-none mb-4 bg-primary py-4">
|
||||
<div class="card-body">
|
||||
<div class="row align-items-center">
|
||||
<div class="col">
|
||||
<p class="small text-muted mb-0">
|
||||
<span class="fe fe-arrow-down fe-12"></span>
|
||||
<span class="fs-14 text-light">{{ translate('Total Sales') }}</span>
|
||||
</p>
|
||||
<h3 class="mb-0 text-white fs-30">
|
||||
@php
|
||||
$orderDetails = \App\Models\OrderDetail::where('seller_id', Auth::user()->id)->get();
|
||||
$total = 0;
|
||||
foreach ($orderDetails as $key => $orderDetail) {
|
||||
if ($orderDetail->order != null && $orderDetail->order->payment_status == 'paid') {
|
||||
$total += $orderDetail->price;
|
||||
}
|
||||
}
|
||||
@endphp
|
||||
{{ single_price($total) }}
|
||||
</h3>
|
||||
|
||||
</div>
|
||||
<div class="col-auto text-right">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64.001" viewBox="0 0 64 64.001">
|
||||
<g id="Group_26" data-name="Group 26" transform="translate(-1571.385 1123.29)">
|
||||
<line id="Line_5" data-name="Line 5" transform="translate(1572.385 -1123.29)"
|
||||
fill="none" stroke="red" stroke-linecap="round" stroke-linejoin="round"
|
||||
stroke-width="0.142" />
|
||||
<path id="Path_67" data-name="Path 67"
|
||||
d="M214.771,65.71a2,2,0,0,1-2-2v-59a1,1,0,0,0-2,0v59a4,4,0,0,0,4,4h59a1,1,0,0,0,0-2Z"
|
||||
transform="translate(1360.615 -1127)" fill="#FFFFFF" />
|
||||
<line id="Line_6" data-name="Line 6" y1="0.136" x2="0.136"
|
||||
transform="translate(1586.533 -1087.117)" fill="none" stroke="red"
|
||||
stroke-linecap="round" stroke-linejoin="round" stroke-width="0.142" />
|
||||
<path id="Path_68" data-name="Path 68"
|
||||
d="M264.6,10.027a3,3,0,0,0-4,4L247.536,27.1a2.994,2.994,0,0,0-2.594,0l-6.584-6.584a3,3,0,1,0-5.414,0L221.528,31.927a3,3,0,1,0,1.412,1.418l11.418-11.418a3,3,0,0,0,2.586,0l6.586,6.586a3,3,0,1,0,5.418,0l13.072-13.07a3,3,0,0,0,2.584-5.416M220.23,35.633a1,1,0,1,1,1-1,1,1,0,0,1-1,1m15.42-15.414a1,1,0,1,1,1-1,1,1,0,0,1-1,1M246.238,30.8a1,1,0,1,1,1-1,1,1,0,0,1-1,1m17.074-17.066a1,1,0,1,1,1-1,1,1,0,0,1-1,1"
|
||||
transform="translate(1367.074 -1120.976)" fill="#FFFFFF" />
|
||||
</g>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-6 col-md-6 col-lg-3 mb-4">
|
||||
<div class="card shadow-none bg-soft-primary">
|
||||
<div class="card-body">
|
||||
<div class="card-title text-primary fs-16 fw-600">
|
||||
{{ translate('Sales Stat') }}
|
||||
</div>
|
||||
<canvas id="graph-1" class="w-100" height="150"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card shadow-none bg-soft-primary mb-0">
|
||||
|
||||
@php
|
||||
$date = date('Y-m-d');
|
||||
$days_ago_30 = date('Y-m-d', strtotime('-30 days', strtotime($date)));
|
||||
$days_ago_60 = date('Y-m-d', strtotime('-60 days', strtotime($date)));
|
||||
|
||||
$orderTotal = \App\Models\Order::where('seller_id', Auth::user()->id)
|
||||
->where('payment_status', 'paid')
|
||||
->where('created_at', '>=', $days_ago_30)
|
||||
->sum('grand_total');
|
||||
@endphp
|
||||
|
||||
<div class="card-body">
|
||||
<div class="card-title text-primary fs-16 fw-600">
|
||||
{{ translate('Sold Amount') }}
|
||||
</div>
|
||||
<p>{{ translate('Your Sold Amount (Current month)') }}</p>
|
||||
<h3 class="text-primary fw-600 fs-30">
|
||||
{{ single_price($orderTotal) }}
|
||||
</h3>
|
||||
<p class="mt-4">
|
||||
@php
|
||||
$orderTotal = \App\Models\Order::where('seller_id', Auth::user()->id)
|
||||
->where('payment_status', 'paid')
|
||||
->where('created_at', '>=', $days_ago_60)
|
||||
->where('created_at', '<=', $days_ago_30)
|
||||
->sum('grand_total');
|
||||
@endphp
|
||||
{{ translate('Last Month') }}: {{ single_price($orderTotal) }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6 col-md-6 col-lg-3 mb-4">
|
||||
<div class="card shadow-none h-450px mb-0 h-100">
|
||||
<div class="card-body">
|
||||
<div class="card-title text-primary fs-16 fw-600">
|
||||
{{ translate('Category wise product count') }}
|
||||
</div>
|
||||
<hr>
|
||||
<ul class="list-group">
|
||||
@foreach (\App\Models\Category::all() as $key => $category)
|
||||
@if (count($category->products->where('user_id', Auth::user()->id)) > 0)
|
||||
<li class="d-flex justify-content-between align-items-center my-2 text-primary fs-13">
|
||||
{{ $category->getTranslation('name') }}
|
||||
<span class="">
|
||||
{{ count($category->products->where('user_id', Auth::user()->id)) }}
|
||||
</span>
|
||||
</li>
|
||||
@endif
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6 col-md-6 col-lg-3 mb-4">
|
||||
<div class="card h-450px mb-0 h-100">
|
||||
<div class="card-body">
|
||||
<div class="card-title text-primary fs-16 fw-600">
|
||||
{{ translate('Orders') }}
|
||||
<p class="small text-muted mb-0">
|
||||
<span class="fs-12 fw-600">{{ translate('This Month') }}</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class="row align-items-center mb-4">
|
||||
<div class="col-auto text-left">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 30 30">
|
||||
<g id="Group_23742" data-name="Group 23742" transform="translate(2044 3467)">
|
||||
<rect id="Rectangle_17194" data-name="Rectangle 17194" width="30" height="30"
|
||||
transform="translate(-2044 -3467)" fill="none" />
|
||||
<g id="Group_23741" data-name="Group 23741" transform="translate(310 759)">
|
||||
<path id="Path_26908" data-name="Path 26908"
|
||||
d="M4.355,30a12.083,12.083,0,0,1-1.6-.517A4.905,4.905,0,0,1,.029,24.5c.146-1.377.228-2.761.339-4.142Q.532,18.313.7,16.271c.106-1.332.206-2.665.316-4,.129-1.555.227-3.114.413-4.662a2,2,0,0,1,2-1.687c.782-.012,1.565,0,2.348,0h.336A5.77,5.77,0,0,1,8.275,1.3,5.615,5.615,0,0,1,12.367.018a5.841,5.841,0,0,1,5.38,5.9h.278c.753,0,1.507,0,2.26,0A2.116,2.116,0,0,1,22.5,7.986c.165,2.091.343,4.181.509,6.272s.322,4.183.488,6.273c.107,1.352.222,2.7.335,4.054a4.9,4.9,0,0,1-4.195,5.362A.61.61,0,0,0,19.5,30ZM6.118,7.678c-.893,0-1.743-.005-2.593,0-.282,0-.383.141-.407.463q-.151,1.97-.307,3.939Q2.559,15.2,2.3,18.325c-.156,1.935-.319,3.869-.455,5.806a6.248,6.248,0,0,0,.028,1.685,3.078,3.078,0,0,0,3.166,2.427q6.882,0,13.764,0c.088,0,.176,0,.264-.006a3.145,3.145,0,0,0,2.986-3.544c-.117-1.076-.177-2.158-.262-3.238-.105-1.342-.208-2.684-.315-4.026-.128-1.6-.261-3.209-.389-4.813q-.181-2.275-.357-4.551a.36.36,0,0,0-.365-.381c-.868-.009-1.735,0-2.63,0,0,.123,0,.218,0,.313,0,.615.006,1.23,0,1.845a.878.878,0,1,1-1.755-.006c-.006-.71,0-1.419,0-2.134h-8.1c0,.693,0,1.365,0,2.038a1.312,1.312,0,0,1-.034.347A.877.877,0,0,1,6.12,9.847c-.008-.711,0-1.422,0-2.168M7.894,5.9h8.069a4.036,4.036,0,1,0-8.069,0"
|
||||
transform="translate(-2351 -4226)" fill="#2E294E" />
|
||||
<path id="Path_26909" data-name="Path 26909"
|
||||
d="M156.63,290.4H153.2v-3.431a.872.872,0,1,0-1.744,0V290.4h-3.431a.872.872,0,1,0,0,1.744h3.431v3.431a.872.872,0,0,0,1.744,0v-3.431h3.431a.872.872,0,0,0,0-1.744"
|
||||
transform="translate(-2491.298 -4498.774)" fill="#2E294E" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
</div>
|
||||
<div class="col">
|
||||
<p class="small text-muted mb-0">
|
||||
<span class="fe fe-arrow-down fe-12"></span>
|
||||
<span class="fs-13 text-primary fw-600">{{ translate('New Order') }}</span>
|
||||
</p>
|
||||
<h3 class="mb-0" style="color: #A9A3CC">
|
||||
{{ \App\Models\OrderDetail::where('seller_id', Auth::user()->id)->where('delivery_status', 'pending')->count() }}
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row align-items-center mb-4">
|
||||
<div class="col-auto text-left">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="30"
|
||||
height="30" viewBox="0 0 30 30">
|
||||
<defs>
|
||||
<clipPath id="clip-path">
|
||||
<rect id="Rectangle_17198" data-name="Rectangle 17198" width="30" height="30"
|
||||
transform="translate(0 0)" fill="none" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g id="Group_23751" data-name="Group 23751" transform="translate(0 0.001)">
|
||||
<g id="Group_23750" data-name="Group 23750" transform="translate(0 -0.001)"
|
||||
clip-path="url(#clip-path)">
|
||||
<path id="Path_27505" data-name="Path 27505"
|
||||
d="M13.122,30H7.03A7.041,7.041,0,0,1,0,22.959V7.03A7.041,7.041,0,0,1,7.03,0H22.959A7.041,7.041,0,0,1,30,7.03v5.857a1.172,1.172,0,1,1-2.343,0V7.03a4.691,4.691,0,0,0-4.7-4.687H7.03A4.691,4.691,0,0,0,2.343,7.03V22.959A4.691,4.691,0,0,0,7.03,27.646h6.092a1.177,1.177,0,0,1,0,2.354"
|
||||
transform="translate(0 0)" fill="#2E294E" />
|
||||
<path id="Path_27506" data-name="Path 27506"
|
||||
d="M193.376,91.163a1.171,1.171,0,0,0-1.171-1.171h-5.969a1.172,1.172,0,1,0,0,2.343h5.969a1.171,1.171,0,0,0,1.171-1.171v0"
|
||||
transform="translate(-174.22 -84.719)" fill="#2E294E" />
|
||||
<path id="Path_27507" data-name="Path 27507"
|
||||
d="M249.953,242.05a7.909,7.909,0,1,0,7.916,7.9,7.909,7.909,0,0,0-7.916-7.9m.008,13.467a5.563,5.563,0,1,1,5.558-5.566h.008a5.566,5.566,0,0,1-5.566,5.566"
|
||||
transform="translate(-227.869 -227.867)" fill="#2E294E" />
|
||||
<path id="Path_27508" data-name="Path 27508"
|
||||
d="M331.615,329.84l.929-.929a1.172,1.172,0,0,0-1.658-1.656l-.929.929-.929-.929a1.172,1.172,0,0,0-1.658,1.656l.929.929-.929.929a1.172,1.172,0,1,0,1.658,1.656l.929-.929.929.929a1.172,1.172,0,1,0,1.658-1.656Z"
|
||||
transform="translate(-307.867 -307.756)" fill="#2E294E" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
</div>
|
||||
<div class="col">
|
||||
<p class="small text-muted mb-0">
|
||||
<span class="fe fe-arrow-down fe-12"></span>
|
||||
<span class="fs-13 text-primary fw-600">{{ translate('Cancelled') }}</span>
|
||||
</p>
|
||||
<h3 class="mb-0" style="color: #A9A3CC">
|
||||
{{ \App\Models\OrderDetail::where('seller_id', Auth::user()->id)->where('delivery_status', 'cancelled')->count() }}
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row align-items-center mb-4">
|
||||
<div class="col-auto text-left">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 30 30">
|
||||
<g id="Group_23745" data-name="Group 23745" transform="translate(1901 3455)">
|
||||
<rect id="Rectangle_17195" data-name="Rectangle 17195" width="30" height="30"
|
||||
transform="translate(-1901 -3455)" fill="none" />
|
||||
<g id="Group_23744" data-name="Group 23744" transform="translate(-867.487 654.098)">
|
||||
<path id="Path_26911" data-name="Path 26911"
|
||||
d="M1352.884,172.262h-4.464a.88.88,0,1,0,0,1.761h4.464a.88.88,0,1,0,0-1.761"
|
||||
transform="translate(-2379.291 -4277.175)" fill="#2E294E" />
|
||||
<path id="Path_26912" data-name="Path 26912"
|
||||
d="M1352.884,292.455h-4.464a.88.88,0,1,0,0,1.761h4.464a.88.88,0,1,0,0-1.761"
|
||||
transform="translate(-2379.291 -4390.326)" fill="#2E294E" />
|
||||
<path id="Path_26913" data-name="Path 26913"
|
||||
d="M1322.832,232.366h-4.464a.88.88,0,1,0,0,1.761h4.464a.88.88,0,0,0,0-1.761"
|
||||
transform="translate(-2351 -4333.757)" fill="#2E294E" />
|
||||
<path id="Path_26914" data-name="Path 26914"
|
||||
d="M1531.056,222.736h-5.341v-3.52a1.763,1.763,0,0,0-3-1.244l-7.04,7.04a1.76,1.76,0,0,0,0,2.489h0l4.035,4.035-4.918,4.918a1.761,1.761,0,0,0,2.49,2.49l6.162-6.163a1.76,1.76,0,0,0,0-2.489h0l-4.035-4.035,2.792-2.792v1.03a1.761,1.761,0,0,0,1.761,1.761h7.1a1.761,1.761,0,0,0,0-3.52Z"
|
||||
transform="translate(-2536.278 -4319.726)" fill="#2E294E" />
|
||||
<path id="Path_26915" data-name="Path 26915"
|
||||
d="M1475.968,150.029a1.761,1.761,0,0,0-2.222.22l-4.842,4.842a1.761,1.761,0,0,0,2.441,2.538l.049-.049,3.821-3.821,1.288.927,1.717-1.717a3.5,3.5,0,0,1,1-.687Z"
|
||||
transform="translate(-2493.036 -4255.966)" fill="#2E294E" />
|
||||
<path id="Path_26916" data-name="Path 26916"
|
||||
d="M1344.676,384.535a3.489,3.489,0,0,1-.9-1.589l-9.3,9.3a1.761,1.761,0,0,0,2.49,2.49l8.955-8.954Z"
|
||||
transform="translate(-2366.531 -4475.515)" fill="#2E294E" />
|
||||
<path id="Path_26917" data-name="Path 26917"
|
||||
d="M1690.437,117.9a2.5,2.5,0,1,1-2.5,2.5,2.5,2.5,0,0,1,2.5-2.5"
|
||||
transform="translate(-2699.74 -4226)" fill="#2E294E" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
</div>
|
||||
<div class="col">
|
||||
<p class="small text-muted mb-0">
|
||||
<span class="fe fe-arrow-down fe-12"></span>
|
||||
<span class="fs-13 text-primary fw-600">{{ translate('On Delivery') }}</span>
|
||||
</p>
|
||||
<h3 class="mb-0" style="color: #A9A3CC">
|
||||
{{ \App\Models\OrderDetail::where('seller_id', Auth::user()->id)->where('delivery_status', 'on_the_way')->count() }}
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row align-items-center mb-4">
|
||||
<div class="col-auto text-left">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 30 30">
|
||||
<g id="Group_23747" data-name="Group 23747" transform="translate(1894 3457)">
|
||||
<rect id="Rectangle_17196" data-name="Rectangle 17196" width="30" height="30"
|
||||
transform="translate(-1894 -3457)" fill="none" />
|
||||
<g id="Group_23746" data-name="Group 23746" transform="translate(-1599.983 686.845)">
|
||||
<path id="Path_26918" data-name="Path 26918"
|
||||
d="M2077.33,84.3v.4q0,3.482,0,6.963a1.069,1.069,0,0,1-.7,1.137,1.082,1.082,0,0,1-1.236-.336c-.411-.424-.836-.834-1.273-1.268-.4.4-.806.792-1.206,1.191a1.126,1.126,0,0,1-1.887-.009c-.392-.393-.791-.78-1.208-1.192-.46.464-.9.934-1.371,1.375a1.071,1.071,0,0,1-1.789-.482,1.63,1.63,0,0,1-.036-.43q0-3.465,0-6.93V84.3h-.363q-2.409,0-4.819,0a2.166,2.166,0,0,0-2.317,2.325q0,10.529,0,21.058a2.17,2.17,0,0,0,2.343,2.333q4.183,0,8.366,0a1.07,1.07,0,0,1,.3,2.1,1.345,1.345,0,0,1-.363.038c-2.867,0-5.734.008-8.6,0a4.261,4.261,0,0,1-4.181-4.194q-.008-10.8,0-21.593a4.254,4.254,0,0,1,4.2-4.2q10.792-.007,21.584,0a4.259,4.259,0,0,1,4.192,4.182c.008,2.868,0,5.736,0,8.6a1.071,1.071,0,1,1-2.138,0q0-4.134,0-8.269a2.177,2.177,0,0,0-2.365-2.378h-5.133m-2.163,4.811V84.324h-6.387v4.842c.063-.051.1-.074.125-.1.709-.676,1.2-.671,1.884.017.392.392.789.78,1.194,1.179.459-.458.909-.9,1.357-1.353a.991.991,0,0,1,1.1-.271,3.98,3.98,0,0,1,.726.472"
|
||||
transform="translate(-2351 -4226)" fill="#2E294E" />
|
||||
<path id="Path_26919" data-name="Path 26919"
|
||||
d="M2276.429,310.26a8.566,8.566,0,1,1,8.554,8.574,8.552,8.552,0,0,1-8.554-8.574m14.992,0a6.426,6.426,0,1,0-6.388,6.431,6.451,6.451,0,0,0,6.388-6.431"
|
||||
transform="translate(-2557.593 -4432.681)" fill="#2E294E" />
|
||||
<path id="Path_26920" data-name="Path 26920"
|
||||
d="M2352.663,396.855c.43-.437.848-.866,1.271-1.292q1.072-1.08,2.148-2.155a1.083,1.083,0,1,1,1.531,1.519q-2.064,2.073-4.137,4.139a1.071,1.071,0,0,1-1.672,0q-1-.99-1.986-1.986a1.085,1.085,0,1,1,1.538-1.513l1.305,1.29"
|
||||
transform="translate(-2626.31 -4518.65)" fill="#2E294E" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
</div>
|
||||
<div class="col">
|
||||
<p class="small text-muted mb-0">
|
||||
<span class="fe fe-arrow-down fe-12"></span>
|
||||
<span class="fs-13 text-primary fw-600">{{ translate('Delivered') }}</span>
|
||||
</p>
|
||||
<h3 class="mb-0" style="color: #A9A3CC">
|
||||
{{ \App\Models\OrderDetail::where('seller_id', Auth::user()->id)->where('delivery_status', 'delivered')->count() }}
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6 col-md-6 col-lg-3 mb-4">
|
||||
@if (addon_is_activated('seller_subscription'))
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="card-title">
|
||||
<h6 class="mb-0">{{ translate('Purchased Package') }}</h6>
|
||||
</div>
|
||||
@if (Auth::user()->shop && Auth::user()->shop->seller_package)
|
||||
<div class="d-flex">
|
||||
<div class="col-3">
|
||||
<img src="{{ uploaded_asset(Auth::user()->shop->seller_package->logo) }}"
|
||||
class="img-fluid mb-4 w-64px">
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<a class="fw-600 mb-3 text-primary">{{ translate('Current Package') }}:</a>
|
||||
<h6 class="text-primary">
|
||||
{{ Auth::user()->shop->seller_package->name }}
|
||||
</h3>
|
||||
<p class="mb-1 text-muted">{{ translate('Product Upload Limit') }}:
|
||||
{{ Auth::user()->shop->product_upload_limit }} {{ translate('Times') }}
|
||||
</p>
|
||||
<p class="text-muted mb-4">{{ translate('Package Expires at') }}:
|
||||
{{ Auth::user()->shop->package_invalid_at }}
|
||||
</p>
|
||||
<div class="">
|
||||
<a href="{{ route('seller.seller_packages_list') }}"
|
||||
class="btn btn-soft-primary">{{ translate('Upgrade Package') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@else
|
||||
<h6 class="fw-600 mb-3 text-primary">{{ translate('Package Not Found') }}</h6>
|
||||
@endif
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
<div
|
||||
class="card mb-0 @if (addon_is_activated('seller_subscription')) px-4 py-5 @else p-5 h-100 @endif d-flex align-items-center justify-content-center">
|
||||
@if (Auth::user()->shop && Auth::user()->shop->verification_status == 0)
|
||||
<div class="my-n4 py-1 text-center">
|
||||
<img src="{{ static_asset('assets/img/non_verified.png') }}" alt=""
|
||||
class="w-xxl-130px w-90px d-block">
|
||||
<a href="{{ route('seller.shop.verify') }}"
|
||||
class="btn btn-sm btn-primary">{{ translate('Verify Now') }}</a>
|
||||
</div>
|
||||
@else
|
||||
<div class="my-2 py-1">
|
||||
<img src="{{ static_asset('assets/img/verified.png') }}" alt="" width="">
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-6 col-md-6 col-lg-3">
|
||||
<a href="{{ route('seller.money_withdraw_requests.index') }}"
|
||||
class="card mb-4 p-4 text-center bg-soft-primary h-180px">
|
||||
<div class="fs-16 fw-600 text-primary">
|
||||
{{ translate('Money Withdraw') }}
|
||||
</div>
|
||||
<div class="m-3">
|
||||
<svg id="Group_22725" data-name="Group 22725" xmlns="http://www.w3.org/2000/svg" width="48" height="48"
|
||||
viewBox="0 0 48 48">
|
||||
<path id="Path_108"
|
||||
d="M24,28.5A1.538,1.538,0,0,1,25.5,30v6a1.5,1.5,0,0,1-3,0V30A1.538,1.538,0,0,1,24,28.5"
|
||||
fill="#2E294E" />
|
||||
<path id="Path_109"
|
||||
d="M36,21H33V43.5A1.538,1.538,0,0,1,31.5,45h-15A1.538,1.538,0,0,1,15,43.5V21H12V43.5A4.481,4.481,0,0,0,16.5,48h15A4.481,4.481,0,0,0,36,43.5Z"
|
||||
fill="#2E294E" />
|
||||
<path id="Path_110"
|
||||
d="M43.5,0H4.5A4.481,4.481,0,0,0,0,4.5v9A4.481,4.481,0,0,0,4.5,18h39A4.481,4.481,0,0,0,48,13.5v-9A4.481,4.481,0,0,0,43.5,0M45,13.5A1.538,1.538,0,0,1,43.5,15H4.5A1.538,1.538,0,0,1,3,13.5v-9A1.538,1.538,0,0,1,4.5,3h39A1.538,1.538,0,0,1,45,4.5Z"
|
||||
fill="#2E294E" />
|
||||
<path id="Path_111" d="M28.5,21h-9a4.5,4.5,0,0,0,9,0" fill="#2E294E" />
|
||||
</svg>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-sm-6 col-md-6 col-lg-3">
|
||||
<a href="{{ route('seller.products') }}" class="card mb-4 p-4 text-center h-180px">
|
||||
<div class="fs-16 fw-600 text-primary">
|
||||
{{ translate('Add New Product') }}
|
||||
</div>
|
||||
<div class="m-3">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48">
|
||||
<g id="Group_22724" data-name="Group 22724" transform="translate(-1284 -875)">
|
||||
<rect id="Rectangle_17080" data-name="Rectangle 17080" width="2" height="48" rx="1"
|
||||
transform="translate(1307 875)" fill="#2E294E" />
|
||||
<rect id="Rectangle_17081" data-name="Rectangle 17081" width="2" height="48" rx="1"
|
||||
transform="translate(1332 898) rotate(90)" fill="#2E294E" />
|
||||
</g>
|
||||
</svg>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-sm-6 col-md-6 col-lg-3">
|
||||
<div class="card mb-4 p-4 text-center bg-soft-primary">
|
||||
<div class="fs-16 fw-600 text-primary">
|
||||
{{ translate('Shop Settings') }}
|
||||
</div>
|
||||
<div class=" m-3">
|
||||
<svg id="Group_31" data-name="Group 31" xmlns="http://www.w3.org/2000/svg" width="32" height="32"
|
||||
viewBox="0 0 32 32">
|
||||
<path id="Path_78" data-name="Path 78"
|
||||
d="M2,25.723a1,1,0,0,0,.629.928L16,32l3.361-1.344a.5.5,0,0,0-.186-.965.491.491,0,0,0-.185.036L16,30.923l-13-5.2v-11.6a4.428,4.428,0,0,1-1-.2Z"
|
||||
fill="#2E294E" />
|
||||
<path id="Path_79" data-name="Path 79"
|
||||
d="M19.681,24.189a.5.5,0,0,0-.5-.5.493.493,0,0,0-.186.036l-3,1.2L7.432,21.5a.5.5,0,0,0-.65.278.512.512,0,0,0-.035.186.5.5,0,0,0,.314.464L16,26l3.367-1.347a.5.5,0,0,0,.314-.464"
|
||||
fill="#2E294E" />
|
||||
<path id="Path_80" data-name="Path 80"
|
||||
d="M31.5,25.126h-.087a1.368,1.368,0,0,1-.967-2.336l.061-.061a.5.5,0,0,0,0-.707l-.265-.265-.264-.264a.5.5,0,0,0-.707,0l-.061.06a1.368,1.368,0,0,1-2.336-.967V20.5a.5.5,0,0,0-.5-.5h-.748a.5.5,0,0,0-.5.5v.086a1.368,1.368,0,0,1-2.336.967l-.061-.06a.5.5,0,0,0-.707,0l-.265.264-.265.265a.5.5,0,0,0,0,.707l.061.061a1.368,1.368,0,0,1-.967,2.336H20.5a.5.5,0,0,0-.5.5v.748a.5.5,0,0,0,.5.5h.086a1.368,1.368,0,0,1,.967,2.336l-.061.061a.5.5,0,0,0,0,.707l.265.264.265.265a.5.5,0,0,0,.707,0l.061-.061a1.368,1.368,0,0,1,2.336.968V31.5a.5.5,0,0,0,.5.5h.748a.5.5,0,0,0,.5-.5v-.086a1.368,1.368,0,0,1,2.336-.968l.061.061a.5.5,0,0,0,.707,0l.264-.265.265-.264a.5.5,0,0,0,0-.707l-.061-.061a1.368,1.368,0,0,1,.967-2.336H31.5a.5.5,0,0,0,.5-.5v-.748a.5.5,0,0,0-.5-.5M29.171,29a2.373,2.373,0,0,0,.118.285,2.368,2.368,0,0,0-3.171,1.078,2.22,2.22,0,0,0-.118.285,2.369,2.369,0,0,0-3-1.481,2.516,2.516,0,0,0-.285.118A2.367,2.367,0,0,0,21.348,26a2.369,2.369,0,0,0,1.48-3,2.344,2.344,0,0,0-.118-.285,2.37,2.37,0,0,0,3.172-1.077A2.516,2.516,0,0,0,26,21.348a2.367,2.367,0,0,0,3,1.48,2.28,2.28,0,0,0,.285-.118,2.37,2.37,0,0,0,1.077,3.172,2.457,2.457,0,0,0,.286.118,2.367,2.367,0,0,0-1.481,3"
|
||||
fill="#2E294E" />
|
||||
<path id="Path_81" data-name="Path 81" d="M27.5,26A1.5,1.5,0,1,0,26,27.5,1.5,1.5,0,0,0,27.5,26"
|
||||
fill="#2E294E" />
|
||||
<path id="Path_82" data-name="Path 82"
|
||||
d="M16,0A46.43,46.43,0,0,1,0,8.4v2a3.451,3.451,0,0,0,5.333,2.133,3.452,3.452,0,0,0,5.333,2.134A3.453,3.453,0,0,0,16,16.8a3.451,3.451,0,0,0,5.333-2.133,3.451,3.451,0,0,0,5.333-2.134A3.454,3.454,0,0,0,32,10.4v-2A46.421,46.421,0,0,1,16,0M31.021,10.194a2.452,2.452,0,0,1-3.788,1.515,1,1,0,0,0-1.545.618A2.453,2.453,0,0,1,21.9,13.843a1,1,0,0,0-1.545.618A2.451,2.451,0,0,1,16,15.434a2.452,2.452,0,0,1-4.355-.973,1,1,0,0,0-1.545-.618,2.454,2.454,0,0,1-3.789-1.516,1,1,0,0,0-1.184-.772,1.015,1.015,0,0,0-.361.154A2.451,2.451,0,0,1,.978,10.194V9.148A47.458,47.458,0,0,0,16,1.277,47.442,47.442,0,0,0,31.021,9.148Z"
|
||||
fill="#2E294E" />
|
||||
</svg>
|
||||
</div>
|
||||
<a href="{{ route('seller.shop.index') }}" class="btn btn-primary">
|
||||
{{ translate('Go to setting') }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6 col-md-6 col-lg-3">
|
||||
<div class="card mb-4 p-4 text-center bg-soft-primary">
|
||||
<div class="fs-16 fw-600 text-primary">
|
||||
{{ translate('Payment Settings') }}
|
||||
</div>
|
||||
<div class=" m-3">
|
||||
<svg id="Group_30" data-name="Group 30" xmlns="http://www.w3.org/2000/svg" width="31.999" height="32"
|
||||
viewBox="0 0 31.999 32">
|
||||
<path id="Path_83" data-name="Path 83"
|
||||
d="M96.2,30.593a.5.5,0,0,1,.314-.464L103.6,27.3a.484.484,0,0,1,.185-.036.5.5,0,0,1,.185.965l-7.087,2.831a.5.5,0,0,1-.686-.464"
|
||||
transform="translate(-92.946 -10)" fill="#2E294E" />
|
||||
<path id="Path_84" data-name="Path 84"
|
||||
d="M96.2,33.537a.5.5,0,0,1,.314-.464l4.615-1.844a.493.493,0,0,1,.186-.036.5.5,0,0,1,.186.964L96.887,34a.5.5,0,0,1-.686-.464"
|
||||
transform="translate(-92.946 -10)" fill="#2E294E" />
|
||||
<path id="Path_85" data-name="Path 85"
|
||||
d="M117.171,10a2.017,2.017,0,0,0-.744.143L94.205,19.021a2,2,0,0,0-1.259,1.857V40a2,2,0,0,0,2.746,1.857l15.795-6.31a.5.5,0,1,0-.372-.929L95.32,40.928a.985.985,0,0,1-.372.072,1,1,0,0,1-1-1V28.7l24.225-9.679v8.306a.5.5,0,0,0,1,0V12a2,2,0,0,0-2-2m1,5.82L93.947,25.5v-4.62a1,1,0,0,1,.63-.928L116.8,11.071a1,1,0,0,1,1.373.929Z"
|
||||
transform="translate(-92.946 -10)" fill="#2E294E" />
|
||||
<path id="Path_86" data-name="Path 86"
|
||||
d="M123.686,32.181,115.1,28.752a4.007,4.007,0,0,0-7.193-1.8l2.671,1.067a1,1,0,1,1-.744,1.857l-2.671-1.067a4.005,4.005,0,0,0,6.449,3.654L122.2,35.9a2,2,0,1,0,1.487-3.714m.186,2.228a1,1,0,0,1-1.3.557L113.4,31.3a3.006,3.006,0,0,1-5.08-.952l1.149.459a2,2,0,1,0,1.488-3.714l-1.149-.459a3,3,0,0,1,4.336,2.809l9.173,3.665a1,1,0,0,1,.558,1.3"
|
||||
transform="translate(-92.946 -10)" fill="#2E294E" />
|
||||
</svg>
|
||||
</div>
|
||||
<a href="{{ route('seller.profile.index') }}" class="btn btn-primary">
|
||||
{{ translate('Configure Now') }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="card-title text-primary">
|
||||
<h6 class="mb-0">{{ translate('Top 12 Products') }}</h6>
|
||||
</div>
|
||||
<div class="aiz-carousel gutters-10 half-outside-arrow" data-items="6" data-xl-items="5" data-lg-items="4"
|
||||
data-md-items="3" data-sm-items="2" data-arrows='true'>
|
||||
@foreach ($products as $key => $product)
|
||||
<div class="carousel-box">
|
||||
<div
|
||||
class="aiz-card-box border border-light rounded shadow-sm hov-shadow-md mb-2 has-transition bg-white">
|
||||
<div class="position-relative">
|
||||
<a href="{{ route('product', $product->slug) }}" class="d-block">
|
||||
<img class="img-fit lazyload mx-auto h-210px"
|
||||
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="p-md-3 p-2 text-left">
|
||||
<div class="fs-15">
|
||||
@if (home_base_price($product) != home_discounted_base_price($product))
|
||||
<del class="fw-600 opacity-50 mr-1">{{ home_base_price($product) }}</del>
|
||||
@endif
|
||||
<span class="fw-700 text-primary">{{ home_discounted_base_price($product) }}</span>
|
||||
</div>
|
||||
<div class="rating rating-sm mt-1">
|
||||
{{ renderStarRating($product->rating) }}
|
||||
</div>
|
||||
<h3 class="fw-600 fs-13 text-truncate-2 lh-1-4 mb-0">
|
||||
<a href="{{ route('product', $product->slug) }}"
|
||||
class="d-block text-reset">{{ $product->getTranslation('name') }}</a>
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
<script type="text/javascript">
|
||||
AIZ.plugins.chart('#graph-1', {
|
||||
type: 'bar',
|
||||
data: {
|
||||
labels: [
|
||||
@foreach ($last_7_days_sales as $key => $last_7_days_sale)
|
||||
'{{ $key }}',
|
||||
@endforeach
|
||||
],
|
||||
datasets: [{
|
||||
label: 'Sales ($)',
|
||||
data: [
|
||||
@foreach ($last_7_days_sales as $key => $last_7_days_sale)
|
||||
'{{ $last_7_days_sale }}',
|
||||
@endforeach
|
||||
],
|
||||
|
||||
backgroundColor: ['#2E294E', '#2E294E', '#2E294E', '#2E294E', '#2E294E', '#2E294E',
|
||||
'#2E294E'
|
||||
],
|
||||
borderColor: ['#2E294E', '#2E294E', '#2E294E', '#2E294E', '#2E294E', '#2E294E',
|
||||
'#2E294E'
|
||||
],
|
||||
borderWidth: 1
|
||||
}]
|
||||
},
|
||||
options: {
|
||||
scales: {
|
||||
yAxes: [{
|
||||
gridLines: {
|
||||
color: '#E0E0E0',
|
||||
zeroLineColor: '#E0E0E0'
|
||||
},
|
||||
ticks: {
|
||||
fontColor: "#AFAFAF",
|
||||
fontFamily: 'Roboto',
|
||||
fontSize: 10,
|
||||
beginAtZero: true
|
||||
},
|
||||
}],
|
||||
xAxes: [{
|
||||
gridLines: {
|
||||
display: false
|
||||
},
|
||||
ticks: {
|
||||
fontColor: "#AFAFAF",
|
||||
fontFamily: 'Roboto',
|
||||
fontSize: 10
|
||||
},
|
||||
barThickness: 7,
|
||||
barPercentage: .5,
|
||||
categoryPercentage: .5,
|
||||
}],
|
||||
},
|
||||
legend: {
|
||||
display: false
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
148
desarrollo2/resources/views/seller/inc/seller_nav.blade.php
Normal file
148
desarrollo2/resources/views/seller/inc/seller_nav.blade.php
Normal file
@@ -0,0 +1,148 @@
|
||||
<div class="aiz-topbar px-15px px-lg-25px d-flex align-items-stretch justify-content-between">
|
||||
<div class="d-flex">
|
||||
<div class="aiz-topbar-nav-toggler d-flex align-items-center justify-content-start mr-2 mr-md-3 ml-0" data-toggle="aiz-mobile-nav">
|
||||
<button class="aiz-mobile-toggler">
|
||||
<span></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="d-flex justify-content-between align-items-stretch flex-grow-xl-1">
|
||||
<div class="d-flex justify-content-around align-items-center align-items-stretch">
|
||||
<div class="d-flex justify-content-around align-items-center align-items-stretch">
|
||||
<div class="aiz-topbar-item">
|
||||
<div class="d-flex align-items-center">
|
||||
<a class="btn btn-icon btn-circle btn-light" href="{{ route('home')}}" target="_blank" title="{{ translate('Browse Website') }}">
|
||||
<i class="las la-globe"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@if (addon_is_activated('pos_system'))
|
||||
<div class="d-flex justify-content-around align-items-center align-items-stretch ml-3">
|
||||
<div class="aiz-topbar-item">
|
||||
<div class="d-flex align-items-center">
|
||||
<a class="btn btn-icon btn-circle btn-light" href="{{ route('poin-of-sales.seller_index') }}" target="_blank" title="{{ translate('POS') }}">
|
||||
<i class="las la-print"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
<div class="d-flex justify-content-around align-items-center align-items-stretch">
|
||||
|
||||
<div class="aiz-topbar-item ml-2">
|
||||
<div class="align-items-stretch d-flex dropdown">
|
||||
<a class="dropdown-toggle no-arrow" data-toggle="dropdown" href="javascript:void(0);" role="button" aria-haspopup="false" aria-expanded="false">
|
||||
<span class="btn btn-icon p-0 d-flex justify-content-center align-items-center">
|
||||
<span class="d-flex align-items-center position-relative">
|
||||
<i class="las la-bell fs-24"></i>
|
||||
@if(Auth::user()->unreadNotifications->count() > 0)
|
||||
<span class="badge badge-sm badge-dot badge-circle badge-primary position-absolute absolute-top-right"></span>
|
||||
@endif
|
||||
</span>
|
||||
</span>
|
||||
</a>
|
||||
<div class="dropdown-menu dropdown-menu-right dropdown-menu-animated dropdown-menu-lg py-0">
|
||||
<div class="p-3 bg-light border-bottom">
|
||||
<h6 class="mb-0">{{ translate('Notifications') }}</h6>
|
||||
</div>
|
||||
<div class="px-3 c-scrollbar-light overflow-auto " style="max-height:300px;">
|
||||
<ul class="list-group list-group-flush">
|
||||
@forelse(Auth::user()->unreadNotifications->take(20) as $notification)
|
||||
<li class="list-group-item d-flex justify-content-between align-items- py-3">
|
||||
<div class="media text-inherit">
|
||||
<div class="media-body">
|
||||
@if($notification->type == 'App\Notifications\OrderNotification')
|
||||
<p class="mb-1 text-truncate-2">
|
||||
<a href="{{ route('seller.orders.show', encrypt($notification->data['order_id'])) }}">
|
||||
{{translate('Order code: ')}} {{$notification->data['order_code']}} {{ translate('has been '. ucfirst(str_replace('_', ' ', $notification->data['status'])))}}
|
||||
</a>
|
||||
</p>
|
||||
<small class="text-muted">
|
||||
{{ date("F j Y, g:i a", strtotime($notification->created_at)) }}
|
||||
</small>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
@empty
|
||||
<li class="list-group-item">
|
||||
<div class="py-4 text-center fs-16">
|
||||
{{ translate('No notification found') }}
|
||||
</div>
|
||||
</li>
|
||||
@endforelse
|
||||
</ul>
|
||||
</div>
|
||||
<div class="text-center border-top">
|
||||
<a href="{{ route('seller.all-notification') }}" class="text-reset d-block py-2">
|
||||
{{translate('View All Notifications')}}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{-- language --}}
|
||||
@php
|
||||
if(Session::has('locale')){
|
||||
$locale = Session::get('locale', Config::get('app.locale'));
|
||||
}
|
||||
else{
|
||||
$locale = env('DEFAULT_LANGUAGE');
|
||||
}
|
||||
@endphp
|
||||
<div class="aiz-topbar-item ml-2">
|
||||
<div class="align-items-stretch d-flex dropdown " id="lang-change">
|
||||
<a class="dropdown-toggle no-arrow" data-toggle="dropdown" href="javascript:void(0);" role="button" aria-haspopup="false" aria-expanded="false">
|
||||
<span class="btn btn-icon">
|
||||
<img src="{{ static_asset('assets/img/flags/'.$locale.'.png') }}" height="11">
|
||||
</span>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-menu-right dropdown-menu-animated dropdown-menu-xs">
|
||||
|
||||
@foreach (\App\Models\Language::where('status', 1)->get() as $key => $language)
|
||||
<li>
|
||||
<a href="javascript:void(0)" data-flag="{{ $language->code }}" class="dropdown-item @if($locale == $language->code) active @endif">
|
||||
<img src="{{ static_asset('assets/img/flags/'.$language->code.'.png') }}" class="mr-2">
|
||||
<span class="language">{{ $language->name }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="aiz-topbar-item ml-2">
|
||||
<div class="align-items-stretch d-flex dropdown">
|
||||
<a class="dropdown-toggle no-arrow text-dark" data-toggle="dropdown" href="javascript:void(0);" role="button" aria-haspopup="false" aria-expanded="false">
|
||||
<span class="d-flex align-items-center">
|
||||
<span class="avatar avatar-sm mr-md-2">
|
||||
<img
|
||||
src="{{ uploaded_asset(Auth::user()->avatar_original) }}"
|
||||
onerror="this.onerror=null;this.src='{{ static_asset('assets/img/avatar-place.png') }}';"
|
||||
>
|
||||
</span>
|
||||
<span class="d-none d-md-block">
|
||||
<span class="d-block fw-500">{{Auth::user()->name}}</span>
|
||||
<span class="d-block small opacity-60">{{Auth::user()->user_type}}</span>
|
||||
</span>
|
||||
</span>
|
||||
</a>
|
||||
<div class="dropdown-menu dropdown-menu-right dropdown-menu-animated dropdown-menu-md">
|
||||
<a href="{{ route('seller.profile.index') }}" class="dropdown-item">
|
||||
<i class="las la-user-circle"></i>
|
||||
<span>{{translate('Profile')}}</span>
|
||||
</a>
|
||||
|
||||
<a href="{{ route('logout')}}" class="dropdown-item">
|
||||
<i class="las la-sign-out-alt"></i>
|
||||
<span>{{translate('Logout')}}</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- .aiz-topbar-item -->
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- .aiz-topbar -->
|
||||
264
desarrollo2/resources/views/seller/inc/seller_sidenav.blade.php
Normal file
264
desarrollo2/resources/views/seller/inc/seller_sidenav.blade.php
Normal file
@@ -0,0 +1,264 @@
|
||||
<div class="aiz-sidebar-wrap">
|
||||
<div class="aiz-sidebar left c-scrollbar">
|
||||
<div class="aiz-side-nav-logo-wrap">
|
||||
<div class="d-block text-center my-3">
|
||||
@if (optional(Auth::user()->shop)->logo != null)
|
||||
<img class="mw-100 mb-3" src="{{ uploaded_asset(optional(Auth::user()->shop)->logo) }}"
|
||||
class="brand-icon" alt="{{ get_setting('site_name') }}">
|
||||
@else
|
||||
<img class="mw-100 mb-3" src="{{ uploaded_asset(get_setting('header_logo')) }}" class="brand-icon"
|
||||
alt="{{ get_setting('site_name') }}">
|
||||
@endif
|
||||
<h3 class="fs-16 m-0 text-primary">{{ optional(Auth::user()->shop)->name }}</h3>
|
||||
<p class="text-primary">{{ Auth::user()->email }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="aiz-side-nav-wrap">
|
||||
<div class="px-20px mb-3">
|
||||
<input class="form-control bg-soft-secondary border-0 form-control-sm" type="text" name=""
|
||||
placeholder="{{ translate('Search in menu') }}" id="menu-search" onkeyup="menuSearch()">
|
||||
</div>
|
||||
<ul class="aiz-side-nav-list" id="search-menu">
|
||||
</ul>
|
||||
<ul class="aiz-side-nav-list" id="main-menu" data-toggle="aiz-side-menu">
|
||||
<li class="aiz-side-nav-item">
|
||||
<a href="{{ route('seller.dashboard') }}" class="aiz-side-nav-link">
|
||||
<i class="las la-home aiz-side-nav-icon"></i>
|
||||
<span class="aiz-side-nav-text">{{ translate('Dashboard') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="aiz-side-nav-item">
|
||||
<a href="#" class="aiz-side-nav-link">
|
||||
<i class="las la-shopping-cart aiz-side-nav-icon"></i>
|
||||
<span class="aiz-side-nav-text">{{ translate('Products') }}</span>
|
||||
<span class="aiz-side-nav-arrow"></span>
|
||||
</a>
|
||||
<!--Submenu-->
|
||||
<ul class="aiz-side-nav-list level-2">
|
||||
<li class="aiz-side-nav-item">
|
||||
<a href="{{ route('seller.products') }}"
|
||||
class="aiz-side-nav-link {{ areActiveRoutes(['seller.products', 'seller.products.create', 'seller.products.edit']) }}">
|
||||
<span class="aiz-side-nav-text">{{ translate('Products') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="aiz-side-nav-item">
|
||||
<a href="{{ route('seller.product_bulk_upload.index') }}"
|
||||
class="aiz-side-nav-link {{ areActiveRoutes(['product_bulk_upload.index']) }}">
|
||||
<span class="aiz-side-nav-text">{{ translate('Product Bulk Upload') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="aiz-side-nav-item">
|
||||
<a href="{{ route('seller.digitalproducts') }}"
|
||||
class="aiz-side-nav-link {{ areActiveRoutes(['seller.digitalproducts', 'seller.digitalproducts.create', 'seller.digitalproducts.edit']) }}">
|
||||
<span class="aiz-side-nav-text">{{ translate('Digital Products') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="aiz-side-nav-item">
|
||||
<a href="{{ route('seller.reviews') }}"
|
||||
class="aiz-side-nav-link {{ areActiveRoutes(['seller.reviews']) }}">
|
||||
<span class="aiz-side-nav-text">{{ translate('Product Reviews') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="aiz-side-nav-item">
|
||||
<a href="{{ route('seller.uploaded-files.index') }}"
|
||||
class="aiz-side-nav-link {{ areActiveRoutes(['seller.uploaded-files.index', 'seller.uploads.create']) }}">
|
||||
<i class="las la-folder-open aiz-side-nav-icon"></i>
|
||||
<span class="aiz-side-nav-text">{{ translate('Uploaded Files') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@if (addon_is_activated('seller_subscription'))
|
||||
<li class="aiz-side-nav-item">
|
||||
<a href="#" class="aiz-side-nav-link">
|
||||
<i class="las la-shopping-cart aiz-side-nav-icon"></i>
|
||||
<span class="aiz-side-nav-text">{{ translate('Package') }}</span>
|
||||
<span class="aiz-side-nav-arrow"></span>
|
||||
</a>
|
||||
<ul class="aiz-side-nav-list level-2">
|
||||
<li class="aiz-side-nav-item">
|
||||
<a href="{{ route('seller.seller_packages_list') }}" class="aiz-side-nav-link">
|
||||
<span class="aiz-side-nav-text">{{ translate('Packages') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="aiz-side-nav-item">
|
||||
<a href="{{ route('seller.packages_payment_list') }}" class="aiz-side-nav-link">
|
||||
<span class="aiz-side-nav-text">{{ translate('Purchase Packages') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
@endif
|
||||
@if (get_setting('coupon_system') == 1)
|
||||
<li class="aiz-side-nav-item">
|
||||
<a href="{{ route('seller.coupon.index') }}"
|
||||
class="aiz-side-nav-link {{ areActiveRoutes(['seller.coupon.index', 'seller.coupon.create', 'seller.coupon.edit']) }}">
|
||||
<i class="las la-bullhorn aiz-side-nav-icon"></i>
|
||||
<span class="aiz-side-nav-text">{{ translate('Coupon') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@endif
|
||||
@if (addon_is_activated('wholesale') && get_setting('seller_wholesale_product') == 1)
|
||||
<li class="aiz-side-nav-item">
|
||||
<a href="{{ route('seller.wholesale_products_list') }}"
|
||||
class="aiz-side-nav-link {{ areActiveRoutes(['wholesale_product_create.seller', 'wholesale_product_edit.seller']) }}">
|
||||
<i class="las la-luggage-cart aiz-side-nav-icon"></i>
|
||||
<span class="aiz-side-nav-text">{{ translate('Wholesale Products') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@endif
|
||||
@if (addon_is_activated('auction') && get_setting('seller_auction_product') == 1)
|
||||
<li class="aiz-side-nav-item">
|
||||
<a href="javascript:void(0);" class="aiz-side-nav-link">
|
||||
<i class="las la-gavel aiz-side-nav-icon"></i>
|
||||
<span class="aiz-side-nav-text">{{ translate('Auction') }}</span>
|
||||
<span class="aiz-side-nav-arrow"></span>
|
||||
</a>
|
||||
<ul class="aiz-side-nav-list level-2">
|
||||
<li class="aiz-side-nav-item">
|
||||
<a href="{{ route('auction_products.seller.index') }}"
|
||||
class="aiz-side-nav-link {{ areActiveRoutes(['auction_products.seller.index', 'auction_product_create.seller', 'auction_product_edit.seller', 'product_bids.seller']) }}">
|
||||
<span class="aiz-side-nav-text">{{ translate('All Auction Products') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="aiz-side-nav-item">
|
||||
<a href="{{ route('auction_products_orders.seller') }}"
|
||||
class="aiz-side-nav-link {{ areActiveRoutes(['auction_products_orders.seller']) }}">
|
||||
<span class="aiz-side-nav-text">{{ translate('Auction Product Orders') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
@endif
|
||||
|
||||
@if (addon_is_activated('pos_system') &&
|
||||
get_setting('pos_activation_for_seller') != null &&
|
||||
get_setting('pos_activation_for_seller') != 0)
|
||||
<li class="aiz-side-nav-item">
|
||||
<a href="#" class="aiz-side-nav-link">
|
||||
<i class="las la-tasks aiz-side-nav-icon"></i>
|
||||
<span class="aiz-side-nav-text">{{ translate('POS System') }}</span>
|
||||
@if (env('DEMO_MODE') == 'On')
|
||||
<span class="badge badge-inline badge-danger">Addon</span>
|
||||
@endif
|
||||
<span class="aiz-side-nav-arrow"></span>
|
||||
</a>
|
||||
<ul class="aiz-side-nav-list level-2">
|
||||
<li class="aiz-side-nav-item">
|
||||
<a href="{{ route('poin-of-sales.seller_index') }}"
|
||||
class="aiz-side-nav-link {{ areActiveRoutes(['poin-of-sales.seller_index']) }}">
|
||||
<i class="las la-fax aiz-side-nav-icon"></i>
|
||||
<span class="aiz-side-nav-text">{{ translate('POS Manager') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="aiz-side-nav-item">
|
||||
<a href="{{ route('pos.configuration') }}" class="aiz-side-nav-link">
|
||||
<span class="aiz-side-nav-text">{{ translate('POS Configuration') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
@endif
|
||||
|
||||
<li class="aiz-side-nav-item">
|
||||
<a href="{{ route('seller.orders.index') }}"
|
||||
class="aiz-side-nav-link {{ areActiveRoutes(['seller.orders.index', 'seller.orders.show']) }}">
|
||||
<i class="las la-money-bill aiz-side-nav-icon"></i>
|
||||
<span class="aiz-side-nav-text">{{ translate('Orders') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@if (addon_is_activated('refund_request'))
|
||||
<li class="aiz-side-nav-item">
|
||||
<a href="{{ route('seller.vendor_refund_request') }}"
|
||||
class="aiz-side-nav-link {{ areActiveRoutes(['seller.vendor_refund_request', 'reason_show']) }}">
|
||||
<i class="las la-backward aiz-side-nav-icon"></i>
|
||||
<span class="aiz-side-nav-text">{{ translate('Received Refund Request') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@endif
|
||||
|
||||
|
||||
<li class="aiz-side-nav-item">
|
||||
<a href="{{ route('seller.shop.index') }}"
|
||||
class="aiz-side-nav-link {{ areActiveRoutes(['seller.shop.index']) }}">
|
||||
<i class="las la-cog aiz-side-nav-icon"></i>
|
||||
<span class="aiz-side-nav-text">{{ translate('Shop Setting') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="aiz-side-nav-item">
|
||||
<a href="{{ route('seller.payments.index') }}"
|
||||
class="aiz-side-nav-link {{ areActiveRoutes(['seller.payments.index']) }}">
|
||||
<i class="las la-history aiz-side-nav-icon"></i>
|
||||
<span class="aiz-side-nav-text">{{ translate('Payment History') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="aiz-side-nav-item">
|
||||
<a href="{{ route('seller.money_withdraw_requests.index') }}"
|
||||
class="aiz-side-nav-link {{ areActiveRoutes(['seller.money_withdraw_requests.index']) }}">
|
||||
<i class="las la-money-bill-wave-alt aiz-side-nav-icon"></i>
|
||||
<span class="aiz-side-nav-text">{{ translate('Money Withdraw') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="aiz-side-nav-item">
|
||||
<a href="{{ route('seller.commission-history.index') }}" class="aiz-side-nav-link">
|
||||
<i class="las la-file-alt aiz-side-nav-icon"></i>
|
||||
<span class="aiz-side-nav-text">{{ translate('Commission History') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@if (get_setting('conversation_system') == 1)
|
||||
@php
|
||||
$conversation = \App\Models\Conversation::where('sender_id', Auth::user()->id)
|
||||
->where('sender_viewed', 0)
|
||||
->get();
|
||||
@endphp
|
||||
<li class="aiz-side-nav-item">
|
||||
<a href="{{ route('seller.conversations.index') }}"
|
||||
class="aiz-side-nav-link {{ areActiveRoutes(['seller.conversations.index', 'seller.conversations.show']) }}">
|
||||
<i class="las la-comment aiz-side-nav-icon"></i>
|
||||
<span class="aiz-side-nav-text">{{ translate('Conversations') }}</span>
|
||||
@if (count($conversation) > 0)
|
||||
<span class="badge badge-success">({{ count($conversation) }})</span>
|
||||
@endif
|
||||
</a>
|
||||
</li>
|
||||
@endif
|
||||
|
||||
@if (get_setting('product_query_activation') == 1)
|
||||
<li class="aiz-side-nav-item">
|
||||
<a href="{{ route('seller.product_query.index') }}"
|
||||
class="aiz-side-nav-link {{ areActiveRoutes(['seller.product_query.index']) }}">
|
||||
<i class="las la-question-circle aiz-side-nav-icon"></i>
|
||||
<span class="aiz-side-nav-text">{{ translate('Product Queries') }}</span>
|
||||
|
||||
</a>
|
||||
</li>
|
||||
@endif
|
||||
|
||||
@php
|
||||
$support_ticket = DB::table('tickets')
|
||||
->where('client_viewed', 0)
|
||||
->where('user_id', Auth::user()->id)
|
||||
->count();
|
||||
@endphp
|
||||
<li class="aiz-side-nav-item">
|
||||
<a href="{{ route('seller.support_ticket.index') }}"
|
||||
class="aiz-side-nav-link {{ areActiveRoutes(['seller.support_ticket.index']) }}">
|
||||
<i class="las la-atom aiz-side-nav-icon"></i>
|
||||
<span class="aiz-side-nav-text">{{ translate('Support Ticket') }}</span>
|
||||
@if ($support_ticket > 0)
|
||||
<span class="badge badge-inline badge-success">{{ $support_ticket }}</span>
|
||||
@endif
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul><!-- .aiz-side-nav -->
|
||||
</div><!-- .aiz-side-nav-wrap -->
|
||||
</div><!-- .aiz-sidebar -->
|
||||
<div class="aiz-sidebar-overlay"></div>
|
||||
</div><!-- .aiz-sidebar -->
|
||||
148
desarrollo2/resources/views/seller/layouts/app.blade.php
Normal file
148
desarrollo2/resources/views/seller/layouts/app.blade.php
Normal file
@@ -0,0 +1,148 @@
|
||||
<!doctype html>
|
||||
@if(\App\Models\Language::where('code', Session::get('locale', Config::get('app.locale')))->first()->rtl == 1)
|
||||
<html dir="rtl" lang="{{ str_replace('_', '-', app()->getLocale()) }}">
|
||||
@else
|
||||
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
|
||||
@endif
|
||||
<head>
|
||||
<meta name="csrf-token" content="{{ csrf_token() }}">
|
||||
<meta name="app-url" content="{{ getBaseURL() }}">
|
||||
<meta name="file-base-url" content="{{ getFileBaseURL() }}">
|
||||
|
||||
<!-- Required meta tags -->
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
|
||||
<!-- Favicon -->
|
||||
<link rel="icon" href="{{ uploaded_asset(get_setting('site_icon')) }}">
|
||||
<title>{{ get_setting('website_name').' | '.get_setting('site_motto') }}</title>
|
||||
|
||||
<!-- google font -->
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Poppins:300,400,500,600,700">
|
||||
|
||||
<!-- aiz core css -->
|
||||
<link rel="stylesheet" href="{{ static_asset('assets/css/vendors.css') }}">
|
||||
@if(\App\Models\Language::where('code', Session::get('locale', Config::get('app.locale')))->first()->rtl == 1)
|
||||
<link rel="stylesheet" href="{{ static_asset('assets/css/bootstrap-rtl.min.css') }}">
|
||||
@endif
|
||||
<link rel="stylesheet" href="{{ static_asset('assets/css/aiz-seller.css') }}">
|
||||
|
||||
<style>
|
||||
body {
|
||||
font-size: 12px;
|
||||
}
|
||||
#map{
|
||||
width: 100%;
|
||||
height: 250px;
|
||||
}
|
||||
#edit_map{
|
||||
width: 100%;
|
||||
height: 250px;
|
||||
}
|
||||
.pac-container{
|
||||
z-index: 100000;
|
||||
}
|
||||
|
||||
</style>
|
||||
<script>
|
||||
var AIZ = AIZ || {};
|
||||
AIZ.local = {
|
||||
nothing_selected: '{!! translate('Nothing selected', null, true) !!}',
|
||||
nothing_found: '{!! translate('Nothing found', null, true) !!}',
|
||||
choose_file: '{{ translate('Choose file') }}',
|
||||
file_selected: '{{ translate('File selected') }}',
|
||||
files_selected: '{{ translate('Files selected') }}',
|
||||
add_more_files: '{{ translate('Add more files') }}',
|
||||
adding_more_files: '{{ translate('Adding more files') }}',
|
||||
drop_files_here_paste_or: '{{ translate('Drop files here, paste or') }}',
|
||||
browse: '{{ translate('Browse') }}',
|
||||
upload_complete: '{{ translate('Upload complete') }}',
|
||||
upload_paused: '{{ translate('Upload paused') }}',
|
||||
resume_upload: '{{ translate('Resume upload') }}',
|
||||
pause_upload: '{{ translate('Pause upload') }}',
|
||||
retry_upload: '{{ translate('Retry upload') }}',
|
||||
cancel_upload: '{{ translate('Cancel upload') }}',
|
||||
uploading: '{{ translate('Uploading') }}',
|
||||
processing: '{{ translate('Processing') }}',
|
||||
complete: '{{ translate('Complete') }}',
|
||||
file: '{{ translate('File') }}',
|
||||
files: '{{ translate('Files') }}',
|
||||
}
|
||||
</script>
|
||||
|
||||
</head>
|
||||
<body class="">
|
||||
|
||||
<div class="aiz-main-wrapper">
|
||||
@include('seller.inc.seller_sidenav')
|
||||
<div class="aiz-content-wrapper">
|
||||
@include('seller.inc.seller_nav')
|
||||
<div class="aiz-main-content">
|
||||
<div class="px-15px px-lg-25px">
|
||||
@yield('panel_content')
|
||||
</div>
|
||||
<div class="bg-white text-center py-3 px-15px px-lg-25px mt-auto border-sm-top">
|
||||
<p class="mb-0">© {{ get_setting('site_name') }} v{{ get_setting('current_version') }}</p>
|
||||
</div>
|
||||
</div><!-- .aiz-main-content -->
|
||||
</div><!-- .aiz-content-wrapper -->
|
||||
</div><!-- .aiz-main-wrapper -->
|
||||
|
||||
@yield('modal')
|
||||
|
||||
|
||||
<script src="{{ static_asset('assets/js/vendors.js') }}" ></script>
|
||||
<script src="{{ static_asset('assets/js/aiz-core.js') }}" ></script>
|
||||
|
||||
@yield('script')
|
||||
|
||||
<script type="text/javascript">
|
||||
@foreach (session('flash_notification', collect())->toArray() as $message)
|
||||
AIZ.plugins.notify('{{ $message['level'] }}', '{{ $message['message'] }}');
|
||||
@endforeach
|
||||
|
||||
|
||||
if ($('#lang-change').length > 0) {
|
||||
$('#lang-change .dropdown-menu a').each(function() {
|
||||
$(this).on('click', function(e){
|
||||
e.preventDefault();
|
||||
var $this = $(this);
|
||||
var locale = $this.data('flag');
|
||||
$.post('{{ route('language.change') }}',{_token:'{{ csrf_token() }}', locale:locale}, function(data){
|
||||
location.reload();
|
||||
});
|
||||
|
||||
});
|
||||
});
|
||||
}
|
||||
function menuSearch(){
|
||||
var filter, item;
|
||||
filter = $("#menu-search").val().toUpperCase();
|
||||
items = $("#main-menu").find("a");
|
||||
items = items.filter(function(i,item){
|
||||
if($(item).find(".aiz-side-nav-text")[0].innerText.toUpperCase().indexOf(filter) > -1 && $(item).attr('href') !== '#'){
|
||||
return item;
|
||||
}
|
||||
});
|
||||
|
||||
if(filter !== ''){
|
||||
$("#main-menu").addClass('d-none');
|
||||
$("#search-menu").html('')
|
||||
if(items.length > 0){
|
||||
for (i = 0; i < items.length; i++) {
|
||||
const text = $(items[i]).find(".aiz-side-nav-text")[0].innerText;
|
||||
const link = $(items[i]).attr('href');
|
||||
$("#search-menu").append(`<li class="aiz-side-nav-item"><a href="${link}" class="aiz-side-nav-link"><i class="las la-ellipsis-h aiz-side-nav-icon"></i><span>${text}</span></a></li`);
|
||||
}
|
||||
}else{
|
||||
$("#search-menu").html(`<li class="aiz-side-nav-item"><span class="text-center text-muted d-block">{{ translate('Nothing Found') }}</span></li>`);
|
||||
}
|
||||
}else{
|
||||
$("#main-menu").removeClass('d-none');
|
||||
$("#search-menu").html('')
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,135 @@
|
||||
@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('Money Withdraw') }}</h1>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row gutters-10">
|
||||
<div class="col-md-4 mb-3 ml-auto" >
|
||||
<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-dollar-sign la-2x text-white"></i>
|
||||
</span>
|
||||
<div class="px-3 pt-3 pb-3">
|
||||
<div class="h4 fw-700 text-center">{{ single_price(Auth::user()->shop->admin_to_pay) }}</div>
|
||||
<div class="opacity-50 text-center">{{ translate('Pending Balance') }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4 mb-3 mr-auto" >
|
||||
<div class="p-3 rounded mb-3 c-pointer text-center bg-white shadow-sm hov-shadow-lg has-transition" onclick="show_request_modal()">
|
||||
<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('Send Withdraw Request') }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{ translate('Withdraw Request history')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table aiz-table mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>{{ translate('Date') }}</th>
|
||||
<th>{{ translate('Amount')}}</th>
|
||||
<th data-breakpoints="lg">{{ translate('Status')}}</th>
|
||||
<th data-breakpoints="lg" width="60%">{{ translate('Message')}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($seller_withdraw_requests as $key => $seller_withdraw_request)
|
||||
<tr>
|
||||
<td>{{ $key+1 }}</td>
|
||||
<td>{{ date('d-m-Y', strtotime($seller_withdraw_request->created_at)) }}</td>
|
||||
<td>{{ single_price($seller_withdraw_request->amount) }}</td>
|
||||
<td>
|
||||
@if ($seller_withdraw_request->status == 1)
|
||||
<span class=" badge badge-inline badge-success" >{{ translate('Paid')}}</span>
|
||||
@else
|
||||
<span class=" badge badge-inline badge-info" >{{ translate('Pending')}}</span>
|
||||
@endif
|
||||
</td>
|
||||
<td>
|
||||
{{ $seller_withdraw_request->message }}
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="aiz-pagination">
|
||||
{{ $seller_withdraw_requests->links() }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('modal')
|
||||
<div class="modal fade" id="request_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('Send A Withdraw Request') }}</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
@if (Auth::user()->shop->admin_to_pay > 5)
|
||||
<form class="" action="{{ route('seller.money_withdraw_request.store') }}" method="post">
|
||||
@csrf
|
||||
<div class="modal-body gry-bg px-3 pt-3">
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
<label>{{ translate('Amount')}} <span class="text-danger">*</span></label>
|
||||
</div>
|
||||
<div class="col-md-9">
|
||||
<input type="number" lang="en" class="form-control mb-3" name="amount" min="{{ get_setting('minimum_seller_amount_withdraw') }}" max="{{ Auth::user()->shop->admin_to_pay }}" placeholder="{{ translate('Amount') }}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
<label>{{ translate('Message')}}</label>
|
||||
</div>
|
||||
<div class="col-md-9">
|
||||
<textarea name="message" rows="8" class="form-control mb-3"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group text-right">
|
||||
<button type="submit" class="btn btn-sm btn-primary">{{translate('Send')}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@else
|
||||
<div class="modal-body gry-bg px-3 pt-3">
|
||||
<div class="p-5 heading-3">
|
||||
{{ translate('You do not have enough balance to send withdraw request') }}
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
<script type="text/javascript">
|
||||
function show_request_modal(){
|
||||
$('#request_modal').modal('show');
|
||||
}
|
||||
|
||||
function show_message_modal(id){
|
||||
$.post('{{ route('withdraw_request.message_modal') }}',{_token:'{{ @csrf_token() }}', id:id}, function(data){
|
||||
$('#message_modal .modal-content').html(data);
|
||||
$('#message_modal').modal('show', {backdrop: 'static'});
|
||||
});
|
||||
}
|
||||
</script>
|
||||
@endsection
|
||||
@@ -0,0 +1,82 @@
|
||||
@extends('seller.layouts.app')
|
||||
|
||||
@section('panel_content')
|
||||
|
||||
<div class="card">
|
||||
<form class="" id="sort_customers" action="" method="GET">
|
||||
<div class="card-header row gutters-5">
|
||||
<div class="col">
|
||||
<h5 class="mb-0 h6">{{translate('Notifications')}}</h5>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<ul class="list-group list-group-flush">
|
||||
@forelse($notifications as $notification)
|
||||
@if($notification->type == 'App\Notifications\OrderNotification')
|
||||
<li class="list-group-item d-flex justify-content-between align-items- py-3">
|
||||
<div class="media text-inherit">
|
||||
<div class="media-body">
|
||||
<p class="mb-1 text-truncate-2">
|
||||
{{ translate('Order: ') }}
|
||||
<a href="{{ route('seller.orders.show', encrypt($notification->data['order_id'])) }}">
|
||||
{{ $notification->data['order_code'] }}
|
||||
</a>
|
||||
{{ translate(' has been '. ucfirst(str_replace('_', ' ', $notification->data['status']))) }}
|
||||
</p>
|
||||
<small class="text-muted">
|
||||
{{ date("F j Y, g:i a", strtotime($notification->created_at)) }}
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
@endif
|
||||
|
||||
@empty
|
||||
<li class="list-group-item">
|
||||
<div class="py-4 text-center fs-16">{{ translate('No notification found') }}</div>
|
||||
</li>
|
||||
@endforelse
|
||||
</ul>
|
||||
|
||||
{{ $notifications->links() }}
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
@section('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 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();
|
||||
});
|
||||
}
|
||||
function sort_orders(el){
|
||||
$('#sort_orders').submit();
|
||||
}
|
||||
</script>
|
||||
@endsection
|
||||
|
||||
152
desarrollo2/resources/views/seller/orders/index.blade.php
Normal file
152
desarrollo2/resources/views/seller/orders/index.blade.php
Normal file
@@ -0,0 +1,152 @@
|
||||
@extends('seller.layouts.app')
|
||||
|
||||
@section('panel_content')
|
||||
|
||||
<div class="card">
|
||||
<form 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('Orders') }}</h5>
|
||||
</div>
|
||||
<div class="col-md-3 ml-auto">
|
||||
<select class="form-control aiz-selectpicker"
|
||||
data-placeholder="{{ translate('Filter by Payment Status') }}" name="payment_status"
|
||||
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('Unpaid') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="col-md-3 ml-auto">
|
||||
<select class="form-control aiz-selectpicker"
|
||||
data-placeholder="{{ translate('Filter by Payment Status') }}" name="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-md-3">
|
||||
<div class="from-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>
|
||||
</form>
|
||||
|
||||
@if (count($orders) > 0)
|
||||
<div class="card-body p-3">
|
||||
<table class="table aiz-table mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>{{ translate('Order Code') }}</th>
|
||||
<th data-breakpoints="lg">{{ translate('Num. of Products') }}</th>
|
||||
<th data-breakpoints="lg">{{ translate('Customer') }}</th>
|
||||
<th data-breakpoints="md">{{ translate('Amount') }}</th>
|
||||
<th data-breakpoints="lg">{{ translate('Delivery Status') }}</th>
|
||||
<th>{{ translate('Payment Status') }}</th>
|
||||
<th class="text-right">{{ 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 }}
|
||||
</td>
|
||||
<td>
|
||||
<a href="#{{ $order->code }}"
|
||||
onclick="show_order_details({{ $order->id }})">{{ $order->code }}</a>
|
||||
|
||||
@if (addon_is_activated('pos_system') && $order->order_from == 'pos')
|
||||
<span class="badge badge-inline badge-danger">{{ translate('POS') }}</span>
|
||||
@endif
|
||||
</td>
|
||||
<td>
|
||||
{{ count($order->orderDetails->where('seller_id', Auth::user()->id)) }}
|
||||
</td>
|
||||
<td>
|
||||
@if ($order->user_id != null)
|
||||
{{ optional($order->user)->name }}
|
||||
@else
|
||||
{{ translate('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>
|
||||
@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>
|
||||
<td class="text-right">
|
||||
@if (addon_is_activated('pos_system') && $order->order_from == 'pos')
|
||||
<a class="btn btn-soft-success btn-icon btn-circle btn-sm"
|
||||
href="{{ route('seller.invoice.thermal_printer', $order->id) }}" target="_blank"
|
||||
title="{{ translate('Thermal Printer') }}">
|
||||
<i class="las la-print"></i>
|
||||
</a>
|
||||
@endif
|
||||
<a href="{{ route('seller.orders.show', encrypt($order->id)) }}"
|
||||
class="btn btn-soft-info btn-icon btn-circle btn-sm"
|
||||
title="{{ translate('Order Details') }}">
|
||||
<i class="las la-eye"></i>
|
||||
</a>
|
||||
<a href="{{ route('seller.invoice.download', $order->id) }}"
|
||||
class="btn btn-soft-warning btn-icon btn-circle btn-sm"
|
||||
title="{{ translate('Download Invoice') }}">
|
||||
<i class="las la-download"></i>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="aiz-pagination">
|
||||
{{ $orders->links() }}
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
<script type="text/javascript">
|
||||
function sort_orders(el) {
|
||||
$('#sort_orders').submit();
|
||||
}
|
||||
</script>
|
||||
@endsection
|
||||
302
desarrollo2/resources/views/seller/orders/show.blade.php
Normal file
302
desarrollo2/resources/views/seller/orders/show.blade.php
Normal file
@@ -0,0 +1,302 @@
|
||||
@extends('seller.layouts.app')
|
||||
|
||||
@section('panel_content')
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h1 class="h2 fs-16 mb-0">{{ translate('Order Details') }}</h1>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<div class="row gutters-5">
|
||||
<div class="col text-md-left text-center">
|
||||
</div>
|
||||
@php
|
||||
$delivery_status = $order->delivery_status;
|
||||
$payment_status = $order->orderDetails->where('seller_id', Auth::user()->id)->first()->payment_status;
|
||||
@endphp
|
||||
@if (get_setting('product_manage_by_admin') == 0)
|
||||
<div class="col-md-3 ml-auto">
|
||||
<label for="update_payment_status">{{ translate('Payment Status') }}</label>
|
||||
@if (($order->payment_type == 'cash_on_delivery' || (addon_is_activated('offline_payment') == 1 && $order->manual_payment == 1)) && $payment_status == 'unpaid')
|
||||
<select class="form-control aiz-selectpicker" data-minimum-results-for-search="Infinity"
|
||||
id="update_payment_status">
|
||||
<option value="unpaid" @if ($payment_status == 'unpaid') selected @endif>
|
||||
{{ translate('Unpaid') }}</option>
|
||||
<option value="paid" @if ($payment_status == 'paid') selected @endif>
|
||||
{{ translate('Paid') }}</option>
|
||||
</select>
|
||||
@else
|
||||
<input type="text" class="form-control" value="{{ translate($payment_status) }}" disabled>
|
||||
@endif
|
||||
</div>
|
||||
<div class="col-md-3 ml-auto">
|
||||
<label for="update_delivery_status">{{ translate('Delivery Status') }}</label>
|
||||
@if ($delivery_status != 'delivered' && $delivery_status != 'cancelled')
|
||||
<select class="form-control aiz-selectpicker" data-minimum-results-for-search="Infinity"
|
||||
id="update_delivery_status">
|
||||
<option value="pending" @if ($delivery_status == 'pending') selected @endif>
|
||||
{{ translate('Pending') }}</option>
|
||||
<option value="confirmed" @if ($delivery_status == 'confirmed') selected @endif>
|
||||
{{ translate('Confirmed') }}</option>
|
||||
<option value="picked_up" @if ($delivery_status == 'picked_up') selected @endif>
|
||||
{{ translate('Picked Up') }}</option>
|
||||
<option value="on_the_way" @if ($delivery_status == 'on_the_way') selected @endif>
|
||||
{{ translate('On The Way') }}</option>
|
||||
<option value="delivered" @if ($delivery_status == 'delivered') selected @endif>
|
||||
{{ translate('Delivered') }}</option>
|
||||
<option value="cancelled" @if ($delivery_status == 'cancelled') selected @endif>
|
||||
{{ translate('Cancel') }}</option>
|
||||
</select>
|
||||
@else
|
||||
<input type="text" class="form-control" value="{{ translate(ucfirst(str_replace('_', ' ', $delivery_status))) }}" disabled>
|
||||
@endif
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
<div class="row gutters-5 mt-2">
|
||||
<div class="col text-md-left text-center">
|
||||
@if(json_decode($order->shipping_address))
|
||||
<address>
|
||||
<strong class="text-main">
|
||||
{{ json_decode($order->shipping_address)->name }}
|
||||
</strong><br>
|
||||
{{ json_decode($order->shipping_address)->email }}<br>
|
||||
{{ json_decode($order->shipping_address)->phone }}<br>
|
||||
{{ json_decode($order->shipping_address)->address }}, {{ json_decode($order->shipping_address)->city }}, @if(isset(json_decode($order->shipping_address)->state)) {{ json_decode($order->shipping_address)->state }} - @endif {{ json_decode($order->shipping_address)->postal_code }}<br>
|
||||
{{ json_decode($order->shipping_address)->country }}
|
||||
</address>
|
||||
@else
|
||||
<address>
|
||||
<strong class="text-main">
|
||||
{{ $order->user->name }}
|
||||
</strong><br>
|
||||
{{ $order->user->email }}<br>
|
||||
{{ $order->user->phone }}<br>
|
||||
</address>
|
||||
@endif
|
||||
@if ($order->manual_payment && is_array(json_decode($order->manual_payment_data, true)))
|
||||
<br>
|
||||
<strong class="text-main">{{ translate('Payment Information') }}</strong><br>
|
||||
{{ translate('Name') }}: {{ json_decode($order->manual_payment_data)->name }},
|
||||
{{ translate('Amount') }}:
|
||||
{{ single_price(json_decode($order->manual_payment_data)->amount) }},
|
||||
{{ translate('TRX ID') }}: {{ json_decode($order->manual_payment_data)->trx_id }}
|
||||
<br>
|
||||
<a href="{{ uploaded_asset(json_decode($order->manual_payment_data)->photo) }}"
|
||||
target="_blank"><img
|
||||
src="{{ uploaded_asset(json_decode($order->manual_payment_data)->photo) }}" alt=""
|
||||
height="100"></a>
|
||||
@endif
|
||||
</div>
|
||||
<div class="col-md-4 ml-auto">
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="text-main text-bold">{{ translate('Order #') }}</td>
|
||||
<td class="text-info text-bold text-right">{{ $order->code }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="text-main text-bold">{{ translate('Order Status') }}</td>
|
||||
<td class="text-right">
|
||||
@if ($delivery_status == 'delivered')
|
||||
<span
|
||||
class="badge badge-inline badge-success">{{ translate(ucfirst(str_replace('_', ' ', $delivery_status))) }}</span>
|
||||
@else
|
||||
<span
|
||||
class="badge badge-inline badge-info">{{ translate(ucfirst(str_replace('_', ' ', $delivery_status))) }}</span>
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="text-main text-bold">{{ translate('Order Date') }}</td>
|
||||
<td class="text-right">{{ date('d-m-Y h:i A', $order->date) }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="text-main text-bold">{{ translate('Total amount') }}</td>
|
||||
<td class="text-right">
|
||||
{{ single_price($order->grand_total) }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="text-main text-bold">{{ translate('Payment method') }}</td>
|
||||
<td class="text-right">
|
||||
{{ translate(ucfirst(str_replace('_', ' ', $order->payment_type))) }}</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="text-main text-bold">{{ translate('Additional Info') }}</td>
|
||||
<td class="text-right">{{ $order->additional_info }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr class="new-section-sm bord-no">
|
||||
<div class="row">
|
||||
<div class="col-lg-12 table-responsive">
|
||||
<table class="table-bordered aiz-table invoice-summary table">
|
||||
<thead>
|
||||
<tr class="bg-trans-dark">
|
||||
<th data-breakpoints="lg" class="min-col">#</th>
|
||||
<th width="10%">{{ translate('Photo') }}</th>
|
||||
<th class="text-uppercase">{{ translate('Description') }}</th>
|
||||
<th data-breakpoints="lg" class="text-uppercase">{{ translate('Delivery Type') }}</th>
|
||||
<th data-breakpoints="lg" class="min-col text-uppercase text-center">
|
||||
{{ translate('Qty') }}
|
||||
</th>
|
||||
<th data-breakpoints="lg" class="min-col text-uppercase text-center">
|
||||
{{ translate('Price') }}</th>
|
||||
<th data-breakpoints="lg" class="min-col text-uppercase text-right">
|
||||
{{ translate('Total') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($order->orderDetails as $key => $orderDetail)
|
||||
<tr>
|
||||
<td>{{ $key + 1 }}</td>
|
||||
<td>
|
||||
@if ($orderDetail->product != null && $orderDetail->product->auction_product == 0)
|
||||
<a href="{{ route('product', $orderDetail->product->slug) }}"
|
||||
target="_blank"><img height="50"
|
||||
src="{{ uploaded_asset($orderDetail->product->thumbnail_img) }}"></a>
|
||||
@elseif ($orderDetail->product != null && $orderDetail->product->auction_product == 1)
|
||||
<a href="{{ route('auction-product', $orderDetail->product->slug) }}"
|
||||
target="_blank"><img height="50"
|
||||
src="{{ uploaded_asset($orderDetail->product->thumbnail_img) }}"></a>
|
||||
@else
|
||||
<strong>{{ translate('N/A') }}</strong>
|
||||
@endif
|
||||
</td>
|
||||
<td>
|
||||
@if ($orderDetail->product != null && $orderDetail->product->auction_product == 0)
|
||||
<strong><a href="{{ route('product', $orderDetail->product->slug) }}"
|
||||
target="_blank"
|
||||
class="text-muted">{{ $orderDetail->product->getTranslation('name') }}</a></strong>
|
||||
<small>{{ $orderDetail->variation }}</small>
|
||||
@elseif ($orderDetail->product != null && $orderDetail->product->auction_product == 1)
|
||||
<strong><a href="{{ route('auction-product', $orderDetail->product->slug) }}"
|
||||
target="_blank"
|
||||
class="text-muted">{{ $orderDetail->product->getTranslation('name') }}</a></strong>
|
||||
@else
|
||||
<strong>{{ translate('Product Unavailable') }}</strong>
|
||||
@endif
|
||||
</td>
|
||||
<td>
|
||||
@if ($order->shipping_type != null && $order->shipping_type == 'home_delivery')
|
||||
{{ translate('Home Delivery') }}
|
||||
@elseif ($order->shipping_type == 'pickup_point')
|
||||
@if ($order->pickup_point != null)
|
||||
{{ $order->pickup_point->getTranslation('name') }}
|
||||
({{ translate('Pickup Point') }})
|
||||
@else
|
||||
{{ translate('Pickup Point') }}
|
||||
@endif
|
||||
@elseif($order->shipping_type == 'carrier')
|
||||
@if ($order->carrier != null)
|
||||
{{ $order->carrier->name }} ({{ translate('Carrier') }})
|
||||
<br>
|
||||
{{ translate('Transit Time').' - '.$order->carrier->transit_time }}
|
||||
@else
|
||||
{{ translate('Carrier') }}
|
||||
@endif
|
||||
@endif
|
||||
</td>
|
||||
<td class="text-center">{{ $orderDetail->quantity }}</td>
|
||||
<td class="text-center">
|
||||
{{ single_price($orderDetail->price / $orderDetail->quantity) }}</td>
|
||||
<td class="text-center">{{ single_price($orderDetail->price) }}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearfix float-right">
|
||||
<table class="table">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<strong class="text-muted">{{ translate('Sub Total') }} :</strong>
|
||||
</td>
|
||||
<td>
|
||||
{{ single_price($order->orderDetails->sum('price')) }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<strong class="text-muted">{{ translate('Tax') }} :</strong>
|
||||
</td>
|
||||
<td>
|
||||
{{ single_price($order->orderDetails->sum('tax')) }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<strong class="text-muted">{{ translate('Shipping') }} :</strong>
|
||||
</td>
|
||||
<td>
|
||||
{{ single_price($order->orderDetails->sum('shipping_cost')) }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<strong class="text-muted">{{ translate('Coupon') }} :</strong>
|
||||
</td>
|
||||
<td>
|
||||
{{ single_price($order->coupon_discount) }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<strong class="text-muted">{{ translate('TOTAL') }} :</strong>
|
||||
</td>
|
||||
<td class="text-muted h5">
|
||||
{{ single_price($order->grand_total) }}
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="no-print text-right">
|
||||
<a href="{{ route('seller.invoice.download', $order->id) }}" type="button"
|
||||
class="btn btn-icon btn-light"><i class="las la-print"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
<script type="text/javascript">
|
||||
$('#update_delivery_status').on('change', function() {
|
||||
var order_id = {{ $order->id }};
|
||||
var status = $('#update_delivery_status').val();
|
||||
$.post('{{ route('seller.orders.update_delivery_status') }}', {
|
||||
_token: '{{ @csrf_token() }}',
|
||||
order_id: order_id,
|
||||
status: status
|
||||
}, function(data) {
|
||||
$('#order_details').modal('hide');
|
||||
AIZ.plugins.notify('success', '{{ translate('Order status has been updated') }}');
|
||||
location.reload().setTimeOut(500);
|
||||
});
|
||||
});
|
||||
|
||||
$('#update_payment_status').on('change', function() {
|
||||
var order_id = {{ $order->id }};
|
||||
var status = $('#update_payment_status').val();
|
||||
$.post('{{ route('seller.orders.update_payment_status') }}', {
|
||||
_token: '{{ @csrf_token() }}',
|
||||
order_id: order_id,
|
||||
status: status
|
||||
}, function(data) {
|
||||
$('#order_details').modal('hide');
|
||||
//console.log(data);
|
||||
AIZ.plugins.notify('success', '{{ translate('Payment status has been updated') }}');
|
||||
location.reload().setTimeOut(500);
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
276
desarrollo2/resources/views/seller/orders/show_backup.blade.php
Normal file
276
desarrollo2/resources/views/seller/orders/show_backup.blade.php
Normal file
@@ -0,0 +1,276 @@
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title strong-600 heading-5">{{ translate('Order id') }}: {{ $order->code }}</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
@php
|
||||
$status = $order->delivery_status;
|
||||
$payment_status = $order->orderDetails->where('seller_id', Auth::user()->id)->first()->payment_status;
|
||||
@endphp
|
||||
|
||||
<div class="modal-body gry-bg px-3 pt-0">
|
||||
@if (get_setting('product_manage_by_admin') == 0)
|
||||
<div class="row mt-5">
|
||||
@if ($order->payment_type == 'cash_on_delivery')
|
||||
<div class="offset-lg-2 col-lg-4 col-sm-6">
|
||||
<div class="form-group">
|
||||
<select class="form-control aiz-selectpicker form-control-sm"
|
||||
data-minimum-results-for-search="Infinity" id="update_payment_status">
|
||||
<option value="unpaid" @if ($payment_status == 'unpaid') selected @endif>
|
||||
{{ translate('Unpaid') }}</option>
|
||||
<option value="paid" @if ($payment_status == 'paid') selected @endif>
|
||||
{{ translate('Paid') }}</option>
|
||||
</select>
|
||||
<label>{{ translate('Payment Status') }}</label>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
<div class="col-lg-4 col-sm-6">
|
||||
<div class="form-group">
|
||||
<select class="form-control aiz-selectpicker form-control-sm"
|
||||
data-minimum-results-for-search="Infinity" id="update_delivery_status">
|
||||
<option value="pending" @if ($status == 'pending') selected @endif>
|
||||
{{ translate('Pending') }}</option>
|
||||
<option value="confirmed" @if ($status == 'confirmed') selected @endif>
|
||||
{{ translate('Confirmed') }}</option>
|
||||
<option value="picked_up" @if ($status == 'picked_up') selected @endif>
|
||||
{{ translate('Picked Up') }}</option>
|
||||
<option value="on_the_way" @if ($status == 'on_the_way') selected @endif>
|
||||
{{ translate('On The Way') }}</option>
|
||||
<option value="delivered" @if ($status == 'delivered') selected @endif>
|
||||
{{ translate('Delivered') }}</option>
|
||||
<option value="cancelled" @if ($status == 'cancelled') selected @endif>
|
||||
{{ translate('Cancel') }}</option>
|
||||
</select>
|
||||
<label>{{ translate('Delivery Status') }}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="card mt-4">
|
||||
<div class="card-header">
|
||||
<b class="fs-15">{{ translate('Order Summary') }}</b>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-lg-6">
|
||||
<table class="table-borderless table">
|
||||
<tr>
|
||||
<td class="w-50 fw-600">{{ translate('Order Code') }}:</td>
|
||||
<td>{{ $order->code }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="w-50 fw-600">{{ translate('Customer') }}:</td>
|
||||
<td>{{ json_decode($order->shipping_address)->name }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="w-50 fw-600">{{ translate('Email') }}:</td>
|
||||
@if ($order->user_id != null)
|
||||
<td>{{ $order->user->email }}</td>
|
||||
@endif
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="w-50 fw-600">{{ translate('Shipping address') }}:</td>
|
||||
<td>{{ json_decode($order->shipping_address)->address }},
|
||||
{{ json_decode($order->shipping_address)->city }},
|
||||
{{ json_decode($order->shipping_address)->postal_code }},
|
||||
{{ json_decode($order->shipping_address)->country }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<table class="table-borderless table">
|
||||
<tr>
|
||||
<td class="w-50 fw-600">{{ translate('Order date') }}:</td>
|
||||
<td>{{ date('d-m-Y H:i A', $order->date) }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="w-50 fw-600">{{ translate('Order status') }}:</td>
|
||||
<td>{{ translate($status) }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="w-50 fw-600">{{ translate('Total order amount') }}:</td>
|
||||
<td>{{ single_price($order->grand_total) }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="w-50 fw-600">{{ translate('Contact') }}:</td>
|
||||
<td>{{ json_decode($order->shipping_address)->phone }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="w-50 fw-600">{{ translate('Payment method') }}:</td>
|
||||
<td>{{ translate(ucfirst(str_replace('_', ' ', $order->payment_type))) }}</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="text-main text-bold">{{ translate('Additional Info') }}</td>
|
||||
<td class="text-right">{{ $order->additional_info }}</td>
|
||||
</tr>
|
||||
@if ($order->tracking_code)
|
||||
<tr>
|
||||
<td class="w-50 fw-600">{{ translate('Tracking code') }}:</td>
|
||||
<td>{{ $order->tracking_code }}</td>
|
||||
</tr>
|
||||
@endif
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-9">
|
||||
<div class="card mt-4">
|
||||
<div class="card-header">
|
||||
<b class="fs-15">{{ translate('Order Details') }}</b>
|
||||
</div>
|
||||
<div class="card-body pb-0">
|
||||
<table class="table-borderless table-responsive table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th width="40%">{{ translate('Product') }}</th>
|
||||
<th>{{ translate('Variation') }}</th>
|
||||
<th>{{ translate('Quantity') }}</th>
|
||||
<th>{{ translate('Delivery Type') }}</th>
|
||||
<th>{{ translate('Price') }}</th>
|
||||
@if (addon_is_activated('refund_request'))
|
||||
<th>{{ translate('Refund') }}</th>
|
||||
@endif
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($order->orderDetails->where('seller_id', Auth::user()->id) as $key => $orderDetail)
|
||||
<tr>
|
||||
<td>{{ $key + 1 }}</td>
|
||||
<td>
|
||||
@if ($orderDetail->product != null)
|
||||
<a href="{{ route('product', $orderDetail->product->slug) }}"
|
||||
target="_blank">{{ $orderDetail->product->getTranslation('name') }}</a>
|
||||
@else
|
||||
<strong>{{ translate('Product Unavailable') }}</strong>
|
||||
@endif
|
||||
</td>
|
||||
<td>
|
||||
{{ $orderDetail->variation }}
|
||||
</td>
|
||||
<td>
|
||||
{{ $orderDetail->quantity }}
|
||||
</td>
|
||||
<td>
|
||||
@if ($order->shipping_type != null && $order->shipping_type == 'home_delivery')
|
||||
{{ translate('Home Delivery') }}
|
||||
@elseif ($order->shipping_type == 'pickup_point')
|
||||
@if ($order->pickup_point != null)
|
||||
{{ $order->pickup_point->getTranslation('name') }}
|
||||
({{ translate('Pickip Point') }})
|
||||
@endif
|
||||
@endif
|
||||
</td>
|
||||
<td>{{ $orderDetail->price }}</td>
|
||||
@if (addon_is_activated('refund_request'))
|
||||
<td>
|
||||
@if ($orderDetail->refund_request != null && $orderDetail->refund_request->refund_status == 0)
|
||||
<b class="text-info">{{ translate('Pending') }}</b>
|
||||
@elseif ($orderDetail->refund_request != null && $orderDetail->refund_request->refund_status == 2)
|
||||
<b class="text-success">{{ translate('Rejected') }}</b>
|
||||
@elseif ($orderDetail->refund_request != null && $orderDetail->refund_request->refund_status == 1)
|
||||
<b class="text-success">{{ translate('Approved') }}</b>
|
||||
@elseif ($orderDetail->product->refundable != 0)
|
||||
<b>{{ translate('N/A') }}</b>
|
||||
@else
|
||||
<b>{{ translate('Non-refundable') }}</b>
|
||||
@endif
|
||||
</td>
|
||||
@endif
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-3">
|
||||
<div class="card mt-4">
|
||||
<div class="card-header">
|
||||
<b class="fs-15">{{ translate('Order Ammount') }}</b>
|
||||
</div>
|
||||
<div class="card-body pb-0">
|
||||
<table class="table-borderless table">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="w-50 fw-600">{{ translate('Subtotal') }}</th>
|
||||
<td class="text-right">
|
||||
<span
|
||||
class="strong-600">{{ single_price($order->orderDetails->where('seller_id', Auth::user()->id)->sum('price')) }}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="w-50 fw-600">{{ translate('Shipping') }}</th>
|
||||
<td class="text-right">
|
||||
<span
|
||||
class="text-italic">{{ single_price($order->orderDetails->where('seller_id', Auth::user()->id)->sum('shipping_cost')) }}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="w-50 fw-600">{{ translate('Tax') }}</th>
|
||||
<td class="text-right">
|
||||
<span
|
||||
class="text-italic">{{ single_price($order->orderDetails->where('seller_id', Auth::user()->id)->sum('tax')) }}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="w-50 fw-600">{{ translate('Coupon') }}</th>
|
||||
<td class="text-right">
|
||||
<span class="text-italic">{{ single_price($order->coupon_discount) }}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="w-50 fw-600">{{ translate('Total') }}</th>
|
||||
<td class="text-right">
|
||||
<strong>
|
||||
<span>{{ single_price($order->grand_total) }}
|
||||
</span>
|
||||
</strong>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
$('#update_delivery_status').on('change', function() {
|
||||
var order_id = {{ $order->id }};
|
||||
var status = $('#update_delivery_status').val();
|
||||
$.post('{{ route('orders.update_delivery_status') }}', {
|
||||
_token: '{{ @csrf_token() }}',
|
||||
order_id: order_id,
|
||||
status: status
|
||||
}, function(data) {
|
||||
$('#order_details').modal('hide');
|
||||
AIZ.plugins.notify('success', '{{ translate('Order status has been updated') }}');
|
||||
location.reload().setTimeOut(500);
|
||||
});
|
||||
});
|
||||
|
||||
$('#update_payment_status').on('change', function() {
|
||||
var order_id = {{ $order->id }};
|
||||
var status = $('#update_payment_status').val();
|
||||
$.post('{{ route('orders.update_payment_status') }}', {
|
||||
_token: '{{ @csrf_token() }}',
|
||||
order_id: order_id,
|
||||
status: status
|
||||
}, function(data) {
|
||||
$('#order_details').modal('hide');
|
||||
//console.log(data);
|
||||
AIZ.plugins.notify('success', '{{ translate('Payment status has been updated') }}');
|
||||
location.reload().setTimeOut(500);
|
||||
});
|
||||
});
|
||||
</script>
|
||||
43
desarrollo2/resources/views/seller/payment_history.blade.php
Normal file
43
desarrollo2/resources/views/seller/payment_history.blade.php
Normal file
@@ -0,0 +1,43 @@
|
||||
@extends('seller.layouts.app')
|
||||
|
||||
@section('panel_content')
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{ translate('Payment History') }}</h5>
|
||||
</div>
|
||||
@if (count($payments) > 0)
|
||||
<div class="card-body">
|
||||
<table class="table aiz-table mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>{{ translate('Date')}}</th>
|
||||
<th>{{ translate('Amount')}}</th>
|
||||
<th>{{ translate('Payment Method')}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($payments as $key => $payment)
|
||||
<tr>
|
||||
<td>
|
||||
{{ $key+1 }}
|
||||
</td>
|
||||
<td>{{ date('d-m-Y', strtotime($payment->created_at)) }}</td>
|
||||
<td>
|
||||
{{ single_price($payment->amount) }}
|
||||
</td>
|
||||
<td>
|
||||
{{ translate(ucfirst(str_replace('_', ' ', $payment->payment_method))) }} @if ($payment->txn_code != null) ({{ translate('TRX ID') }} : {{ $payment->txn_code }}) @endif
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="aiz-pagination">
|
||||
{{ $payments->links() }}
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
@@ -0,0 +1,41 @@
|
||||
<table id="nfc_vouchers_table" class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th>NFC Tipo</th>
|
||||
<th>NFC Siguiente</th>
|
||||
<th>NFC Vencimiento</th>
|
||||
<th>NFC Cantidad</th>
|
||||
<th>NFC Próximo</th>
|
||||
<th>NFC Estado</th>
|
||||
<th>NFC Usado</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($nfc_vouchers as $nfc_voucher)
|
||||
<tr>
|
||||
<td>{{ $nfc_voucher->id }}</td>
|
||||
<td>{{ $nfc_voucher->nfc_type }}</td>
|
||||
<td>{{ $nfc_voucher->nfc_following }}</td>
|
||||
<td>{{ $nfc_voucher->nfc_expiration }}</td>
|
||||
<td>{{ $nfc_voucher->nfc_amount }}</td>
|
||||
<td>{{ $nfc_voucher->nfc_next }}</td>
|
||||
<td>
|
||||
@if($nfc_voucher->nfc_select == 'active')
|
||||
Activo
|
||||
@elseif($nfc_voucher->nfc_select == 'deactivated')
|
||||
Desactivado
|
||||
@endif
|
||||
</td>
|
||||
<td>
|
||||
@if($nfc_voucher->nfc_used == 'not_use')
|
||||
No usado
|
||||
@elseif($nfc_voucher->nfc_used == 'in_use')
|
||||
En uso
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
@@ -0,0 +1,77 @@
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="col-sm-2 control-label" for="name">{{translate('Name')}}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" placeholder="{{translate('Name')}}" id="name" name="name" class="form-control" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class=" row">
|
||||
<label class="col-sm-2 control-label" for="email">{{translate('Email')}}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="email" placeholder="{{translate('Email')}}" id="email" name="email" class="form-control" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class=" row">
|
||||
<label class="col-sm-2 control-label" for="address">{{translate('Address')}}</label>
|
||||
<div class="col-sm-10">
|
||||
<textarea placeholder="{{translate('Address')}}" id="address" name="address" class="form-control" required></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class=" row">
|
||||
<label class="col-sm-2 control-label">{{translate('Country')}}</label>
|
||||
<div class="col-sm-10">
|
||||
<select class="form-control aiz-selectpicker" data-live-search="true" data-placeholder="{{ translate('Select your country') }}" name="country_id" required>
|
||||
<option value="">{{ translate('Select your country') }}</option>
|
||||
@foreach (\App\Models\Country::where('status', 1)->get() as $key => $country)
|
||||
<option value="{{ $country->id }}">{{ $country->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="col-sm-2 control-label"">
|
||||
<label>{{ translate('State')}}</label>
|
||||
</div>
|
||||
<div class="col-sm-10">
|
||||
<select class="form-control mb-3 aiz-selectpicker" data-live-search="true" name="state_id" required>
|
||||
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="col-sm-2">
|
||||
<label>{{ translate('City')}}</label>
|
||||
</div>
|
||||
<div class="col-sm-10">
|
||||
<select class="form-control mb-3 aiz-selectpicker" data-live-search="true" name="city_id" required>
|
||||
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class=" row">
|
||||
<label class="col-sm-2 control-label" for="postal_code">{{translate('Postal code')}}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="number" min="0" placeholder="{{translate('Postal code')}}" id="postal_code" name="postal_code" class="form-control" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class=" row">
|
||||
<label class="col-sm-2 control-label" for="phone">{{translate('Phone')}}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="number" min="0" placeholder="{{translate('Phone')}}" id="phone" name="phone" class="form-control" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
639
desarrollo2/resources/views/seller/pos/index.blade.php
Normal file
639
desarrollo2/resources/views/seller/pos/index.blade.php
Normal file
@@ -0,0 +1,639 @@
|
||||
@extends('seller.layouts.app')
|
||||
|
||||
@section('panel_content')
|
||||
|
||||
<section class="gry-bg py-4 profile">
|
||||
<div class="container-fluid">
|
||||
<form class="" action="" method="POST" enctype="multipart/form-data">
|
||||
@csrf
|
||||
<div class="row gutters-10">
|
||||
<div class="col-md">
|
||||
<div class="row gutters-5 mb-3">
|
||||
<div class="col-md-6 mb-2 mb-md-0">
|
||||
<div class="form-group mb-0">
|
||||
<input class="form-control form-control-lg" type="text" name="keyword" placeholder="Search by Product Name/Barcode" onkeyup="filterProducts()">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3 col-6">
|
||||
<select name="poscategory" class="form-control form-control-lg aiz-selectpicker" data-live-search="true" onchange="filterProducts()">
|
||||
<option value="">{{ translate('All Categories') }}</option>
|
||||
@foreach (\App\Models\Category::all() as $key => $category)
|
||||
<option value="category-{{ $category->id }}">{{ $category->getTranslation('name') }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-3 col-6">
|
||||
<select name="brand" class="form-control form-control-lg aiz-selectpicker" data-live-search="true" onchange="filterProducts()">
|
||||
<option value="">{{ translate('All Brands') }}</option>
|
||||
@foreach (\App\Models\Brand::all() as $key => $brand)
|
||||
<option value="{{ $brand->id }}">{{ $brand->getTranslation('name') }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="aiz-pos-product-list c-scrollbar-light">
|
||||
<div class="d-flex flex-wrap justify-content-center" id="product-list">
|
||||
|
||||
</div>
|
||||
<div id="load-more" class="text-center">
|
||||
<div class="fs-14 d-inline-block fw-600 btn btn-soft-primary c-pointer" onclick="loadMoreProduct()">{{ translate('Loading..') }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-auto w-md-350px w-lg-400px w-xl-500px">
|
||||
<div class="card mb-3">
|
||||
<div class="card-body">
|
||||
<div class="d-flex border-bottom pb-3">
|
||||
<div class="flex-grow-1">
|
||||
<select name="user_id" class="form-control aiz-selectpicker pos-customer" data-live-search="true" onchange="getShippingAddress()">
|
||||
<option value="">{{translate('Walk In Customer')}}</option>
|
||||
@foreach ($customers as $key => $customer)
|
||||
<option value="{{ $customer->id }}" data-contact="{{ $customer->email }}">
|
||||
{{ $customer->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<button type="button" class="btn btn-icon btn-soft-dark ml-3 mr-0" data-target="#new-customer" data-toggle="modal">
|
||||
<i class="las la-truck"></i>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="" id="cart-details">
|
||||
<div class="aiz-pos-cart-list mb-4 mt-3 c-scrollbar-light">
|
||||
@php
|
||||
$subtotal = 0;
|
||||
$tax = 0;
|
||||
@endphp
|
||||
@if (Session::has('pos.cart'))
|
||||
<ul class="list-group list-group-flush">
|
||||
@forelse (Session::get('pos.cart') as $key => $cartItem)
|
||||
@php
|
||||
$subtotal += $cartItem['price']*$cartItem['quantity'];
|
||||
$tax += $cartItem['tax']*$cartItem['quantity'];
|
||||
$stock = \App\Models\ProductStock::find($cartItem['stock_id']);
|
||||
@endphp
|
||||
<li class="list-group-item py-0 pl-2">
|
||||
<div class="row gutters-5 align-items-center">
|
||||
<div class="col-auto w-60px">
|
||||
<div class="row no-gutters align-items-center flex-column aiz-plus-minus">
|
||||
<button class="btn col-auto btn-icon btn-sm fs-15" type="button" data-type="plus" data-field="qty-{{ $key }}" @if($stock->product->digital == 1) disabled @endif>
|
||||
<i class="las la-plus"></i>
|
||||
</button>
|
||||
<input type="text" name="qty-{{ $key }}" id="qty-{{ $key }}" class="col border-0 text-center flex-grow-1 fs-16 input-number" placeholder="1" value="{{ $cartItem['quantity'] }}" min="{{ $stock->product->min_qty }}" max="{{ $stock->qty }}" onchange="updateQuantity({{ $key }})">
|
||||
<button class="btn col-auto btn-icon btn-sm fs-15" type="button" data-type="minus" data-field="qty-{{ $key }}" @if($stock->product->digital == 1) disabled @endif>
|
||||
<i class="las la-minus"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="text-truncate-2">{{ $stock->product->name }}</div>
|
||||
<span class="span badge badge-inline fs-12 badge-soft-secondary">{{ $cartItem['variant'] }}</span>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<div class="fs-12 opacity-60">{{ single_price($cartItem['price']) }} x {{ $cartItem['quantity'] }}</div>
|
||||
<div class="fs-15 fw-600">{{ single_price($cartItem['price']*$cartItem['quantity']) }}</div>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<button type="button" class="btn btn-circle btn-icon btn-sm btn-soft-danger ml-2 mr-0" onclick="removeFromCart({{ $key }})">
|
||||
<i class="las la-trash-alt"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
@empty
|
||||
<li class="list-group-item">
|
||||
<div class="text-center">
|
||||
<i class="las la-frown la-3x opacity-50"></i>
|
||||
<p>{{ translate('No Product Added') }}</p>
|
||||
</div>
|
||||
</li>
|
||||
@endforelse
|
||||
</ul>
|
||||
@else
|
||||
<div class="text-center">
|
||||
<i class="las la-frown la-3x opacity-50"></i>
|
||||
<p>{{ translate('No Product Added') }}</p>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
<div>
|
||||
<div class="d-flex justify-content-between fw-600 mb-2 opacity-70">
|
||||
<span>{{translate('Sub Total')}}</span>
|
||||
<span>{{ single_price($subtotal) }}</span>
|
||||
</div>
|
||||
<div class="d-flex justify-content-between fw-600 mb-2 opacity-70">
|
||||
<span>{{translate('Tax')}}</span>
|
||||
<span>{{ single_price($tax) }}</span>
|
||||
</div>
|
||||
<div class="d-flex justify-content-between fw-600 mb-2 opacity-70">
|
||||
<span>{{translate('Shipping')}}</span>
|
||||
<span>{{ single_price(Session::get('pos.shipping', 0)) }}</span>
|
||||
</div>
|
||||
<div class="d-flex justify-content-between fw-600 mb-2 opacity-70">
|
||||
<span>{{translate('Discount')}}</span>
|
||||
<span>{{ single_price(Session::get('pos.discount', 0)) }}</span>
|
||||
</div>
|
||||
<div class="d-flex justify-content-between fw-600 fs-18 border-top pt-2">
|
||||
<span>{{translate('Total')}}</span>
|
||||
<span>{{ single_price($subtotal+$tax+Session::get('pos.shipping', 0) - Session::get('pos.discount', 0)) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pos-footer mar-btm">
|
||||
<div class="d-flex flex-column flex-md-row justify-content-between">
|
||||
<div class="d-flex">
|
||||
<div class="dropdown mr-3 ml-0 dropup">
|
||||
<button class="btn btn-outline-dark btn-styled dropdown-toggle" type="button" data-toggle="dropdown">
|
||||
{{translate('Shipping')}}
|
||||
</button>
|
||||
<div class="dropdown-menu p-3 dropdown-menu-lg">
|
||||
<div class="input-group">
|
||||
<input type="number" min="0" placeholder="Amount" name="shipping" class="form-control" value="{{ Session::get('pos.shipping', 0) }}" required onchange="setShipping()">
|
||||
<div class="input-group-append">
|
||||
<span class="input-group-text">{{ translate('Flat') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="dropdown dropup">
|
||||
<button class="btn btn-outline-dark btn-styled dropdown-toggle" type="button" data-toggle="dropdown">
|
||||
{{translate('Discount')}}
|
||||
</button>
|
||||
<div class="dropdown-menu p-3 dropdown-menu-lg">
|
||||
<div class="input-group">
|
||||
<input type="number" min="0" placeholder="Amount" name="discount" class="form-control" value="{{ Session::get('pos.discount', 0) }}" required onchange="setDiscount()">
|
||||
<div class="input-group-append">
|
||||
<span class="input-group-text">{{ translate('Flat') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="my-2 my-md-0">
|
||||
<button type="button" class="btn btn-primary btn-block" onclick="orderConfirmation()">{{ translate('Place Order') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@endsection
|
||||
|
||||
@section('modal')
|
||||
<!-- Address Modal -->
|
||||
<div id="new-customer" class="modal fade" role="dialog">
|
||||
<div class="modal-dialog modal-dialog-centered modal-dialog-zoom" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header bord-btm">
|
||||
<h4 class="modal-title h6">{{translate('Shipping Address')}}</h4>
|
||||
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span></button>
|
||||
</div>
|
||||
<form id="shipping_form">
|
||||
<div class="modal-body" id="shipping_address">
|
||||
|
||||
|
||||
</div>
|
||||
</form>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-styled btn-base-3" data-dismiss="modal" id="close-button">{{translate('Close')}}</button>
|
||||
<button type="button" class="btn btn-primary btn-styled btn-base-1" id="confirm-address" data-dismiss="modal">{{translate('Confirm')}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- new address modal -->
|
||||
<div id="new-address-modal" class="modal fade" role="dialog">
|
||||
<div class="modal-dialog modal-dialog-centered modal-dialog-zoom" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header bord-btm">
|
||||
<h4 class="modal-title h6">{{translate('Shipping Address')}}</h4>
|
||||
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span></button>
|
||||
</div>
|
||||
<form class="form-horizontal" action="{{ route('addresses.store') }}" method="POST" enctype="multipart/form-data">
|
||||
@csrf
|
||||
<div class="modal-body">
|
||||
<input type="hidden" name="customer_id" id="set_customer_id" value="">
|
||||
<div class="form-group">
|
||||
<div class=" row">
|
||||
<label class="col-sm-2 control-label" for="address">{{translate('Address')}}</label>
|
||||
<div class="col-sm-10">
|
||||
<textarea placeholder="{{translate('Address')}}" id="address" name="address" class="form-control" required></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class=" row">
|
||||
<label class="col-sm-2 control-label">{{translate('Country')}}</label>
|
||||
<div class="col-sm-10">
|
||||
<select class="form-control aiz-selectpicker" data-live-search="true" data-placeholder="{{ translate('Select your country') }}" name="country_id" required>
|
||||
<option value="">{{ translate('Select your country') }}</option>
|
||||
@foreach (\App\Models\Country::where('status', 1)->get() as $key => $country)
|
||||
<option value="{{ $country->id }}">{{ $country->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="col-sm-2 control-label"">
|
||||
<label>{{ translate('State')}}</label>
|
||||
</div>
|
||||
<div class="col-sm-10">
|
||||
<select class="form-control mb-3 aiz-selectpicker" data-live-search="true" name="state_id" required>
|
||||
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="col-sm-2">
|
||||
<label>{{ translate('City')}}</label>
|
||||
</div>
|
||||
<div class="col-sm-10">
|
||||
<select class="form-control mb-3 aiz-selectpicker" data-live-search="true" name="city_id" required>
|
||||
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class=" row">
|
||||
<label class="col-sm-2 control-label" for="postal_code">{{translate('Postal code')}}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="number" min="0" placeholder="{{translate('Postal code')}}" id="postal_code" name="postal_code" class="form-control" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class=" row">
|
||||
<label class="col-sm-2 control-label" for="phone">{{translate('Phone')}}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="number" min="0" placeholder="{{translate('Phone')}}" id="phone" name="phone" class="form-control" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-styled btn-base-3" data-dismiss="modal">{{translate('Close')}}</button>
|
||||
<button type="submit" class="btn btn-primary btn-styled btn-base-1">{{translate('Save')}}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="order-confirm" class="modal fade">
|
||||
<div class="modal-dialog modal-dialog-centered modal-dialog-zoom modal-xl">
|
||||
<div class="modal-content" id="variants">
|
||||
<div class="modal-header bord-btm">
|
||||
<h4 class="modal-title h6">{{translate('Order Summary')}}</h4>
|
||||
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span></button>
|
||||
</div>
|
||||
<div class="modal-body" id="order-confirmation">
|
||||
<div class="p-4 text-center">
|
||||
<i class="las la-spinner la-spin la-3x"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary btn-base-3" data-dismiss="modal">{{translate('Close')}}</button>
|
||||
<button type="button" onclick="oflinePayment()" class="btn btn-base-1 btn-warning">{{translate('Offline Payment')}}</button>
|
||||
<button type="button" onclick="submitOrder('cash_on_delivery')" class="btn btn-base-1 btn-info">{{translate('Confirm with COD')}}</button>
|
||||
<button type="button" onclick="submitOrder('cash')" class="btn btn-base-1 btn-success">{{translate('Confirm with Cash')}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{-- Offline Payment Modal --}}
|
||||
<div id="offlin_payment" class="modal fade" role="dialog">
|
||||
<div class="modal-dialog modal-dialog-centered modal-dialog-zoom" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header bord-btm">
|
||||
<h4 class="modal-title h6">{{translate('Offline Payment Info')}}</h4>
|
||||
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="form-group">
|
||||
<div class=" row">
|
||||
<label class="col-sm-3 control-label" for="offline_payment_method">{{translate('Payment Method')}}</label>
|
||||
<div class="col-sm-9">
|
||||
<input placeholder="{{translate('Name')}}" id="offline_payment_method" name="offline_payment_method" class="form-control" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class=" row">
|
||||
<label class="col-sm-3 control-label" for="offline_payment_amount">{{translate('Amount')}}</label>
|
||||
<div class="col-sm-9">
|
||||
<input placeholder="{{translate('Amount')}}" id="offline_payment_amount" name="offline_payment_amount" class="form-control" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<label class="col-sm-3 control-label" for="trx_id">{{translate('Transaction ID')}}</label>
|
||||
<div class="col-md-9">
|
||||
<input type="text" class="form-control mb-3" id="trx_id" name="trx_id" placeholder="{{ translate('Transaction ID') }}" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label">{{ translate('Payment Proof') }}</label>
|
||||
<div class="col-md-9">
|
||||
<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 image') }}</div>
|
||||
<input type="hidden" name="payment_proof" class="selected-files">
|
||||
</div>
|
||||
<div class="file-preview box sm">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary btn-base-3" data-dismiss="modal">{{translate('Close')}}</button>
|
||||
<button type="button" onclick="submitOrder('offline_payment')" class="btn btn-styled btn-base-1 btn-success">{{translate('Confirm')}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
<script type="text/javascript">
|
||||
|
||||
var products = null;
|
||||
|
||||
$(document).ready(function(){
|
||||
$('body').addClass('side-menu-closed');
|
||||
$('#product-list').on('click','.add-plus:not(.c-not-allowed)',function(){
|
||||
var stock_id = $(this).data('stock-id');
|
||||
$.post('{{ route('pos.addToCart') }}',{_token:AIZ.data.csrf, stock_id:stock_id}, function(data){
|
||||
if(data.success == 1){
|
||||
updateCart(data.view);
|
||||
}else{
|
||||
AIZ.plugins.notify('danger', data.message);
|
||||
}
|
||||
|
||||
});
|
||||
});
|
||||
filterProducts();
|
||||
getShippingAddress();
|
||||
});
|
||||
|
||||
$("#confirm-address").click(function (){
|
||||
var data = new FormData($('#shipping_form')[0]);
|
||||
|
||||
$.ajax({
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': AIZ.data.csrf
|
||||
},
|
||||
method: "POST",
|
||||
url: "{{route('pos.set-shipping-address')}}",
|
||||
data: data,
|
||||
cache: false,
|
||||
contentType: false,
|
||||
processData: false,
|
||||
success: function (data, textStatus, jqXHR) {
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
function updateCart(data){
|
||||
$('#cart-details').html(data);
|
||||
AIZ.extra.plusMinus();
|
||||
}
|
||||
|
||||
function filterProducts(){
|
||||
var keyword = $('input[name=keyword]').val();
|
||||
var category = $('select[name=poscategory]').val();
|
||||
var brand = $('select[name=brand]').val();
|
||||
$.get('{{ route('pos.search_seller_product') }}',{
|
||||
keyword : keyword,
|
||||
category : category,
|
||||
brand : brand
|
||||
}, function(data){
|
||||
products = data;
|
||||
$('#product-list').html(null);
|
||||
setProductList(data);
|
||||
});
|
||||
}
|
||||
|
||||
function loadMoreProduct(){
|
||||
if(products != null && products.links.next != null){
|
||||
$('#load-more').find('.btn').html('{{ translate('Loading..') }}');
|
||||
$.get(products.links.next,{}, function(data){
|
||||
products = data;
|
||||
setProductList(data);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function setProductList(data){
|
||||
for (var i = 0; i < data.data.length; i++) {
|
||||
$('#product-list').append(
|
||||
`<div class="w-140px w-xl-180px w-xxl-210px mx-2">
|
||||
<div class="card bg-white c-pointer product-card hov-container">
|
||||
<div class="position-relative">
|
||||
${data.data[i].digital == 0
|
||||
?
|
||||
`<span class="absolute-top-left mt-1 ml-1 mr-0">
|
||||
${data.data[i].qty > 0
|
||||
? `<span class="badge badge-inline badge-success fs-13">{{ translate('In stock') }}`
|
||||
: `<span class="badge badge-inline badge-danger fs-13">{{ translate('Out of stock') }}` }
|
||||
: ${data.data[i].qty}</span>
|
||||
</span>`
|
||||
: ''
|
||||
}
|
||||
${data.data[i].variant != null
|
||||
? `<span class="badge badge-inline badge-warning absolute-bottom-left mb-1 ml-1 mr-0 fs-13 text-truncate">${data.data[i].variant}</span>`
|
||||
: '' }
|
||||
<img src="${data.data[i].thumbnail_image }" class="card-img-top img-fit h-120px h-xl-180px h-xxl-210px mw-100 mx-auto" >
|
||||
</div>
|
||||
<div class="card-body p-2 p-xl-3">
|
||||
<div class="text-truncate fw-600 fs-14 mb-2">${data.data[i].name}</div>
|
||||
<div class="">
|
||||
${data.data[i].price != data.data[i].base_price
|
||||
? `<del class="mr-2 ml-0">${data.data[i].base_price}</del><span>${data.data[i].price}</span>`
|
||||
: `<span>${data.data[i].base_price}</span>`
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
<div class="add-plus absolute-full rounded overflow-hidden hov-box ${(data.data[i].digital == 0 && data.data[i].qty <= 0) ? 'c-not-allowed' : '' }" data-stock-id="${data.data[i].stock_id}">
|
||||
<div class="absolute-full bg-dark opacity-50">
|
||||
</div>
|
||||
<i class="las la-plus absolute-center la-6x text-white"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>`
|
||||
);
|
||||
}
|
||||
if (data.links.next != null) {
|
||||
$('#load-more').find('.btn').html('{{ translate('Load More.') }}');
|
||||
}
|
||||
else {
|
||||
$('#load-more').find('.btn').html('{{ translate('Nothing more found.') }}');
|
||||
}
|
||||
}
|
||||
|
||||
function removeFromCart(key){
|
||||
$.post('{{ route('pos.removeFromCart') }}', {_token:AIZ.data.csrf, key:key}, function(data){
|
||||
updateCart(data);
|
||||
});
|
||||
}
|
||||
|
||||
function addToCart(product_id, variant, quantity){
|
||||
$.post('{{ route('pos.addToCart') }}',{_token:AIZ.data.csrf, product_id:product_id, variant:variant, quantity, quantity}, function(data){
|
||||
$('#cart-details').html(data);
|
||||
$('#product-variation').modal('hide');
|
||||
});
|
||||
}
|
||||
|
||||
function updateQuantity(key){
|
||||
$.post('{{ route('pos.updateQuantity') }}',{_token:AIZ.data.csrf, key:key, quantity: $('#qty-'+key).val()}, function(data){
|
||||
if(data.success == 1){
|
||||
updateCart(data.view);
|
||||
}else{
|
||||
AIZ.plugins.notify('danger', data.message);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function setDiscount(){
|
||||
var discount = $('input[name=discount]').val();
|
||||
$.post('{{ route('pos.setDiscount') }}',{_token:AIZ.data.csrf, discount:discount}, function(data){
|
||||
updateCart(data);
|
||||
});
|
||||
}
|
||||
|
||||
function setShipping(){
|
||||
var shipping = $('input[name=shipping]').val();
|
||||
$.post('{{ route('pos.setShipping') }}',{_token:AIZ.data.csrf, shipping:shipping}, function(data){
|
||||
updateCart(data);
|
||||
});
|
||||
}
|
||||
|
||||
function getShippingAddress(){
|
||||
$.post('{{ route('pos.getShippingAddress') }}',{_token:AIZ.data.csrf, id:$('select[name=user_id]').val()}, function(data){
|
||||
$('#shipping_address').html(data);
|
||||
});
|
||||
}
|
||||
|
||||
function add_new_address(){
|
||||
var customer_id = $('#customer_id').val();
|
||||
$('#set_customer_id').val(customer_id);
|
||||
$('#new-address-modal').modal('show');
|
||||
$("#close-button").click();
|
||||
}
|
||||
|
||||
function orderConfirmation(){
|
||||
$('#order-confirmation').html(`<div class="p-4 text-center"><i class="las la-spinner la-spin la-3x"></i></div>`);
|
||||
$('#order-confirm').modal('show');
|
||||
$.post('{{ route('pos.getOrderSummary') }}',{_token:AIZ.data.csrf}, function(data){
|
||||
$('#order-confirmation').html(data);
|
||||
});
|
||||
}
|
||||
|
||||
function oflinePayment(){
|
||||
$('#offlin_payment').modal('show');
|
||||
}
|
||||
|
||||
function submitOrder(payment_type){
|
||||
var user_id = $('select[name=user_id]').val();
|
||||
var shipping = $('input[name=shipping]:checked').val();
|
||||
var discount = $('input[name=discount]').val();
|
||||
var shipping_address = $('input[name=address_id]:checked').val();
|
||||
var offline_payment_method = $('input[name=offline_payment_method]').val();
|
||||
var offline_payment_amount = $('input[name=offline_payment_amount]').val();
|
||||
var offline_trx_id = $('input[name=trx_id]').val();
|
||||
var offline_payment_proof = $('input[name=payment_proof]').val();
|
||||
|
||||
$.post('{{ route('pos.order_place') }}',{
|
||||
_token : AIZ.data.csrf,
|
||||
user_id : user_id,
|
||||
shipping_address : shipping_address,
|
||||
payment_type : payment_type,
|
||||
shipping : shipping,
|
||||
discount : discount,
|
||||
offline_payment_method : offline_payment_method,
|
||||
offline_payment_amount : offline_payment_amount,
|
||||
offline_trx_id : offline_trx_id,
|
||||
offline_payment_proof : offline_payment_proof
|
||||
|
||||
}, function(data){
|
||||
if(data.success == 1){
|
||||
AIZ.plugins.notify('success', data.message );
|
||||
location.reload();
|
||||
}
|
||||
else{
|
||||
AIZ.plugins.notify('danger', data.message );
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//address
|
||||
$(document).on('change', '[name=country_id]', function() {
|
||||
var country_id = $(this).val();
|
||||
get_states(country_id);
|
||||
});
|
||||
|
||||
$(document).on('change', '[name=state_id]', function() {
|
||||
var state_id = $(this).val();
|
||||
get_city(state_id);
|
||||
});
|
||||
|
||||
function get_states(country_id) {
|
||||
$('[name="state"]').html("");
|
||||
$.ajax({
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
|
||||
},
|
||||
url: "{{route('get-state')}}",
|
||||
type: 'POST',
|
||||
data: {
|
||||
country_id : country_id
|
||||
},
|
||||
success: function (response) {
|
||||
var obj = JSON.parse(response);
|
||||
if(obj != '') {
|
||||
$('[name="state_id"]').html(obj);
|
||||
AIZ.plugins.bootstrapSelect('refresh');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function get_city(state_id) {
|
||||
$('[name="city"]').html("");
|
||||
$.ajax({
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
|
||||
},
|
||||
url: "{{route('get-city')}}",
|
||||
type: 'POST',
|
||||
data: {
|
||||
state_id: state_id
|
||||
},
|
||||
success: function (response) {
|
||||
var obj = JSON.parse(response);
|
||||
if(obj != '') {
|
||||
$('[name="city_id"]').html(obj);
|
||||
AIZ.plugins.bootstrapSelect('refresh');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
@endsection
|
||||
220
desarrollo2/resources/views/seller/pos/pos_activation.blade.php
Normal file
220
desarrollo2/resources/views/seller/pos/pos_activation.blade.php
Normal file
@@ -0,0 +1,220 @@
|
||||
@extends('seller.layouts.app')
|
||||
|
||||
@section('panel_content')
|
||||
|
||||
<h4 class="text-center text-muted">{{translate('POS Configuration')}}</h4>
|
||||
<div class="row">
|
||||
<div class="col-lg-4">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{ translate('Thermal Printer Size') }}</h5>
|
||||
</div>
|
||||
<div class="card-body text-center">
|
||||
<form class="form-horizontal" action="{{ route('seller_business_settings.update') }}" method="POST">
|
||||
@csrf
|
||||
<div class="form-group row">
|
||||
<input type="hidden" name="types[]" value="print_width_seller_pos">
|
||||
<div class="input-group mb-3">
|
||||
<input type="text" class="form-control" name="print_width_seller_pos" placeholder="{{ translate('Print width in mm') }}"
|
||||
value="{{ get_setting('print_width_seller_pos') }}">
|
||||
<div class="input-group-append">
|
||||
<span class="input-group-text" id="basic-addon2">{{ translate('mm') }}</span>
|
||||
</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>
|
||||
<div class="col-lg-8">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{ translate('Lista de comprobantes fiscales') }}</h5>
|
||||
|
||||
<div class="float-right">
|
||||
{{-- <a class="btn btn-info" href="{{ route('pos.configuration.collection') }}">Exportar (Collection)</a> --}}
|
||||
<a class="btn btn-success" href="{{ route('pos.configuration.view') }}">Exportar en excel</a>
|
||||
|
||||
<button class="btn btn-primary" data-toggle="modal" data-target="#agregarModal">Agregar</button>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="card-body ">
|
||||
<table id="nfc_vouchers_table" class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th>NFC Tipo</th>
|
||||
<th>NFC Siguiente</th>
|
||||
<th>NFC Vencimiento</th>
|
||||
<th>NFC Cantidad</th>
|
||||
<th>NFC Próximo</th>
|
||||
<th>NFC Estado</th>
|
||||
<th>NFC Usado</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($nfc_vouchers as $nfc_voucher)
|
||||
<tr>
|
||||
<td>{{ $nfc_voucher->id }}</td>
|
||||
<td>{{ $nfc_voucher->nfc_type }}</td>
|
||||
<td>{{ $nfc_voucher->nfc_following }}</td>
|
||||
<td>{{ $nfc_voucher->nfc_expiration }}</td>
|
||||
<td>{{ $nfc_voucher->nfc_amount }}</td>
|
||||
<td>{{ $nfc_voucher->nfc_next }}</td>
|
||||
<td>
|
||||
@if($nfc_voucher->nfc_select == 'active')
|
||||
Activo
|
||||
@elseif($nfc_voucher->nfc_select == 'deactivated')
|
||||
Desactivado
|
||||
@endif
|
||||
</td>
|
||||
<td>
|
||||
@if($nfc_voucher->nfc_used == 'not_use')
|
||||
No usado
|
||||
@elseif($nfc_voucher->nfc_used == 'in_use')
|
||||
En uso
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="modal fade" id="agregarModal" tabindex="-1" role="dialog" aria-labelledby="agregarModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-lg" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="agregarModalLabel">Agregar Comprobante Fiscal</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<form class="form-horizontal" action="{{ route('pos.configuration.store') }}" method="POST">
|
||||
@csrf
|
||||
<div class="modal-body">
|
||||
<!-- Contenido del modal -->
|
||||
|
||||
<div class="form-group row">
|
||||
<div class="form-group col-md-3">
|
||||
<label for="nfc_type">Selección del tipo</label>
|
||||
<select class="form-control @error('nfc_type') is-invalid @enderror" name="nfc_type" id="nfc_type">
|
||||
<option value="" selected>Seleccione nfc</option>
|
||||
<option value="B01">B01</option>
|
||||
<option value="B02">B02</option>
|
||||
<option value="B15">B15</option>
|
||||
</select>
|
||||
@error('nfc_type')
|
||||
<div class="invalid-feedback">{{ $message }}</div>
|
||||
@enderror
|
||||
</div>
|
||||
<div class="form-group col-md-5">
|
||||
<label for="nfc_following">Siguientes 8 caracteres</label>
|
||||
<input type="number" class="form-control @error('nfc_following') is-invalid @enderror" name="nfc_following" id="nfc_following" placeholder="">
|
||||
@error('nfc_following')
|
||||
<div class="invalid-feedback">{{ $message }}</div>
|
||||
@enderror
|
||||
</div>
|
||||
<div class="form-group col-md-4">
|
||||
<label for="nfc_expiration">Fecha de vencimiento</label>
|
||||
<input type="date" class="form-control @error('nfc_expiration') is-invalid @enderror" name="nfc_expiration" id="nfc_expiration" placeholder="">
|
||||
@error('nfc_expiration')
|
||||
<div class="invalid-feedback">{{ $message }}</div>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
|
||||
<div class="form-group col-md-5">
|
||||
<label for="nfc_amount">Cantidad de comprobantes</label>
|
||||
<input type="number" class="form-control @error('nfc_amount') is-invalid @enderror" name="nfc_amount" id="nfc_amount" placeholder="">
|
||||
@error('nfc_amount')
|
||||
<div class="invalid-feedback">{{ $message }}</div>
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
<div class="form-group col-md-4">
|
||||
<label for="nfc_next">Próximo NFC a emitir</label>
|
||||
<input type="number" class="form-control @error('nfc_next') is-invalid @enderror" name="nfc_next" id="nfc_next" placeholder="">
|
||||
@error('nfc_next')
|
||||
<div class="invalid-feedback">{{ $message }}</div>
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
<div class="form-group col-md-3" style="top: 23px">
|
||||
<div class="custom-control @error('nfc_select') is-invalid @enderror custom-radio">
|
||||
<input type="radio" class="custom-control-input" id="customControlValidation2" name="nfc_select" value="active">
|
||||
<label class="custom-control-label" for="customControlValidation2">Activar NFC</label>
|
||||
</div>
|
||||
<div class="custom-control custom-radio mb-3">
|
||||
<input type="radio" class="custom-control-input" id="customControlValidation3" name="nfc_select" value="deactivated">
|
||||
<label class="custom-control-label" for="customControlValidation3">Desactivar NFC</label>
|
||||
</div>
|
||||
@error('nfc_select')
|
||||
<div class="invalid-feedback">{{ $message }}</div>
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cerrar</button>
|
||||
<button type="submit" id="guardar-btn" class="btn btn-primary">Guardar</button>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
{{-- @dd($nfc_vouchers) --}}
|
||||
{{-- --}}
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
|
||||
@push('styles')
|
||||
<link rel="stylesheet" type="text/css"
|
||||
href="https://cdn.datatables.net/v/bs5/dt-1.13.1/r-2.4.0/datatables.min.css" />
|
||||
@endpush
|
||||
|
||||
@push('scripts')
|
||||
<script type="text/javascript" src="https://cdn.datatables.net/v/bs5/dt-1.13.1/r-2.4.0/datatables.min.js"></script>
|
||||
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$('#nfc_vouchers_table').DataTable({
|
||||
responsive: true,
|
||||
"autoWidth": false,
|
||||
language: {
|
||||
searchPlaceholder: "Buscar...",
|
||||
search: "",
|
||||
url: "//cdn.datatables.net/plug-ins/1.13.1/i18n/es-ES.json",
|
||||
},
|
||||
order: [[0, 'desc']] // Ordenar por la primera columna (fecha de creación) en orden descendente
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
@endpush
|
||||
@@ -0,0 +1,39 @@
|
||||
<div class="">
|
||||
@foreach (\App\Models\Address::where('user_id',$user_id)->get() as $key => $address)
|
||||
<label class="aiz-megabox d-block bg-white">
|
||||
<input type="radio" name="address_id" value="{{ $address->id }}" @if ($address->set_default) checked @endif required>
|
||||
<span class="d-flex p-3 aiz-megabox-elem">
|
||||
<span class="aiz-rounded-check flex-shrink-0 mt-1"></span>
|
||||
<span class="flex-grow-1 pl-3">
|
||||
<div>
|
||||
<span class="alpha-6">{{ translate('Address') }}:</span>
|
||||
<span class="strong-600 ml-2">{{ $address->address }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span class="alpha-6">{{ translate('Postal Code') }}:</span>
|
||||
<span class="strong-600 ml-2">{{ $address->postal_code }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span class="alpha-6">{{ translate('City') }}:</span>
|
||||
<span class="strong-600 ml-2">{{ $address->city }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span class="alpha-6">{{ translate('Country') }}:</span>
|
||||
<span class="strong-600 ml-2">{{ $address->country }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span class="alpha-6">{{ translate('Phone') }}:</span>
|
||||
<span class="strong-600 ml-2">{{ $address->phone }}</span>
|
||||
</div>
|
||||
</span>
|
||||
</span>
|
||||
</label>
|
||||
@endforeach
|
||||
<input type="hidden" id="customer_id" value="{{$user_id}}">
|
||||
<div class="col-md-6 mx-auto" onclick="add_new_address()">
|
||||
<div class="border p-3 rounded mb-3 c-pointer text-center bg-white">
|
||||
<i class="la la-plus la-2x"></i>
|
||||
<div class="alpha-7">{{ translate('Add New Address') }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,203 @@
|
||||
@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('Add Your Product') }}</h1>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<form class="" action="{{route('seller.digitalproducts.store')}}" method="POST" enctype="multipart/form-data" id="choice_form">
|
||||
@csrf
|
||||
<input type="hidden" name="added_by" value="seller">
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('General')}}</h5>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-3 col-from-label">{{translate('Product Name')}} <span class="text-danger">*</span></label>
|
||||
<div class="col-lg-9">
|
||||
<input type="text" class="form-control" name="name" placeholder="{{translate('Product Name')}}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row" id="category">
|
||||
<label class="col-lg-3 col-from-label">{{translate('Category')}} <span class="text-danger">*</span></label>
|
||||
<div class="col-lg-9">
|
||||
<select class="form-control aiz-selectpicker" name="category_id" id="category_id" required>
|
||||
@foreach(\App\Models\Category::where('parent_id', 0)->where('digital', 1)->with('childrenCategories')->get(); 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">
|
||||
<label class="col-lg-3 col-from-label">{{ translate('Product File')}} <span class="text-danger">*</span></label>
|
||||
<div class="col-lg-9">
|
||||
<div class="input-group" data-toggle="aizuploader" 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="file" class="selected-files">
|
||||
</div>
|
||||
<div class="file-preview box sm">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-3 col-from-label">{{translate('Tags')}} <span class="text-danger">*</span></label>
|
||||
<div class="col-lg-9">
|
||||
<input type="text" class="form-control aiz-tag-input" name="tags[]" placeholder="{{ translate('Type and hit enter') }}">
|
||||
<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('Images')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-3 col-form-label" for="signinSrEmail">{{translate('Gallery Images')}} <small>(600x600)</small></label>
|
||||
<div class="col-lg-9">
|
||||
<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-lg-3 col-form-label" for="signinSrEmail">{{translate('Thumbnail Image')}} <small>(300x300)</small></label>
|
||||
<div class="col-lg-9">
|
||||
<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="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('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-9">
|
||||
<input type="text" class="form-control" name="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-9">
|
||||
<textarea name="meta_description" rows="5" class="form-control"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-3 col-form-label" for="signinSrEmail">{{ translate('Meta Image') }}</label>
|
||||
<div class="col-lg-9">
|
||||
<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="meta_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('Price')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-3 col-from-label">{{translate('Unit price')}} <span class="text-danger">*</span></label>
|
||||
<div class="col-lg-9">
|
||||
<input type="number" lang="en" min="0" value="0" step="0.01" placeholder="{{translate('Unit price')}}" name="unit_price" class="form-control" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-3 col-from-label">{{translate('Purchase price')}} <span class="text-danger">*</span></label>
|
||||
<div class="col-lg-9">
|
||||
<input type="number" lang="en" min="0" value="0" step="0.01" placeholder="{{translate('Purchase price')}}" name="purchase_price" class="form-control" required>
|
||||
</div>
|
||||
</div>
|
||||
@foreach (\App\Models\Tax::where('tax_status', 1)->get() as $tax)
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-3 col-from-label">
|
||||
{{ $tax->name }}
|
||||
<span class="text-danger">*</span>
|
||||
</label>
|
||||
<div class="col-lg-6">
|
||||
<input type="hidden" value="{{$tax->id}}" name="tax_id[]">
|
||||
<input type="number" lang="en" min="0" value="0" step="0.01" placeholder="{{translate('Tax')}}" name="tax[]" class="form-control" required>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<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 class="form-group row">
|
||||
<label class="col-lg-3 col-from-label">{{translate('Discount')}} <span class="text-danger">*</span></label>
|
||||
<div class="col-lg-6">
|
||||
<input type="number" lang="en" min="0" value="0" step="0.01" placeholder="{{translate('Discount')}}" name="discount" class="form-control" required>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<select class="form-control aiz-selectpicker" name="discount_type">
|
||||
<option value="amount">{{translate('Flat')}}</option>
|
||||
<option value="percent">{{translate('Percent')}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<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-lg-3 col-from-label">{{translate('Description')}}</label>
|
||||
<div class="col-lg-9">
|
||||
<textarea class="aiz-text-editor" name="description"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group mb-0 text-right mb-2">
|
||||
<button type="submit" class="btn btn-primary">{{translate('Save Product')}}</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
@endsection
|
||||
@@ -0,0 +1,232 @@
|
||||
@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('Update Your Product') }}</h1>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<form class="" action="{{route('seller.digitalproducts.update', $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 }}">
|
||||
<input type="hidden" name="added_by" value="seller">
|
||||
@csrf
|
||||
|
||||
<div class="card mb-0 border-bottom-0">
|
||||
<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.digitalproducts.edit', ['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>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('General')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-3 col-from-label">{{translate('Product Name')}} <span class="text-danger">*</span></label>
|
||||
<div class="col-lg-9">
|
||||
<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')}} <span class="text-danger">*</span></label>
|
||||
<div class="col-lg-9">
|
||||
<select class="form-control aiz-selectpicker" name="category_id" id="category_id" data-selected={{ $product->category_id }} required>
|
||||
@foreach(\App\Models\Category::where('parent_id', 0)->where('digital', 1)->with('childrenCategories')->get(); 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">
|
||||
<label class="col-lg-3 col-from-label">{{translate('Product File')}} <span class="text-danger">*</span></label>
|
||||
<div class="col-lg-9">
|
||||
<div class="input-group" data-toggle="aizuploader" 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="file" class="selected-files" value="{{ $product->file_name }}">
|
||||
</div>
|
||||
<div class="file-preview box sm">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-3 col-from-label">{{translate('Tags')}} <span class="text-danger">*</span></label>
|
||||
<div class="col-lg-9">
|
||||
<input type="text" class="form-control aiz-tag-input" name="tags[]" id="tags" value="{{ $product->tags }}" placeholder="{{ translate('Type 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('Images')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-3 col-form-label" for="signinSrEmail">{{translate('Gallery Images')}} <small>(600x600)</small></label>
|
||||
<div class="col-lg-9">
|
||||
<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" required>
|
||||
</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-lg-3 col-form-label" for="signinSrEmail">{{translate('Thumbnail Image')}} <small>(300x300)</small></label>
|
||||
<div class="col-lg-9">
|
||||
<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="thumbnail_img" value="{{ $product->thumbnail_img }}" class="selected-files" required>
|
||||
</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('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-9">
|
||||
<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-9">
|
||||
<textarea name="meta_description" rows="8" class="form-control">{{ $product->meta_description }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-3 col-form-label" for="signinSrEmail">{{ translate('Meta Image') }}</label>
|
||||
<div class="col-lg-9">
|
||||
<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="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-lg-3 col-from-label">{{translate('Slug')}}</label>
|
||||
<div class="col-lg-9">
|
||||
<input type="text" class="form-control" name="slug" value="{{ $product->slug }}" placeholder="{{translate('Slug')}}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('Price')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-3 col-from-label">{{translate('Unit price')}}</label>
|
||||
<div class="col-lg-9">
|
||||
<input type="text" placeholder="{{translate('Unit price')}}" name="unit_price" class="form-control" value="{{$product->unit_price}}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-3 col-from-label">{{translate('Purchase price')}}</label>
|
||||
<div class="col-lg-9">
|
||||
<input type="number" lang="en" min="0" step="0.01" placeholder="{{translate('Purchase price')}}" name="purchase_price" class="form-control" value="{{$product->purchase_price}}" required>
|
||||
</div>
|
||||
</div>
|
||||
@foreach (\App\Models\Tax::where('tax_status', 1)->get() as $tax)
|
||||
@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-group row">
|
||||
<label class="col-lg-3 col-from-label">
|
||||
{{$tax->name}}
|
||||
</label>
|
||||
<div class="col-lg-6">
|
||||
<input type="hidden" value="{{$tax->id}}" name="tax_id[]">
|
||||
<input type="number" lang="en" min="0" step="0.01" placeholder="{{translate('tax')}}" name="tax[]" class="form-control" value="{{$tax_amount}}" required>
|
||||
</div>
|
||||
<div class="col-lg-3">
|
||||
<select class="form-control aiz-selectpicker" name="tax_type[]" required>
|
||||
<option value="amount" <?php if($tax_type == 'amount') echo "selected";?> >{{translate('Flat')}}</option>
|
||||
<option value="percent" <?php if($tax_type == 'percent') echo "selected";?> >{{translate('Percent')}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-3 col-from-label">{{translate('Discount')}}</label>
|
||||
<div class="col-lg-6">
|
||||
<input type="number" lang="en" min="0" step="0.01" placeholder="{{translate('Discount')}}" name="discount" class="form-control" value="{{ $product->discount }}" required>
|
||||
</div>
|
||||
<div class="col-lg-3">
|
||||
<select class="form-control aiz-selectpicker" name="discount_type" required>
|
||||
<option value="amount" <?php if($product->discount_type == 'amount') echo "selected";?> >{{translate('Flat')}}</option>
|
||||
<option value="percent" <?php if($product->discount_type == 'percent') echo "selected";?> >{{translate('Percent')}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('Description')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-3 col-from-label">{{translate('Description')}}</label>
|
||||
<div class="col-lg-9">
|
||||
<textarea class="aiz-text-editor" name="description">{{ $product->getTranslation('description', $lang) }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group mb-0 text-right mb-2">
|
||||
<button type="submit" class="btn btn-primary">{{translate('Update Product')}}</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
@endsection
|
||||
@@ -0,0 +1,166 @@
|
||||
@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('Digital Products') }}</h1>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<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">{{ max(0, auth()->user()->shop->product_upload_limit - auth()->user()->products()->count()) }}</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('seller.digitalproducts.create')}}">
|
||||
<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 Digital 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">
|
||||
<div class="card-header">
|
||||
<div class="col text-center text-md-left">
|
||||
<h5 class="mb-md-0 h6">{{ translate('All Products') }}</h5>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table aiz-table mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th width="30%">{{ translate('Name')}}</th>
|
||||
<th data-breakpoints="md">{{ translate('Category')}}</th>
|
||||
<th data-breakpoints="md">{{ translate('Base Price')}}</th>
|
||||
<th data-breakpoints="md">{{ translate('Published')}}</th>
|
||||
<th data-breakpoints="md">{{ translate('Featured')}}</th>
|
||||
<th class="text-right">{{ translate('Options')}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
@foreach ($products as $key => $product)
|
||||
<tr>
|
||||
<td>{{ $key+1 }}</td>
|
||||
<td><a href="{{ route('product', $product->slug) }}" target="_blank">{{ $product->getTranslation('name') }}</a></td>
|
||||
<td>
|
||||
@if ($product->category != null)
|
||||
{{ $product->category->getTranslation('name') }}
|
||||
@endif
|
||||
</td>
|
||||
<td>{{ $product->unit_price }}</td>
|
||||
<td><label class="aiz-switch aiz-switch-success mb-0">
|
||||
<input onchange="update_published(this)" value="{{ $product->id }}" type="checkbox" <?php if($product->published == 1) echo "checked";?> >
|
||||
<span class="slider round"></span></label>
|
||||
</td>
|
||||
<td><label class="aiz-switch aiz-switch-success mb-0">
|
||||
<input onchange="update_featured(this)" value="{{ $product->id }}" type="checkbox" <?php if($product->featured == 1) echo "checked";?> >
|
||||
<span class="slider round"></span></label>
|
||||
</td>
|
||||
<td class="text-right">
|
||||
<a href="{{route('seller.digitalproducts.edit', ['id'=>$product->id, 'lang'=>env('DEFAULT_LANGUAGE')] )}}" class="btn btn-soft-info btn-icon btn-circle btn-sm" title="{{ translate('Edit') }}">
|
||||
<i class="las la-edit"></i>
|
||||
</a>
|
||||
<a class="btn btn-soft-success btn-icon btn-circle btn-sm" href="{{route('seller.digitalproducts.download', encrypt($product->id))}}" title="{{ translate('Download') }}">
|
||||
<i class="las la-download"></i>
|
||||
</a>
|
||||
<a href="javascript:void(0)" class="btn btn-soft-danger btn-icon btn-circle btn-sm confirm-delete" data-href="{{route('seller.digitalproducts.destroy', $product->id)}}" title="{{ translate('Delete') }}">
|
||||
<i class="las la-trash"></i>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="aiz-pagination">
|
||||
{{ $products->links() }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
@section('modal')
|
||||
@include('modals.delete_modal')
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
<script type="text/javascript">
|
||||
function update_featured(el){
|
||||
if(el.checked){
|
||||
var status = 1;
|
||||
}
|
||||
else{
|
||||
var status = 0;
|
||||
}
|
||||
$.post('{{ route('seller.products.featured') }}', {_token:'{{ csrf_token() }}', id:el.value, status:status}, function(data){
|
||||
if(data == 1){
|
||||
AIZ.plugins.notify('success', '{{ translate('Featured products updated successfully') }}');
|
||||
}
|
||||
else{
|
||||
AIZ.plugins.notify('danger', '{{ translate('Something went wrong') }}');
|
||||
location.reload();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function update_published(el){
|
||||
if(el.checked){
|
||||
var status = 1;
|
||||
}
|
||||
else{
|
||||
var status = 0;
|
||||
}
|
||||
$.post('{{ route('seller.products.published') }}', {_token:'{{ csrf_token() }}', id:el.value, status:status}, function(data){
|
||||
if(data == 1){
|
||||
AIZ.plugins.notify('success', '{{ translate('Published products updated successfully') }}');
|
||||
}
|
||||
else if(data == 2){
|
||||
AIZ.plugins.notify('danger', '{{ translate('Please upgrade your package.') }}');
|
||||
location.reload();
|
||||
}
|
||||
else{
|
||||
AIZ.plugins.notify('danger', '{{ translate('Something went wrong') }}');
|
||||
location.reload();
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
@endsection
|
||||
@@ -0,0 +1,75 @@
|
||||
@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('Bulk Products Upload') }}</h1>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<table class="table aiz-table mb-0" style="font-size:14px; background-color: #cce5ff; border-color: #b8daff">
|
||||
<tr>
|
||||
<td>{{ translate('1. Download the skeleton file and fill it with data.')}}:</td>
|
||||
</tr>
|
||||
<tr >
|
||||
<td>{{ translate('2. You can download the example file to understand how the data must be filled.')}}:</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ translate('3. Once you have downloaded and filled the skeleton file, upload it in the form below and submit.')}}:</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ translate('4. After uploading products you need to edit them and set products images and choices.')}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
<a href="{{ static_asset('download/product_bulk_demo.xlsx') }}" download><button class="btn btn-primary mt-2">{{ translate('Download CSV') }}</button></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<table class="table aiz-table mb-0" style="font-size:14px;background-color: #cce5ff;border-color: #b8daff">
|
||||
<tr>
|
||||
<td>{{ translate('1. Category and Brand should be in numerical id.')}}:</td>
|
||||
</tr>
|
||||
<tr >
|
||||
<td>{{ translate('2. You can download the pdf to get Category and Brand id.')}}:</td>
|
||||
</tr>
|
||||
</table>
|
||||
<a href="{{ route('seller.pdf.download_category') }}"><button class="btn btn-primary mt-2">{{ translate('Download Category')}}</button></a>
|
||||
<a href="{{ route('seller.pdf.download_brand') }}"><button class="btn btn-primary mt-2">{{ translate('Download Brand')}}</button></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="col text-center text-md-left">
|
||||
<h5 class="mb-md-0 h6">{{ translate('Upload CSV File') }}</h5>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form class="form-horizontal" action="{{ route('seller.bulk_product_upload') }}" method="POST" enctype="multipart/form-data">
|
||||
@csrf
|
||||
<div class="form-group row">
|
||||
<label class="col-md-2 col-form-label">{{ translate('CSV') }}</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="custom-file">
|
||||
<label class="custom-file-label">
|
||||
<input type="file" name="bulk_file" class="custom-file-input" required>
|
||||
<span class="custom-file-name">{{ translate('Choose File')}}</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group mb-0 text-right">
|
||||
<button type="submit" class="btn btn-primary">{{translate('Upload CSV')}}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
@@ -0,0 +1,705 @@
|
||||
@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('Add Your Product') }}</h1>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Error Meassages -->
|
||||
@if ($errors->any())
|
||||
<div class="alert alert-danger">
|
||||
<ul>
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<form class="" action="{{ route('seller.products.store') }}" 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') }}</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') }}</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('Weight') }}
|
||||
<small>({{ translate('In Kg') }})</small></label>
|
||||
<div class="col-md-8">
|
||||
<input type="number" class="form-control" name="weight" step="0.01" value="0.00"
|
||||
placeholder="0.00">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-from-label">{{ translate('Minimum Purchase Qty') }}</label>
|
||||
<div class="col-md-8">
|
||||
<input type="number" lang="en" class="form-control" name="min_qty" value="1"
|
||||
min="1" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-from-label">{{ translate('Tags') }}</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') }}">
|
||||
</div>
|
||||
</div>
|
||||
@if (addon_is_activated('pos_system'))
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-from-label">{{ translate('Barcode') }}</label>
|
||||
<div class="col-md-8">
|
||||
<input type="text" class="form-control" name="barcode"
|
||||
placeholder="{{ translate('Barcode') }}">
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
@if (addon_is_activated('refund_request'))
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-from-label">{{ translate('Refundable') }}</label>
|
||||
<div class="col-md-8">
|
||||
<label class="aiz-switch aiz-switch-success mb-0">
|
||||
<input type="checkbox" name="refundable" checked value="1">
|
||||
<span></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
</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" 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" 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-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') }}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{ translate('Product Variation') }}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="form-group row">
|
||||
<div class="col-md-3">
|
||||
<input type="text" class="form-control" value="{{ translate('Colors') }}" disabled>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
<select class="form-control aiz-selectpicker" data-live-search="true" name="colors[]"
|
||||
data-selected-text-format="count" id="colors" multiple disabled>
|
||||
@foreach (\App\Models\Color::orderBy('name', 'asc')->get() as $key => $color)
|
||||
<option value="{{ $color->code }}"
|
||||
data-content="<span><span class='size-15px d-inline-block mr-2 rounded border' style='background:{{ $color->code }}'></span><span>{{ $color->name }}</span></span>">
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-1">
|
||||
<label class="aiz-switch aiz-switch-success mb-0">
|
||||
<input value="1" type="checkbox" name="colors_active">
|
||||
<span></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<div class="col-md-3">
|
||||
<input type="text" class="form-control" value="{{ translate('Attributes') }}"
|
||||
disabled>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
<select name="choice_attributes[]" id="choice_attributes"
|
||||
class="form-control aiz-selectpicker" data-live-search="true"
|
||||
data-selected-text-format="count" multiple
|
||||
data-placeholder="{{ translate('Choose Attributes') }}">
|
||||
@foreach (\App\Models\Attribute::all() as $key => $attribute)
|
||||
<option value="{{ $attribute->id }}">{{ $attribute->getTranslation('name') }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<p>{{ translate('Choose the attributes of this product and then input values of each attribute') }}
|
||||
</p>
|
||||
<br>
|
||||
</div>
|
||||
|
||||
<div class="customer_choice_options" id="customer_choice_options">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{ translate('Product price + stock') }}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-from-label">{{ translate('Unit price') }}</label>
|
||||
<div class="col-md-6">
|
||||
<input type="number" lang="en" min="0" value="0" step="0.01"
|
||||
placeholder="{{ translate('Unit price') }}" name="unit_price" class="form-control"
|
||||
required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 control-label"
|
||||
for="start_date">{{ translate('Discount Date Range') }}</label>
|
||||
<div class="col-md-9">
|
||||
<input type="text" class="form-control aiz-date-range" name="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 class="form-group row">
|
||||
<label class="col-md-3 col-from-label">{{ translate('Discount') }}</label>
|
||||
<div class="col-md-6">
|
||||
<input type="number" lang="en" min="0" value="0" step="0.01"
|
||||
placeholder="{{ translate('Discount') }}" name="discount" class="form-control"
|
||||
required>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<select class="form-control aiz-selectpicker" name="discount_type">
|
||||
<option value="amount">{{ translate('Flat') }}</option>
|
||||
<option value="percent">{{ translate('Percent') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="show-hide-div">
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-from-label">{{ translate('Quantity') }}</label>
|
||||
<div class="col-md-6">
|
||||
<input type="number" lang="en" min="0" value="0" step="1"
|
||||
placeholder="{{ translate('Quantity') }}" name="current_stock"
|
||||
class="form-control" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-from-label">
|
||||
{{ translate('SKU') }}
|
||||
</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" placeholder="{{ translate('SKU') }}" name="sku"
|
||||
class="form-control">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-from-label">
|
||||
{{ translate('External link') }}
|
||||
</label>
|
||||
<div class="col-md-9">
|
||||
<input type="text" placeholder="{{ translate('External link') }}"
|
||||
name="external_link" class="form-control">
|
||||
<small
|
||||
class="text-muted">{{ translate('Leave it blank if you do not use external site link') }}</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-from-label">
|
||||
{{ translate('External link button text') }}
|
||||
</label>
|
||||
<div class="col-md-9">
|
||||
<input type="text" placeholder="{{ translate('External link button text') }}"
|
||||
name="external_link_btn" class="form-control">
|
||||
<small
|
||||
class="text-muted">{{ translate('Leave it blank if you do not use external site link') }}</small>
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
<div class="sku_combination" id="sku_combination">
|
||||
|
||||
</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('Shipping configuration is maintained by Admin.') }}
|
||||
</p>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{ translate('Low Stock Quantity Warning') }}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="form-group mb-3">
|
||||
<label for="name">
|
||||
{{ translate('Quantity') }}
|
||||
</label>
|
||||
<input type="number" name="low_stock_quantity" value="1" min="0"
|
||||
step="1" class="form-control">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">
|
||||
{{ translate('Stock Visibility State') }}
|
||||
</h5>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-md-6 col-from-label">{{ translate('Show Stock Quantity') }}</label>
|
||||
<div class="col-md-6">
|
||||
<label class="aiz-switch aiz-switch-success mb-0">
|
||||
<input type="radio" name="stock_visibility_state" value="quantity" checked>
|
||||
<span></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-md-6 col-from-label">{{ translate('Show Stock With Text Only') }}</label>
|
||||
<div class="col-md-6">
|
||||
<label class="aiz-switch aiz-switch-success mb-0">
|
||||
<input type="radio" name="stock_visibility_state" value="text">
|
||||
<span></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-md-6 col-from-label">{{ translate('Hide Stock') }}</label>
|
||||
<div class="col-md-6">
|
||||
<label class="aiz-switch aiz-switch-success mb-0">
|
||||
<input type="radio" name="stock_visibility_state" value="hide">
|
||||
<span></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</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 activation is maintained by Admin.') }}
|
||||
</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="mar-all text-right mb-2">
|
||||
<button type="submit" name="button" value="publish"
|
||||
class="btn btn-primary">{{ translate('Upload Product') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
<script type="text/javascript">
|
||||
$("[name=shipping_type]").on("change", function() {
|
||||
$(".product_wise_shipping_div").hide();
|
||||
$(".flat_rate_shipping_div").hide();
|
||||
if ($(this).val() == 'product_wise') {
|
||||
$(".product_wise_shipping_div").show();
|
||||
}
|
||||
if ($(this).val() == 'flat_rate') {
|
||||
$(".flat_rate_shipping_div").show();
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
function add_more_customer_choice_option(i, name) {
|
||||
$.ajax({
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
|
||||
},
|
||||
type: "POST",
|
||||
url: '{{ route('seller.products.add-more-choice-option') }}',
|
||||
data: {
|
||||
attribute_id: i
|
||||
},
|
||||
success: function(data) {
|
||||
var obj = JSON.parse(data);
|
||||
$('#customer_choice_options').append('\
|
||||
<div class="form-group row">\
|
||||
<div class="col-md-3">\
|
||||
<input type="hidden" name="choice_no[]" value="' + i + '">\
|
||||
<input type="text" class="form-control" name="choice[]" value="' + name +
|
||||
'" placeholder="{{ translate('Choice Title') }}" readonly>\
|
||||
</div>\
|
||||
<div class="col-md-8">\
|
||||
<select class="form-control aiz-selectpicker attribute_choice" data-live-search="true" name="choice_options_' + i + '[]" multiple>\
|
||||
' + obj + '\
|
||||
</select>\
|
||||
</div>\
|
||||
</div>');
|
||||
AIZ.plugins.bootstrapSelect('refresh');
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
$('input[name="colors_active"]').on('change', function() {
|
||||
if (!$('input[name="colors_active"]').is(':checked')) {
|
||||
$('#colors').prop('disabled', true);
|
||||
AIZ.plugins.bootstrapSelect('refresh');
|
||||
} else {
|
||||
$('#colors').prop('disabled', false);
|
||||
AIZ.plugins.bootstrapSelect('refresh');
|
||||
}
|
||||
update_sku();
|
||||
});
|
||||
|
||||
$(document).on("change", ".attribute_choice", function() {
|
||||
update_sku();
|
||||
});
|
||||
|
||||
$('#colors').on('change', function() {
|
||||
update_sku();
|
||||
});
|
||||
|
||||
$('input[name="unit_price"]').on('keyup', function() {
|
||||
update_sku();
|
||||
});
|
||||
|
||||
// $('input[name="name"]').on('keyup', function() {
|
||||
// update_sku();
|
||||
// });
|
||||
|
||||
function delete_row(em) {
|
||||
$(em).closest('.form-group row').remove();
|
||||
update_sku();
|
||||
}
|
||||
|
||||
function delete_variant(em) {
|
||||
$(em).closest('.variant').remove();
|
||||
}
|
||||
|
||||
function update_sku() {
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: '{{ route('seller.products.sku_combination') }}',
|
||||
data: $('#choice_form').serialize(),
|
||||
success: function(data) {
|
||||
$('#sku_combination').html(data);
|
||||
AIZ.plugins.fooTable();
|
||||
if (data.length > 1) {
|
||||
$('#show-hide-div').hide();
|
||||
} else {
|
||||
$('#show-hide-div').show();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$('#choice_attributes').on('change', function() {
|
||||
$('#customer_choice_options').html(null);
|
||||
$.each($("#choice_attributes option:selected"), function() {
|
||||
add_more_customer_choice_option($(this).val(), $(this).text());
|
||||
});
|
||||
update_sku();
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
@@ -0,0 +1,851 @@
|
||||
@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('Update your product') }}</h1>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Error Meassages -->
|
||||
@if ($errors->any())
|
||||
<div class="alert alert-danger">
|
||||
<ul>
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<form class="" action="{{route('seller.products.update', $product->id)}}" method="POST" enctype="multipart/form-data"
|
||||
id="choice_form">
|
||||
<div class="row gutters-5">
|
||||
<div class="col-lg-8">
|
||||
<input name="_method" type="hidden" value="POST">
|
||||
<input type="hidden" name="lang" value="{{ $lang }}">
|
||||
<input type="hidden" name="id" value="{{ $product->id }}">
|
||||
@csrf
|
||||
<input type="hidden" name="added_by" value="seller">
|
||||
<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('seller.products.edit', ['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')}}</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">
|
||||
<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')}}</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-md-3 col-from-label">{{translate('Weight')}} <small>({{ translate('In Kg') }})</small></label>
|
||||
<div class="col-md-8">
|
||||
<input type="number" class="form-control" name="weight" value="{{ $product->weight }}" step="0.01" placeholder="0.00">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-3 col-from-label">{{translate('Minimum Purchase Qty')}}</label>
|
||||
<div class="col-lg-8">
|
||||
<input type="number" lang="en" class="form-control" name="min_qty"
|
||||
value="@if($product->min_qty <= 1){{1}}@else{{$product->min_qty}}@endif" min="1"
|
||||
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>
|
||||
|
||||
@if (addon_is_activated('pos_system'))
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-3 col-from-label">{{translate('Barcode')}}</label>
|
||||
<div class="col-lg-8">
|
||||
<input type="text" class="form-control" name="barcode"
|
||||
placeholder="{{ translate('Barcode') }}" value="{{ $product->barcode }}">
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if (addon_is_activated('refund_request'))
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-3 col-from-label">{{translate('Refundable')}}</label>
|
||||
<div class="col-lg-8">
|
||||
<label class="aiz-switch aiz-switch-success mb-0" style="margin-top:5px;">
|
||||
<input type="checkbox" name="refundable" @if ($product->refundable == 1) checked @endif value="1">
|
||||
<span class="slider round"></span></label>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
</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 class="form-group row">
|
||||
<label class="col-lg-3 col-from-label">{{translate('Gallery Images')}}</label>
|
||||
<div class="col-lg-8">
|
||||
<div id="photos">
|
||||
@if(is_array(json_decode($product->photos)))
|
||||
@foreach (json_decode($product->photos) as $key => $photo)
|
||||
<div class="col-md-4 col-sm-4 col-xs-6">
|
||||
<div class="img-upload-preview">
|
||||
<img loading="lazy" src="{{ uploaded_asset($photo) }}" alt=""
|
||||
class="img-responsive">
|
||||
<input type="hidden" name="previous_photos[]" value="{{ $photo }}">
|
||||
<button type="button" class="btn btn-danger close-btn remove-files"><i
|
||||
class="fa fa-times"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div> --}}
|
||||
{{-- <div class="form-group row">
|
||||
<label class="col-lg-3 col-from-label">{{translate('Thumbnail Image')}}
|
||||
<small>(290x300)</small></label>
|
||||
<div class="col-lg-8">
|
||||
<div id="thumbnail_img">
|
||||
@if ($product->thumbnail_img != null)
|
||||
<div class="col-md-4 col-sm-4 col-xs-6">
|
||||
<div class="img-upload-preview">
|
||||
<img loading="lazy" src="{{ uploaded_asset($product->thumbnail_img) }}" alt=""
|
||||
class="img-responsive">
|
||||
<input type="hidden" name="previous_thumbnail_img"
|
||||
value="{{ $product->thumbnail_img }}">
|
||||
<button type="button" class="btn btn-danger close-btn remove-files"><i
|
||||
class="fa fa-times"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
</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 Variation')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="form-group row">
|
||||
<div class="col-lg-3">
|
||||
<input type="text" class="form-control" value="{{translate('Colors')}}" disabled>
|
||||
</div>
|
||||
<div class="col-lg-8">
|
||||
<select class="form-control aiz-selectpicker" data-live-search="true"
|
||||
data-selected-text-format="count" name="colors[]" id="colors" multiple>
|
||||
@foreach (\App\Models\Color::orderBy('name', 'asc')->get() as $key => $color)
|
||||
<option value="{{ $color->code }}"
|
||||
data-content="<span><span class='size-15px d-inline-block mr-2 rounded border' style='background:{{ $color->code }}'></span><span>{{ $color->name }}</span></span>"
|
||||
<?php if(in_array($color->code, json_decode($product->colors))) echo 'selected'?>></option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-lg-1">
|
||||
<label class="aiz-switch aiz-switch-success mb-0">
|
||||
<input value="1" type="checkbox" name="colors_active"
|
||||
<?php if(count(json_decode($product->colors)) > 0) echo "checked";?>>
|
||||
<span></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<div class="col-lg-3">
|
||||
<input type="text" class="form-control" value="{{translate('Attributes')}}" disabled>
|
||||
</div>
|
||||
<div class="col-lg-8">
|
||||
<select name="choice_attributes[]" data-live-search="true" data-selected-text-format="count"
|
||||
id="choice_attributes" class="form-control aiz-selectpicker" multiple
|
||||
data-placeholder="{{ translate('Choose Attributes') }}">
|
||||
@foreach (\App\Models\Attribute::all() as $key => $attribute)
|
||||
<option value="{{ $attribute->id }}" @if($product->attributes != null &&
|
||||
in_array($attribute->id, json_decode($product->attributes, true))) selected
|
||||
@endif>{{ $attribute->getTranslation('name') }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="">
|
||||
<p>{{ translate('Choose the attributes of this product and then input values of each attribute') }}</p>
|
||||
<br>
|
||||
</div>
|
||||
|
||||
<div class="customer_choice_options" id="customer_choice_options">
|
||||
@foreach (json_decode($product->choice_options) as $key => $choice_option)
|
||||
<div class="form-group row">
|
||||
<div class="col-lg-3">
|
||||
<input type="hidden" name="choice_no[]" value="{{ $choice_option->attribute_id }}">
|
||||
<input type="text" class="form-control" name="choice[]"
|
||||
value="{{ \App\Models\Attribute::find($choice_option->attribute_id)->getTranslation('name') }}"
|
||||
placeholder="{{ translate('Choice Title') }}" disabled>
|
||||
</div>
|
||||
<div class="col-lg-8">
|
||||
<select class="form-control aiz-selectpicker attribute_choice" data-live-search="true" name="choice_options_{{ $choice_option->attribute_id }}[]" multiple>
|
||||
@foreach (\App\Models\AttributeValue::where('attribute_id', $choice_option->attribute_id)->get() as $row)
|
||||
<option value="{{ $row->value }}" @if( in_array($row->value, $choice_option->values)) selected @endif>
|
||||
{{ $row->value }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
{{-- <input type="text" class="form-control aiz-tag-input" name="choice_options_{{ $choice_option->attribute_id }}[]" placeholder="{{ translate('Enter choice values') }}" value="{{ implode(',', $choice_option->values) }}" data-on-change="update_sku"> --}}
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('Product price + stock')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-3 col-from-label">{{translate('Unit price')}}</label>
|
||||
<div class="col-lg-6">
|
||||
<input type="text" placeholder="{{translate('Unit price')}}" name="unit_price" class="form-control"
|
||||
value="{{$product->unit_price}}" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@php
|
||||
$date_range = '';
|
||||
if($product->discount_start_date){
|
||||
$start_date = date('d-m-Y H:i:s', $product->discount_start_date);
|
||||
$end_date = date('d-m-Y H:i:s', $product->discount_end_date);
|
||||
$date_range = $start_date.' to '.$end_date;
|
||||
}
|
||||
@endphp
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-3 col-from-label" for="start_date">{{translate('Discount Date Range')}}</label>
|
||||
<div class="col-lg-9">
|
||||
<input type="text" class="form-control aiz-date-range" value="{{ $date_range }}" name="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 class="form-group row">
|
||||
<label class="col-lg-3 col-from-label">{{translate('Discount')}}</label>
|
||||
<div class="col-lg-6">
|
||||
<input type="number" lang="en" min="0" step="0.01" placeholder="{{translate('Discount')}}"
|
||||
name="discount" class="form-control" value="{{ $product->discount }}" required>
|
||||
</div>
|
||||
<div class="col-lg-3">
|
||||
<select class="form-control aiz-selectpicker" name="discount_type" required>
|
||||
<option value="amount" <?php if($product->discount_type == 'amount') echo "selected";?>>
|
||||
{{translate('Flat')}}</option>
|
||||
<option value="percent" <?php if($product->discount_type == 'percent') echo "selected";?>>
|
||||
{{translate('Percent')}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="show-hide-div">
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-3 col-from-label">{{translate('Quantity')}}</label>
|
||||
<div class="col-lg-6">
|
||||
<input type="number" lang="en" value="{{ $product->stocks->first()->qty }}" step="1"
|
||||
placeholder="{{translate('Quantity')}}" name="current_stock" class="form-control">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-from-label">
|
||||
{{translate('SKU')}}
|
||||
</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" placeholder="{{ translate('SKU') }}" value="{{ $product->stocks->first()->sku }}" name="sku" class="form-control">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-from-label">
|
||||
{{translate('External link')}}
|
||||
</label>
|
||||
<div class="col-md-9">
|
||||
<input type="text" placeholder="{{ translate('External link') }}" name="external_link" value="{{ $product->external_link }}" class="form-control">
|
||||
<small class="text-muted">{{translate('Leave it blank if you do not use external site link')}}</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-from-label">
|
||||
{{translate('External link button text')}}
|
||||
</label>
|
||||
<div class="col-md-9">
|
||||
<input type="text" placeholder="{{ translate('External link button text') }}" name="external_link_btn" value="{{ $product->external_link_btn }}" class="form-control">
|
||||
<small class="text-muted">{{translate('Leave it blank if you do not use external site link')}}</small>
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
<div class="sku_combination" id="sku_combination">
|
||||
|
||||
</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')}}</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-lg-3 col-form-label">{{translate('Slug')}}</label>
|
||||
<div class="col-lg-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('Shipping configuration is maintained by Admin.') }}
|
||||
</p>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('Low Stock Quantity Warning')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="form-group mb-3">
|
||||
<label for="name">
|
||||
{{translate('Quantity')}}
|
||||
</label>
|
||||
<input type="number" name="low_stock_quantity" value="{{ $product->low_stock_quantity }}" min="0"
|
||||
step="1" class="form-control">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">
|
||||
{{translate('Stock Visibility State')}}
|
||||
</h5>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-md-6 col-from-label">{{translate('Show Stock Quantity')}}</label>
|
||||
<div class="col-md-6">
|
||||
<label class="aiz-switch aiz-switch-success mb-0">
|
||||
<input type="radio" name="stock_visibility_state" value="quantity"
|
||||
@if($product->stock_visibility_state == 'quantity') checked @endif>
|
||||
<span></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-md-6 col-from-label">{{translate('Show Stock With Text Only')}}</label>
|
||||
<div class="col-md-6">
|
||||
<label class="aiz-switch aiz-switch-success mb-0">
|
||||
<input type="radio" name="stock_visibility_state" value="text"
|
||||
@if($product->stock_visibility_state == 'text') checked @endif>
|
||||
<span></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-md-6 col-from-label">{{translate('Hide Stock')}}</label>
|
||||
<div class="col-md-6">
|
||||
<label class="aiz-switch aiz-switch-success mb-0">
|
||||
<input type="radio" name="stock_visibility_state" value="hide"
|
||||
@if($product->stock_visibility_state == 'hide') checked @endif>
|
||||
<span></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</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 activation is maintained by Admin.') }}
|
||||
</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="mar-all text-right mb-2">
|
||||
<button type="submit" name="button" value="publish"
|
||||
class="btn btn-primary">{{ translate('Update Product') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
@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();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function add_more_customer_choice_option(i, name){
|
||||
$.ajax({
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
|
||||
},
|
||||
type:"POST",
|
||||
url:'{{ route('seller.products.add-more-choice-option') }}',
|
||||
data:{
|
||||
attribute_id: i
|
||||
},
|
||||
success: function(data) {
|
||||
var obj = JSON.parse(data);
|
||||
$('#customer_choice_options').append('\
|
||||
<div class="form-group row">\
|
||||
<div class="col-md-3">\
|
||||
<input type="hidden" name="choice_no[]" value="'+i+'">\
|
||||
<input type="text" class="form-control" name="choice[]" value="'+name+'" placeholder="{{ translate('Choice Title') }}" readonly>\
|
||||
</div>\
|
||||
<div class="col-md-8">\
|
||||
<select class="form-control aiz-selectpicker attribute_choice" data-live-search="true" name="choice_options_'+ i +'[]" multiple>\
|
||||
'+obj+'\
|
||||
</select>\
|
||||
</div>\
|
||||
</div>');
|
||||
AIZ.plugins.bootstrapSelect('refresh');
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
$('input[name="colors_active"]').on('change', function() {
|
||||
if(!$('input[name="colors_active"]').is(':checked')){
|
||||
$('#colors').prop('disabled', true);
|
||||
AIZ.plugins.bootstrapSelect('refresh');
|
||||
}
|
||||
else{
|
||||
$('#colors').prop('disabled', false);
|
||||
AIZ.plugins.bootstrapSelect('refresh');
|
||||
}
|
||||
update_sku();
|
||||
});
|
||||
|
||||
$(document).on("change", ".attribute_choice",function() {
|
||||
update_sku();
|
||||
});
|
||||
|
||||
$('#colors').on('change', function() {
|
||||
update_sku();
|
||||
});
|
||||
|
||||
function delete_row(em){
|
||||
$(em).closest('.form-group').remove();
|
||||
update_sku();
|
||||
}
|
||||
|
||||
function delete_variant(em){
|
||||
$(em).closest('.variant').remove();
|
||||
}
|
||||
|
||||
function update_sku(){
|
||||
$.ajax({
|
||||
type:"POST",
|
||||
url:'{{ route('seller.products.sku_combination_edit') }}',
|
||||
data:$('#choice_form').serialize(),
|
||||
success: function(data){
|
||||
$('#sku_combination').html(data);
|
||||
AIZ.uploader.previewGenerate();
|
||||
AIZ.plugins.fooTable();
|
||||
if (data.length > 1) {
|
||||
$('#show-hide-div').hide();
|
||||
}
|
||||
else {
|
||||
$('#show-hide-div').show();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
AIZ.plugins.tagify();
|
||||
|
||||
|
||||
$(document).ready(function(){
|
||||
update_sku();
|
||||
|
||||
$('.remove-files').on('click', function(){
|
||||
$(this).parents(".col-md-4").remove();
|
||||
});
|
||||
});
|
||||
|
||||
$('#choice_attributes').on('change', function() {
|
||||
$.each($("#choice_attributes option:selected"), function(j, attribute){
|
||||
flag = false;
|
||||
$('input[name="choice_no[]"]').each(function(i, choice_no) {
|
||||
if($(attribute).val() == $(choice_no).val()){
|
||||
flag = true;
|
||||
}
|
||||
});
|
||||
if(!flag){
|
||||
add_more_customer_choice_option($(attribute).val(), $(attribute).text());
|
||||
}
|
||||
});
|
||||
|
||||
var str = @php echo $product->attributes @endphp;
|
||||
|
||||
$.each(str, function(index, value){
|
||||
flag = false;
|
||||
$.each($("#choice_attributes option:selected"), function(j, attribute){
|
||||
if(value == $(attribute).val()){
|
||||
flag = true;
|
||||
}
|
||||
});
|
||||
if(!flag){
|
||||
$('input[name="choice_no[]"][value="'+value+'"]').parent().parent().remove();
|
||||
}
|
||||
});
|
||||
|
||||
update_sku();
|
||||
});
|
||||
|
||||
|
||||
</script>
|
||||
@endsection
|
||||
@@ -0,0 +1,268 @@
|
||||
@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('Products') }}</h1>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<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">{{ max(0, auth()->user()->shop->product_upload_limit - auth()->user()->products()->count()) }}</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('seller.products.create')}}">
|
||||
<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 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 Products') }}</h5>
|
||||
</div>
|
||||
|
||||
<div class="dropdown mb-2 mb-md-0">
|
||||
<button class="btn border dropdown-toggle" type="button" data-toggle="dropdown">
|
||||
{{translate('Bulk Action')}}
|
||||
</button>
|
||||
<div class="dropdown-menu dropdown-menu-right">
|
||||
<a class="dropdown-item confirm-alert" href="javascript:void(0)" data-target="#bulk-delete-modal"> {{translate('Delete selection')}}</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="input-group input-group-sm">
|
||||
<input type="text" class="form-control" id="search" name="search" @isset($search) value="{{ $search }}" @endisset placeholder="{{ translate('Search product') }}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table aiz-table mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
<div class="form-group">
|
||||
<div class="aiz-checkbox-inline">
|
||||
<label class="aiz-checkbox">
|
||||
<input type="checkbox" class="check-all">
|
||||
<span class="aiz-square-check"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</th>
|
||||
<th width="30%">{{ translate('Name')}}</th>
|
||||
<th data-breakpoints="md">{{ translate('Category')}}</th>
|
||||
<th data-breakpoints="md">{{ translate('Current Qty')}}</th>
|
||||
<th>{{ translate('Base Price')}}</th>
|
||||
@if(get_setting('product_approve_by_admin') == 1)
|
||||
<th data-breakpoints="md">{{ translate('Approval')}}</th>
|
||||
@endif
|
||||
<th data-breakpoints="md">{{ translate('Published')}}</th>
|
||||
<th data-breakpoints="md">{{ translate('Featured')}}</th>
|
||||
<th data-breakpoints="md" class="text-right">{{ translate('Options')}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
@foreach ($products as $key => $product)
|
||||
<tr>
|
||||
<td>
|
||||
<div class="form-group d-inline-block">
|
||||
<label class="aiz-checkbox">
|
||||
<input type="checkbox" class="check-one" name="id[]" value="{{$product->id}}">
|
||||
<span class="aiz-square-check"></span>
|
||||
</label>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<a href="{{ route('product', $product->slug) }}" target="_blank" class="text-reset">
|
||||
{{ $product->getTranslation('name') }}
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
@if ($product->category != null)
|
||||
{{ $product->category->getTranslation('name') }}
|
||||
@endif
|
||||
</td>
|
||||
<td>
|
||||
@php
|
||||
$qty = 0;
|
||||
foreach ($product->stocks as $key => $stock) {
|
||||
$qty += $stock->qty;
|
||||
}
|
||||
echo $qty;
|
||||
@endphp
|
||||
</td>
|
||||
<td>{{ $product->unit_price }}</td>
|
||||
@if(get_setting('product_approve_by_admin') == 1)
|
||||
<td>
|
||||
@if ($product->approved == 1)
|
||||
<span class="badge badge-inline badge-success">{{ translate('Approved')}}</span>
|
||||
@else
|
||||
<span class="badge badge-inline badge-info">{{ translate('Pending')}}</span>
|
||||
@endif
|
||||
</td>
|
||||
@endif
|
||||
<td>
|
||||
<label class="aiz-switch aiz-switch-success mb-0">
|
||||
<input onchange="update_published(this)" value="{{ $product->id }}" type="checkbox" <?php if($product->published == 1) echo "checked";?> >
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
</td>
|
||||
<td>
|
||||
<label class="aiz-switch aiz-switch-success mb-0">
|
||||
<input onchange="update_featured(this)" value="{{ $product->id }}" type="checkbox" <?php if($product->seller_featured == 1) echo "checked";?> >
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
</td>
|
||||
<td class="text-right">
|
||||
<a class="btn btn-soft-info btn-icon btn-circle btn-sm" href="{{route('seller.products.edit', ['id'=>$product->id, 'lang'=>env('DEFAULT_LANGUAGE')])}}" title="{{ translate('Edit') }}">
|
||||
<i class="las la-edit"></i>
|
||||
</a>
|
||||
<a href="{{route('seller.products.duplicate', $product->id)}}" class="btn btn-soft-success btn-icon btn-circle btn-sm" title="{{ translate('Duplicate') }}">
|
||||
<i class="las la-copy"></i>
|
||||
</a>
|
||||
<a href="#" class="btn btn-soft-danger btn-icon btn-circle btn-sm confirm-delete" data-href="{{route('seller.products.destroy', $product->id)}}" title="{{ translate('Delete') }}">
|
||||
<i class="las la-trash"></i>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="aiz-pagination">
|
||||
{{ $products->links() }}
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
@section('modal')
|
||||
<!-- Delete modal -->
|
||||
@include('modals.delete_modal')
|
||||
<!-- Bulk Delete modal -->
|
||||
@include('modals.bulk_delete_modal')
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
<script type="text/javascript">
|
||||
|
||||
$(document).on("change", ".check-all", function() {
|
||||
if(this.checked) {
|
||||
// Iterate each checkbox
|
||||
$('.check-one:checkbox').each(function() {
|
||||
this.checked = true;
|
||||
});
|
||||
} else {
|
||||
$('.check-one:checkbox').each(function() {
|
||||
this.checked = false;
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
function update_featured(el){
|
||||
if(el.checked){
|
||||
var status = 1;
|
||||
}
|
||||
else{
|
||||
var status = 0;
|
||||
}
|
||||
$.post('{{ route('seller.products.featured') }}', {_token:'{{ csrf_token() }}', id:el.value, status:status}, function(data){
|
||||
if(data == 1){
|
||||
AIZ.plugins.notify('success', '{{ translate('Featured products updated successfully') }}');
|
||||
}
|
||||
else{
|
||||
AIZ.plugins.notify('danger', '{{ translate('Something went wrong') }}');
|
||||
location.reload();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function update_published(el){
|
||||
if(el.checked){
|
||||
var status = 1;
|
||||
}
|
||||
else{
|
||||
var status = 0;
|
||||
}
|
||||
$.post('{{ route('seller.products.published') }}', {_token:'{{ csrf_token() }}', id:el.value, status:status}, function(data){
|
||||
if(data == 1){
|
||||
AIZ.plugins.notify('success', '{{ translate('Published products updated successfully') }}');
|
||||
}
|
||||
else if(data == 2){
|
||||
AIZ.plugins.notify('danger', '{{ translate('Please upgrade your package.') }}');
|
||||
location.reload();
|
||||
}
|
||||
else{
|
||||
AIZ.plugins.notify('danger', '{{ translate('Something went wrong') }}');
|
||||
location.reload();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function bulk_delete() {
|
||||
var data = new FormData($('#sort_products')[0]);
|
||||
$.ajax({
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
|
||||
},
|
||||
url: "{{route('seller.products.bulk-delete')}}",
|
||||
type: 'POST',
|
||||
data: data,
|
||||
cache: false,
|
||||
contentType: false,
|
||||
processData: false,
|
||||
success: function (response) {
|
||||
if(response == 1) {
|
||||
location.reload();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
</script>
|
||||
@endsection
|
||||
@@ -0,0 +1,68 @@
|
||||
@extends('seller.layouts.app')
|
||||
|
||||
@section('panel_content')
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{ translate('Product Queries') }}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table aiz-table mb-0" cellspacing="0" width="100%">
|
||||
<thead>
|
||||
<tr>
|
||||
<th data-breakpoints="lg">#</th>
|
||||
<th>{{ translate('User Name') }}</th>
|
||||
<th>{{ translate('Product Name') }}</th>
|
||||
<th data-breakpoints="lg">{{ translate('Question') }}</th>
|
||||
<th data-breakpoints="lg">{{ translate('Reply') }}</th>
|
||||
<th>{{ translate('status') }}</th>
|
||||
<th class="text-right">{{ translate('Options') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($queries as $key => $query)
|
||||
<tr>
|
||||
<td>{{ $queries->firstItem() + $key }}</td>
|
||||
<td>
|
||||
|
||||
@if(isset($query->user->name))
|
||||
{{ $query->user->name }}
|
||||
@else
|
||||
{{ translate('Product Not found') }}
|
||||
@endif
|
||||
</td>
|
||||
<td>
|
||||
@if(isset($query->product->name))
|
||||
{{ $query->product->name }}
|
||||
@else
|
||||
{{ translate('Product Not found') }}
|
||||
@endif
|
||||
</td>
|
||||
<td>{{ Str::limit($query->question, 100) }}</td>
|
||||
<td>{{ Str::limit($query->reply, 100) }}</td>
|
||||
<td>
|
||||
<span
|
||||
class="badge badge-inline {{ $query->reply == null ? 'badge-warning' : 'badge-success' }}">
|
||||
{{ $query->reply == null ? translate('Not Replied') : translate('Replied') }}
|
||||
</span>
|
||||
</td>
|
||||
<td class="text-right">
|
||||
<a class="btn btn-soft-primary btn-icon btn-circle btn-sm"
|
||||
href="{{ route('seller.product_query.show', encrypt($query->id)) }}"
|
||||
title="{{ translate('View') }}">
|
||||
<i class="las la-eye"></i>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="aiz-pagination">
|
||||
{{ $queries->appends(request()->input())->links() }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('modal')
|
||||
@include('modals.delete_modal')
|
||||
@endsection
|
||||
@@ -0,0 +1,53 @@
|
||||
@extends('seller.layouts.app')
|
||||
|
||||
@section('panel_content')
|
||||
<div class="col-lg-12">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="card-title">
|
||||
{{ $query->product->getTranslation('name') }}
|
||||
</h5>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<ul class="list-group list-group-flush">
|
||||
<li class="list-group-item px-0">
|
||||
<div class="media mb-2">
|
||||
<img class="avatar avatar-xs mr-3"
|
||||
@if ($query->user != null) src="{{ uploaded_asset($query->user->avatar_original) }}" @endif
|
||||
onerror="this.onerror=null;this.src='{{ static_asset('assets/img/avatar-place.png') }}';">
|
||||
<div class="media-body">
|
||||
<h6 class="mb-0 fw-600">
|
||||
@if ($query->user != null)
|
||||
{{ $query->user->name }}
|
||||
@endif
|
||||
</h6>
|
||||
<p class="opacity-50">{{ $query->created_at->diffForHumans() }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<p>
|
||||
{{ strip_tags($query->question) }}
|
||||
</p>
|
||||
</li>
|
||||
</ul>
|
||||
@if (Auth::user()->id == $query->seller_id)
|
||||
<form action="{{ route('seller.product_query.reply',$query->id) }}" method="POST">
|
||||
@method('put')
|
||||
@csrf
|
||||
<input type="hidden" name="conversation_id" value="{{ $query->id }}">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<textarea class="form-control" rows="4" name="reply" placeholder="{{ translate('Type your reply') }}"
|
||||
required></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
<div class="text-right">
|
||||
<button type="submit" class="btn btn-info">{{ translate('Send') }}</button>
|
||||
</div>
|
||||
</form>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -0,0 +1,111 @@
|
||||
<form class="form-default" role="form" action="{{ route('seller.addresses.update', $address_data->id) }}" method="POST">
|
||||
@csrf
|
||||
<div class="p-3">
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<label>{{ translate('Address')}}</label>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<textarea class="form-control mb-3" placeholder="{{ translate('Your Address')}}" rows="2" name="address" required>{{ $address_data->address }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<label>{{ translate('Country')}}</label>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<div class="mb-3">
|
||||
<select class="form-control aiz-selectpicker" data-live-search="true" data-placeholder="{{ translate('Select your country')}}" name="country_id" id="edit_country" required>
|
||||
<option value="">{{ translate('Select your country') }}</option>
|
||||
@foreach (\App\Models\Country::where('status', 1)->get() as $key => $country)
|
||||
<option value="{{ $country->id }}" @if($address_data->country_id == $country->id) selected @endif>
|
||||
{{ $country->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<label>{{ translate('State')}}</label>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<select class="form-control mb-3 aiz-selectpicker" name="state_id" id="edit_state" data-live-search="true" required>
|
||||
@foreach ($states as $key => $state)
|
||||
<option value="{{ $state->id }}" @if($address_data->state_id == $state->id) selected @endif>
|
||||
{{ $state->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<label>{{ translate('City')}}</label>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<select class="form-control mb-3 aiz-selectpicker" data-live-search="true" name="city_id" required>
|
||||
@foreach ($cities as $key => $city)
|
||||
<option value="{{ $city->id }}" @if($address_data->city_id == $city->id) selected @endif>
|
||||
{{ $city->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if (get_setting('google_map') == 1)
|
||||
<div class="row">
|
||||
<input id="edit_searchInput" class="controls" type="text" placeholder="Enter a location">
|
||||
<div id="edit_map"></div>
|
||||
<ul id="geoData">
|
||||
<li style="display: none;">{{ translate('Full Address') }}: <span id="location"></span></li>
|
||||
<li style="display: none;">{{ translate('Postal Code') }}: <span id="postal_code"></span></li>
|
||||
<li style="display: none;">{{ translate('Country') }}: <span id="country"></span></li>
|
||||
<li style="display: none;">{{ translate('Latitude') }}: <span id="lat"></span></li>
|
||||
<li style="display: none;">{{ translate('Longitude') }}: <span id="lon"></span></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-2" id="">
|
||||
<label for="exampleInputuname">{{ translate('Longitude') }}</label>
|
||||
</div>
|
||||
<div class="col-md-10" id="">
|
||||
<input type="text" class="form-control mb-3" id="edit_longitude" name="longitude" value="{{ $address_data->longitude }}" readonly="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-2" id="">
|
||||
<label for="exampleInputuname">{{ translate('Latitude') }}</label>
|
||||
</div>
|
||||
<div class="col-md-10" id="">
|
||||
<input type="text" class="form-control mb-3" id="edit_latitude" name="latitude" value="{{ $address_data->latitude }}" readonly="">
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<label>{{ translate('Postal code')}}</label>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<input type="text" class="form-control mb-3" placeholder="{{ translate('Your Postal Code')}}" value="{{ $address_data->postal_code }}" name="postal_code" value="" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<label>{{ translate('Phone')}}</label>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<input type="text" class="form-control mb-3" placeholder="{{ translate('+880')}}" value="{{ $address_data->phone }}" name="phone" value="" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group text-right">
|
||||
<button type="submit" class="btn btn-sm btn-primary">{{translate('Save')}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
521
desarrollo2/resources/views/seller/profile/index.blade.php
Normal file
521
desarrollo2/resources/views/seller/profile/index.blade.php
Normal file
@@ -0,0 +1,521 @@
|
||||
@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('Manage Profile') }}</h1>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<form action="{{ route('seller.profile.update', $user->id) }}" method="POST" enctype="multipart/form-data">
|
||||
<input name="_method" type="hidden" value="POST">
|
||||
@csrf
|
||||
<!-- Basic Info-->
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{ translate('Basic Info')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="form-group row">
|
||||
<label class="col-md-2 col-form-label" for="name">{{ translate('Your Name') }}</label>
|
||||
<div class="col-md-10">
|
||||
<input type="text" name="name" value="{{ $user->name }}" id="name" class="form-control" placeholder="{{ translate('Your Name') }}" required>
|
||||
@error('name')
|
||||
<small class="form-text text-danger">{{ $message }}</small>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-md-2 col-form-label" for="phone">{{ translate('Your Phone') }}</label>
|
||||
<div class="col-md-10">
|
||||
<input type="text" name="phone" value="{{ $user->phone }}" id="phone" class="form-control" placeholder="{{ translate('Your Phone')}}">
|
||||
@error('phone')
|
||||
<small class="form-text text-danger">{{ $message }}</small>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-md-2 col-form-label">{{ translate('Photo') }}</label>
|
||||
<div class="col-md-10">
|
||||
<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="photo" value="{{ $user->avatar_original }}" class="selected-files">
|
||||
</div>
|
||||
<div class="file-preview box sm">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-md-2 col-form-label" for="password">{{ translate('Your Password') }}</label>
|
||||
<div class="col-md-10">
|
||||
<input type="password" name="new_password" id="password" class="form-control" placeholder="{{ translate('New Password') }}">
|
||||
@error('new_password')
|
||||
<small class="form-text text-danger">{{ $message }}</small>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-md-2 col-form-label" for="confirm_password">{{ translate('Confirm Password') }}</label>
|
||||
<div class="col-md-10">
|
||||
<input type="password" name="confirm_password" id="confirm_password" class="form-control" placeholder="{{ translate('Confirm Password') }}" >
|
||||
@error('confirm_password')
|
||||
<small class="form-text text-danger">{{ $message }}</small>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Payment System -->
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{ translate('Payment Setting')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<label class="col-md-3 col-form-label">{{ translate('Cash Payment') }}</label>
|
||||
<div class="col-md-9">
|
||||
<label class="aiz-switch aiz-switch-success mb-3">
|
||||
{{-- <input value="1" name="cash_on_delivery_status" type="checkbox" @if ($user->shop->cash_on_delivery_status == 1) checked @endif> --}}
|
||||
@if(isset($user) && isset($user->shop) && $user->shop->cash_on_delivery_status == 1)
|
||||
<input value="1" name="cash_on_delivery_status" type="checkbox" checked>
|
||||
@else
|
||||
<input value="1" name="cash_on_delivery_status" type="checkbox">
|
||||
@endif
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label class="col-md-3 col-form-label">{{ translate('Bank Payment') }}</label>
|
||||
<div class="col-md-9">
|
||||
<label class="aiz-switch aiz-switch-success mb-3">
|
||||
{{-- <input value="1" name="bank_payment_status" type="checkbox" @if ($user->shop->bank_payment_status == 1) checked @endif> --}}
|
||||
|
||||
@if(isset($user) && isset($user->shop) && $user->shop->bank_payment_status == 1)
|
||||
<input value="1" name="bank_payment_status" type="checkbox" checked>
|
||||
@else
|
||||
<input value="1" name="bank_payment_status" type="checkbox">
|
||||
@endif
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label class="col-md-3 col-form-label" for="bank_name">{{ translate('Bank Name') }}</label>
|
||||
<div class="col-md-9">
|
||||
{{-- <input type="text" name="bank_name" value="{{ $user->shop->bank_name }}" id="bank_name" class="form-control mb-3" placeholder="{{ translate('Bank Name')}}"> --}}
|
||||
|
||||
@if(isset($user) && isset($user->shop) && isset($user->shop->bank_name))
|
||||
<input type="text" name="bank_name" value="{{ $user->shop->bank_name }}" id="bank_name" class="form-control mb-3" placeholder="{{ translate('Bank Name')}}">
|
||||
@endif
|
||||
@error('phone')
|
||||
<small class="form-text text-danger">{{ $message }}</small>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label class="col-md-3 col-form-label" for="bank_acc_name">{{ translate('Bank Account Name') }}</label>
|
||||
<div class="col-md-9">
|
||||
{{-- <input type="text" name="bank_acc_name" value="{{ $user->shop->bank_acc_name }}" id="bank_acc_name" class="form-control mb-3" placeholder="{{ translate('Bank Account Name')}}"> --}}
|
||||
@if(isset($user) && isset($user->shop) && isset($user->shop->bank_acc_name))
|
||||
<input type="text" name="bank_acc_name" value="{{ $user->shop->bank_acc_name }}" id="bank_acc_name" class="form-control mb-3" placeholder="{{ translate('Bank Account Name')}}">
|
||||
@endif
|
||||
@error('bank_acc_name')
|
||||
<small class="form-text text-danger">{{ $message }}</small>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label class="col-md-3 col-form-label" for="bank_acc_no">{{ translate('Bank Account Number') }}</label>
|
||||
<div class="col-md-9">
|
||||
{{-- <input type="text" name="bank_acc_no" value="{{ $user->shop->bank_acc_no }}" id="bank_acc_no" class="form-control mb-3" placeholder="{{ translate('Bank Account Number')}}"> --}}
|
||||
@if(isset($user) && isset($user->shop) && isset($user->shop->bank_acc_no))
|
||||
<input ... type="text" name="bank_acc_no" value="{{ $user->shop->bank_acc_no }}" id="bank_acc_no" class="form-control mb-3" placeholder="{{ translate('Bank Account Number')}}">
|
||||
@endif
|
||||
@error('bank_acc_no')
|
||||
<small class="form-text text-danger">{{ $message }}</small>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label class="col-md-3 col-form-label" for="bank_routing_no">{{ translate('Bank Routing Number') }}</label>
|
||||
<div class="col-md-9">
|
||||
{{-- <input type="number" name="bank_routing_no" value="{{ $user->shop->bank_routing_no }}" id="bank_routing_no" lang="en" class="form-control mb-3" placeholder="{{ translate('Bank Routing Number')}}"> --}}
|
||||
<input type="number" name="bank_routing_no" value="{{ optional($user->shop)->bank_routing_no }}" id="bank_routing_no" lang="en" class="form-control mb-3" placeholder="{{ translate('Bank Routing Number')}}">
|
||||
@error('bank_routing_no')
|
||||
<small class="form-text text-danger">{{ $message }}</small>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group mb-0 text-right">
|
||||
<button type="submit" class="btn btn-primary">{{translate('Update Profile')}}</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<br>
|
||||
|
||||
<!-- Address -->
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{ translate('Address')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="row gutters-10">
|
||||
@foreach ($addresses as $key => $address)
|
||||
<div class="col-lg-4">
|
||||
<div class="border p-3 pr-5 rounded mb-3 position-relative">
|
||||
<div>
|
||||
<span class="w-50 fw-600">{{ translate('Address') }}:</span>
|
||||
<span class="ml-2">{{ $address->address }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span class="w-50 fw-600">{{ translate('Postal Code') }}:</span>
|
||||
<span class="ml-2">{{ $address->postal_code }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span class="w-50 fw-600">{{ translate('City') }}:</span>
|
||||
<span class="ml-2">{{ optional($address->city)->name }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span class="w-50 fw-600">{{ translate('State') }}:</span>
|
||||
<span class="ml-2">{{ optional($address->state)->name }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span class="w-50 fw-600">{{ translate('Country') }}:</span>
|
||||
<span class="ml-2">{{ optional($address->country)->name }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span class="w-50 fw-600">{{ translate('Phone') }}:</span>
|
||||
<span class="ml-2">{{ $address->phone }}</span>
|
||||
</div>
|
||||
@if ($address->set_default)
|
||||
<div class="position-absolute right-0 bottom-0 pr-2 pb-3">
|
||||
<span class="badge badge-inline badge-primary">{{ translate('Default') }}</span>
|
||||
</div>
|
||||
@endif
|
||||
<div class="dropdown position-absolute right-0 top-0">
|
||||
<button class="btn bg-gray px-2" type="button" data-toggle="dropdown">
|
||||
<i class="la la-ellipsis-v"></i>
|
||||
</button>
|
||||
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdownMenuButton">
|
||||
<a class="dropdown-item" onclick="edit_address('{{$address->id}}')">
|
||||
{{ translate('Edit') }}
|
||||
</a>
|
||||
@if (!$address->set_default)
|
||||
<a class="dropdown-item" href="{{ route('seller.addresses.set_default', $address->id) }}">{{ translate('Make This Default') }}</a>
|
||||
@endif
|
||||
<a class="dropdown-item" href="{{ route('seller.addresses.destroy', $address->id) }}">{{ translate('Delete') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
<div class="col-lg-4 mx-auto" onclick="add_new_address()">
|
||||
<div class="border p-3 rounded mb-3 c-pointer text-center bg-light">
|
||||
<i class="la la-plus la-2x"></i>
|
||||
<div class="alpha-7">{{ translate('Add New Address') }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Change Email -->
|
||||
<form action="{{ route('user.change.email') }}" method="POST">
|
||||
@csrf
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{ translate('Change your email')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<label>{{ translate('Your Email') }}</label>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<div class="input-group mb-3">
|
||||
<input type="email" class="form-control" placeholder="{{ translate('Your Email')}}" name="email" value="{{ $user->email }}" />
|
||||
<div class="input-group-append">
|
||||
<button type="button" class="btn btn-outline-secondary new-email-verification">
|
||||
<span class="d-none loading">
|
||||
<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span>{{ translate('Sending Email...') }}
|
||||
</span>
|
||||
<span class="default">{{ translate('Verify') }}</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group mb-0 text-right">
|
||||
<button type="submit" class="btn btn-primary">{{translate('Update Email')}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
@endsection
|
||||
|
||||
@section('modal')
|
||||
{{-- New Address Modal --}}
|
||||
<div class="modal fade" id="new-address-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('New Address') }}</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<form class="form-default" role="form" action="{{ route('seller.addresses.store') }}" method="POST">
|
||||
@csrf
|
||||
<div class="modal-body">
|
||||
<div class="p-3">
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<label>{{ translate('Address')}}</label>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<textarea class="form-control mb-3" placeholder="{{ translate('Your Address')}}" rows="2" name="address" required></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<label>{{ translate('Country')}}</label>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<div class="mb-3">
|
||||
<select class="form-control aiz-selectpicker" data-live-search="true" data-placeholder="{{ translate('Select your country') }}" name="country_id" required>
|
||||
<option value="">{{ translate('Select your country') }}</option>
|
||||
@foreach (\App\Models\Country::where('status', 1)->get() as $key => $country)
|
||||
<option value="{{ $country->id }}">{{ $country->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<label>{{ translate('State')}}</label>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<select class="form-control mb-3 aiz-selectpicker" data-live-search="true" name="state_id" required>
|
||||
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<label>{{ translate('City')}}</label>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<select class="form-control mb-3 aiz-selectpicker" data-live-search="true" name="city_id" required>
|
||||
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if (get_setting('google_map') == 1)
|
||||
<div class="row">
|
||||
<input id="searchInput" class="controls" type="text" placeholder="{{translate('Enter a location')}}">
|
||||
<div id="map"></div>
|
||||
<ul id="geoData">
|
||||
<li style="display: none;">{{ translate('Full Address') }}: <span id="location"></span></li>
|
||||
<li style="display: none;">{{ translate('Postal Code') }}: <span id="postal_code"></span></li>
|
||||
<li style="display: none;">{{ translate('Country') }}: <span id="country"></span></li>
|
||||
<li style="display: none;">{{ translate('Latitude') }}: <span id="lat"></span></li>
|
||||
<li style="display: none;">{{ translate('Longitude') }}: <span id="lon"></span></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-2" id="">
|
||||
<label for="exampleInputuname">{{ translate('Longitude') }}</label>
|
||||
</div>
|
||||
<div class="col-md-10" id="">
|
||||
<input type="text" class="form-control mb-3" id="longitude" name="longitude" readonly="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-2" id="">
|
||||
<label for="exampleInputuname">{{ translate('Latitude') }}</label>
|
||||
</div>
|
||||
<div class="col-md-10" id="">
|
||||
<input type="text" class="form-control mb-3" id="latitude" name="latitude" readonly="">
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<label>{{ translate('Postal code')}}</label>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<input type="text" class="form-control mb-3" placeholder="{{ translate('Your Postal Code')}}" name="postal_code" value="" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<label>{{ translate('Phone')}}</label>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<input type="text" class="form-control mb-3" placeholder="{{ translate('+880')}}" name="phone" value="" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group text-right">
|
||||
<button type="submit" class="btn btn-sm btn-primary">{{translate('Save')}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{-- Edit Address Modal --}}
|
||||
<div class="modal fade" id="edit-address-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('New Address') }}</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="modal-body" id="edit_modal_body">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
<script type="text/javascript">
|
||||
|
||||
$('.new-email-verification').on('click', function() {
|
||||
$(this).find('.loading').removeClass('d-none');
|
||||
$(this).find('.default').addClass('d-none');
|
||||
var email = $("input[name=email]").val();
|
||||
|
||||
$.post('{{ route('user.new.verify') }}', {_token:'{{ csrf_token() }}', email: email}, function(data){
|
||||
data = JSON.parse(data);
|
||||
$('.default').removeClass('d-none');
|
||||
$('.loading').addClass('d-none');
|
||||
if(data.status == 2)
|
||||
AIZ.plugins.notify('warning', data.message);
|
||||
else if(data.status == 1)
|
||||
AIZ.plugins.notify('success', data.message);
|
||||
else
|
||||
AIZ.plugins.notify('danger', data.message);
|
||||
});
|
||||
});
|
||||
|
||||
function add_new_address(){
|
||||
$('#new-address-modal').modal('show');
|
||||
}
|
||||
|
||||
function edit_address(address) {
|
||||
var url = '{{ route("seller.addresses.edit", ":id") }}';
|
||||
url = url.replace(':id', address);
|
||||
|
||||
$.ajax({
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
|
||||
},
|
||||
url: url,
|
||||
type: 'GET',
|
||||
success: function (response) {
|
||||
$('#edit_modal_body').html(response.html);
|
||||
$('#edit-address-modal').modal('show');
|
||||
AIZ.plugins.bootstrapSelect('refresh');
|
||||
|
||||
@if (get_setting('google_map') == 1)
|
||||
var lat = -33.8688;
|
||||
var long = 151.2195;
|
||||
|
||||
if(response.data.address_data.latitude && response.data.address_data.longitude) {
|
||||
lat = parseFloat(response.data.address_data.latitude);
|
||||
long = parseFloat(response.data.address_data.longitude);
|
||||
}
|
||||
|
||||
initialize(lat, long, 'edit_');
|
||||
@endif
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$(document).on('change', '[name=country_id]', function() {
|
||||
var country_id = $(this).val();
|
||||
get_states(country_id);
|
||||
});
|
||||
|
||||
$(document).on('change', '[name=state_id]', function() {
|
||||
var state_id = $(this).val();
|
||||
get_city(state_id);
|
||||
});
|
||||
|
||||
function get_states(country_id) {
|
||||
$('[name="state"]').html("");
|
||||
$.ajax({
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
|
||||
},
|
||||
url: "{{route('seller.get-state')}}",
|
||||
type: 'POST',
|
||||
data: {
|
||||
country_id : country_id
|
||||
},
|
||||
success: function (response) {
|
||||
var obj = JSON.parse(response);
|
||||
if(obj != '') {
|
||||
$('[name="state_id"]').html(obj);
|
||||
AIZ.plugins.bootstrapSelect('refresh');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function get_city(state_id) {
|
||||
$('[name="city"]').html("");
|
||||
$.ajax({
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
|
||||
},
|
||||
url: "{{route('seller.get-city')}}",
|
||||
type: 'POST',
|
||||
data: {
|
||||
state_id: state_id
|
||||
},
|
||||
success: function (response) {
|
||||
var obj = JSON.parse(response);
|
||||
if(obj != '') {
|
||||
$('[name="city_id"]').html(obj);
|
||||
AIZ.plugins.bootstrapSelect('refresh');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
@if (get_setting('google_map') == 1)
|
||||
|
||||
@include('frontend.partials.google_map')
|
||||
|
||||
@endif
|
||||
|
||||
@endsection
|
||||
63
desarrollo2/resources/views/seller/reviews.blade.php
Normal file
63
desarrollo2/resources/views/seller/reviews.blade.php
Normal file
@@ -0,0 +1,63 @@
|
||||
@extends('seller.layouts.app')
|
||||
|
||||
@section('panel_content')
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{ translate('Product Reviews') }}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table aiz-table mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>{{ translate('Product')}}</th>
|
||||
<th data-breakpoints="lg">{{ translate('Customer')}}</th>
|
||||
<th>{{ translate('Rating')}}</th>
|
||||
<th data-breakpoints="lg">{{ translate('Comment')}}</th>
|
||||
<th data-breakpoints="lg">{{ translate('Published')}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($reviews as $key => $value)
|
||||
@php
|
||||
$review = \App\Models\Review::find($value->id);
|
||||
@endphp
|
||||
@if($review != null && $review->product != null && $review->user != null)
|
||||
<tr>
|
||||
<td>
|
||||
{{ $key+1 }}
|
||||
</td>
|
||||
<td>
|
||||
<a href="{{ route('product', $review->product->slug) }}" target="_blank">{{ $review->product->getTranslation('name') }}</a>
|
||||
</td>
|
||||
<td>{{ $review->user->name }}</td>
|
||||
<td>
|
||||
<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>
|
||||
</td>
|
||||
<td>{{ $review->comment }}</td>
|
||||
<td>
|
||||
@if ($review->status == 1)
|
||||
<span class="badge badge-inline badge-success">{{ translate('Published') }}</span>
|
||||
@else
|
||||
<span class="badge badge-inline badge-danger">{{ translate('Unpublished') }}</span>
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="aiz-pagination">
|
||||
{{ $reviews->links() }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
432
desarrollo2/resources/views/seller/shop.blade.php
Normal file
432
desarrollo2/resources/views/seller/shop.blade.php
Normal file
@@ -0,0 +1,432 @@
|
||||
@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('Shop Settings')}}
|
||||
<span class="ml-3 fs-13">(<a href="{{ route('shop.visit', $shop->slug) }}" class="btn btn-link btn-sm px-0" target="_blank">{{ translate('Visit Shop')}} <i class="las la-arrow-right"></i></a>)</span>
|
||||
</h1>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Basic Info -->
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{ translate('Basic Info') }}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form class="" action="{{ route('seller.shop.update') }}" method="POST" enctype="multipart/form-data">
|
||||
<input type="hidden" name="shop_id" value="{{ $shop->id }}">
|
||||
@csrf
|
||||
<div class="row">
|
||||
<label class="col-md-2 col-form-label">{{ translate('Shop Name') }}<span class="text-danger text-danger">*</span></label>
|
||||
<div class="col-md-10">
|
||||
<input type="text" class="form-control mb-3" placeholder="{{ translate('Shop Name')}}" name="name" value="{{ $shop->name }}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-3">
|
||||
<label class="col-md-2 col-form-label">{{ translate('Shop Logo') }}</label>
|
||||
<div class="col-md-10">
|
||||
<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="logo" value="{{ $shop->logo }}" class="selected-files">
|
||||
</div>
|
||||
<div class="file-preview box sm">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<label>{{ translate('Shop Phone') }} <span class="text-danger">*</span></label>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<input type="text" class="form-control mb-3" placeholder="{{ translate('Phone')}}" name="phone" value="{{ $shop->phone }}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label class="col-md-2 col-form-label">{{ translate('Shop Address') }} <span class="text-danger text-danger">*</span></label>
|
||||
<div class="col-md-10">
|
||||
<input type="text" class="form-control mb-3" placeholder="{{ translate('Address')}}" name="address" value="{{ $shop->address }}" required>
|
||||
</div>
|
||||
</div>
|
||||
@if (get_setting('shipping_type') == 'seller_wise_shipping')
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<label>{{ translate('Shipping Cost')}} <span class="text-danger">*</span></label>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<input type="number" lang="en" min="0" class="form-control mb-3" placeholder="{{ translate('Shipping Cost')}}" name="shipping_cost" value="{{ $shop->shipping_cost }}" required>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
<div class="row">
|
||||
<label class="col-md-2 col-form-label">{{ translate('Meta Title') }}<span class="text-danger text-danger">*</span></label>
|
||||
<div class="col-md-10">
|
||||
<input type="text" class="form-control mb-3" placeholder="{{ translate('Meta Title')}}" name="meta_title" value="{{ $shop->meta_title }}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label class="col-md-2 col-form-label">{{ translate('Meta Description') }}<span class="text-danger text-danger">*</span></label>
|
||||
<div class="col-md-10">
|
||||
<textarea name="meta_description" rows="3" class="form-control mb-3" required>{{ $shop->meta_description }}</textarea>
|
||||
</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>
|
||||
|
||||
<!-- Delivery Boy Pickup Point -->
|
||||
@if (addon_is_activated('delivery_boy'))
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{ translate('Delivery Boy Pickup Point') }}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form class="" action="{{ route('seller.shop.update') }}" method="POST" enctype="multipart/form-data">
|
||||
<input type="hidden" name="shop_id" value="{{ $shop->id }}">
|
||||
@csrf
|
||||
|
||||
@if (get_setting('google_map') == 1)
|
||||
<div class="row mb-3">
|
||||
<input id="searchInput" class="controls" type="text" placeholder="{{translate('Enter a location')}}">
|
||||
<div id="map"></div>
|
||||
<ul id="geoData">
|
||||
<li style="display: none;">{{ translate('Full Address') }}: <span id="location"></span></li>
|
||||
<li style="display: none;">{{ translate('Postal Code') }}: <span id="postal_code"></span></li>
|
||||
<li style="display: none;">{{ translate('Country') }}: <span id="country"></span></li>
|
||||
<li style="display: none;">{{ translate('Latitude') }}: <span id="lat"></span></li>
|
||||
<li style="display: none;">{{ translate('Longitude') }}: <span id="lon"></span></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-2" id="">
|
||||
<label for="exampleInputuname">{{ translate('Longitude') }}</label>
|
||||
</div>
|
||||
<div class="col-md-10" id="">
|
||||
<input type="text" class="form-control mb-3" id="longitude" name="delivery_pickup_longitude" readonly="" value="{{ $shop->delivery_pickup_longitude }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-2" id="">
|
||||
<label for="exampleInputuname">{{ translate('Latitude') }}</label>
|
||||
</div>
|
||||
<div class="col-md-10" id="">
|
||||
<input type="text" class="form-control mb-3" id="latitude" name="delivery_pickup_latitude" readonly="" value="{{ $shop->delivery_pickup_latitude }}">
|
||||
</div>
|
||||
</div>
|
||||
@else
|
||||
<div class="row">
|
||||
<div class="col-md-2" id="">
|
||||
<label for="exampleInputuname">{{ translate('Longitude') }}</label>
|
||||
</div>
|
||||
<div class="col-md-10" id="">
|
||||
<input type="text" class="form-control mb-3" id="longitude" name="delivery_pickup_longitude" value="{{ $shop->delivery_pickup_longitude }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-2" id="">
|
||||
<label for="exampleInputuname">{{ translate('Latitude') }}</label>
|
||||
</div>
|
||||
<div class="col-md-10" id="">
|
||||
<input type="text" class="form-control mb-3" id="latitude" name="delivery_pickup_latitude" value="{{ $shop->delivery_pickup_latitude }}">
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="form-group mb-0 text-right">
|
||||
<button type="submit" class="btn btn-sm btn-primary">{{translate('Save')}}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<!-- Banner Settings -->
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{ translate('Banner Settings') }}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form class="" action="{{ route('seller.shop.update') }}" method="POST" enctype="multipart/form-data">
|
||||
<input type="hidden" name="shop_id" value="{{ $shop->id }}">
|
||||
@csrf
|
||||
<!-- Top Banner -->
|
||||
<div class="row mb-3">
|
||||
<label class="col-md-2 col-form-label">{{ translate('Top Banner') }} (1920x360)</label>
|
||||
<div class="col-md-10">
|
||||
<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="top_banner" value="{{ $shop->top_banner }}" class="selected-files">
|
||||
</div>
|
||||
<div class="file-preview box sm">
|
||||
</div>
|
||||
<small class="text-muted">{{ translate('We had to limit height to maintian consistancy. In some device both side of the banner might be cropped for height limitation.') }}</small>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Slider Banners -->
|
||||
<div class="row mb-3">
|
||||
<label class="col-md-2 col-form-label">{{ translate('Slider Banners') }} (1500x450)</label>
|
||||
<div class="col-md-10">
|
||||
<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="sliders" value="{{ $shop->sliders }}" class="selected-files">
|
||||
</div>
|
||||
<div class="file-preview box sm">
|
||||
</div>
|
||||
<small class="text-muted">{{ translate('We had to limit height to maintian consistancy. In some device both side of the banner might be cropped for height limitation.') }}</small>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Banner Full width 1 -->
|
||||
<div class="row mb-3">
|
||||
<label class="col-md-2 col-form-label">{{ translate('Banner Full width 1') }}</label>
|
||||
<div class="col-md-10">
|
||||
<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="banner_full_width_1" value="{{ $shop->banner_full_width_1 }}" class="selected-files">
|
||||
</div>
|
||||
<div class="file-preview box sm">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Banners half width -->
|
||||
<div class="row mb-3">
|
||||
<label class="col-md-2 col-form-label">{{ translate('Banners half width') }} ({{ translate('2 Equal Banners') }})</label>
|
||||
<div class="col-md-10">
|
||||
<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="banners_half_width" value="{{ $shop->banners_half_width }}" class="selected-files">
|
||||
</div>
|
||||
<div class="file-preview box sm">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Banner Full width 2 -->
|
||||
<div class="row mb-3">
|
||||
<label class="col-md-2 col-form-label">{{ translate('Banner Full width 2') }}</label>
|
||||
<div class="col-md-10">
|
||||
<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="banner_full_width_2" value="{{ $shop->banner_full_width_2 }}" class="selected-files">
|
||||
</div>
|
||||
<div class="file-preview box sm">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Save Button -->
|
||||
<div class="form-group mb-0 text-right">
|
||||
<button type="submit" class="btn btn-sm btn-primary">{{translate('Save')}}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Social Media Link -->
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{ translate('Social Media Link') }}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form class="" action="{{ route('seller.shop.update') }}" method="POST" enctype="multipart/form-data">
|
||||
<input type="hidden" name="shop_id" value="{{ $shop->id }}">
|
||||
@csrf
|
||||
<div class="form-box-content p-3">
|
||||
<div class="row mb-3">
|
||||
<label class="col-md-2 col-form-label">{{ translate('Facebook') }}</label>
|
||||
<div class="col-md-10">
|
||||
<input type="text" class="form-control" placeholder="{{ translate('Facebook')}}" name="facebook" value="{{ $shop->facebook }}">
|
||||
<small class="text-muted">{{ translate('Insert link with https ') }}</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-3">
|
||||
<label class="col-md-2 col-form-label">{{ translate('Instagram') }}</label>
|
||||
<div class="col-md-10">
|
||||
<input type="text" class="form-control" placeholder="{{ translate('Instagram')}}" name="instagram" value="{{ $shop->instagram }}">
|
||||
<small class="text-muted">{{ translate('Insert link with https ') }}</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-3">
|
||||
<label class="col-md-2 col-form-label">{{ translate('Twitter') }}</label>
|
||||
<div class="col-md-10">
|
||||
<input type="text" class="form-control" placeholder="{{ translate('Twitter')}}" name="twitter" value="{{ $shop->twitter }}">
|
||||
<small class="text-muted">{{ translate('Insert link with https ') }}</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-3">
|
||||
<label class="col-md-2 col-form-label">{{ translate('Google') }}</label>
|
||||
<div class="col-md-10">
|
||||
<input type="text" class="form-control" placeholder="{{ translate('Google')}}" name="google" value="{{ $shop->google }}">
|
||||
<small class="text-muted">{{ translate('Insert link with https ') }}</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-3">
|
||||
<label class="col-md-2 col-form-label">{{ translate('Youtube') }}</label>
|
||||
<div class="col-md-10">
|
||||
<input type="text" class="form-control" placeholder="{{ translate('Youtube')}}" name="youtube" value="{{ $shop->youtube }}">
|
||||
<small class="text-muted">{{ translate('Insert link with https ') }}</small>
|
||||
</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>
|
||||
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
|
||||
@if (addon_is_activated('delivery_boy') && get_setting('google_map') == 1)
|
||||
|
||||
<script>
|
||||
function initialize(id_format = '') {
|
||||
let default_longtitude = '';
|
||||
let default_latitude = '';
|
||||
@if (get_setting('google_map_longtitude') != '' && get_setting('google_map_longtitude') != '')
|
||||
default_longtitude = {{ get_setting('google_map_longtitude') }};
|
||||
default_latitude = {{ get_setting('google_map_latitude') }};
|
||||
@endif
|
||||
|
||||
var lat = -33.8688;
|
||||
var long = 151.2195;
|
||||
|
||||
if (document.getElementById('latitude').value != '' &&
|
||||
document.getElementById('longitude').value != '') {
|
||||
lat = parseFloat(document.getElementById('latitude').value);
|
||||
long = parseFloat(document.getElementById('longitude').value);
|
||||
} else if (default_longtitude != '' &&
|
||||
default_latitude != '') {
|
||||
lat = default_latitude;
|
||||
long = default_longtitude;
|
||||
}
|
||||
|
||||
|
||||
var map = new google.maps.Map(document.getElementById('map'), {
|
||||
center: {
|
||||
lat: lat,
|
||||
lng: long
|
||||
},
|
||||
zoom: 13
|
||||
});
|
||||
|
||||
var myLatlng = new google.maps.LatLng(lat, long);
|
||||
|
||||
var input = document.getElementById(id_format + 'searchInput');
|
||||
// console.log(input);
|
||||
map.controls[google.maps.ControlPosition.TOP_LEFT].push(input);
|
||||
|
||||
var autocomplete = new google.maps.places.Autocomplete(input);
|
||||
|
||||
autocomplete.bindTo('bounds', map);
|
||||
|
||||
var infowindow = new google.maps.InfoWindow();
|
||||
var marker = new google.maps.Marker({
|
||||
map: map,
|
||||
position: myLatlng,
|
||||
anchorPoint: new google.maps.Point(0, -29),
|
||||
draggable: true,
|
||||
});
|
||||
|
||||
map.addListener('click', function(event) {
|
||||
marker.setPosition(event.latLng);
|
||||
document.getElementById(id_format + 'latitude').value = event.latLng.lat();
|
||||
document.getElementById(id_format + 'longitude').value = event.latLng.lng();
|
||||
infowindow.setContent('Latitude: ' + event.latLng.lat() + '<br>Longitude: ' + event.latLng.lng());
|
||||
infowindow.open(map, marker);
|
||||
});
|
||||
|
||||
google.maps.event.addListener(marker, 'dragend', function(event) {
|
||||
document.getElementById(id_format + 'latitude').value = event.latLng.lat();
|
||||
document.getElementById(id_format + 'longitude').value = event.latLng.lng();
|
||||
infowindow.setContent('Latitude: ' + event.latLng.lat() + '<br>Longitude: ' + event.latLng.lng());
|
||||
infowindow.open(map, marker);
|
||||
});
|
||||
|
||||
autocomplete.addListener('place_changed', function() {
|
||||
infowindow.close();
|
||||
marker.setVisible(false);
|
||||
var place = autocomplete.getPlace();
|
||||
|
||||
if (!place.geometry) {
|
||||
window.alert("Autocomplete's returned place contains no geometry");
|
||||
return;
|
||||
}
|
||||
|
||||
// If the place has a geometry, then present it on a map.
|
||||
if (place.geometry.viewport) {
|
||||
map.fitBounds(place.geometry.viewport);
|
||||
} else {
|
||||
map.setCenter(place.geometry.location);
|
||||
map.setZoom(17);
|
||||
}
|
||||
/*
|
||||
marker.setIcon(({
|
||||
url: place.icon,
|
||||
size: new google.maps.Size(71, 71),
|
||||
origin: new google.maps.Point(0, 0),
|
||||
anchor: new google.maps.Point(17, 34),
|
||||
scaledSize: new google.maps.Size(35, 35)
|
||||
}));
|
||||
*/
|
||||
marker.setPosition(place.geometry.location);
|
||||
marker.setVisible(true);
|
||||
|
||||
var address = '';
|
||||
if (place.address_components) {
|
||||
address = [
|
||||
(place.address_components[0] && place.address_components[0].short_name || ''),
|
||||
(place.address_components[1] && place.address_components[1].short_name || ''),
|
||||
(place.address_components[2] && place.address_components[2].short_name || '')
|
||||
].join(' ');
|
||||
}
|
||||
|
||||
infowindow.setContent('<div><strong>' + place.name + '</strong><br>' + address);
|
||||
infowindow.open(map, marker);
|
||||
|
||||
//Location details
|
||||
for (var i = 0; i < place.address_components.length; i++) {
|
||||
if (place.address_components[i].types[0] == 'postal_code') {
|
||||
document.getElementById('postal_code').innerHTML = place.address_components[i].long_name;
|
||||
}
|
||||
if (place.address_components[i].types[0] == 'country') {
|
||||
document.getElementById('country').innerHTML = place.address_components[i].long_name;
|
||||
}
|
||||
}
|
||||
document.getElementById('location').innerHTML = place.formatted_address;
|
||||
document.getElementById(id_format + 'latitude').value = place.geometry.location.lat();
|
||||
document.getElementById(id_format + 'longitude').value = place.geometry.location.lng();
|
||||
});
|
||||
|
||||
}
|
||||
</script>
|
||||
|
||||
<script src="https://maps.googleapis.com/maps/api/js?key={{ env('MAP_API_KEY') }}&libraries=places&language=en&callback=initialize" async defer></script>
|
||||
|
||||
@endif
|
||||
|
||||
@endsection
|
||||
@@ -0,0 +1,122 @@
|
||||
@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('Support Ticket') }}</h1>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-4 mx-auto mb-3" >
|
||||
<div class="p-3 rounded mb-3 c-pointer text-center bg-white shadow-sm hov-shadow-lg has-transition" data-toggle="modal" data-target="#ticket_modal">
|
||||
<span class="size-70px 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-20 text-primary">{{ translate('Create a Ticket') }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{ translate('Tickets')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table aiz-table mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th data-breakpoints="lg">{{ translate('Ticket ID') }}</th>
|
||||
<th data-breakpoints="lg">{{ translate('Sending Date') }}</th>
|
||||
<th>{{ translate('Subject')}}</th>
|
||||
<th>{{ translate('Status')}}</th>
|
||||
<th data-breakpoints="lg">{{ translate('Options')}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($tickets as $key => $ticket)
|
||||
<tr>
|
||||
<td>#{{ $ticket->code }}</td>
|
||||
<td>{{ $ticket->created_at }}</td>
|
||||
<td>{{ $ticket->subject }}</td>
|
||||
<td>
|
||||
@if ($ticket->status == 'pending')
|
||||
<span class="badge badge-inline badge-danger">{{ translate('Pending')}}</span>
|
||||
@elseif ($ticket->status == 'open')
|
||||
<span class="badge badge-inline badge-secondary">{{ translate('Open')}}</span>
|
||||
@else
|
||||
<span class="badge badge-inline badge-success">{{ translate('Solved')}}</span>
|
||||
@endif
|
||||
</td>
|
||||
<td>
|
||||
<a href="{{route('seller.support_ticket.show', encrypt($ticket->id))}}" class="btn btn-styled btn-link py-1 px-0 icon-anim text-underline--none">
|
||||
{{ translate('View Details')}}
|
||||
<i class="la la-angle-right text-sm"></i>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="aiz-pagination">
|
||||
{{ $tickets->links() }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('modal')
|
||||
<div class="modal fade" id="ticket_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 strong-600 heading-5">{{ translate('Create a Ticket')}}</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body px-3 pt-3">
|
||||
<form class="" action="{{ route('seller.support_ticket.store') }}" method="post" enctype="multipart/form-data">
|
||||
@csrf
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<label>{{ translate('Subject')}}</label>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<input type="text" class="form-control mb-3" placeholder="{{ translate('Subject')}}" name="subject" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<label>{{ translate('Provide a detailed description')}}</label>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<textarea type="text" class="form-control mb-3" rows="3" name="details" placeholder="{{ translate('Type your reply')}}" data-buttons="bold,underline,italic,|,ul,ol,|,paragraph,|,undo,redo" required></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-md-2 col-form-label">{{ translate('Photo') }}</label>
|
||||
<div class="col-md-10">
|
||||
<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="attachments" class="selected-files">
|
||||
</div>
|
||||
<div class="file-preview box sm">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-right mt-4">
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">{{ translate('cancel')}}</button>
|
||||
<button type="submit" class="btn btn-primary">{{ translate('Send Ticket')}}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
116
desarrollo2/resources/views/seller/support_ticket/show.blade.php
Normal file
116
desarrollo2/resources/views/seller/support_ticket/show.blade.php
Normal file
@@ -0,0 +1,116 @@
|
||||
@extends('seller.layouts.app')
|
||||
|
||||
@section('panel_content')
|
||||
<div class="card">
|
||||
<div class="card-header row gutters-5">
|
||||
<div class="text-center text-md-left">
|
||||
<h5 class="mb-md-0 h5">{{ $ticket->subject }} #{{ $ticket->code }}</h5>
|
||||
<div class="mt-2">
|
||||
<span> {{ $ticket->user->name }} </span>
|
||||
<span class="ml-2"> {{ $ticket->created_at }} </span>
|
||||
<span class="badge badge-inline badge-secondary ml-2"> {{ translate(ucfirst($ticket->status)) }} </span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form action="{{route('seller.support_ticket.reply_store')}}" method="POST" enctype="multipart/form-data">
|
||||
@csrf
|
||||
<input type="hidden" name="ticket_id" value="{{$ticket->id}}" required>
|
||||
<input type="hidden" name="user_id" value="{{$ticket->user_id}}">
|
||||
<div class="form-group">
|
||||
<textarea class="aiz-text-editor" name="reply" data-buttons='[["font", ["bold", "underline", "italic"]],["para", ["ul", "ol"]],["view", ["undo","redo"]]]' required></textarea>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<div class="col-md-12">
|
||||
<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="attachments" 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" onclick="submit_reply('pending')">{{ translate('Send Reply') }}</button>
|
||||
</div>
|
||||
</form>
|
||||
<div class="pad-top">
|
||||
<ul class="list-group list-group-flush">
|
||||
@foreach($ticket->ticketreplies as $ticketreply)
|
||||
<li class="list-group-item px-0">
|
||||
<div class="media">
|
||||
<a class="media-left" href="#">
|
||||
@if($ticketreply->user->avatar_original != null)
|
||||
<span class="avatar avatar-sm mr-3">
|
||||
<img src="{{ uploaded_asset($ticketreply->user->avatar_original) }}" onerror="this.onerror=null;this.src='{{ static_asset('assets/img/avatar-place.png') }}';">
|
||||
</span>
|
||||
@else
|
||||
<span class="avatar avatar-sm mr-3">
|
||||
<img src="{{ static_asset('assets/img/avatar-place.png') }}">
|
||||
</span>
|
||||
@endif
|
||||
</a>
|
||||
<div class="media-body">
|
||||
<div class="comment-header">
|
||||
<span class="text-bold h6 text-muted">{{ $ticketreply->user->name }}</span>
|
||||
<p class="text-muted text-sm fs-11">{{$ticketreply->created_at}}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
@php echo $ticketreply->reply; @endphp
|
||||
<br>
|
||||
@foreach ((explode(",",$ticketreply->files)) as $key => $file)
|
||||
@php $file_detail = \App\Models\Upload::where('id', $file)->first(); @endphp
|
||||
@if($file_detail != null)
|
||||
<a href="{{ uploaded_asset($file) }}" download="" class="badge badge-lg badge-inline badge-light mb-1">
|
||||
<i class="las la-download text-muted">{{ $file_detail->file_original_name.'.'.$file_detail->extension }}</i>
|
||||
</a>
|
||||
<br>
|
||||
@endif
|
||||
@endforeach
|
||||
</div>
|
||||
</li>
|
||||
@endforeach
|
||||
<li class="list-group-item px-0">
|
||||
<div class="media">
|
||||
<a class="media-left" href="#">
|
||||
@if($ticket->user->avatar_original != null)
|
||||
<span class="avatar avatar-sm mr-3">
|
||||
<img src="{{ uploaded_asset($ticket->user->avatar_original) }}" onerror="this.onerror=null;this.src='{{ static_asset('assets/img/avatar-place.png') }}';">
|
||||
</span>
|
||||
@else
|
||||
<span class="avatar avatar-sm mr-3">
|
||||
<img src="{{ static_asset('assets/img/avatar-place.png') }}">
|
||||
</span>
|
||||
@endif
|
||||
</a>
|
||||
<div class="media-body">
|
||||
<div class="comment-header">
|
||||
<span class="text-bold h6 text-muted">{{ $ticket->user->name }}</span>
|
||||
<p class="text-muted text-sm fs-11">{{ $ticket->created_at }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
@php echo $ticket->details; @endphp
|
||||
<br>
|
||||
@foreach ((explode(",",$ticket->files)) as $key => $file)
|
||||
@php $file_detail = \App\Models\Upload::where('id', $file)->first(); @endphp
|
||||
@if($file_detail != null)
|
||||
<a href="{{ uploaded_asset($file) }}" download="" class="badge badge-lg badge-inline badge-light mb-1">
|
||||
<i class="las la-download text-muted">{{ $file_detail->file_original_name.'.'.$file_detail->extension }}</i>
|
||||
</a>
|
||||
<br>
|
||||
@endif
|
||||
@endforeach
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
35
desarrollo2/resources/views/seller/uploads/create.blade.php
Normal file
35
desarrollo2/resources/views/seller/uploads/create.blade.php
Normal file
@@ -0,0 +1,35 @@
|
||||
@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-md-6">
|
||||
<h1 class="h3">{{translate('Upload New File')}}</h1>
|
||||
</div>
|
||||
<div class="col-md-6 text-md-right">
|
||||
<a href="{{ route('seller.uploaded-files.index') }}" class="btn btn-link text-reset">
|
||||
<i class="las la-angle-left"></i>
|
||||
<span>{{translate('Back to uploaded files')}}</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('Drag & drop your files')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div id="aiz-upload-files" class="h-420px" style="min-height: 65vh">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
AIZ.plugins.aizUppy();
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
218
desarrollo2/resources/views/seller/uploads/index.blade.php
Normal file
218
desarrollo2/resources/views/seller/uploads/index.blade.php
Normal file
@@ -0,0 +1,218 @@
|
||||
@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-md-6">
|
||||
<h1 class="h3">{{translate('All uploaded files')}}</h1>
|
||||
</div>
|
||||
<div class="col-md-6 text-md-right">
|
||||
<a href="{{ route('seller.uploads.create') }}" class="btn btn-primary">
|
||||
<span>{{translate('Upload New File')}}</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<form id="sort_uploads" action="">
|
||||
<div class="card-header row gutters-5">
|
||||
<div class="col">
|
||||
<h5 class="mb-0 h6">{{translate('All files')}}</h5>
|
||||
</div>
|
||||
<div class="dropdown mb-2 mb-md-0">
|
||||
<button class="btn border dropdown-toggle" type="button" data-toggle="dropdown">
|
||||
{{translate('Bulk Action')}}
|
||||
</button>
|
||||
<div class="dropdown-menu dropdown-menu-right">
|
||||
<a class="dropdown-item confirm-alert" href="javascript:void(0)" data-target="#bulk-delete-modal"> {{translate('Delete selection')}}</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3 ml-auto mr-0">
|
||||
<select class="form-control form-control-xs aiz-selectpicker" name="sort" onchange="sort_uploads()">
|
||||
<option value="newest" @if($sort_by == 'newest') selected="" @endif>{{ translate('Sort by newest') }}</option>
|
||||
<option value="oldest" @if($sort_by == 'oldest') selected="" @endif>{{ translate('Sort by oldest') }}</option>
|
||||
<option value="smallest" @if($sort_by == 'smallest') selected="" @endif>{{ translate('Sort by smallest') }}</option>
|
||||
<option value="largest" @if($sort_by == 'largest') selected="" @endif>{{ translate('Sort by largest') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<input type="text" class="form-control form-control-xs" name="search" placeholder="{{ translate('Search your files') }}" value="{{ $search }}">
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<button type="submit" class="btn btn-primary">{{ translate('Search') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<div class="form-group">
|
||||
<div class="aiz-checkbox-inline">
|
||||
<label class="aiz-checkbox">
|
||||
{{ translate('Select All')}}
|
||||
<input type="checkbox" class="check-all">
|
||||
<span class="aiz-square-check"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row gutters-5">
|
||||
@foreach($all_uploads as $key => $file)
|
||||
@php
|
||||
if($file->file_original_name == null){
|
||||
$file_name = translate('Unknown');
|
||||
}else{
|
||||
$file_name = $file->file_original_name;
|
||||
}
|
||||
@endphp
|
||||
<div class="col-auto w-140px w-lg-220px">
|
||||
<div class="aiz-file-box">
|
||||
<div class="dropdown-file" >
|
||||
<a class="dropdown-link" data-toggle="dropdown">
|
||||
<i class="la la-ellipsis-v"></i>
|
||||
</a>
|
||||
<div class="dropdown-menu dropdown-menu-right">
|
||||
<a href="javascript:void(0)" class="dropdown-item" onclick="detailsInfo(this)" data-id="{{ $file->id }}">
|
||||
<i class="las la-info-circle mr-2"></i>
|
||||
<span>{{ translate('Details Info') }}</span>
|
||||
</a>
|
||||
<a href="{{ my_asset($file->file_name) }}" target="_blank" download="{{ $file_name }}.{{ $file->extension }}" class="dropdown-item">
|
||||
<i class="la la-download mr-2"></i>
|
||||
<span>{{ translate('Download') }}</span>
|
||||
</a>
|
||||
<a href="javascript:void(0)" class="dropdown-item" onclick="copyUrl(this)" data-url="{{ my_asset($file->file_name) }}">
|
||||
<i class="las la-clipboard mr-2"></i>
|
||||
<span>{{ translate('Copy Link') }}</span>
|
||||
</a>
|
||||
<a href="javascript:void(0)" class="dropdown-item confirm-delete" data-href="{{ route('seller.my_uploads.destroy', $file->id ) }}" data-target="#delete-modal">
|
||||
<i class="las la-trash mr-2"></i>
|
||||
<span>{{ translate('Delete') }}</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="select-box">
|
||||
<div class="aiz-checkbox-inline">
|
||||
<label class="aiz-checkbox">
|
||||
<input type="checkbox" class="check-one" name="id[]" value="{{$file->id}}">
|
||||
<span class="aiz-square-check"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card card-file aiz-uploader-select c-default" title="{{ $file_name }}.{{ $file->extension }}">
|
||||
<div class="card-file-thumb">
|
||||
@if($file->type == 'image')
|
||||
<img src="{{ my_asset($file->file_name) }}" class="img-fit">
|
||||
@elseif($file->type == 'video')
|
||||
<i class="las la-file-video"></i>
|
||||
@else
|
||||
<i class="las la-file"></i>
|
||||
@endif
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<h6 class="d-flex">
|
||||
<span class="text-truncate title">{{ $file_name }}</span>
|
||||
<span class="ext">.{{ $file->extension }}</span>
|
||||
</h6>
|
||||
<p>{{ formatBytes($file->file_size) }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
<div class="aiz-pagination mt-3">
|
||||
{{ $all_uploads->appends(request()->input())->links() }}
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
@endsection
|
||||
@section('modal')
|
||||
<div id="info-modal" class="modal fade">
|
||||
<div class="modal-dialog modal-dialog-right">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title h6">{{ translate('File Info') }}</h5>
|
||||
<button type="button" class="close" data-dismiss="modal">
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body c-scrollbar-light position-relative" id="info-modal-content">
|
||||
<div class="c-preloader text-center absolute-center">
|
||||
<i class="las la-spinner la-spin la-3x opacity-70"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Delete modal -->
|
||||
@include('modals.delete_modal')
|
||||
<!-- Bulk Delete modal -->
|
||||
@include('modals.bulk_delete_modal')
|
||||
|
||||
@endsection
|
||||
@section('script')
|
||||
<script type="text/javascript">
|
||||
function detailsInfo(e){
|
||||
$('#info-modal-content').html('<div class="c-preloader text-center absolute-center"><i class="las la-spinner la-spin la-3x opacity-70"></i></div>');
|
||||
var id = $(e).data('id')
|
||||
$('#info-modal').modal('show');
|
||||
$.post('{{ route('seller.my_uploads.info') }}', {_token: AIZ.data.csrf, id:id}, function(data){
|
||||
$('#info-modal-content').html(data);
|
||||
// console.log(data);
|
||||
});
|
||||
}
|
||||
function copyUrl(e) {
|
||||
var url = $(e).data('url');
|
||||
var $temp = $("<input>");
|
||||
$("body").append($temp);
|
||||
$temp.val(url).select();
|
||||
try {
|
||||
document.execCommand("copy");
|
||||
AIZ.plugins.notify('success', '{{ translate('Link copied to clipboard') }}');
|
||||
} catch (err) {
|
||||
AIZ.plugins.notify('danger', '{{ translate('Oops, unable to copy') }}');
|
||||
}
|
||||
$temp.remove();
|
||||
}
|
||||
function sort_uploads(el){
|
||||
$('#sort_uploads').submit();
|
||||
}
|
||||
|
||||
$(document).on("change", ".check-all", function() {
|
||||
if(this.checked) {
|
||||
// Iterate each checkbox
|
||||
$('.check-one:checkbox').each(function() {
|
||||
this.checked = true;
|
||||
});
|
||||
} else {
|
||||
$('.check-one:checkbox').each(function() {
|
||||
this.checked = false;
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
function bulk_delete() {
|
||||
var data = new FormData($('#sort_uploads')[0]);
|
||||
$.ajax({
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
|
||||
},
|
||||
url: "{{route('seller.bulk-uploaded-files-delete')}}",
|
||||
type: 'POST',
|
||||
data: data,
|
||||
cache: false,
|
||||
contentType: false,
|
||||
processData: false,
|
||||
success: function (response) {
|
||||
if(response == 1) {
|
||||
location.reload();
|
||||
}
|
||||
else{
|
||||
AIZ.plugins.notify('danger', '{{ translate('Something Went Wrong.') }}');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
@endsection
|
||||
28
desarrollo2/resources/views/seller/uploads/info.blade.php
Normal file
28
desarrollo2/resources/views/seller/uploads/info.blade.php
Normal file
@@ -0,0 +1,28 @@
|
||||
<div >
|
||||
<div class="form-group">
|
||||
<label>{{ translate('File Name') }}</label>
|
||||
<input type="text" class="form-control" value="{{ $file->file_name }}" disabled>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ translate('File Type') }}</label>
|
||||
<input type="text" class="form-control" value="{{ $file->type }}" disabled>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ translate('File Size') }}</label>
|
||||
<input type="text" class="form-control" value="{{ formatBytes($file->file_size) }}" disabled>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ translate('Uploaded At') }}</label>
|
||||
<input type="text" class="form-control" value="{{ $file->created_at }}" disabled>
|
||||
</div>
|
||||
<div class="form-group text-center">
|
||||
@php
|
||||
if($file->file_original_name == null){
|
||||
$file_name = translate('Unknown');
|
||||
}else{
|
||||
$file_name = $file->file_original_name;
|
||||
}
|
||||
@endphp
|
||||
<a class="btn btn-secondary" href="{{ my_asset($file->file_name) }}" target="_blank" download="{{ $file_name }}.{{ $file->extension }}">{{ translate('Download') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
101
desarrollo2/resources/views/seller/verify_form.blade.php
Normal file
101
desarrollo2/resources/views/seller/verify_form.blade.php
Normal file
@@ -0,0 +1,101 @@
|
||||
@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('Shop Verification')}}
|
||||
<a href="{{ route('shop.visit', $shop->slug) }}" class="btn btn-link btn-sm" target="_blank">({{ translate('Visit Shop')}})<i class="la la-external-link"></i>)</a>
|
||||
</h1>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<form class="" action="{{ route('seller.shop.verify.store') }}" method="POST" enctype="multipart/form-data">
|
||||
@csrf
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h4 class="mb-0 h6">{{ translate('Verification info')}}</h4>
|
||||
</div>
|
||||
@php
|
||||
$verification_form = get_setting('verification_form');
|
||||
@endphp
|
||||
<div class="card-body">
|
||||
@foreach (json_decode($verification_form) as $key => $element)
|
||||
@if ($element->type == 'text')
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<label>{{ $element->label }} <span class="text-danger">*</span></label>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<input type="{{ $element->type }}" class="form-control mb-3" placeholder="{{ $element->label }}" name="element_{{ $key }}" required>
|
||||
</div>
|
||||
</div>
|
||||
@elseif($element->type == 'file')
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<label>{{ $element->label }}</label>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<div class="custom-file">
|
||||
<label class="custom-file-label">
|
||||
<input type="{{ $element->type }}" name="element_{{ $key }}" id="file-{{ $key }}" class="custom-file-input" required>
|
||||
<span class="custom-file-name">{{ translate('Choose file') }}</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@elseif ($element->type == 'select' && is_array(json_decode($element->options)))
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<label>{{ $element->label }}</label>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<div class="mb-3">
|
||||
<select class="form-control selectpicker" data-minimum-results-for-search="Infinity" name="element_{{ $key }}" required>
|
||||
@foreach (json_decode($element->options) as $value)
|
||||
<option value="{{ $value }}">{{ $value }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@elseif ($element->type == 'multi_select' && is_array(json_decode($element->options)))
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<label>{{ $element->label }}</label>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<div class="mb-3">
|
||||
<select class="form-control selectpicker" data-minimum-results-for-search="Infinity" name="element_{{ $key }}[]" multiple required>
|
||||
@foreach (json_decode($element->options) as $value)
|
||||
<option value="{{ $value }}">{{ $value }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@elseif ($element->type == 'radio')
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<label>{{ $element->label }}</label>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<div class="mb-3">
|
||||
@foreach (json_decode($element->options) as $value)
|
||||
<div class="radio radio-inline">
|
||||
<input type="radio" name="element_{{ $key }}" value="{{ $value }}" id="{{ $value }}" required>
|
||||
<label for="{{ $value }}">{{ $value }}</label>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
@endforeach
|
||||
<div class="text-right mt-4">
|
||||
<button type="submit" class="btn btn-primary">{{ translate('Apply')}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@endsection
|
||||
Reference in New Issue
Block a user