codigo actual del servidor, con avances de joan
This commit is contained in:
40
resources/views/backend/addons/create.blade.php
Normal file
40
resources/views/backend/addons/create.blade.php
Normal file
@@ -0,0 +1,40 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-7 mx-auto">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{ translate('Install/Update Addon')}}</h5>
|
||||
</div>
|
||||
<form class="form-horizontal" action="{{ route('addons.store') }}" method="POST" enctype="multipart/form-data">
|
||||
@csrf
|
||||
<div class="card-body">
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-3 col-from-label" for="purchase_code">{{ translate('Purchase code')}}</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" id="purchase_code" name="purchase_code" class="form-control" autocomplete="off" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-3 col-from-label" for="addon_zip">{{ translate('Zip File')}}</label>
|
||||
<div class="col-sm-9">
|
||||
<div class="custom-file">
|
||||
<label class="custom-file-label">
|
||||
<input type="file" id="addon_zip" name="addon_zip" 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('Install/Update')}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
145
resources/views/backend/addons/index.blade.php
Normal file
145
resources/views/backend/addons/index.blade.php
Normal file
@@ -0,0 +1,145 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="">
|
||||
<div class="row ">
|
||||
<div class="col-md-6">
|
||||
<div class="nav border-bottom aiz-nav-tabs">
|
||||
<a class="p-3 fs-16 text-reset show active" data-toggle="tab" href="#installed">{{ translate('Installed Addon')}}</a>
|
||||
<a class="p-3 fs-16 text-reset" data-toggle="tab" href="#available">{{ translate('Available Addon')}}</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col mt-3 mt-sm-0 text-center text-md-right">
|
||||
<a href="https://activeitzone.com/activation/addon" class="btn btn-primary" target="_blank">
|
||||
{{ translate('Activate Addon Link') }}
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-auto mt-3 mt-sm-0 text-center text-md-right">
|
||||
<a href="{{ route('addons.create')}}" class="btn btn-primary">{{ translate('Install/Update Addon')}}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
<div class="tab-content">
|
||||
<div class="tab-pane fade in active show" id="installed">
|
||||
<div class="row">
|
||||
<div class="col-lg-8 mx-auto">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<ul class="list-group">
|
||||
@forelse($addons as $key => $addon)
|
||||
<li class="list-group-item">
|
||||
<div class="align-items-center d-flex flex-column flex-md-row">
|
||||
<img class="h-60px mb-3 mb-md-0" src="{{ static_asset($addon->image) }}" alt="Image">
|
||||
<div class="mr-md-3 ml-md-5">
|
||||
<h4 class="fs-16 fw-600">{{ ucfirst($addon->name) }}</h4>
|
||||
</div>
|
||||
<div class="mr-md-3 ml-0">
|
||||
<p><small>{{ translate('Version')}}: </small>{{ $addon->version }}</p>
|
||||
</div>
|
||||
@if (env('DEMO_MODE') != 'On')
|
||||
<div class="mr-md-3 ml-0">
|
||||
<p><small>{{ translate('Purchase code')}}: </small>{{ $addon->purchase_code }}</p>
|
||||
</div>
|
||||
@endif
|
||||
<div class="ml-auto mr-0">
|
||||
<label class="aiz-switch mb-0">
|
||||
<input type="checkbox" onchange="updateStatus(this, {{ $addon->id }})" <?php if($addon->activated) echo "checked";?>>
|
||||
<span></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
@empty
|
||||
<li class="list-group-item">
|
||||
<div class="text-center">
|
||||
<img class="mw-100 h-200px" src="{{ static_asset('assets/img/nothing.svg') }}" alt="Image">
|
||||
<h5 class="mb-0 h5 mt-3">{{ translate('No Addon Installed')}}</h5>
|
||||
</div>
|
||||
</li>
|
||||
@endforelse
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab-pane fade" id="available">
|
||||
<div class="row" id="available-addons-content">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
<script type="text/javascript">
|
||||
function updateStatus(el, id){
|
||||
if($(el).is(':checked')){
|
||||
var status = 1;
|
||||
}
|
||||
else{
|
||||
var status = 0;
|
||||
}
|
||||
$.post('{{ route('addons.activation') }}', {_token:'{{ csrf_token() }}', id:id, status:status}, function(data){
|
||||
if(data == 1){
|
||||
AIZ.plugins.notify('success', '{{ translate('Status updated successfully') }}');
|
||||
}
|
||||
else{
|
||||
AIZ.plugins.notify('danger', '{{ translate('Something went wrong') }}');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$(document).ready(function(){
|
||||
$.post('https://activeitzone.com/addons/public/addons', {item: 'ecommerce'}, function(data){
|
||||
//console.log(data);
|
||||
html = '';
|
||||
data.forEach((item, i) => {
|
||||
if(item.link != null){
|
||||
html += `<div class="col-lg-4 col-md-6 ">
|
||||
<div class="card addon-card">
|
||||
<div class="card-body">
|
||||
<a href="${item.link}" target="_blank"><img class="img-fluid" src="${item.image}"></a>
|
||||
<div class="pt-4">
|
||||
<a class="fs-16 fw-600 text-reset" href="${item.link}" target="_blank">${item.name}</a>
|
||||
<div class="rating mb-2"><i class="la la-star active"></i><i class="la la-star active"></i><i class="la la-star active"></i><i class="la la-star active"></i><i class="la la-star active"></i></div>
|
||||
<p class="mar-no text-truncate-3">${item.short_description}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<div class="text-danger fs-22 fw-600">$${item.price}</div>
|
||||
<div class=""><a href="${item.link}" target="_blank" class="btn btn-sm btn-secondary">Preview</a> <a href="${item.purchase}" target="_blank" class="btn btn-sm btn-primary">Purchase</a></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>`;
|
||||
}
|
||||
else {
|
||||
html += `<div class="col-lg-4 col-md-6 ">
|
||||
<div class="card addon-card">
|
||||
<div class="card-body">
|
||||
<a><img class="img-fluid" src="${item.image}"></a>
|
||||
<div class="pt-4">
|
||||
<a class="fs-16 fw-600 text-reset" >${item.name}</a>
|
||||
<div class="rating mb-2"><i class="la la-star active"></i><i class="la la-star active"></i><i class="la la-star active"></i><i class="la la-star active"></i><i class="la la-star active"></i></div>
|
||||
<p class="mar-no text-truncate-3">${item.short_description}</p>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<div class="text-center"><div class="btn btn-outline btn-primary">Coming Soon</div></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>`;
|
||||
}
|
||||
|
||||
});
|
||||
$('#available-addons-content').html(html);
|
||||
});
|
||||
})
|
||||
</script>
|
||||
@endsection
|
||||
60
resources/views/backend/admin_profile/index.blade.php
Normal file
60
resources/views/backend/admin_profile/index.blade.php
Normal file
@@ -0,0 +1,60 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="col-lg-6 mx-auto">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('Profile')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form class="form-horizontal" action="{{ route('profile.update', Auth::user()->id) }}" method="POST" enctype="multipart/form-data">
|
||||
<input name="_method" type="hidden" value="PATCH">
|
||||
@csrf
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-3 col-from-label" for="name">{{translate('Name')}}</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" class="form-control" placeholder="{{translate('Name')}}" name="name" value="{{ Auth::user()->name }}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-3 col-from-label" for="name">{{translate('Email')}}</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="email" class="form-control" placeholder="{{translate('Email')}}" name="email" value="{{ Auth::user()->email }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-3 col-from-label" for="new_password">{{translate('New Password')}}</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="password" class="form-control" placeholder="{{translate('New Password')}}" name="new_password">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-3 col-from-label" for="confirm_password">{{translate('Confirm Password')}}</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="password" class="form-control" placeholder="{{translate('Confirm Password')}}" name="confirm_password">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label" for="signinSrEmail">{{translate('Avatar')}} <small>(90x90)</small></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 File') }}</div>
|
||||
<input type="hidden" name="avatar" class="selected-files" value="{{ Auth::user()->avatar_original }}">
|
||||
</div>
|
||||
<div class="file-preview box sm">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group mb-0 text-right">
|
||||
<button type="submit" class="btn btn-primary">{{translate('Save')}}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
151
resources/views/backend/blog_system/blog/create.blade.php
Normal file
151
resources/views/backend/blog_system/blog/create.blade.php
Normal file
@@ -0,0 +1,151 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-8 mx-auto">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('Blog Information')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form id="add_form" class="form-horizontal" action="{{ route('blog.store') }}" method="POST">
|
||||
@csrf
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label">
|
||||
{{translate('Blog Title')}}
|
||||
<span class="text-danger">*</span>
|
||||
</label>
|
||||
<div class="col-md-9">
|
||||
<input type="text" placeholder="{{translate('Blog Title')}}" onkeyup="makeSlug(this.value)" id="title" name="title" class="form-control" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row" id="category">
|
||||
<label class="col-md-3 col-from-label">
|
||||
{{translate('Category')}}
|
||||
<span class="text-danger">*</span>
|
||||
</label>
|
||||
<div class="col-md-9">
|
||||
<select class="form-control aiz-selectpicker" name="category_id" id="category_id" data-live-search="true" required>
|
||||
<option>--</option>
|
||||
@foreach ($blog_categories as $category)
|
||||
<option value="{{ $category->id }}">
|
||||
{{ $category->category_name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label">{{translate('Slug')}}
|
||||
<span class="text-danger">*</span></label>
|
||||
<div class="col-md-9">
|
||||
<input type="text" placeholder="{{translate('Slug')}}" name="slug" id="slug" class="form-control" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label" for="signinSrEmail">
|
||||
{{translate('Banner')}}
|
||||
<small>(1300x650)</small>
|
||||
</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 File') }}</div>
|
||||
<input type="hidden" name="banner" class="selected-files">
|
||||
</div>
|
||||
<div class="file-preview box sm">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label">
|
||||
{{translate('Short Description')}}
|
||||
<span class="text-danger">*</span>
|
||||
</label>
|
||||
<div class="col-md-9">
|
||||
<textarea name="short_description" rows="5" class="form-control" required=""></textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-from-label">
|
||||
{{translate('Description')}}
|
||||
</label>
|
||||
<div class="col-md-9">
|
||||
<textarea class="aiz-text-editor" name="description"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label">{{translate('Meta Title')}}</label>
|
||||
<div class="col-md-9">
|
||||
<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-form-label" for="signinSrEmail">
|
||||
{{translate('Meta Image')}}
|
||||
<small>(200x200)+</small>
|
||||
</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 File') }}</div>
|
||||
<input type="hidden" name="meta_img" class="selected-files">
|
||||
</div>
|
||||
<div class="file-preview box sm">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label">{{translate('Meta Description')}}</label>
|
||||
<div class="col-md-9">
|
||||
<textarea name="meta_description" rows="5" class="form-control"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label">
|
||||
{{translate('Meta Keywords')}}
|
||||
</label>
|
||||
<div class="col-md-9">
|
||||
<input type="text" class="form-control" id="meta_keywords" name="meta_keywords" placeholder="{{translate('Meta Keywords')}}">
|
||||
</div>
|
||||
</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>
|
||||
function makeSlug(val) {
|
||||
let str = val;
|
||||
let output = str.replace(/\s+/g, '-').toLowerCase();
|
||||
$('#slug').val(output);
|
||||
}
|
||||
</script>
|
||||
@endsection
|
||||
160
resources/views/backend/blog_system/blog/edit.blade.php
Normal file
160
resources/views/backend/blog_system/blog/edit.blade.php
Normal file
@@ -0,0 +1,160 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-8 mx-auto">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('Blog Information')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form id="add_form" class="form-horizontal" action="{{ route('blog.update',$blog->id) }}" method="POST">
|
||||
@csrf
|
||||
@method('PATCH')
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label">
|
||||
{{translate('Blog Title')}}
|
||||
<span class="text-danger">*</span>
|
||||
</label>
|
||||
<div class="col-md-9">
|
||||
<input type="text" placeholder="{{translate('Blog Title')}}" onkeyup="makeSlug(this.value)" id="title" name="title" value="{{ $blog->title }}" class="form-control" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row" id="category">
|
||||
<label class="col-md-3 col-from-label">
|
||||
{{translate('Category')}}
|
||||
<span class="text-danger">*</span>
|
||||
</label>
|
||||
<div class="col-md-9">
|
||||
<select
|
||||
class="form-control aiz-selectpicker"
|
||||
name="category_id"
|
||||
id="category_id"
|
||||
data-live-search="true"
|
||||
required
|
||||
@if($blog->category != null)
|
||||
data-selected="{{ $blog->category->id }}"
|
||||
@endif
|
||||
>
|
||||
<option>--</option>
|
||||
@foreach ($blog_categories as $category)
|
||||
<option value="{{ $category->id }}">
|
||||
{{ $category->category_name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label">{{translate('Slug')}}</label>
|
||||
<div class="col-md-9">
|
||||
<input type="text" placeholder="{{translate('Slug')}}" name="slug" id="slug" value="{{ $blog->slug }}" class="form-control" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label" for="signinSrEmail">
|
||||
{{translate('Banner')}}
|
||||
<small>(1300x650)</small>
|
||||
</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 File') }}</div>
|
||||
<input type="hidden" name="banner" class="selected-files" value="{{ $blog->banner }}">
|
||||
</div>
|
||||
<div class="file-preview box sm">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label">
|
||||
{{translate('Short Description')}}
|
||||
<span class="text-danger">*</span>
|
||||
</label>
|
||||
<div class="col-md-9">
|
||||
<textarea name="short_description" rows="5" class="form-control">{{ $blog->short_description }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-from-label">
|
||||
{{translate('Description')}}
|
||||
</label>
|
||||
<div class="col-md-9">
|
||||
<textarea class="aiz-text-editor" name="description">{{ $blog->description }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label">{{translate('Meta Title')}}</label>
|
||||
<div class="col-md-9">
|
||||
<input type="text" class="form-control" name="meta_title" value="{{ $blog->meta_title }}" placeholder="{{translate('Meta Title')}}">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label" for="signinSrEmail">
|
||||
{{translate('Meta Image')}}
|
||||
<small>(200x200)+</small>
|
||||
</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 File') }}</div>
|
||||
<input type="hidden" name="meta_img" class="selected-files" value="{{ $blog->meta_img }}">
|
||||
</div>
|
||||
<div class="file-preview box sm">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label">{{translate('Meta Description')}}</label>
|
||||
<div class="col-md-9">
|
||||
<textarea name="meta_description" rows="5" class="form-control">{{ $blog->meta_description }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label">
|
||||
{{translate('Meta Keywords')}}
|
||||
</label>
|
||||
<div class="col-md-9">
|
||||
<input type="text" class="form-control" id="meta_keywords" name="meta_keywords" value="{{ $blog->meta_keywords }}" placeholder="{{translate('Meta Keywords')}}">
|
||||
</div>
|
||||
</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>
|
||||
function makeSlug(val) {
|
||||
let str = val;
|
||||
let output = str.replace(/\s+/g, '-').toLowerCase();
|
||||
$('#slug').val(output);
|
||||
}
|
||||
</script>
|
||||
@endsection
|
||||
125
resources/views/backend/blog_system/blog/index.blade.php
Normal file
125
resources/views/backend/blog_system/blog/index.blade.php
Normal file
@@ -0,0 +1,125 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="aiz-titlebar text-left mt-2 mb-3">
|
||||
<div class="row align-items-center">
|
||||
<div class="col-auto">
|
||||
<h1 class="h3">{{translate('All Posts')}}</h1>
|
||||
</div>
|
||||
@can('add_blog')
|
||||
<div class="col text-right">
|
||||
<a href="{{ route('blog.create') }}" class="btn btn-circle btn-info">
|
||||
<span>{{translate('Add New Post')}}</span>
|
||||
</a>
|
||||
</div>
|
||||
@endcan
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
|
||||
<div class="card">
|
||||
<form class="" id="sort_blogs" 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('All blog posts') }}</h5>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<div class="form-group mb-0">
|
||||
<input type="text" class="form-control form-control-sm" id="search" name="search"@isset($sort_search) value="{{ $sort_search }}" @endisset placeholder="{{ translate('Type & Enter') }}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<div class="card-body">
|
||||
<table class="table mb-0 aiz-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>{{translate('Title')}}</th>
|
||||
<th data-breakpoints="lg">{{translate('Category')}}</th>
|
||||
<th data-breakpoints="lg">{{translate('Short Description')}}</th>
|
||||
<th data-breakpoints="lg">{{translate('Status')}}</th>
|
||||
<th class="text-right">{{translate('Options')}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($blogs as $key => $blog)
|
||||
<tr>
|
||||
<td>
|
||||
{{ ($key+1) + ($blogs->currentPage() - 1) * $blogs->perPage() }}
|
||||
</td>
|
||||
<td>
|
||||
{{ $blog->title }}
|
||||
</td>
|
||||
<td>
|
||||
@if($blog->category != null)
|
||||
{{ $blog->category->category_name }}
|
||||
@else
|
||||
--
|
||||
@endif
|
||||
</td>
|
||||
<td>
|
||||
{{ $blog->short_description }}
|
||||
</td>
|
||||
<td>
|
||||
<label class="aiz-switch aiz-switch-success mb-0">
|
||||
<input type="checkbox"
|
||||
@can('publish_blog') onchange="change_status(this)" @endcan
|
||||
value="{{ $blog->id }}"
|
||||
<?php if($blog->status == 1) echo "checked";?>
|
||||
@cannot('publish_blog') disabled @endcan
|
||||
>
|
||||
<span></span>
|
||||
</label>
|
||||
</td>
|
||||
<td class="text-right">
|
||||
@can('edit_blog')
|
||||
<a class="btn btn-soft-primary btn-icon btn-circle btn-sm" href="{{ route('blog.edit',$blog->id)}}" title="{{ translate('Edit') }}">
|
||||
<i class="las la-pen"></i>
|
||||
</a>
|
||||
@endcan
|
||||
@can('delete_blog')
|
||||
<a href="#" class="btn btn-soft-danger btn-icon btn-circle btn-sm confirm-delete" data-href="{{route('blog.destroy', $blog->id)}}" title="{{ translate('Delete') }}">
|
||||
<i class="las la-trash"></i>
|
||||
</a>
|
||||
@endcan
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="aiz-pagination">
|
||||
{{ $blogs->appends(request()->input())->links() }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
@section('modal')
|
||||
@include('modals.delete_modal')
|
||||
@endsection
|
||||
|
||||
|
||||
@section('script')
|
||||
|
||||
<script type="text/javascript">
|
||||
function change_status(el){
|
||||
var status = 0;
|
||||
if(el.checked){
|
||||
var status = 1;
|
||||
}
|
||||
$.post('{{ route('blog.change-status') }}', {_token:'{{ csrf_token() }}', id:el.value, status:status}, function(data){
|
||||
if(data == 1){
|
||||
AIZ.plugins.notify('success', '{{ translate('Change blog status successfully') }}');
|
||||
}
|
||||
else{
|
||||
AIZ.plugins.notify('danger', '{{ translate('Something went wrong') }}');
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
@endsection
|
||||
@@ -0,0 +1,31 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-8 mx-auto">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('Blog Category Information')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form class="form-horizontal" method="POST" action="{{ route('blog-category.store') }}">
|
||||
@csrf
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label">{{translate('Name')}}</label>
|
||||
<div class="col-md-9">
|
||||
<input type="text" placeholder="{{translate('Name')}}" id="category_name" name="category_name" class="form-control" required>
|
||||
</div>
|
||||
</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
|
||||
33
resources/views/backend/blog_system/category/edit.blade.php
Normal file
33
resources/views/backend/blog_system/category/edit.blade.php
Normal file
@@ -0,0 +1,33 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-8 mx-auto">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('Blog Category Information')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form id="add_form" class="form-horizontal" action="{{ route('blog-category.update', $cateogry->id) }}" method="POST">
|
||||
@csrf
|
||||
@method('PATCH')
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label">{{translate('Name')}}</label>
|
||||
<div class="col-md-9">
|
||||
<input type="text" placeholder="{{translate('Name')}}" id="category_name" name="category_name" value="{{ $cateogry->category_name }}" class="form-control" required>
|
||||
</div>
|
||||
</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
|
||||
70
resources/views/backend/blog_system/category/index.blade.php
Normal file
70
resources/views/backend/blog_system/category/index.blade.php
Normal file
@@ -0,0 +1,70 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="aiz-titlebar text-left mt-2 mb-3">
|
||||
<div class="row align-items-center">
|
||||
<div class="col-md-6">
|
||||
<h1 class="h3">{{translate('All Blog Categories')}}</h1>
|
||||
</div>
|
||||
@can('add_blog_category')
|
||||
<div class="col-md-6 text-md-right">
|
||||
<a href="{{ url('admin/blog-category/create') }}" class="btn btn-primary">
|
||||
<span>{{translate('Add New category')}}</span>
|
||||
</a>
|
||||
</div>
|
||||
@endcan
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-header d-block d-md-flex">
|
||||
<h5 class="mb-0 h6">{{ translate('Blog Categories') }}</h5>
|
||||
<form class="" id="sort_categories" action="" method="GET">
|
||||
<div class="box-inline pad-rgt pull-left">
|
||||
<div class="" style="min-width: 200px;">
|
||||
<input type="text" class="form-control" id="search" name="search"@isset($sort_search) value="{{ $sort_search }}" @endisset placeholder="{{ translate('Type name & Enter') }}">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table aiz-table mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th width="5%">#</th>
|
||||
<th>{{translate('Name')}}</th>
|
||||
<th width="10%" class="text-right">{{translate('Options')}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($categories as $key => $category)
|
||||
<tr>
|
||||
<td>{{ ($key+1) + ($categories->currentPage() - 1)*$categories->perPage() }}</td>
|
||||
<td>{{ $category->category_name }}</td>
|
||||
<td class="text-right">
|
||||
@can('edit_blog_category')
|
||||
<a class="btn btn-soft-primary btn-icon btn-circle btn-sm" href="{{url('admin/blog-category/'.$category->id.'/edit')}}" title="{{ translate('Edit') }}">
|
||||
<i class="las la-edit"></i>
|
||||
</a>
|
||||
@endcan
|
||||
@can('delete_blog_category')
|
||||
<a href="#" class="btn btn-soft-danger btn-icon btn-circle btn-sm confirm-delete" data-href="{{route('blog-category.destroy', $category->id)}}" title="{{ translate('Delete') }}">
|
||||
<i class="las la-trash"></i>
|
||||
</a>
|
||||
@endcan
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="aiz-pagination">
|
||||
{{ $categories->appends(request()->input())->links() }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
|
||||
@section('modal')
|
||||
@include('modals.delete_modal')
|
||||
@endsection
|
||||
|
||||
@@ -0,0 +1,91 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('Classified Products')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table aiz-table mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th data-breakpoints="lg">#</th>
|
||||
<th>{{translate('Name')}}</th>
|
||||
<th data-breakpoints="lg">{{translate('Image')}}</th>
|
||||
<th data-breakpoints="lg">{{translate('Uploaded By')}}</th>
|
||||
<th data-breakpoints="lg">{{translate('Customer Status')}}</th>
|
||||
<th data-breakpoints="lg">{{translate('Published')}}</th>
|
||||
<th class="text-right" width="10%">{{translate('Options')}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($products as $key => $product)
|
||||
<tr>
|
||||
<td>{{ ($key+1) + ($products->currentPage() - 1)*$products->perPage() }}</td>
|
||||
<td><a href="{{ route('customer.product', $product->slug) }}" class="text-reset text-truncate-2" target="_blank">{{$product->getTranslation('name')}}</a></td>
|
||||
<td><img src="{{ uploaded_asset($product->thumbnail_img) }}" alt="{{translate('Product Image')}}" class="h-50px"></td>
|
||||
<td>{{$product->added_by}}</td>
|
||||
<td>
|
||||
@if ($product->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>
|
||||
<td>
|
||||
<label class="aiz-switch aiz-switch-success mb-0">
|
||||
<input
|
||||
@can('publish_classified_product') onchange="update_published(this)" @endcan
|
||||
value="{{ $product->id }}" type="checkbox" <?php if($product->published == 1) echo "checked";?>
|
||||
@if(!auth()->user()->can('publish_classified_product')) disabled @endif
|
||||
>
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
</td>
|
||||
<td class="text-right">
|
||||
<a class="btn btn-soft-primary btn-icon btn-circle btn-sm" href="{{route('customer.product', $product->slug)}}" title="{{ translate('Show') }}">
|
||||
<i class="las la-eye"></i>
|
||||
</a>
|
||||
@can('delete_classified_product')
|
||||
<a href="#" class="btn btn-soft-danger btn-icon btn-circle btn-sm confirm-delete" data-href="{{route('classified_products.destroy', $product->id)}}}}" title="{{ translate('Delete') }}">
|
||||
<i class="las la-trash"></i>
|
||||
</a>
|
||||
@endcan
|
||||
</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">s
|
||||
|
||||
function update_published(el){
|
||||
if(el.checked){
|
||||
var status = 1;
|
||||
}
|
||||
else{
|
||||
var status = 0;
|
||||
}
|
||||
$.post('{{ route('classified_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{
|
||||
AIZ.plugins.notify('danger', '{{ translate('Something went wrong') }}');
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
@endsection
|
||||
@@ -0,0 +1,54 @@
|
||||
@extends('backend.layouts.app')
|
||||
@section('content')
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-8 mx-auto">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('Create New Package')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form action="{{ route('customer_packages.store') }}" method="POST" >
|
||||
@csrf
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-3 col-from-label" for="name">{{translate('Package Name')}}</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" placeholder="{{translate('Name')}}" id="name" name="name" class="form-control" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-3 col-from-label" for="name">{{translate('Amount')}}</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="number" lang="en" min="0" step="0.01" placeholder="{{translate('Amount')}}" id="amount" name="amount" class="form-control" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-3 col-from-label" for="name">{{translate('Product Upload')}}</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="number" lang="en" min="0" step="1" placeholder="{{translate('Product Upload')}}" id="product_upload" name="product_upload" class="form-control" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label" for="signinSrEmail">{{translate('Package logo')}}</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 File') }}</div>
|
||||
<input type="hidden" name="logo" class="selected-files">
|
||||
</div>
|
||||
<div class="file-preview box sm">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group mb-0 text-right">
|
||||
<button type="submit" class="btn btn-primary">{{translate('Save')}}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
@@ -0,0 +1,69 @@
|
||||
@extends('backend.layouts.app')
|
||||
@section('content')
|
||||
|
||||
<div class="aiz-titlebar text-left mt-2 mb-3">
|
||||
<div class="align-items-center">
|
||||
<h1 class="h3">{{translate('Update Package Information')}}</h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-8 mx-auto">
|
||||
<div class="card">
|
||||
<div class="card-body p-0">
|
||||
<ul class="nav nav-tabs nav-fill border-light">
|
||||
@foreach (\App\Models\Language::all() as $key => $language)
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-reset @if ($language->code == $lang) active @else bg-soft-dark border-light border-left-0 @endif py-3" href="{{ route('customer_packages.edit', ['id'=>$customer_package->id, 'lang'=> $language->code] ) }}">
|
||||
<img src="{{ static_asset('assets/img/flags/'.$language->code.'.png') }}" height="11" class="mr-1">
|
||||
<span>{{$language->name}}</span>
|
||||
</a>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
<form class="p-4" action="{{ route('customer_packages.update', $customer_package->id) }}" method="POST">
|
||||
<input type="hidden" name="_method" value="PATCH">
|
||||
<input type="hidden" name="lang" value="{{ $lang }}">
|
||||
@csrf
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-3 col-from-label">{{translate('Package Name')}} <i class="las la-language text-danger" title="{{translate('Translatable')}}"></i></label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" placeholder="{{translate('Name')}}" id="name" name="name" value="{{ $customer_package->getTranslation('name', $lang) }}" class="form-control" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-3 col-from-label">{{translate('Amount')}}</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="number" lang="en" min="0" step="0.01" placeholder="{{translate('Amount')}}" value="{{ $customer_package->amount }}" id="amount" name="amount" class="form-control" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-3 col-from-label">{{translate('Product Upload')}}</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="number" lang="en" min="0" step="1" placeholder="{{translate('Product Upload')}}" value="{{ $customer_package->product_upload }}" id="product_upload" name="product_upload" class="form-control" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label" for="signinSrEmail">{{translate('Package logo')}}</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 File') }}</div>
|
||||
<input type="hidden" name="logo" value="{{$customer_package->logo}}" class="selected-files">
|
||||
</div>
|
||||
<div class="file-preview box sm">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group mb-0 text-right">
|
||||
<button type="submit" class="btn btn-primary">{{translate('Save')}}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
@@ -0,0 +1,47 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="aiz-titlebar text-left mt-2 mb-3">
|
||||
<div class="row align-items-center">
|
||||
<div class="col-md-6">
|
||||
<h1 class="h3">{{translate('All Classifies Packages')}}</h1>
|
||||
</div>
|
||||
@can('add_classified_package')
|
||||
<div class="col-md-6 text-md-right">
|
||||
<a href="{{ route('customer_packages.create') }}" class="btn btn-circle btn-info">
|
||||
<span>{{translate('Add New Package')}}</span>
|
||||
</a>
|
||||
</div>
|
||||
@endcan
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
@foreach ($customer_packages as $key => $customer_package)
|
||||
<div class="col-lg-3 col-md-4 col-sm-12">
|
||||
<div class="card">
|
||||
<div class="card-body text-center">
|
||||
<img alt="{{ translate('Package Logo')}}" src="{{ uploaded_asset($customer_package->logo) }}" class="mw-100 mx-auto mb-4" height="150px">
|
||||
<p class="mb-3 h6 fw-600">{{$customer_package->getTranslation('name')}}</p>
|
||||
<p class="h4">{{single_price($customer_package->amount)}}</p>
|
||||
<p class="fs-15">{{translate('Product Upload') }}:
|
||||
<span class="text-bold">{{$customer_package->product_upload}}</span>
|
||||
</p>
|
||||
<div class="mar-top">
|
||||
@can('edit_classified_package')
|
||||
<a href="{{route('customer_packages.edit', ['id'=>$customer_package->id, 'lang'=>env('DEFAULT_LANGUAGE')] )}}" class="btn btn-sm btn-info">{{translate('Edit')}}</a>
|
||||
@endcan
|
||||
@can('delete_classified_package')
|
||||
<a href="#" data-href="{{route('customer_packages.destroy', $customer_package->id)}}" class="btn btn-sm btn-danger confirm-delete" >{{translate('Delete')}}</a>
|
||||
@endcan
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('modal')
|
||||
@include('modals.delete_modal')
|
||||
@endsection
|
||||
214
resources/views/backend/customer/customers/index.blade.php
Normal file
214
resources/views/backend/customer/customers/index.blade.php
Normal file
@@ -0,0 +1,214 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="aiz-titlebar text-left mt-2 mb-3">
|
||||
<div class="align-items-center">
|
||||
<h1 class="h3">{{translate('All Customers')}}</h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<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('Customers')}}</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">
|
||||
<div class="form-group mb-0">
|
||||
<input type="text" class="form-control" id="search" name="search"@isset($sort_search) value="{{ $sort_search }}" @endisset placeholder="{{ translate('Type email or name & Enter') }}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<table class="table aiz-table mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<!--<th data-breakpoints="lg">#</th>-->
|
||||
<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>{{translate('Name')}}</th>
|
||||
<th data-breakpoints="lg">{{translate('Email Address')}}</th>
|
||||
<th data-breakpoints="lg">{{translate('Phone')}}</th>
|
||||
<th data-breakpoints="lg">{{translate('Package')}}</th>
|
||||
<th data-breakpoints="lg">{{translate('Wallet Balance')}}</th>
|
||||
<th class="text-right">{{translate('Options')}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($users as $key => $user)
|
||||
@if ($user != null)
|
||||
<tr>
|
||||
<!--<td>{{ ($key+1) + ($users->currentPage() - 1)*$users->perPage() }}</td>-->
|
||||
<td>
|
||||
<div class="form-group">
|
||||
<div class="aiz-checkbox-inline">
|
||||
<label class="aiz-checkbox">
|
||||
<input type="checkbox" class="check-one" name="id[]" value="{{$user->id}}">
|
||||
<span class="aiz-square-check"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>@if($user->banned == 1) <i class="fa fa-ban text-danger" aria-hidden="true"></i> @endif {{$user->name}}</td>
|
||||
<td>{{$user->email}}</td>
|
||||
<td>{{$user->phone}}</td>
|
||||
<td>
|
||||
@if ($user->customer_package != null)
|
||||
{{$user->customer_package->getTranslation('name')}}
|
||||
@endif
|
||||
</td>
|
||||
<td>{{single_price($user->balance)}}</td>
|
||||
<td class="text-right">
|
||||
@can('login_as_customer')
|
||||
<a href="{{route('customers.login', encrypt($user->id))}}" class="btn btn-soft-primary btn-icon btn-circle btn-sm" title="{{ translate('Log in as this Customer') }}">
|
||||
<i class="las la-edit"></i>
|
||||
</a>
|
||||
@endcan
|
||||
@can('ban_customer')
|
||||
@if($user->banned != 1)
|
||||
<a href="#" class="btn btn-soft-danger btn-icon btn-circle btn-sm" onclick="confirm_ban('{{route('customers.ban', encrypt($user->id))}}');" title="{{ translate('Ban this Customer') }}">
|
||||
<i class="las la-user-slash"></i>
|
||||
</a>
|
||||
@else
|
||||
<a href="#" class="btn btn-soft-success btn-icon btn-circle btn-sm" onclick="confirm_unban('{{route('customers.ban', encrypt($user->id))}}');" title="{{ translate('Unban this Customer') }}">
|
||||
<i class="las la-user-check"></i>
|
||||
</a>
|
||||
@endif
|
||||
@endcan
|
||||
@can('delete_customer')
|
||||
<a href="#" class="btn btn-soft-danger btn-icon btn-circle btn-sm confirm-delete" data-href="{{route('customers.destroy', $user->id)}}" title="{{ translate('Delete') }}">
|
||||
<i class="las la-trash"></i>
|
||||
</a>
|
||||
@endcan
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="aiz-pagination">
|
||||
{{ $users->appends(request()->input())->links() }}
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="modal fade" id="confirm-ban">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title h6">{{translate('Confirmation')}}</h5>
|
||||
<button type="button" class="close" data-dismiss="modal"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<p>{{translate('Do you really want to ban this Customer?')}}</p>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-light" data-dismiss="modal">{{translate('Cancel')}}</button>
|
||||
<a type="button" id="confirmation" class="btn btn-primary">{{translate('Proceed!')}}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="confirm-unban">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title h6">{{translate('Confirmation')}}</h5>
|
||||
<button type="button" class="close" data-dismiss="modal"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<p>{{translate('Do you really want to unban this Customer?')}}</p>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-light" data-dismiss="modal">{{translate('Cancel')}}</button>
|
||||
<a type="button" id="confirmationunban" class="btn btn-primary">{{translate('Proceed!')}}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</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 sort_customers(el){
|
||||
$('#sort_customers').submit();
|
||||
}
|
||||
function confirm_ban(url)
|
||||
{
|
||||
$('#confirm-ban').modal('show', {backdrop: 'static'});
|
||||
document.getElementById('confirmation').setAttribute('href' , url);
|
||||
}
|
||||
|
||||
function confirm_unban(url)
|
||||
{
|
||||
$('#confirm-unban').modal('show', {backdrop: 'static'});
|
||||
document.getElementById('confirmationunban').setAttribute('href' , url);
|
||||
}
|
||||
|
||||
function bulk_delete() {
|
||||
var data = new FormData($('#sort_customers')[0]);
|
||||
$.ajax({
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
|
||||
},
|
||||
url: "{{route('bulk-customer-delete')}}",
|
||||
type: 'POST',
|
||||
data: data,
|
||||
cache: false,
|
||||
contentType: false,
|
||||
processData: false,
|
||||
success: function (response) {
|
||||
if(response == 1) {
|
||||
location.reload();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
@endsection
|
||||
390
resources/views/backend/dashboard.blade.php
Normal file
390
resources/views/backend/dashboard.blade.php
Normal file
@@ -0,0 +1,390 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
@if(auth()->user()->can('smtp_settings') && env('MAIL_USERNAME') == null && env('MAIL_PASSWORD') == null)
|
||||
<div class="">
|
||||
<div class="alert alert-danger d-flex align-items-center">
|
||||
{{translate('Please Configure SMTP Setting to work all email sending functionality')}},
|
||||
<a class="alert-link ml-2" href="{{ route('smtp_settings.index') }}">{{ translate('Configure Now') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
@can('admin_dashboard')
|
||||
<div class="row gutters-10">
|
||||
<div class="col-lg-6">
|
||||
<div class="row gutters-10">
|
||||
<div class="col-6">
|
||||
<div class="bg-grad-2 text-white rounded-lg mb-4 overflow-hidden">
|
||||
<div class="px-3 pt-3">
|
||||
<div class="opacity-50">
|
||||
<span class="fs-12 d-block">{{ translate('Total') }}</span>
|
||||
{{ translate('Customer') }}
|
||||
</div>
|
||||
<div class="h3 fw-700 mb-3">
|
||||
{{ \App\Models\User::where('user_type', 'customer')->where('email_verified_at', '!=', null)->count() }}
|
||||
</div>
|
||||
</div>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1440 320">
|
||||
<path fill="rgba(255,255,255,0.3)" fill-opacity="1" d="M0,128L34.3,112C68.6,96,137,64,206,96C274.3,128,343,224,411,250.7C480,277,549,235,617,213.3C685.7,192,754,192,823,181.3C891.4,171,960,149,1029,117.3C1097.1,85,1166,43,1234,58.7C1302.9,75,1371,149,1406,186.7L1440,224L1440,320L1405.7,320C1371.4,320,1303,320,1234,320C1165.7,320,1097,320,1029,320C960,320,891,320,823,320C754.3,320,686,320,617,320C548.6,320,480,320,411,320C342.9,320,274,320,206,320C137.1,320,69,320,34,320L0,320Z"></path>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<div class="bg-grad-3 text-white rounded-lg mb-4 overflow-hidden">
|
||||
<div class="px-3 pt-3">
|
||||
<div class="opacity-50">
|
||||
<span class="fs-12 d-block">{{ translate('Total') }}</span>
|
||||
{{ translate('Order') }}
|
||||
</div>
|
||||
<div class="h3 fw-700 mb-3">{{ \App\Models\Order::count() }}</div>
|
||||
</div>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1440 320">
|
||||
<path fill="rgba(255,255,255,0.3)" fill-opacity="1" d="M0,128L34.3,112C68.6,96,137,64,206,96C274.3,128,343,224,411,250.7C480,277,549,235,617,213.3C685.7,192,754,192,823,181.3C891.4,171,960,149,1029,117.3C1097.1,85,1166,43,1234,58.7C1302.9,75,1371,149,1406,186.7L1440,224L1440,320L1405.7,320C1371.4,320,1303,320,1234,320C1165.7,320,1097,320,1029,320C960,320,891,320,823,320C754.3,320,686,320,617,320C548.6,320,480,320,411,320C342.9,320,274,320,206,320C137.1,320,69,320,34,320L0,320Z"></path>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<div class="bg-grad-1 text-white rounded-lg mb-4 overflow-hidden">
|
||||
<div class="px-3 pt-3">
|
||||
<div class="opacity-50">
|
||||
<span class="fs-12 d-block">{{ translate('Total') }}</span>
|
||||
{{ translate('Product category') }}
|
||||
</div>
|
||||
<div class="h3 fw-700 mb-3">{{ \App\Models\Category::count() }}</div>
|
||||
</div>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1440 320">
|
||||
<path fill="rgba(255,255,255,0.3)" fill-opacity="1" d="M0,128L34.3,112C68.6,96,137,64,206,96C274.3,128,343,224,411,250.7C480,277,549,235,617,213.3C685.7,192,754,192,823,181.3C891.4,171,960,149,1029,117.3C1097.1,85,1166,43,1234,58.7C1302.9,75,1371,149,1406,186.7L1440,224L1440,320L1405.7,320C1371.4,320,1303,320,1234,320C1165.7,320,1097,320,1029,320C960,320,891,320,823,320C754.3,320,686,320,617,320C548.6,320,480,320,411,320C342.9,320,274,320,206,320C137.1,320,69,320,34,320L0,320Z"></path>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<div class="bg-grad-4 text-white rounded-lg mb-4 overflow-hidden">
|
||||
<div class="px-3 pt-3">
|
||||
<div class="opacity-50">
|
||||
<span class="fs-12 d-block">{{ translate('Total') }}</span>
|
||||
{{ translate('Product brand') }}
|
||||
</div>
|
||||
<div class="h3 fw-700 mb-3">{{ \App\Models\Brand::count() }}</div>
|
||||
</div>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1440 320">
|
||||
<path fill="rgba(255,255,255,0.3)" fill-opacity="1" d="M0,128L34.3,112C68.6,96,137,64,206,96C274.3,128,343,224,411,250.7C480,277,549,235,617,213.3C685.7,192,754,192,823,181.3C891.4,171,960,149,1029,117.3C1097.1,85,1166,43,1234,58.7C1302.9,75,1371,149,1406,186.7L1440,224L1440,320L1405.7,320C1371.4,320,1303,320,1234,320C1165.7,320,1097,320,1029,320C960,320,891,320,823,320C754.3,320,686,320,617,320C548.6,320,480,320,411,320C342.9,320,274,320,206,320C137.1,320,69,320,34,320L0,320Z"></path>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-6">
|
||||
<div class="row gutters-10">
|
||||
<div class="col-6">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h6 class="mb-0 fs-14">{{ translate('Products') }}</h6>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<canvas id="pie-1" class="w-100" height="305"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h6 class="mb-0 fs-14">{{ translate('Sellers') }}</h6>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<canvas id="pie-2" class="w-100" height="305"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row gutters-10">
|
||||
<div class="col-md-6">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h6 class="mb-0 fs-14">{{ translate('Category wise product sale') }}</h6>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<canvas id="graph-1" class="w-100" height="500"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h6 class="mb-0 fs-14">{{ translate('Category wise product stock') }}</h6>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<canvas id="graph-2" class="w-100" height="500"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h6 class="mb-0">{{ translate('Top 12 Products') }}</h6>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<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 (filter_products(\App\Models\Product::where('published', 1)->orderBy('num_of_sale', 'desc'))->limit(12)->get() 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>
|
||||
@endcan
|
||||
|
||||
|
||||
@endsection
|
||||
@section('script')
|
||||
<script type="text/javascript">
|
||||
AIZ.plugins.chart('#pie-1',{
|
||||
type: 'doughnut',
|
||||
data: {
|
||||
labels: [
|
||||
'{{translate('Total published products')}}',
|
||||
'{{translate('Total sellers products')}}',
|
||||
'{{translate('Total admin products')}}'
|
||||
],
|
||||
datasets: [
|
||||
{
|
||||
data: [
|
||||
{{ \App\Models\Product::where('published', 1)->count() }},
|
||||
{{ \App\Models\Product::where('published', 1)->where('added_by', 'seller')->count() }},
|
||||
{{ \App\Models\Product::where('published', 1)->where('added_by', 'admin')->count() }}
|
||||
],
|
||||
backgroundColor: [
|
||||
"#fd3995",
|
||||
"#34bfa3",
|
||||
"#5d78ff",
|
||||
'#fdcb6e',
|
||||
'#d35400',
|
||||
'#8e44ad',
|
||||
'#006442',
|
||||
'#4D8FAC',
|
||||
'#CA6924',
|
||||
'#C91F37'
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
options: {
|
||||
cutoutPercentage: 70,
|
||||
legend: {
|
||||
labels: {
|
||||
fontFamily: 'Poppins',
|
||||
boxWidth: 10,
|
||||
usePointStyle: true
|
||||
},
|
||||
onClick: function () {
|
||||
return '';
|
||||
},
|
||||
position: 'bottom'
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
AIZ.plugins.chart('#pie-2',{
|
||||
type: 'doughnut',
|
||||
data: {
|
||||
labels: [
|
||||
'{{translate('Total sellers')}}',
|
||||
'{{translate('Total approved sellers')}}',
|
||||
'{{translate('Total pending sellers')}}'
|
||||
],
|
||||
datasets: [
|
||||
{
|
||||
data: [
|
||||
{{ \App\Models\Shop::count() }},
|
||||
{{ \App\Models\Shop::where('verification_status', 1)->count() }},
|
||||
{{ \App\Models\Shop::where('verification_status', 0)->count() }}
|
||||
],
|
||||
backgroundColor: [
|
||||
"#fd3995",
|
||||
"#34bfa3",
|
||||
"#5d78ff",
|
||||
'#fdcb6e',
|
||||
'#d35400',
|
||||
'#8e44ad',
|
||||
'#006442',
|
||||
'#4D8FAC',
|
||||
'#CA6924',
|
||||
'#C91F37'
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
options: {
|
||||
cutoutPercentage: 70,
|
||||
legend: {
|
||||
labels: {
|
||||
fontFamily: 'Montserrat',
|
||||
boxWidth: 10,
|
||||
usePointStyle: true
|
||||
},
|
||||
onClick: function () {
|
||||
return '';
|
||||
},
|
||||
position: 'bottom'
|
||||
}
|
||||
}
|
||||
});
|
||||
AIZ.plugins.chart('#graph-1',{
|
||||
type: 'bar',
|
||||
data: {
|
||||
labels: [
|
||||
@foreach ($root_categories as $key => $category)
|
||||
'{{ $category->getTranslation('name') }}',
|
||||
@endforeach
|
||||
],
|
||||
datasets: [{
|
||||
label: '{{ translate('Number of sale') }}',
|
||||
data: [
|
||||
{{ $cached_graph_data['num_of_sale_data'] }}
|
||||
],
|
||||
backgroundColor: [
|
||||
@foreach ($root_categories as $key => $category)
|
||||
'rgba(55, 125, 255, 0.4)',
|
||||
@endforeach
|
||||
],
|
||||
borderColor: [
|
||||
@foreach ($root_categories as $key => $category)
|
||||
'rgba(55, 125, 255, 1)',
|
||||
@endforeach
|
||||
],
|
||||
borderWidth: 1
|
||||
}]
|
||||
},
|
||||
options: {
|
||||
scales: {
|
||||
yAxes: [{
|
||||
gridLines: {
|
||||
color: '#f2f3f8',
|
||||
zeroLineColor: '#f2f3f8'
|
||||
},
|
||||
ticks: {
|
||||
fontColor: "#8b8b8b",
|
||||
fontFamily: 'Poppins',
|
||||
fontSize: 10,
|
||||
beginAtZero: true
|
||||
}
|
||||
}],
|
||||
xAxes: [{
|
||||
gridLines: {
|
||||
color: '#f2f3f8'
|
||||
},
|
||||
ticks: {
|
||||
fontColor: "#8b8b8b",
|
||||
fontFamily: 'Poppins',
|
||||
fontSize: 10
|
||||
}
|
||||
}]
|
||||
},
|
||||
legend:{
|
||||
labels: {
|
||||
fontFamily: 'Poppins',
|
||||
boxWidth: 10,
|
||||
usePointStyle: true
|
||||
},
|
||||
onClick: function () {
|
||||
return '';
|
||||
},
|
||||
}
|
||||
}
|
||||
});
|
||||
AIZ.plugins.chart('#graph-2',{
|
||||
type: 'bar',
|
||||
data: {
|
||||
labels: [
|
||||
@foreach ($root_categories as $key => $category)
|
||||
'{{ $category->getTranslation('name') }}',
|
||||
@endforeach
|
||||
],
|
||||
datasets: [{
|
||||
label: '{{ translate('Number of Stock') }}',
|
||||
data: [
|
||||
{{ $cached_graph_data['qty_data'] }}
|
||||
],
|
||||
backgroundColor: [
|
||||
@foreach ($root_categories as $key => $category)
|
||||
'rgba(253, 57, 149, 0.4)',
|
||||
@endforeach
|
||||
],
|
||||
borderColor: [
|
||||
@foreach ($root_categories as $key => $category)
|
||||
'rgba(253, 57, 149, 1)',
|
||||
@endforeach
|
||||
],
|
||||
borderWidth: 1
|
||||
}]
|
||||
},
|
||||
options: {
|
||||
scales: {
|
||||
yAxes: [{
|
||||
gridLines: {
|
||||
color: '#f2f3f8',
|
||||
zeroLineColor: '#f2f3f8'
|
||||
},
|
||||
ticks: {
|
||||
fontColor: "#8b8b8b",
|
||||
fontFamily: 'Poppins',
|
||||
fontSize: 10,
|
||||
beginAtZero: true
|
||||
}
|
||||
}],
|
||||
xAxes: [{
|
||||
gridLines: {
|
||||
color: '#f2f3f8'
|
||||
},
|
||||
ticks: {
|
||||
fontColor: "#8b8b8b",
|
||||
fontFamily: 'Poppins',
|
||||
fontSize: 10
|
||||
}
|
||||
}]
|
||||
},
|
||||
legend:{
|
||||
labels: {
|
||||
fontFamily: 'Poppins',
|
||||
boxWidth: 10,
|
||||
usePointStyle: true
|
||||
},
|
||||
onClick: function () {
|
||||
return '';
|
||||
},
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
@@ -0,0 +1,134 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="aiz-titlebar text-left mt-2 mb-3">
|
||||
<div class="row align-items-center">
|
||||
<div class="col-auto">
|
||||
<h1 class="h3">{{translate('All Cancel Request')}}</h1>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header d-block d-lg-flex">
|
||||
<h5 class="mb-0 h6">{{translate('Cancel Requests')}}</h5>
|
||||
<div class="">
|
||||
<!-- <form class="" id="sort_delivery_boys" action="" method="GET">
|
||||
<div class="box-inline pad-rgt pull-left">
|
||||
<div class="" style="min-width: 250px;">
|
||||
<input type="text" class="form-control" id="search" name="search"@isset($sort_search) value="{{ $sort_search }}" @endisset placeholder="{{ translate('Type email or name & Enter') }}">
|
||||
</div>
|
||||
</div>
|
||||
</form>-->
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table aiz-table mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>{{translate('Code')}}</th>
|
||||
<th>{{translate('Request By')}}</th>
|
||||
<th>{{translate('Request At')}}</th>
|
||||
<th class="text-right">{{translate('Options')}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($cancel_requests as $key => $cancel_request)
|
||||
|
||||
<tr>
|
||||
<td>{{ ($key+1) + ($cancel_requests->currentPage() - 1) * $cancel_requests->perPage() }}</td>
|
||||
<td>
|
||||
{{ $cancel_request->code }}
|
||||
</td>
|
||||
<td>
|
||||
{{ $cancel_request->delivery_boy->name }}
|
||||
</td>
|
||||
<td>
|
||||
{{$cancel_request->cancel_request_at}}
|
||||
</td>
|
||||
|
||||
<td class="text-right">
|
||||
|
||||
<a href="{{route('all_orders.show', encrypt($cancel_request->id))}}" class="btn btn-soft-info btn-icon btn-circle btn-sm" title="{{ translate('View') }}">
|
||||
<i class="las la-eye"></i>
|
||||
</a>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="aiz-pagination">
|
||||
{{ $cancel_requests->appends(request()->input())->links() }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="modal fade" id="confirm-ban">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title h6">{{translate('Confirmation')}}</h5>
|
||||
<button type="button" class="close" data-dismiss="modal"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<p>{{translate('Do you really want to ban this delivery_boy?')}}</p>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-light" data-dismiss="modal">{{translate('Cancel')}}</button>
|
||||
<a type="button" id="confirmation" class="btn btn-primary">{{translate('Proceed!')}}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="confirm-unban">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title h6">{{translate('Confirmation')}}</h5>
|
||||
<button type="button" class="close" data-dismiss="modal"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<p>{{translate('Do you really want to unban this delivery_boy?')}}</p>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-light" data-dismiss="modal">{{translate('Cancel')}}</button>
|
||||
<a type="button" id="confirmationunban" class="btn btn-primary">{{translate('Proceed!')}}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('modal')
|
||||
@include('modals.delete_modal')
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
<script type="text/javascript">
|
||||
|
||||
(function($) {
|
||||
"use strict";
|
||||
function sort_delivery_boys(el){
|
||||
$('#sort_delivery_boys').submit();
|
||||
}
|
||||
function confirm_ban(url)
|
||||
{
|
||||
$('#confirm-ban').modal('show', {backdrop: 'static'});
|
||||
document.getElementById('confirmation').setAttribute('href' , url);
|
||||
}
|
||||
|
||||
function confirm_unban(url)
|
||||
{
|
||||
$('#confirm-unban').modal('show', {backdrop: 'static'});
|
||||
document.getElementById('confirmationunban').setAttribute('href' , url);
|
||||
}
|
||||
})(jQuery);
|
||||
|
||||
</script>
|
||||
@endsection
|
||||
177
resources/views/backend/delivery_boys/create.blade.php
Normal file
177
resources/views/backend/delivery_boys/create.blade.php
Normal file
@@ -0,0 +1,177 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="col-lg-8 mx-auto">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('Delivery Boy Information')}}</h5>
|
||||
</div>
|
||||
|
||||
<form action="{{ route('delivery-boys.store') }}" method="POST">
|
||||
@csrf
|
||||
<div class="card-body">
|
||||
|
||||
@if ($errors->any())
|
||||
<div class="alert alert-danger">
|
||||
<ul>
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-from-label" for="name">
|
||||
{{translate('Name')}} <span class="text-danger">*</span>
|
||||
</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="name" value="{{ old('name') }}" placeholder="Name" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-from-label" for="email">
|
||||
{{translate('Email')}} <span class="text-danger">*</span>
|
||||
</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="email" value="{{ old('email') }}" placeholder="Email" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-from-label" for="phone">
|
||||
{{translate('Phone')}} <span class="text-danger">*</span>
|
||||
</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="phone" value="{{ old('phone') }}" placeholder="Phone" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-from-label" for="password">
|
||||
{{translate('Password')}} <span class="text-danger">*</span>
|
||||
</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="password" class="form-control" name="password" placeholder="Password" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-from-label" for="type">
|
||||
{{translate('Country')}} <span class="text-danger">*</span>
|
||||
</label>
|
||||
<div class="col-sm-10">
|
||||
<select class="form-control aiz-selectpicker" data-live-search="true" name="country_id" id="country_id" required>
|
||||
<option value="">{{translate('Select Country')}}</option>
|
||||
@foreach ($countries as $country)
|
||||
<option value="{{ $country->id }}">
|
||||
{{ $country->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</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>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-md-2 col-form-label" for="signinSrEmail">
|
||||
{{translate('Image')}}
|
||||
</label>
|
||||
<div class="col-md-10">
|
||||
<div class="input-group" data-toggle="aizuploader" data-type="image" data-multiple="false">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text bg-soft-secondary font-weight-medium">{{ translate('Browse')}}</div>
|
||||
</div>
|
||||
<div class="form-control file-amount">{{ translate('Choose File') }}</div>
|
||||
<input type="hidden" name="avatar_original" class="selected-files">
|
||||
</div>
|
||||
<div class="file-preview box sm">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-from-label">{{translate('Address')}}</label>
|
||||
<div class="col-sm-10">
|
||||
<textarea class="form-control" name="address"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group mb-3 text-right">
|
||||
<button type="submit" class="btn btn-primary">{{translate('Save')}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
<script type="text/javascript">
|
||||
|
||||
(function($) {
|
||||
"use strict";
|
||||
|
||||
$(document).on('change', '[name=country_id]', function() {
|
||||
var country_id = $(this).val();
|
||||
$.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');
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$(document).on('change', '[name=state_id]', function() {
|
||||
var state_id = $(this).val();
|
||||
$.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');
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
})(jQuery);
|
||||
|
||||
</script>
|
||||
@endsection
|
||||
@@ -0,0 +1,357 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
<style>
|
||||
#map {
|
||||
width: 100%;
|
||||
height: 250px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-6 mx-auto">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{ translate('Payment Configuration') }}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form class="form-horizontal" action="{{ route('business_settings.update') }}" method="POST"
|
||||
enctype="multipart/form-data">
|
||||
@csrf
|
||||
<div class="form-group row">
|
||||
<input type="hidden" name="types[]" value="delivery_boy_payment_type">
|
||||
|
||||
<label class="col-md-4 col-from-label">
|
||||
{{ translate('Monthly Salary') }}
|
||||
</label>
|
||||
<div class="col-md-8">
|
||||
<label class="aiz-switch aiz-switch-success mb-0">
|
||||
<input type="radio" name="delivery_boy_payment_type" value="salary"
|
||||
@if (get_setting('delivery_boy_payment_type') == 'salary') checked @endif>
|
||||
<span></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row" id="salary_div" style="display: none;">
|
||||
<label class="col-sm-4 col-from-label">{{ translate('Salary Amount') }}</label>
|
||||
<div class="col-sm-8">
|
||||
<input type="hidden" name="types[]" value="delivery_boy_salary">
|
||||
<div class="input-group">
|
||||
<input type="number" name="delivery_boy_salary" class="form-control"
|
||||
value="{{ get_setting('delivery_boy_salary') ? get_setting('delivery_boy_salary') : '0' }}">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text" id="inputGroupPrepend">
|
||||
{{ \App\Models\Currency::find(get_setting('system_default_currency'))->code }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-md-4 col-from-label">
|
||||
{{ translate('Per Order Commission') }}
|
||||
</label>
|
||||
<div class="col-md-8">
|
||||
<label class="aiz-switch aiz-switch-success mb-0">
|
||||
<input type="radio" name="delivery_boy_payment_type" value="commission"
|
||||
@if (get_setting('delivery_boy_payment_type') == 'commission') checked @endif>
|
||||
<span></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row" id="commission_div" style="display: none;">
|
||||
<label class="col-sm-4 col-from-label">{{ translate('Commission Rate') }}</label>
|
||||
<div class="col-sm-8">
|
||||
<input type="hidden" name="types[]" value="delivery_boy_commission">
|
||||
<div class="input-group">
|
||||
<input type="number" name="delivery_boy_commission" class="form-control"
|
||||
value="{{ get_setting('delivery_boy_commission') ? get_setting('delivery_boy_commission') : '0' }}">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text" id="inputGroupPrepend">
|
||||
{{ \App\Models\Currency::find(get_setting('system_default_currency'))->code }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="text-right">
|
||||
<button type="submit" class="btn btn-primary">{{ translate('Update') }}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-6 mx-auto">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{ translate('Notification Configuration') }}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form class="form-horizontal" action="{{ route('business_settings.update') }}" method="POST"
|
||||
enctype="multipart/form-data">
|
||||
@csrf
|
||||
<div class="form-group row">
|
||||
<input type="hidden" name="types[]" value="delivery_boy_mail_notification">
|
||||
|
||||
<label class="col-md-4 col-from-label">
|
||||
{{ translate('Send Mail') }}
|
||||
</label>
|
||||
<div class="col-md-8">
|
||||
<label class="aiz-switch aiz-switch-success mb-0">
|
||||
<input type="checkbox" name="delivery_boy_mail_notification" value="1"
|
||||
@if (get_setting('delivery_boy_mail_notification') == '1') checked @endif>
|
||||
<span></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<input type="hidden" name="types[]" value="delivery_boy_otp_notification">
|
||||
|
||||
<label class="col-md-4 col-from-label">
|
||||
{{ translate('Send OTP') }}
|
||||
</label>
|
||||
<div class="col-md-8">
|
||||
<label class="aiz-switch aiz-switch-success mb-0">
|
||||
<input type="checkbox" name="delivery_boy_otp_notification" value="1"
|
||||
@if (get_setting('delivery_boy_otp_notification') == '1') checked @endif>
|
||||
<span></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-right">
|
||||
<button type="submit" class="btn btn-primary">{{ translate('Update') }}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-8 mx-auto">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{ translate('Pickup Location For Delivery Boy') }}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form class="form-horizontal" action="{{ route('business_settings.update') }}" method="POST"
|
||||
enctype="multipart/form-data">
|
||||
@csrf
|
||||
@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;">Full Address: <span id="location"></span></li>
|
||||
<li style="display: none;">Postal Code: <span id="postal_code"></span></li>
|
||||
<li style="display: none;">Country: <span id="country"></span></li>
|
||||
<li style="display: none;">Latitude: <span id="lat"></span></li>
|
||||
<li style="display: none;">Longitude: <span id="lon"></span></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<div class="col-md-2" id="">
|
||||
<label for="exampleInputuname">Longitude</label>
|
||||
</div>
|
||||
<div class="col-md-10" id="">
|
||||
<input type="hidden" name="types[]" value="delivery_pickup_longitude">
|
||||
<input type="text" class="form-control mb-3" id="longitude"
|
||||
name="delivery_pickup_longitude" readonly=""
|
||||
value="{{ get_setting('delivery_pickup_longitude') }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<div class="col-md-2" id="">
|
||||
<label for="exampleInputuname">Latitude</label>
|
||||
</div>
|
||||
<div class="col-md-10" id="">
|
||||
<input type="hidden" name="types[]" value="delivery_pickup_latitude">
|
||||
<input type="text" class="form-control mb-3" id="latitude"
|
||||
name="delivery_pickup_latitude" readonly=""
|
||||
value="{{ get_setting('delivery_pickup_latitude') }}">
|
||||
</div>
|
||||
</div>
|
||||
@else
|
||||
<div class="form-group row">
|
||||
<div class="col-md-2" id="">
|
||||
<label for="exampleInputuname">Longitude</label>
|
||||
</div>
|
||||
<div class="col-md-10" id="">
|
||||
<input type="hidden" name="types[]" value="delivery_pickup_longitude">
|
||||
<input type="text" class="form-control mb-3" id="longitude"
|
||||
name="delivery_pickup_longitude"
|
||||
value="{{ get_setting('delivery_pickup_longitude') }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<div class="col-md-2" id="">
|
||||
<label for="exampleInputuname">Latitude</label>
|
||||
</div>
|
||||
<div class="col-md-10" id="">
|
||||
<input type="hidden" name="types[]" value="delivery_pickup_latitude">
|
||||
<input type="text" class="form-control mb-3" id="latitude"
|
||||
name="delivery_pickup_latitude"
|
||||
value="{{ get_setting('delivery_pickup_latitude') }}">
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
<div class="text-right">
|
||||
<button type="submit" class="btn btn-primary">{{ translate('Update') }}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
<script type="text/javascript">
|
||||
(function($) {
|
||||
"use strict";
|
||||
$(document).ready(function() {
|
||||
show_hide_div();
|
||||
})
|
||||
|
||||
$("[name=delivery_boy_payment_type]").on("change", function() {
|
||||
show_hide_div();
|
||||
});
|
||||
|
||||
function show_hide_div() {
|
||||
$("#salary_div").hide();
|
||||
$("#commission_div").hide();
|
||||
if ($("[name=delivery_boy_payment_type]:checked").val() == 'salary') {
|
||||
$("#salary_div").show();
|
||||
}
|
||||
if ($("[name=delivery_boy_payment_type]:checked").val() == 'commission') {
|
||||
$("#commission_div").show();
|
||||
}
|
||||
}
|
||||
})(jQuery);
|
||||
</script>
|
||||
|
||||
@if (get_setting('google_map') == 1)
|
||||
<script>
|
||||
let default_longtitude = "{{ get_setting('google_map_longtitude') }}";
|
||||
let default_latitude = "{{ get_setting('google_map_latitude') }}";
|
||||
|
||||
function initialize(lat = -33.8688, lang = 151.2195, id_format = '') {
|
||||
|
||||
var long = lang;
|
||||
var lat = lat;
|
||||
if (default_longtitude != '' && default_latitude != '') {
|
||||
long = default_longtitude;
|
||||
lat = default_latitude;
|
||||
}
|
||||
|
||||
@if (get_setting('delivery_pickup_latitude'))
|
||||
long = {{ get_setting('delivery_pickup_longitude') }};
|
||||
lat = {{ get_setting('delivery_pickup_latitude') }};
|
||||
@endif
|
||||
|
||||
var map = new google.maps.Map(document.getElementById(id_format + '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,61 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="aiz-titlebar text-left mt-2 mb-3">
|
||||
<div class="row align-items-center">
|
||||
<div class="col-auto">
|
||||
<h1 class="h3">{{translate('All Collection List')}}</h1>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header d-block d-lg-flex">
|
||||
<h5 class="mb-0 h6">{{translate('Collection List')}}</h5>
|
||||
<div class="">
|
||||
<!-- <form class="" id="sort_delivery_boys" action="" method="GET">
|
||||
<div class="box-inline pad-rgt pull-left">
|
||||
<div class="" style="min-width: 250px;">
|
||||
<input type="text" class="form-control" id="search" name="search"@isset($sort_search) value="{{ $sort_search }}" @endisset placeholder="{{ translate('Type email or name & Enter') }}">
|
||||
</div>
|
||||
</div>
|
||||
</form>-->
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table aiz-table mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>{{translate('Delivery Boy')}}</th>
|
||||
<th class="text-center">{{translate('Collected Amount')}}</th>
|
||||
<th class="text-right">{{translate('Created At')}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($delivery_boy_collections as $key => $delivery_boy_collection)
|
||||
|
||||
<tr>
|
||||
<td>{{ ($key+1) + ($delivery_boy_collections->currentPage() - 1) * $delivery_boy_collections->perPage() }}</td>
|
||||
<td>
|
||||
{{ $delivery_boy_collection->user->name }}
|
||||
</td>
|
||||
<td class="text-center">
|
||||
{{ $delivery_boy_collection->collection_amount }}
|
||||
</td>
|
||||
<td class="text-right">
|
||||
{{$delivery_boy_collection->created_at}}
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="aiz-pagination">
|
||||
{{ $delivery_boy_collections->appends(request()->input())->links() }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
@@ -0,0 +1,62 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="aiz-titlebar text-left mt-2 mb-3">
|
||||
<div class="row align-items-center">
|
||||
<div class="col-auto">
|
||||
<h1 class="h3">{{translate('All Payment List')}}</h1>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header d-block d-lg-flex">
|
||||
<h5 class="mb-0 h6">{{translate('Payment List')}}</h5>
|
||||
<div class="">
|
||||
<!-- <form class="" id="sort_delivery_boys" action="" method="GET">
|
||||
<div class="box-inline pad-rgt pull-left">
|
||||
<div class="" style="min-width: 250px;">
|
||||
<input type="text" class="form-control" id="search" name="search"@isset($sort_search) value="{{ $sort_search }}" @endisset placeholder="{{ translate('Type email or name & Enter') }}">
|
||||
</div>
|
||||
</div>
|
||||
</form>-->
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table aiz-table mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>{{translate('Delivery Boy')}}</th>
|
||||
<th class="text-center">{{translate('Payment Amount')}}</th>
|
||||
<th class="text-right">{{translate('Created At')}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($delivery_boy_payments as $key => $delivery_boy_payment)
|
||||
|
||||
<tr>
|
||||
<td>{{ ($key+1) + ($delivery_boy_payments->currentPage() - 1) * $delivery_boy_payments->perPage() }}</td>
|
||||
<td>
|
||||
{{ $delivery_boy_payment->user->name }}
|
||||
</td>
|
||||
<td class="text-center">
|
||||
{{ $delivery_boy_payment->payment }}
|
||||
</td>
|
||||
<td class="text-right">
|
||||
{{$delivery_boy_payment->created_at}}
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="aiz-pagination">
|
||||
{{ $delivery_boy_payments->appends(request()->input())->links() }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
|
||||
<div class="modal-header">
|
||||
<h5 class="mb-0 h6">{{translate('Collection From Delivery Boy')}}</h5>
|
||||
<button type="button" class="close" data-dismiss="modal">
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<form class="form-horizontal" action="{{ route('paid-to-delivery-boy') }}" method="POST" enctype="multipart/form-data">
|
||||
|
||||
<div class="modal-body">
|
||||
@csrf
|
||||
<div class="form-group row">
|
||||
<label class="col-md-4 col-from-label">
|
||||
{{translate('Deliver Boy')}}
|
||||
</label>
|
||||
<div class="col-md-8">
|
||||
<input type="hidden" name="delivery_boy_id" value="{{ $delivery_boy_info->user_id }}">
|
||||
<input type="text" class="form-control" value="{{ $delivery_boy_info->user->name }}" readonly="">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-md-4 col-from-label">
|
||||
{{translate('Total Payable')}}
|
||||
</label>
|
||||
<div class="col-md-8">
|
||||
<input type="text" class="form-control" value="{{ $delivery_boy_info->total_earning }}" readonly="">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-md-4 col-from-label">
|
||||
{{translate('Paid Amount')}}
|
||||
</label>
|
||||
<div class="col-md-8">
|
||||
<input type="number" class="form-control" id="paid_amount" name="paid_amount">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="submit" id="payout_btn" class="btn btn-primary">{{ translate('Paid') }}</button>
|
||||
<button type="button" class="btn btn-light" data-dismiss="modal">{{translate('Cancel')}}</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
|
||||
@section('script')
|
||||
<script type="text/javascript">
|
||||
|
||||
(function($) {
|
||||
"use strict";
|
||||
|
||||
})(jQuery);
|
||||
|
||||
</script>
|
||||
@endsection
|
||||
187
resources/views/backend/delivery_boys/edit.blade.php
Normal file
187
resources/views/backend/delivery_boys/edit.blade.php
Normal file
@@ -0,0 +1,187 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="col-lg-8 mx-auto">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('Delivery Boy Information')}}</h5>
|
||||
</div>
|
||||
|
||||
<form action="{{ route('delivery-boys.update', $delivery_boy->id) }}" method="POST">
|
||||
@csrf
|
||||
<input name="_method" type="hidden" value="PATCH">
|
||||
<div class="card-body">
|
||||
|
||||
@if ($errors->any())
|
||||
<div class="alert alert-danger">
|
||||
<ul>
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-from-label" for="name">{{translate('Name')}}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="name" value="{{$delivery_boy->name}}" placeholder="Name" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-from-label" for="email">{{translate('Email')}}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="email" value="{{$delivery_boy->email}}" placeholder="Email" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-from-label" for="phone">{{translate('Phone')}}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="phone" value="{{$delivery_boy->phone}}" placeholder="Phone" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-from-label" for="password">{{translate('Password')}}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="password" class="form-control" name="password" placeholder="Password">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-from-label" for="country">
|
||||
{{translate('Country')}}
|
||||
</label>
|
||||
<div class="col-sm-10">
|
||||
<select class="form-control aiz-selectpicker" name="country_id" id="country_id" required>
|
||||
<option value="">{{translate('Select Country')}}</option>
|
||||
@foreach ($countries as $country)
|
||||
<option value="{{ $country->id }}" @if($delivery_boy->country == $country->name) selected @endif>
|
||||
{{ $country->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</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($delivery_boy->state == $state->name) 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($delivery_boy->city == $city->name) selected @endif>
|
||||
{{ $city->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-md-2 col-form-label" for="avatar_original">
|
||||
{{translate('Image')}}
|
||||
</label>
|
||||
<div class="col-md-10">
|
||||
<div class="input-group" data-toggle="aizuploader" data-type="image" data-multiple="false">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text bg-soft-secondary font-weight-medium">{{ translate('Browse')}}</div>
|
||||
</div>
|
||||
<div class="form-control file-amount">{{ translate('Choose File') }}</div>
|
||||
<input type="hidden" name="avatar_original" value="{{ $delivery_boy->avatar_original }}" class="selected-files">
|
||||
</div>
|
||||
<div class="file-preview box sm">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-from-label">{{translate('Address')}}</label>
|
||||
<div class="col-sm-10">
|
||||
<textarea class="form-control" name="address">{{ $delivery_boy->address }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group mb-3 text-right">
|
||||
<button type="submit" class="btn btn-primary">{{translate('Save')}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
<script type="text/javascript">
|
||||
|
||||
(function($) {
|
||||
"use strict";
|
||||
$(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_id"]').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_id"]').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');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
})(jQuery);
|
||||
|
||||
</script>
|
||||
@endsection
|
||||
212
resources/views/backend/delivery_boys/index.blade.php
Normal file
212
resources/views/backend/delivery_boys/index.blade.php
Normal file
@@ -0,0 +1,212 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="aiz-titlebar text-left mt-2 mb-3">
|
||||
<div class="row align-items-center">
|
||||
<div class="col-auto">
|
||||
<h1 class="h3">{{translate('All Delivery Boys')}}</h1>
|
||||
</div>
|
||||
@can('add_delivery_boy')
|
||||
<div class="col text-right">
|
||||
<a href="{{ route('delivery-boys.create') }}" class="btn btn-circle btn-info">
|
||||
<span>{{translate('Add New Delivery Boy')}}</span>
|
||||
</a>
|
||||
</div>
|
||||
@endcan
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header d-block d-lg-flex">
|
||||
<h5 class="mb-0 h6">{{translate('Delivery Boys')}}</h5>
|
||||
<div class="">
|
||||
<form class="" id="sort_delivery_boys" action="" method="GET">
|
||||
<div class="box-inline pad-rgt pull-left">
|
||||
<div class="" style="min-width: 250px;">
|
||||
<input type="text" class="form-control" id="search" name="search"@isset($sort_search) value="{{ $sort_search }}" @endisset placeholder="{{ translate('Type email or name & Enter') }}">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table aiz-table mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th data-breakpoints="lg">#</th>
|
||||
<th>{{translate('Name')}}</th>
|
||||
<th data-breakpoints="lg">{{translate('Email Address')}}</th>
|
||||
<th data-breakpoints="lg">{{translate('Phone')}}</th>
|
||||
<th>{{translate('Earning')}}</th>
|
||||
<th>{{translate('Collection')}}</th>
|
||||
<th width="10%">{{translate('Options')}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($delivery_boys as $key => $delivery_boy)
|
||||
@if ($delivery_boy->user != null)
|
||||
<tr>
|
||||
<td>{{ ($key+1) + ($delivery_boys->currentPage() - 1)*$delivery_boys->perPage() }}</td>
|
||||
<td>@if($delivery_boy->user->banned == 1) <i class="las la-ban text-danger" aria-hidden="true"></i> @endif {{$delivery_boy->user->name}}</td>
|
||||
<td>{{$delivery_boy->user->email}}</td>
|
||||
<td>{{$delivery_boy->user->phone}}</td>
|
||||
<td>
|
||||
{{ single_price($delivery_boy->total_earning) }}
|
||||
</td>
|
||||
<td>
|
||||
{{ single_price($delivery_boy->total_collection) }}
|
||||
</td>
|
||||
<td>
|
||||
<div class="dropdown">
|
||||
<button type="button" class="btn btn-sm btn-circle btn-soft-primary btn-icon dropdown-toggle no-arrow" data-toggle="dropdown" href="javascript:void(0);" role="button" aria-haspopup="false" aria-expanded="false">
|
||||
<i class="las la-ellipsis-v"></i>
|
||||
</button>
|
||||
<div class="dropdown-menu dropdown-menu-right dropdown-menu-xs">
|
||||
@can('edit_delivery_boy')
|
||||
<a href="{{route('delivery-boys.edit', $delivery_boy->user->id)}}" class="dropdown-item">
|
||||
{{translate('Edit')}}
|
||||
</a>
|
||||
@endcan
|
||||
@can('ban_delivery_boy')
|
||||
@if($delivery_boy->user->banned != 1)
|
||||
<a href="#" onclick="confirm_ban('{{route('delivery-boy.ban', $delivery_boy->user->id)}}');" class="dropdown-item">
|
||||
{{translate('Ban this delivery boy')}}
|
||||
<i class="fa fa-ban text-danger" aria-hidden="true"></i>
|
||||
</a>
|
||||
@else
|
||||
<a href="#" onclick="confirm_unban('{{route('delivery-boy.ban', $delivery_boy->user->id)}}');" class="dropdown-item">
|
||||
{{translate('Unban this delivery boy')}}
|
||||
<i class="fa fa-check text-success" aria-hidden="true"></i>
|
||||
</a>
|
||||
@endif
|
||||
@endcan
|
||||
@can('collect_from_delivery_boy')
|
||||
<a href="#" onclick="show_order_collection_modal('{{$delivery_boy->user->id}}');" class="dropdown-item">
|
||||
{{translate('Go to Collection')}}
|
||||
</a>
|
||||
@endcan
|
||||
@can('pay_to_delivery_boy')
|
||||
<a href="#" onclick="show_delivery_earning_modal('{{$delivery_boy->user->id}}');" class="dropdown-item">
|
||||
{{translate('Go to Payment')}}
|
||||
</a>
|
||||
@endcan
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="aiz-pagination">
|
||||
{{ $delivery_boys->appends(request()->input())->links() }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="modal fade" id="collection_modal">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content" id="collection-modal-content">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="payment_modal">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content" id="payment-modal-content">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="confirm-ban">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title h6">{{translate('Confirmation')}}</h5>
|
||||
<button type="button" class="close" data-dismiss="modal"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<p>{{translate('Do you really want to ban this delivery_boy?')}}</p>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-light" data-dismiss="modal">{{translate('Cancel')}}</button>
|
||||
<a type="button" id="confirmation" class="btn btn-primary">{{translate('Proceed!')}}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="confirm-unban">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title h6">{{translate('Confirmation')}}</h5>
|
||||
<button type="button" class="close" data-dismiss="modal"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<p>{{translate('Do you really want to unban this delivery_boy?')}}</p>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-light" data-dismiss="modal">{{translate('Cancel')}}</button>
|
||||
<a type="button" id="confirmationunban" class="btn btn-primary">{{translate('Proceed!')}}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('modal')
|
||||
@include('modals.delete_modal')
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
<script type="text/javascript">
|
||||
|
||||
(function($) {
|
||||
"use strict";
|
||||
|
||||
})(jQuery);
|
||||
|
||||
function show_order_collection_modal(id){
|
||||
$.post('{{ route('delivery-boy.order-collection') }}',{
|
||||
_token :'{{ @csrf_token() }}',
|
||||
id :id
|
||||
}, function(data){
|
||||
$('#collection_modal #collection-modal-content').html(data);
|
||||
$('#collection_modal').modal('show', {backdrop: 'static'});
|
||||
});
|
||||
}
|
||||
|
||||
function show_delivery_earning_modal(id){
|
||||
$.post('{{ route('delivery-boy.delivery-earning') }}',{
|
||||
_token :'{{ @csrf_token() }}',
|
||||
id :id
|
||||
}, function(data){
|
||||
$('#payment_modal #payment-modal-content').html(data);
|
||||
$('#payment_modal').modal('show', {backdrop: 'static'});
|
||||
});
|
||||
}
|
||||
|
||||
function sort_delivery_boys(el){
|
||||
$('#sort_delivery_boys').submit();
|
||||
}
|
||||
function confirm_ban(url)
|
||||
{
|
||||
$('#confirm-ban').modal('show', {backdrop: 'static'});
|
||||
document.getElementById('confirmation').setAttribute('href' , url);
|
||||
}
|
||||
|
||||
function confirm_unban(url)
|
||||
{
|
||||
$('#confirm-unban').modal('show', {backdrop: 'static'});
|
||||
document.getElementById('confirmationunban').setAttribute('href' , url);
|
||||
}
|
||||
|
||||
</script>
|
||||
@endsection
|
||||
@@ -0,0 +1,57 @@
|
||||
|
||||
<div class="modal-header">
|
||||
<h5 class="mb-0 h6">{{translate('Collection From Delivery Boy')}}</h5>
|
||||
<button type="button" class="close" data-dismiss="modal">
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<form class="form-horizontal" action="{{ route('collection-from-delivery-boy') }}" method="POST" enctype="multipart/form-data">
|
||||
|
||||
<div class="modal-body">
|
||||
@csrf
|
||||
<div class="form-group row">
|
||||
<label class="col-md-4 col-from-label">
|
||||
{{translate('Deliver Boy')}}
|
||||
</label>
|
||||
<div class="col-md-8">
|
||||
<input type="hidden" name="delivery_boy_id" value="{{ $delivery_boy_info->user_id }}">
|
||||
<input type="text" class="form-control" value="{{ $delivery_boy_info->user->name }}" readonly="">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-md-4 col-from-label">
|
||||
{{translate('Collection From Delivery Boy')}}
|
||||
</label>
|
||||
<div class="col-md-8">
|
||||
<input type="text" class="form-control" value="{{ $delivery_boy_info->total_collection }}" readonly="">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-md-4 col-from-label">
|
||||
{{translate('Collected Amount')}}
|
||||
</label>
|
||||
<div class="col-md-8">
|
||||
<input type="number" class="form-control" id="payout_amount" name="payout_amount">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="submit" id="payout_btn" class="btn btn-primary">{{ translate('Collection') }}</button>
|
||||
<button type="button" class="btn btn-light" data-dismiss="modal">{{translate('Cancel')}}</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
|
||||
@section('script')
|
||||
<script type="text/javascript">
|
||||
|
||||
(function($) {
|
||||
"use strict";
|
||||
|
||||
})(jQuery);
|
||||
|
||||
</script>
|
||||
@endsection
|
||||
96
resources/views/backend/downloads/brand.blade.php
Normal file
96
resources/views/backend/downloads/brand.blade.php
Normal file
@@ -0,0 +1,96 @@
|
||||
<div style="margin-left:auto;margin-right:auto;">
|
||||
<style media="all">
|
||||
@page {
|
||||
margin: 0;
|
||||
padding:0;
|
||||
}
|
||||
*{
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
body{
|
||||
line-height: 1.5;
|
||||
font-family: 'DejaVuSans', 'sans-serif';
|
||||
color: #333542;
|
||||
}
|
||||
div{
|
||||
font-size: 1rem;
|
||||
}
|
||||
.gry-color *,
|
||||
.gry-color{
|
||||
color:#878f9c;
|
||||
}
|
||||
table{
|
||||
width: 100%;
|
||||
}
|
||||
table th{
|
||||
font-weight: normal;
|
||||
}
|
||||
table.padding th{
|
||||
padding: .5rem .7rem;
|
||||
}
|
||||
table.padding td{
|
||||
padding: .7rem;
|
||||
}
|
||||
table.sm-padding td{
|
||||
padding: .2rem .7rem;
|
||||
}
|
||||
.border-bottom td,
|
||||
.border-bottom th{
|
||||
border-bottom:1px solid #eceff4;
|
||||
}
|
||||
.text-left{
|
||||
text-align:left;
|
||||
}
|
||||
.text-right{
|
||||
text-align:right;
|
||||
}
|
||||
.small{
|
||||
font-size: .85rem;
|
||||
}
|
||||
.strong{
|
||||
font-weight: bold;
|
||||
}
|
||||
</style>
|
||||
|
||||
@php
|
||||
$logo = get_setting('header_logo');
|
||||
@endphp
|
||||
|
||||
<div style="background: #eceff4;padding: 1.5rem;">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
@if($logo != null)
|
||||
<img src="{{ uploaded_asset($logo) }}" height="40" style="display:inline-block;">
|
||||
@else
|
||||
<img src="{{ static_asset('assets/img/logo.png') }}" height="40" style="display:inline-block;">
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<div style="border-bottom:1px solid #eceff4;margin: 0 1.5rem;"></div>
|
||||
|
||||
<div style="padding: 1.5rem;">
|
||||
<table class="padding text-left small border-bottom">
|
||||
<thead>
|
||||
<tr class="gry-color" style="background: #eceff4;">
|
||||
<th width="50%">{{translate('Brand Name') }}</th>
|
||||
<th width="50%">{{translate('ID') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="strong">
|
||||
@foreach ($brands as $key => $brand)
|
||||
<tr class="">
|
||||
<td>{{ $brand->getTranslation('name') }}</td>
|
||||
<td>{{ $brand->id }}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
95
resources/views/backend/downloads/category.blade.php
Normal file
95
resources/views/backend/downloads/category.blade.php
Normal file
@@ -0,0 +1,95 @@
|
||||
<div style="margin-left:auto;margin-right:auto;">
|
||||
<style media="all">
|
||||
@page {
|
||||
margin: 0;
|
||||
padding:0;
|
||||
}
|
||||
*{
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
body{
|
||||
line-height: 1.5;
|
||||
font-family: 'DejaVuSans', 'sans-serif';
|
||||
color: #333542;
|
||||
}
|
||||
div{
|
||||
font-size: 1rem;
|
||||
}
|
||||
.gry-color *,
|
||||
.gry-color{
|
||||
color:#878f9c;
|
||||
}
|
||||
table{
|
||||
width: 100%;
|
||||
}
|
||||
table th{
|
||||
font-weight: normal;
|
||||
}
|
||||
table.padding th{
|
||||
padding: .5rem .7rem;
|
||||
}
|
||||
table.padding td{
|
||||
padding: .7rem;
|
||||
}
|
||||
table.sm-padding td{
|
||||
padding: .2rem .7rem;
|
||||
}
|
||||
.border-bottom td,
|
||||
.border-bottom th{
|
||||
border-bottom:1px solid #eceff4;
|
||||
}
|
||||
.text-left{
|
||||
text-align:left;
|
||||
}
|
||||
.text-right{
|
||||
text-align:right;
|
||||
}
|
||||
.small{
|
||||
font-size: .85rem;
|
||||
}
|
||||
.strong{
|
||||
font-weight: bold;
|
||||
}
|
||||
</style>
|
||||
|
||||
@php
|
||||
$logo = get_setting('header_logo');
|
||||
@endphp
|
||||
|
||||
<div style="background: #eceff4;padding: 1.5rem;">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
@if($logo != null)
|
||||
<img src="{{ uploaded_asset($logo) }}" height="40" style="display:inline-block;">
|
||||
@else
|
||||
<img src="{{ static_asset('assets/img/logo.png') }}" height="40" style="display:inline-block;">
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
<div style="border-bottom:1px solid #eceff4;margin: 0 1.5rem;"></div>
|
||||
|
||||
<div style="padding: 1.5rem;">
|
||||
<table class="padding text-left small border-bottom">
|
||||
<thead>
|
||||
<tr class="gry-color" style="background: #eceff4;">
|
||||
<th width="50%">{{translate('Category Name') }}</th>
|
||||
<th width="50%">{{translate('ID') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="strong">
|
||||
@foreach ($categories as $key => $category)
|
||||
<tr class="">
|
||||
<td>{{ $category->getTranslation('name') }}</td>
|
||||
<td>{{ $category->id }}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
100
resources/views/backend/downloads/user.blade.php
Normal file
100
resources/views/backend/downloads/user.blade.php
Normal file
@@ -0,0 +1,100 @@
|
||||
<div style="margin-left:auto;margin-right:auto;">
|
||||
<style media="all">
|
||||
@page {
|
||||
margin: 0;
|
||||
padding:0;
|
||||
}
|
||||
*{
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
body{
|
||||
line-height: 1.5;
|
||||
font-family: 'DejaVuSans', 'sans-serif';
|
||||
color: #333542;
|
||||
}
|
||||
div{
|
||||
font-size: 1rem;
|
||||
}
|
||||
.gry-color *,
|
||||
.gry-color{
|
||||
color:#878f9c;
|
||||
}
|
||||
table{
|
||||
width: 100%;
|
||||
}
|
||||
table th{
|
||||
font-weight: normal;
|
||||
}
|
||||
table.padding th{
|
||||
padding: .5rem .7rem;
|
||||
}
|
||||
table.padding td{
|
||||
padding: .7rem;
|
||||
}
|
||||
table.sm-padding td{
|
||||
padding: .2rem .7rem;
|
||||
}
|
||||
.border-bottom td,
|
||||
.border-bottom th{
|
||||
border-bottom:1px solid #eceff4;
|
||||
}
|
||||
.text-left{
|
||||
text-align:left;
|
||||
}
|
||||
.text-right{
|
||||
text-align:right;
|
||||
}
|
||||
.small{
|
||||
font-size: .85rem;
|
||||
}
|
||||
.strong{
|
||||
font-weight: bold;
|
||||
}
|
||||
</style>
|
||||
|
||||
@php
|
||||
$logo = get_setting('header_logo');
|
||||
@endphp
|
||||
|
||||
<div style="background: #eceff4;padding: 1.5rem;">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
@if($logo != null)
|
||||
<img src="{{ uploaded_asset($logo) }}" height="40" style="display:inline-block;">
|
||||
@else
|
||||
<img src="{{ static_asset('assets/img/logo.png') }}" height="40" style="display:inline-block;">
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<div style="border-bottom:1px solid #eceff4;margin: 0 1.5rem;"></div>
|
||||
|
||||
<div style="padding: 1.5rem;">
|
||||
<table class="padding text-left small border-bottom">
|
||||
<thead>
|
||||
<tr class="gry-color" style="background: #eceff4;">
|
||||
<th width="20%">{{translate('Type') }}</th>
|
||||
<th width="50%">{{translate('Name') }}</th>
|
||||
<th width="30%">{{translate('ID') }}</th>
|
||||
<th width="30%">{{translate('Email') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="strong">
|
||||
@foreach ($users as $key => $user)
|
||||
<tr class="">
|
||||
<td>{{ $user->user_type }}</td>
|
||||
<td>{{ $user->name }}</td>
|
||||
<td>{{ $user->id }}</td>
|
||||
<td>{{ $user->email }}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
156
resources/views/backend/inc/admin_nav.blade.php
Normal file
156
resources/views/backend/inc/admin_nav.blade.php
Normal file
@@ -0,0 +1,156 @@
|
||||
<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') && auth()->user()->can('pos_manager'))
|
||||
<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.index') }}" target="_blank" title="{{ translate('POS') }}">
|
||||
<i class="las la-print"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
<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-soft-danger btn-sm d-flex align-items-center" href="{{ route('cache.clear')}}">
|
||||
<i class="las la-hdd fs-20"></i>
|
||||
<span class="fw-500 ml-1 mr-0 d-none d-md-block">{{ translate('Clear Cache') }}</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</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">
|
||||
{{translate('Order code: ')}} {{$notification->data['order_code']}} {{ 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>
|
||||
@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('admin.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('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 -->
|
||||
1264
resources/views/backend/inc/admin_sidenav.blade.php
Normal file
1264
resources/views/backend/inc/admin_sidenav.blade.php
Normal file
File diff suppressed because it is too large
Load Diff
223
resources/views/backend/invoices/invoice.blade.php
Normal file
223
resources/views/backend/invoices/invoice.blade.php
Normal file
@@ -0,0 +1,223 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>{{ translate('INVOICE') }}</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
||||
<meta charset="UTF-8">
|
||||
<style media="all">
|
||||
@page {
|
||||
margin: 0;
|
||||
padding:0;
|
||||
}
|
||||
body{
|
||||
font-size: 0.875rem;
|
||||
font-family: '<?php echo $font_family ?>';
|
||||
font-weight: normal;
|
||||
direction: <?php echo $direction ?>;
|
||||
text-align: <?php echo $text_align ?>;
|
||||
padding:0;
|
||||
margin:0;
|
||||
}
|
||||
.gry-color *,
|
||||
.gry-color{
|
||||
color:#000;
|
||||
}
|
||||
table{
|
||||
width: 100%;
|
||||
}
|
||||
table th{
|
||||
font-weight: normal;
|
||||
}
|
||||
table.padding th{
|
||||
padding: .25rem .7rem;
|
||||
}
|
||||
table.padding td{
|
||||
padding: .25rem .7rem;
|
||||
}
|
||||
table.sm-padding td{
|
||||
padding: .1rem .7rem;
|
||||
}
|
||||
.border-bottom td,
|
||||
.border-bottom th{
|
||||
border-bottom:1px solid #eceff4;
|
||||
}
|
||||
.text-left{
|
||||
text-align:<?php echo $text_align ?>;
|
||||
}
|
||||
.text-right{
|
||||
text-align:<?php echo $not_text_align ?>;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div>
|
||||
|
||||
@php
|
||||
$logo = get_setting('header_logo');
|
||||
@endphp
|
||||
|
||||
<div style="background: #eceff4;padding: 1rem;">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
@if($logo != null)
|
||||
<img src="{{ uploaded_asset($logo) }}" height="30" style="display:inline-block;">
|
||||
@else
|
||||
<img src="{{ static_asset('assets/img/logo.png') }}" height="30" style="display:inline-block;">
|
||||
@endif
|
||||
</td>
|
||||
<td style="font-size: 1.5rem;" class="text-right strong">{{ translate('INVOICE') }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table>
|
||||
<tr>
|
||||
<td style="font-size: 1rem;" class="strong">{{ get_setting('site_name') }}</td>
|
||||
<td class="text-right"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="gry-color small">{{ get_setting('contact_address') }}</td>
|
||||
<td class="text-right"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="gry-color small">{{ translate('Email') }}: {{ get_setting('contact_email') }}</td>
|
||||
<td class="text-right small"><span class="gry-color small">{{ translate('Order ID') }}:</span> <span class="strong">{{ $order->code }}</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="gry-color small">{{ translate('Phone') }}: {{ get_setting('contact_phone') }}</td>
|
||||
<td class="text-right small"><span class="gry-color small">{{ translate('Order Date') }}:</span> <span class=" strong">{{ date('d-m-Y', $order->date) }}</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="gry-color small"></td>
|
||||
<td class="text-right small">
|
||||
<span class="gry-color small">
|
||||
{{ translate('Payment method') }}:
|
||||
</span>
|
||||
<span class="strong">
|
||||
{{ translate(ucfirst(str_replace('_', ' ', $order->payment_type))) }}
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<div style="padding: 1rem;padding-bottom: 0">
|
||||
<table>
|
||||
@php
|
||||
$shipping_address = json_decode($order->shipping_address);
|
||||
@endphp
|
||||
<tr><td class="strong small gry-color">{{ translate('Bill to') }}:</td></tr>
|
||||
<tr><td class="strong">{{ $shipping_address->name }}</td></tr>
|
||||
<tr><td class="gry-color small">{{ $shipping_address->address }}, {{ $shipping_address->city }}, @if(isset(json_decode($order->shipping_address)->state)) {{ json_decode($order->shipping_address)->state }} - @endif {{ $shipping_address->postal_code }}, {{ $shipping_address->country }}</td></tr>
|
||||
<tr><td class="gry-color small">{{ translate('Email') }}: {{ $shipping_address->email }}</td></tr>
|
||||
<tr><td class="gry-color small">{{ translate('Phone') }}: {{ $shipping_address->phone }}</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div style="padding: 1rem;">
|
||||
<table class="padding text-left small border-bottom">
|
||||
<thead>
|
||||
<tr class="gry-color" style="background: #eceff4;">
|
||||
<th width="35%" class="text-left">{{ translate('Product Name') }}</th>
|
||||
<th width="15%" class="text-left">{{ translate('Delivery Type') }}</th>
|
||||
<th width="10%" class="text-left">{{ translate('Qty') }}</th>
|
||||
<th width="15%" class="text-left">{{ translate('Unit Price') }}</th>
|
||||
<th width="10%" class="text-left">{{ translate('Tax') }}</th>
|
||||
<th width="15%" class="text-right">{{ translate('Total') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="strong">
|
||||
@foreach ($order->orderDetails as $key => $orderDetail)
|
||||
@if ($orderDetail->product != null)
|
||||
<tr class="">
|
||||
<td>
|
||||
{{ $orderDetail->product->name }}
|
||||
@if($orderDetail->variation != null) ({{ $orderDetail->variation }}) @endif
|
||||
<br>
|
||||
<small>
|
||||
@php
|
||||
$product_stock = json_decode($orderDetail->product->stocks->first(), true);
|
||||
@endphp
|
||||
{{translate('SKU')}}: {{ $product_stock['sku'] }}
|
||||
</small>
|
||||
</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') }})
|
||||
@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="">{{ $orderDetail->quantity }}</td>
|
||||
<td class="currency">{{ single_price($orderDetail->price/$orderDetail->quantity) }}</td>
|
||||
<td class="currency">{{ single_price($orderDetail->tax/$orderDetail->quantity) }}</td>
|
||||
<td class="text-right currency">{{ single_price($orderDetail->price+$orderDetail->tax) }}</td>
|
||||
</tr>
|
||||
@endif
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div style="padding:0 1.5rem;">
|
||||
<table class="text-right sm-padding small strong">
|
||||
<thead>
|
||||
<tr>
|
||||
<th width="60%"></th>
|
||||
<th width="40%"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="text-left">
|
||||
@php
|
||||
$removedXML = '<?xml version="1.0" encoding="UTF-8"?>';
|
||||
@endphp
|
||||
{!! str_replace($removedXML,"", QrCode::size(100)->generate($order->code)) !!}
|
||||
</td>
|
||||
<td>
|
||||
<table class="text-right sm-padding small strong">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class="gry-color text-left">{{ translate('Sub Total') }}</th>
|
||||
<td class="currency">{{ single_price($order->orderDetails->sum('price')) }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="gry-color text-left">{{ translate('Shipping Cost') }}</th>
|
||||
<td class="currency">{{ single_price($order->orderDetails->sum('shipping_cost')) }}</td>
|
||||
</tr>
|
||||
<tr class="border-bottom">
|
||||
<th class="gry-color text-left">{{ translate('Total Tax') }}</th>
|
||||
<td class="currency">{{ single_price($order->orderDetails->sum('tax')) }}</td>
|
||||
</tr>
|
||||
<tr class="border-bottom">
|
||||
<th class="gry-color text-left">{{ translate('Coupon Discount') }}</th>
|
||||
<td class="currency">{{ single_price($order->coupon_discount) }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="text-left strong">{{ translate('Grand Total') }}</th>
|
||||
<td class="currency">{{ single_price($order->grand_total) }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
136
resources/views/backend/layouts/app.blade.php
Normal file
136
resources/views/backend/layouts/app.blade.php
Normal file
@@ -0,0 +1,136 @@
|
||||
<!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-core.css') }}">
|
||||
|
||||
<style>
|
||||
body {
|
||||
font-size: 12px;
|
||||
}
|
||||
</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('backend.inc.admin_sidenav')
|
||||
<div class="aiz-content-wrapper">
|
||||
@include('backend.inc.admin_nav')
|
||||
<div class="aiz-main-content">
|
||||
<div class="px-15px px-lg-25px">
|
||||
@yield('content')
|
||||
</div>
|
||||
<div class="bg-white text-center py-3 px-15px px-lg-25px mt-auto">
|
||||
<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>
|
||||
156
resources/views/backend/layouts/blank.blade.php
Normal file
156
resources/views/backend/layouts/blank.blade.php
Normal file
@@ -0,0 +1,156 @@
|
||||
<!doctype html>
|
||||
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
|
||||
<head>
|
||||
<meta name="csrf-token" content="{{ csrf_token() }}">
|
||||
<meta name="app-url" content="{{ env('APP_URL')}}">
|
||||
|
||||
<!-- Required meta tags -->
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
|
||||
<!-- Favicon -->
|
||||
<title>{{ config('app.name', 'eCommerce') }}</title>
|
||||
|
||||
<!-- google font -->
|
||||
{{-- <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Poppins:300,400,500,600,700"> --}}
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap" rel="stylesheet">
|
||||
|
||||
<!-- aiz core css -->
|
||||
<link rel="stylesheet" href="{{ static_asset('assets/css/vendors.css') }}">
|
||||
<link rel="stylesheet" href="{{ static_asset('assets/css/aiz-core.css?v=') }}{{ rand(1000,9999) }}">
|
||||
|
||||
<style>
|
||||
body {
|
||||
font-family: 'Roboto', sans-serif;
|
||||
}
|
||||
.install-card{
|
||||
width: 640px;
|
||||
height: 640px;
|
||||
border-radius: 16px;
|
||||
background: #fff;
|
||||
border: 1px solid #e6e6e6;
|
||||
box-shadow: 0px 16px 45px rgba(0, 0, 0, 0.08);
|
||||
}
|
||||
.install-card .install-card-body{
|
||||
padding: 3rem 4rem !important;
|
||||
}
|
||||
.btn-install{
|
||||
width: 280px;
|
||||
height: 40px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border: 0;
|
||||
border-radius: 20px;
|
||||
background: linear-gradient(to right, #e90608 0%, #f59e39 100%);
|
||||
box-shadow: 0px 8px 16px rgba(255, 88, 0, 0.16);
|
||||
font-weight: bold;
|
||||
font-size: 14px;
|
||||
line-height: 18px;
|
||||
text-align: center;
|
||||
color: #fff !important;
|
||||
transition: all 0.5s;
|
||||
}
|
||||
.btn-install:hover{
|
||||
box-shadow: 0px 8px 40px rgb(255 88 0 / 30%);
|
||||
letter-spacing: 0.3px;
|
||||
}
|
||||
.back-btn-svg svg * {
|
||||
transition: fill .4s ease;
|
||||
}
|
||||
.back-btn-svg:hover svg .inner{
|
||||
fill: #cccccc !important;
|
||||
}
|
||||
.back-btn-svg:hover svg .arrow{
|
||||
fill: #fff !important;
|
||||
}
|
||||
.right-links{
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
cursor: pointer;
|
||||
outline: none;
|
||||
border: 0;
|
||||
padding: 0;
|
||||
vertical-align: middle;
|
||||
background: transparent;
|
||||
font-size: inherit;
|
||||
font-family: 'Roboto', sans-serif;
|
||||
width: 11rem;
|
||||
height: auto;
|
||||
}
|
||||
.right-links .circle {
|
||||
transition: all 0.8s cubic-bezier(0.65,0,.076,1);
|
||||
position: relative;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin: 0;
|
||||
width: 2.5rem;
|
||||
height: 2.5rem;
|
||||
border-radius: 1.625rem;
|
||||
padding-left: 12px;
|
||||
}
|
||||
.right-links.site .circle {
|
||||
background: #007cff;
|
||||
}
|
||||
.right-links.video .circle {
|
||||
background: #ea4335;
|
||||
}
|
||||
.right-links.document .circle {
|
||||
background: #34a853;
|
||||
}
|
||||
.right-links.site:hover .circle {
|
||||
width: 100%;
|
||||
}
|
||||
.right-links.video:hover .circle {
|
||||
width: 8.5rem;
|
||||
}
|
||||
.right-links.document:hover .circle {
|
||||
width: 10.5rem;
|
||||
}
|
||||
.right-links .button-text {
|
||||
transition: all 0.5s cubic-bezier(0.65,0,.076,1);
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
padding: 0.65rem 0;
|
||||
margin: 0 0 0 2.75rem;
|
||||
color: #f2f3f8;
|
||||
font-weight: 500;
|
||||
font-size: 12px;
|
||||
line-height: 18px;
|
||||
opacity: 0;
|
||||
}
|
||||
.right-links:hover .button-text {
|
||||
color: var(--white);
|
||||
opacity: 1;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
var AIZ = AIZ || {};
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="aiz-main-wrapper d-flex">
|
||||
|
||||
<div class="flex-grow-1">
|
||||
@yield('content')
|
||||
</div>
|
||||
|
||||
</div><!-- .aiz-main-wrapper -->
|
||||
<script src="{{ static_asset('assets/js/vendors.js') }}" ></script>
|
||||
<script src="{{ static_asset('assets/js/aiz-core.js?v=') }}{{ rand(1000,9999) }}" ></script>
|
||||
|
||||
@yield('script')
|
||||
|
||||
<script type="text/javascript">
|
||||
@foreach (session('flash_notification', collect())->toArray() as $message)
|
||||
AIZ.plugins.notify('{{ $message['level'] }}', '{{ $message['message'] }}');
|
||||
@endforeach
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
85
resources/views/backend/layouts/layout.blade.php
Normal file
85
resources/views/backend/layouts/layout.blade.php
Normal file
@@ -0,0 +1,85 @@
|
||||
<!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-core.css') }}">
|
||||
|
||||
<style>
|
||||
body {
|
||||
font-size: 12px;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
var AIZ = AIZ || {};
|
||||
AIZ.local = {
|
||||
nothing_selected: '{{ translate('Nothing selected') }}',
|
||||
nothing_found: '{{ translate('Nothing found') }}',
|
||||
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 d-flex">
|
||||
<div class="flex-grow-1">
|
||||
@yield('content')
|
||||
</div>
|
||||
</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
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
62
resources/views/backend/marketing/coupons/create.blade.php
Normal file
62
resources/views/backend/marketing/coupons/create.blade.php
Normal file
@@ -0,0 +1,62 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="col-lg-8 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('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>
|
||||
|
||||
@endsection
|
||||
@section('script')
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
function coupon_form(){
|
||||
var coupon_type = $('#coupon_type').val();
|
||||
$.post('{{ route('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
|
||||
69
resources/views/backend/marketing/coupons/edit.blade.php
Normal file
69
resources/views/backend/marketing/coupons/edit.blade.php
Normal file
@@ -0,0 +1,69 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="col-lg-8 mx-auto">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="mb-0 h6">{{translate('Coupon Information Update')}}</h3>
|
||||
</div>
|
||||
<form action="{{ route('coupon.update', $coupon->id) }}" method="POST">
|
||||
<input name="_method" type="hidden" value="PATCH">
|
||||
@csrf
|
||||
<div class="card-body">
|
||||
<input type="hidden" name="id" value="{{ $coupon->id }}" id="id">
|
||||
@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>
|
||||
@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>
|
||||
|
||||
|
||||
@endsection
|
||||
@section('script')
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
function coupon_form(){
|
||||
var coupon_type = $('#coupon_type').val();
|
||||
var id = $('#id').val();
|
||||
$.post('{{ route('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
|
||||
68
resources/views/backend/marketing/coupons/index.blade.php
Normal file
68
resources/views/backend/marketing/coupons/index.blade.php
Normal file
@@ -0,0 +1,68 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="aiz-titlebar text-left mt-2 mb-3">
|
||||
<div class="row align-items-center">
|
||||
<div class="col-md-6">
|
||||
<h1 class="h3">{{translate('All Coupons')}}</h1>
|
||||
</div>
|
||||
@can('add_coupon')
|
||||
<div class="col-md-6 text-md-right">
|
||||
<a href="{{ route('coupon.create') }}" class="btn btn-circle btn-info">
|
||||
<span>{{translate('Add New Coupon')}}</span>
|
||||
</a>
|
||||
</div>
|
||||
@endcan
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('Coupon Information')}}</h5>
|
||||
</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>
|
||||
{{ translate(Str::headline($coupon->type)) }}
|
||||
</td>
|
||||
<td>{{ date('d-m-Y', $coupon->start_date) }}</td>
|
||||
<td>{{ date('d-m-Y', $coupon->end_date) }}</td>
|
||||
<td class="text-right">
|
||||
@can('edit_coupon')
|
||||
<a class="btn btn-soft-primary btn-icon btn-circle btn-sm" href="{{route('coupon.edit', encrypt($coupon->id) )}}" title="{{ translate('Edit') }}">
|
||||
<i class="las la-edit"></i>
|
||||
</a>
|
||||
@endcan
|
||||
@can('delete_coupon')
|
||||
<a href="#" class="btn btn-soft-danger btn-icon btn-circle btn-sm confirm-delete" data-href="{{route('coupon.destroy', $coupon->id)}}" title="{{ translate('Delete') }}">
|
||||
<i class="las la-trash"></i>
|
||||
</a>
|
||||
@endcan
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
@section('modal')
|
||||
@include('modals.delete_modal')
|
||||
@endsection
|
||||
106
resources/views/backend/marketing/flash_deals/create.blade.php
Normal file
106
resources/views/backend/marketing/flash_deals/create.blade.php
Normal file
@@ -0,0 +1,106 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-10 mx-auto">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('Flash Deal Information')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form action="{{ route('flash_deals.store') }}" method="POST">
|
||||
@csrf
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-3 control-label" for="name">{{translate('Title')}}</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" placeholder="{{translate('Title')}}" id="name" name="title" class="form-control" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-3 control-label" for="background_color">{{translate('Background Color')}} <small>({{ translate('Hexa-code') }})</small></label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" placeholder="{{translate('#FFFFFF')}}" id="background_color" name="background_color" class="form-control" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-3 control-label" for="name">{{translate('Text Color')}}</label>
|
||||
<div class="col-lg-9">
|
||||
<select name="text_color" id="text_color" class="form-control aiz-selectpicker" required>
|
||||
<option value="">{{translate('Select One')}}</option>
|
||||
<option value="white">{{translate('White')}}</option>
|
||||
<option value="dark">{{translate('Dark')}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label" for="signinSrEmail">{{translate('Banner')}}</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 File') }}</div>
|
||||
<input type="hidden" name="banner" class="selected-files">
|
||||
</div>
|
||||
<div class="file-preview box sm">
|
||||
</div>
|
||||
<span class="small text-muted">{{ translate('This image is shown as cover banner in flash deal details page.') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-3 control-label" for="start_date">{{translate('Date')}}</label>
|
||||
<div class="col-sm-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" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row mb-3">
|
||||
<label class="col-sm-3 control-label" for="products">{{translate('Products')}}</label>
|
||||
<div class="col-sm-9">
|
||||
<select name="products[]" id="products" class="form-control aiz-selectpicker" multiple required data-placeholder="{{ translate('Choose Products') }}" data-live-search="true" data-selected-text-format="count">
|
||||
@foreach(\App\Models\Product::where('published', 1)->where('approved', 1)->orderBy('created_at', 'desc')->get() as $product)
|
||||
<option value="{{$product->id}}">{{ $product->getTranslation('name') }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="alert alert-danger">
|
||||
{{ translate('If any product has discount or exists in another flash deal, the discount will be replaced by this discount & time limit.') }}
|
||||
</div>
|
||||
<br>
|
||||
|
||||
<div class="form-group" id="discount_table">
|
||||
|
||||
</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">
|
||||
$(document).ready(function(){
|
||||
$('#products').on('change', function(){
|
||||
var product_ids = $('#products').val();
|
||||
if(product_ids.length > 0){
|
||||
$.post('{{ route('flash_deals.product_discount') }}', {_token:'{{ csrf_token() }}', product_ids:product_ids}, function(data){
|
||||
$('#discount_table').html(data);
|
||||
AIZ.plugins.fooTable();
|
||||
});
|
||||
}
|
||||
else{
|
||||
$('#discount_table').html(null);
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
135
resources/views/backend/marketing/flash_deals/edit.blade.php
Normal file
135
resources/views/backend/marketing/flash_deals/edit.blade.php
Normal file
@@ -0,0 +1,135 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="aiz-titlebar text-left mt-2 mb-3">
|
||||
<h5 class="mb-0 h6">{{translate('Flash Deal Information')}}</h5>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-10 mx-auto">
|
||||
<div class="card">
|
||||
<div class="card-body p-0">
|
||||
<ul class="nav nav-tabs nav-fill border-light">
|
||||
@foreach (\App\Models\Language::all() as $key => $language)
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-reset @if ($language->code == $lang) active @else bg-soft-dark border-light border-left-0 @endif py-3" href="{{ route('flash_deals.edit', ['id'=>$flash_deal->id, 'lang'=> $language->code] ) }}">
|
||||
<img src="{{ static_asset('assets/img/flags/'.$language->code.'.png') }}" height="11" class="mr-1">
|
||||
<span>{{$language->name}}</span>
|
||||
</a>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
<form class="p-4" action="{{ route('flash_deals.update', $flash_deal->id) }}" method="POST">
|
||||
@csrf
|
||||
<input type="hidden" name="_method" value="PATCH">
|
||||
<input type="hidden" name="lang" value="{{ $lang }}">
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-3 col-from-label" for="name">{{translate('Title')}} <i class="las la-language text-danger" title="{{translate('Translatable')}}"></i></label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" placeholder="{{translate('Title')}}" id="name" name="title" value="{{ $flash_deal->getTranslation('title', $lang) }}" class="form-control" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-3 col-from-label" for="background_color">{{translate('Background Color')}}<small>({{ translate('Hexa-code') }})</small></label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" placeholder="{{translate('#0000ff')}}" id="background_color" name="background_color" value="{{ $flash_deal->background_color }}" class="form-control" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-3 col-from-label" for="text_color">{{translate('Text Color')}}</label>
|
||||
<div class="col-lg-9">
|
||||
<select name="text_color" id="text_color" class="form-control demo-select2" required>
|
||||
<option value="">Select One</option>
|
||||
<option value="white" @if ($flash_deal->text_color == 'white') selected @endif>{{translate('White')}}</option>
|
||||
<option value="dark" @if ($flash_deal->text_color == 'dark') selected @endif>{{translate('Dark')}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label" for="signinSrEmail">{{translate('Banner')}}</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 File') }}</div>
|
||||
<input type="hidden" name="banner" value="{{ $flash_deal->banner }}" class="selected-files">
|
||||
</div>
|
||||
<div class="file-preview box sm">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@php
|
||||
$start_date = date('d-m-Y H:i:s', $flash_deal->start_date);
|
||||
$end_date = date('d-m-Y H:i:s', $flash_deal->end_date);
|
||||
@endphp
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-3 col-from-label" for="start_date">{{translate('Date')}}</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" class="form-control aiz-date-range" value="{{ $start_date.' to '.$end_date }}" name="date_range" placeholder="{{ translate('Select Date') }}" data-time-picker="true" data-format="DD-MM-Y HH:mm:ss" data-separator=" to " autocomplete="off" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-3 col-from-label" for="products">{{translate('Products')}}</label>
|
||||
<div class="col-sm-9">
|
||||
<select name="products[]" id="products" class="form-control aiz-selectpicker" multiple required data-placeholder="{{ translate('Choose Products') }}" data-live-search="true" data-selected-text-format="count">
|
||||
@foreach(\App\Models\Product::where('published', 1)->where('approved', 1)->get() as $product)
|
||||
@php
|
||||
$flash_deal_product = \App\Models\FlashDealProduct::where('flash_deal_id', $flash_deal->id)->where('product_id', $product->id)->first();
|
||||
@endphp
|
||||
<option value="{{$product->id}}" <?php if($flash_deal_product != null) echo "selected";?> >{{ $product->getTranslation('name') }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="alert alert-danger">
|
||||
{{ translate('If any product has discount or exists in another flash deal, the discount will be replaced by this discount & time limit.') }}
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<div class="form-group" id="discount_table">
|
||||
|
||||
</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">
|
||||
$(document).ready(function(){
|
||||
|
||||
get_flash_deal_discount();
|
||||
|
||||
$('#products').on('change', function(){
|
||||
get_flash_deal_discount();
|
||||
});
|
||||
|
||||
function get_flash_deal_discount(){
|
||||
var product_ids = $('#products').val();
|
||||
if(product_ids.length > 0){
|
||||
$.post('{{ route('flash_deals.product_discount_edit') }}', {_token:'{{ csrf_token() }}', product_ids:product_ids, flash_deal_id:{{ $flash_deal->id }}}, function(data){
|
||||
$('#discount_table').html(data);
|
||||
AIZ.plugins.fooTable();
|
||||
});
|
||||
}
|
||||
else{
|
||||
$('#discount_table').html(null);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
@@ -0,0 +1,51 @@
|
||||
@if(count($product_ids) > 0)
|
||||
<table class="table table-bordered aiz-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<td width="50%">
|
||||
<span>{{translate('Product')}}</span>
|
||||
</td>
|
||||
<td data-breakpoints="lg" width="20%">
|
||||
<span>{{translate('Base Price')}}</span>
|
||||
</td>
|
||||
<td data-breakpoints="lg" width="20%">
|
||||
<span>{{translate('Discount')}}</span>
|
||||
</td>
|
||||
<td data-breakpoints="lg" width="10%">
|
||||
<span>{{translate('Discount Type')}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($product_ids as $key => $id)
|
||||
@php
|
||||
$product = \App\Models\Product::findOrFail($id);
|
||||
@endphp
|
||||
<tr>
|
||||
<td>
|
||||
<div class="from-group row">
|
||||
<div class="col-auto">
|
||||
<img class="size-60px img-fit" src="{{ uploaded_asset($product->thumbnail_img)}}">
|
||||
</div>
|
||||
<div class="col">
|
||||
<span>{{ $product->getTranslation('name') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<span>{{ $product->unit_price }}</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="number" lang="en" name="discount_{{ $id }}" value="{{ $product->discount }}" min="0" step="1" class="form-control" required>
|
||||
</td>
|
||||
<td>
|
||||
<select class="form-control aiz-selectpicker" name="discount_type_{{ $id }}">
|
||||
<option value="amount">{{ translate('Flat') }}</option>
|
||||
<option value="percent">{{ translate('Percent') }}</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
@endif
|
||||
@@ -0,0 +1,52 @@
|
||||
@if(count($product_ids) > 0)
|
||||
<table class="table table-bordered aiz-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<td width="50%">
|
||||
<span>{{translate('Product')}}</span>
|
||||
</td>
|
||||
<td data-breakpoints="lg" width="20%">
|
||||
<span>{{translate('Base Price')}}</span>
|
||||
</td>
|
||||
<td data-breakpoints="lg" width="20%">
|
||||
<span>{{translate('Discount')}}</span>
|
||||
</td>
|
||||
<td data-breakpoints="lg" width="10%">
|
||||
<span>{{translate('Discount Type')}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($product_ids as $key => $id)
|
||||
@php
|
||||
$product = \App\Models\Product::findOrFail($id);
|
||||
$flash_deal_product = \App\Models\FlashDealProduct::where('flash_deal_id', $flash_deal_id)->where('product_id', $product->id)->first();
|
||||
@endphp
|
||||
<tr>
|
||||
<td>
|
||||
<div class="form-group row">
|
||||
<div class="col-auto">
|
||||
<img src="{{ uploaded_asset($product->thumbnail_img)}}" class="size-60px img-fit" >
|
||||
</div>
|
||||
<div class="col">
|
||||
<span>{{ $product->getTranslation('name') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<span>{{ $product->unit_price }}</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="number" lang="en" name="discount_{{ $id }}" value="{{ $product->discount }}" min="0" step="1" class="form-control" required>
|
||||
</td>
|
||||
<td>
|
||||
<select class="aiz-selectpicker" name="discount_type_{{ $id }}">
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
@endif
|
||||
139
resources/views/backend/marketing/flash_deals/index.blade.php
Normal file
139
resources/views/backend/marketing/flash_deals/index.blade.php
Normal file
@@ -0,0 +1,139 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="aiz-titlebar text-left mt-2 mb-3">
|
||||
<div class="row align-items-center">
|
||||
<div class="col-md-6">
|
||||
<h1 class="h3">{{translate('All Flash Deals')}}</h1>
|
||||
</div>
|
||||
@can('add_flash_deal')
|
||||
<div class="col-md-6 text-md-right">
|
||||
<a href="{{ route('flash_deals.create') }}" class="btn btn-circle btn-info">
|
||||
<span>{{translate('Create New Flash Deal')}}</span>
|
||||
</a>
|
||||
</div>
|
||||
@endcan
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('Flash Deals')}}</h5>
|
||||
<div class="pull-right clearfix">
|
||||
<form class="" id="sort_flash_deals" action="" method="GET">
|
||||
<div class="box-inline pad-rgt pull-left">
|
||||
<div class="" style="min-width: 200px;">
|
||||
<input type="text" class="form-control" id="search" name="search"@isset($sort_search) value="{{ $sort_search }}" @endisset placeholder="{{ translate('Type name & Enter') }}">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table aiz-table mb-0" >
|
||||
<thead>
|
||||
<tr>
|
||||
<th data-breakpoints="lg">#</th>
|
||||
<th>{{translate('Title')}}</th>
|
||||
<th data-breakpoints="lg">{{ translate('Banner') }}</th>
|
||||
<th data-breakpoints="lg">{{ translate('Start Date') }}</th>
|
||||
<th data-breakpoints="lg">{{ translate('End Date') }}</th>
|
||||
<th data-breakpoints="lg">{{ translate('Status') }}</th>
|
||||
<th data-breakpoints="lg">{{ translate('Featured') }}</th>
|
||||
<th data-breakpoints="lg">{{ translate('Page Link') }}</th>
|
||||
<th class="text-right">{{translate('Options')}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($flash_deals as $key => $flash_deal)
|
||||
<tr>
|
||||
<td>{{ ($key+1) + ($flash_deals->currentPage() - 1)*$flash_deals->perPage() }}</td>
|
||||
<td>{{ $flash_deal->getTranslation('title') }}</td>
|
||||
<td><img src="{{ uploaded_asset($flash_deal->banner) }}" alt="banner" class="h-50px"></td>
|
||||
<td>{{ date('d-m-Y H:i:s', $flash_deal->start_date) }}</td>
|
||||
<td>{{ date('d-m-Y H:i:s', $flash_deal->end_date) }}</td>
|
||||
<td>
|
||||
<label class="aiz-switch aiz-switch-success mb-0">
|
||||
<input onchange="update_flash_deal_status(this)" value="{{ $flash_deal->id }}" type="checkbox" <?php if($flash_deal->status == 1) echo "checked";?> >
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
</td>
|
||||
<td>
|
||||
<label class="aiz-switch aiz-switch-success mb-0">
|
||||
<input
|
||||
@can('publish_flash_deal') onchange="update_flash_deal_feature(this)" @endcan
|
||||
value="{{ $flash_deal->id }}" type="checkbox"
|
||||
<?php if($flash_deal->featured == 1) echo "checked";?>
|
||||
@cannot('publish_flash_deal') disabled @endcan
|
||||
>
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
</td>
|
||||
<td>{{ url('flash-deal/'.$flash_deal->slug) }}</td>
|
||||
<td class="text-right">
|
||||
@can('edit_flash_deal')
|
||||
<a class="btn btn-soft-primary btn-icon btn-circle btn-sm" href="{{route('flash_deals.edit', ['id'=>$flash_deal->id, 'lang'=>env('DEFAULT_LANGUAGE')] )}}" title="{{ translate('Edit') }}">
|
||||
<i class="las la-edit"></i>
|
||||
</a>
|
||||
@endcan
|
||||
@can('delete_flash_deal')
|
||||
<a href="#" class="btn btn-soft-danger btn-icon btn-circle btn-sm confirm-delete" data-href="{{route('flash_deals.destroy', $flash_deal->id)}}" title="{{ translate('Delete') }}">
|
||||
<i class="las la-trash"></i>
|
||||
</a>
|
||||
@endcan
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="clearfix">
|
||||
<div class="pull-right">
|
||||
{{ $flash_deals->appends(request()->input())->links() }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
@section('modal')
|
||||
@include('modals.delete_modal')
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
<script type="text/javascript">
|
||||
function update_flash_deal_status(el){
|
||||
if(el.checked){
|
||||
var status = 1;
|
||||
}
|
||||
else{
|
||||
var status = 0;
|
||||
}
|
||||
$.post('{{ route('flash_deals.update_status') }}', {_token:'{{ csrf_token() }}', id:el.value, status:status}, function(data){
|
||||
if(data == 1){
|
||||
location.reload();
|
||||
}
|
||||
else{
|
||||
AIZ.plugins.notify('danger', '{{ translate('Something went wrong') }}');
|
||||
}
|
||||
});
|
||||
}
|
||||
function update_flash_deal_feature(el){
|
||||
if(el.checked){
|
||||
var featured = 1;
|
||||
}
|
||||
else{
|
||||
var featured = 0;
|
||||
}
|
||||
$.post('{{ route('flash_deals.update_featured') }}', {_token:'{{ csrf_token() }}', id:el.value, featured:featured}, function(data){
|
||||
if(data == 1){
|
||||
location.reload();
|
||||
}
|
||||
else{
|
||||
AIZ.plugins.notify('danger', '{{ translate('Something went wrong') }}');
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
@endsection
|
||||
@@ -0,0 +1,56 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('Send Newsletter')}}</h5>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<form class="form-horizontal" action="{{ route('newsletters.send') }}" method="POST" enctype="multipart/form-data">
|
||||
@csrf
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-from-label" for="name">{{translate('Emails')}} ({{translate('Users')}})</label>
|
||||
<div class="col-sm-10">
|
||||
<select class="form-control aiz-selectpicker" name="user_emails[]" multiple data-selected-text-format="count" data-actions-box="true">
|
||||
@foreach($users as $user)
|
||||
<option value="{{$user->email}}">{{$user->email}}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-from-label" for="name">{{translate('Emails')}} ({{translate('Subscribers')}})</label>
|
||||
<div class="col-sm-10">
|
||||
<select class="form-control aiz-selectpicker" name="subscriber_emails[]" multiple data-selected-text-format="count" data-actions-box="true">
|
||||
@foreach($subscribers as $subscriber)
|
||||
<option value="{{$subscriber->email}}">{{$subscriber->email}}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-from-label" for="subject">{{translate('Newsletter subject')}}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="subject" id="subject" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-from-label" for="name">{{translate('Newsletter content')}}</label>
|
||||
<div class="col-sm-10">
|
||||
<textarea rows="8" class="form-control aiz-text-editor" data-buttons='[["font", ["bold", "underline", "italic"]],["para", ["ul", "ol"]], ["insert", ["link", "picture"]],["view", ["undo","redo"]]]' name="content" required></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group mb-0 text-right">
|
||||
<button type="submit" class="btn btn-primary">{{translate('Send')}}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
@@ -0,0 +1,47 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('All Subscribers')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table aiz-table mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th data-breakpoints="lg">#</th>
|
||||
<th>{{translate('Email')}}</th>
|
||||
<th data-breakpoints="lg">{{translate('Date')}}</th>
|
||||
<th data-breakpoints="lg" class="text-right">{{translate('Options')}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($subscribers as $key => $subscriber)
|
||||
<tr>
|
||||
<td>{{ ($key+1) + ($subscribers->currentPage() - 1)*$subscribers->perPage() }}</td>
|
||||
<td><div class="text-truncate">{{ $subscriber->email }}</div></td>
|
||||
<td>{{ date('d-m-Y', strtotime($subscriber->created_at)) }}</td>
|
||||
<td class="text-right">
|
||||
@can('delete_subscriber')
|
||||
<a href="#" class="btn btn-soft-danger btn-icon btn-circle btn-sm confirm-delete" data-href="{{route('subscriber.destroy', $subscriber->id)}}" title="{{ translate('Delete') }}">
|
||||
<i class="las la-trash"></i>
|
||||
</a>
|
||||
@endcan
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="clearfix">
|
||||
<div class="pull-right">
|
||||
{{ $subscribers->appends(request()->input())->links() }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('modal')
|
||||
@include('modals.delete_modal')
|
||||
@endsection
|
||||
58
resources/views/backend/notification/index.blade.php
Normal file
58
resources/views/backend/notification/index.blade.php
Normal file
@@ -0,0 +1,58 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="aiz-titlebar text-left mt-2 mb-3">
|
||||
<div class="align-items-center">
|
||||
<h1 class="h3">{{translate('All Notifications')}}</h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-8 mx-auto">
|
||||
<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 code: ') }}
|
||||
<a href="{{route('all_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>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
<h4 class="text-center text-muted">{{translate('Activate OTP')}}</h4>
|
||||
<div class="row">
|
||||
@foreach ($otp_configurations as $otp_configuration)
|
||||
<div class="col-md-4">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="mb-0 h6">
|
||||
{{translate(Str::replace('_', ' ',Str::title($otp_configuration->type)).' OTP')}}
|
||||
</h3>
|
||||
</div>
|
||||
<div class="card-body text-center">
|
||||
<label class="aiz-switch aiz-switch-success mb-0">
|
||||
<input type="checkbox" onchange='updateSettings(this, "{{ $otp_configuration->type }}")' @if($otp_configuration->value == 1) checked @endif>
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
<script type="text/javascript">
|
||||
function updateSettings(el, type){
|
||||
if($(el).is(':checked')){
|
||||
var value = 1;
|
||||
}
|
||||
else{
|
||||
var value = 0;
|
||||
}
|
||||
$.post('{{ route('otp_configurations.update.activation') }}', {_token:'{{ csrf_token() }}', type:type, value:value}, function(data){
|
||||
if(data == 1){
|
||||
AIZ.plugins.notify('success', '{{ translate('Settings updated successfully') }}');
|
||||
}
|
||||
else{
|
||||
AIZ.plugins.notify('danger', '{{ translate('Something went wrong') }}');
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
@endsection
|
||||
@@ -0,0 +1,28 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="row">
|
||||
|
||||
@foreach ($otp_configurations as $otp_configuration)
|
||||
@include('backend.otp_systems.configurations.partials.'.$otp_configuration->type)
|
||||
@endforeach
|
||||
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
<script type="text/javascript">
|
||||
$("#ZENDER_MODE").change(function() {
|
||||
var value = $(this).val();
|
||||
let changeVal = '';
|
||||
if (value == "devices") {
|
||||
changeVal = 'device';
|
||||
} else {
|
||||
changeVal = 'gateway';
|
||||
}
|
||||
$("#ZENDER_MODE_TYPE").val(changeVal).change();
|
||||
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
@@ -0,0 +1,76 @@
|
||||
<div class="col-lg-6">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{ translate('Fast2SMS Credential') }}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form class="form-horizontal" action="{{ route('update_credentials') }}" method="POST">
|
||||
<input type="hidden" name="otp_method" value="fast2sms">
|
||||
@csrf
|
||||
<div class="form-group row">
|
||||
<input type="hidden" name="types[]" value="AUTH_KEY">
|
||||
<div class="col-lg-3">
|
||||
<label class="col-from-label">{{ translate('AUTH KEY') }}</label>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<input type="text" class="form-control" name="AUTH_KEY"
|
||||
value="{{ env('AUTH_KEY') }}" placeholder="AUTH KEY" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<input type="hidden" name="types[]" value="ENTITY_ID">
|
||||
<div class="col-lg-3">
|
||||
<label class="col-from-label">{{ translate('ENTITY ID') }}</label>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<input type="text" class="form-control" name="ENTITY_ID"
|
||||
value="{{ env('ENTITY_ID') }}" placeholder="{{ translate('Entity ID') }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<input type="hidden" name="types[]" value="ROUTE">
|
||||
<div class="col-lg-3">
|
||||
<label class="col-from-label">{{ translate('ROUTE') }}</label>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<select class="form-control aiz-selectpicker" name="ROUTE" required>
|
||||
<option value="dlt_manual" @if (env('ROUTE') == 'dlt_manual') selected @endif>
|
||||
{{ translate('DLT Manual') }}</option>
|
||||
<option value="p" @if (env('ROUTE') == 'p') selected @endif>
|
||||
{{ translate('Promotional Use') }}</option>
|
||||
<option value="t" @if (env('ROUTE') == 't') selected @endif>
|
||||
{{ translate('Transactional Use') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<input type="hidden" name="types[]" value="LANGUAGE">
|
||||
<div class="col-lg-3">
|
||||
<label class="col-from-label">{{ translate('LANGUAGE') }}</label>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<select class="form-control aiz-selectpicker" name="LANGUAGE" required>
|
||||
<option value="english" @if (env('LANGUAGE') == 'english') selected @endif>English
|
||||
</option>
|
||||
<option value="unicode" @if (env('LANGUAGE') == 'unicode') selected @endif>Unicode
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<input type="hidden" name="types[]" value="SENDER_ID">
|
||||
<div class="col-lg-3">
|
||||
<label class="col-from-label">{{ translate('SENDER ID') }}</label>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<input type="text" class="form-control" name="SENDER_ID"
|
||||
value="{{ env('SENDER_ID') }}" placeholder="6 digit SENDER ID">
|
||||
</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>
|
||||
@@ -0,0 +1,46 @@
|
||||
<div class="col-lg-6">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{ translate('MIMO Credential') }}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form class="form-horizontal" action="{{ route('update_credentials') }}" method="POST">
|
||||
<input type="hidden" name="otp_method" value="mimo">
|
||||
@csrf
|
||||
<div class="form-group row">
|
||||
<input type="hidden" name="types[]" value="MIMO_USERNAME">
|
||||
<div class="col-lg-3">
|
||||
<label class="col-from-label">{{ translate('MIMO_USERNAME') }}</label>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<input type="text" class="form-control" name="MIMO_USERNAME"
|
||||
value="{{ env('MIMO_USERNAME') }}" placeholder="MIMO_USERNAME" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<input type="hidden" name="types[]" value="MIMO_PASSWORD">
|
||||
<div class="col-lg-3">
|
||||
<label class="col-from-label">{{ translate('MIMO_PASSWORD') }}</label>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<input type="text" class="form-control" name="MIMO_PASSWORD"
|
||||
value="{{ env('MIMO_PASSWORD') }}" placeholder="MIMO_PASSWORD" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<input type="hidden" name="types[]" value="MIMO_SENDER_ID">
|
||||
<div class="col-lg-3">
|
||||
<label class="col-from-label">{{ translate('MIMO_SENDER_ID') }}</label>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<input type="text" class="form-control" name="MIMO_SENDER_ID"
|
||||
value="{{ env('MIMO_SENDER_ID') }}" placeholder="MIMO_SENDER_ID" required>
|
||||
</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>
|
||||
@@ -0,0 +1,46 @@
|
||||
<div class="col-lg-6">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{ translate('MIMSMS Credential') }}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form class="form-horizontal" action="{{ route('update_credentials') }}" method="POST">
|
||||
<input type="hidden" name="otp_method" value="mimsms">
|
||||
@csrf
|
||||
<div class="form-group row">
|
||||
<input type="hidden" name="types[]" value="MIM_API_KEY">
|
||||
<div class="col-lg-3">
|
||||
<label class="col-from-label">{{ translate('MIM_API_KEY') }}</label>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<input type="text" class="form-control" name="MIM_API_KEY"
|
||||
value="{{ env('MIM_API_KEY') }}" placeholder="MIM_API_KEY" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<input type="hidden" name="types[]" value="MIM_SENDER_ID">
|
||||
<div class="col-lg-3">
|
||||
<label class="col-from-label">{{ translate('MIM_SENDER_ID') }}</label>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<input type="text" class="form-control" name="MIM_SENDER_ID"
|
||||
value="{{ env('MIM_SENDER_ID') }}" placeholder="MIM_SENDER_ID" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<input type="hidden" name="types[]" value="MIM_BASE_URL">
|
||||
<div class="col-lg-3">
|
||||
<label class="col-from-label">{{ translate('MIM_BASE_URL') }}</label>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<input type="text" class="form-control" name="MIM_BASE_URL"
|
||||
value="{{ env('MIM_BASE_URL') }}" placeholder="MIM_BASE_URL" required>
|
||||
</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>
|
||||
@@ -0,0 +1,46 @@
|
||||
<div class="col-lg-6">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{ translate('MSEGAT Credential') }}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form class="form-horizontal" action="{{ route('update_credentials') }}" method="POST">
|
||||
<input type="hidden" name="otp_method" value="msegat">
|
||||
@csrf
|
||||
<div class="form-group row">
|
||||
<input type="hidden" name="types[]" value="MSEGAT_API_KEY">
|
||||
<div class="col-lg-3">
|
||||
<label class="col-from-label">{{ translate('MSEGAT_API_KEY') }}</label>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<input type="text" class="form-control" name="MSEGAT_API_KEY"
|
||||
value="{{ env('MSEGAT_API_KEY') }}" placeholder="MSEGAT_API_KEY" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<input type="hidden" name="types[]" value="MSEGAT_USERNAME">
|
||||
<div class="col-lg-3">
|
||||
<label class="col-from-label">{{ translate('MSEGAT_USERNAME') }}</label>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<input type="text" class="form-control" name="MSEGAT_USERNAME"
|
||||
value="{{ env('MSEGAT_USERNAME') }}" placeholder="MSEGAT_USERNAME" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<input type="hidden" name="types[]" value="MSEGAT_USER_SENDER">
|
||||
<div class="col-lg-3">
|
||||
<label class="col-from-label">{{ translate('MSEGAT_USER_SENDER') }}</label>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<input type="text" class="form-control" name="MSEGAT_USER_SENDER"
|
||||
value="{{ env('MSEGAT_USER_SENDER') }}" placeholder="MSEGAT_USER_SENDER" required>
|
||||
</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>
|
||||
@@ -0,0 +1,50 @@
|
||||
<div class="col-lg-6">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{ translate('Nexmo Credential') }}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form class="form-horizontal" action="{{ route('update_credentials') }}" method="POST">
|
||||
<input type="hidden" name="otp_method" value="nexmo">
|
||||
@csrf
|
||||
<div class="form-group row">
|
||||
<input type="hidden" name="types[]" value="NEXMO_KEY">
|
||||
<div class="col-lg-3">
|
||||
<label class="col-from-label">{{ translate('NEXMO KEY') }}</label>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<input type="text" class="form-control" name="NEXMO_KEY" value="{{ env('NEXMO_KEY') }}"
|
||||
placeholder="NEXMO KEY" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<input type="hidden" name="types[]" value="NEXMO_SECRET">
|
||||
<div class="col-lg-3">
|
||||
<label class="col-from-label">{{ translate('NEXMO SECRET') }}</label>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<input type="text" class="form-control" name="NEXMO_SECRET"
|
||||
value="{{ env('NEXMO_SECRET') }}" placeholder="NEXMO SECRET" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<input type="hidden" name="types[]" value="NEXMO_SENDER_ID">
|
||||
<div class="col-lg-3">
|
||||
<label class="col-from-label">{{translate('NEXMO SENDER ID')}}</label>
|
||||
</div>
|
||||
<div class="col-lg-8">
|
||||
<input type="text" class="form-control" name="NEXMO_SENDER_ID" value="{{ env('NEXMO_SENDER_ID') }}" placeholder="NEXMO SENDER ID" required>
|
||||
<small>
|
||||
{{translate('Please check this URL for')}}
|
||||
<a href="https://developer.vonage.com/en/messaging/sms/guides/custom-sender-id?source=messaging">Sender Identity</a>
|
||||
{{translate('before setting the sender ID')}}
|
||||
</small>
|
||||
</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>
|
||||
@@ -0,0 +1,36 @@
|
||||
<div class="col-lg-6">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{ translate('SPARROW Credential') }}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form class="form-horizontal" action="{{ route('update_credentials') }}" method="POST">
|
||||
<input type="hidden" name="otp_method" value="sparrow">
|
||||
@csrf
|
||||
<div class="form-group row">
|
||||
<input type="hidden" name="types[]" value="SPARROW_TOKEN">
|
||||
<div class="col-lg-3">
|
||||
<label class="col-from-label">{{ translate('SPARROW_TOKEN') }}</label>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<input type="text" class="form-control" name="SPARROW_TOKEN"
|
||||
value="{{ env('SPARROW_TOKEN') }}" placeholder="SPARROW_TOKEN" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<input type="hidden" name="types[]" value="MESSGAE_FROM">
|
||||
<div class="col-lg-3">
|
||||
<label class="col-from-label">{{ translate('MESSGAE_FROM') }}</label>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<input type="text" class="form-control" name="MESSGAE_FROM"
|
||||
value="{{ env('MESSGAE_FROM') }}" placeholder="MESSGAE_FROM" required>
|
||||
</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>
|
||||
@@ -0,0 +1,46 @@
|
||||
<div class="col-lg-6">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{ translate('SSL Wireless Credential') }}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form class="form-horizontal" action="{{ route('update_credentials') }}" method="POST">
|
||||
<input type="hidden" name="otp_method" value="ssl_wireless">
|
||||
@csrf
|
||||
<div class="form-group row">
|
||||
<input type="hidden" name="types[]" value="SSL_SMS_API_TOKEN">
|
||||
<div class="col-lg-3">
|
||||
<label class="col-from-label">{{ translate('SSL SMS API TOKEN') }}</label>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<input type="text" class="form-control" name="SSL_SMS_API_TOKEN"
|
||||
value="{{ env('SSL_SMS_API_TOKEN') }}" placeholder="SSL SMS API TOKEN" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<input type="hidden" name="types[]" value="SSL_SMS_SID">
|
||||
<div class="col-lg-3">
|
||||
<label class="col-from-label">{{ translate('SSL SMS SID') }}</label>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<input type="text" class="form-control" name="SSL_SMS_SID"
|
||||
value="{{ env('SSL_SMS_SID') }}" placeholder="SSL SMS SID" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<input type="hidden" name="types[]" value="SSL_SMS_URL">
|
||||
<div class="col-lg-3">
|
||||
<label class="col-from-label">{{ translate('SSL SMS URL') }}</label>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<input type="text" class="form-control" name="SSL_SMS_URL"
|
||||
value="{{ env('SSL_SMS_URL') }}" placeholder="SSL SMS URL">
|
||||
</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>
|
||||
@@ -0,0 +1,60 @@
|
||||
<div class="col-lg-6">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{ translate('Twilio Credential') }}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form class="form-horizontal" action="{{ route('update_credentials') }}" method="POST">
|
||||
<input type="hidden" name="otp_method" value="twillo">
|
||||
@csrf
|
||||
<div class="form-group row">
|
||||
<input type="hidden" name="types[]" value="TWILIO_SID">
|
||||
<div class="col-lg-3">
|
||||
<label class="col-from-label">{{ translate('TWILIO SID') }}</label>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<input type="text" class="form-control" name="TWILIO_SID" value="{{ env('TWILIO_SID') }}"
|
||||
placeholder="TWILIO SID" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<input type="hidden" name="types[]" value="TWILIO_AUTH_TOKEN">
|
||||
<div class="col-lg-3">
|
||||
<label class="col-from-label">{{ translate('TWILIO AUTH TOKEN') }}</label>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<input type="text" class="form-control" name="TWILIO_AUTH_TOKEN"
|
||||
value="{{ env('TWILIO_AUTH_TOKEN') }}" placeholder="TWILIO AUTH TOKEN" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<input type="hidden" name="types[]" value="VALID_TWILLO_NUMBER">
|
||||
<div class="col-lg-3">
|
||||
<label class="col-from-label">{{ translate('VALID TWILIO NUMBER') }}</label>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<input type="text" class="form-control" name="VALID_TWILLO_NUMBER"
|
||||
value="{{ env('VALID_TWILLO_NUMBER') }}" placeholder="VALID TWILLO NUMBER">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<input type="hidden" name="types[]" value="TWILLO_TYPE">
|
||||
<div class="col-lg-3">
|
||||
<label class="col-from-label">{{ translate('TWILIO TYPE') }}</label>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<select class="form-control" name="TWILLO_TYPE">
|
||||
<option value="1" {{ env('TWILLO_TYPE') < 2 ? 'selected' : false }}>SMS</option>
|
||||
<option value="2" {{ env('TWILLO_TYPE') > 1 ? 'selected' : false }}>WhatsApp</option>
|
||||
</select>
|
||||
</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>
|
||||
@@ -0,0 +1,106 @@
|
||||
<div class="col-lg-6">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">Zender Credential</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form class="form-horizontal" action="{{ route('update_credentials') }}" method="POST">
|
||||
<input type="hidden" name="otp_method" value="zender">
|
||||
@csrf
|
||||
<div class="form-group row">
|
||||
<input type="hidden" name="types[]" value="ZENDER_SITEURL">
|
||||
<div class="col-lg-3">
|
||||
<label class="col-from-label">{{ translate('ZENDER_SITEURL') }}</label>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<input type="text" class="form-control" name="ZENDER_SITEURL"
|
||||
value="{{ env('ZENDER_SITEURL') }}" placeholder="https://yourzendersite.com"
|
||||
required>
|
||||
<small>The site url of your Zender. Do not add ending slash.</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<input type="hidden" name="types[]" value="ZENDER_APIKEY">
|
||||
<div class="col-lg-3">
|
||||
<label class="col-from-label">{{ translate('ZENDER_APIKEY') }}</label>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<input type="text" class="form-control" name="ZENDER_APIKEY"
|
||||
value="{{ env('ZENDER_APIKEY') }}" placeholder="ZENDER_APIKEY" required>
|
||||
<small>Your Zender API key. Please make sure that it is correct and required permissions are
|
||||
granted: sms_send, wa_send</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<input type="hidden" name="types[]" value="ZENDER_SERVICE">
|
||||
<div class="col-lg-3">
|
||||
<label class="col-from-label">{{ translate('ZENDER_SERVICE') }}</label>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<select class="form-control" name="ZENDER_SERVICE">
|
||||
<option value="1" {{ env('ZENDER_SERVICE') < 2 ? 'selected' : false }}>SMS
|
||||
</option>
|
||||
<option value="2" {{ env('ZENDER_SERVICE') > 1 ? 'selected' : false }}>WhatsApp
|
||||
</option>
|
||||
</select>
|
||||
<small>Select the sending service. Please make sure that the API key has the following
|
||||
permissions: sms_send, wa_send</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<input type="hidden" name="types[]" value="ZENDER_WHATSAPP">
|
||||
<div class="col-lg-3">
|
||||
<label class="col-from-label">{{ translate('ZENDER_WHATSAPP') }}</label>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<input type="text" class="form-control" name="ZENDER_WHATSAPP"
|
||||
value="{{ env('ZENDER_WHATSAPP') }}" placeholder="ZENDER_WHATSAPP">
|
||||
<small>For WhatsApp service only. WhatsApp account ID you want to use for sending.</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<input type="hidden" name="types[]" value="ZENDER_DEVICE">
|
||||
<div class="col-lg-3">
|
||||
<label class="col-from-label">{{ translate('ZENDER_DEVICE') }}</label>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<input type="text" class="form-control" name="ZENDER_DEVICE"
|
||||
value="{{ env('ZENDER_DEVICE') }}" placeholder="ZENDER_DEVICE">
|
||||
<small>For SMS service only. Linked device unique ID. Please only enter this field if you
|
||||
are sending using one of your devices.</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<input type="hidden" name="types[]" value="ZENDER_GATEWAY">
|
||||
<div class="col-lg-3">
|
||||
<label class="col-from-label">{{ translate('ZENDER_GATEWAY') }}</label>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<input type="text" class="form-control" name="ZENDER_GATEWAY"
|
||||
value="{{ env('ZENDER_GATEWAY') }}" placeholder="ZENDER_GATEWAY">
|
||||
<small>For SMS service only. Partner device unique ID or gateway ID. Please only enter this
|
||||
field if you are sending using a partner device or third party gateway.</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<input type="hidden" name="types[]" value="ZENDER_SIM">
|
||||
<div class="col-lg-3">
|
||||
<label class="col-from-label">{{ translate('ZENDER_SIM') }}</label>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<select class="form-control" name="ZENDER_SIM">
|
||||
<option value="1" {{ env('ZENDER_SIM') < 2 ? 'selected' : false }}>SIM 1</option>
|
||||
<option value="2" {{ env('ZENDER_SIM') > 1 ? 'selected' : false }}>SIM 2</option>
|
||||
</select>
|
||||
<small>For SMS service only. Select the sim slot you want to use for sending the messages.
|
||||
Please only enter this field if you are sending using your device. This is ignored for
|
||||
partner devices and third party gateways.</small>
|
||||
</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>
|
||||
@@ -0,0 +1,73 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('SMS Templates')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<div class="nav flex-column nav-pills" id="v-pills-tab" role="tablist" aria-orientation="vertical">
|
||||
|
||||
@foreach ($sms_templates as $key => $sms_template)
|
||||
<a class="nav-link @if($sms_template->id == 1) active @endif" id="v-pills-tab-2" data-toggle="pill" href="#v-pills-{{ $sms_template->id }}" role="tab" aria-controls="v-pills-profile" aria-selected="false">{{ translate(ucwords(str_replace('_', ' ', $sms_template->identifier))) }}</a>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<div class="tab-content" id="v-pills-tabContent">
|
||||
@foreach ($sms_templates as $key => $sms_template)
|
||||
<div class="tab-pane fade show @if($sms_template->id == 1) active @endif" id="v-pills-{{ $sms_template->id }}" role="tabpanel" aria-labelledby="v-pills-tab-1">
|
||||
<form action="{{ route('sms-templates.update', $sms_template->id) }}" method="POST">
|
||||
<input name="_method" type="hidden" value="PATCH">
|
||||
@csrf
|
||||
@if($sms_template->identifier != 'phone_number_verification' && $sms_template->identifier != 'password_reset')
|
||||
<div class="form-group row">
|
||||
<div class="col-md-2">
|
||||
<label class="col-from-label">{{translate('Activation')}}</label>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<label class="aiz-switch aiz-switch-success mb-0">
|
||||
<input value="1" name="status" type="checkbox" @if ($sms_template->status == 1)
|
||||
checked
|
||||
@endif>
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-md-2 col-form-label">{{translate('SMS Body')}}</label>
|
||||
<div class="col-md-10">
|
||||
<textarea name="body" class="form-control" placeholder="Type.." rows="6" required>{{ $sms_template->sms_body }}</textarea>
|
||||
<small class="form-text text-danger">{{ ('**N.B : Do Not Change The Variables Like [[ ____ ]].**') }}</small>
|
||||
@error('body')
|
||||
<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('Template ID')}}</label>
|
||||
<div class="col-md-10">
|
||||
<input type="text" name="template_id" value="{{ $sms_template->template_id }}" class="form-control" placeholder="{{translate('Template Id')}}">
|
||||
<small class="form-text text-danger">{{ ('**N.B : Template ID is Required Only for Fast2SMS DLT Manual**') }}</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group mb-3 text-right">
|
||||
<button type="submit" class="btn btn-primary">{{translate('Update Settings')}}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
48
resources/views/backend/otp_systems/sms/index.blade.php
Normal file
48
resources/views/backend/otp_systems/sms/index.blade.php
Normal file
@@ -0,0 +1,48 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-6 mx-auto">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="fs-18 mb-0">{{translate('Send Bulk SMS')}}</h3>
|
||||
</div>
|
||||
<form class="form-horizontal" action="{{ route('sms.send') }}" method="POST" enctype="multipart/form-data">
|
||||
@csrf
|
||||
<div class="card-body">
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 control-label" for="name">{{translate('Mobile Users')}}</label>
|
||||
<div class="col-sm-10">
|
||||
<select class="form-control aiz-selectpicker" data-live-search="true" name="user_phones[]" multiple>
|
||||
@foreach($users as $user)
|
||||
@if ($user->phone != null)
|
||||
<option value="{{$user->phone}}">{{$user->name}} - {{$user->phone}}</option>
|
||||
@endif
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 control-label" for="name">{{translate('SMS content')}}</label>
|
||||
<div class="col-sm-10">
|
||||
<textarea class="form-control" name="content" required></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-md-2 col-form-label">{{translate('Template ID')}}</label>
|
||||
<div class="col-md-10">
|
||||
<input type="text" name="template_id" class="form-control" placeholder="{{translate('Template Id')}}">
|
||||
<small class="form-text text-danger">{{ ('**N.B : Template ID is Required Only for Fast2SMS DLT Manual **') }}</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<button class="btn btn-primary" type="submit">{{translate('Send')}}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
79
resources/views/backend/pos/cart.blade.php
Normal file
79
resources/views/backend/pos/cart.blade.php
Normal file
@@ -0,0 +1,79 @@
|
||||
<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 }}">
|
||||
<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 }}">
|
||||
<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>
|
||||
@@ -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>
|
||||
635
resources/views/backend/pos/frontend/seller/pos/index.blade.php
Normal file
635
resources/views/backend/pos/frontend/seller/pos/index.blade.php
Normal file
@@ -0,0 +1,635 @@
|
||||
@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 }}">
|
||||
<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 }}">
|
||||
<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_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">
|
||||
<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].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
|
||||
@@ -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>
|
||||
77
resources/views/backend/pos/guest_shipping_address.blade.php
Normal file
77
resources/views/backend/pos/guest_shipping_address.blade.php
Normal file
@@ -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>
|
||||
637
resources/views/backend/pos/index.blade.php
Normal file
637
resources/views/backend/pos/index.blade.php
Normal file
@@ -0,0 +1,637 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
<section class="">
|
||||
<form class="" action="" method="POST" enctype="multipart/form-data">
|
||||
@csrf
|
||||
<div class="row gutters-5">
|
||||
<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="{{ translate('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>
|
||||
</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_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
|
||||
116
resources/views/backend/pos/order_summary.blade.php
Normal file
116
resources/views/backend/pos/order_summary.blade.php
Normal file
@@ -0,0 +1,116 @@
|
||||
<div class="row">
|
||||
<div class="col-xl-6">
|
||||
@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 px-0">
|
||||
<div class="row gutters-10 align-items-center">
|
||||
<div class="col">
|
||||
<div class="d-flex">
|
||||
@if($stock->image == null)
|
||||
<img src="{{ uploaded_asset($stock->product->thumbnail_img) }}" class="img-fit size-60px">
|
||||
@else
|
||||
<img src="{{ uploaded_asset($stock->image) }}" class="img-fit size-60px">
|
||||
@endif
|
||||
<span class="flex-grow-1 ml-3 mr-0">
|
||||
<div class="text-truncate-2">{{ $stock->product->name }}</div>
|
||||
<span class="span badge badge-inline fs-12 badge-soft-secondary">{{ $cartItem['variant'] }}</span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xl-3">
|
||||
<div class="fs-14 fw-600 text-right">{{ single_price($cartItem['price']) }}</div>
|
||||
<div class="fs-14 text-right">{{ translate('QTY') }}: {{ $cartItem['quantity'] }}</div>
|
||||
</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 class="col-xl-6">
|
||||
<div class="pl-xl-4">
|
||||
<div class="card mb-4">
|
||||
<div class="card-header"><span class="fs-16">{{ translate('Customer Info') }}</span></div>
|
||||
<div class="card-body">
|
||||
@if(Session::has('pos.shipping_info') && Session::get('pos.shipping_info')['name'] != null)
|
||||
<div class="d-flex justify-content-between mb-2">
|
||||
<span class="">{{translate('Name')}}:</span>
|
||||
<span class="fw-600">{{ Session::get('pos.shipping_info')['name'] }}</span>
|
||||
</div>
|
||||
<div class="d-flex justify-content-between mb-2">
|
||||
<span class="">{{translate('Email')}}:</span>
|
||||
<span class="fw-600">{{ Session::get('pos.shipping_info')['email'] }}</span>
|
||||
</div>
|
||||
<div class="d-flex justify-content-between mb-2">
|
||||
<span class="">{{translate('Phone')}}:</span>
|
||||
<span class="fw-600">{{ Session::get('pos.shipping_info')['phone'] }}</span>
|
||||
</div>
|
||||
<div class="d-flex justify-content-between mb-2">
|
||||
<span class="">{{translate('Address')}}:</span>
|
||||
<span class="fw-600">{{ Session::get('pos.shipping_info')['address'] }}</span>
|
||||
</div>
|
||||
<div class="d-flex justify-content-between mb-2">
|
||||
<span class="">{{translate('Country')}}:</span>
|
||||
<span class="fw-600">{{ Session::get('pos.shipping_info')['country'] }}</span>
|
||||
</div>
|
||||
<div class="d-flex justify-content-between mb-2">
|
||||
<span class="">{{translate('City')}}:</span>
|
||||
<span class="fw-600">{{ Session::get('pos.shipping_info')['city'] }}</span>
|
||||
</div>
|
||||
<div class="d-flex justify-content-between mb-2">
|
||||
<span class="">{{translate('Postal Code')}}:</span>
|
||||
<span class="fw-600">{{ Session::get('pos.shipping_info')['postal_code'] }}</span>
|
||||
</div>
|
||||
@else
|
||||
<div class="text-center p-4">
|
||||
{{ translate('No customer information selected.') }}
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="d-flex justify-content-between fw-600 mb-2 opacity-70">
|
||||
<span>{{translate('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>
|
||||
68
resources/views/backend/pos/pos_activation.blade.php
Normal file
68
resources/views/backend/pos/pos_activation.blade.php
Normal file
@@ -0,0 +1,68 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
<h4 class="text-center text-muted">{{translate('POS Activation for Seller')}}</h4>
|
||||
<div class="row">
|
||||
<div class="col-lg-4">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('POS Activation for Seller')}}</h5>
|
||||
</div>
|
||||
<div class="card-body text-center">
|
||||
<label class="aiz-switch aiz-switch-success mb-0">
|
||||
<input type="checkbox" onchange="updateSettings(this, 'pos_activation_for_seller')" @if(get_setting('pos_activation_for_seller') == 1) checked @endif>
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<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('business_settings.update') }}" method="POST">
|
||||
@csrf
|
||||
<div class="form-group row">
|
||||
<input type="hidden" name="types[]" value="print_width">
|
||||
<div class="input-group mb-3">
|
||||
<input type="text" class="form-control" name="print_width" placeholder="{{ translate('Print width in mm') }}"
|
||||
value="{{ get_setting('print_width') }}">
|
||||
<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>
|
||||
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
<script type="text/javascript">
|
||||
function updateSettings(el, type){
|
||||
if($(el).is(':checked')){
|
||||
var value = 1;
|
||||
}
|
||||
else{
|
||||
var value = 0;
|
||||
}
|
||||
$.post('{{ route('business_settings.update.activation') }}', {_token:'{{ csrf_token() }}', type:type, value:value}, function(data){
|
||||
if(data == '1'){
|
||||
AIZ.plugins.notify('success', '{{ translate('Settings updated successfully') }}');
|
||||
}
|
||||
else{
|
||||
AIZ.plugins.notify('danger', '{{ translate('Something went wrong') }}');
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
@endsection
|
||||
43
resources/views/backend/pos/shipping_address.blade.php
Normal file
43
resources/views/backend/pos/shipping_address.blade.php
Normal file
@@ -0,0 +1,43 @@
|
||||
<div class="">
|
||||
@foreach (\App\Models\Address::where('user_id',$user_id)->get() as $key => $address)
|
||||
<label class="aiz-megabox d-block bg-white" style="display:block">
|
||||
<input type="radio" name="address_id" value="{{ $address->id }}" @if ($address->set_default) checked @endif required>
|
||||
<span class="d-flex p-3 pad-all aiz-megabox-elem">
|
||||
<span class="aiz-rounded-check flex-shrink-0 mt-1"></span>
|
||||
<span class="flex-grow-1 pl-3 pad-lft">
|
||||
<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->name }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span class="alpha-6">{{ translate('State') }}:</span>
|
||||
<span class="strong-600 ml-2">{{ $address->state->name }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span class="alpha-6">{{ translate('Country') }}:</span>
|
||||
<span class="strong-600 ml-2">{{ $address->country->name }}</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="" onclick="add_new_address()">
|
||||
<div class="border p-3 rounded mb-3 bord-all pad-all c-pointer text-center bg-white">
|
||||
<i class="fa fa-plus fa-2x"></i>
|
||||
<div class="alpha-7">{{ translate('Add New Address') }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
184
resources/views/backend/pos/thermal_invoice.blade.php
Normal file
184
resources/views/backend/pos/thermal_invoice.blade.php
Normal file
@@ -0,0 +1,184 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>{{ translate('INVOICE') }}</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
||||
<meta charset="UTF-8">
|
||||
<style media="all">
|
||||
@page {
|
||||
margin: 0;
|
||||
padding:0;
|
||||
}
|
||||
body{
|
||||
font-size: 0.75rem;
|
||||
font-family: "<?php echo $pdf_style_data['font_family'] ?>";
|
||||
font-weight: normal;
|
||||
direction: <?php echo $pdf_style_data['direction'] ?>;
|
||||
text-align: <?php echo $pdf_style_data['text_align'] ?>;
|
||||
padding:0;
|
||||
margin:0;
|
||||
}
|
||||
.gry-color *,
|
||||
.gry-color{
|
||||
color:#000;
|
||||
}
|
||||
table{
|
||||
width: 100%;
|
||||
}
|
||||
table th{
|
||||
font-weight: normal;
|
||||
}
|
||||
table.padding th{
|
||||
padding: .25rem .7rem;
|
||||
}
|
||||
table.padding td{
|
||||
padding: .25rem .7rem;
|
||||
}
|
||||
table.sm-padding td{
|
||||
padding: .1rem .7rem;
|
||||
}
|
||||
.border-bottom td,
|
||||
.border-bottom th{
|
||||
border-bottom:1px solid #e8e8f5;
|
||||
}
|
||||
.text-left{
|
||||
text-align:<?php echo $pdf_style_data['text_align'] ?>;
|
||||
}
|
||||
.text-right{
|
||||
text-align:<?php echo $pdf_style_data['not_text_align'] ?>;
|
||||
}
|
||||
.line-separator {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
border-top: 1px dotted #9c9ca1;
|
||||
margin: 10px 0 0;
|
||||
}
|
||||
.line-separator .line-separator-text {
|
||||
background-color:#fff !important;
|
||||
margin-top: -6px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
z-index: 1;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div>
|
||||
|
||||
@php
|
||||
$logo = get_setting('header_logo');
|
||||
@endphp
|
||||
|
||||
<div style="padding: 1rem;padding-bottom: 0">
|
||||
<div style="text-align: center;padding: 0.25rem;">
|
||||
@if($logo != null)
|
||||
<img src="{{ uploaded_asset($logo) }}" height="20">
|
||||
@else
|
||||
<img src="{{ static_asset('assets/img/logo.png') }}" height="20">
|
||||
@endif
|
||||
</div>
|
||||
<div style="text-align: center;">
|
||||
<span style="font-size: 1.5rem;">{{ get_setting('site_name') }}</span><br>
|
||||
<span>{{ get_setting('contact_address') }}</span><br>
|
||||
<span>{{ translate('Email') }}: {{ get_setting('contact_email') }}</span><br>
|
||||
<span>{{ translate('Phone') }}: {{ get_setting('contact_phone') }}</span><br>
|
||||
</div>
|
||||
<div class="line-separator"><div class="line-separator-text" style="width: 70px;">{{ translate('RETAIL INVOICE') }}</div></div>
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
{{ translate('Order ID') }}: <span class="strong">{{ $order->code }}</span>
|
||||
</td>
|
||||
<td style="font-size: 1rem;" class="text-right strong">{{ translate('Date') }}: <span class="strong">{{ date('d M Y h:i:sa', $order->date) }}</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{{ translate('Payment method') }}: <span class="strong">{{ translate(ucfirst(str_replace('_', ' ', $order->payment_type))) }}</span>
|
||||
</td>
|
||||
<td style="font-size: 1rem;" class="text-right strong"></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div style="padding: 0 1rem;">
|
||||
<div style="border-bottom:1px dotted #9c9ca1;padding-bottom: 0.25rem;">
|
||||
<div class="line-separator"><div class="line-separator-text" style="width: 40px;">{{ translate('BILL TO') }}</div></div>
|
||||
<table>
|
||||
@php
|
||||
$shipping_address = json_decode($order->shipping_address);
|
||||
@endphp
|
||||
<tr><td class="strong">{{ translate('Name') }}: {{ $shipping_address->name }}</small></td></tr>
|
||||
<tr><td class="gry-color small">{{ translate('Address') }}: {{ $shipping_address->address }}, {{ $shipping_address->city }}, @if(isset(json_decode($order->shipping_address)->state)) {{ json_decode($order->shipping_address)->state }} - @endif {{ $shipping_address->postal_code }}, {{ $shipping_address->country }}</small></td></tr>
|
||||
<tr><td class="gry-color small">{{ translate('Email') }}: {{ $shipping_address->email }}</small></td></tr>
|
||||
<tr><td class="gry-color small">{{ translate('Phone') }}: {{ $shipping_address->phone }}</small></td></tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="padding: 1rem;">
|
||||
<table class="text-left small border-bottom">
|
||||
<thead>
|
||||
<tr class="gry-color" style="">
|
||||
<th width="35%" class="text-left" style="padding-left: 0">{{ translate('Product Name') }}</th>
|
||||
<th width="10%" class="text-left">{{ translate('Qty') }}</th>
|
||||
<th width="20%" class="text-left">{{ translate('Unit Price') }}</th>
|
||||
<th width="15%" class="text-left">{{ translate('Tax') }}</th>
|
||||
<th width="20%" class="text-right" style="padding-right: 0">{{ translate('Total') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="strong">
|
||||
@foreach ($order->orderDetails as $key => $orderDetail)
|
||||
@if ($orderDetail->product != null)
|
||||
<tr class="">
|
||||
<td style="padding-left: 0">
|
||||
{{ $orderDetail->product->name }}
|
||||
@if($orderDetail->variation != null) ({{ $orderDetail->variation }}) @endif
|
||||
<br>
|
||||
|
||||
@php
|
||||
$product_stock = json_decode($orderDetail->product->stocks->first(), true);
|
||||
@endphp
|
||||
{{translate('SKU')}}: {{ $product_stock['sku'] }}
|
||||
</small>
|
||||
</td>
|
||||
<td class="">{{ $orderDetail->quantity }}</td>
|
||||
<td class="currency">{{ single_price($orderDetail->price/$orderDetail->quantity) }}</td>
|
||||
<td class="currency">{{ single_price($orderDetail->tax/$orderDetail->quantity) }}</td>
|
||||
<td class="text-right currency" style="padding-right: 0">{{ single_price($orderDetail->price+$orderDetail->tax) }}</td>
|
||||
</tr>
|
||||
@endif
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div style="padding:1rem;">
|
||||
<table class="text-right sm-padding small strong">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class="gry-color text-left">{{ translate('Sub Total') }}</th>
|
||||
<td class="currency" style="padding-right: 0">{{ single_price($order->orderDetails->sum('price')) }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="gry-color text-left">{{ translate('Shipping Cost') }}</th>
|
||||
<td class="currency" style="padding-right: 0">{{ single_price($order->orderDetails->sum('shipping_cost')) }}</td>
|
||||
</tr>
|
||||
<tr class="border-bottom">
|
||||
<th class="gry-color text-left">{{ translate('Total Tax') }}</th>
|
||||
<td class="currency" style="padding-right: 0">{{ single_price($order->orderDetails->sum('tax')) }}</td>
|
||||
</tr>
|
||||
<tr class="border-bottom">
|
||||
<th class="gry-color text-left">{{ translate('Coupon Discount') }}</th>
|
||||
<td class="currency" style="padding-right: 0">{{ single_price($order->coupon_discount) }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="text-left strong">{{ translate('Grand Total') }}</th>
|
||||
<td class="currency" style="padding-right: 0">{{ single_price($order->grand_total) }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
35
resources/views/backend/pos/variants.blade.php
Normal file
35
resources/views/backend/pos/variants.blade.php
Normal file
@@ -0,0 +1,35 @@
|
||||
<div class="modal-header bord-btm">
|
||||
<h4 class="modal-title h6">{{ translate('Select variation') }} - {{ $stocks->first()->product->getTranslation('name') }}</h4>
|
||||
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="row gutters-5">
|
||||
@foreach ($stocks as $key => $stock)
|
||||
<div class="col-lg-3 col-sm-6">
|
||||
<label class="aiz-megabox d-block">
|
||||
<input type="radio" name="variant" value="{{ $stock->variant }}" @if ($stock->qty <= 0)
|
||||
disabled
|
||||
@endif>
|
||||
<span class="d-flex p-2 pad-all aiz-megabox-elem">
|
||||
<span class="aiz-rounded-check flex-shrink-0 @if ($stock->qty > 0)
|
||||
mt-1
|
||||
@endif"></span>
|
||||
<span class="flex-grow-1 pad-lft pl-2">
|
||||
<span class="d-block strong-600">{{ $stock->variant }}</span>
|
||||
<span class="d-block">Price: {{ single_price($stock->price) }}</span>
|
||||
<span class="badge badge-inline @if ($stock->qty <= 0)
|
||||
badge-secondary
|
||||
@else
|
||||
badge-success
|
||||
@endif">Stock: {{ $stock->qty }}</span>
|
||||
</span>
|
||||
</span>
|
||||
</label>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-styled btn-base-3" data-dismiss="modal">Close</button>
|
||||
<button type="button" onclick="addVariantProductToCart({{ $stocks->first()->product->id }})" class="btn btn-primary btn-styled btn-base-1">Add Product</button>
|
||||
</div>
|
||||
@@ -0,0 +1,40 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="aiz-titlebar text-left mt-2 mb-3">
|
||||
<h5 class="mb-0 h6">{{ translate('Attribute Value Information') }}</h5>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-8 mx-auto">
|
||||
<div class="card">
|
||||
<div class="card-body p-0">
|
||||
|
||||
<form class="p-4" action="{{ route('update-attribute-value', $attribute_value->id) }}" method="POST">
|
||||
<input name="_method" type="hidden" value="POST">
|
||||
<input type="hidden" name="attribute_id" value="{{ $attribute_value->attribute_id }}">
|
||||
@csrf
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-3 col-from-label" for="Attribute Value">
|
||||
{{ translate('Attribute Value') }}
|
||||
</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" placeholder="{{ translate('Attribute Value') }}" id="value"
|
||||
name="value" class="form-control" required value="{{ $attribute_value->value }}">
|
||||
</div>
|
||||
</div>
|
||||
{{-- <div class="form-group row">
|
||||
<label class="col-sm-3 col-from-label" for="code">
|
||||
{{ translate('Color Code')}}
|
||||
</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" placeholder="{{ translate('Color Code')}}" id="code" name="code" class="form-control" required value="{{ $attribute_value->code }}">
|
||||
</div>
|
||||
</div> --}}
|
||||
<div class="form-group mb-0 text-right">
|
||||
<button type="submit" class="btn btn-primary">{{ translate('Save') }}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -0,0 +1,105 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="aiz-titlebar text-left mt-2 mb-3">
|
||||
<div class="align-items-center">
|
||||
<h1 class="h3">{{ translate('Attribute Detail') }}</h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<!-- Small table -->
|
||||
<div class="@if (auth()->user()->can('add_product_attribute_values')) col-lg-7 @else col-lg-12 @endif">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<strong class="card-title">
|
||||
{{ $attribute->getTranslation('name') }}
|
||||
</strong>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<table class="table aiz-table mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>{{ translate('Value') }}</th>
|
||||
<th class="text-right">{{ translate('Action') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($all_attribute_values as $key => $attribute_value)
|
||||
<tr>
|
||||
<td>{{ $key + 1 }}</td>
|
||||
<td>
|
||||
{{ $attribute_value->value }}
|
||||
</td>
|
||||
<td class="text-right">
|
||||
@can('edit_product_attribute_value')
|
||||
<a class="btn btn-soft-primary btn-icon btn-circle btn-sm"
|
||||
href="{{ route('edit-attribute-value', ['id' => $attribute_value->id]) }}"
|
||||
title="{{ translate('Edit') }}">
|
||||
<i class="las la-edit"></i>
|
||||
</a>
|
||||
@endcan
|
||||
@can('delete_product_attribute_value')
|
||||
<a href="#"
|
||||
class="btn btn-soft-danger btn-icon btn-circle btn-sm confirm-delete"
|
||||
data-href="{{ route('destroy-attribute-value', $attribute_value->id) }}"
|
||||
title="{{ translate('Delete') }}">
|
||||
<i class="las la-trash"></i>
|
||||
</a>
|
||||
@endcan
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@can('add_product_attribute_values')
|
||||
<div class="col-md-5">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{ translate('Add New Attribute Value') }}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<!-- Error Meassages -->
|
||||
@if ($errors->any())
|
||||
<div class="alert alert-danger">
|
||||
<ul>
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
@endif
|
||||
<form action="{{ route('store-attribute-value') }}" method="POST">
|
||||
@csrf
|
||||
<div class="form-group mb-3">
|
||||
<label for="name">{{ translate('Attribute Name') }}</label>
|
||||
<input type="hidden" name="attribute_id" value="{{ $attribute->id }}">
|
||||
<input type="text" placeholder="{{ translate('Name') }}" name=""
|
||||
value="{{ $attribute->name }}"class="form-control" readonly>
|
||||
<input type="hidden" name="attribute_type" value="{{ $attribute->type }}">
|
||||
</div>
|
||||
<div class="form-group mb-3">
|
||||
<label for="name">{{ translate('Attribute Value') }}</label>
|
||||
<input type="text" placeholder="{{ translate('Name') }}" id="value" name="value"
|
||||
class="form-control" required>
|
||||
</div>
|
||||
<div class="form-group mb-3 text-right">
|
||||
<button type="submit" class="btn btn-primary">{{ translate('Save') }}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endcan
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('modal')
|
||||
@include('modals.delete_modal')
|
||||
@endsection
|
||||
43
resources/views/backend/product/attribute/edit.blade.php
Normal file
43
resources/views/backend/product/attribute/edit.blade.php
Normal file
@@ -0,0 +1,43 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="aiz-titlebar text-left mt-2 mb-3">
|
||||
<h5 class="mb-0 h6">{{ translate('Attribute Information') }}</h5>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-8 mx-auto">
|
||||
<div class="card">
|
||||
<div class="card-body p-0">
|
||||
<ul class="nav nav-tabs nav-fill border-light">
|
||||
@foreach (\App\Models\Language::all() as $key => $language)
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-reset @if ($language->code == $lang) active @else bg-soft-dark border-light border-left-0 @endif py-3"
|
||||
href="{{ route('attributes.edit', ['id' => $attribute->id, 'lang' => $language->code]) }}">
|
||||
<img src="{{ static_asset('assets/img/flags/' . $language->code . '.png') }}" height="11"
|
||||
class="mr-1">
|
||||
<span>{{ $language->name }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
<form class="p-4" action="{{ route('attributes.update', $attribute->id) }}" method="POST">
|
||||
<input name="_method" type="hidden" value="PATCH">
|
||||
<input type="hidden" name="lang" value="{{ $lang }}">
|
||||
@csrf
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-3 col-from-label" for="name">{{ translate('Name') }} <i
|
||||
class="las la-language text-danger" title="{{ translate('Translatable') }}"></i></label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" placeholder="{{ translate('Name') }}" id="name" name="name"
|
||||
class="form-control" required value="{{ $attribute->getTranslation('name', $lang) }}">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group mb-0 text-right">
|
||||
<button type="submit" class="btn btn-primary">{{ translate('Save') }}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
98
resources/views/backend/product/attribute/index.blade.php
Normal file
98
resources/views/backend/product/attribute/index.blade.php
Normal file
@@ -0,0 +1,98 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="aiz-titlebar text-left mt-2 mb-3">
|
||||
<div class="align-items-center">
|
||||
<h1 class="h3">{{ translate('All Attributes') }}</h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="@if (auth()->user()->can('add_product_attribute')) col-lg-7 @else col-lg-12 @endif">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{ translate('Attributes') }}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table aiz-table mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>{{ translate('Name') }}</th>
|
||||
<th>{{ translate('Values') }}</th>
|
||||
<th class="text-right">{{ translate('Options') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($attributes as $key => $attribute)
|
||||
<tr>
|
||||
<td>{{ $key + 1 }}</td>
|
||||
<td>{{ $attribute->getTranslation('name') }}</td>
|
||||
<td>
|
||||
@foreach ($attribute->attribute_values as $key => $value)
|
||||
<span
|
||||
class="badge badge-inline badge-md bg-soft-dark">{{ $value->value }}</span>
|
||||
@endforeach
|
||||
</td>
|
||||
<td class="text-right">
|
||||
@can('view_product_attribute_values')
|
||||
<a class="btn btn-soft-info btn-icon btn-circle btn-sm"
|
||||
href="{{ route('attributes.show', $attribute->id) }}"
|
||||
title="{{ translate('Attribute values') }}">
|
||||
<i class="las la-cog"></i>
|
||||
</a>
|
||||
@endcan
|
||||
@can('edit_product_attribute')
|
||||
<a class="btn btn-soft-primary btn-icon btn-circle btn-sm"
|
||||
href="{{ route('attributes.edit', ['id' => $attribute->id, 'lang' => env('DEFAULT_LANGUAGE')]) }}"
|
||||
title="{{ translate('Edit') }}">
|
||||
<i class="las la-edit"></i>
|
||||
</a>
|
||||
@endcan
|
||||
@can('delete_product_attribute')
|
||||
<a href="#"
|
||||
class="btn btn-soft-danger btn-icon btn-circle btn-sm confirm-delete"
|
||||
data-href="{{ route('attributes.destroy', $attribute->id) }}"
|
||||
title="{{ translate('Delete') }}">
|
||||
<i class="las la-trash"></i>
|
||||
</a>
|
||||
@endcan
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="aiz-pagination">
|
||||
{{ $attributes->links() }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@can('add_product_attribute')
|
||||
<div class="col-md-5">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{ translate('Add New Attribute') }}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form action="{{ route('attributes.store') }}" method="POST">
|
||||
@csrf
|
||||
<div class="form-group mb-3">
|
||||
<label for="name">{{ translate('Name') }}</label>
|
||||
<input type="text" placeholder="{{ translate('Name') }}" id="name" name="name"
|
||||
class="form-control" required>
|
||||
</div>
|
||||
<div class="form-group mb-3 text-right">
|
||||
<button type="submit" class="btn btn-primary">{{ translate('Save') }}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endcan
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('modal')
|
||||
@include('modals.delete_modal')
|
||||
@endsection
|
||||
72
resources/views/backend/product/brands/edit.blade.php
Normal file
72
resources/views/backend/product/brands/edit.blade.php
Normal file
@@ -0,0 +1,72 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="aiz-titlebar text-left mt-2 mb-3">
|
||||
<h5 class="mb-0 h6">{{translate('Brand Information')}}</h5>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-8 mx-auto">
|
||||
<div class="card">
|
||||
<div class="card-body p-0">
|
||||
<ul class="nav nav-tabs nav-fill border-light">
|
||||
@foreach (\App\Models\Language::all() as $key => $language)
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-reset @if ($language->code == $lang) active @else bg-soft-dark border-light border-left-0 @endif py-3" href="{{ route('brands.edit', ['id'=>$brand->id, 'lang'=> $language->code] ) }}">
|
||||
<img src="{{ static_asset('assets/img/flags/'.$language->code.'.png') }}" height="11" class="mr-1">
|
||||
<span>{{ $language->name }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
<form class="p-4" action="{{ route('brands.update', $brand->id) }}" method="POST" enctype="multipart/form-data">
|
||||
<input name="_method" type="hidden" value="PATCH">
|
||||
<input type="hidden" name="lang" value="{{ $lang }}">
|
||||
@csrf
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-3 col-from-label" for="name">{{translate('Name')}} <i class="las la-language text-danger" title="{{translate('Translatable')}}"></i></label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" placeholder="{{translate('Name')}}" id="name" name="name" value="{{ $brand->getTranslation('name', $lang) }}" class="form-control" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label" for="signinSrEmail">{{translate('Logo')}} <small>({{ translate('120x80') }})</small></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 File') }}</div>
|
||||
<input type="hidden" name="logo" value="{{$brand->logo}}" class="selected-files">
|
||||
</div>
|
||||
<div class="file-preview box sm">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-3 col-from-label">{{translate('Meta Title')}}</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" class="form-control" name="meta_title" value="{{ $brand->meta_title }}" placeholder="{{translate('Meta Title')}}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-3 col-from-label">{{translate('Meta Description')}}</label>
|
||||
<div class="col-sm-9">
|
||||
<textarea name="meta_description" rows="8" class="form-control">{{ $brand->meta_description }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-3 col-from-label" for="name">{{translate('Slug')}}</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" placeholder="{{translate('Slug')}}" id="slug" name="slug" value="{{ $brand->slug }}" class="form-control">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group mb-0 text-right">
|
||||
<button type="submit" class="btn btn-primary">{{translate('Save')}}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
121
resources/views/backend/product/brands/index.blade.php
Normal file
121
resources/views/backend/product/brands/index.blade.php
Normal file
@@ -0,0 +1,121 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="aiz-titlebar text-left mt-2 mb-3">
|
||||
<div class="align-items-center">
|
||||
<h1 class="h3">{{translate('All Brands')}}</h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="@if(auth()->user()->can('add_brand')) col-lg-7 @else col-lg-12 @endif">
|
||||
<div class="card">
|
||||
<div class="card-header row gutters-5">
|
||||
<div class="col text-center text-md-left">
|
||||
<h5 class="mb-md-0 h6">{{ translate('Brands') }}</h5>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<form class="" id="sort_brands" action="" method="GET">
|
||||
<div class="input-group input-group-sm">
|
||||
<input type="text" class="form-control" id="search" name="search"@isset($sort_search) value="{{ $sort_search }}" @endisset placeholder="{{ translate('Type name & Enter') }}">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table aiz-table mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>{{translate('Name')}}</th>
|
||||
<th>{{translate('Logo')}}</th>
|
||||
<th class="text-right">{{translate('Options')}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($brands as $key => $brand)
|
||||
<tr>
|
||||
<td>{{ ($key+1) + ($brands->currentPage() - 1)*$brands->perPage() }}</td>
|
||||
<td>{{ $brand->getTranslation('name') }}</td>
|
||||
<td>
|
||||
<img src="{{ uploaded_asset($brand->logo) }}" alt="{{translate('Brand')}}" class="h-50px">
|
||||
</td>
|
||||
<td class="text-right">
|
||||
@can('edit_brand')
|
||||
<a class="btn btn-soft-primary btn-icon btn-circle btn-sm" href="{{route('brands.edit', ['id'=>$brand->id, 'lang'=>env('DEFAULT_LANGUAGE')] )}}" title="{{ translate('Edit') }}">
|
||||
<i class="las la-edit"></i>
|
||||
</a>
|
||||
@endcan
|
||||
@can('delete_brand')
|
||||
<a href="#" class="btn btn-soft-danger btn-icon btn-circle btn-sm confirm-delete" data-href="{{route('brands.destroy', $brand->id)}}" title="{{ translate('Delete') }}">
|
||||
<i class="las la-trash"></i>
|
||||
</a>
|
||||
@endcan
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="aiz-pagination">
|
||||
{{ $brands->appends(request()->input())->links() }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@can('add_brand')
|
||||
<div class="col-md-5">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{ translate('Add New Brand') }}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form action="{{ route('brands.store') }}" method="POST">
|
||||
@csrf
|
||||
<div class="form-group mb-3">
|
||||
<label for="name">{{translate('Name')}}</label>
|
||||
<input type="text" placeholder="{{translate('Name')}}" name="name" class="form-control" required>
|
||||
</div>
|
||||
<div class="form-group mb-3">
|
||||
<label for="name">{{translate('Logo')}} <small>({{ translate('120x80') }})</small></label>
|
||||
<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" class="selected-files">
|
||||
</div>
|
||||
<div class="file-preview box sm">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group mb-3">
|
||||
<label for="name">{{translate('Meta Title')}}</label>
|
||||
<input type="text" class="form-control" name="meta_title" placeholder="{{translate('Meta Title')}}">
|
||||
</div>
|
||||
<div class="form-group mb-3">
|
||||
<label for="name">{{translate('Meta Description')}}</label>
|
||||
<textarea name="meta_description" rows="5" class="form-control"></textarea>
|
||||
</div>
|
||||
<div class="form-group mb-3 text-right">
|
||||
<button type="submit" class="btn btn-primary">{{translate('Save')}}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endcan
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
@section('modal')
|
||||
@include('modals.delete_modal')
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
<script type="text/javascript">
|
||||
function sort_brands(el){
|
||||
$('#sort_brands').submit();
|
||||
}
|
||||
</script>
|
||||
@endsection
|
||||
59
resources/views/backend/product/bulk_upload/index.blade.php
Normal file
59
resources/views/backend/product/bulk_upload/index.blade.php
Normal file
@@ -0,0 +1,59 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('Product Bulk Upload')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="alert" style="color: #004085;background-color: #cce5ff;border-color: #b8daff;margin-bottom:0;margin-top:10px;">
|
||||
<strong>{{ translate('Step 1')}}:</strong>
|
||||
<p>1. {{translate('Download the skeleton file and fill it with proper data')}}.</p>
|
||||
<p>2. {{translate('You can download the example file to understand how the data must be filled')}}.</p>
|
||||
<p>3. {{translate('Once you have downloaded and filled the skeleton file, upload it in the form below and submit')}}.</p>
|
||||
<p>4. {{translate('After uploading products you need to edit them and set product\'s images and choices')}}.</p>
|
||||
</div>
|
||||
<br>
|
||||
<div class="">
|
||||
<a href="{{ static_asset('download/product_bulk_demo.xlsx') }}" download><button class="btn btn-info">{{ translate('Download CSV')}}</button></a>
|
||||
</div>
|
||||
<div class="alert" style="color: #004085;background-color: #cce5ff;border-color: #b8daff;margin-bottom:0;margin-top:10px;">
|
||||
<strong>{{translate('Step 2')}}:</strong>
|
||||
<p>1. {{translate('Category and Brand should be in numerical id')}}.</p>
|
||||
<p>2. {{translate('You can download the pdf to get Category and Brand id')}}.</p>
|
||||
</div>
|
||||
<br>
|
||||
<div class="">
|
||||
<a href="{{ route('pdf.download_category') }}"><button class="btn btn-info">{{translate('Download Category')}}</button></a>
|
||||
<a href="{{ route('pdf.download_brand') }}"><button class="btn btn-info">{{translate('Download Brand')}}</button></a>
|
||||
</div>
|
||||
<br>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6"><strong>{{translate('Upload Product File')}}</strong></h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form class="form-horizontal" action="{{ route('bulk_product_upload') }}" method="POST" enctype="multipart/form-data">
|
||||
@csrf
|
||||
<div class="form-group row">
|
||||
<div class="col-sm-9">
|
||||
<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">
|
||||
<button type="submit" class="btn btn-info">{{translate('Upload CSV')}}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
142
resources/views/backend/product/categories/create.blade.php
Normal file
142
resources/views/backend/product/categories/create.blade.php
Normal file
@@ -0,0 +1,142 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
@php
|
||||
CoreComponentRepository::instantiateShopRepository();
|
||||
CoreComponentRepository::initializeCache();
|
||||
@endphp
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-8 mx-auto">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('Category Information')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form class="form-horizontal" action="{{ route('categories.store') }}" method="POST" enctype="multipart/form-data">
|
||||
@csrf
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label">{{translate('Name')}}</label>
|
||||
<div class="col-md-9">
|
||||
<input type="text" placeholder="{{translate('Name')}}" id="name" name="name" class="form-control" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label">{{translate('Parent Category')}}</label>
|
||||
<div class="col-md-9">
|
||||
<select class="select2 form-control aiz-selectpicker" name="parent_id" data-toggle="select2" data-placeholder="Choose ..." data-live-search="true">
|
||||
<option value="0">{{ translate('No Parent') }}</option>
|
||||
@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">
|
||||
<label class="col-md-3 col-form-label">
|
||||
{{translate('Ordering Number')}}
|
||||
</label>
|
||||
<div class="col-md-9">
|
||||
<input type="number" name="order_level" class="form-control" id="order_level" placeholder="{{translate('Order Level')}}">
|
||||
<small>{{translate('Higher number has high priority')}}</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label">{{translate('Type')}}</label>
|
||||
<div class="col-md-9">
|
||||
<select name="digital" required class="form-control aiz-selectpicker mb-2 mb-md-0">
|
||||
<option value="0">{{translate('Physical')}}</option>
|
||||
<option value="1">{{translate('Digital')}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label" for="signinSrEmail">{{translate('Banner')}} <small>({{ translate('200x200') }})</small></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 File') }}</div>
|
||||
<input type="hidden" name="banner" 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('Icon')}} <small>({{ translate('32x32') }})</small></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 File') }}</div>
|
||||
<input type="hidden" name="icon" 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('Cover Image')}} <small>({{ translate('250x250') }})</small></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 File') }}</div>
|
||||
<input type="hidden" name="cover_image" class="selected-files">
|
||||
</div>
|
||||
<div class="file-preview box sm">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label">{{translate('Meta Title')}}</label>
|
||||
<div class="col-md-9">
|
||||
<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-form-label">{{translate('Meta Description')}}</label>
|
||||
<div class="col-md-9">
|
||||
<textarea name="meta_description" rows="5" class="form-control"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
@if (get_setting('category_wise_commission') == 1)
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label">{{translate('Commission Rate')}}</label>
|
||||
<div class="col-md-9 input-group">
|
||||
<input type="number" lang="en" min="0" step="0.01" placeholder="{{translate('Commission Rate')}}" id="commision_rate" name="commision_rate" class="form-control">
|
||||
<div class="input-group-append">
|
||||
<span class="input-group-text">%</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label">{{translate('Filtering Attributes')}}</label>
|
||||
<div class="col-md-9">
|
||||
<select class="select2 form-control aiz-selectpicker" name="filtering_attributes[]" data-toggle="select2" data-placeholder="Choose ..."data-live-search="true" multiple>
|
||||
@foreach (\App\Models\Attribute::all() as $attribute)
|
||||
<option value="{{ $attribute->id }}">{{ $attribute->getTranslation('name') }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</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
|
||||
161
resources/views/backend/product/categories/edit.blade.php
Normal file
161
resources/views/backend/product/categories/edit.blade.php
Normal file
@@ -0,0 +1,161 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
@php
|
||||
CoreComponentRepository::instantiateShopRepository();
|
||||
CoreComponentRepository::initializeCache();
|
||||
@endphp
|
||||
|
||||
<div class="aiz-titlebar text-left mt-2 mb-3">
|
||||
<h5 class="mb-0 h6">{{translate('Category Information')}}</h5>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-8 mx-auto">
|
||||
<div class="card">
|
||||
<div class="card-body p-0">
|
||||
<ul class="nav nav-tabs nav-fill border-light">
|
||||
@foreach (\App\Models\Language::all() as $key => $language)
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-reset @if ($language->code == $lang) active @else bg-soft-dark border-light border-left-0 @endif py-3" href="{{ route('categories.edit', ['id'=>$category->id, 'lang'=> $language->code] ) }}">
|
||||
<img src="{{ static_asset('assets/img/flags/'.$language->code.'.png') }}" height="11" class="mr-1">
|
||||
<span>{{$language->name}}</span>
|
||||
</a>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
<form class="p-4" action="{{ route('categories.update', $category->id) }}" method="POST" enctype="multipart/form-data">
|
||||
<input name="_method" type="hidden" value="PATCH">
|
||||
<input type="hidden" name="lang" value="{{ $lang }}">
|
||||
@csrf
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label">{{translate('Name')}} <i class="las la-language text-danger" title="{{translate('Translatable')}}"></i></label>
|
||||
<div class="col-md-9">
|
||||
<input type="text" name="name" value="{{ $category->getTranslation('name', $lang) }}" class="form-control" id="name" placeholder="{{translate('Name')}}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label">{{translate('Parent Category')}}</label>
|
||||
<div class="col-md-9">
|
||||
<select class="select2 form-control aiz-selectpicker" name="parent_id" data-toggle="select2" data-placeholder="Choose ..."data-live-search="true" data-selected="{{ $category->parent_id }}">
|
||||
<option value="0">{{ translate('No Parent') }}</option>
|
||||
@foreach ($categories as $acategory)
|
||||
<option value="{{ $acategory->id }}">{{ $acategory->getTranslation('name') }}</option>
|
||||
@foreach ($acategory->childrenCategories as $childCategory)
|
||||
@include('categories.child_category', ['child_category' => $childCategory])
|
||||
@endforeach
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label">
|
||||
{{translate('Ordering Number')}}
|
||||
</label>
|
||||
<div class="col-md-9">
|
||||
<input type="number" name="order_level" value="{{ $category->order_level }}" class="form-control" id="order_level" placeholder="{{translate('Order Level')}}">
|
||||
<small>{{translate('Higher number has high priority')}}</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label">{{translate('Type')}}</label>
|
||||
<div class="col-md-9">
|
||||
<select name="digital" required class="form-control aiz-selectpicker mb-2 mb-md-0">
|
||||
<option value="0" @if ($category->digital == '0') selected @endif>{{translate('Physical')}}</option>
|
||||
<option value="1" @if ($category->digital == '1') selected @endif>{{translate('Digital')}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label" for="signinSrEmail">{{translate('Banner')}} <small>({{ translate('200x200') }})</small></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 File') }}</div>
|
||||
<input type="hidden" name="banner" class="selected-files" value="{{ $category->banner }}">
|
||||
</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('Icon')}} <small>({{ translate('32x32') }})</small></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 File') }}</div>
|
||||
<input type="hidden" name="icon" class="selected-files" value="{{ $category->icon }}">
|
||||
</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('Cover Image')}} <small>({{ translate('250x250') }})</small></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 File') }}</div>
|
||||
<input type="hidden" name="cover_image" class="selected-files" value="{{ $category->cover_image }}">
|
||||
</div>
|
||||
<div class="file-preview box sm">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label">{{translate('Meta Title')}}</label>
|
||||
<div class="col-md-9">
|
||||
<input type="text" class="form-control" name="meta_title" value="{{ $category->meta_title }}" placeholder="{{translate('Meta Title')}}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label">{{translate('Meta Description')}}</label>
|
||||
<div class="col-md-9">
|
||||
<textarea name="meta_description" rows="5" class="form-control">{{ $category->meta_description }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label">{{translate('Slug')}}</label>
|
||||
<div class="col-md-9">
|
||||
<input type="text" placeholder="{{translate('Slug')}}" id="slug" name="slug" value="{{ $category->slug }}" class="form-control">
|
||||
</div>
|
||||
</div>
|
||||
@if (get_setting('category_wise_commission') == 1)
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label">{{translate('Commission Rate')}}</label>
|
||||
<div class="col-md-9 input-group">
|
||||
<input type="number" lang="en" min="0" step="0.01" id="commision_rate" name="commision_rate" value="{{ $category->commision_rate }}" class="form-control">
|
||||
<div class="input-group-append">
|
||||
<span class="input-group-text">%</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label">{{translate('Filtering Attributes')}}</label>
|
||||
<div class="col-md-9">
|
||||
<select class="select2 form-control aiz-selectpicker" name="filtering_attributes[]" data-toggle="select2" data-placeholder="Choose ..."data-live-search="true" data-selected="{{ $category->attributes->pluck('id') }}" multiple>
|
||||
@foreach (\App\Models\Attribute::all() as $attribute)
|
||||
<option value="{{ $attribute->id }}">{{ $attribute->getTranslation('name') }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</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
|
||||
147
resources/views/backend/product/categories/index.blade.php
Normal file
147
resources/views/backend/product/categories/index.blade.php
Normal file
@@ -0,0 +1,147 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
@php
|
||||
CoreComponentRepository::instantiateShopRepository();
|
||||
CoreComponentRepository::initializeCache();
|
||||
@endphp
|
||||
|
||||
<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 Categories')}}</h1>
|
||||
</div>
|
||||
@can('add_product_category')
|
||||
<div class="col-md-6 text-md-right">
|
||||
<a href="{{ route('categories.create') }}" class="btn btn-primary">
|
||||
<span>{{translate('Add New category')}}</span>
|
||||
</a>
|
||||
</div>
|
||||
@endcan
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-header d-block d-md-flex">
|
||||
<h5 class="mb-0 h6">{{ translate('Categories') }}</h5>
|
||||
<form class="" id="sort_categories" action="" method="GET">
|
||||
<div class="box-inline pad-rgt pull-left">
|
||||
<div class="" style="min-width: 200px;">
|
||||
<input type="text" class="form-control" id="search" name="search"@isset($sort_search) value="{{ $sort_search }}" @endisset placeholder="{{ translate('Type name & Enter') }}">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table aiz-table mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th data-breakpoints="lg">#</th>
|
||||
<th>{{translate('Name')}}</th>
|
||||
<th data-breakpoints="lg">{{ translate('Parent Category') }}</th>
|
||||
<th data-breakpoints="lg">{{ translate('Order Level') }}</th>
|
||||
<th data-breakpoints="lg">{{ translate('Level') }}</th>
|
||||
<th data-breakpoints="lg">{{translate('Banner')}}</th>
|
||||
<th data-breakpoints="lg">{{translate('Icon')}}</th>
|
||||
<th data-breakpoints="lg">{{translate('Cover Image')}}</th>
|
||||
<th data-breakpoints="lg">{{translate('Featured')}}</th>
|
||||
<th data-breakpoints="lg">{{translate('Commission')}}</th>
|
||||
<th width="10%" class="text-right">{{translate('Options')}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($categories as $key => $category)
|
||||
<tr>
|
||||
<td>{{ ($key+1) + ($categories->currentPage() - 1)*$categories->perPage() }}</td>
|
||||
<td>{{ $category->getTranslation('name') }}</td>
|
||||
<td>
|
||||
@php
|
||||
$parent = \App\Models\Category::where('id', $category->parent_id)->first();
|
||||
@endphp
|
||||
@if ($parent != null)
|
||||
{{ $parent->getTranslation('name') }}
|
||||
@else
|
||||
—
|
||||
@endif
|
||||
</td>
|
||||
<td>{{ $category->order_level }}</td>
|
||||
<td>{{ $category->level }}</td>
|
||||
<td>
|
||||
@if($category->banner != null)
|
||||
<img src="{{ uploaded_asset($category->banner) }}" alt="{{translate('Banner')}}" class="h-50px">
|
||||
@else
|
||||
—
|
||||
@endif
|
||||
</td>
|
||||
<td>
|
||||
@if($category->icon != null)
|
||||
<span class="avatar avatar-square avatar-xs">
|
||||
<img src="{{ uploaded_asset($category->icon) }}" alt="{{translate('icon')}}">
|
||||
</span>
|
||||
@else
|
||||
—
|
||||
@endif
|
||||
</td>
|
||||
<td>
|
||||
@if($category->icon != null)
|
||||
<img src="{{ uploaded_asset($category->cover_image) }}" alt="{{translate('Cover Image')}}" class="h-50px">
|
||||
@else
|
||||
—
|
||||
@endif
|
||||
</td>
|
||||
<td>
|
||||
<label class="aiz-switch aiz-switch-success mb-0">
|
||||
<input type="checkbox" onchange="update_featured(this)" value="{{ $category->id }}" <?php if($category->featured == 1) echo "checked";?>>
|
||||
<span></span>
|
||||
</label>
|
||||
</td>
|
||||
<td>{{ $category->commision_rate }} %</td>
|
||||
<td class="text-right">
|
||||
@can('edit_product_category')
|
||||
<a class="btn btn-soft-primary btn-icon btn-circle btn-sm" href="{{route('categories.edit', ['id'=>$category->id, 'lang'=>env('DEFAULT_LANGUAGE')] )}}" title="{{ translate('Edit') }}">
|
||||
<i class="las la-edit"></i>
|
||||
</a>
|
||||
@endcan
|
||||
@can('delete_product_category')
|
||||
<a href="#" class="btn btn-soft-danger btn-icon btn-circle btn-sm confirm-delete" data-href="{{route('categories.destroy', $category->id)}}" title="{{ translate('Delete') }}">
|
||||
<i class="las la-trash"></i>
|
||||
</a>
|
||||
@endcan
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="aiz-pagination">
|
||||
{{ $categories->appends(request()->input())->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('categories.featured') }}', {_token:'{{ csrf_token() }}', id:el.value, status:status}, function(data){
|
||||
if(data == 1){
|
||||
AIZ.plugins.notify('success', '{{ translate('Featured categories updated successfully') }}');
|
||||
}
|
||||
else{
|
||||
AIZ.plugins.notify('danger', '{{ translate('Something went wrong') }}');
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
@endsection
|
||||
48
resources/views/backend/product/color/edit.blade.php
Normal file
48
resources/views/backend/product/color/edit.blade.php
Normal file
@@ -0,0 +1,48 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="aiz-titlebar text-left mt-2 mb-3">
|
||||
<h5 class="mb-0 h6">{{translate('Color Information')}}</h5>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-8 mx-auto">
|
||||
<div class="card">
|
||||
<div class="card-body p-0">
|
||||
@if ($errors->any())
|
||||
<div class="alert alert-danger">
|
||||
<ul>
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
@endif
|
||||
<form class="p-4" action="{{ route('colors.update', $color->id) }}" method="POST">
|
||||
<input name="_method" type="hidden" value="POST">
|
||||
@csrf
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-3 col-from-label" for="name">
|
||||
{{ translate('Name')}}
|
||||
</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" placeholder="{{ translate('Name')}}" id="name" name="name" class="form-control" required value="{{ $color->name }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-3 col-from-label" for="code">
|
||||
{{ translate('Color Code')}}
|
||||
</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" placeholder="{{ translate('Color Code')}}" id="code" name="code" class="form-control" required value="{{ $color->code }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group mb-0 text-right">
|
||||
<button type="submit" class="btn btn-primary">{{translate('Save')}}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
143
resources/views/backend/product/color/index.blade.php
Normal file
143
resources/views/backend/product/color/index.blade.php
Normal file
@@ -0,0 +1,143 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="aiz-titlebar text-left mt-2 mb-3">
|
||||
<div class="align-items-center">
|
||||
<h1 class="h3">{{ translate('All Colors') }}</h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="@if(auth()->user()->can('add_color')) col-lg-7 @else col-lg-12 @endif">
|
||||
<div class="card">
|
||||
<form class="" id="sort_colors" action="" method="GET">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{ translate('Colors') }}</h5>
|
||||
<div class="col-md-5">
|
||||
<div class="form-group mb-0">
|
||||
<input type="text" class="form-control form-control-sm" id="search" name="search"
|
||||
@isset($sort_search) value="{{ $sort_search }}" @endisset
|
||||
placeholder="{{ translate('Type color name & Enter') }}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<div class="card-body">
|
||||
<table class="table aiz-table mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>{{ translate('Name') }}</th>
|
||||
<th class="text-right">{{ translate('Options') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($colors as $key => $color)
|
||||
<tr>
|
||||
<td>{{ ($key+1) + ($colors->currentPage() - 1)*$colors->perPage() }}</td>
|
||||
<td>{{ $color->name }}</td>
|
||||
<td class="text-right">
|
||||
@can('edit_color')
|
||||
<a class="btn btn-soft-primary btn-icon btn-circle btn-sm"
|
||||
href="{{ route('colors.edit', ['id' => $color->id, 'lang' => env('DEFAULT_LANGUAGE')]) }}"
|
||||
title="{{ translate('Edit') }}">
|
||||
<i class="las la-edit"></i>
|
||||
</a>
|
||||
@endcan
|
||||
@can('delete_color')
|
||||
<a href="#" class="btn btn-soft-danger btn-icon btn-circle btn-sm confirm-delete"
|
||||
data-href="{{ route('colors.destroy', $color->id) }}"
|
||||
title="{{ translate('Delete') }}">
|
||||
<i class="las la-trash"></i>
|
||||
</a>
|
||||
@endcan
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="aiz-pagination">
|
||||
{{ $colors->appends(request()->input())->links() }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@can('add_color')
|
||||
<div class="col-md-5">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{ translate('Add New Color') }}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@if ($errors->any())
|
||||
<div class="alert alert-danger">
|
||||
<ul>
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
@endif
|
||||
<form action="{{ route('colors.store') }}" method="POST">
|
||||
@csrf
|
||||
<div class="form-group mb-3">
|
||||
<label for="name">{{ translate('Name') }}</label>
|
||||
<input type="text" placeholder="{{ translate('Name') }}" id="name" name="name"
|
||||
class="form-control" value="{{ old('name') }}" required>
|
||||
</div>
|
||||
<div class="form-group mb-3">
|
||||
<label for="name">{{ translate('Color Code') }}</label>
|
||||
<input type="text" placeholder="{{ translate('Color Code') }}" id="code" name="code"
|
||||
class="form-control" value="{{ old('code') }}" required>
|
||||
</div>
|
||||
<div class="form-group mb-3 text-right">
|
||||
<button type="submit" class="btn btn-primary">{{ translate('Save') }}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="mb-0 h6">{{translate('Color filter activation')}}</h3>
|
||||
</div>
|
||||
<div class="card-body text-center">
|
||||
<label class="aiz-switch aiz-switch-success mb-0">
|
||||
<input type="checkbox" onchange="updateSettings(this, 'color_filter_activation')" <?php if(get_setting('color_filter_activation') == 1) echo "checked";?>>
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endcan
|
||||
</div>
|
||||
|
||||
|
||||
@endsection
|
||||
|
||||
@section('modal')
|
||||
@include('modals.delete_modal')
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
<script type="text/javascript">
|
||||
function updateSettings(el, type){
|
||||
if($(el).is(':checked')){
|
||||
var value = 1;
|
||||
}
|
||||
else{
|
||||
var value = 0;
|
||||
}
|
||||
|
||||
$.post('{{ route('business_settings.update.activation') }}', {_token:'{{ csrf_token() }}', type:type, value:value}, function(data){
|
||||
if(data == '1'){
|
||||
AIZ.plugins.notify('success', '{{ translate('Settings updated successfully') }}');
|
||||
}
|
||||
else{
|
||||
AIZ.plugins.notify('danger', 'Something went wrong');
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
@endsection
|
||||
@@ -0,0 +1,230 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="aiz-titlebar text-left mt-2 mb-3">
|
||||
<h5 class="mb-0 h5">{{ translate('Add New Digital Product') }}</h5>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-lg-10 mx-auto">
|
||||
<form class="form form-horizontal mar-top" action="{{ route('digitalproducts.store') }}" method="POST"
|
||||
enctype="multipart/form-data" id="choice_form">
|
||||
@csrf
|
||||
<input type="hidden" name="added_by" value="admin">
|
||||
<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-2 col-from-label">{{ translate('Product Name') }}</label>
|
||||
<div class="col-lg-8">
|
||||
<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-2 col-from-label">{{ translate('Category') }}</label>
|
||||
<div class="col-lg-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">
|
||||
<label class="col-lg-2 col-from-label">{{ translate('Product File') }}</label>
|
||||
<div class="col-lg-8">
|
||||
<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-2 col-from-label">{{ translate('Tags') }}</label>
|
||||
<div class="col-lg-8">
|
||||
<input type="text" class="form-control aiz-tag-input" name="tags[]"
|
||||
placeholder="{{ translate('Type to add a tag') }}">
|
||||
</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-md-2 col-form-label"
|
||||
for="signinSrEmail">{{ translate('Main 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-2 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" 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>
|
||||
</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-2 col-from-label">{{ translate('Meta Title') }}</label>
|
||||
<div class="col-lg-8">
|
||||
<input type="text" class="form-control" name="meta_title"
|
||||
placeholder="{{ translate('Meta Title') }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-2 col-from-label">{{ translate('Description') }}</label>
|
||||
<div class="col-lg-8">
|
||||
<textarea name="meta_description" rows="5" class="form-control"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-md-2 col-form-label"
|
||||
for="signinSrEmail">{{ translate('Meta Image') }}</label>
|
||||
<div class="col-md-8">
|
||||
<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-2 col-from-label">{{ translate('Unit price') }}</label>
|
||||
<div class="col-lg-8">
|
||||
<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-2 col-from-label">{{ translate('Purchase price') }}</label>
|
||||
<div class="col-lg-8">
|
||||
<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-2 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" value="0" step="0.01"
|
||||
placeholder="{{ translate('Tax') }}" name="tax[]" class="form-control"
|
||||
required>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<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-2 control-label"
|
||||
for="start_date">{{ translate('Discount Date Range') }}</label>
|
||||
<div class="col-lg-8">
|
||||
<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-lg-2 col-from-label">{{ translate('Discount') }}</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-2">
|
||||
<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-2 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="mb-3 text-right">
|
||||
<button type="submit" name="button"
|
||||
class="btn btn-primary">{{ translate('Save Product') }}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
284
resources/views/backend/product/digital_products/edit.blade.php
Normal file
284
resources/views/backend/product/digital_products/edit.blade.php
Normal file
@@ -0,0 +1,284 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="aiz-titlebar text-left mt-2 mb-3">
|
||||
<h5 class="mb-0 h5">{{ translate('Edit Digital Product') }}</h5>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-lg-10 mx-auto">
|
||||
<form class="form form-horizontal mar-top" action="{{ route('digitalproducts.update', $product->id) }}"
|
||||
method="POST" enctype="multipart/form-data" id="choice_form">
|
||||
<input name="_method" type="hidden" value="PATCH">
|
||||
<input type="hidden" name="id" value="{{ $product->id }}">
|
||||
<input type="hidden" name="lang" value="{{ $lang }}">
|
||||
@csrf
|
||||
<div class="card">
|
||||
<div class="card-body p-0">
|
||||
<ul class="nav nav-tabs nav-fill border-light">
|
||||
@foreach (\App\Models\Language::all() as $key => $language)
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-reset @if ($language->code == $lang) active @else bg-soft-dark border-light border-left-0 @endif py-3"
|
||||
href="{{ route('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-2 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-2 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 }}" 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">
|
||||
<label class="col-lg-2 col-from-label">{{ translate('Product File') }}</label>
|
||||
<div class="col-lg-8">
|
||||
<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-2 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') }}">
|
||||
</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-md-2 col-form-label"
|
||||
for="signinSrEmail">{{ translate('Main 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" required>
|
||||
</div>
|
||||
<div class="file-preview box sm">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-md-2 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" 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>
|
||||
</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-2 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-2 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-2 col-form-label"
|
||||
for="signinSrEmail">{{ translate('Meta Image') }}</label>
|
||||
<div class="col-md-8">
|
||||
<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-2 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 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-2 col-from-label">{{ translate('Unit price') }}</label>
|
||||
<div class="col-lg-8">
|
||||
<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-2 col-from-label">{{ translate('Purchase price') }}</label>
|
||||
<div class="col-lg-8">
|
||||
<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-2 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-md-2">
|
||||
<select class="form-control aiz-selectpicker" name="tax_type[]" required>
|
||||
<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
|
||||
|
||||
@php
|
||||
$start_date = $product->discount_start_date ? date('d-m-Y H:i:s', $product->discount_start_date) : null;
|
||||
$end_date = $product->discount_end_date ? date('d-m-Y H:i:s', $product->discount_end_date) : null;
|
||||
@endphp
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-2 col-from-label"
|
||||
for="start_date">{{ translate('Discount Date Range') }}</label>
|
||||
<div class="col-lg-8">
|
||||
<input type="text" class="form-control aiz-date-range"
|
||||
value="{{ $start_date && $end_date ? $start_date . ' to ' . $end_date : '' }}" 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-2 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-2">
|
||||
<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-2 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="mb-3 text-right">
|
||||
<button type="submit" name="button"
|
||||
class="btn btn-primary">{{ translate('Update Product') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
@endsection
|
||||
164
resources/views/backend/product/digital_products/index.blade.php
Normal file
164
resources/views/backend/product/digital_products/index.blade.php
Normal file
@@ -0,0 +1,164 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="aiz-titlebar text-left mt-2 mb-3">
|
||||
@can('add_digital_product')
|
||||
<div class="text-md-right">
|
||||
<a href="{{ route('digitalproducts.create') }}" class="btn btn-circle btn-info">
|
||||
<span>{{translate('Add New Digital Product')}}</span>
|
||||
</a>
|
||||
</div>
|
||||
@endcan
|
||||
</div>
|
||||
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header row gutters-5">
|
||||
<div class="col text-center text-md-left">
|
||||
<h5 class="mb-md-0 h6">{{ translate('Digital Products') }}</h5>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<form class="" id="sort_digital_products" action="" method="GET">
|
||||
<div class="input-group input-group-sm">
|
||||
<input type="text" class="form-control" id="search" name="search"@isset($sort_search) value="{{ $sort_search }}" @endisset placeholder="{{ translate('Type name & Enter') }}">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table aiz-table mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th data-breakpoints="lg">#</th>
|
||||
<th width="30%">{{translate('Name')}}</th>
|
||||
<th data-breakpoints="lg">{{translate('Added By')}}</th>
|
||||
<th data-breakpoints="lg">{{translate('Photo')}}</th>
|
||||
<th data-breakpoints="lg">{{translate('Base Price')}}</th>
|
||||
<th data-breakpoints="lg">{{translate('Todays Deal')}}</th>
|
||||
<th data-breakpoints="lg">{{translate('Published')}}</th>
|
||||
<th data-breakpoints="lg">{{translate('Featured')}}</th>
|
||||
<th data-breakpoints="lg">{{translate('Options')}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($products as $key => $product)
|
||||
<tr>
|
||||
<td>{{ ($key+1) + ($products->currentPage() - 1)*$products->perPage() }}</td>
|
||||
<td><a href="{{ route('product', $product->slug) }}" class="text-muted" target="_blank"><b>{{ $product->getTranslation('name') }}</b></a></td>
|
||||
<td>{{ ucfirst($product->added_by) }}</td>
|
||||
<td>
|
||||
<img src="{{ uploaded_asset($product->thumbnail_img)}}" alt="Image" class="w-50px">
|
||||
</td>
|
||||
<td>{{ number_format($product->unit_price,2) }}</td>
|
||||
<td>
|
||||
<label class="aiz-switch aiz-switch-success mb-0">
|
||||
<input onchange="update_todays_deal(this)" value="{{ $product->id }}" type="checkbox" <?php if($product->todays_deal == 1) echo "checked";?> >
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
</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">
|
||||
@can('add_digital_product')
|
||||
<a class="btn btn-soft-primary btn-icon btn-circle btn-sm" href="{{route('digitalproducts.edit', ['id'=>$product->id, 'lang'=>env('DEFAULT_LANGUAGE')] )}}" title="{{ translate('Edit') }}">
|
||||
<i class="las la-edit"></i>
|
||||
</a>
|
||||
@endcan
|
||||
@can('add_digital_product')
|
||||
<a href="#" class="btn btn-soft-danger btn-icon btn-circle btn-sm confirm-delete" data-href="{{route('digitalproducts.destroy', $product->id)}}" title="{{ translate('Delete') }}">
|
||||
<i class="las la-trash"></i>
|
||||
</a>
|
||||
@endcan
|
||||
@can('add_digital_product')
|
||||
<a class="btn btn-soft-primary btn-icon btn-circle btn-sm" href="{{route('digitalproducts.download', encrypt($product->id))}}" title="{{ translate('Download') }}">
|
||||
<i class="las la-download"></i>
|
||||
</a>
|
||||
@endcan
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="aiz-pagination">
|
||||
{{ $products->appends(request()->input())->links() }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@endsection
|
||||
|
||||
@section('modal')
|
||||
@include('modals.delete_modal')
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
<script type="text/javascript">
|
||||
|
||||
$(document).ready(function(){
|
||||
//$('#container').removeClass('mainnav-lg').addClass('mainnav-sm');
|
||||
});
|
||||
|
||||
function update_todays_deal(el){
|
||||
if(el.checked){
|
||||
var status = 1;
|
||||
}
|
||||
else{
|
||||
var status = 0;
|
||||
}
|
||||
$.post('{{ route('products.todays_deal') }}', {_token:'{{ csrf_token() }}', id:el.value, status:status}, function(data){
|
||||
if(data == 1){
|
||||
AIZ.plugins.notify('success', '{{ translate('Todays Deal updated successfully') }}');
|
||||
}
|
||||
else{
|
||||
AIZ.plugins.notify('danger', '{{ translate('Something went wrong') }}');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function update_published(el){
|
||||
if(el.checked){
|
||||
var status = 1;
|
||||
}
|
||||
else{
|
||||
var status = 0;
|
||||
}
|
||||
$.post('{{ route('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{
|
||||
AIZ.plugins.notify('danger', '{{ translate('Something went wrong') }}');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function update_featured(el){
|
||||
if(el.checked){
|
||||
var status = 1;
|
||||
}
|
||||
else{
|
||||
var status = 0;
|
||||
}
|
||||
$.post('{{ route('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') }}');
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
@endsection
|
||||
789
resources/views/backend/product/products/create.blade.php
Normal file
789
resources/views/backend/product/products/create.blade.php
Normal file
@@ -0,0 +1,789 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
@php
|
||||
CoreComponentRepository::instantiateShopRepository();
|
||||
CoreComponentRepository::initializeCache();
|
||||
@endphp
|
||||
|
||||
<div class="aiz-titlebar text-left mt-2 mb-3">
|
||||
<h5 class="mb-0 h6">{{translate('Add New Product')}}</h5>
|
||||
</div>
|
||||
<div class="">
|
||||
<!-- 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="form form-horizontal mar-top" action="{{route('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="admin">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('Product Information')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-from-label">{{translate('Product Name')}} <span class="text-danger">*</span></label>
|
||||
<div class="col-md-8">
|
||||
<input type="text" class="form-control" name="name" placeholder="{{ translate('Product Name') }}" onchange="update_sku()" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row" id="category">
|
||||
<label class="col-md-3 col-from-label">{{translate('Category')}} <span class="text-danger">*</span></label>
|
||||
<div class="col-md-8">
|
||||
<select class="form-control aiz-selectpicker" name="category_id" id="category_id" data-live-search="true" required>
|
||||
@foreach ($categories as $category)
|
||||
<option value="{{ $category->id }}">{{ $category->getTranslation('name') }}</option>
|
||||
@foreach ($category->childrenCategories as $childCategory)
|
||||
@include('categories.child_category', ['child_category' => $childCategory])
|
||||
@endforeach
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row" id="brand">
|
||||
<label class="col-md-3 col-from-label">{{translate('Brand')}}</label>
|
||||
<div class="col-md-8">
|
||||
<select class="form-control aiz-selectpicker" name="brand_id" id="brand_id" data-live-search="true">
|
||||
<option value="">{{ translate('Select Brand') }}</option>
|
||||
@foreach (\App\Models\Brand::all() as $brand)
|
||||
<option value="{{ $brand->id }}">{{ $brand->getTranslation('name') }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-from-label">{{translate('Unit')}}</label>
|
||||
<div class="col-md-8">
|
||||
<input type="text" class="form-control" name="unit" placeholder="{{ translate('Unit (e.g. KG, Pc etc)') }}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-from-label">{{translate('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')}} <span class="text-danger">*</span></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')}} <span class="text-danger">*</span></label>
|
||||
<div class="col-md-8">
|
||||
<input type="text" class="form-control aiz-tag-input" name="tags[]" placeholder="{{ translate('Type and hit enter to add a tag') }}">
|
||||
<small class="text-muted">{{translate('This is used for search. Input those words by which cutomer can find this product.')}}</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@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')}} <small>(600x600)</small></label>
|
||||
<div class="col-md-8">
|
||||
<div class="input-group" data-toggle="aizuploader" data-type="image" data-multiple="true">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text bg-soft-secondary font-weight-medium">{{ translate('Browse')}}</div>
|
||||
</div>
|
||||
<div class="form-control file-amount">{{ translate('Choose File') }}</div>
|
||||
<input type="hidden" name="photos" class="selected-files">
|
||||
</div>
|
||||
<div class="file-preview box sm">
|
||||
</div>
|
||||
<small class="text-muted">{{translate('These images are visible in product details page gallery. Use 600x600 sizes images.')}}</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label" for="signinSrEmail">{{translate('Thumbnail Image')}} <small>(300x300)</small></label>
|
||||
<div class="col-md-8">
|
||||
<div class="input-group" data-toggle="aizuploader" data-type="image">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text bg-soft-secondary font-weight-medium">{{ translate('Browse')}}</div>
|
||||
</div>
|
||||
<div class="form-control file-amount">{{ translate('Choose File') }}</div>
|
||||
<input type="hidden" name="thumbnail_img" class="selected-files">
|
||||
</div>
|
||||
<div class="file-preview box sm">
|
||||
</div>
|
||||
<small class="text-muted">{{translate('This image is visible in all product box. Use 300x300 sizes image. Keep some blank space around main object of your image as we had to crop some edge in different devices to make it responsive.')}}</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('Product Videos')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-from-label">{{translate('Video Provider')}}</label>
|
||||
<div class="col-md-8">
|
||||
<select class="form-control aiz-selectpicker" name="video_provider" id="video_provider">
|
||||
<option value="youtube">{{translate('Youtube')}}</option>
|
||||
<option value="dailymotion">{{translate('Dailymotion')}}</option>
|
||||
<option value="vimeo">{{translate('Vimeo')}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-from-label">{{translate('Video Link')}}</label>
|
||||
<div class="col-md-8">
|
||||
<input type="text" class="form-control" name="video_link" placeholder="{{ translate('Video Link') }}">
|
||||
<small class="text-muted">{{translate("Use proper link without extra parameter. Don't use short share link/embeded iframe code.")}}</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('Product Variation')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="form-group row gutters-5">
|
||||
<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" data-selected-text-format="count" name="colors[]" 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 gutters-5">
|
||||
<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-selected-text-format="count" data-live-search="true" 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')}} <span class="text-danger">*</span></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-sm-3 control-label" for="start_date">{{translate('Discount Date Range')}}</label>
|
||||
<div class="col-sm-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')}} <span class="text-danger">*</span></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>
|
||||
|
||||
@if(addon_is_activated('club_point'))
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-from-label">
|
||||
{{translate('Set Point')}}
|
||||
</label>
|
||||
<div class="col-md-6">
|
||||
<input type="number" lang="en" min="0" value="0" step="1" placeholder="{{ translate('1') }}" name="earn_point" class="form-control">
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div id="show-hide-div">
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-from-label">{{translate('Quantity')}} <span class="text-danger">*</span></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('Product Shipping Cost')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
|
||||
</div>
|
||||
</div>-->
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('PDF Specification')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label" for="signinSrEmail">{{translate('PDF Specification')}}</label>
|
||||
<div class="col-md-8">
|
||||
<div class="input-group" data-toggle="aizuploader" data-type="document">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text bg-soft-secondary font-weight-medium">{{ translate('Browse')}}</div>
|
||||
</div>
|
||||
<div class="form-control file-amount">{{ translate('Choose File') }}</div>
|
||||
<input type="hidden" name="pdf" class="selected-files">
|
||||
</div>
|
||||
<div class="file-preview box sm">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('SEO Meta Tags')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-from-label">{{translate('Meta Title')}}</label>
|
||||
<div class="col-md-8">
|
||||
<input type="text" class="form-control" name="meta_title" placeholder="{{ translate('Meta Title') }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-from-label">{{translate('Description')}}</label>
|
||||
<div class="col-md-8">
|
||||
<textarea name="meta_description" rows="8" class="form-control"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label" for="signinSrEmail">{{ translate('Meta Image') }}</label>
|
||||
<div class="col-md-8">
|
||||
<div class="input-group" data-toggle="aizuploader" data-type="image">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text bg-soft-secondary font-weight-medium">{{ translate('Browse')}}</div>
|
||||
</div>
|
||||
<div class="form-control file-amount">{{ translate('Choose File') }}</div>
|
||||
<input type="hidden" name="meta_img" class="selected-files">
|
||||
</div>
|
||||
<div class="file-preview box sm">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col-lg-4">
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">
|
||||
{{translate('Shipping Configuration')}}
|
||||
</h5>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
@if (get_setting('shipping_type') == 'product_wise_shipping')
|
||||
<div class="form-group row">
|
||||
<label class="col-md-6 col-from-label">{{translate('Free Shipping')}}</label>
|
||||
<div class="col-md-6">
|
||||
<label class="aiz-switch aiz-switch-success mb-0">
|
||||
<input type="radio" name="shipping_type" value="free" checked>
|
||||
<span></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-md-6 col-from-label">{{translate('Flat Rate')}}</label>
|
||||
<div class="col-md-6">
|
||||
<label class="aiz-switch aiz-switch-success mb-0">
|
||||
<input type="radio" name="shipping_type" value="flat_rate">
|
||||
<span></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flat_rate_shipping_div" style="display: none">
|
||||
<div class="form-group row">
|
||||
<label class="col-md-6 col-from-label">{{translate('Shipping cost')}}</label>
|
||||
<div class="col-md-6">
|
||||
<input type="number" lang="en" min="0" value="0" step="0.01" placeholder="{{ translate('Shipping cost') }}" name="flat_shipping_cost" class="form-control" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-md-6 col-from-label">{{translate('Is Product Quantity Mulitiply')}}</label>
|
||||
<div class="col-md-6">
|
||||
<label class="aiz-switch aiz-switch-success mb-0">
|
||||
<input type="checkbox" name="is_quantity_multiplied" value="1">
|
||||
<span></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
@else
|
||||
<p>
|
||||
{{ translate('Product wise shipping cost is disable. Shipping cost is configured from here') }}
|
||||
<a href="{{route('shipping_configuration.index')}}" class="aiz-side-nav-link {{ areActiveRoutes(['shipping_configuration.index','shipping_configuration.edit','shipping_configuration.update'])}}">
|
||||
<span class="aiz-side-nav-text">{{translate('Shipping Configuration')}}</span>
|
||||
</a>
|
||||
</p>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('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 option is disabled. Activate this feature from here') }}
|
||||
<a href="{{route('activation.index')}}" class="aiz-side-nav-link {{ areActiveRoutes(['shipping_configuration.index','shipping_configuration.edit','shipping_configuration.update'])}}">
|
||||
<span class="aiz-side-nav-text">{{translate('Cash Payment Activation')}}</span>
|
||||
</a>
|
||||
</p>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('Featured')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<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="featured" value="1">
|
||||
<span></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('Todays Deal')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<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="todays_deal" value="1">
|
||||
<span></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('Flash Deal')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="form-group mb-3">
|
||||
<label for="name">
|
||||
{{translate('Add To Flash')}}
|
||||
</label>
|
||||
<select class="form-control aiz-selectpicker" name="flash_deal_id" id="flash_deal">
|
||||
<option value="">{{ translate('Choose Flash Title') }}</option>
|
||||
@foreach(\App\Models\FlashDeal::where("status", 1)->get() as $flash_deal)
|
||||
<option value="{{ $flash_deal->id}}">
|
||||
{{ $flash_deal->title }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="form-group mb-3">
|
||||
<label for="name">
|
||||
{{translate('Discount')}}
|
||||
</label>
|
||||
<input type="number" name="flash_discount" value="0" min="0" step="0.01" class="form-control">
|
||||
</div>
|
||||
<div class="form-group mb-3">
|
||||
<label for="name">
|
||||
{{translate('Discount Type')}}
|
||||
</label>
|
||||
<select class="form-control aiz-selectpicker" name="flash_discount_type" id="flash_discount_type">
|
||||
<option value="">{{ translate('Choose Discount Type') }}</option>
|
||||
<option value="amount">{{translate('Flat')}}</option>
|
||||
<option value="percent">{{translate('Percent')}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('Estimate Shipping Time')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="form-group mb-3">
|
||||
<label for="name">
|
||||
{{translate('Shipping Days')}}
|
||||
</label>
|
||||
<div class="input-group">
|
||||
<input type="number" class="form-control" name="est_shipping_days" min="1" step="1" placeholder="{{translate('Shipping Days')}}">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text" id="inputGroupPrepend">{{translate('Days')}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('VAT & Tax')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@foreach(\App\Models\Tax::where('tax_status', 1)->get() as $tax)
|
||||
<label for="name">
|
||||
{{$tax->name}}
|
||||
<input type="hidden" value="{{$tax->id}}" name="tax_id[]">
|
||||
</label>
|
||||
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-6">
|
||||
<input type="number" lang="en" min="0" value="0" step="0.01" placeholder="{{ translate('Tax') }}" name="tax[]" class="form-control" required>
|
||||
</div>
|
||||
<div class="form-group col-md-6">
|
||||
<select class="form-control aiz-selectpicker" name="tax_type[]">
|
||||
<option value="amount">{{translate('Flat')}}</option>
|
||||
<option value="percent">{{translate('Percent')}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="btn-toolbar float-right mb-3" role="toolbar" aria-label="Toolbar with button groups">
|
||||
<div class="btn-group mr-2" role="group" aria-label="Third group">
|
||||
<button type="submit" name="button" value="unpublish" class="btn btn-primary action-btn">{{ translate('Save & Unpublish') }}</button>
|
||||
</div>
|
||||
<div class="btn-group" role="group" aria-label="Second group">
|
||||
<button type="submit" name="button" value="publish" class="btn btn-success action-btn">{{ translate('Save & Publish') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
|
||||
<script type="text/javascript">
|
||||
$('form').bind('submit', function (e) {
|
||||
if ( $(".action-btn").attr('attempted') == 'true' ) {
|
||||
//stop submitting the form because we have already clicked submit.
|
||||
e.preventDefault();
|
||||
}
|
||||
else {
|
||||
$(".action-btn").attr("attempted", 'true');
|
||||
}
|
||||
// Disable the submit button while evaluating if the form should be submitted
|
||||
// $("button[type='submit']").prop('disabled', true);
|
||||
|
||||
// var valid = true;
|
||||
|
||||
// if (!valid) {
|
||||
// e.preventDefault();
|
||||
|
||||
////Reactivate the button if the form was not submitted
|
||||
// $("button[type='submit']").button.prop('disabled', false);
|
||||
// }
|
||||
});
|
||||
|
||||
$("[name=shipping_type]").on("change", function (){
|
||||
$(".flat_rate_shipping_div").hide();
|
||||
|
||||
if($(this).val() == 'flat_rate'){
|
||||
$(".flat_rate_shipping_div").show();
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
function add_more_customer_choice_option(i, name){
|
||||
$.ajax({
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
|
||||
},
|
||||
type:"POST",
|
||||
url:'{{ route('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('products.sku_combination') }}',
|
||||
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();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$('#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
|
||||
891
resources/views/backend/product/products/edit.blade.php
Normal file
891
resources/views/backend/product/products/edit.blade.php
Normal file
@@ -0,0 +1,891 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="aiz-titlebar text-left mt-2 mb-3">
|
||||
<h1 class="mb-0 h6">{{ translate('Edit Product') }}</h5>
|
||||
</div>
|
||||
<div class="">
|
||||
@if ($errors->any())
|
||||
<div class="alert alert-danger">
|
||||
<ul class="mb-0">
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
@endif
|
||||
<form class="form form-horizontal mar-top" action="{{route('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="id" value="{{ $product->id }}">
|
||||
<input type="hidden" name="lang" value="{{ $lang }}">
|
||||
@csrf
|
||||
<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('products.admin.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')}} <i class="las la-language text-danger" title="{{translate('Translatable')}}"></i></label>
|
||||
<div class="col-lg-8">
|
||||
<input type="text" class="form-control" name="name" placeholder="{{translate('Product Name')}}" value="{{ $product->getTranslation('name', $lang) }}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row" id="category">
|
||||
<label class="col-lg-3 col-from-label">{{translate('Category')}}</label>
|
||||
<div class="col-lg-8">
|
||||
<select class="form-control aiz-selectpicker" name="category_id" id="category_id" data-selected="{{ $product->category_id }}" data-live-search="true" required>
|
||||
@foreach ($categories as $category)
|
||||
<option value="{{ $category->id }}">{{ $category->getTranslation('name') }}</option>
|
||||
@foreach ($category->childrenCategories as $childCategory)
|
||||
@include('categories.child_category', ['child_category' => $childCategory])
|
||||
@endforeach
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row" id="brand">
|
||||
<label class="col-lg-3 col-from-label">{{translate('Brand')}}</label>
|
||||
<div class="col-lg-8">
|
||||
<select class="form-control aiz-selectpicker" name="brand_id" id="brand_id" data-live-search="true">
|
||||
<option value="">{{ translate('Select Brand') }}</option>
|
||||
@foreach (\App\Models\Brand::all() as $brand)
|
||||
<option value="{{ $brand->id }}" @if($product->brand_id == $brand->id) selected @endif>{{ $brand->getTranslation('name') }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-3 col-from-label">{{translate('Unit')}} <i class="las la-language text-danger" title="{{translate('Translatable')}}"></i> </label>
|
||||
<div class="col-lg-8">
|
||||
<input type="text" class="form-control" name="unit" placeholder="{{ translate('Unit (e.g. KG, Pc etc)') }}" value="{{$product->getTranslation('unit', $lang)}}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-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 gutters-5">
|
||||
<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 gutters-5">
|
||||
<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[]" id="choice_attributes" data-selected-text-format="count" data-live-search="true" 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="{{ optional(\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
|
||||
$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);
|
||||
@endphp
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-3 col-from-label" for="start_date">{{translate('Discount Date Range')}}</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" class="form-control aiz-date-range" @if($product->discount_start_date && $product->discount_end_date) value="{{ $start_date.' to '.$end_date }}" @endif 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>
|
||||
|
||||
@if(addon_is_activated('club_point'))
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-from-label">
|
||||
{{translate('Set Point')}}
|
||||
</label>
|
||||
<div class="col-md-6">
|
||||
<input type="number" lang="en" min="0" value="{{ $product->earn_point }}" step="0.01" placeholder="{{ translate('1') }}" name="earn_point" class="form-control">
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div id="show-hide-div">
|
||||
<div class="form-group row" id="quantity">
|
||||
<label class="col-lg-3 col-from-label">{{translate('Quantity')}}</label>
|
||||
<div class="col-lg-6">
|
||||
<input type="number" lang="en" value="{{ optional($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="{{ optional($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')}} <i class="las la-language text-danger" title="{{translate('Translatable')}}"></i></label>
|
||||
<div class="col-lg-9">
|
||||
<textarea class="aiz-text-editor" name="description">{{ $product->getTranslation('description', $lang) }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- <div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('Product Shipping Cost')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
|
||||
</div>
|
||||
</div>-->
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('PDF Specification')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label" for="signinSrEmail">{{translate('PDF Specification')}}</label>
|
||||
<div class="col-md-8">
|
||||
<div class="input-group" data-toggle="aizuploader">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text bg-soft-secondary font-weight-medium">{{ translate('Browse')}}</div>
|
||||
</div>
|
||||
<div class="form-control file-amount">{{ translate('Choose File') }}</div>
|
||||
<input type="hidden" name="pdf" value="{{ $product->pdf }}" class="selected-files">
|
||||
</div>
|
||||
<div class="file-preview box sm">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('SEO Meta Tags')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-3 col-from-label">{{translate('Meta Title')}}</label>
|
||||
<div class="col-lg-8">
|
||||
<input type="text" class="form-control" name="meta_title" value="{{ $product->meta_title }}" placeholder="{{translate('Meta Title')}}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-3 col-from-label">{{translate('Description')}}</label>
|
||||
<div class="col-lg-8">
|
||||
<textarea name="meta_description" rows="8" class="form-control">{{ $product->meta_description }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label" for="signinSrEmail">{{translate('Meta Images')}}</label>
|
||||
<div class="col-md-8">
|
||||
<div class="input-group" data-toggle="aizuploader" data-type="image" data-multiple="true">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text bg-soft-secondary font-weight-medium">{{ translate('Browse')}}</div>
|
||||
</div>
|
||||
<div class="form-control file-amount">{{ translate('Choose File') }}</div>
|
||||
<input type="hidden" name="meta_img" value="{{ $product->meta_img }}" class="selected-files">
|
||||
</div>
|
||||
<div class="file-preview box sm">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label">{{translate('Slug')}}</label>
|
||||
<div class="col-md-8">
|
||||
<input type="text" placeholder="{{translate('Slug')}}" id="slug" name="slug" value="{{ $product->slug }}" class="form-control">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-4">
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6" class="dropdown-toggle" data-toggle="collapse" data-target="#collapse_2">
|
||||
{{translate('Shipping Configuration')}}
|
||||
</h5>
|
||||
</div>
|
||||
<div class="card-body collapse show" id="collapse_2">
|
||||
@if (get_setting('shipping_type') == 'product_wise_shipping')
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-6 col-from-label">{{translate('Free Shipping')}}</label>
|
||||
<div class="col-lg-6">
|
||||
<label class="aiz-switch aiz-switch-success mb-0">
|
||||
<input type="radio" name="shipping_type" value="free" @if($product->shipping_type == 'free') checked @endif>
|
||||
<span></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-6 col-from-label">{{translate('Flat Rate')}}</label>
|
||||
<div class="col-lg-6">
|
||||
<label class="aiz-switch aiz-switch-success mb-0">
|
||||
<input type="radio" name="shipping_type" value="flat_rate" @if($product->shipping_type == 'flat_rate') checked @endif>
|
||||
<span></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flat_rate_shipping_div" style="display: none">
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-6 col-from-label">{{translate('Shipping cost')}}</label>
|
||||
<div class="col-lg-6">
|
||||
<input type="number" lang="en" min="0" value="{{ $product->shipping_cost }}" step="0.01" placeholder="{{ translate('Shipping cost') }}" name="flat_shipping_cost" class="form-control">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-md-6 col-from-label">{{translate('Is Product Quantity Mulitiply')}}</label>
|
||||
<div class="col-md-6">
|
||||
<label class="aiz-switch aiz-switch-success mb-0">
|
||||
<input type="checkbox" name="is_quantity_multiplied" value="1" @if($product->is_quantity_multiplied == 1) checked @endif>
|
||||
<span></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
@else
|
||||
<p>
|
||||
{{ translate('Product wise shipping cost is disable. Shipping cost is configured from here') }}
|
||||
<a href="{{route('shipping_configuration.index')}}" class="aiz-side-nav-link {{ areActiveRoutes(['shipping_configuration.index','shipping_configuration.edit','shipping_configuration.update'])}}">
|
||||
<span class="aiz-side-nav-text">{{translate('Shipping Configuration')}}</span>
|
||||
</a>
|
||||
</p>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('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 option is disabled. Activate this feature from here') }}
|
||||
<a href="{{route('activation.index')}}" class="aiz-side-nav-link {{ areActiveRoutes(['shipping_configuration.index','shipping_configuration.edit','shipping_configuration.update'])}}">
|
||||
<span class="aiz-side-nav-text">{{translate('Cash Payment Activation')}}</span>
|
||||
</a>
|
||||
</p>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('Featured')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<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="featured" value="1" @if($product->featured == 1) checked @endif>
|
||||
<span></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('Todays Deal')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<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="todays_deal" value="1" @if($product->todays_deal == 1) checked @endif>
|
||||
<span></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('Flash Deal')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="form-group mb-3">
|
||||
<label for="name">
|
||||
{{translate('Add To Flash')}}
|
||||
</label>
|
||||
<select class="form-control aiz-selectpicker" name="flash_deal_id" id="video_provider">
|
||||
<option value="">{{ translate('Choose Flash Title') }}</option>
|
||||
@foreach(\App\Models\FlashDeal::where("status", 1)->get() as $flash_deal)
|
||||
<option value="{{ $flash_deal->id }}" @if($product->flash_deal_product && $product->flash_deal_product->flash_deal_id == $flash_deal->id) selected @endif>
|
||||
{{ $flash_deal->title }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="form-group mb-3">
|
||||
<label for="name">
|
||||
{{translate('Discount')}}
|
||||
</label>
|
||||
<input type="number" name="flash_discount" value="{{ $product->discount }}" min="0" step="0.01" class="form-control">
|
||||
</div>
|
||||
<div class="form-group mb-3">
|
||||
<label for="name">
|
||||
{{translate('Discount Type')}}
|
||||
</label>
|
||||
<select class="form-control aiz-selectpicker" name="flash_discount_type" id="">
|
||||
<option value="">{{ translate('Choose Discount Type') }}</option>
|
||||
<option value="amount" @if($product->discount_type == 'amount') selected @endif>
|
||||
{{translate('Flat')}}
|
||||
</option>
|
||||
<option value="percent" @if($product->discount_type == 'percent') selected @endif>
|
||||
{{translate('Percent')}}
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('Estimate Shipping Time')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="form-group mb-3">
|
||||
<label for="name">
|
||||
{{translate('Shipping Days')}}
|
||||
</label>
|
||||
<div class="input-group">
|
||||
<input type="number" class="form-control" name="est_shipping_days" value="{{ $product->est_shipping_days }}" min="1" step="1" placeholder="{{translate('Shipping Days')}}">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text" id="inputGroupPrepend">{{translate('Days')}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('VAT & Tax')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@foreach(\App\Models\Tax::where('tax_status', 1)->get() as $tax)
|
||||
<label for="name">
|
||||
{{$tax->name}}
|
||||
<input type="hidden" value="{{$tax->id}}" name="tax_id[]">
|
||||
</label>
|
||||
|
||||
@php
|
||||
$tax_amount = 0;
|
||||
$tax_type = '';
|
||||
foreach($tax->product_taxes as $row) {
|
||||
if($product->id == $row->product_id) {
|
||||
$tax_amount = $row->tax;
|
||||
$tax_type = $row->tax_type;
|
||||
}
|
||||
}
|
||||
@endphp
|
||||
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-6">
|
||||
<input type="number" lang="en" min="0" value="{{ $tax_amount }}" step="0.01" placeholder="{{ translate('Tax') }}" name="tax[]" class="form-control" required>
|
||||
</div>
|
||||
<div class="form-group col-md-6">
|
||||
<select class="form-control aiz-selectpicker" name="tax_type[]">
|
||||
<option value="amount" @if($tax_type == 'amount') selected @endif>
|
||||
{{translate('Flat')}}
|
||||
</option>
|
||||
<option value="percent" @if($tax_type == 'percent') selected @endif>
|
||||
{{translate('Percent')}}
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="mb-3 text-right">
|
||||
<button type="submit" name="button" class="btn btn-info">{{ translate('Update Product') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function (){
|
||||
show_hide_shipping_div();
|
||||
});
|
||||
|
||||
$("[name=shipping_type]").on("change", function (){
|
||||
show_hide_shipping_div();
|
||||
});
|
||||
|
||||
function show_hide_shipping_div() {
|
||||
var shipping_val = $("[name=shipping_type]:checked").val();
|
||||
|
||||
$(".flat_rate_shipping_div").hide();
|
||||
|
||||
if(shipping_val == 'flat_rate'){
|
||||
$(".flat_rate_shipping_div").show();
|
||||
}
|
||||
}
|
||||
|
||||
function add_more_customer_choice_option(i, name){
|
||||
$.ajax({
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
|
||||
},
|
||||
type:"POST",
|
||||
url:'{{ route('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('products.sku_combination_edit') }}',
|
||||
data:$('#choice_form').serialize(),
|
||||
success: function(data){
|
||||
$('#sku_combination').html(data);
|
||||
setTimeout(() => {
|
||||
AIZ.uploader.previewGenerate();
|
||||
}, "2000");
|
||||
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
|
||||
360
resources/views/backend/product/products/index.blade.php
Normal file
360
resources/views/backend/product/products/index.blade.php
Normal file
@@ -0,0 +1,360 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
@php
|
||||
CoreComponentRepository::instantiateShopRepository();
|
||||
CoreComponentRepository::initializeCache();
|
||||
@endphp
|
||||
|
||||
<div class="aiz-titlebar text-left mt-2 mb-3">
|
||||
<div class="row align-items-center">
|
||||
<div class="col-auto">
|
||||
<h1 class="h3">{{translate('All products')}}</h1>
|
||||
</div>
|
||||
@if($type != 'Seller' && auth()->user()->can('add_new_product'))
|
||||
<div class="col text-right">
|
||||
<a href="{{ route('products.create') }}" class="btn btn-circle btn-info">
|
||||
<span>{{translate('Add New Product')}}</span>
|
||||
</a>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
|
||||
<div class="card">
|
||||
<form class="" id="sort_products" action="" method="GET">
|
||||
<div class="card-header row gutters-5">
|
||||
<div class="col">
|
||||
<h5 class="mb-md-0 h6">{{ translate('All Product') }}</h5>
|
||||
</div>
|
||||
|
||||
@can('product_delete')
|
||||
<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>
|
||||
@endcan
|
||||
|
||||
@if($type == 'Seller')
|
||||
<div class="col-md-2 ml-auto">
|
||||
<select class="form-control form-control-sm aiz-selectpicker mb-2 mb-md-0" id="user_id" name="user_id" onchange="sort_products()">
|
||||
<option value="">{{ translate('All Sellers') }}</option>
|
||||
@foreach (App\Models\User::where('user_type', '=', 'seller')->get() as $key => $seller)
|
||||
<option value="{{ $seller->id }}" @if ($seller->id == $seller_id) selected @endif>
|
||||
{{ $seller->shop->name }} ({{ $seller->name }})
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
@endif
|
||||
@if($type == 'All')
|
||||
<div class="col-md-2 ml-auto">
|
||||
<select class="form-control form-control-sm aiz-selectpicker mb-2 mb-md-0" id="user_id" name="user_id" onchange="sort_products()">
|
||||
<option value="">{{ translate('All Sellers') }}</option>
|
||||
@foreach (App\Models\User::where('user_type', '=', 'admin')->orWhere('user_type', '=', 'seller')->get() as $key => $seller)
|
||||
<option value="{{ $seller->id }}" @if ($seller->id == $seller_id) selected @endif>{{ $seller->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
@endif
|
||||
<div class="col-md-2 ml-auto">
|
||||
<select class="form-control form-control-sm aiz-selectpicker mb-2 mb-md-0" name="type" id="type" onchange="sort_products()">
|
||||
<option value="">{{ translate('Sort By') }}</option>
|
||||
<option value="rating,desc" @isset($col_name , $query) @if($col_name == 'rating' && $query == 'desc') selected @endif @endisset>{{translate('Rating (High > Low)')}}</option>
|
||||
<option value="rating,asc" @isset($col_name , $query) @if($col_name == 'rating' && $query == 'asc') selected @endif @endisset>{{translate('Rating (Low > High)')}}</option>
|
||||
<option value="num_of_sale,desc"@isset($col_name , $query) @if($col_name == 'num_of_sale' && $query == 'desc') selected @endif @endisset>{{translate('Num of Sale (High > Low)')}}</option>
|
||||
<option value="num_of_sale,asc"@isset($col_name , $query) @if($col_name == 'num_of_sale' && $query == 'asc') selected @endif @endisset>{{translate('Num of Sale (Low > High)')}}</option>
|
||||
<option value="unit_price,desc"@isset($col_name , $query) @if($col_name == 'unit_price' && $query == 'desc') selected @endif @endisset>{{translate('Base Price (High > Low)')}}</option>
|
||||
<option value="unit_price,asc"@isset($col_name , $query) @if($col_name == 'unit_price' && $query == 'asc') selected @endif @endisset>{{translate('Base Price (Low > High)')}}</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<div class="form-group mb-0">
|
||||
<input type="text" class="form-control form-control-sm" id="search" name="search"@isset($sort_search) value="{{ $sort_search }}" @endisset placeholder="{{ translate('Type & Enter') }}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<table class="table aiz-table mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
@if(auth()->user()->can('product_delete'))
|
||||
<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>
|
||||
@else
|
||||
<th data-breakpoints="lg">#</th>
|
||||
@endif
|
||||
<th>{{translate('Name')}}</th>
|
||||
@if($type == 'Seller' || $type == 'All')
|
||||
<th data-breakpoints="lg">{{translate('Added By')}}</th>
|
||||
@endif
|
||||
<th data-breakpoints="sm">{{translate('Info')}}</th>
|
||||
<th data-breakpoints="md">{{translate('Total Stock')}}</th>
|
||||
<th data-breakpoints="lg">{{translate('Todays Deal')}}</th>
|
||||
<th data-breakpoints="lg">{{translate('Published')}}</th>
|
||||
@if(get_setting('product_approve_by_admin') == 1 && $type == 'Seller')
|
||||
<th data-breakpoints="lg">{{translate('Approved')}}</th>
|
||||
@endif
|
||||
<th data-breakpoints="lg">{{translate('Featured')}}</th>
|
||||
<th data-breakpoints="sm" class="text-right">{{translate('Options')}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($products as $key => $product)
|
||||
<tr>
|
||||
@if(auth()->user()->can('product_delete'))
|
||||
<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>
|
||||
@else
|
||||
<td>{{ ($key+1) + ($products->currentPage() - 1)*$products->perPage() }}</td>
|
||||
@endif
|
||||
<td>
|
||||
<div class="row gutters-5 w-200px w-md-300px mw-100">
|
||||
<div class="col-auto">
|
||||
<img src="{{ uploaded_asset($product->thumbnail_img)}}" alt="Image" class="size-50px img-fit">
|
||||
</div>
|
||||
<div class="col">
|
||||
<span class="text-muted text-truncate-2">{{ $product->getTranslation('name') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
@if($type == 'Seller' || $type == 'All')
|
||||
<td>{{ optional($product->user)->name }}</td>
|
||||
@endif
|
||||
<td>
|
||||
<strong>{{translate('Num of Sale')}}:</strong> {{ $product->num_of_sale }} {{translate('times')}} </br>
|
||||
<strong>{{translate('Base Price')}}:</strong> {{ single_price($product->unit_price) }} </br>
|
||||
<strong>{{translate('Rating')}}:</strong> {{ $product->rating }} </br>
|
||||
</td>
|
||||
<td>
|
||||
@php
|
||||
$qty = 0;
|
||||
if($product->variant_product) {
|
||||
foreach ($product->stocks as $key => $stock) {
|
||||
$qty += $stock->qty;
|
||||
echo $stock->variant.' - '.$stock->qty.'<br>';
|
||||
}
|
||||
}
|
||||
else {
|
||||
//$qty = $product->current_stock;
|
||||
$qty = optional($product->stocks->first())->qty;
|
||||
echo $qty;
|
||||
}
|
||||
@endphp
|
||||
@if($qty <= $product->low_stock_quantity)
|
||||
<span class="badge badge-inline badge-danger">Low</span>
|
||||
@endif
|
||||
</td>
|
||||
<td>
|
||||
<label class="aiz-switch aiz-switch-success mb-0">
|
||||
<input onchange="update_todays_deal(this)" value="{{ $product->id }}" type="checkbox" <?php if ($product->todays_deal == 1) echo "checked"; ?> >
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
</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>
|
||||
@if(get_setting('product_approve_by_admin') == 1 && $type == 'Seller')
|
||||
<td>
|
||||
<label class="aiz-switch aiz-switch-success mb-0">
|
||||
<input onchange="update_approved(this)" value="{{ $product->id }}" type="checkbox" <?php if ($product->approved == 1) echo "checked"; ?> >
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
</td>
|
||||
@endif
|
||||
<td>
|
||||
<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 class="btn btn-soft-success btn-icon btn-circle btn-sm" href="{{ route('product', $product->slug) }}" target="_blank" title="{{ translate('View') }}">
|
||||
<i class="las la-eye"></i>
|
||||
</a>
|
||||
@can('product_edit')
|
||||
@if ($type == 'Seller')
|
||||
<a class="btn btn-soft-primary btn-icon btn-circle btn-sm" href="{{route('products.seller.edit', ['id'=>$product->id, 'lang'=>env('DEFAULT_LANGUAGE')] )}}" title="{{ translate('Edit') }}">
|
||||
<i class="las la-edit"></i>
|
||||
</a>
|
||||
@else
|
||||
<a class="btn btn-soft-primary btn-icon btn-circle btn-sm" href="{{route('products.admin.edit', ['id'=>$product->id, 'lang'=>env('DEFAULT_LANGUAGE')] )}}" title="{{ translate('Edit') }}">
|
||||
<i class="las la-edit"></i>
|
||||
</a>
|
||||
@endif
|
||||
@endcan
|
||||
@can('product_duplicate')
|
||||
<a class="btn btn-soft-warning btn-icon btn-circle btn-sm" href="{{route('products.duplicate', ['id'=>$product->id, 'type'=>$type] )}}" title="{{ translate('Duplicate') }}">
|
||||
<i class="las la-copy"></i>
|
||||
</a>
|
||||
@endcan
|
||||
@can('product_delete')
|
||||
<a href="#" class="btn btn-soft-danger btn-icon btn-circle btn-sm confirm-delete" data-href="{{route('products.destroy', $product->id)}}" title="{{ translate('Delete') }}">
|
||||
<i class="las la-trash"></i>
|
||||
</a>
|
||||
@endcan
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="aiz-pagination">
|
||||
{{ $products->appends(request()->input())->links() }}
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
@section('modal')
|
||||
<!-- 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;
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
$(document).ready(function(){
|
||||
//$('#container').removeClass('mainnav-lg').addClass('mainnav-sm');
|
||||
});
|
||||
|
||||
function update_todays_deal(el){
|
||||
if(el.checked){
|
||||
var status = 1;
|
||||
}
|
||||
else{
|
||||
var status = 0;
|
||||
}
|
||||
$.post('{{ route('products.todays_deal') }}', {_token:'{{ csrf_token() }}', id:el.value, status:status}, function(data){
|
||||
if(data == 1){
|
||||
AIZ.plugins.notify('success', '{{ translate('Todays Deal updated successfully') }}');
|
||||
}
|
||||
else{
|
||||
AIZ.plugins.notify('danger', '{{ translate('Something went wrong') }}');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function update_published(el){
|
||||
if(el.checked){
|
||||
var status = 1;
|
||||
}
|
||||
else{
|
||||
var status = 0;
|
||||
}
|
||||
$.post('{{ route('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{
|
||||
AIZ.plugins.notify('danger', '{{ translate('Something went wrong') }}');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function update_approved(el){
|
||||
if(el.checked){
|
||||
var approved = 1;
|
||||
}
|
||||
else{
|
||||
var approved = 0;
|
||||
}
|
||||
$.post('{{ route('products.approved') }}', {
|
||||
_token : '{{ csrf_token() }}',
|
||||
id : el.value,
|
||||
approved : approved
|
||||
}, function(data){
|
||||
if(data == 1){
|
||||
AIZ.plugins.notify('success', '{{ translate('Product approval update successfully') }}');
|
||||
}
|
||||
else{
|
||||
AIZ.plugins.notify('danger', '{{ translate('Something went wrong') }}');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function update_featured(el){
|
||||
if(el.checked){
|
||||
var status = 1;
|
||||
}
|
||||
else{
|
||||
var status = 0;
|
||||
}
|
||||
$.post('{{ route('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') }}');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function sort_products(el){
|
||||
$('#sort_products').submit();
|
||||
}
|
||||
|
||||
function bulk_delete() {
|
||||
var data = new FormData($('#sort_products')[0]);
|
||||
$.ajax({
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
|
||||
},
|
||||
url: "{{route('bulk-product-delete')}}",
|
||||
type: 'POST',
|
||||
data: data,
|
||||
cache: false,
|
||||
contentType: false,
|
||||
processData: false,
|
||||
success: function (response) {
|
||||
if(response == 1) {
|
||||
location.reload();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
</script>
|
||||
@endsection
|
||||
@@ -0,0 +1,78 @@
|
||||
@if(count($combinations) > 0)
|
||||
<table class="table table-bordered aiz-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<td class="text-center">
|
||||
{{translate('Variant')}}
|
||||
</td>
|
||||
<td class="text-center">
|
||||
{{translate('Variant Price')}}
|
||||
</td>
|
||||
<td class="text-center" data-breakpoints="lg">
|
||||
{{translate('SKU')}}
|
||||
</td>
|
||||
<td class="text-center" data-breakpoints="lg">
|
||||
{{translate('Quantity')}}
|
||||
</td>
|
||||
<td class="text-center" data-breakpoints="lg">
|
||||
{{translate('Photo')}}
|
||||
</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($combinations as $key => $combination)
|
||||
@php
|
||||
$sku = '';
|
||||
foreach (explode(' ', $product_name) as $key => $value) {
|
||||
$sku .= substr($value, 0, 1);
|
||||
}
|
||||
|
||||
$str = '';
|
||||
foreach ($combination as $key => $item){
|
||||
if($key > 0 ){
|
||||
$str .= '-'.str_replace(' ', '', $item);
|
||||
$sku .='-'.str_replace(' ', '', $item);
|
||||
}
|
||||
else{
|
||||
if($colors_active == 1){
|
||||
$color_name = \App\Models\Color::where('code', $item)->first()->name;
|
||||
$str .= $color_name;
|
||||
$sku .='-'.$color_name;
|
||||
}
|
||||
else{
|
||||
$str .= str_replace(' ', '', $item);
|
||||
$sku .='-'.str_replace(' ', '', $item);
|
||||
}
|
||||
}
|
||||
}
|
||||
@endphp
|
||||
@if(strlen($str) > 0)
|
||||
<tr class="variant">
|
||||
<td>
|
||||
<label for="" class="control-label">{{ $str }}</label>
|
||||
</td>
|
||||
<td>
|
||||
<input type="number" lang="en" name="price_{{ $str }}" value="{{ $unit_price }}" min="0" step="0.01" class="form-control" required>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="sku_{{ $str }}" value="" class="form-control">
|
||||
</td>
|
||||
<td>
|
||||
<input type="number" lang="en" name="qty_{{ $str }}" value="10" min="0" step="1" class="form-control" required>
|
||||
</td>
|
||||
<td>
|
||||
<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 text-truncate">{{ translate('Choose File') }}</div>
|
||||
<input type="hidden" name="img_{{ $str }}" class="selected-files">
|
||||
</div>
|
||||
<div class="file-preview box sm"></div>
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
@endif
|
||||
@@ -0,0 +1,118 @@
|
||||
@if(count($combinations) > 0)
|
||||
<table class="table table-bordered aiz-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<td class="text-center">
|
||||
{{translate('Variant')}}
|
||||
</td>
|
||||
<td class="text-center">
|
||||
{{translate('Variant Price')}}
|
||||
</td>
|
||||
<td class="text-center" data-breakpoints="lg">
|
||||
{{translate('SKU')}}
|
||||
</td>
|
||||
<td class="text-center" data-breakpoints="lg">
|
||||
{{translate('Quantity')}}
|
||||
</td>
|
||||
<td class="text-center" data-breakpoints="lg">
|
||||
{{translate('Photo')}}
|
||||
</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
@foreach ($combinations as $key => $combination)
|
||||
@php
|
||||
$variation_available = false;
|
||||
$sku = '';
|
||||
foreach (explode(' ', $product_name) as $key => $value) {
|
||||
$sku .= substr($value, 0, 1);
|
||||
}
|
||||
|
||||
$str = '';
|
||||
foreach ($combination as $key => $item){
|
||||
if($key > 0 ) {
|
||||
$str .= '-'.str_replace(' ', '', $item);
|
||||
$sku .='-'.str_replace(' ', '', $item);
|
||||
}
|
||||
else {
|
||||
if($colors_active == 1) {
|
||||
$color_name = \App\Models\Color::where('code', $item)->first()->name;
|
||||
$str .= $color_name;
|
||||
$sku .='-'.$color_name;
|
||||
}
|
||||
else {
|
||||
$str .= str_replace(' ', '', $item);
|
||||
$sku .='-'.str_replace(' ', '', $item);
|
||||
}
|
||||
}
|
||||
$stock = $product->stocks->where('variant', $str)->first();
|
||||
// if($stock != null) {
|
||||
// $variation_available = true;
|
||||
// }
|
||||
}
|
||||
@endphp
|
||||
@if(strlen($str) > 0)
|
||||
<tr class="variant">
|
||||
<td>
|
||||
<label for="" class="control-label">{{ $str }}</label>
|
||||
</td>
|
||||
<td>
|
||||
<input type="number" lang="en" name="price_{{ $str }}" value="@php
|
||||
if ($product->unit_price == $unit_price) {
|
||||
if($stock != null){
|
||||
echo $stock->price;
|
||||
}
|
||||
else {
|
||||
echo $unit_price;
|
||||
}
|
||||
}
|
||||
else{
|
||||
echo $unit_price;
|
||||
}
|
||||
@endphp" min="0" step="0.01" class="form-control" required>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="sku_{{ $str }}" value="@php
|
||||
if($stock != null) {
|
||||
echo $stock->sku;
|
||||
}
|
||||
else {
|
||||
echo $str;
|
||||
}
|
||||
@endphp" class="form-control">
|
||||
</td>
|
||||
<td>
|
||||
<input type="number" lang="en" name="qty_{{ $str }}" value="@php
|
||||
if($stock != null){
|
||||
echo $stock->qty;
|
||||
}
|
||||
else{
|
||||
echo '10';
|
||||
}
|
||||
@endphp" min="0" step="1" class="form-control" required>
|
||||
</td>
|
||||
<td>
|
||||
<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 text-truncate">{{ translate('Choose File') }}</div>
|
||||
<input type="hidden" name="img_{{ $str }}" class="selected-files" value="@php
|
||||
if($stock != null){
|
||||
echo $stock->image;
|
||||
}
|
||||
else{
|
||||
echo null;
|
||||
}
|
||||
@endphp">
|
||||
</div>
|
||||
<div class="file-preview box sm"></div>
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
@endforeach
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
@endif
|
||||
105
resources/views/backend/product/reviews/index.blade.php
Normal file
105
resources/views/backend/product/reviews/index.blade.php
Normal file
@@ -0,0 +1,105 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="aiz-titlebar text-left mt-2 mb-3">
|
||||
<div class="align-items-center">
|
||||
<h1 class="h3">{{translate('Product Reviews')}}</h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="row flex-grow-1">
|
||||
<div class="col">
|
||||
<h5 class="mb-0 h6">{{translate('Product Reviews')}}</h5>
|
||||
|
||||
</div>
|
||||
<div class="col-md-6 col-xl-4 ml-auto mr-0">
|
||||
<form class="" id="sort_by_rating" action="{{ route('reviews.index') }}" method="GET">
|
||||
<div class="" style="min-width: 200px;">
|
||||
<select class="form-control aiz-selectpicker" name="rating" id="rating" onchange="filter_by_rating()">
|
||||
<option value="">{{translate('Filter by Rating')}}</option>
|
||||
<option value="rating,desc">{{translate('Rating (High > Low)')}}</option>
|
||||
<option value="rating,asc">{{translate('Rating (Low > High)')}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table aiz-table mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th data-breakpoints="lg">#</th>
|
||||
<th>{{translate('Product')}}</th>
|
||||
<th data-breakpoints="lg">{{translate('Product Owner')}}</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 => $review)
|
||||
@if ($review->product != null && $review->user != null)
|
||||
<tr>
|
||||
<td>{{ ($key+1) + ($reviews->currentPage() - 1)*$reviews->perPage() }}</td>
|
||||
<td>
|
||||
<a href="{{ route('product', $review->product->slug) }}" target="_blank" class="text-reset text-truncate-2">{{ $review->product->getTranslation('name') }}</a>
|
||||
</td>
|
||||
<td>{{ $review->product->added_by }}</td>
|
||||
<td>{{ $review->user->name }} ({{ $review->user->email }})</td>
|
||||
<td>{{ $review->rating }}</td>
|
||||
<td>{{ $review->comment }}</td>
|
||||
<td>
|
||||
<label class="aiz-switch aiz-switch-success mb-0">
|
||||
<input
|
||||
@can('publish_product_review') onchange="update_published(this)" @endcan
|
||||
value="{{ $review->id }}" type="checkbox"
|
||||
@if($review->status == 1) checked @endif
|
||||
@cannot('publish_product_review') disabled @endcan
|
||||
>
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="aiz-pagination">
|
||||
{{ $reviews->appends(request()->input())->links() }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
<script type="text/javascript">
|
||||
function update_published(el){
|
||||
if(el.checked){
|
||||
var status = 1;
|
||||
}
|
||||
else{
|
||||
var status = 0;
|
||||
}
|
||||
$.post('{{ route('reviews.published') }}', {_token:'{{ csrf_token() }}', id:el.value, status:status}, function(data){
|
||||
if(data == 1){
|
||||
AIZ.plugins.notify('success', '{{ translate('Published reviews updated successfully') }}');
|
||||
}
|
||||
else{
|
||||
AIZ.plugins.notify('danger', '{{ translate('Something went wrong') }}');
|
||||
}
|
||||
});
|
||||
}
|
||||
function filter_by_rating(el){
|
||||
var rating = $('#rating').val();
|
||||
if (rating != '') {
|
||||
$('#sort_by_rating').submit();
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@endsection
|
||||
@@ -0,0 +1,19 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="aiz-titlebar text-left mt-2 mb-3">
|
||||
<div class=" align-items-center">
|
||||
<h1 class="h3">{{translate('Commission History report')}}</h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-10 mx-auto">
|
||||
<div class="card">
|
||||
@include('backend.reports.partials.commission_history_section')
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
@@ -0,0 +1,58 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="aiz-titlebar text-left mt-2 mb-3">
|
||||
<div class=" align-items-center">
|
||||
<h1 class="h3">{{translate('Inhouse Product sale report')}}</h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-8 mx-auto">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<form action="{{ route('in_house_sale_report.index') }}" method="GET">
|
||||
<div class="form-group row">
|
||||
<label class="col-md-3 col-form-label">{{translate('Sort by Category')}} :</label>
|
||||
<div class="col-md-5">
|
||||
<select id="demo-ease" class="aiz-selectpicker" name="category_id" required>
|
||||
<option value="">{{ translate('Choose Category') }}</option>
|
||||
@foreach (\App\Models\Category::all() as $key => $category)
|
||||
<option value="{{ $category->id }}" @if($category->id == $sort_by) selected @endif >{{ $category->getTranslation('name') }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<button class="btn btn-primary" type="submit">{{ translate('Filter') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<table class="table table-bordered aiz-table mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>{{ translate('Product Name') }}</th>
|
||||
<th>{{ translate('Num of Sale') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($products as $key => $product)
|
||||
<tr>
|
||||
<td>{{ ($key+1) + ($products->currentPage() - 1)*$products->perPage() }}</td>
|
||||
<td>{{ $product->getTranslation('name') }}</td>
|
||||
<td>{{ $product->num_of_sale }}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="aiz-pagination mt-4">
|
||||
{{ $products->appends(request()->input())->links() }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
@@ -0,0 +1,65 @@
|
||||
<form action="{{ route('commission-log.index') }}" method="GET">
|
||||
<div class="card-header row gutters-5">
|
||||
<div class="col text-center text-md-left">
|
||||
<h5 class="mb-md-0 h6">{{ translate('Commission History') }}</h5>
|
||||
</div>
|
||||
@if(Auth::user()->user_type != 'seller')
|
||||
<div class="col-md-3 ml-auto">
|
||||
<select id="demo-ease" class="form-control form-control-sm aiz-selectpicker mb-2 mb-md-0" name="seller_id">
|
||||
<option value="">{{ translate('Choose Seller') }}</option>
|
||||
@foreach (App\Models\User::where('user_type', '=', 'seller')->get() as $key => $seller)
|
||||
<option value="{{ $seller->id }}" @if($seller->id == $seller_id) selected @endif >
|
||||
{{ $seller->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
@endif
|
||||
<div class="col-md-3">
|
||||
<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') }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<button class="btn btn-md btn-primary" type="submit">
|
||||
{{ translate('Filter') }}
|
||||
</button>
|
||||
</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('Seller 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->appends(request()->input())->links() }}
|
||||
</div>
|
||||
</div>
|
||||
74
resources/views/backend/reports/seller_sale_report.blade.php
Normal file
74
resources/views/backend/reports/seller_sale_report.blade.php
Normal file
@@ -0,0 +1,74 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="aiz-titlebar text-left mt-2 mb-3">
|
||||
<div class=" align-items-center">
|
||||
<h1 class="h3">{{translate('Seller Based Selling Report')}}</h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-8 mx-auto">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<form action="{{ route('seller_sale_report.index') }}" method="GET">
|
||||
<div class="form-group row offset-lg-2">
|
||||
<label class="col-md-3 col-form-label">{{translate('Sort by verificarion status')}} :</label>
|
||||
<div class="col-md-5">
|
||||
<select class="from-control aiz-selectpicker" name="verification_status" required>
|
||||
<option value="">{{ translate('Choose Status') }}</option>
|
||||
<option value="1" @if($sort_by == '1') selected @endif>{{ translate('Approved') }}</option>
|
||||
<option value="0" @if($sort_by == '0') selected @endif>{{ translate('Non Approved') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<button class="btn btn-primary" type="submit">{{ translate('Filter') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<table class="table table-bordered aiz-table mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{ translate('Seller Name') }}</th>
|
||||
<th data-breakpoints="lg">{{ translate('Shop Name') }}</th>
|
||||
<th data-breakpoints="lg">{{ translate('Number of Product Sale') }}</th>
|
||||
<th>{{ translate('Order Amount') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($sellers as $key => $seller)
|
||||
@if($seller != null)
|
||||
<tr>
|
||||
<td>{{ $seller->user->name }}</td>
|
||||
@if($seller->shop != null)
|
||||
<td>{{ $seller->name }}</td>
|
||||
@else
|
||||
<td>--</td>
|
||||
@endif
|
||||
<td>
|
||||
@php
|
||||
$num_of_sale = 0;
|
||||
foreach ($seller->user->products as $key => $product) {
|
||||
$num_of_sale += $product->num_of_sale;
|
||||
}
|
||||
@endphp
|
||||
{{ $num_of_sale }}
|
||||
</td>
|
||||
<td>
|
||||
{{ single_price(\App\Models\OrderDetail::where('seller_id', $seller->user->id)->sum('price')) }}
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="aiz-pagination mt-4">
|
||||
{{ $sellers->appends(request()->input())->links() }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
61
resources/views/backend/reports/stock_report.blade.php
Normal file
61
resources/views/backend/reports/stock_report.blade.php
Normal file
@@ -0,0 +1,61 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="aiz-titlebar text-left mt-2 mb-3">
|
||||
<div class=" align-items-center">
|
||||
<h1 class="h3">{{translate('Product wise stock report')}}</h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-8 mx-auto">
|
||||
<div class="card">
|
||||
<!--card body-->
|
||||
<div class="card-body">
|
||||
<form action="{{ route('stock_report.index') }}" method="GET">
|
||||
<div class="form-group row offset-lg-2">
|
||||
<label class="col-md-3 col-form-label">{{translate('Sort by Category')}} :</label>
|
||||
<div class="col-md-5">
|
||||
<select id="demo-ease" class="from-control aiz-selectpicker" name="category_id" required>
|
||||
<option value="">{{ translate('Choose Category') }}</option>
|
||||
@foreach (\App\Models\Category::all() as $key => $category)
|
||||
<option value="{{ $category->id }}" @if($sort_by == $category->id) selected @endif>{{ $category->getTranslation('name') }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<button class="btn btn-primary" type="submit">{{ translate('Filter') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<table class="table table-bordered aiz-table mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{ translate('Product Name') }}</th>
|
||||
<th>{{ translate('Stock') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($products as $key => $product)
|
||||
@php
|
||||
$qty = 0;
|
||||
foreach ($product->stocks as $key => $stock) {
|
||||
$qty += $stock->qty;
|
||||
}
|
||||
@endphp
|
||||
<tr>
|
||||
<td>{{ $product->getTranslation('name') }}</td>
|
||||
<td>{{ $qty }}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="aiz-pagination mt-4">
|
||||
{{ $products->appends(request()->input())->links() }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
38
resources/views/backend/reports/user_search_report.blade.php
Normal file
38
resources/views/backend/reports/user_search_report.blade.php
Normal file
@@ -0,0 +1,38 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-8 mx-auto">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h1 class="h6">{{translate('User Search Report')}}</h1>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table table-bordered aiz-table mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>{{ translate('Search By') }}</th>
|
||||
<th>{{ translate('Number searches') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($searches as $key => $searche)
|
||||
<tr>
|
||||
<td>{{ ($key+1) + ($searches->currentPage() - 1)*$searches->perPage() }}</td>
|
||||
<td>{{ $searche->query }}</td>
|
||||
<td>{{ $searche->count }}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="aiz-pagination mt-4">
|
||||
{{ $searches->links() }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
@@ -0,0 +1,91 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="aiz-titlebar text-left mt-2 mb-3">
|
||||
<div class=" align-items-center">
|
||||
<h1 class="h3">{{translate('Wallet Transaction Report')}}</h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-10 mx-auto">
|
||||
<div class="card">
|
||||
<form action="{{ route('wallet-history.index') }}" method="GET">
|
||||
<div class="card-header row gutters-5">
|
||||
<div class="col text-center text-md-left">
|
||||
<h5 class="mb-md-0 h6">{{ translate('Wallet Transaction') }}</h5>
|
||||
</div>
|
||||
@if(Auth::user()->user_type != 'seller')
|
||||
<div class="col-md-3 ml-auto">
|
||||
<select id="demo-ease" class="form-control form-control-sm aiz-selectpicker mb-2 mb-md-0" name="user_id">
|
||||
<option value="">{{ translate('Choose User') }}</option>
|
||||
@foreach ($users_with_wallet as $key => $user)
|
||||
<option value="{{ $user->id }}" @if($user->id == $user_id) selected @endif >
|
||||
{{ $user->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
@endif
|
||||
<div class="col-md-3">
|
||||
<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') }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<button class="btn btn-md btn-primary" type="submit">
|
||||
{{ translate('Filter') }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<div class="card-body">
|
||||
|
||||
<table class="table aiz-table mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>{{ translate('Customer')}}</th>
|
||||
<th data-breakpoints="lg">{{ translate('Date') }}</th>
|
||||
<th>{{ translate('Amount')}}</th>
|
||||
<th data-breakpoints="lg">{{ translate('Payment Method')}}</th>
|
||||
<th data-breakpoints="lg" class="text-right">{{ translate('Approval')}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($wallets as $key => $wallet)
|
||||
<tr>
|
||||
<td>{{ $key+1 }}</td>
|
||||
@if ($wallet->user != null)
|
||||
<td>{{ $wallet->user->name }}</td>
|
||||
@else
|
||||
<td>{{ translate('User Not found') }}</td>
|
||||
@endif
|
||||
<td>{{ date('d-m-Y', strtotime($wallet->created_at)) }}</td>
|
||||
<td>{{ single_price($wallet->amount) }}</td>
|
||||
<td>{{ ucfirst(str_replace('_', ' ', $wallet ->payment_method)) }}</td>
|
||||
<td class="text-right">
|
||||
@if ($wallet->offline_payment)
|
||||
@if ($wallet->approval)
|
||||
<span class="badge badge-inline badge-success">{{translate('Approved')}}</span>
|
||||
@else
|
||||
<span class="badge badge-inline badge-info">{{translate('Pending')}}</span>
|
||||
@endif
|
||||
@else
|
||||
N/A
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="aiz-pagination mt-4">
|
||||
{{ $wallets->appends(request()->input())->links() }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
58
resources/views/backend/reports/wish_report.blade.php
Normal file
58
resources/views/backend/reports/wish_report.blade.php
Normal file
@@ -0,0 +1,58 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="aiz-titlebar text-left mt-2 mb-3">
|
||||
<div class=" align-items-center">
|
||||
<h1 class="h3">{{translate('Product Wish Report')}}</h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-8 mx-auto">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<form action="{{ route('wish_report.index') }}" method="GET">
|
||||
<div class="form-group row offset-lg-2">
|
||||
<label class="col-md-3 col-form-label">{{ translate('Sort by Category') }}:</label>
|
||||
<div class="col-md-5">
|
||||
<select id="demo-ease" class="from-control aiz-selectpicker" name="category_id" required>
|
||||
<option value="">{{ translate('Choose Category') }}</option>
|
||||
@foreach (\App\Models\Category::all() as $key => $category)
|
||||
<option value="{{ $category->id }}" @if($category->id == $sort_by) selected @endif>{{ $category->getTranslation('name') }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<button class="btn btn-primary" type="submit">{{ translate('Filter') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<table class="table table-bordered aiz-table mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{ translate('Product Name') }}</th>
|
||||
<th>{{ translate('Number of Wish') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($products as $key => $product)
|
||||
@if($product->wishlists != null)
|
||||
<tr>
|
||||
<td>{{ $product->getTranslation('name') }}</td>
|
||||
<td>{{ $product->wishlists->count() }}</td>
|
||||
</tr>
|
||||
@endif
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="aiz-pagination mt-4">
|
||||
{{ $products->appends(request()->input())->links() }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
291
resources/views/backend/sales/index.blade.php
Normal file
291
resources/views/backend/sales/index.blade.php
Normal file
@@ -0,0 +1,291 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="card">
|
||||
<form class="" action="" id="sort_orders" method="GET">
|
||||
<div class="card-header row gutters-5">
|
||||
<div class="col">
|
||||
<h5 class="mb-md-0 h6">{{ translate('All Orders') }}</h5>
|
||||
</div>
|
||||
|
||||
@can('delete_order')
|
||||
<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>
|
||||
@endcan
|
||||
|
||||
<div class="col-lg-2 ml-auto">
|
||||
<select class="form-control aiz-selectpicker" name="delivery_status" id="delivery_status">
|
||||
<option value="">{{ translate('Filter by Delivery Status') }}</option>
|
||||
<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>
|
||||
</div>
|
||||
<div class="col-lg-2 ml-auto">
|
||||
<select class="form-control aiz-selectpicker" name="payment_status" id="payment_status">
|
||||
<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-lg-2">
|
||||
<div class="form-group mb-0">
|
||||
<input type="text" class="aiz-date-range form-control" value="{{ $date }}"
|
||||
name="date" placeholder="{{ translate('Filter by date') }}" data-format="DD-MM-Y"
|
||||
data-separator=" to " data-advanced-range="true" autocomplete="off">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-2">
|
||||
<div class="form-group mb-0">
|
||||
<input type="text" class="form-control" id="search"
|
||||
name="search"@isset($sort_search) value="{{ $sort_search }}" @endisset
|
||||
placeholder="{{ translate('Type Order code & hit Enter') }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<div class="form-group mb-0">
|
||||
<button type="submit" class="btn btn-primary">{{ translate('Filter') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<table class="table aiz-table mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<!--<th>#</th>-->
|
||||
@if (auth()->user()->can('delete_order'))
|
||||
<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>
|
||||
@else
|
||||
<th data-breakpoints="lg">#</th>
|
||||
@endif
|
||||
|
||||
<th>{{ translate('Order Code') }}</th>
|
||||
<th data-breakpoints="md">{{ translate('Num. of Products') }}</th>
|
||||
<th data-breakpoints="md">{{ translate('Customer') }}</th>
|
||||
<th data-breakpoints="md">{{ translate('Seller') }}</th>
|
||||
<th data-breakpoints="md">{{ translate('Amount') }}</th>
|
||||
<th data-breakpoints="md">{{ translate('Delivery Status') }}</th>
|
||||
<th data-breakpoints="md">{{ translate('Payment method') }}</th>
|
||||
<th data-breakpoints="md">{{ translate('Payment Status') }}</th>
|
||||
@if (addon_is_activated('refund_request'))
|
||||
<th>{{ translate('Refund') }}</th>
|
||||
@endif
|
||||
<th class="text-right" width="15%">{{ translate('options') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($orders as $key => $order)
|
||||
<tr>
|
||||
@if (auth()->user()->can('delete_order'))
|
||||
<td>
|
||||
<div class="form-group">
|
||||
<div class="aiz-checkbox-inline">
|
||||
<label class="aiz-checkbox">
|
||||
<input type="checkbox" class="check-one" name="id[]"
|
||||
value="{{ $order->id }}">
|
||||
<span class="aiz-square-check"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
@else
|
||||
<td>{{ $key + 1 + ($orders->currentPage() - 1) * $orders->perPage() }}</td>
|
||||
@endif
|
||||
<td>
|
||||
{{ $order->code }}
|
||||
@if ($order->viewed == 0)
|
||||
<span class="badge badge-inline badge-info">{{ translate('New') }}</span>
|
||||
@endif
|
||||
@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) }}
|
||||
</td>
|
||||
<td>
|
||||
@if ($order->user != null)
|
||||
{{ $order->user->name }}
|
||||
@else
|
||||
Guest ({{ $order->guest_id }})
|
||||
@endif
|
||||
</td>
|
||||
<td>
|
||||
@if ($order->shop)
|
||||
{{ $order->shop->name }}
|
||||
@else
|
||||
{{ translate('Inhouse Order') }}
|
||||
@endif
|
||||
</td>
|
||||
<td>
|
||||
{{ single_price($order->grand_total) }}
|
||||
</td>
|
||||
<td>
|
||||
{{ translate(ucfirst(str_replace('_', ' ', $order->delivery_status))) }}
|
||||
</td>
|
||||
<td>
|
||||
{{ translate(ucfirst(str_replace('_', ' ', $order->payment_type))) }}
|
||||
</td>
|
||||
<td>
|
||||
@if ($order->payment_status == 'paid')
|
||||
<span class="badge badge-inline badge-success">{{ translate('Paid') }}</span>
|
||||
@else
|
||||
<span class="badge badge-inline badge-danger">{{ translate('Unpaid') }}</span>
|
||||
@endif
|
||||
</td>
|
||||
@if (addon_is_activated('refund_request'))
|
||||
<td>
|
||||
@if (count($order->refund_requests) > 0)
|
||||
{{ count($order->refund_requests) }} {{ translate('Refund') }}
|
||||
@else
|
||||
{{ translate('No Refund') }}
|
||||
@endif
|
||||
</td>
|
||||
@endif
|
||||
<td class="text-right">
|
||||
@if (addon_is_activated('pos_system') && $order->order_from == 'pos')
|
||||
<a class="btn btn-soft-success btn-icon btn-circle btn-sm"
|
||||
href="{{ route('admin.invoice.thermal_printer', $order->id) }}" target="_blank"
|
||||
title="{{ translate('Thermal Printer') }}">
|
||||
<i class="las la-print"></i>
|
||||
</a>
|
||||
@endif
|
||||
@can('view_order_details')
|
||||
@php
|
||||
$order_detail_route = route('orders.show', encrypt($order->id));
|
||||
if (Route::currentRouteName() == 'seller_orders.index') {
|
||||
$order_detail_route = route('seller_orders.show', encrypt($order->id));
|
||||
} elseif (Route::currentRouteName() == 'pick_up_point.index') {
|
||||
$order_detail_route = route('pick_up_point.order_show', encrypt($order->id));
|
||||
}
|
||||
if (Route::currentRouteName() == 'inhouse_orders.index') {
|
||||
$order_detail_route = route('inhouse_orders.show', encrypt($order->id));
|
||||
}
|
||||
@endphp
|
||||
<a class="btn btn-soft-primary btn-icon btn-circle btn-sm"
|
||||
href="{{ $order_detail_route }}" title="{{ translate('View') }}">
|
||||
<i class="las la-eye"></i>
|
||||
</a>
|
||||
@endcan
|
||||
<a class="btn btn-soft-info btn-icon btn-circle btn-sm"
|
||||
href="{{ route('invoice.download', $order->id) }}"
|
||||
title="{{ translate('Download Invoice') }}">
|
||||
<i class="las la-download"></i>
|
||||
</a>
|
||||
@can('delete_order')
|
||||
<a href="#"
|
||||
class="btn btn-soft-danger btn-icon btn-circle btn-sm confirm-delete"
|
||||
data-href="{{ route('orders.destroy', $order->id) }}"
|
||||
title="{{ translate('Delete') }}">
|
||||
<i class="las la-trash"></i>
|
||||
</a>
|
||||
@endcan
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div class="aiz-pagination">
|
||||
{{ $orders->appends(request()->input())->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 change_status() {
|
||||
// var data = new FormData($('#order_form')[0]);
|
||||
// $.ajax({
|
||||
// headers: {
|
||||
// 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
|
||||
// },
|
||||
// url: "{{ route('bulk-order-status') }}",
|
||||
// type: 'POST',
|
||||
// data: data,
|
||||
// cache: false,
|
||||
// contentType: false,
|
||||
// processData: false,
|
||||
// success: function (response) {
|
||||
// if(response == 1) {
|
||||
// location.reload();
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
|
||||
function bulk_delete() {
|
||||
var data = new FormData($('#sort_orders')[0]);
|
||||
$.ajax({
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
|
||||
},
|
||||
url: "{{ route('bulk-order-delete') }}",
|
||||
type: 'POST',
|
||||
data: data,
|
||||
cache: false,
|
||||
contentType: false,
|
||||
processData: false,
|
||||
success: function(response) {
|
||||
if (response == 1) {
|
||||
location.reload();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
@endsection
|
||||
385
resources/views/backend/sales/show.blade.php
Normal file
385
resources/views/backend/sales/show.blade.php
Normal file
@@ -0,0 +1,385 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('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->payment_status;
|
||||
$admin_user_id = App\Models\User::where('user_type', 'admin')->first()->id;
|
||||
@endphp
|
||||
|
||||
<!--Assign Delivery Boy-->
|
||||
@if ($order->seller_id == $admin_user_id || get_setting('product_manage_by_admin') == 1)
|
||||
|
||||
@if (addon_is_activated('delivery_boy'))
|
||||
<div class="col-md-3 ml-auto">
|
||||
<label for="assign_deliver_boy">{{ translate('Assign Deliver Boy') }}</label>
|
||||
@if (($delivery_status == 'pending' || $delivery_status == 'confirmed' || $delivery_status == 'picked_up') && auth()->user()->can('assign_delivery_boy_for_orders'))
|
||||
<select class="form-control aiz-selectpicker" data-live-search="true"
|
||||
data-minimum-results-for-search="Infinity" id="assign_deliver_boy">
|
||||
<option value="">{{ translate('Select Delivery Boy') }}</option>
|
||||
@foreach ($delivery_boys as $delivery_boy)
|
||||
<option value="{{ $delivery_boy->id }}"
|
||||
@if ($order->assign_delivery_boy == $delivery_boy->id) selected @endif>
|
||||
{{ $delivery_boy->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
@else
|
||||
<input type="text" class="form-control" value="{{ optional($order->delivery_boy)->name }}"
|
||||
disabled>
|
||||
@endif
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="col-md-3 ml-auto">
|
||||
<label for="update_payment_status">{{ translate('Payment Status') }}</label>
|
||||
@if (auth()->user()->can('update_order_payment_status'))
|
||||
<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="{{ $payment_status }}" disabled>
|
||||
@endif
|
||||
</div>
|
||||
<div class="col-md-3 ml-auto">
|
||||
<label for="update_delivery_status">{{ translate('Delivery Status') }}</label>
|
||||
@if (auth()->user()->can('update_order_delivery_status') && $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="{{ $delivery_status }}" disabled>
|
||||
@endif
|
||||
</div>
|
||||
<div class="col-md-3 ml-auto">
|
||||
<label for="update_tracking_code">
|
||||
{{ translate('Tracking Code (optional)') }}
|
||||
</label>
|
||||
<input type="text" class="form-control" id="update_tracking_code"
|
||||
value="{{ $order->tracking_code }}">
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
@php
|
||||
$removedXML = '<?xml version="1.0" encoding="UTF-8"?>';
|
||||
@endphp
|
||||
{!! str_replace($removedXML, '', QrCode::size(100)->generate($order->code)) !!}
|
||||
</div>
|
||||
<div class="row gutters-5">
|
||||
<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>
|
||||
<br>
|
||||
<small>
|
||||
@php
|
||||
$product_stock = json_decode($orderDetail->product->stocks->first(), true);
|
||||
@endphp
|
||||
{{translate('SKU')}}: {{ $product_stock['sku'] }}
|
||||
</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('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">
|
||||
$('#assign_deliver_boy').on('change', function() {
|
||||
var order_id = {{ $order->id }};
|
||||
var delivery_boy = $('#assign_deliver_boy').val();
|
||||
$.post('{{ route('orders.delivery-boy-assign') }}', {
|
||||
_token: '{{ @csrf_token() }}',
|
||||
order_id: order_id,
|
||||
delivery_boy: delivery_boy
|
||||
}, function(data) {
|
||||
AIZ.plugins.notify('success', '{{ translate('Delivery boy has been assigned') }}');
|
||||
});
|
||||
});
|
||||
$('#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) {
|
||||
AIZ.plugins.notify('success', '{{ translate('Delivery status has been updated') }}');
|
||||
});
|
||||
});
|
||||
$('#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) {
|
||||
AIZ.plugins.notify('success', '{{ translate('Payment status has been updated') }}');
|
||||
});
|
||||
});
|
||||
$('#update_tracking_code').on('change', function() {
|
||||
var order_id = {{ $order->id }};
|
||||
var tracking_code = $('#update_tracking_code').val();
|
||||
$.post('{{ route('orders.update_tracking_code') }}', {
|
||||
_token: '{{ @csrf_token() }}',
|
||||
order_id: order_id,
|
||||
tracking_code: tracking_code
|
||||
}, function(data) {
|
||||
AIZ.plugins.notify('success', '{{ translate('Order tracking code has been updated') }}');
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
43
resources/views/backend/sellers/create.blade.php
Normal file
43
resources/views/backend/sellers/create.blade.php
Normal file
@@ -0,0 +1,43 @@
|
||||
@extends('backend.layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="aiz-titlebar text-left mt-2 mb-3">
|
||||
<h5 class="mb-0 h6">{{translate('Add New Seller')}}</h5>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-6 mx-auto">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0 h6">{{translate('Seller Information')}}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form action="{{ route('sellers.store') }}" method="POST">
|
||||
@csrf
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-3 col-from-label" for="name">{{translate('Name')}}</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" placeholder="{{translate('Name')}}" id="name" name="name" class="form-control" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-3 col-from-label" for="email">{{translate('Email Address')}}</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" placeholder="{{translate('Email Address')}}" id="email" name="email" class="form-control" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-3 col-from-label" for="password">{{translate('Password')}}</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="password" placeholder="{{translate('Password')}}" id="password" name="password" class="form-control" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group mb-0 text-right">
|
||||
<button type="submit" class="btn btn-primary">{{translate('Save')}}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user