v4.1.9: Начальная производственная версия
- Полный backend на Hono + TypeScript - SQLite база данных с 38 записями - 3 пользователя: admin, aknaproff, kasutaja - Модальное окно reportModal (4 шага) - Docker конфигурация для Synology ARM - Все миграции (0001-0017) - Frontend: vanilla HTML/JS (original.html)
This commit is contained in:
@@ -1,146 +0,0 @@
|
||||
@extends('layouts.app')
|
||||
@section('content')
|
||||
<div class="container">
|
||||
<div class="col-md-12">
|
||||
<div class="card card-outline card-primary">
|
||||
<div class="card-header">
|
||||
<div class="card-title">
|
||||
<h3>@lang('messages.create_package')</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form id="create_package_form">
|
||||
<div class="form-row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label for="name">
|
||||
@lang('messages.name') *
|
||||
</label>
|
||||
<input type="text" name="name" class="form-control" id="name" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label for="description">
|
||||
@lang('messages.description') *
|
||||
</label>
|
||||
<input type="text" name="description" class="form-control" id="description" maxlength="100" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="col-md-4">
|
||||
<div class="form-group">
|
||||
<label for="price_interval">
|
||||
@lang('messages.price_interval') *
|
||||
</label>
|
||||
<select class="form-control" name="price_interval" id="price_interval" required>
|
||||
<option value="">
|
||||
@lang('messages.select_price_interval')
|
||||
</option>
|
||||
@foreach($lists as $key => $value)
|
||||
<option value="{{$key}}">
|
||||
{{$value}}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-group">
|
||||
<label for="interval">
|
||||
@lang('messages.interval') *
|
||||
</label>
|
||||
<input type="number" name="interval" class="form-control" id="interval" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-group">
|
||||
<label for="price">
|
||||
@lang('messages.price')
|
||||
</label>
|
||||
<input type="number" name="price" class="form-control" id="price" aria-describedby="price_help_text">
|
||||
<small id="price_help_text" class="form-text text-muted">
|
||||
@lang('messages.free_package_help_text')
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label for="no_of_active_forms">
|
||||
@lang('messages.no_of_active_forms')
|
||||
</label>
|
||||
<input type="number" name="no_of_active_forms" class="form-control" id="no_of_active_forms" aria-describedby="no_of_active_forms_help">
|
||||
<small id="no_of_active_forms_help" class="form-text text-muted">
|
||||
@lang('messages.unlimited_form_help_text')
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label for="sort_order">
|
||||
@lang('messages.sort_order') *
|
||||
</label>
|
||||
<input type="number" name="sort_order" class="form-control" id="sort_order" required>
|
||||
<small class="form-text text-muted">
|
||||
@lang('messages.sort_order_help_text')
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="col-md-4">
|
||||
<div class="custom-control custom-checkbox">
|
||||
<input type="checkbox" class="custom-control-input" name="is_form_downloadable" id="is_form_downloadable" value="1">
|
||||
<label class="custom-control-label" for="is_form_downloadable">
|
||||
@lang('messages.allow_form_code_downloading')
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="custom-control custom-checkbox">
|
||||
<input type="checkbox" class="custom-control-input" name="is_active" id="is_active" value="1">
|
||||
<label class="custom-control-label" for="is_active">
|
||||
@lang('messages.activate')
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-success float-right submit_btn">
|
||||
@lang('messages.save')
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@section('footer')
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
$('form#create_package_form').validate({
|
||||
submitHandler: function(form, e) {
|
||||
e.preventDefault();
|
||||
var data = $('form#create_package_form').serialize();
|
||||
if ($('form#create_package_form').valid()) {
|
||||
$.ajax({
|
||||
method:"POST",
|
||||
url: "/superadmin/packages",
|
||||
data: data,
|
||||
dataType: "json",
|
||||
success:function(response) {
|
||||
if(response.success == true){
|
||||
window.location = response.redirect;
|
||||
} else {
|
||||
toastr.error(response.msg);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
@@ -1,151 +0,0 @@
|
||||
@extends('layouts.app')
|
||||
@section('content')
|
||||
<div class="container">
|
||||
<div class="col-md-12">
|
||||
<div class="card card-outline card-primary">
|
||||
<div class="card-header">
|
||||
<div class="card-title">
|
||||
<h3>@lang('messages.edit_package')</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form id="edit_package_form" action="{{action([\App\Http\Controllers\Superadmin\PackageController::class, 'update'], ['package' => $package->id])}}">
|
||||
<div class="form-row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label for="name">
|
||||
@lang('messages.name') *
|
||||
</label>
|
||||
<input type="text" name="name" class="form-control" id="name" value="{{$package->name}}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label for="description">
|
||||
@lang('messages.description') *
|
||||
</label>
|
||||
<input type="text" name="description" class="form-control" id="description" value="{{$package->description}}" maxlength="100" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="col-md-4">
|
||||
<div class="form-group">
|
||||
<label for="price_interval">
|
||||
@lang('messages.price_interval') *
|
||||
</label>
|
||||
<select class="form-control" name="price_interval" id="price_interval" required>
|
||||
<option value="">
|
||||
@lang('messages.select_price_interval')
|
||||
</option>
|
||||
@foreach($lists as $key => $value)
|
||||
<option value="{{$key}}"
|
||||
@if($key == $package->price_interval)
|
||||
selected
|
||||
@endif
|
||||
>
|
||||
{{$value}}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-group">
|
||||
<label for="interval">
|
||||
@lang('messages.interval') *
|
||||
</label>
|
||||
<input type="number" name="interval" class="form-control" id="interval" required value="{{$package->interval}}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-group">
|
||||
<label for="price">
|
||||
@lang('messages.price')
|
||||
</label>
|
||||
<input type="number" name="price" class="form-control" id="price" value="{{$package->price}}" aria-describedby="price_help_text">
|
||||
<small id="price_help_text" class="form-text text-muted">
|
||||
@lang('messages.free_package_help_text')
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label for="no_of_active_forms">
|
||||
@lang('messages.no_of_active_forms')
|
||||
</label>
|
||||
<input type="number" name="no_of_active_forms" class="form-control" id="no_of_active_forms" value="{{$package->no_of_active_forms}}" aria-describedby="no_of_active_forms_help">
|
||||
<small id="no_of_active_forms_help" class="form-text text-muted">
|
||||
@lang('messages.unlimited_form_help_text')
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label for="sort_order">
|
||||
@lang('messages.sort_order') *
|
||||
</label>
|
||||
<input type="number" name="sort_order" class="form-control" id="sort_order" value="{{$package->sort_order}}" required>
|
||||
<small class="form-text text-muted">
|
||||
@lang('messages.sort_order_help_text')
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="col-md-4">
|
||||
<div class="custom-control custom-checkbox">
|
||||
<input type="checkbox" class="custom-control-input" name="is_form_downloadable" id="is_form_downloadable" value="1" @if($package->is_form_downloadable) checked @endif>
|
||||
<label class="custom-control-label" for="is_form_downloadable">
|
||||
@lang('messages.allow_form_code_downloading')
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="custom-control custom-checkbox">
|
||||
<input type="checkbox" class="custom-control-input" name="is_active" id="is_active" value="1" @if($package->is_active) checked @endif>
|
||||
<label class="custom-control-label" for="is_active">
|
||||
@lang('messages.activate')
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-success submit_btn float-right">
|
||||
@lang('messages.update')
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@section('footer')
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
$('form#edit_package_form').validate({
|
||||
submitHandler: function(form, e) {
|
||||
e.preventDefault();
|
||||
var data = $('form#edit_package_form').serialize();
|
||||
var url = $('form#edit_package_form').attr('action');
|
||||
if ($('form#edit_package_form').valid()) {
|
||||
$.ajax({
|
||||
method:"PUT",
|
||||
url: url,
|
||||
data: data,
|
||||
dataType: "json",
|
||||
success:function(response) {
|
||||
if(response.success == true){
|
||||
window.location = response.redirect;
|
||||
} else {
|
||||
toastr.error(response.msg);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
@@ -1,150 +0,0 @@
|
||||
@extends('layouts.app')
|
||||
@section('content')
|
||||
<div class="container">
|
||||
<div class="card card-outline card-info">
|
||||
<div class="card-header">
|
||||
<div class="card-title">
|
||||
<h4>
|
||||
<i class="fas fa-money-check"></i>
|
||||
@lang('messages.all_packages')
|
||||
</h4>
|
||||
</div>
|
||||
<div class="card-tools">
|
||||
<a href="{{action([\App\Http\Controllers\Superadmin\PackageController::class, 'create'])}}" class="btn btn-primary btn-sm float-right">
|
||||
<i class="fas fa-plus"></i>
|
||||
@lang('messages.create')
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@if(count($packages) <= 0)
|
||||
<div class="alert alert-danger" role="alert">
|
||||
<span class="text-white">@lang('messages.no_packages_found')</span>
|
||||
</div>
|
||||
@endif
|
||||
<div class="row">
|
||||
@foreach($packages as $package)
|
||||
<div class="col-md-4">
|
||||
<div class="card card-outline card-success on_hover">
|
||||
<div class="card-header">
|
||||
<div class="text-center">
|
||||
{{$package->name}}
|
||||
</div>
|
||||
<div class="text-center">
|
||||
@if($package->is_active)
|
||||
<span class="badge badge-pill badge-success">
|
||||
@lang('messages.active')
|
||||
</span>
|
||||
@else
|
||||
<span class="badge badge-pill badge-danger">
|
||||
@lang('messages.inactive')
|
||||
</span>
|
||||
@endif
|
||||
<a href="{{action([\App\Http\Controllers\Superadmin\PackageController::class, 'edit'], ['package' => $package->id])}}" class="btn btn-link text-info">
|
||||
<i class="fa fa-edit"></i>
|
||||
</a>
|
||||
<a href="#" class="btn btn-link delete_package text-danger" data-url="{{action([\App\Http\Controllers\Superadmin\PackageController::class, 'destroy'], ['package' => $package->id])}}">
|
||||
<i class="fa fa-trash"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body text-center">
|
||||
@if($package->no_of_active_forms != 0)
|
||||
<span>
|
||||
<i class="far fa-check-circle text-success"></i>
|
||||
@lang('messages.no_of_forms',[
|
||||
'active_form' => $package->no_of_active_forms])
|
||||
</span>
|
||||
@else
|
||||
<span>
|
||||
<i class="far fa-check-circle text-success"></i>
|
||||
@lang('messages.unlimited_forms')
|
||||
</span>
|
||||
@endif
|
||||
<hr>
|
||||
@if($package->is_form_downloadable)
|
||||
<span>
|
||||
<i class="far fa-check-circle text-success"></i>
|
||||
@lang('messages.form_code_download')
|
||||
</span>
|
||||
@else
|
||||
<span>
|
||||
<i class="far fa-times-circle text-danger"></i>
|
||||
@lang('messages.form_code_download')
|
||||
</span>
|
||||
@endif
|
||||
<hr>
|
||||
@php
|
||||
$price_interval = __('messages.'.$package->price_interval);
|
||||
@endphp
|
||||
@if($package->price != 0)
|
||||
<h3>
|
||||
<span class="currency">
|
||||
{{$package->price}}
|
||||
</span>
|
||||
<small class="text-muted">
|
||||
@lang('messages.subscription_price',[
|
||||
'interval' => $package->interval,
|
||||
'price_interval' => $price_interval
|
||||
])
|
||||
</small>
|
||||
</h3>
|
||||
@else
|
||||
<h3>
|
||||
@lang('messages.free_for_interval', [
|
||||
'interval' => $package->interval,
|
||||
'price_interval' => $price_interval
|
||||
])
|
||||
</h3>
|
||||
@endif
|
||||
</div>
|
||||
<div class="card-footer text-center">
|
||||
{{$package->description}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@if($loop->iteration%3 == 0)
|
||||
<div class="clearfix"></div>
|
||||
@endif
|
||||
@endforeach
|
||||
</div>
|
||||
<div class="col-md-12">
|
||||
{{ $packages->links() }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@section('footer')
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function(){
|
||||
|
||||
$('span.currency').each(function(index, element){
|
||||
var money = __formatCurrency($(this).text());
|
||||
$(this).text(money);
|
||||
});
|
||||
|
||||
$(document).on('click', '.delete_package', function(){
|
||||
var url = $(this).data('url');
|
||||
var is_confirmed = confirm('Are You Sure?');
|
||||
if (is_confirmed) {
|
||||
$.ajax({
|
||||
method: "DELETE",
|
||||
url: url,
|
||||
dataType: "json",
|
||||
success: function(result){
|
||||
if(result.success == true){
|
||||
toastr.success(result.msg);
|
||||
setTimeout(() => {
|
||||
location.reload();
|
||||
}, 1100);
|
||||
} else {
|
||||
toastr.error(result.msg);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
@@ -1,572 +0,0 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="container">
|
||||
<section class="content-header">
|
||||
<h1>
|
||||
@lang('messages.system_settings')
|
||||
</h1>
|
||||
</section>
|
||||
<div class="col-md-12">
|
||||
<form id="settings_form" action="{{action([\App\Http\Controllers\Superadmin\SuperadminSettingsController::class, 'store'])}}" method="POST">
|
||||
@csrf
|
||||
<div class="card card-outline card-primary">
|
||||
<div class="card-body">
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-6">
|
||||
<label for="APP_NAME">
|
||||
@lang('messages.app_name') *
|
||||
</label>
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">
|
||||
<i class="fa fa-suitcase"></i>
|
||||
</span>
|
||||
</div>
|
||||
<input type="text" class="form-control" name="APP_NAME" id="APP_NAME" placeholder="{{__('messages.enter_app_name')}}" value="{{$settings['APP_NAME']}}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group col-md-6">
|
||||
<label for="APP_TITLE">
|
||||
@lang('messages.app_title') *
|
||||
</label>
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">
|
||||
<i class="fas fa-tag"></i>
|
||||
</span>
|
||||
</div>
|
||||
<input type="text" class="form-control" name="APP_TITLE" id="APP_TITLE" placeholder="{{__('messages.enter_app_title')}}" value="{{$settings['APP_TITLE']}}" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-6">
|
||||
<label for="language">
|
||||
@lang('messages.language') *
|
||||
</label>
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">
|
||||
<i class="fas fa-language"></i>
|
||||
</span>
|
||||
</div>
|
||||
<select id="language" class="form-control" name="APP_LOCALE" required>
|
||||
@foreach($settings['APP_LOCALE'] as $key => $language)
|
||||
<option value="{{$key}}"
|
||||
@if($key == env('APP_LOCALE'))
|
||||
selected
|
||||
@endif>
|
||||
{{$language['full_name']}}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label for="APP_TIMEZONE">
|
||||
@lang('messages.timezone') *
|
||||
</label>
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">
|
||||
<i class="far fa-hourglass"></i>
|
||||
</span>
|
||||
</div>
|
||||
<select class="form-control" name="APP_TIMEZONE" required id="APP_TIMEZONE">
|
||||
<option value="">
|
||||
@lang('messages.choose_timezone')
|
||||
</option>
|
||||
@foreach($settings['timezones'] as $timezone)
|
||||
<option value="{{$timezone}}"
|
||||
@if($timezone == $settings['APP_TIMEZONE'])
|
||||
selected
|
||||
@endif>
|
||||
{{$timezone}}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="col-md-4">
|
||||
<div class="form-group">
|
||||
<label for="CURRENCY_NAME">
|
||||
@lang('messages.currency_name') *
|
||||
</label>
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">
|
||||
<i class="far fa-money-bill-alt"></i>
|
||||
</span>
|
||||
</div>
|
||||
<input type="text" name="CURRENCY_NAME" id="CURRENCY_NAME" class="form-control" value="{{$settings['CURRENCY_NAME']}}" required placeholder="{{__('messages.enter_currency_name')}}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-group">
|
||||
<label for="CURRENCY_CODE">
|
||||
@lang('messages.currency_code') *
|
||||
</label>
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">
|
||||
<i class="far fa-money-bill-alt"></i>
|
||||
</span>
|
||||
</div>
|
||||
<input type="text" name="CURRENCY_CODE" id="CURRENCY_CODE" class="form-control" value="{{$settings['CURRENCY_CODE']}}" required
|
||||
placeholder="{{__('messages.enter_currency_code')}}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-group">
|
||||
<label for="CURRENCY_SYMBOL">
|
||||
@lang('messages.currency_symbol') *
|
||||
</label>
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">
|
||||
<i class="far fa-money-bill-alt"></i>
|
||||
</span>
|
||||
</div>
|
||||
<input type="text" name="CURRENCY_SYMBOL" id="CURRENCY_SYMBOL" class="form-control" value="{{$settings['CURRENCY_SYMBOL']}}" required
|
||||
placeholder="{{__('messages.enter_currency_symbol')}}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="col-md-4">
|
||||
<div class="form-group">
|
||||
<label for="APP_DATE_FORMAT">
|
||||
@lang('messages.date_format') *
|
||||
</label>
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">
|
||||
<i class="fas fa-calendar-day"></i>
|
||||
</span>
|
||||
</div>
|
||||
<select class="form-control" name="APP_DATE_FORMAT" required id="APP_DATE_FORMAT">
|
||||
@foreach($date_formats as $key => $value)
|
||||
<option value="{{$key}}"
|
||||
@if($key == config('constants.APP_DATE_FORMAT'))
|
||||
selected
|
||||
@endif>
|
||||
{{$value}}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-4">
|
||||
<div class="form-group">
|
||||
<label for="APP_TIME_FORMAT">
|
||||
@lang('messages.time_format') *
|
||||
</label>
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">
|
||||
<i class="far fa-clock"></i>
|
||||
</span>
|
||||
</div>
|
||||
<select class="form-control" name="APP_TIME_FORMAT" required id="APP_TIME_FORMAT">
|
||||
<option value="12"
|
||||
@if(config('constants.APP_TIME_FORMAT') == '12')
|
||||
selected
|
||||
@endif>
|
||||
@lang('messages.12_hour')
|
||||
</option>
|
||||
<option value="24"
|
||||
@if(config('constants.APP_TIME_FORMAT') == '24')
|
||||
selected
|
||||
@endif>
|
||||
@lang('messages.24_hour')
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="col-md-4">
|
||||
<div class="custom-control custom-checkbox">
|
||||
<input type="checkbox" class="custom-control-input" name="ENABLE_REGISTRATION" id="ENABLE_REGISTRATION" value="1" @if($settings['ENABLE_REGISTRATION']) checked @endif>
|
||||
<label class="custom-control-label" for="ENABLE_REGISTRATION">
|
||||
@lang('messages.enable_registration')
|
||||
<i class="fas fa-info-circle" data-toggle="tooltip" data-placement="top" title="{{__('messages.resgistration_will_be_enabled')}}"></i>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
@if($__type_e)
|
||||
<div class="col-md-4">
|
||||
<div class="custom-control custom-checkbox">
|
||||
<input type="checkbox" class="custom-control-input" name="ENABLE_SAAS_MODULE" id="ENABLE_SAAS_MODULE" value="1" @if($settings['ENABLE_SAAS_MODULE']) checked @endif>
|
||||
<label class="custom-control-label" for="ENABLE_SAAS_MODULE">
|
||||
@lang('messages.enable_saas_module')
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@if($__enable_saas)
|
||||
<div class="card card-outline card-primary">
|
||||
<div class="card-header">
|
||||
<div class="card-title">
|
||||
<h4>
|
||||
@lang('messages.payment_api_settings')
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="form-row">
|
||||
<div class="col-md-12">
|
||||
<div class="custom-control custom-checkbox">
|
||||
<input type="checkbox" class="custom-control-input" name="ENABLE_OFFLINE_PAYMENT" id="ENABLE_OFFLINE_PAYMENT" value="1" @if($settings['ENABLE_OFFLINE_PAYMENT']) checked @endif>
|
||||
<label class="custom-control-label" for="ENABLE_OFFLINE_PAYMENT">
|
||||
@lang('messages.enable_ofline_payment')
|
||||
<i class="fas fa-info-circle" data-toggle="tooltip" data-placement="top" title="{{__('messages.offline_pay_helptext')}}"></i>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<h4 class="mb-2">Paypal</h4>
|
||||
<div class="form-row">
|
||||
<div class="col-md-4">
|
||||
<div class="form-group">
|
||||
<label for="PAYPAL_MODE">
|
||||
PAYPAL MODE *
|
||||
</label>
|
||||
<select class="form-control" name="PAYPAL_MODE" id="PAYPAL_MODE" required>
|
||||
<option value="sandbox"
|
||||
@if($settings['PAYPAL_MODE'] == 'sandbox')
|
||||
selected
|
||||
@endif
|
||||
>
|
||||
Sandbox
|
||||
</option>
|
||||
<option value="live"
|
||||
@if($settings['PAYPAL_MODE'] == 'live')
|
||||
selected
|
||||
@endif
|
||||
>
|
||||
Live
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<!-- live mode -->
|
||||
<div class="col-md-4">
|
||||
<div class="form-group">
|
||||
<label for="PAYPAL_LIVE_API_USERNAME">
|
||||
PAYPAL LIVE API USERNAME
|
||||
</label>
|
||||
<input type="text" class="form-control" name="PAYPAL_LIVE_API_USERNAME" id="PAYPAL_LIVE_API_USERNAME" placeholder="PAYPAL LIVE API USERNAME" value="{{$settings['PAYPAL_LIVE_API_USERNAME']}}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-group">
|
||||
<label for="PAYPAL_LIVE_API_PASSWORD">
|
||||
PAYPAL LIVE API PASSWORD
|
||||
</label>
|
||||
<input type="text" class="form-control" name="PAYPAL_LIVE_API_PASSWORD" id="PAYPAL_LIVE_API_PASSWORD" placeholder="PAYPAL LIVE API PASSWORD" value="{{$settings['PAYPAL_LIVE_API_PASSWORD']}}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-group">
|
||||
<label for="PAYPAL_LIVE_API_SECRET">
|
||||
PAYPAL LIVE API SECRET
|
||||
</label>
|
||||
<input type="text" class="form-control" name="PAYPAL_LIVE_API_SECRET" id="PAYPAL_LIVE_API_SECRET" placeholder="PAYPAL LIVE API SECRET" value="{{$settings['PAYPAL_LIVE_API_SECRET']}}">
|
||||
</div>
|
||||
</div>
|
||||
<!-- sandbox mode -->
|
||||
<div class="col-md-4">
|
||||
<div class="form-group">
|
||||
<label for="PAYPAL_SANDBOX_API_USERNAME">
|
||||
PAYPAL SANDBOX API USERNAME
|
||||
</label>
|
||||
<input type="text" class="form-control" name="PAYPAL_SANDBOX_API_USERNAME" id="PAYPAL_SANDBOX_API_USERNAME" placeholder="PAYPAL SANDBOX API USERNAME" value="{{$settings['PAYPAL_SANDBOX_API_USERNAME']}}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-group">
|
||||
<label for="PAYPAL_SANDBOX_API_PASSWORD">
|
||||
PAYPAL SANDBOX API PASSWORD
|
||||
</label>
|
||||
<input type="text" class="form-control" name="PAYPAL_SANDBOX_API_PASSWORD" id="PAYPAL_SANDBOX_API_PASSWORD" placeholder="PAYPAL SANDBOX API PASSWORD" value="{{$settings['PAYPAL_SANDBOX_API_PASSWORD']}}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-group">
|
||||
<label for="PAYPAL_SANDBOX_API_SECRET">
|
||||
PAYPAL SANDBOX API SECRET
|
||||
</label>
|
||||
<input type="text" class="form-control" name="PAYPAL_SANDBOX_API_SECRET" id="PAYPAL_SANDBOX_API_SECRET" placeholder="PAYPAL SANDBOX API SECRET" value="{{$settings['PAYPAL_SANDBOX_API_SECRET']}}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<h4 class="mb-2">Stripe</h4>
|
||||
<div class="form-row">
|
||||
<div class="col-md-4">
|
||||
<div class="form-group">
|
||||
<label for="STRIPE_PUB_KEY">
|
||||
STRIPE PUBLISHABLE KEY
|
||||
</label>
|
||||
<input type="text" class="form-control" name="STRIPE_PUB_KEY" id="STRIPE_PUB_KEY" placeholder="STRIPE PUBLISHABLE KEY" value="{{$settings['STRIPE_PUB_KEY']}}">
|
||||
<small id="help_text" class="form-text text-muted">
|
||||
{{trans('messages.to_see_supported_curreny')}}
|
||||
<a href="https://stripe.com/docs/currencies" target="_blank">{{trans('messages.click_here')}}.</a>
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-group">
|
||||
<label for="STRIPE_SECRET_KEY">
|
||||
STRIPE SECRET KEY
|
||||
</label>
|
||||
<input type="text" class="form-control" name="STRIPE_SECRET_KEY" id="STRIPE_SECRET_KEY" placeholder="STRIPE SECRET KEY" value="{{$settings['STRIPE_SECRET_KEY']}}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
<div class="card card-outline card-primary">
|
||||
<div class="card-header">
|
||||
<div class="card-title">
|
||||
<h4>
|
||||
@lang('messages.smtp_email_settings')
|
||||
<i class="fas fa-info-circle" data-toggle="tooltip" data-placement="top" data-html="true" title="{{__('messages.system_settings_smtp_tooltips')}}"></i>
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-4">
|
||||
<label for="MAIL_HOST">
|
||||
@lang('messages.mail_host') *
|
||||
</label>
|
||||
<input type="text" class="form-control" name="MAIL_HOST" id="MAIL_HOST" placeholder="{{__('messages.enter_mail_host')}}" value="{{$settings['MAIL_HOST']}}" required>
|
||||
</div>
|
||||
<div class="form-group col-md-4">
|
||||
<label for="MAIL_PORT">
|
||||
@lang('messages.mail_port') *
|
||||
</label>
|
||||
<input type="text" class="form-control" name="MAIL_PORT" id="MAIL_PORT" placeholder="{{__('messages.enter_mail_port')}}" value="{{$settings['MAIL_PORT']}}" required>
|
||||
</div>
|
||||
<div class="form-group col-md-4">
|
||||
<label for="MAIL_USERNAME">
|
||||
@lang('messages.mail_username') *
|
||||
</label>
|
||||
<input type="text" class="form-control" name="MAIL_USERNAME" id="MAIL_USERNAME" placeholder="{{__('messages.enter_mail_username')}}" value="{{$settings['MAIL_USERNAME']}}" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-4">
|
||||
<label for="MAIL_FROM_ADDRESS">
|
||||
@lang('messages.mail_from_address') *
|
||||
</label>
|
||||
<input type="text" class="form-control" name="MAIL_FROM_ADDRESS" id="MAIL_FROM_ADDRESS" placeholder="{{__('messages.mail_from_address')}}" value="{{$settings['MAIL_FROM_ADDRESS']}}" required>
|
||||
</div>
|
||||
|
||||
<div class="form-group col-md-4">
|
||||
<label for="MAIL_FROM_NAME">
|
||||
@lang('messages.mail_from_name') *
|
||||
</label>
|
||||
<input type="text" class="form-control" name="MAIL_FROM_NAME" id="MAIL_FROM_NAME" placeholder="{{__('messages.mail_from_name')}}" value="{{$settings['MAIL_FROM_NAME']}}" required>
|
||||
</div>
|
||||
|
||||
<div class="form-group col-md-4">
|
||||
<label for="MAIL_PASSWORD">
|
||||
@lang('messages.mail_password') *
|
||||
</label>
|
||||
<input type="text" class="form-control" name="MAIL_PASSWORD" id="MAIL_PASSWORD" placeholder="{{__('messages.enter_mail_password')}}" value="{{$settings['MAIL_PASSWORD']}}" required>
|
||||
</div>
|
||||
<div class="form-group col-md-4">
|
||||
<label for="MAIL_ENCRYPTION">
|
||||
@lang('messages.mail_encryption') *
|
||||
</label>
|
||||
<input type="text" class="form-control" name="MAIL_ENCRYPTION" id="MAIL_ENCRYPTION" placeholder="{{__('messages.enter_mail_encryption')}}" value="{{$settings['MAIL_ENCRYPTION']}}" required>
|
||||
</div>
|
||||
</div>
|
||||
<button type="button"
|
||||
class="btn btn-sm btn-outline-primary ladda-button btn-test-smtp float-right m-1"
|
||||
data-style="expand-right"
|
||||
data-spinner-color="blue"
|
||||
>
|
||||
<span class="ladda-label">
|
||||
{{trans('messages.test_smtp_details')}}
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Acelle Mail -->
|
||||
<div class="card card-outline card-primary">
|
||||
<div class="card-header">
|
||||
<div class="card-title">
|
||||
<h4>
|
||||
@lang('messages.integration')
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="form-row mb-4">
|
||||
<div class="col-md-12">
|
||||
<div class="custom-control custom-checkbox">
|
||||
<input type="checkbox" class="custom-control-input" id="enable_acelle_mail" value="1" @if(!empty($settings['ACELLE_MAIL_NAME']) && !empty($settings['ACELLE_MAIL_API'])) checked @endif>
|
||||
<label class="custom-control-label" for="enable_acelle_mail">
|
||||
@lang('messages.enable') Acelle Mail
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row acelle_mail_details"
|
||||
@if(empty($settings['ACELLE_MAIL_NAME']) && empty($settings['ACELLE_MAIL_API']))
|
||||
style="display:none;"
|
||||
@endif>
|
||||
<div class="form-group col-md-6">
|
||||
<label for="acelle_name">
|
||||
@lang('messages.name') *
|
||||
</label>
|
||||
<input type="text" class="form-control" name="ACELLE_MAIL_NAME" id="acelle_name" placeholder="{{__('messages.name')}}" value="{{$settings['ACELLE_MAIL_NAME']}}" required>
|
||||
<small id="acelle_name_help" class="form-text text-muted">
|
||||
@lang('messages.acelle_mail_name_help_text')
|
||||
</small>
|
||||
</div>
|
||||
|
||||
<div class="form-group col-md-6">
|
||||
<label for="acelle_url">
|
||||
@lang('messages.api_endpoint') *
|
||||
</label>
|
||||
<input type="url" class="form-control" name="ACELLE_MAIL_API" id="acelle_url" placeholder="{{__('messages.api_endpoint')}}" value="{{$settings['ACELLE_MAIL_API']}}" required>
|
||||
<small id="acelle_url_help" class="form-text text-muted">
|
||||
@lang('messages.acelle_mail_api_url_help_text')
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /Acelle Mail -->
|
||||
<!-- additional js/css -->
|
||||
<div class="card card-outline card-primary">
|
||||
<div class="card-header">
|
||||
<div class="card-title">
|
||||
<h4>
|
||||
@lang('messages.additional_js_css')
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<label for="additional_js">
|
||||
@lang('messages.additional_js')
|
||||
</label>
|
||||
<textarea class="form-control" name="system[additional_js]" id="additional_js" rows="8" aria-describedby="additional_jsHelp">@if(!empty($additional_js)){{$additional_js}}@endif</textarea>
|
||||
<small id="additional_jsHelp" class="form-text text-muted">
|
||||
@lang('messages.additional_js_help')
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mt-3">
|
||||
<div class="col-md-12">
|
||||
<label for="additional_css">
|
||||
@lang('messages.additional_css')
|
||||
</label>
|
||||
<textarea class="form-control" name="system[additional_css]" id="additional_css" rows="8" aria-describedby="additional_css_Help">@if(!empty($additional_css)){{$additional_css}}@endif</textarea>
|
||||
<small id="additional_css_Help" class="form-text text-muted">
|
||||
@lang('messages.additional_css_help')
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-2">
|
||||
<div class="col-md-12">
|
||||
<button type="submit" class="btn btn-success btn-lg submit_btn float-right">
|
||||
@lang('messages.save')
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@section('footer')
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function(){
|
||||
|
||||
$('form#settings_form').validate();
|
||||
|
||||
$(document).on('click', '.btn-test-smtp', function(){
|
||||
|
||||
var smtpdata = {
|
||||
'host': $("input[name=MAIL_HOST]").val(),
|
||||
'port' : $("input[name=MAIL_PORT]").val(),
|
||||
'from_address' : $("input[name=MAIL_FROM_ADDRESS]").val(),
|
||||
'from_name' : $("input[name=MAIL_FROM_NAME]").val(),
|
||||
'encryption' : $("input[name=MAIL_ENCRYPTION]").val(),
|
||||
'username' : $("input[name=MAIL_USERNAME]").val(),
|
||||
'password' : $("input[name=MAIL_PASSWORD]").val(),
|
||||
};
|
||||
|
||||
var isValid = true;
|
||||
_.forEach(smtpdata, function(smtp){
|
||||
|
||||
if (!_.isEmpty(smtp)) {
|
||||
isValid = true && isValid;
|
||||
} else {
|
||||
isValid = false;
|
||||
}
|
||||
});
|
||||
|
||||
if (isValid) {
|
||||
var ladda = Ladda.create($('.btn-test-smtp')[0]);
|
||||
ladda.start();
|
||||
$.ajax({
|
||||
method:"GET",
|
||||
url: "/test-smtp",
|
||||
data: smtpdata,
|
||||
dataType: "json",
|
||||
success: function(response) {
|
||||
ladda.stop();
|
||||
if(response.success == true){
|
||||
toastr.success(response.msg);
|
||||
} else {
|
||||
toastr.error(response.msg);
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
isValid = true;
|
||||
alert('Please fill all the SMTP details.');
|
||||
}
|
||||
});
|
||||
|
||||
$(document).on('change', "#enable_acelle_mail", function(){
|
||||
if ($(this).is(":checked")) {
|
||||
$(".acelle_mail_details").show();
|
||||
} else {
|
||||
$(".acelle_mail_details").hide();
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
@@ -1,61 +0,0 @@
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="exampleModalLabel">
|
||||
@lang('messages.edit_subscription')
|
||||
</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form id="edit_subscription" action="{{action([\App\Http\Controllers\Superadmin\PackageSubscriptionsController::class, 'update'], [$subscription['id']])}}" method="PUT">
|
||||
<div class="form-group">
|
||||
<label for="start_date">
|
||||
@lang('messages.start_date')
|
||||
</label>
|
||||
<input type="date" name="start_date" id="start_date" class="form-control" value="{{$subscription['start_date']}}" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="end_date">
|
||||
@lang('messages.end_date')
|
||||
</label>
|
||||
<input type="date" name="end_date" id="end_date" class="form-control" value="{{$subscription['end_date']}}" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="status">
|
||||
@lang('messages.status')
|
||||
</label>
|
||||
<select name="status" id="status" class="form-control">
|
||||
@foreach($status_list as $key=>$value)
|
||||
<option value="{{$key}}"
|
||||
@if($key == $subscription['status'])
|
||||
selected
|
||||
@endif
|
||||
>
|
||||
{{$value}}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="transaction_id">
|
||||
@lang('messages.transaction_id')
|
||||
</label>
|
||||
<input type="text" name="payment_transaction_id" id="transaction_id" class="form-control" value="{{$subscription['payment_transaction_id']}}">
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary btn-sm float-right m-1">
|
||||
@lang('messages.update')
|
||||
</button>
|
||||
<button type="button" class="btn btn-secondary btn-sm float-right m-1" data-dismiss="modal">
|
||||
@lang('messages.close')
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function(){
|
||||
$('form#edit_subscription').validate();
|
||||
});
|
||||
</script>
|
||||
@@ -1,203 +0,0 @@
|
||||
@extends('layouts.app')
|
||||
@section('content')
|
||||
<div class="container">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-12">
|
||||
<div class="card card-outline card-info">
|
||||
<div class="card-header">
|
||||
<div class="card-title">
|
||||
<h3>
|
||||
<i class="fas fa-sync-alt"></i>
|
||||
@lang('messages.package_subscription')
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="row mb-4">
|
||||
<div class="col-md-12">
|
||||
<div class="box-group" id="accordion">
|
||||
<div class="panel box box-primary">
|
||||
<div class="box-header with-border">
|
||||
<h4 class="box-title">
|
||||
<a data-toggle="collapse" data-parent="#accordion" href="#collapseTwo">
|
||||
<i class="fas fa-filter"></i>
|
||||
@lang('messages.filter')
|
||||
</a>
|
||||
</h4>
|
||||
</div>
|
||||
<div id="collapseTwo" class="panel-collapse collapse">
|
||||
<div class="box-body">
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
<div class="form-group">
|
||||
<label for="filter_by_package">
|
||||
@lang('messages.package')
|
||||
</label>
|
||||
<select name="filter_by_package" id="filter_by_package" class="form-control">
|
||||
<option value="">
|
||||
@lang('messages.all')
|
||||
</option>
|
||||
@if(!empty($packages))
|
||||
@foreach($packages as $id => $package)
|
||||
<option value="{{$id}}">
|
||||
{{$package}}
|
||||
</option>
|
||||
@endforeach
|
||||
@endif
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="form-group">
|
||||
<label for="filter_by_status">
|
||||
@lang('messages.status')
|
||||
</label>
|
||||
<select name="filter_by_status" id="filter_by_status" class="form-control">
|
||||
<option value="">
|
||||
@lang('messages.all')
|
||||
</option>
|
||||
@if(!empty($subscription_status))
|
||||
@foreach($subscription_status as $id => $status)
|
||||
<option value="{{$id}}">
|
||||
{{$status}}
|
||||
</option>
|
||||
@endforeach
|
||||
@endif
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="table-responsive">
|
||||
<div id="export-btns" class="float-right"></div>
|
||||
<table class="table" id="package_subscription_table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>@lang('messages.name')</th>
|
||||
<th>@lang('messages.email')</th>
|
||||
<th>@lang('messages.package_name')</th>
|
||||
<th>@lang('messages.status')</th>
|
||||
<th>@lang('messages.start_date')</th>
|
||||
<th>@lang('messages.end_date')</th>
|
||||
<th>@lang('messages.price')</th>
|
||||
<th>@lang('messages.paid_via')</th>
|
||||
<th>@lang('messages.transaction_id')</th>
|
||||
<th>@lang('messages.action')</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@section('footer')
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function(){
|
||||
var package_subscription_table = $("#package_subscription_table").DataTable({
|
||||
processing: true,
|
||||
serverSide: true,
|
||||
ajax:{
|
||||
url: '/superadmin/package-subscription',
|
||||
data: function(d) {
|
||||
d.package_id = $('#filter_by_package').val();
|
||||
d.status = $('#filter_by_status').val();
|
||||
}
|
||||
},
|
||||
buttons: [
|
||||
{
|
||||
extend: 'csv',
|
||||
footer: true,
|
||||
exportOptions: {
|
||||
columns: [0,1,2,3,4,5,6,7,8]
|
||||
},
|
||||
title: '{{config("app.name") ."-". __("messages.package_subscription")}}'
|
||||
},
|
||||
{
|
||||
extend: 'excelHtml5',
|
||||
footer: false,
|
||||
exportOptions: {
|
||||
columns: [0,1,2,3,4,5,6,7,8]
|
||||
},
|
||||
title: '{{config("app.name") ."-". __("messages.package_subscription")}}'
|
||||
}
|
||||
],
|
||||
fixedHeader: false,
|
||||
columnDefs: [
|
||||
{
|
||||
targets: [2],
|
||||
orderable: false,
|
||||
searchable: false,
|
||||
},
|
||||
],
|
||||
columns: [
|
||||
{ data: 'user' , name: 'users.name'},
|
||||
{ data: 'user_email' , name: 'users.email'},
|
||||
{ data: 'package' , name: 'package'},
|
||||
{ data: 'status' , name: 'status'},
|
||||
{ data: 'start_date' , name: 'start_date'},
|
||||
{ data: 'end_date', name: 'end_date'},
|
||||
{ data: 'package_price' , name: 'package_price'},
|
||||
{ data: 'paid_via', name: 'paid_via'},
|
||||
{ data: 'payment_transaction_id' , name: 'payment_transaction_id'},
|
||||
{ data: 'action', name: 'action', sortable:false }
|
||||
],
|
||||
"fnDrawCallback": function (oSettings) {
|
||||
__convert_currency_in_datatable($('#package_subscription_table'));
|
||||
}
|
||||
});
|
||||
|
||||
package_subscription_table.buttons().container().appendTo($('#export-btns'));
|
||||
|
||||
$(document).on('click', '.edit_subscription', function(){
|
||||
var url = $(this).data('href');
|
||||
$.ajax({
|
||||
method: "GET",
|
||||
url: url,
|
||||
dataType: "html",
|
||||
success: function(response) {
|
||||
$("#modal_div").html(response).modal("show");
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$(document).on('submit', 'form#edit_subscription', function(e){
|
||||
e.preventDefault();
|
||||
var data = $('form#edit_subscription').serialize();
|
||||
var url = $('form#edit_subscription').attr('action');
|
||||
$.ajax({
|
||||
method:"PUT",
|
||||
url: url,
|
||||
data: data,
|
||||
dataType: "json",
|
||||
success:function(response) {
|
||||
if(response.success == true){
|
||||
toastr.success(response.msg);
|
||||
package_subscription_table.ajax.reload();
|
||||
$("#modal_div").modal("hide");
|
||||
} else {
|
||||
toastr.error(response.msg);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$(document).on('change', '#filter_by_package, #filter_by_status', function() {
|
||||
package_subscription_table.ajax.reload();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
@@ -1,39 +0,0 @@
|
||||
<div class="modal-dialog modal-lg">
|
||||
<form data-type="form" action="{{action([\App\Http\Controllers\Superadmin\SubscriptionPaymentController::class, 'adminSubscription'], [$package_id, $user_id])}}" method="PUT">
|
||||
{{ csrf_field() }}
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">
|
||||
@lang('messages.confirm_upgrade_account')
|
||||
</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="form-check">
|
||||
<input type="checkbox" id="disable_all_packages" name="disable_all_packages" value="1" class="form-check-input" aria-describedby="disable_all_packagesHelp" checked>
|
||||
<label class="form-check-label" for="disable_all_packages">
|
||||
@lang('messages.disable_current_packages')
|
||||
</label>
|
||||
</div>
|
||||
<p>
|
||||
<small id="disable_all_packagesHelp" class="form-text text-muted">
|
||||
@lang('messages.disable_current_packages_help_text')
|
||||
</small>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-sm btn-secondary" data-dismiss="modal">
|
||||
@lang('messages.close')
|
||||
</button>
|
||||
<button type='submit' class="btn btn-sm btn-success btn-sm submit_btn">
|
||||
@lang('messages.upgrade_account')
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
@@ -1,173 +0,0 @@
|
||||
<div class="modal-dialog modal-lg">
|
||||
<form id="add_user_form"
|
||||
action="{{action([\App\Http\Controllers\Superadmin\ManageUsersController::class, 'store'])}}" method="POST">
|
||||
{{ csrf_field() }}
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">
|
||||
@lang('messages.add_user')
|
||||
</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label for="name">
|
||||
@lang('messages.name')
|
||||
<span class="error">*</span>
|
||||
</label>
|
||||
|
||||
<input type="text" class="form-control"
|
||||
name="name" id="name" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label for="email">
|
||||
@lang('messages.email')
|
||||
<span class="error">*</span>
|
||||
</label>
|
||||
|
||||
<input type="email" class="form-control"
|
||||
name="email" id="email" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="form-group">
|
||||
<label for="password">
|
||||
@lang('messages.password')
|
||||
<span class="error">*</span>
|
||||
</label>
|
||||
|
||||
<input type="password" class="form-control"
|
||||
name="password" id="password" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<div class="form-group form-check">
|
||||
<input type="checkbox" class="form-check-input" id="is_active" name="is_active" value="1"
|
||||
checked>
|
||||
<label class="form-check-label" for="is_active">
|
||||
@lang('messages.is_active')
|
||||
<i class="fas fa-info-circle text-info" data-toggle="tooltip"
|
||||
title="@lang('messages.is_active_tooltip')"></i>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if(auth()->user()->hasRole([\App\Enums\User\RoleEnum::SUPERVISOR->value, \App\Enums\User\RoleEnum::ADMIN->value]))
|
||||
<div class="col-md-2">
|
||||
<div class="form-group form-check">
|
||||
<input type="checkbox" class="form-check-input" id="is_admin" name="is_admin">
|
||||
<label class="form-check-label" for="is_admin">
|
||||
@lang('messages.is_admin')
|
||||
<i class="fas fa-info-circle text-info" data-toggle="tooltip"
|
||||
title="@lang('messages.is_admin_tooltip')"></i>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if(auth()->user()->hasRole(\App\Enums\User\RoleEnum::SUPERVISOR->value))
|
||||
<div class="col-md-4">
|
||||
<div class="form-group form-check">
|
||||
<input type="checkbox" class="form-check-input" name="send_email" id="send_email"
|
||||
value="1">
|
||||
<label class="form-check-label" for="send_email">
|
||||
@lang('messages.send_email')
|
||||
<i class="fas fa-info-circle text-info" data-toggle="tooltip"
|
||||
title="@lang('messages.send_email_tooltip')"></i>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
<div class="form-group form-check">
|
||||
<input type="checkbox" class="form-check-input" name="can_create_form"
|
||||
id="can_create_form" value="1">
|
||||
<label class="form-check-label" for="can_create_form">
|
||||
@lang('messages.can_create_form')
|
||||
<i class="fas fa-info-circle text-info" data-toggle="tooltip"
|
||||
title="@lang('messages.can_create_form_tooltip')"></i>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
<div class="card assign-form p-3">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="form-group">
|
||||
<label for="assign_form">
|
||||
@lang('messages.assign_forms'):
|
||||
</label>
|
||||
<select multiple class="form-control" id="assign_form" name="form_id[]">
|
||||
@foreach($forms as $key => $value)
|
||||
<option value="{{$key}}">
|
||||
{{$value}}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<h5>@lang('messages.permission_for_forms'):</h5>
|
||||
<div class="row">
|
||||
@if(auth()->user()->hasRole(\App\Enums\User\RoleEnum::SUPERVISOR->value))
|
||||
<div class="col-md-4">
|
||||
<div class="form-group form-check">
|
||||
<input type="checkbox" class="form-check-input" name="permissions[]"
|
||||
id="form_design"
|
||||
value="can_design_form">
|
||||
<label class="form-check-label" for="form_design">
|
||||
@lang('messages.can_design_form')
|
||||
<i class="fas fa-info-circle text-info" data-toggle="tooltip"
|
||||
title="@lang('messages.can_design_form_tooltip')"></i>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="col-md-4">
|
||||
<div class="form-group form-check">
|
||||
<input type="checkbox" class="form-check-input" name="permissions[]" id="form_data"
|
||||
value="can_view_data">
|
||||
<label class="form-check-label" for="form_data">
|
||||
@lang('messages.can_view_data')
|
||||
<i class="fas fa-info-circle text-info" data-toggle="tooltip"
|
||||
title="@lang('messages.can_view_data_tooltip')"></i>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-group form-check">
|
||||
<input type="checkbox" class="form-check-input" name="permissions[]" id="form_view"
|
||||
value="can_view_form">
|
||||
<label class="form-check-label" for="form_view">
|
||||
@lang('messages.can_view_form')
|
||||
<i class="fas fa-info-circle text-info" data-toggle="tooltip"
|
||||
title="@lang('messages.can_view_form_tooltip')"></i>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="submit" class="btn btn-sm btn-primary submit_btn">
|
||||
@lang('messages.save')
|
||||
</button>
|
||||
<button type="button" class="btn btn-sm btn-secondary" data-dismiss="modal">
|
||||
@lang('messages.close')
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
@@ -1,241 +0,0 @@
|
||||
<div class="modal-dialog modal-lg">
|
||||
<form id="edit_user_form"
|
||||
action="{{action([\App\Http\Controllers\Superadmin\ManageUsersController::class, 'update'], [$user->id])}}"
|
||||
method="PUT">
|
||||
{{ csrf_field() }}
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">
|
||||
@lang('messages.edit_user')
|
||||
</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<input type="hidden" id="user_id" value="{{$user->id}}">
|
||||
<div class="modal-body">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label for="name">
|
||||
@lang('messages.name')
|
||||
<span class="error">*</span>
|
||||
</label>
|
||||
|
||||
<input type="text" class="form-control"
|
||||
name="name" id="name" value="{{$user->name}}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label for="email">
|
||||
@lang('messages.email')
|
||||
<span class="error">*</span>
|
||||
</label>
|
||||
|
||||
<input type="email" class="form-control"
|
||||
name="email" id="email" value="{{$user->email}}" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="form-group">
|
||||
<label for="password">
|
||||
@lang('messages.password')
|
||||
</label>
|
||||
<input type="password" class="form-control"
|
||||
name="password" id="password" aria-describedby="passwordHelp">
|
||||
<small id="passwordHelp" class="form-text text-muted">
|
||||
@lang('messages.dont_want_to_change_keep_it_blank')
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<div class="form-group form-check">
|
||||
<input type="checkbox" class="form-check-input" id="is_active" name="is_active" value="1"
|
||||
@if($user->is_active) checked @endif>
|
||||
<label class="form-check-label" for="is_active">
|
||||
@lang('messages.is_active')
|
||||
<i class="fas fa-info-circle text-info" data-toggle="tooltip"
|
||||
title="@lang('messages.is_active_tooltip')"></i>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if(auth()->user()->hasRole([\App\Enums\User\RoleEnum::SUPERVISOR->value, \App\Enums\User\RoleEnum::ADMIN->value], 'web'))
|
||||
<div class="col-md-2">
|
||||
<div class="form-group form-check">
|
||||
<input type="checkbox" class="form-check-input" id="is_admin" name="is_admin"
|
||||
@if($user->hasRole(\App\Enums\User\RoleEnum::ADMIN->value)) checked @endif>
|
||||
<label class="form-check-label" for="is_admin">
|
||||
@lang('messages.is_admin')
|
||||
<i class="fas fa-info-circle text-info" data-toggle="tooltip"
|
||||
title="@lang('messages.is_admin_tooltip')"></i>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if(auth()->user()->hasRole(\App\Enums\User\RoleEnum::SUPERVISOR->value))
|
||||
<div class="col-md-4">
|
||||
<div class="form-group form-check">
|
||||
<input type="checkbox" class="form-check-input" name="send_email" id="send_email"
|
||||
value="1">
|
||||
<label class="form-check-label" for="send_email">
|
||||
@lang('messages.send_email')
|
||||
<i class="fas fa-info-circle text-info" data-toggle="tooltip"
|
||||
title="@lang('messages.send_email_tooltip')"></i>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
<div class="form-group form-check">
|
||||
<input type="checkbox" class="form-check-input" name="can_create_form"
|
||||
id="can_create_form" value="1" @if($user->can_create_form) checked @endif>
|
||||
<label class="form-check-label" for="can_create_form">
|
||||
@lang('messages.can_create_form')
|
||||
<i class="fas fa-info-circle text-info" data-toggle="tooltip"
|
||||
title="@lang('messages.can_create_form_tooltip')"></i>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
@php
|
||||
$form_ids = $assigned_forms->pluck('form_id')->toArray();
|
||||
@endphp
|
||||
@if($assigned_forms->count() > 0)
|
||||
<h5>@lang('messages.assigned_forms'):</h5>
|
||||
@foreach($assigned_forms as $key => $assigned_form)
|
||||
<div class="card edit-assigned-form mb-4 p-3">
|
||||
<label>
|
||||
<i class="fab fa-wpforms"></i>
|
||||
{{$assigned_form->form->name}}
|
||||
</label>
|
||||
<div class="row">
|
||||
<input type="hidden" name="edit_assigned_form_id[]" value="{{$assigned_form->id}}">
|
||||
@if(auth()->user()->hasRole(\App\Enums\User\RoleEnum::SUPERVISOR->value))
|
||||
<div class="col-md-4">
|
||||
<div class="form-group form-check">
|
||||
<input type="checkbox" class="form-check-input"
|
||||
name="edit_permissions[{{$assigned_form->id}}][]"
|
||||
id="form_design_{{$key}}" value="can_design_form"
|
||||
@if(in_array('can_design_form', $assigned_form->permissions))
|
||||
checked
|
||||
@endif>
|
||||
<label class="form-check-label" for="form_design_{{$key}}">
|
||||
@lang('messages.can_design_form')
|
||||
<i class="fas fa-info-circle text-info" data-toggle="tooltip"
|
||||
title="@lang('messages.can_design_form_tooltip')"></i>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
<div class="col-md-4">
|
||||
<div class="form-group form-check">
|
||||
<input type="checkbox" class="form-check-input"
|
||||
name="edit_permissions[{{$assigned_form->id}}][]"
|
||||
id="form_data_{{$key}}" value="can_view_data"
|
||||
@if(in_array('can_view_data', $assigned_form->permissions))
|
||||
checked
|
||||
@endif>
|
||||
<label class="form-check-label" for="form_data_{{$key}}">
|
||||
@lang('messages.can_view_data')
|
||||
<i class="fas fa-info-circle text-info" data-toggle="tooltip"
|
||||
title="@lang('messages.can_view_data_tooltip')"></i>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-group form-check">
|
||||
<input type="checkbox" class="form-check-input"
|
||||
name="edit_permissions[{{$assigned_form->id}}][]"
|
||||
id="can_view_form_{{$key}}" value="can_view_form"
|
||||
@if(in_array('can_view_form', $assigned_form->permissions))
|
||||
checked
|
||||
@endif>
|
||||
<label class="form-check-label" for="can_view_form_{{$key}}">
|
||||
@lang('messages.can_view_form')
|
||||
<i class="fas fa-info-circle text-info" data-toggle="tooltip"
|
||||
title="@lang('messages.can_view_form_tooltip')"></i>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
@endif
|
||||
<div class="card assign-form p-3">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="form-group">
|
||||
<label for="assign_form">
|
||||
@lang('messages.assign_forms'):
|
||||
</label>
|
||||
<select multiple class="form-control" id="assign_form" name="form_id[]">
|
||||
@foreach($forms as $key => $value)
|
||||
@if(!in_array($key, $form_ids))
|
||||
<option value="{{$key}}">
|
||||
{{$value}}
|
||||
</option>
|
||||
@endif
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<h5>@lang('messages.permission_for_forms'):</h5>
|
||||
<div class="row">
|
||||
@if(auth()->user()->hasRole(\App\Enums\User\RoleEnum::SUPERVISOR->value))
|
||||
<div class="col-md-4">
|
||||
<div class="form-group form-check">
|
||||
<input type="checkbox" class="form-check-input" name="permissions[]"
|
||||
id="form_design" value="can_design_form">
|
||||
<label class="form-check-label" for="form_design">
|
||||
@lang('messages.can_design_form')
|
||||
<i class="fas fa-info-circle text-info" data-toggle="tooltip"
|
||||
title="@lang('messages.can_design_form_tooltip')"></i>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="col-md-4">
|
||||
<div class="form-group form-check">
|
||||
<input type="checkbox" class="form-check-input" name="permissions[]" id="form_data"
|
||||
value="can_view_data">
|
||||
<label class="form-check-label" for="form_data">
|
||||
@lang('messages.can_view_data')
|
||||
<i class="fas fa-info-circle text-info" data-toggle="tooltip"
|
||||
title="@lang('messages.can_view_data_tooltip')"></i>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-group form-check">
|
||||
<input type="checkbox" class="form-check-input" name="permissions[]" id="form_view"
|
||||
value="can_view_form">
|
||||
<label class="form-check-label" for="form_view">
|
||||
@lang('messages.can_view_form')
|
||||
<i class="fas fa-info-circle text-info" data-toggle="tooltip"
|
||||
title="@lang('messages.can_view_form_tooltip')"></i>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="submit" class="btn btn-sm btn-primary submit_btn">
|
||||
@lang('messages.update')
|
||||
</button>
|
||||
<button type="button" class="btn btn-sm btn-secondary" data-dismiss="modal">
|
||||
@lang('messages.close')
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
@@ -1,354 +0,0 @@
|
||||
@extends('layouts.app')
|
||||
@section('content')
|
||||
<div class="container">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-12">
|
||||
<div class="card card-outline card-info">
|
||||
<div class="card-header">
|
||||
<div class="card-title">
|
||||
<h3>
|
||||
<i class="fas fa-users-cog"></i>
|
||||
@lang('messages.all_users')
|
||||
</h3>
|
||||
</div>
|
||||
<button type="button" class="btn btn-sm btn-primary float-right" data-href="{{action([\App\Http\Controllers\Superadmin\ManageUsersController::class, 'create'])}}" id="add_user">
|
||||
<i class="fas fa-user-plus"></i>
|
||||
@lang('messages.add')
|
||||
</button>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="row mb-4">
|
||||
<div class="col-md-12">
|
||||
<div class="box-group" id="accordion">
|
||||
<div class="panel box box-primary">
|
||||
<div class="box-header with-border">
|
||||
<h4 class="box-title">
|
||||
<a data-toggle="collapse" data-parent="#accordion" href="#collapseTwo">
|
||||
<i class="fas fa-filter"></i>
|
||||
@lang('messages.filter')
|
||||
</a>
|
||||
</h4>
|
||||
</div>
|
||||
<div id="collapseTwo" class="panel-collapse collapse">
|
||||
<div class="box-body">
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
<div class="form-group">
|
||||
<label for="filter_by_status">
|
||||
@lang('messages.status')
|
||||
</label>
|
||||
<select name="filter_by_status" id="filter_by_status" class="form-control">
|
||||
<option value="">
|
||||
@lang('messages.all')
|
||||
</option>
|
||||
<option value="active">
|
||||
@lang('messages.active')
|
||||
</option>
|
||||
<option value="inactive">
|
||||
@lang('messages.inactive')
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="table-responsive">
|
||||
<table class="table" id="users_table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>@lang('messages.name')</th>
|
||||
<th>@lang('messages.email')</th>
|
||||
<th>
|
||||
@lang('messages.is_active')
|
||||
</th>
|
||||
<th>
|
||||
@lang('messages.created_at')
|
||||
</th>
|
||||
<th>@lang('messages.action')</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody></tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal" id="user_modal" tabindex="-1" role="dialog"></div>
|
||||
@endsection
|
||||
@section('footer')
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function(){
|
||||
var users_table = $('#users_table').DataTable({
|
||||
processing: true,
|
||||
serverSide: true,
|
||||
ajax:{
|
||||
url: '/superadmin/users',
|
||||
data: function(d) {
|
||||
d.status = $('#filter_by_status').val();
|
||||
}
|
||||
},
|
||||
buttons: [
|
||||
{
|
||||
extend: 'csv',
|
||||
footer: true,
|
||||
exportOptions: {
|
||||
columns: [0,1,2,3]
|
||||
},
|
||||
title: '{{config("app.name") ."-". __("messages.all_users")}}'
|
||||
},
|
||||
{
|
||||
extend: 'excelHtml5',
|
||||
footer: false,
|
||||
exportOptions: {
|
||||
columns: [0,1,2,3]
|
||||
},
|
||||
title: '{{config("app.name") ."-". __("messages.all_users")}}'
|
||||
}
|
||||
],
|
||||
dom: 'lfrtip',
|
||||
fixedHeader: false,
|
||||
columns: [
|
||||
{ data: 'name' , name: 'name'},
|
||||
{ data: 'email' , name: 'email'},
|
||||
{ data: 'is_active' , name: 'is_active'},
|
||||
{ data: 'created_at', name: 'created_at'},
|
||||
{ data: 'action', name: 'action', sortable:false }
|
||||
]
|
||||
});
|
||||
|
||||
users_table.buttons().container().appendTo($('#export-btns'));
|
||||
|
||||
$(document).on('click', '.toggle_is_active', function(){
|
||||
url = $(this).data('href');
|
||||
$.ajax({
|
||||
method:"GET",
|
||||
url: url,
|
||||
dataType: "json",
|
||||
success:function(response) {
|
||||
if(response.success == true){
|
||||
toastr.success(response.msg);
|
||||
users_table.ajax.reload();
|
||||
} else {
|
||||
toastr.error(response.msg);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$(document).on('click', '.delete_user', function () {
|
||||
var url = $(this).data('href');
|
||||
|
||||
if (confirm('Are you sure?')) {
|
||||
$.ajax({
|
||||
method:"DELETE",
|
||||
url: url,
|
||||
dataType: "json",
|
||||
success:function(response) {
|
||||
if(response.success == true){
|
||||
toastr.success(response.msg);
|
||||
users_table.ajax.reload();
|
||||
} else {
|
||||
toastr.error(response.msg);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
$(document).on('click', '#add_user', function () {
|
||||
var url = $(this).data('href');
|
||||
$.ajax({
|
||||
method: "GET",
|
||||
url: url,
|
||||
dataType: "html",
|
||||
success: function (response) {
|
||||
$("#user_modal").html(response).modal('show');
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$(document).on('click', '.edit_user', function () {
|
||||
var url = $(this).data('href');
|
||||
$.ajax({
|
||||
method: "GET",
|
||||
url: url,
|
||||
dataType: "html",
|
||||
success: function (response) {
|
||||
$("#user_modal").html(response).modal('show');
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$(document).on('click', '.upgrade_account', function () {
|
||||
var url = $(this).data('href');
|
||||
$.ajax({
|
||||
method: "GET",
|
||||
url: url,
|
||||
dataType: "html",
|
||||
success: function (response) {
|
||||
$("#user_modal").html(response).modal('show');
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$("#user_modal").on('shown.bs.modal', function () {
|
||||
if ($("form#add_user_form").length) {
|
||||
$("form#add_user_form").validate({
|
||||
rules: {
|
||||
email: {
|
||||
email: true,
|
||||
remote: {
|
||||
url: "/superadmin/users/check-email-exist",
|
||||
type: "post",
|
||||
data: {
|
||||
email: function() {
|
||||
return $( "#email" ).val();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
messages: {
|
||||
email: {
|
||||
remote: '{{ __("validation.unique", ["attribute" => __("messages.email")]) }}'
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if ($("form#edit_user_form").length) {
|
||||
$("form#edit_user_form").validate({
|
||||
rules: {
|
||||
email: {
|
||||
email: true,
|
||||
remote: {
|
||||
url: "/superadmin/users/check-email-exist",
|
||||
type: "post",
|
||||
data: {
|
||||
email: function() {
|
||||
return $( "#email" ).val();
|
||||
},
|
||||
user_id: $('input#user_id').val()
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
messages: {
|
||||
email: {
|
||||
remote: '{{ __("validation.unique", ["attribute" => __("messages.email")]) }}'
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if ($("#form_design").length) {
|
||||
$(document).on('change', '#form_design', function(){
|
||||
if ($("#form_design").is(":checked")) {
|
||||
$("#form_view").attr('checked', true);
|
||||
} else {
|
||||
$("#form_view").attr('checked', false);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
$(document).on('submit', 'form#add_user_form', function (e) {
|
||||
e.preventDefault();
|
||||
var data = $("form#add_user_form").serialize();
|
||||
var url = $("form#add_user_form").attr('action');
|
||||
var ladda = Ladda.create(document.querySelector('.submit_btn'));
|
||||
ladda.start();
|
||||
$.ajax({
|
||||
method: "POST",
|
||||
url: url,
|
||||
dataType: "json",
|
||||
data: data,
|
||||
success: function (response) {
|
||||
ladda.stop();
|
||||
if (response.success) {
|
||||
$("#user_modal").modal('hide');
|
||||
toastr.success(response.msg);
|
||||
users_table.ajax.reload();
|
||||
} else {
|
||||
toastr.error(response.msg);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$(document).on('submit', 'form#edit_user_form', function (e) {
|
||||
e.preventDefault();
|
||||
var data = $("form#edit_user_form").serialize();
|
||||
var url = $("form#edit_user_form").attr('action');
|
||||
var ladda = Ladda.create(document.querySelector('.submit_btn'));
|
||||
ladda.start();
|
||||
$.ajax({
|
||||
method: "PUT",
|
||||
url: url,
|
||||
dataType: "json",
|
||||
data: data,
|
||||
success: function (response) {
|
||||
ladda.stop();
|
||||
if (response.success) {
|
||||
$("#user_modal").modal('hide');
|
||||
toastr.success(response.msg);
|
||||
users_table.ajax.reload();
|
||||
} else {
|
||||
toastr.error(response.msg);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$(document).on('submit', 'form[data-type="form"]', function (e) {
|
||||
e.preventDefault();
|
||||
var data = $(this).serialize();
|
||||
var url = $(this).attr('action');
|
||||
var ladda = Ladda.create(this.querySelector('.submit_btn'));
|
||||
ladda.start();
|
||||
$.ajax({
|
||||
method: "PUT",
|
||||
url: url,
|
||||
dataType: "json",
|
||||
data: data,
|
||||
success: function (response) {
|
||||
ladda.stop();
|
||||
if (response.success) {
|
||||
$("#user_modal").modal('hide');
|
||||
toastr.success(response.msg);
|
||||
} else {
|
||||
toastr.error(response.msg);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$(document).on('change', '#filter_by_status', function() {
|
||||
users_table.ajax.reload();
|
||||
});
|
||||
|
||||
$(document).on('click', '.confirm-subscription', function(e){
|
||||
let url = $(this).data('href');
|
||||
$.ajax({
|
||||
method: "GET",
|
||||
url: url,
|
||||
dataType: "html",
|
||||
success: function (response) {
|
||||
$("#user_modal").html(response).modal('show');
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
@@ -1,101 +0,0 @@
|
||||
<div class="modal-dialog modal-lg">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">
|
||||
@lang('messages.upgrade_account')
|
||||
</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
|
||||
@if(count($active_packages) <= 0)
|
||||
<div class="alert alert-danger" role="alert">
|
||||
<span class="text-white">@lang('messages.no_packages_found')</span>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="row">
|
||||
@foreach($active_packages as $package)
|
||||
<div class="col-md-6">
|
||||
<div class="card card-outline card-success on_hover">
|
||||
<div class="card-header">
|
||||
<div class="text-center">
|
||||
<h5>
|
||||
{{$package->name}}
|
||||
</h5>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body text-center">
|
||||
@if($package->no_of_active_forms != 0)
|
||||
<span>
|
||||
<i class="far fa-check-circle text-success"></i>
|
||||
@lang('messages.no_of_forms',[
|
||||
'active_form' => $package->no_of_active_forms])
|
||||
</span>
|
||||
@else
|
||||
<span>
|
||||
<i class="far fa-check-circle text-success"></i>
|
||||
@lang('messages.unlimited_forms')
|
||||
</span>
|
||||
@endif
|
||||
<hr>
|
||||
@if($package->is_form_downloadable)
|
||||
<span>
|
||||
<i class="far fa-check-circle text-success"></i>
|
||||
@lang('messages.form_code_download')
|
||||
</span>
|
||||
@else
|
||||
<span>
|
||||
<i class="far fa-times-circle text-danger"></i>
|
||||
@lang('messages.form_code_download')
|
||||
</span>
|
||||
@endif
|
||||
<hr>
|
||||
@php
|
||||
$price_interval = __('messages.'.$package->price_interval);
|
||||
@endphp
|
||||
@if($package->price != 0)
|
||||
<h4>
|
||||
<span class="currency">
|
||||
{{ number_format((float)$package->price, 2, '.', '')}}
|
||||
</span>
|
||||
<small class="text-muted">
|
||||
@lang('messages.subscription_price',[
|
||||
'interval' => $package->interval,
|
||||
'price_interval' => $price_interval
|
||||
])
|
||||
</small>
|
||||
</h4>
|
||||
@else
|
||||
<h4>
|
||||
@lang('messages.free_for_interval', [
|
||||
'interval' => $package->interval,
|
||||
'price_interval' => $price_interval
|
||||
])
|
||||
</h4>
|
||||
@endif
|
||||
</div>
|
||||
<div class="card-footer text-center">
|
||||
<button type="button" class="btn btn-block btn-success btn-sm confirm-subscription"
|
||||
data-href="{{action([\App\Http\Controllers\Superadmin\SubscriptionPaymentController::class, 'confirmAdminSubscription'], [$package->id, $user->id])}}">
|
||||
@lang('messages.subscribe')
|
||||
</button>
|
||||
{{$package->description}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@if($loop->iteration%3 == 0)
|
||||
<div class="clearfix"></div>
|
||||
@endif
|
||||
@endforeach
|
||||
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-sm btn-secondary" data-dismiss="modal">
|
||||
@lang('messages.close')
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
Reference in New Issue
Block a user