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:
Deploy Bot
2025-12-31 12:00:00 +02:00
parent afea76b053
commit 4898f5ec7f
381 changed files with 9105 additions and 65477 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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">&times;</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>

View File

@@ -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

View File

@@ -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">&times;</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>

View File

@@ -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">&times;</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>

View File

@@ -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">&times;</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>

View File

@@ -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

View File

@@ -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">&times;</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>