This commit is contained in:
sayaliparab
2024-05-29 14:54:46 +05:30
19 changed files with 877 additions and 154 deletions

View File

@@ -4,10 +4,162 @@ namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\ManageModule;
use App\Models\IamPrincipal;
use App\Models\ManageModuleLink;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use Exception;
use Illuminate\Support\Facades\Mail;
use App\Mail\Add_Subadmin;
class ManageSubAdminController extends Controller
{
public function index(){
return view('Admin.pages.manage_users.manage_sub_admin.manage_subadmin');
$sub_admins_module = ManageModule::latest()->get();
$sub_admins_data = IamPrincipal::where('principal_type_xid', 2)->latest()->get();
return view('Admin.pages.manage_users.manage_sub_admin.manage_subadmin',compact('sub_admins_data','sub_admins_module'));
}
public function create()
{
$sub_admins_module = ManageModule::latest()->get();
return view('admin.pages.manage_users.manage_sub_admin.create', compact('sub_admins_module'));
}
public function store_subadmin(Request $request)
{
/*
Created By : Megha
Created at : 12 Feb 2024
Use : To store sub admin form.
*/
try {
// DB::beginTransaction();
$sub_admin = new IamPrincipal();
$sub_admin->first_name = $request->input('sub_admin_name');
$sub_admin->user_name = 'sub_admin';
$sub_admin->principal_type_xid = 2;
$sub_admin->principal_source_xid = Auth::guard('admin')->user()->principal_source_xid;
$sub_admin->email_address = $request->input('sub_admin_email');
$sub_admin->password = bcrypt($request->input('password'));
$sub_admin->save();
$moduleIds = $request->input('module_id');
foreach ($moduleIds as $moduleId) {
$sub_admin_permission = new ManageModuleLink;
$sub_admin_permission->principal_xid = $sub_admin->id;
$sub_admin_permission->manage_modules_xid = $moduleId;
$sub_admin_permission->save();
}
$mailData =[
'username'=>$request->input('sub_admin_name'),
'password'=>$request->input('password'),
];
// Mail::to($sub_admin->email_address)->send(new Add_Subadmin($mailData));
$mail = Mail::to($request->input('sub_admin_email'))->send(new Add_Subadmin($mailData));
// dd($mail);
// DB::commit();
return jsonResponseWithSuccessMessage(__('success.save_data'));
// return response()->json(['status'=>200]);
// return $voucher_data;
} catch (Exception $e) {
DB::rollBack();
Log::error("restaurant Store Page Load Failed " . $e->getMessage());
return jsonResponseWithErrorMessage(__('auth.something_went_wrong'), 500);
}
}
public function edit($id)
{
// dd($id);
$sub_admins_module = ManageModule::latest()->get();
$edit_sub_admin = IamPrincipal::with(['moduleLinks' => function ($query) {
$query->with('module');
}])->find($id);
return view('admin.pages.manage_users.manage_sub_admin.edit', compact('edit_sub_admin', 'sub_admins_module'));
}
public function delete_sub_admin($id)
{
/*
Created By : Megha
Created at : 14 Feb 2024
Use : To Delete Admin.
*/
try {
DB::beginTransaction();
$passport = IamPrincipal::find($id);
$passport->delete();
DB::commit();
return response()->json(['success' => true, 'status' => 200]);
} catch (Exception $e) {
DB::rollBack();
Log::error("delete_passport function Load Failed " . $e->getMessage());
return response()->json(['success' => false, 'status' => 500, 'message' => __('auth.something_went_wrong')]);
}
}
public function update_subadmin(Request $request)
{
/*
Created By : Megha
Created at : 14 Feb 2024
Use : To update sub admin form.
*/
try {
DB::beginTransaction();
$sub_admin = IamPrincipal::find($request->sub_admin_id);
$sub_admin->user_name = 'sub_admin';
$sub_admin->first_name = $request->input('sub_admin_name');
$sub_admin->principal_type_xid = 2;
$sub_admin->principal_source_xid = Auth::guard('admin')->user()->principal_source_xid;
$sub_admin->email_address = $request->input('sub_admin_email');
// $sub_admin->password = bcrypt($request->input('password'));
$sub_admin->save();
$moduleIds = $request->input('module_id');
// dd($moduleIds);
$update_module = ManageModuleLink::where('principal_xid', $sub_admin->id)->delete();
foreach ($moduleIds as $moduleId) {
$sub_admin_permission = new ManageModuleLink;
$sub_admin_permission->principal_xid = $sub_admin->id;
$sub_admin_permission->manage_modules_xid = $moduleId;
$sub_admin_permission->save();
}
DB::commit();
return jsonResponseWithSuccessMessage(__('success.save_data'));
// return $voucher_data;
} catch (Exception $e) {
DB::rollBack();
Log::error("restaurant Store Page Load Failed " . $e->getMessage());
return jsonResponseWithErrorMessage(__('auth.something_went_wrong'), 500);
}
}
}

61
app/Mail/Add_Subadmin.php Normal file
View File

@@ -0,0 +1,61 @@
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Mail\Mailables\Content;
use Illuminate\Mail\Mailables\Envelope;
use Illuminate\Queue\SerializesModels;
class Add_Subadmin extends Mailable
{
use Queueable, SerializesModels;
public $mailData;
/**
* Create a new message instance.
*/
public function __construct($mailData)
{
$this->mailData = $mailData;
}
/**
* Get the message envelope.
*/
// public function envelope(): Envelope
// {
// return new Envelope(
// subject: 'You add in subadmin ',
// );
// }
// /**
// * Get the message content definition.
// */
// public function content(): Content
// {
// return new Content(
// view: 'mail.subadmin',
// );
// }
// /**
// * Get the attachments for the message.
// *
// * @return array<int, \Illuminate\Mail\Mailables\Attachment>
// */
// public function attachments(): array
// {
// return [];
// }
public function build()
{
// $otp = $this->otp;
return $this->subject('OTP From Cheers to the Session')->view('mail.subadmin');
}
}

View File

@@ -8,11 +8,9 @@ use Illuminate\Notifications\Notifiable;
use Tymon\JWTAuth\Contracts\JWTSubject;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use App\Models\ManageFeedback;
use App\Models\ManageModuleLink;
use App\Models\ManageModule;
use App\Models\ManageState;
use App\Models\admin\ManageFeedback;
use App\Models\admin\ManageModuleLink;
use App\Models\admin\ManageModule;
use App\Models\OrderedPassport;
@@ -42,10 +40,6 @@ class IamPrincipal extends Authenticatable implements JWTSubject
'notification_status',
'deleted_by_admin'
];
public function state()
{
return $this->belongsTo(ManageState::class, 'state_xid', 'id');
}
public function moduleLinks()
{

View File

@@ -0,0 +1,34 @@
<?php
namespace App\Models\admin;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use App\Models\IamPrincipal;
use App\Models\admin\FeedbackReaction;
class ManageFeedback extends Model
{
use SoftDeletes;
use HasFactory;
protected $table = "manage_feedback";
protected $fillable = ['principal_xid', 'feedback_reaction_xid', 'comment'];
public function principal()
{
return $this->belongsTo(IamPrincipal::class, 'principal_xid', 'id')->withDefault([
'id' => null, // Default id value
// Add more default attributes as needed
]);
}
public function feedbackReaction()
{
return $this->belongsTo(FeedbackReaction::class, 'feedback_reaction_xid', 'feedback_reaction_xid');
}
}

View File

@@ -6,16 +6,12 @@ use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class ManageModule extends Model
{
use HasFactory;
use SoftDeletes;
protected $table='manage_modules';
protected $table ='manage_module';
protected $dates = ['deleted_at'];
public function moduleLinks()
{
return $this->hasMany(ManageModuleLink::class);
}
}

View File

@@ -8,8 +8,12 @@ use Illuminate\Database\Eloquent\Model;
class ManageModuleLink extends Model
{
use HasFactory;
protected $table='manage_module_links';
protected $table ='manage_module_link';
protected $fillable =[
'principal_xid',
'manage_modules_xid'
];
public function iamprinciple()
{
return $this->belongsTo(IamPrincipal::class);

56
composer.lock generated
View File

@@ -4617,38 +4617,27 @@
"time": "2024-04-27T21:32:50+00:00"
},
{
"name": "sabberworm/php-css-parser",
"version": "v8.5.1",
"name": "stella-maris/clock",
"version": "0.1.7",
"source": {
"type": "git",
"url": "https://github.com/MyIntervals/PHP-CSS-Parser.git",
"reference": "4a3d572b0f8b28bb6fd016ae8bbfc445facef152"
"url": "https://github.com/stella-maris-solutions/clock.git",
"reference": "fa23ce16019289a18bb3446fdecd45befcdd94f8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/MyIntervals/PHP-CSS-Parser/zipball/4a3d572b0f8b28bb6fd016ae8bbfc445facef152",
"reference": "4a3d572b0f8b28bb6fd016ae8bbfc445facef152",
"url": "https://api.github.com/repos/stella-maris-solutions/clock/zipball/fa23ce16019289a18bb3446fdecd45befcdd94f8",
"reference": "fa23ce16019289a18bb3446fdecd45befcdd94f8",
"shasum": ""
},
"require": {
"ext-iconv": "*",
"php": ">=5.6.20"
},
"require-dev": {
"phpunit/phpunit": "^5.7.27"
},
"suggest": {
"ext-mbstring": "for parsing UTF-8 CSS"
"php": "^7.0|^8.0",
"psr/clock": "^1.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "9.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Sabberworm\\CSS\\": "src/"
"StellaMaris\\Clock\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -4657,29 +4646,22 @@
],
"authors": [
{
"name": "Raphael Schweikert"
},
{
"name": "Oliver Klee",
"email": "github@oliverklee.de"
},
{
"name": "Jake Hotson",
"email": "jake.github@qzdesign.co.uk"
"name": "Andreas Heigl",
"role": "Maintainer"
}
],
"description": "Parser for CSS Files written in PHP",
"homepage": "https://www.sabberworm.com/blog/2010/6/10/php-css-parser",
"description": "A pre-release of the proposed PSR-20 Clock-Interface",
"homepage": "https://gitlab.com/stella-maris/clock",
"keywords": [
"css",
"parser",
"stylesheet"
"clock",
"datetime",
"point in time",
"psr20"
],
"support": {
"issues": "https://github.com/MyIntervals/PHP-CSS-Parser/issues",
"source": "https://github.com/MyIntervals/PHP-CSS-Parser/tree/v8.5.1"
"source": "https://github.com/stella-maris-solutions/clock/tree/0.1.7"
},
"time": "2024-02-15T16:41:13+00:00"
"time": "2022-11-25T16:15:06+00:00"
},
{
"name": "symfony/clock",

View File

@@ -0,0 +1,33 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('manage_module', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('slug');
$table->integer('created_by')->nullable();
$table->integer('modified_by')->nullable();
$table->softDeletes();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('manage_module');
}
};

View File

@@ -0,0 +1,32 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('manage_module_link', function (Blueprint $table) {
$table->id();
$table->unsignedBigInteger('principal_xid');
$table->foreign('principal_xid')->references('id')->on('iam_principal')->onDelete('cascade');
$table->unsignedBigInteger('manage_modules_xid');
$table->foreign('manage_modules_xid')->references('id')->on('manage_module')->onDelete('cascade');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('manage_module_link');
}
};

View File

@@ -20,6 +20,9 @@ $(document).on("click", "#add_sub_admin_form_btn", function (e) {
password: {
required: true
}
,"module_id[]":{
required: true
}
},
messages: {
sub_admin_name: {
@@ -32,6 +35,9 @@ $(document).on("click", "#add_sub_admin_form_btn", function (e) {
},
password: {
required: 'Please enter this filed'
},
"module_id[]":{
required: 'Please enter this filed'
}
},
errorClass: 'error-message',
@@ -58,12 +64,12 @@ $(document).on("click", "#add_sub_admin_form_btn", function (e) {
if (result.status_code == 200) {
toastr.success('Data Added Sucessfully');
setTimeout(function () {
window.location.href = base_url + "/manage_sub_admin";
window.location.href = base_url + "/manage-sub-admin";
}, 2000);
} else {
toastr.error('Something Went Wrong');
setTimeout(function () {
window.location.href = base_url + "/manage_sub_admin";
window.location.href = base_url + "/manage-sub-admin";
}, 2000);
}
$('#add_sub_admin_form_btn').attr('disabled', false);

View File

@@ -43,22 +43,22 @@ $('#update_admin_btn').on("click", function (e) {
if (result.status_code == 200) {
toastr.success('Data Updated Sucessfully');
setTimeout(function() {
window.location.href = base_url + "/manage_sub_admin";
window.location.href = base_url + "/manage-sub-admin";
}, 2000);
} else {
toastr.error('Something Went Wrong');
setTimeout(function() {
window.location.href = base_url + "/manage_sub_admin";
window.location.href = base_url + "/manage-sub-admin";
}, 2000);
}
$('#update_admin_btn').attr('disabled', false);
$('#update_admin_btn').text('Submit');
},
});
// $('#update_admin_btn').attr('disabled', false);
// $('#update_admin_btn').text('Submit');
}
});
});
});

View File

@@ -48,7 +48,7 @@ $(document).on("click", ".admin_delete", function (e) {
if (response.status == 200) {
toastr.success('Deleted Successfully');
setTimeout(function () {
window.location.href = base_url + "/manage_sub_admin";
window.location.href = base_url + "/manage-sub-admin";
}, 1000);
} else {
toastr.error("Something went wrong");
@@ -80,4 +80,4 @@ $(".sub_admin_table").on("change", ".active_admin", function () {
}
},
});
});
});

View File

@@ -81,21 +81,12 @@ $currentPage = 'manage-privacy';
</div> -->
<div class="layout-px-spacing">
<div class="middle-content container-xxl p-0">
<div class="row layout-top-spacing ">
<div class="top-tabel">
<div class="row">
<div class="col-md-12 left d-flex align-items-center justify-content-between"
style="gap: 15px;">
<h6 class="card-title pl-2">Privacy Policy Customer</h6>
@if(!empty($view_privacy_policy))
<a class="view-details-btn mr-2" href="{{ url('/privacy_edit/'.$view_privacy_policy[0]['id']) }}">
<span>Edit Details</span>
</a>
@else
<!-- <p>No privacy policy found.</p> -->
@endif
<div class="middle-content container-xxl p-0">
<div class="row layout-top-spacing ">
<div class="top-tabel">
<div class="row">
<div class="col-md-12 left d-flex align-items-center justify-content-between" style="gap: 15px;">
<h6 class="card-title pl-2">Privacy Policy Customer</h6>
@if(!empty($view_privacy ))
<a class="view-details-btn mr-2" href="{{ url('/privacy_edit/'.$view_privacy [0]['id']) }}">

View File

@@ -30,15 +30,9 @@
<div class="row">
<div class="col-md-12">
<input type="hidden" name="privacy_custom_id" value="{{ $edit_privacy_policy['id'] }}">
<<<<<<< HEAD
<div id="terms-quill-edit" value="{{ $edit_privacy_policy['description'] }}" name="privacy_policy" class="editor-quill" style="height: 300px;" minlength="10">{!! $edit_privacy_policy['description'] !!}</div>
<input type="hidden" id="privacy_policy" name="privacy_policy" value="{{ $edit_privacy_policy['description'] }}" />
</div>
=======
<div id="terms-quill-edit" value="{{ $edit_privacy_policy['description'] }}" name="privacy_policy" class="editor-quill" style="height: 300px;">{!! $edit_privacy_policy['description'] !!}</div>
<input type="hidden" id="privacy_policy" name="privacy_policy" value="{{ $edit_privacy_policy['description'] }}" />
</div>
>>>>>>> 33b9291463be7ddd790f7b5ed76ca2194c266440
<div class="col-md-12">
<button type="submit" id="update_privacy_policy" class="download-btn-custom mt-3 custom-width-10" >
<span>Update</span>
@@ -46,7 +40,7 @@
</div>
</div>
</form>
</div>
</div>
</div>

View File

@@ -0,0 +1,100 @@
@extends('admin.layouts.master')
@section('content')
<?php $currentPage = 'sub-admins'; ?>
<style>
.error-message {
color: #FF0000;
}
form .error-message {
color: red;
/* Set your desired color here */
}
form .input_class.error-message {
color: #0e1726;
}
</style>
<div class="layout-px-spacing">
<div class="middle-content container-xxl p-0">
<div class="row layout-top-spacing ">
<div class="top-tabel">
<div class="row">
<div class="col-md-4">
<!-- <h6 class="card-title">Edit Manage Customers</h6> -->
<a class="d-flex align-items-center justify-content-center pl-2" href="">
<img class="back-btn" src="{{ asset('public/assets/img/left-arrow.svg') }}">
<h6 class="card-title p-0">Add Sub Admins</h6>
</a>
</div>
<div class="col-md-8">
</div>
</div>
</div>
<div class="col-xl-12 col-lg-12 col-sm-12 layout-spacing">
<div class="widget-content widget-content-area br-8 position-btn h-10">
<div class="view-details Article">
<form id="add_sub_admin_form">
<div class="row">
<div class="col-md-6">
<div class="form-group ">
<label for="company-name" class="label">Name</label>
<input type="text" class="form-control" name="sub_admin_name">
<span class="error-message" id="first_name_error"></span>
</div>
</div>
<div class="col-md-6">
<div class="form-group ">
<label for="company-name" class="label">Email ID</label>
<input type="text" class="form-control" name="sub_admin_email">
<span class="error-message" id="email_error"></span>
</div>
</div>
<div class="col-md-12">
<div class="form-group mb-0">
<label class="label">Permissions</label>
<label id="module_id[]-error" class="error-message" for="module_id[]"></label>
</div>
<div class="row">
@foreach ($sub_admins_module as $sub_admins_modules)
<div class="form-group subadmin-option col-md-3">
<input id="customers{{ $sub_admins_modules->id }}" type="checkbox"
name="module_id[]" class="form-control"
value="{{ $sub_admins_modules['id'] }}">
<label for="customers{{ $sub_admins_modules->id }}"
class="label mb-0">{{ $sub_admins_modules->name }}</label>
</div>
@endforeach
</div>
</div>
<div class="col-md-6">
<div class="form-group ">
<label class="label">Password</label>
<input type="text" class="form-control" name="password">
</div>
</div>
<div class="col-md-12">
<button id="add_sub_admin_form_btn" type="submit"
class="download-btn-custom mt-3 custom-width-10">Save</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection
@section('section_script')
<script src="{{ asset('public/assets/js/admin/manage_sub_admin/add.js') }}"></script>
@endsection

View File

@@ -0,0 +1,82 @@
@extends('admin.layouts.master')
@section('content')
<?php $currentPage = "sub-admins" ?>
<div class="layout-px-spacing">
<div class="middle-content container-xxl p-0">
<div class="row layout-top-spacing ">
<div class="top-tabel">
<div class="row">
<div class="col-md-4">
<!-- <h6 class="card-title">Edit Manage Customers</h6> -->
<a class="d-flex align-items-center justify-content-center pl-2"
href="">
<img class="back-btn" src="{{ asset('public/assets/img/left-arrow.svg')}}">
<h6 class="card-title p-0">Edit Sub Admins</h6>
</a>
</div>
<div class="col-md-8">
</div>
</div>
</div>
<div class="col-xl-12 col-lg-12 col-sm-12 layout-spacing">
<div class="widget-content widget-content-area br-8 position-btn h-10">
<div class="view-details Article">
<form id="update_sub_admin">
<input type="hidden" class="form-control" value="{{$edit_sub_admin->id}}" name="sub_admin_id">
<div class="row">
<div class="col-md-6">
<div class="form-group ">
<label for="company-name" class="label">Name</label>
<input type="text" class="form-control" value="{{$edit_sub_admin->first_name}}" name="sub_admin_name">
</div>
</div>
<div class="col-md-6">
<div class="form-group ">
<label for="company-name" class="label">Email ID</label>
<input type="text" class="form-control" value="{{$edit_sub_admin->email_address}}" name="sub_admin_email">
</div>
</div>
<div class="col-md-6">
<div class="form-group ">
<label class="label">Password</label>
<input type="text" class="form-control" value="{{$edit_sub_admin->password}}" disabled>
</div>
</div>
<div class="col-md-12">
<div class="form-group mb-0">
<label class="label">Permissions</label>
</div>
<div class="row">
@foreach ($sub_admins_module as $sub_admin_module)
<div class="form-group subadmin-option col-md-3">
<input id="customers{{$sub_admin_module->id}}" type="checkbox" name="module_id[]" class="form-control" value="{{$sub_admin_module->id}}"
@if($edit_sub_admin->moduleLinks->contains('manage_modules_xid', $sub_admin_module->id)) checked @endif>
<label for="customers{{$sub_admin_module->id}}" class="label mb-0">{{ $sub_admin_module->name }}</label>
</div>
@endforeach
</div>
</div>
<div class="col-md-12">
<button class="download-btn-custom mt-3 custom-width-10" id="update_admin_btn" type="submit">Save</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection
@section('section_script')
<script src="{{ asset('assets/js/admin/manage_customer/main.js')}}"></script>
<script src="{{ asset('public/assets/js/admin/manage_sub_admin/edit.js')}}"></script>
@endsection

View File

@@ -39,6 +39,7 @@
</tr>
</thead>
<tbody class="text-center">
@foreach ( $sub_admins_data as $sub_admins)
<tr>
<td>
<div class="form-check form-check-sm form-check-custom form-check-solid">
@@ -46,11 +47,11 @@
</div>
</td>
<td class="text-start">1</td>
<td class="text-start">Akanksha</td>
<td class="text-start">akanksha@gmail.com</td>
<td class="text-start">08/22/2023</td>
<td class="text-start">{{ $sub_admins->first_name }}</td>
<td class="text-start">{{ $sub_admins->email_address }}</td>
<td class="text-start">{{ \Carbon\Carbon::parse($sub_admins->created_at)->format('d/m/y') }}</td>
<td class="text-start">
<a class="view-btn m-0 pointer" data-toggle="modal" data-target="#premission-modal">View</a>
<a class="view-btn m-0 pointer" data-toggle="modal" data-target="#premission-modal" data-id="{{$sub_admins['id']}}">View</a>
</td>
<td>
<div class="dropout">
@@ -62,19 +63,19 @@
<ul>
<li>
<div class="switch-btn">
<input type="checkbox" id="switch18" switch="bool" checked />
<label for="switch18" data-on-label="Active" data-off-label="Expired"></label>
<input data-id="{{ $sub_admins->id }}" {{ $sub_admins->is_active ? 'checked' : '' }} class="active_admin" type="checkbox" id="switch{{ $sub_admins->id }}" switch="bool" checked />
<label for="switch{{ $sub_admins->id }}" data-on-label="Active" data-off-label="Expired"></label>
</div>
</li>
<li>
<a href="manage-subadmins-edit.php">
<img src="../src/assets/img/edit.svg" />
<a href="{{ url('/edit_sub_admin/' . $sub_admins->id)}}">
<img src="{{ asset('public/assets/img/edit.svg')}}" />
<span>Edit</span>
</a>
</li>
<li>
<a href="" data-toggle="modal" data-target="#delete-modal">
<img src="../src/assets/img/delete-recycle.svg" />
<a href="" data-toggle="modal" data-target="#delete-modal" class="admin_delete_btn" data-id="{{ $sub_admins->id }}">
<img src="{{ asset('public/assets/img/delete-recycle.svg')}}" />
<span>Delete</span>
</a>
</li>
@@ -82,49 +83,7 @@
</div>
</td>
</tr>
<tr>
<td>
<div class="form-check form-check-sm form-check-custom form-check-solid">
<input class="form-check-input" type="checkbox" value="1" />
</div>
</td>
<td class="text-start">1</td>
<td class="text-start">Akanksha</td>
<td class="text-start">akanksha@gmail.com</td>
<td class="text-start">08/22/2023</td>
<td class="text-start">
<a class="view-btn m-0 pointer" data-toggle="modal" data-target="#premission-modal" data-toggle="modal" data-target="#premission-modal">View</a>
</td>
<td>
<div class="dropout">
<button class="more">
<span></span>
<span></span>
<span></span>
</button>
<ul>
<li>
<a href="manage-restraunts-details.php">
<img src="../src/assets/img/view.svg" />
<span>View</span>
</a>
</li>
<li>
<a href="" data-toggle="modal" data-target="#archive-modal">
<img src="../src/assets/img/archive.svg" />
<span>Archive</span>
</a>
</li>
<li>
<a href="manage-restraunts-edit.php">
<img src="../src/assets/img/edit.svg" />
<span>Edit</span>
</a>
</li>
</ul>
</div>
</td>
</tr>
@endforeach
</tbody>
@@ -134,32 +93,85 @@
</div>
</div>
</div>
{{-- Premission-modal --}}
<div class="modal fade" id="premission-modal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document" style="max-width: 850px;">
<div class="modal-content">
<div class="modal-body">
<div class="modal-header d-flex justify-content-between modal-title">
<h5>View premission</h5>
<button type="button pointer" class="btn-close" data-dismiss="modal" aria-label="Close">
x
</button>
</div>
<div class="row" style="padding: 0px 10px;">
@foreach($sub_admins_module as $sub_admins_modules)
<div class="form-group subadmin-option col-md-4">
<input id="customers{{ $sub_admins_modules->id}}" value="{{ $sub_admins_modules->id}}" type="checkbox" class="form-control" name="module_id[]" disabled>
<label for="customers{{ $sub_admins_modules->id}}" class="label mb-0">{{ $sub_admins_modules->name}}</label>
</div>
@endforeach
</div>
</div>
</div>
</div>
</div>
{{-- Premission-modal End--}}
{{-- Delete-modal --}}
<div class="modal fade" id="delete-modal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="btn-close" data-dismiss="modal" aria-label="Close">
x
</button>
</div>
<div class="modal-body">
<p class="modal-text">Are you sure you want to<br>Delete </p>
<input type="hidden" id="sub_admin_delete">
<div class="modal-btn d-flex ">
<a class="extra-btn" href="#" data-dismiss="modal">No</a>
<a class="download-btn-custom admin_delete" data-dismiss="modal">Yes</a>
</div>
</div>
</div>
</div>
</div>
{{-- Delete-modal --}}
@endsection
@section('section_script')
<script src="{{ asset('public/assets/js/admin/manage_customer/main.js')}}"></script>
<script src="{{ asset('public/assets/js/admin/manage_sub_admin/main.js')}}"></script>
<script src="../src/plugins/src/table/datatable/datatables.js"></script>
<script>
$('#zero-config').DataTable({
"dom": "<'dt--top-section'<'row'<'col-12 col-sm-6 d-flex justify-content-sm-start justify-content-center'l><'col-12 col-sm-6 d-flex justify-content-sm-end justify-content-center mt-sm-0 mt-3'f>>>" +
"<'table-responsive'tr>" +
"<'dt--bottom-section d-sm-flex justify-content-sm-between text-center'<'dt--pages-count mb-sm-0 mb-3'i><'dt--pagination'p>>",
"oLanguage": {
"oPaginate": { "sPrevious": '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-left"><line x1="19" y1="12" x2="5" y2="12"></line><polyline points="12 19 5 12 12 5"></polyline></svg>', "sNext": '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-right"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>' },
"sInfo": "Showing page _PAGE_ of _PAGES_",
"sSearch": '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-search"><circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line></svg>',
"sSearchPlaceholder": "Search...",
"sLengthMenu": "Results : _MENU_",
},
"stripeClasses": [],
"lengthMenu": [7, 10, 20, 50],
"pageLength": 10
});
// $('#zero-config').DataTable({
// "dom": "<'dt--top-section'<'row'<'col-12 col-sm-6 d-flex justify-content-sm-start justify-content-center'l><'col-12 col-sm-6 d-flex justify-content-sm-end justify-content-center mt-sm-0 mt-3'f>>>" +
// "<'table-responsive'tr>" +
// "<'dt--bottom-section d-sm-flex justify-content-sm-between text-center'<'dt--pages-count mb-sm-0 mb-3'i><'dt--pagination'p>>",
// "oLanguage": {
// "oPaginate": { "sPrevious": '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-left"><line x1="19" y1="12" x2="5" y2="12"></line><polyline points="12 19 5 12 12 5"></polyline></svg>', "sNext": '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-right"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>' },
// "sInfo": "Showing page _PAGE_ of _PAGES_",
// "sSearch": '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-search"><circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line></svg>',
// "sSearchPlaceholder": "Search...",
// "sLengthMenu": "Results : _MENU_",
// },
// "stripeClasses": [],
// "lengthMenu": [7, 10, 20, 50],
// "pageLength": 10
// });
</script>
<script>
$(document).ready(function () {
$('<button><a class="extra-btn width-max-content" href="manage-subadmins-add.php">Add</a></button>').insertBefore("#zero-config_filter label");
$('<button><a class="extra-btn width-max-content" href="{{ route('manage.sub_admin_create') }}">Add</a></button>').insertBefore("#zero-config_filter label");
});
</script>
@endsection

View File

@@ -0,0 +1,244 @@
<html>
<meta charset="utf-8" />
<meta http-equiv="x-ua-compatible" content="ie=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="description" content="" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.0.0/dist/css/bootstrap.min.css" />
<head>
<style>
@import url("https://fonts.googleapis.com/css2?family=Montserrat:wght@100;200;300;400;500;600;700;800;900&display=swap");
@media only screen and (max-width: 767px) {
.main {
width: 100% !important;
}
.top-image {
width: 100% !important;
}
.inside-footer {
width: 320px !important;
}
table[class="contenttable"] {
width: 320px !important;
text-align: left !important;
}
td[class="force-col"] {
display: block !important;
}
td[class="rm-col"] {
display: none !important;
}
.mt {
margin-top: 15px !important;
}
*[class].width300 {
width: 255px !important;
}
*[class].block {
display: block !important;
}
*[class].blockcol {
display: none !important;
}
.emailButton {
width: 100% !important;
}
.emailButton a {
display: block !important;
font-size: 18px !important;
}
.side p {
width: 100%;
}
td.border {
width: auto !important;
}
tfoot td {
font-size: 10px;
}
.mktEditable p {
width: 100% !important;
}
}
@media only screen and (max-width: 600px) {
.main {
width: 320px !important;
}
.top-image {
width: 100% !important;
}
.inside-footer {
width: 320px !important;
}
table[class="contenttable"] {
width: 320px !important;
text-align: left !important;
}
td[class="force-col"] {
display: block !important;
}
td[class="rm-col"] {
display: none !important;
}
.mt {
margin-top: 15px !important;
}
*[class].width300 {
width: 255px !important;
}
*[class].block {
display: block !important;
}
*[class].blockcol {
display: none !important;
}
.emailButton {
width: 100% !important;
}
.emailButton a {
display: block !important;
font-size: 18px !important;
}
.side p {
width: 100%;
}
td.border {
width: auto !important;
}
tfoot td {
font-size: 10px;
}
.mktEditable p {
width: 100% !important;
}
}
</style>
</head>
<body>
<table class="main contenttable"
style="
display: flex;
align-items: center;
justify-content: center;
height: 100%;
">
<tbody>
<tr>
<td class="border"
style="
display: flex;
border: 1px solid #9d9a9a !important;
width: 535px;
">
<table>
<tbody>
<tr>
<td valign="top" class="side title">
<table>
<tbody>
<tr>
<td class="head-title"
style="
display: flex;
justify-content: center;
background-color: #fcf6e4;
">
<div class="mktEditable" id="main_title">
{{-- <img
src="{{ asset('public/assets/img/frontend/logo-webs.png')}}"
style="
margin-top: 18px;
margin-bottom: 18px;
width: 122px;
height: 75px;
"
/> --}}
</div>
</td>
</tr>
<tr>
<td class="grey-block"
style="
font-family: 'Montserrat', sans-serif;
padding: 20px 20px 0 20px;
color: #000;
font-size: 15px;
">
<div class="mktEditable" id="cta">
<p style="font-weight: 500">
</p>
{{-- <p>Dear {{ $data['first_name'] }},</p> --}}
<p>Dear {{$mailData['username']}},</p>
<p>Congratulations! Your sub-admin account with Cheers to the session
has been successfully approved.</p>
<p>Your login credentials are as follows:</p>
<ul>
<li><strong>User Name:</strong> {{$mailData['username']}}</li>
<li><strong>Password:</strong> {{$mailData['password']}}</li>
</ul>
<p>You can now log in to your sub-admin dashboard to access your
account .</p>
<p>Please click on the link below to access your dashboard:</p>
<p><a
href="https://ctts.betadelivery.com">https://ctts.betadelivery.com</a>
</p>
<p>If you have any questions or need further assistance, please
feel free to contact us.</p>
`
<p>Best regards,<br> Cheers to the session</p>
</div>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</body>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.0.0/dist/js/bootstrap.min.js"></script>
</html>

View File

@@ -56,6 +56,12 @@ Route::post('/export_selected_customer', [ManageCustomerController::class, 'expo
Route::get('/manage-restaurants', [ManageRestrauntController ::class, 'index'])->name('manage.restaurants');
//*******************************************************manage subadmin********************************************************
Route::get('/manage-sub-admin', [ ManageSubAdminController ::class, 'index'])->name('manage.subAdmin');
Route::get('/create_sub_admin', [ManageSubAdminController::class, 'create'])->name('manage.sub_admin_create');
Route::post('/insert_sub_admin', [ManageSubAdminController::class, 'store_subadmin']);
Route::delete('/manage_sub_admin/{id}', [ManageSubAdminController::class, 'delete_sub_admin']);
Route::get('/edit_sub_admin/{id}', [ManageSubAdminController::class, 'edit'])->name('sub_admin_edit');
Route::post('/update_sub_admin', [ManageSubAdminController::class, 'update_subadmin']);
Route::get('/change_admin_status', [ManageSubAdminController::class, 'change_admin_status']);
//*******************************************************manage passport********************************************************
Route::get('/manage-passport', [ ManagePassportController ::class, 'index'])->name('manage.passport');
//*******************************************************manage voucher********************************************************