CHANGE_UI CHANGE_USER_AND_CLIENT : RV

This commit is contained in:
VENKATESHWARAN 2024-02-15 17:33:02 +05:30
parent fa313ea043
commit 47b829183b
117 changed files with 20393 additions and 2233 deletions

View File

@ -20,7 +20,7 @@ CI_ENVIRONMENT = development
# APP
#--------------------------------------------------------------------
app.baseURL = 'https://localhost/PHP828APPS/ruc/ci4/'
app.baseURL = 'http://localhost/nhance/'
# If you have trouble with `.`, you could also use `_`.
# app_baseURL = ''
# app.forceGlobalSecureRequests = false
@ -30,18 +30,20 @@ app.baseURL = 'https://localhost/PHP828APPS/ruc/ci4/'
# DATABASE
#--------------------------------------------------------------------
database.default.hostname = localhost
database.default.database = ruc
database.default.username = root
database.default.password =
database.default.hostname = 119.18.54.85
database.default.database = venbaehn_nhance
database.default.username = venbaehn_nhance_user1
database.default.password = 'iM~X7(cR+}A-'
# database.default.DBDriver = MySQLi
# database.default.DBPrefix =
# database.default.port = 3306
# database.tests.hostname = localhost
# database.tests.database = ci4_test
# database.tests.username = root
# database.tests.password = root
database.default.hostname = 119.18.54.85
database.default.database = venbaehn_nhance
database.default.username = venbaehn_nhance_user1
database.default.password = 'iM~X7(cR+}A-'
# database.tests.DBDriver = MySQLi
# database.tests.DBPrefix =
# database.tests.port = 3306
@ -141,3 +143,13 @@ database.default.password =
#--------------------------------------------------------------------
# curlrequest.shareOptions = true
#--------------------------------------------------------------------
# Google-OAUTH-Credentials
#--------------------------------------------------------------------
GOOGLE_OAUTH_APP_NAME = 'OAuth'
GOOGLE_OAUTH_CLIENT_ID = '696241936560-m2mr272ge7vr2n4q36c22l3d2gdgi90l.apps.googleusercontent.com'
GOOGLE_OAUTH_CLIENT_SECRET = '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'
GOOGLE_OAUTH_REDIRECT_URI = 'http://localhost/nhance/oauth2callback'
GOOGLE_OAUTH_SCOPES = "https://www.googleapis.com/auth/userinfo.email,https://www.googleapis.com/auth/userinfo.profile"

View File

@ -99,5 +99,5 @@ class Autoload extends AutoloadConfig
* @var string[]
* @phpstan-var list<string>
*/
public $helpers = ['uuid','session','utility', 'form', 'url', 'oauth'];
public $helpers = ['uuid','session','utility', 'form', 'url', 'oauth', 'fileupload'];
}

View File

@ -73,7 +73,10 @@ class ClientController extends AdminController
{
$this->myLogger->logme('error','Client list function called');
$headerData['page_name'] = 'Client List';
$data['clientList'] = $this->clientModel->findAll();
$data['clientList'] = $this->clientModel->getCreatedByUserName();
$data['client_rm'] = $this->clientRMModel->getAllClientRM();
// echo '<pre>';
// print_r($data); die;
echo view('layout/header', $headerData);
echo view('client_list', $data);
echo view('layout/footer');

View File

@ -17,6 +17,7 @@ class LoginController extends BaseController
// $session_data = ['isLoggedIn' => True ,'userid' => '4'];
// set_session_data($session_data);
// $isLoggedIn = check_session();
$isLoggedIn = check_session();
if ($isLoggedIn) {

View File

@ -35,14 +35,14 @@ class UserController extends AdminController
public function list()
{
$headerData['page_name'] = 'User List';
$model = new UserModel();
$data['headerData'] = 'User List';
$this->myLogger->logme('error','User list function called');
$data['UserList'] = $model->where('is_active', 1)->orderBy('id', 'DESC')->findAll();
echo view('layout/header', $headerData);
echo view('AddUser');
echo view('UserList', $data);
echo view('layout/footer');
$data['UserList'] = $this->userModel->getUserList();
// echo '<pre>';
// print_r($data); die;
$data['roleData'] = $this->roleModel->select('id, role')->findAll();
$data['teamData'] = $this->teamModel->select('id, name')->findAll();
$this->loadLayout('UserList', $data);
}
@ -50,19 +50,13 @@ class UserController extends AdminController
{
$this->myLogger->logme('error','User create function called');
$teams = $this->request->getPost('team');
//if this is get method return to user creation page
if(!$this->request->getPost()){
return redirect()->to(base_url('/user/list'));
}else{
//else do user insert operation
$File = file_Upload($this->request->getFile('profile'));
$userData = $this->request->getPost();
if(!empty($File)){
$userData['profile'] = $File;
}
// Inserting data into the 'users' table
$userData['created_by'] = get_session_userid();
unset($userData['team']);
$insert = $this->userModel->insert($userData);
@ -75,17 +69,16 @@ class UserController extends AdminController
}
}
}
$this->myLogger->logme('error','User create Successfully created by id {data}', ['data' => get_session_userid()]);
return redirect()->to(base_url('/user/list'));
}
public function getuser($id = null)
{
$roleData = $this->roleModel->select('id, role')->findAll();
$teamData = $this->teamModel->select('id, name')->findAll();
$userTeamData = $this->userTeamsModel->where('user_id', $id)->findAll();
$data = $this->userModel->getUserById($id);
if($data){
echo json_encode(array("status" => true , 'data' => $data, 'roleData' => $roleData, 'teamData' => $teamData, 'userTeamData' => $userTeamData));
echo json_encode(array("status" => true , 'data' => $data, 'userTeamData' => $userTeamData));
}else{
echo json_encode(array("status" => false));
}
@ -94,20 +87,16 @@ class UserController extends AdminController
public function edit()
{
$teams = $this->request->getPost('team');
if(!$this->request->getPost()){
return redirect()->to(base_url('/user/list'));
}else{
$id = $this->request->getPost('PrimaryKey');
$imageDetails = $this->userModel->find($id);
$File = file_Upload($this->request->getFile('profile'), (isset($imageDetails['profile']) ? $imageDetails['profile'] : null));
$userData = $this->request->getPost();
if(!empty($File)){
$userData['profile'] = $File;
}
// Update data in the 'users' table based on the $id
$userData['updated_by'] = get_session_userid();
$update = $this->userModel->update($id, $userData);
$update = $this->userModel->where('id', $id )->set($userData)->update();
if($update){
$this->userTeamsModel->where('user_id', $id)->delete();

View File

@ -0,0 +1,40 @@
<?php
if (!function_exists('file_to_upload')) {
function file_to_upload($file, $allowedTypes = [], $uploadDirectory = '')
{
$uploadPath = ROOTPATH . 'public/uploads/' . $uploadDirectory;
// Check if the upload directory exists
if (!is_dir($uploadPath)) {
throw new \Exception('Upload directory does not exist.');
}
// Validate file type
if (!empty($allowedTypes) && !in_array($file->getClientMimeType(), $allowedTypes)) {
throw new \Exception('Invalid file type.');
}
// Generate a unique filename
$originalName = $file->getName();
$ext = pathinfo($originalName, PATHINFO_EXTENSION);
$baseName = pathinfo($originalName, PATHINFO_FILENAME);
$counter = 0;
$newName = $baseName . '.' . $ext;
while (file_exists($uploadPath . $newName)) {
$counter++;
$newName = $baseName . '_' . $counter . '.' . $ext;
}
// Move the file to the upload directory
try {
$file->move($uploadPath, $newName);
} catch (\Exception $e) {
throw new \Exception('Failed to upload file: ' . $e->getMessage());
}
return $uploadDirectory . $newName;
}
}

View File

@ -25,4 +25,15 @@ class ClientModel extends Model
"is_active",
];
public function getCreatedByUserName(){
return $this->db->table('clients')
->select('clients.*')
->select('user_profiles.first_name as user_name')
->join('user_profiles', 'user_profiles.id = clients.created_by')
->get()
->getResult();
}
}

View File

@ -27,4 +27,16 @@ class ClientRMModel extends Model
return ($query > 0) ? true : false;
}
public function getAllClientRM(){
return $this->db->table('client_rm')
->select('client_rm.client_id, client_rm.level,')
->select('user_profiles.first_name as account_manager')
->join('user_profiles', 'user_profiles.id = client_rm.user_id')
->where('level', 3)
->get()
->getResult();
}
}

View File

@ -26,8 +26,6 @@ class UserModel extends Model
"created_at",
"updated_by",
"updated_at",
"created_by",
"updated_by",
"is_active",
];
@ -97,5 +95,15 @@ class UserModel extends Model
}
}
public function getUserList(){
return $this->db->table('user_profiles')
->select('user_profiles.*')
->select('roles.role as user_role')
->join('roles', 'roles.id = user_profiles.role')
->get()
->getResult();
}
}
?>

View File

@ -40,18 +40,7 @@ body {
</style>
<!-- start page title -->
<div class="row">
<div class="col-12">
<div class="page-title-box page-title-box-alt">
<h4 class="page-title"></h4>
<div class="page-title-right">
<ol class="breadcrumb m-0">
<li></li>
</ol>
</div>
</div>
</div>
</div>
<!-- ADD and EDIT Page HTML -->
<div class="row" id="Add-Edit-Page">
<div class="col-12">
@ -70,56 +59,38 @@ body {
<input type="hidden" name="PrimaryKey" id="UserId"/>
<div class="form-group">
<div class="form-row">
<div class="form-group col-md-6">
<label for="first_name">First Name<span class="text-danger">*</span></label>
<div class="form-group col-md-3">
<label for="emp_code">Employee Code</label>
<input type="text" class="form-control" id="emp_code" placeholder="Enter Employee Code" name="emp_code">
</div>
<div class="form-group col-md-3">
<label for="first_name">Name<span class="text-danger">*</span></label>
<input type="text" class="form-control" id="first_name" placeholder="Enter First Name" name="first_name" required>
</div>
<div class="form-group col-md-6">
<label for="last_name">Last Name<span class="text-danger">*</span></label>
<input type="text" class="form-control" id="last_name" placeholder="Enter Last Name" name="last_name" required>
</div>
</div>
<div class="form-row">
<div class="form-group col-md-6">
<div class="form-group col-md-3">
<label for="email">Email<span class="text-danger">*</span></label>
<input type="text" class="form-control" id="email" placeholder="Enter Email" name="email" required>
</div>
<div class="form-group col-md-6">
<div class="form-group col-md-3">
<label for="mobile">Mobile Number<span class="text-danger">*</span></label>
<input type="text" class="form-control" id="mobile" placeholder="Enter Mobile Number" name="mobile" required>
</div>
</div>
<div class="form-row">
<div class="form-group col-md-6">
<label for="emp_code">Employee Code</label>
<input type="text" class="form-control" id="emp_code" placeholder="Enter Employee Code" name="emp_code">
</div>
<div class="form-group col-md-6">
<label for="profile">Image</label>
<input class="form-control" type="file" name="profile" multiple="true" id="profile" onchange="onFileUpload(this);" accept="image/*">
</div>
</div>
<div class="form-row">
<div class="form-group col-md-6">
<div class="form-group col-md-4">
<label for="emp_code">User Role</label>
<select class="form-control" id="role" name="role">
<option value="">Select Role</option>
</select>
</div>
<div class="form-group col-md-6">
<div class="form-group col-md-4">
<label for="profile">User Team</label>
<select class="form-control" id="team" name="team[]" multiple>
</select>
</div>
</div>
<div class="form-row">
<div class="form-group col-md-12" style="position: relative;top: 30px;">
<img class="mb-3 float-right" id="ajaxImgUpload" alt="Preview Image" src="https://via.placeholder.com/300" width="100" />
</div>
</div>
</div>
<div class="form-group text-right m-b-0">

View File

@ -1,15 +1 @@
<!-- start page title -->
<div class="row">
<div class="col-12">
<div class="page-title-box page-title-box-alt">
<h4 class="page-title">Welcome !</h4>
<div class="page-title-right">
<ol class="breadcrumb m-0">
<li class="breadcrumb-item"><a href="javascript: void(0);">Dashboards</a></li>
</ol>
</div>
</div>
</div>
</div>
<!-- end page title -->
<h4 class="page-title">Welcome !</h4>

View File

@ -1,90 +1,202 @@
<style>
body {
.multiselect-native-select {
position: relative;
/* bottom: 32px; */
select {
border: 0 !important;
clip: rect(0 0 0 0) !important;
height: 1px !important;
margin: -1px -1px -1px -3px !important;
overflow: hidden !important;
padding: 0 !important;
position: absolute !important;
width: 1px !important;
left: 50%;
top: 30px;
}
}
.multiselect-container{
width: 100% !important;
}
.multiselect-selected-text{
float: left !important;
}
}
</style>
<!-- End ADD and EDIT Page HTML -->
<div class="row" id="List-page">
<div class="row" id="List-page">
<div class="col-12">
<div class="card">
<div class="card-body">
<div class="row" style="padding-bottom: 10px;">
<div class="row" style="margin-bottom:1rem;">
<div class="col-6" style="align-self: center;">
<h4 class="header-title" style="position: relative;">User List</h4>
</div>
<div class="col-6" style="text-align: right;">
<button type="button" id="btnAdd" class="btn btn-primary waves-effect waves-light">Add</button>
<div class="col-6" style="text-align: right; position: relative;top: 53px;">
<button type="button" id="btnAdd" class="btn btn-primary waves-effect waves-light" data-toggle="modal" data-target="#con-close-modal" data-placement="top" title="Add" data-trigger="hover">ADD</button>
</div>
</div>
<table id="datatable-buttons" class="table table-striped dt-responsive nowrap w-100">
<thead>
<table class="table table-sm table-hover m-0 table-centered dt-responsive nowrap w-100" cellspacing="0" id="tickets-table">
<thead class="bg-light">
<tr>
<th>First Name</th>
<th>Last Name</th>
<th>Email</th>
<th>Mobile No</th>
<th>Action</th>
<th class="font-weight-medium">Name</th>
<th class="font-weight-medium">Email</th>
<th class="font-weight-medium">Mobile No</th>
<th class="font-weight-medium">Role</th>
<th class="font-weight-medium">Status</th>
<th class="font-weight-medium">Action</th>
</tr>
</thead>
<tbody>
<?php foreach($UserList as $row) { ?>
<tr id="<?php echo $row['id'];?>">
<td><?php echo $row['first_name']; ?></td>
<td><?php echo $row['last_name']; ?></td>
<td><?php echo $row['email']; ?></td>
<td><?php echo $row['mobile']; ?></td>
<tr id="<?php echo $row->id;?>">
<td class="text-dark"><?php echo $row->first_name; ?></td>
<td><?php echo $row->email; ?></td>
<td><?php echo $row->mobile; ?></td>
<td><?php echo $row->user_role; ?></td>
<td>
<a class="btnEdit" data-id="<?php echo $row['id']; ?>"><i data-id="<?php echo $row['id']; ?>" class="mdi mdi-lead-pencil btnEdit" style="font-size:18px;"></i></a>
<a class="btnDelete" data-id="<?php echo $row['id']; ?>"><i data-id="<?php echo $row['id']; ?>" class="mdi mdi-delete btnDelete" style="font-size:18px;"></i></a>
<span class="<?php if($row->is_active == 1){ echo 'badge badge-success'; }else{ echo 'badge badge-danger'; } ?>">
<?php if($row->is_active == 1){ echo 'Active'; }else{ echo 'In-Active'; } ?>
</span>
</td>
<td>
<div class="btn-group dropdown" style="position: relative !important;left:0px !important;top:0px !important;">
<a href="javascript: void(0);" class="dropdown-toggle arrow-none btn btn-light btn-sm" data-toggle="dropdown" aria-expanded="false"><i class="mdi mdi-dots-horizontal"></i></a>
<div class="dropdown-menu dropdown-menu-right" style="cursor: pointer;">
<a data-toggle="modal" data-target="#con-close-modal" class="dropdown-item btnEdit" data-id="<?php echo $row->id; ?>"><i data-id="<?php echo $row->id; ?>" class="mdi mdi-pencil mr-2 text-muted font-18 vertical-middle btnEdit"></i>Edit</a>
<a class="dropdown-item btnDelete" data-id="<?php echo $row->id; ?>"><i data-id="<?php echo $row->id; ?>" class="mdi mdi-delete mr-2 text-muted font-18 vertical-middle btnDelete"></i>Delete</a>
</div>
</div>
</td>
</tr>
<?php } ?>
</tbody>
</table>
</div> <!-- end card body-->
</div> <!-- end card -->
</div><!-- end col-->
</div>
</div>
</div>
</div>
<!-- end col -->
</div>
<!-- end row-->
<!-- modal content -->
<div id="con-close-modal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" style="display: none;">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">Add User</h4>
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
</div>
<div class="modal-body p-4">
<div class="">
<form role="form" class="parsley-examples" method="post" id="UserForm" action="" enctype="multipart/form-data">
<input type="hidden" value="<?= csrf_hash() ?>" name="<?= csrf_token() ?>"/>
<input type="hidden" name="PrimaryKey" id="UserId"/>
<div class="form-group">
<div class="form-row">
<div class="form-group col-md-4">
<label for="emp_code">Employee Code<span class="text-danger">*</span></label>
<input type="text" class="form-control" id="emp_code" placeholder="Enter Employee Code" name="emp_code" required>
</div>
<div class="form-group col-md-8">
<label for="first_name">Name<span class="text-danger">*</span></label>
<input type="text" class="form-control" id="first_name" placeholder="Ente Name" name="first_name" required>
</div>
</div>
<div class="form-row">
<div class="form-group col-md-12">
<label for="email">Email<span class="text-danger">*</span></label>
<input type="text" class="form-control" id="email" placeholder="Enter Email" name="email" required>
</div>
</div>
<div class="form-row">
<div class="form-group col-md-12">
<label for="mobile">Mobile Number<span class="text-danger">*</span></label>
<input type="text" class="form-control" id="mobile" placeholder="Enter Mobile Number" name="mobile" required>
</div>
</div>
<div class="form-row">
<div class="form-group col-md-12">
<label for="emp_code">User Role<span class="text-danger">*</span></label>
<select class="form-control" id="role" name="role" required>
<option value="">Select Role</option>
<?php foreach($roleData as $value) { ?>
<option value="<?= $value['id'] ?>"><?= $value['role'] ?></option>
<?php } ?>
</select>
</div>
</div>
<div class="form-row">
<div class="form-group col-md-12">
<label for="profile">User Team<span class="text-danger">*</span></label>
<select hidden class="form-control" id="team" name="team[]" multiple required>
<?php foreach($teamData as $value) { ?>
<option value="<?= $value['id'] ?>"><?= $value['name'] ?></option>
<?php } ?>
</select>
</div>
</div>
</div>
<div class="form-group text-right m-b-0">
<button type="submit" class="btn btn-primary waves-effect waves-light mr-1" id="btnSubmit">Submit</button>
<button type="button" class="btn btn-secondary waves-effect btnBack" id="btnBack">Cancel</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div><!-- /.modal -->
<script>
$(document).ready(function () {
$('#Add-Edit-Page').hide();
$('.btnBack').hide();
$('#btnAdd').click(function(){
$('#Add-Edit-Page').show();
$('.header-title').html('Add User');
$('#btnSubmit').html('Submit');
$('#first_name').val('');
$('#last_name').val('');
$('#email').val('');
$('#mobile').val('');
$('#emp_code').val('');
$('#profile').val('');
$('#ajaxImgUpload').attr('src', 'https://via.placeholder.com/300').width(100);
$('#List-page').hide();
$('.btnBack').show();
$('#btnAdd').hide();
$('#UserForm').attr('action', '<?php echo base_url('/user/create');?>');
$('#tickets-table').DataTable({
dom: "<'row'<'col-sm-0'f><'col-sm-9 text-right'B>>" ,
buttons: [
{
extend: 'csv',
text: 'CSV',
title: 'UserList',
exportOptions: {
columns: ':not(:last-child)'
}
}
],
language: {
search: "_INPUT_",
searchPlaceholder: "Search..."
},
$.ajax({
url: '<?php echo base_url('user/rolesandteams/');?>',
type: "GET",
dataType: 'json',
success: function (res) {
console.log(res)
$.each(res.roleData, function(index, item) {
console.log(item.role)
$('#role').append($('<option>', {
value: item.id,
text : item.role
}));
});
$.each(res.teamData, function(index, item) {
$('#team').append($('<option>', {
value: item.id,
text : item.name
}));
});
$('#team').multiselect({
nonSelectedText: 'Select Team',
enableFiltering: false,
@ -92,47 +204,35 @@ $(document).ready(function () {
includeSelectAllOption : false,
buttonWidth:'100%'
});
},
error: function (xhr, status, error) {
console.error(xhr.responseText);
console.error(status, error);
}
});
})
$('.btnBack').click(function(){
$('#Add-Edit-Page').hide();
$('.header-title').html('User List');
$('#UserId').val('');
$('#btnAdd').click(function(){
$('#first_name').val('');
$('#last_name').val('');
$('#email').val('');
$('#mobile').val('');
$('#emp_code').val('');
$('#profile').val('');
$('#UserForm').attr('action', '<?php echo base_url('/user/create');?>');
})
$('.close').click(function(){
$('#UserId').val('');
$('#first_name').val('');
$('#email').val('');
$('#mobile').val('');
$('#emp_code').val('');
$('#role').val('')
$('#ajaxImgUpload').attr('src', 'https://via.placeholder.com/300').width(100);
$('#List-page').show();
$('.btnBack').hide();
$('#btnAdd').show();
})
$('body').on('click', '.btnEdit', function () {
var student_id = $(this).attr('data-id');
var user_id = $(this).attr('data-id');
$.ajax({
url: '<?php echo base_url('user/getuser/');?>'+student_id,
url: '<?php echo base_url('user/getuser/');?>'+user_id,
type: "GET",
dataType: 'json',
success: function (res) {
console.log(res)
$('#role').val('')
$('#Add-Edit-Page').show();
$('.header-title').html('Edit User');
$('#List-page').hide();
$('.btnBack').show();
$('#btnAdd').hide();
$('#UserForm').attr('action', '<?php echo base_url('user/edit');?>');
$('#UserId').val(res.data.id);
$('#first_name').val(res.data.first_name);
@ -140,40 +240,14 @@ $(document).ready(function () {
$('#email').val(res.data.email);
$('#mobile').val(res.data.mobile);
$('#emp_code').val(res.data.emp_code);
$('#role option[value="' + res.data.role + '"]').prop('selected', true);
$('#btnSubmit').html('Update');
var roleOptionHTML = '';
$.each(res.roleData, function(index, item) {
var isSelected = res.userTeamData.some(function(userTeamItem) {
return res.data.role === item.id;
$.each(res.userTeamData, function(index, item) {
$('#team option[value="' + item.team_id + '"]').prop('selected', true);
$('#team').multiselect('refresh');
});
roleOptionHTML += '<option value="' + item.id + '" ' + (isSelected ? 'selected="selected"' : '') + '>' + item.role + '</option>';
});
$('#role').html(roleOptionHTML);
var optionsHTML = '';
$.each(res.teamData, function(index, item) {
var isSelected = res.userTeamData.some(function(userTeamItem) {
return userTeamItem.team_id === item.id;
});
optionsHTML += '<option value="' + item.id + '" ' + (isSelected ? 'selected="selected"' : '') + '>' + item.name + '</option>';
});
$('#team').html(optionsHTML);
$('#team').multiselect({
nonSelectedText: 'Select Team',
enableFiltering: false,
enableCaseInsensitiveFiltering: false,
includeSelectAllOption : false,
buttonWidth:'100%'
});
if(res.data.profile){
$('#ajaxImgUpload').attr('src', '<?php echo base_url();?>public/uploads/'+res.data.profile).width(100);
}else{
$('#ajaxImgUpload').attr('src', 'https://via.placeholder.com/300').width(100);
}
},
error: function (xhr, status, error) {
console.error(xhr.responseText);
@ -198,83 +272,75 @@ $(document).ready(function () {
var student_id = $(this).attr('data-id');
$.get('<?php echo base_url('user/deactive/');?>'+student_id, function (data) {
console.log(data);
$('#datatable-buttons tbody #'+ student_id).remove();
// $('#tickets-table tbody #'+ student_id).remove();
window.location.reload()
})
}
});
});
$('#datatable-buttons').DataTable({
"dom": 'Bfrtip', // Show export buttons
"paging": true,
"lengthMenu": [ [10, 25, 50, 100], [10, 25, 50, 100] ], // Define length menu options
buttons: [
{
extend: 'pdfHtml5',
title: 'UserList', // Set your custom PDF title here
text: 'PDF',
customize: function(doc) {
// You can further customize the PDF here if needed
doc.content[1].table.body.forEach(function(row) {
row.pop(); // Remove the last column
});
}
},
{
extend: 'csv',
text: 'CSV', // Set the title for the CSV button
title: 'UserList', // Set your custom print title here
exportOptions: {
columns: ':not(:last-child)' // Exclude the first and last column (ID column)
}
},
]
});
});
function onFileUpload(input, id) {
id = id || '#ajaxImgUpload';
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
console.log(e.target.result);
$(id).attr('src', e.target.result).width(100);
};
reader.readAsDataURL(input.files[0]);
const btnExport = document.querySelector("#btnExport");
const tableElement = document.querySelector("#tickets-table");
btnExport.addEventListener("click", () => {
const obj = new csvExport(tableElement);
const csvData = obj.exportCsv();
const blob = new Blob([csvData], { type: "text/csv" });
const url = URL.createObjectURL(blob);
const a = document.createElement("a");
a.href = url;
a.download = "UserList.csv";
a.click();
setTimeout(() => {
URL.revokeObjectURL(url);
}, 500);
});
class csvExport {
constructor(table, header = true) {
this.table = table;
this.rows = Array.from(table.querySelectorAll("tr"));
if (!header && this.rows[0].querySelectorAll("th").length) {
this.rows.shift();
}
}
exportCsv() {
const lines = [];
const ncols = this._longestRow();
for (const row of this.rows) {
let line = "";
for (let i = 0; i < ncols - 1; i++) { // Adjusted loop to exclude the last column
if (row.children[i] !== undefined) {
line += csvExport.safeData(row.children[i]);
line += ",";
}
}
// Remove the trailing comma
line = line.slice(0, -1);
lines.push(line);
}
return lines.join("\n");
}
_longestRow() {
return this.rows.reduce((length, row) => (row.childElementCount > length ? row.childElementCount : length), 0);
}
static safeData(td) {
let data = td.textContent;
//Replace all double quote to two double quotes
data = data.replace(/"/g, `""`);
//Replace , and \n to double quotes
data = /[",\n"]/.test(data) ? `"${data}"` : data;
return data;
}
}
function isFieldEmptyOrNull(formData, fieldName) {
let value = formData.get(fieldName);
return value === '' || value === null;
}
function areFieldsEmptyOrFileEmpty(id) {
console.log(id)
let element = document.getElementById(id);
if (element.type === 'file') {
console.log(element.files.length)
if (element.files.length === 0) {
return true; // File input is empty
}
} else {
if (element.value === '') {
return true; // Other input field is empty
}
}
return false; // All fields are non-empty
}
</script>

View File

@ -41,12 +41,12 @@
</div>
<div class="form-row">
<div class="form-group col-md-6">
<div class="form-group col-md-4">
<label for="pan">PAN<span class="text-danger">*</span></label>
<input type="text" class="form-control" id="pan"
placeholder="Enter PAN Number" value="<?= isset($client['pan']) ? $client['pan'] : '' ?>" name="pan" required>
</div>
<div class="form-group col-md-6">
<div class="form-group col-md-4">
<label for="gst">GST<span class="text-danger">*</span></label>
<input type="text" class="form-control" id="gst"
placeholder="Enter GST Number" value="<?= isset($client['gst']) ? $client['gst'] : '' ?>" name="gst" required>

View File

@ -2,7 +2,7 @@
<div class="row float-right" style="padding-bottom: 10px;">
<div class="col-6">
<button type="button" id="btnBranchAdd" class="btn btn-primary waves-effect waves-light">Add</button>
<button type="button" id="btnBranchAdd" class="btn btn-primary waves-effect waves-light"><i class="fa fa-plus-square" aria-hidden="true"></i></button>
</div>
</div>
@ -26,7 +26,7 @@
<div class="card-body">
<div class="row float-right" style="position: relative; bottom: 20px;">
<div class="col-6">
<button type="button" class="btn btn-primary waves-effect waves-light btnBack">List</button>
<button type="button" class="btn btn-primary waves-effect waves-light btnBack"><i class="fa fa-list" aria-hidden="true"></i></button>
</div>
</div>

View File

@ -24,7 +24,7 @@
multiple="true" id="kyc_docs_file" required>
</div>
<div class="form-group col-md-4 align-self-end">
<button type="submit" class="btn btn-primary waves-effect waves-light mr-1"id="btnSubmit">Submit</button>
<button type="submit" class="btn btn-primary waves-effect waves-light mr-1"id="btnSubmit">Upload</button>
</div>
</div>

View File

@ -1,54 +1,44 @@
<!-- start page title -->
<div class="row">
<div class="col-12">
<div class="page-title-box page-title-box-alt">
<h4 class="page-title"></h4>
<div class="page-title-right">
</div>
</div>
</div>
</div>
<!-- end page title -->
<div class="row" id="client_list">
<div class="col-12">
<div class="card">
<div class="card-body">
<div class="row" style="padding-bottom: 10px;">
<div class="row" style="margin-bottom:1rem;">
<div class="col-6" style="align-self: center;">
<h4 class="header-title" style="position: relative;">Client List</h4>
</div>
<div class="col-6" style="text-align: right;">
<a href="<?= base_url("client/create"); ?>"
class="btn btn-primary waves-effect waves-light">Add</a>
<div class="col-6" style="text-align: right; position: relative;top: 53px;">
<a href="<?= base_url("client/create"); ?>" type="button" id="btnAdd" class="btn btn-primary waves-effect waves-light" data-toggle="" data-placement="top" title="Add" data-trigger="hover">ADD</a>
</div>
</div>
<table class="table table-hover m-0 table-centered dt-responsive nowrap w-100" cellspacing="0"
<table class="table table-sm table-hover m-0 table-centered dt-responsive nowrap w-100" cellspacing="0"
id="tickets-table">
<thead class="bg-light">
<tr>
<th class="font-weight-medium">#</th>
<th class="font-weight-medium">Client Code</th>
<th class="font-weight-medium">Client Name</th>
<th class="font-weight-medium">Created By</th>
<th class="font-weight-medium">Created At</th>
<th class="font-weight-medium">Account Manager</th>
<th class="font-weight-medium">Action</th>
</tr>
</thead>
<tbody class="font-14">
<tbody>
<?php foreach($clientList as $row){ ?>
<tr>
<td><?php echo $row['id']; ?></td>
<td><?php echo $row['short_name']; ?></td>
<td><?php echo $row['client_name']; ?></td>
<td><?php echo $row['created_by']; ?></td>
<td><?php echo $row['created_at']; ?></td>
<td><?php echo $row->client_name; ?> ( <?php echo $row->short_name; ?> ) </td>
<td>
<?php $account_managers = ''; ?>
<?php foreach ($client_rm as $client): ?>
<?php if ($client->client_id == $row->id): ?>
<?php $account_managers .= $client->account_manager . ', '; ?>
<?php endif; ?>
<?php endforeach; ?>
<?php echo rtrim($account_managers, ', '); ?>
</td>
<td>
<div class="btn-group dropdown">
<a href="javascript: void(0);" class="dropdown-toggle arrow-none btn btn-light btn-sm" data-toggle="dropdown"aria-expanded="false"><i class="mdi mdi-dots-horizontal"></i></a>
<div class="dropdown-menu dropdown-menu-right">
<a class="dropdown-item" href="<?= base_url("client/list/"); ?><?= $row['id'];?>"><i class="mdi mdi-pencil mr-2 text-muted font-18 vertical-middle"></i>EditTicket</a>
<a class="dropdown-item" href="#"><i class="mdi mdi-delete mr-2 text-muted font-18 vertical-middle"></i>Deactivate</a>
<a class="dropdown-item" href="<?= base_url("client/list/"); ?><?= $row->id;?>"><i class="mdi mdi-pencil mr-2 text-muted font-18 vertical-middle"></i>Edit</a>
<a class="dropdown-item" href="#"><i class="mdi mdi-delete mr-2 text-muted font-18 vertical-middle"></i>Delete</a>
</div>
</div>
</td>
@ -63,3 +53,91 @@
</div><!-- end col -->
</div>
<!-- end row -->
<script>
$(document).ready(function(){
$('#tickets-table').DataTable({
dom: "<'row'<'col-sm-0'f><'col-sm-9 text-right'B>>" ,
buttons: [
{
extend: 'csv',
text: 'CSV',
title: 'ClientList',
exportOptions: {
columns: ':not(:last-child)'
}
}
],
language: {
search: "_INPUT_",
searchPlaceholder: "Search..."
},
});
})
const btnExport = document.querySelector("#btnExport");
const tableElement = document.querySelector("#tickets-table");
btnExport.addEventListener("click", () => {
const obj = new csvExport(tableElement);
const csvData = obj.exportCsv();
const blob = new Blob([csvData], { type: "text/csv" });
const url = URL.createObjectURL(blob);
const a = document.createElement("a");
a.href = url;
a.download = "UserList.csv";
a.click();
setTimeout(() => {
URL.revokeObjectURL(url);
}, 500);
});
class csvExport {
constructor(table, header = true) {
this.table = table;
this.rows = Array.from(table.querySelectorAll("tr"));
if (!header && this.rows[0].querySelectorAll("th").length) {
this.rows.shift();
}
}
exportCsv() {
const lines = [];
const ncols = this._longestRow();
for (const row of this.rows) {
let line = "";
for (let i = 0; i < ncols - 1; i++) { // Exclude the last column
if (row.children[i] !== undefined) {
line += csvExport.safeData(row.children[i]);
}
line += i !== ncols - 2 ? "," : ""; // Adjusted for the last column exclusion
}
lines.push(line);
}
return lines.join("\n");
}
_longestRow() {
return this.rows.reduce((length, row) => (row.childElementCount > length ? row.childElementCount : length), 0);
}
static safeData(td) {
let data = td.textContent;
//Replace all double quote to two double quotes
data = data.replace(/"/g, `""`);
//Replace , and \n to double quotes
data = /[",\n"]/.test(data) ? `"${data}"` : data;
return data;
}
}
</script>

View File

@ -30,9 +30,7 @@ body {
</style>
<div class="row mt-4" id="client_add">
<div class="row" id="client_add">
<div class="col-12">
<div class="card">
<div class="card-body">
@ -41,7 +39,7 @@ body {
<h4 class="header-title" style="position: relative;">Client Onboarding</h4>
</div>
<div class="col-6" style="text-align: right;">
<a href="<?= base_url("client/list"); ?>" class="btn btn-primary waves-effect waves-light">Back</a>
<!-- <a href="<?= base_url("client/list"); ?>" class="btn btn-primary waves-effect waves-light">Back</a> -->
</div>
</div>
<ul class="nav nav-pills navtab-bg">
@ -73,7 +71,7 @@ body {
<li class="nav-item">
<a href="#police-tab" data-toggle="tab" aria-expanded="false" class="nav-link px-3 py-2">
<span class="mr-1"><i class="mdi mdi-book-open-page-variant"></i></span>
<span class="d-none d-sm-inline-block">Polices</span>
<span class="d-none d-sm-inline-block">Policies</span>
</a>
</li>
</ul>

View File

@ -4,7 +4,7 @@
<div class="row float-right" style="padding-bottom: 10px;">
<div class="col-6">
<button type="button" id="BtnAdd" class="btn btn-primary waves-effect waves-light btnAdd">Add</button>
<button type="button" id="BtnAdd" class="btn btn-primary waves-effect waves-light btnAdd"><i class="fa fa-plus-square" aria-hidden="true"></i></button>
</div>
</div>
@ -14,7 +14,7 @@
<thead class="thead-light">
<tr>
<th>Insurer</th>
<th>policy</th>
<th>Policy</th>
<th>TPA</th>
<th>Action</th>
</tr>
@ -30,7 +30,7 @@
<div class="row float-right" style="position: relative; bottom: 20px;">
<div class="col-6">
<button type="button" class="btn btn-primary waves-effect waves-light btnBack">List</button>
<button type="button" class="btn btn-primary waves-effect waves-light btnBack"><i class="fa fa-list" aria-hidden="true"></i></button>
</div>
</div>
@ -40,6 +40,7 @@
enctype="multipart/form-data">
<input type="hidden" class="form-control" value="<?= csrf_hash() ?>" name="<?= csrf_token() ?>" />
<input type="hidden" name="PrimaryKey" id="policy_PrimaryKey" />
<input type="hidden" id="policy_form_action" />
<input type="hidden" name="client_id" id="client_id_police" value="<?= isset($client['id']) ? $client['id'] : '' ?>"/>
<div class="form-group">
<div class="form-row">
@ -54,10 +55,10 @@
</select>
</div>
<div class="form-group col-md-4">
<label for="policy">Polices<span
<label for="policy">Policies<span
class="text-danger">*</span></label>
<select class="form-control" id="policy" name="policy_id">
<option value="">Select Policy</option>
<option value="" selected>Select Policy</option>
</select>
</div>
<div class="form-group col-md-4">
@ -91,7 +92,8 @@
$(document).ready(function () {
var policy_PrimaryKey = $('#client_id_police').val();
var policy_form_action = '';
var policy_client = $('#policy_PrimaryKey').val();
$('#add_form').hide();
$('.btnBack').hide();
@ -100,27 +102,33 @@ $(document).ready(function () {
$('#table_list').hide();
$('.btnBack').show();
$('.btnAdd').hide();
policy_form_action = '<?= base_url("client/policy/create"); ?>';
$('#policy_form_action').val('<?= base_url("client/policy/edit"); ?>');
;
})
$('.btnBack').click(function(){
$('#add_form').hide();
$('#table_list').show();
$('.btnBack').hide();
$('.btnAdd').show();
$('#insurer').val('');
$('#tpa').val('');
$('#policy').html('<option value="" selected>Select Policy</option>');
})
if(policy_PrimaryKey !== ''){
toastr.options = {
"timeOut": 2000,
"closeButton": true,
};
if (policy_PrimaryKey !== '') {
var policyTable = '';
var data = <?= isset($client_policy) ? json_encode($client_policy) : '[]' ?>;
console.log(data)
$.each(data, function(index, item) {
console.log(data);
data.forEach(function(item) {
policyTable += `
<tr>
<td>${item.insurer_short} - ${item.insurer_branch_name}</td>
@ -130,20 +138,25 @@ $(document).ready(function () {
</tr>
`;
});
$('#policy_table').append(policyTable);
}
$("#policy_form").submit(function(event) {
event.preventDefault();
// Perform validation
var isValid = true; // Assuming you have a function for form validation
if (isValid) {
if (policy_PrimaryKey === '' && policy_client === '') {
toastr.error('Client ID is required', 'Error');
$('#insurer').val('');
$('#tpa').val('');
$('#policy').html('<option value="" selected>Select Policy</option>');
return;
}
var formData = new FormData($('#policy_form')[0]);
var policy_form_action = $('#policy_form_action').val();
$.ajax({
data: formData,
url: policy_form_action,
@ -152,23 +165,16 @@ $(document).ready(function () {
processData: false,
contentType: false,
success: function(res) {
console.log(res);
if(policy_PrimaryKey === ''){
$.toast({
text: 'Client Policy Info',
heading: "Submitted Sucessfully",
position: 'top-right',
icon: 'success',
});
}else{
$.toast({
text: 'Client Policy Info',
heading: "Updated Sucessfully",
position: 'top-right',
icon: 'success',
});
if (res.status === false) {
toastr.error('Policy Dose Not Create', 'Error');
return;
}
console.log(res);
var message = (policy_PrimaryKey === '') ? 'Policy Created successfully' : 'Updated Successfully';
toastr.success(message, 'Success');
$('#policy_table tr').remove();
var policyTable = '';
$.each(res.data, function(index, item) {
@ -192,75 +198,62 @@ $(document).ready(function () {
console.error(status, error);
}
});
}
});
$('#insurer').change(function() {
var id = $(this).val();
var OptionsHTML2 = '';
var url = "<?= base_url("util/police-by-insurer/") ?>" + id;
$.get(url, function(res) {
res = JSON.parse(res)
var OptionsHTML = '';
console.log(id)
var url = "<?= base_url("util/police-by-insurer/"); ?>" + id;
$.ajax({
url: url,
type: "GET",
dataType: 'json',
processData: false,
contentType: false,
success: function(res) {
console.log(res);
$.each(res.data, function(index, item) {
OptionsHTML2 += '<option value="' + item.id + '">' + item.name + '</option>';
OptionsHTML += '<option value="' + item.id + '">' + item.name + '</option>';
});
$('#policy').html(OptionsHTML2);
},
error: function(xhr, status, error) {
$('#policy').html(OptionsHTML);
}).fail(function(xhr, status, error) {
console.error(xhr.responseText);
console.error(status, error);
}
});
});
$('body').on('click', '.btnPolicyEdit', function () {
policy_form_action = '<?= base_url("client/policy/edit"); ?>';
var policy_id = $(this).attr('data-id');
console.log(policy_id);
var policy_form_action = '';
var policy_id = $(this).data('id');
$.ajax({
url: '<?php echo base_url('client/policy/list/');?>'+policy_id,
url: '<?= base_url("client/policy/list/") ?>' + policy_id,
type: "GET",
dataType: 'json',
success: function (res) {
console.log(res)
$('#policy_form_action').val('<?= base_url("client/policy/edit"); ?>');
if (res.status === false) {
toastr.error(res.status);
return;
}
$('#add_form').show();
$('#table_list').hide();
$('.btnBack').show();
$('.btnAdd').hide();
$('#insurer option[value="' + res.data.insurer_branch_id + '-' + res.data.insurer_id + '"]').prop('selected', true);
$('#tpa option[value="' + res.data.tpa_branch_id + '-' + res.data.tpa_id + '"]').prop('selected', true);
$('#policy option[value="' + res.data.policy_id + '"]').prop('selected', true);
$('#policy_PrimaryKey').val(res.data.id)
$('#insurer').val(res.data.insurer_branch_id + '-' + res.data.insurer_id);
$('#tpa').val(res.data.tpa_branch_id + '-' + res.data.tpa_id);
$('#policy').val(res.data.policy_id);
$('#policy_PrimaryKey').val(res.data.id);
var policeOptionHTML = '';
$.each(res.policy, function(index, item) {
if(res.data.policy_id === item.id){
isSelected = true;
}else{
isSelected = false;
}
policeOptionHTML += '<option value="' + item.id + '" ' + (isSelected ? 'selected="selected"' : '') + '>' + item.name + '</option>';
policeOptionHTML += '<option value="' + item.id + '" ' + (res.data.policy_id === item.id ? 'selected="selected"' : '') + '>' + item.name + '</option>';
});
$('#policy').html(policeOptionHTML);
},
error: function (xhr, status, error) {
console.error(xhr.responseText);

View File

@ -80,6 +80,7 @@
$option.prop('selected', true);
}
$('#account_manager').multiselect('refresh');
});
}

View File

@ -7,15 +7,15 @@
<div class="container-fluid">
<div class="row">
<div class="col-md-6">
<script>document.write(new Date().getFullYear())</script> &copy; Minton theme by <a href="">Coderthemes</a>
<script>document.write(new Date().getFullYear())</script> &copy; NHANCE
</div>
<div class="col-md-6">
<!-- <div class="col-md-6">
<div class="text-md-right footer-links d-none d-sm-block">
<a href="javascript:void(0);">About Us</a>
<a href="javascript:void(0);">Help</a>
<a href="javascript:void(0);">Contact Us</a>
</div>
</div>
</div> -->
</div>
</div>
</footer>
@ -31,12 +31,12 @@
</div>
<!-- END wrapper -->
<!-- Right Sidebar -->
<div class="right-bar">
<div data-simplebar class="h-100">
<!-- Right Sidebar -->
<div class="right-bar">
<div data-simplebar class="h-100">
<!-- Nav tabs -->
<ul class="nav nav-tabs nav-bordered nav-justified" role="tablist">
<!-- Nav tabs -->
<ul class="nav nav-tabs nav-bordered nav-justified" role="tablist">
<li class="nav-item">
<a class="nav-link py-2" data-toggle="tab" href="#chat-tab" role="tab">
<i class="mdi mdi-message-text-outline d-block font-22 my-1"></i>
@ -52,10 +52,10 @@
<i class="mdi mdi-cog-outline d-block font-22 my-1"></i>
</a>
</li>
</ul>
</ul>
<!-- Tab panes -->
<div class="tab-content pt-0">
<!-- Tab panes -->
<div class="tab-content pt-0">
<div class="tab-pane" id="chat-tab" role="tabpanel">
<form class="search-bar p-3">
@ -414,17 +414,17 @@
<button class="btn btn-primary btn-block mt-4" id="resetBtn">Reset to Default</button>
<a href="https://wrapbootstrap.com/theme/minton-admin-dashboard-landing-template-WB0858DB6?ref=coderthemes"
<a href=""
class="btn btn-danger btn-block mt-2" target="_blank"><i class="mdi mdi-basket mr-1"></i> Purchase Now</a>
</div>
</div>
</div>
</div>
</div> <!-- end slimscroll-menu-->
</div>
<!-- /Right-bar -->
</div> <!-- end slimscroll-menu-->
</div>
<!-- /Right-bar -->
<!-- Right bar overlay-->
<div class="rightbar-overlay"></div>
@ -432,6 +432,11 @@
<!-- Vendor js -->
<script src="<?= base_url()."public"; ?>/assets/js/vendor.min.js"></script>
<!-- KNOB JS -->
<script src="<?= base_url()."public"; ?>/assets/libs/jquery-knob/jquery.knob.min.js"></script>
<!-- Apex js-->
<script src="<?= base_url()."public"; ?>/assets/libs/apexcharts/apexcharts.min.js"></script>
<!-- third party js -->
<script src="<?= base_url()."public"; ?>/assets/libs/datatables.net/js/jquery.dataTables.min.js"></script>
<script src="<?= base_url()."public"; ?>/assets/libs/datatables.net-bs4/js/dataTables.bootstrap4.min.js"></script>
@ -449,7 +454,10 @@
<!-- third party js ends -->
<!-- Datatables init -->
<script src="<?= base_url()."public"; ?>/assets/js/pages/datatables.init.js"></script>
<!-- <script src="<?= base_url()."public"; ?>/assets/js/pages/datatables.init.js"></script> -->
<script src="<?= base_url()."public"; ?>/assets/js/pages/tickets.init.js"></script>
<!-- Plugins js-->
<script src="<?= base_url()."public"; ?>/assets/libs/admin-resources/jquery.vectormap/jquery-jvectormap-1.2.2.min.js"></script>
@ -465,21 +473,13 @@
<!-- App js -->
<script src="<?= base_url()."public"; ?>/assets/js/app.min.js"></script>
<!-- Tost-->
<script src="<?= base_url()."public"; ?>/assets/libs/jquery-toast-plugin/jquery.toast.min.js"></script>
<!-- toastr init js-->
<script src="<?= base_url()."public"; ?>/assets/js/pages/toastr.init.js"></script>
<!-- Sweet Alert CDN -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap-multiselect@1.1.0/dist/js/bootstrap-multiselect.min.js"></script>
<!-- Multiselect CDN -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-multiselect/0.9.13/css/bootstrap-multiselect.css" />
<!-- fontAwsome -->
<script src="<?= base_url()."public"; ?>/assets/js/pages/fontawesome.init.js"></script>
<script src="https://cdn.jsdelivr.net/npm/toastr@2.1.4/toastr.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/toastr@2.1.4/build/toastr.min.css" rel="stylesheet">
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -70,7 +70,7 @@
<div class="form-group mb-0 text-center">
<a href="<?= base_url('oauth2callback'); ?>"><img
<a href="<?= base_url('auth/google'); ?>"><img
src="<?= base_url()."public"; ?>/assets/images/googleButton.svg" width="300"></a>
</div>

View File

@ -1,11 +1,4 @@
/*
Template Name: Minton - Responsive Bootstrap 4 Admin Dashboard
Author: CoderThemes
Version: 5.0.0
Website: https://coderthemes.com/
Contact: support@coderthemes.com
File: Main Css File - Dark RTL (Corporate Demo)
*/
@import url("https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap");
html {
position: relative;

File diff suppressed because one or more lines are too long

View File

@ -1,9 +1,5 @@
/*
Template Name: Minton - Responsive Bootstrap 4 Admin Dashboard
Author: CoderThemes
Version: 5.0.0
Website: https://coderthemes.com/
Contact: support@coderthemes.com
File: Main Css File - Dark (Corporate Demo)
*/
@import url("https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap");
@ -553,7 +549,7 @@ body[data-sidebar-icon="twotones"] #sidebar-menu > ul > li > a svg {
left: 240px;
right: 0;
top: 0;
height: 70px;
height: 60px;
transition: all .1s ease-out;
z-index: 1001;
/* Search */ }

File diff suppressed because one or more lines are too long

View File

@ -1,9 +1,5 @@
/*
Template Name: Minton - Responsive Bootstrap 4 Admin Dashboard
Author: CoderThemes
Version: 5.0.0
Website: https://coderthemes.com/
Contact: support@coderthemes.com
File: Main Css File - RTL (Corporate Demo)
*/
@import url("https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap");

File diff suppressed because one or more lines are too long

View File

@ -1,9 +1,5 @@
/*
Template Name: Minton - Responsive Bootstrap 4 Admin Dashboard
Author: CoderThemes
Version: 5.0.0
Website: https://coderthemes.com/
Contact: support@coderthemes.com
File: Main Css File (Corporate Demo)
*/
@import url("https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap");

File diff suppressed because one or more lines are too long

View File

@ -1,9 +1,5 @@
/*
Template Name: Minton - Responsive Bootstrap 4 Admin Dashboard
Author: CoderThemes
Version: 5.0.0
Website: https://coderthemes.com/
Contact: support@coderthemes.com
File: Main Css File - Dark RTL (Creative Demo)
*/
@import url("https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap");
@ -283,7 +279,7 @@ body[data-sidebar-size="condensed"] .user-box {
@media (min-width: 768px) {
body[data-sidebar-size="condensed"]:not([data-layout="compact"]):not(.auth-fluid-pages) {
min-height: 1750px; } }
min-height: 0; } }
@media (max-width: 767.98px) {
.pro-user-name {

File diff suppressed because one or more lines are too long

View File

@ -1,9 +1,5 @@
/*
Template Name: Minton - Responsive Bootstrap 4 Admin Dashboard
Author: CoderThemes
Version: 5.0.0
Website: https://coderthemes.com/
Contact: support@coderthemes.com
File: Main Css File - Dark (Creative Demo)
*/
@import url("https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap");
@ -283,7 +279,7 @@ body[data-sidebar-size="condensed"] .user-box {
@media (min-width: 768px) {
body[data-sidebar-size="condensed"]:not([data-layout="compact"]):not(.auth-fluid-pages) {
min-height: 1750px; } }
min-height: 0; } }
@media (max-width: 767.98px) {
.pro-user-name {

File diff suppressed because one or more lines are too long

View File

@ -1,9 +1,5 @@
/*
Template Name: Minton - Responsive Bootstrap 4 Admin Dashboard
Author: CoderThemes
Version: 5.0.0
Website: https://coderthemes.com/
Contact: support@coderthemes.com
File: Main Css File - RTL (Creative Demo)
*/
@import url("https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap");
@ -283,7 +279,7 @@ body[data-sidebar-size="condensed"] .user-box {
@media (min-width: 768px) {
body[data-sidebar-size="condensed"]:not([data-layout="compact"]):not(.auth-fluid-pages) {
min-height: 1550px; } }
min-height: 0; } }
@media (max-width: 767.98px) {
.pro-user-name {

File diff suppressed because one or more lines are too long

View File

@ -553,8 +553,8 @@ body[data-sidebar-icon="twotones"] #sidebar-menu > ul > li > a svg {
position: fixed;
left: 240px;
right: 0;
top: 0;
height: 70px;
top: -10;
height: 61px;
transition: all .1s ease-out;
z-index: 1001;
/* Search */ }

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,9 +1,5 @@
/*
Template Name: Minton - Responsive Bootstrap 4 Admin Dashboard
Author: CoderThemes
Version: 5.0.0
Website: https://coderthemes.com/
Contact: support@coderthemes.com
File: Main Css File - Dark RTL (Default Demo)
*/
@import url("https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap");

File diff suppressed because one or more lines are too long

View File

@ -1,9 +1,5 @@
/*
Template Name: Minton - Responsive Bootstrap 4 Admin Dashboard
Author: CoderThemes
Version: 5.0.0
Website: https://coderthemes.com/
Contact: support@coderthemes.com
File: Main Css File - Dark (Default Demo)
*/
@import url("https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap");

File diff suppressed because one or more lines are too long

View File

@ -1,9 +1,5 @@
/*
Template Name: Minton - Responsive Bootstrap 4 Admin Dashboard
Author: CoderThemes
Version: 5.0.0
Website: https://coderthemes.com/
Contact: support@coderthemes.com
File: Main Css File - Dark RTL (Material Design Demo)
*/
@import url("https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap");
@ -22,7 +18,7 @@ body {
.content-page {
margin-left: 240px;
overflow: hidden;
padding: 70px 15px 65px 15px;
padding: 85px 15px 65px 15px;
min-height: 80vh; }
.left-side-menu {
@ -282,7 +278,7 @@ body[data-sidebar-size="condensed"] .user-box {
@media (min-width: 768px) {
body[data-sidebar-size="condensed"]:not([data-layout="compact"]):not(.auth-fluid-pages) {
min-height: 1750px; } }
min-height: 0px; } }
@media (max-width: 767.98px) {
.pro-user-name {
@ -553,7 +549,7 @@ body[data-sidebar-icon="twotones"] #sidebar-menu > ul > li > a svg {
left: 240px;
right: 0;
top: 0;
height: 70px;
height: 60px;
transition: all .1s ease-out;
z-index: 1001;
/* Search */ }

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,9 +1,5 @@
/*
Template Name: Minton - Responsive Bootstrap 4 Admin Dashboard
Author: CoderThemes
Version: 5.0.0
Website: https://coderthemes.com/
Contact: support@coderthemes.com
File: Main Css File - Dark (Material Design Demo)
*/
@import url("https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap");
@ -22,7 +18,7 @@ body {
.content-page {
margin-left: 240px;
overflow: hidden;
padding: 70px 15px 65px 15px;
padding: 85px 15px 65px 15px;
min-height: 80vh; }
.left-side-menu {
@ -282,7 +278,7 @@ body[data-sidebar-size="condensed"] .user-box {
@media (min-width: 768px) {
body[data-sidebar-size="condensed"]:not([data-layout="compact"]):not(.auth-fluid-pages) {
min-height: 1750px; } }
min-height: 0; } }
@media (max-width: 767.98px) {
.pro-user-name {
@ -553,7 +549,7 @@ body[data-sidebar-icon="twotones"] #sidebar-menu > ul > li > a svg {
left: 240px;
right: 0;
top: 0;
height: 70px;
height: 60px;
transition: all .1s ease-out;
z-index: 1001;
/* Search */ }

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,9 +1,5 @@
/*
Template Name: Minton - Responsive Bootstrap 4 Admin Dashboard
Author: CoderThemes
Version: 5.0.0
Website: https://coderthemes.com/
Contact: support@coderthemes.com
File: Main Css File - RTL (Material Design Demo)
*/
@import url("https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap");
@ -282,7 +278,7 @@ body[data-sidebar-size="condensed"] .user-box {
@media (min-width: 768px) {
body[data-sidebar-size="condensed"]:not([data-layout="compact"]):not(.auth-fluid-pages) {
min-height: 1750px; } }
min-height: 0; } }
@media (max-width: 767.98px) {
.pro-user-name {
@ -553,7 +549,7 @@ body[data-sidebar-icon="twotones"] #sidebar-menu > ul > li > a svg {
left: 240px;
right: 0;
top: 0;
height: 70px;
height: 60px;
transition: all .1s ease-out;
z-index: 1001;
/* Search */ }

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,9 +1,5 @@
/*
Template Name: Minton - Responsive Bootstrap 4 Admin Dashboard
Author: CoderThemes
Version: 5.0.0
Website: https://coderthemes.com/
Contact: support@coderthemes.com
File: Main Css File (Material-design Demo)
*/
@import url("https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap");
@ -22,7 +18,7 @@ body {
.content-page {
margin-left: 240px;
overflow: hidden;
padding: 70px 15px 65px 15px;
padding: 80px 15px 65px 15px;
min-height: 80vh; }
.left-side-menu {
@ -38,12 +34,12 @@ body {
z-index: 1; }
.logo-box {
height: 70px;
width: 240px;
transition: all .1s ease-out;
background-color: #0056c1;
position: fixed;
top: 0;
top: -10px;
height: 61px;
z-index: 1; }
.logo-box .logo {
line-height: 70px; }
@ -282,7 +278,7 @@ body[data-sidebar-size="condensed"] .user-box {
@media (min-width: 768px) {
body[data-sidebar-size="condensed"]:not([data-layout="compact"]):not(.auth-fluid-pages) {
min-height: 1750px; } }
min-height: 0; } }
@media (max-width: 767.98px) {
.pro-user-name {
@ -552,8 +548,8 @@ body[data-sidebar-icon="twotones"] #sidebar-menu > ul > li > a svg {
position: fixed;
left: 240px;
right: 0;
top: 0;
height: 70px;
top: -10px;
height: 61px;
transition: all .1s ease-out;
z-index: 1001;
/* Search */ }
@ -865,7 +861,7 @@ body[data-layout-mode="detached"] .navbar-custom {
.footer {
bottom: 0;
padding: 19px 15px 20px;
padding: 15px 15px 15px;
position: absolute;
right: 0;
color: #98a6ad;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,9 +1,5 @@
/*
Template Name: Minton - Responsive Bootstrap 4 Admin Dashboard
Author: CoderThemes
Version: 5.0.0
Website: https://coderthemes.com/
Contact: support@coderthemes.com
File: Main Css File - Dark RTL (Modern Demo)
*/
@import url("https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap");

File diff suppressed because one or more lines are too long

View File

@ -1,9 +1,5 @@
/*
Template Name: Minton - Responsive Bootstrap 4 Admin Dashboard
Author: CoderThemes
Version: 5.0.0
Website: https://coderthemes.com/
Contact: support@coderthemes.com
File: Main Css File - Dark (Modern Demo)
*/
@import url("https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap");

File diff suppressed because one or more lines are too long

View File

@ -1,9 +1,5 @@
/*
Template Name: Minton - Responsive Bootstrap 4 Admin Dashboard
Author: CoderThemes
Version: 5.0.0
Website: https://coderthemes.com/
Contact: support@coderthemes.com
File: Main Css File - RTL (Modern Demo)
*/
@import url("https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap");

File diff suppressed because one or more lines are too long

View File

@ -1,9 +1,5 @@
/*
Template Name: Minton - Responsive Bootstrap 4 Admin Dashboard
Author: CoderThemes
Version: 5.0.0
Website: https://coderthemes.com/
Contact: support@coderthemes.com
File: Main Css File (Modern Demo)
*/
@import url("https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap");

File diff suppressed because one or more lines are too long

View File

@ -1,9 +1,5 @@
/*
Template Name: Minton - Responsive Bootstrap 4 Admin Dashboard
Author: CoderThemes
Version: 5.0.0
Website: https://coderthemes.com/
Contact: support@coderthemes.com
File: Main Css File - RTL (Default Demo)
*/
@import url("https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap");

File diff suppressed because one or more lines are too long

View File

@ -1,9 +1,5 @@
/*
Template Name: Minton - Responsive Bootstrap 4 Admin Dashboard
Author: CoderThemes
Version: 5.0.0
Website: https://coderthemes.com/
Contact: support@coderthemes.com
File: Main Css File - Dark RTL (SAAS Demo)
*/
@import url("https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap");

File diff suppressed because one or more lines are too long

View File

@ -1,9 +1,5 @@
/*
Template Name: Minton - Responsive Bootstrap 4 Admin Dashboard
Author: CoderThemes
Version: 5.0.0
Website: https://coderthemes.com/
Contact: support@coderthemes.com
File: Main Css File - Dark (SAAS Demo)
*/
@import url("https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap");

File diff suppressed because one or more lines are too long

View File

@ -1,9 +1,5 @@
/*
Template Name: Minton - Responsive Bootstrap 4 Admin Dashboard
Author: CoderThemes
Version: 5.0.0
Website: https://coderthemes.com/
Contact: support@coderthemes.com
File: Main Css File - RTL (SAAS Demo)
*/
@import url("https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap");

File diff suppressed because one or more lines are too long

View File

@ -1,9 +1,5 @@
/*
Template Name: Minton - Responsive Bootstrap 4 Admin Dashboard
Author: CoderThemes
Version: 5.0.0
Website: https://coderthemes.com/
Contact: support@coderthemes.com
File: Main Css File (SAAS Demo)
*/
@import url("https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap");

File diff suppressed because one or more lines are too long

View File

@ -1,9 +1,5 @@
/*
Template Name: Minton - Responsive Bootstrap 4 Admin Dashboard
Author: CoderThemes
Version: 5.0.0
Website: https://coderthemes.com/
Contact: support@coderthemes.com
File: Main Css File (Default Demo)
*/
@import url("https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap");

File diff suppressed because one or more lines are too long

View File

@ -1,18 +1,8 @@
@charset "UTF-8";
/*
Template Name: Minton - Responsive Bootstrap 4 Admin Dashboard
Author: CoderThemes
Version: 5.0.0
Website: https://coderthemes.com/
Contact: support@coderthemes.com
File: Custom Bootstrap Css File - Dark (Corporate Demo)
*/
/*!
* Bootstrap v4.5.2 (https://getbootstrap.com/)
* Copyright 2011-2020 The Bootstrap Authors
* Copyright 2011-2020 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
:root {
--blue: #5993fd;
--indigo: #675aa9;

File diff suppressed because one or more lines are too long

View File

@ -1,19 +1,10 @@
@charset "UTF-8";
/*
Template Name: Minton - Responsive Bootstrap 4 Admin Dashboard
Author: CoderThemes
Version: 5.0.0
Website: https://coderthemes.com/
Contact: support@coderthemes.com
File: Custom Bootstrap Css File (Corporate Demo)
*/
@import url("https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600&display=swap");
/*!
* Bootstrap v4.5.2 (https://getbootstrap.com/)
* Copyright 2011-2020 The Bootstrap Authors
* Copyright 2011-2020 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
:root {
--blue: #5993fd;
--indigo: #675aa9;

File diff suppressed because one or more lines are too long

View File

@ -1,19 +1,10 @@
@charset "UTF-8";
/*
Template Name: Minton - Responsive Bootstrap 4 Admin Dashboard
Author: CoderThemes
Version: 5.0.0
Website: https://coderthemes.com/
Contact: support@coderthemes.com
File: Custom Bootstrap Css File - Dark (Creative Demo)
*/
@import url("https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&display=swap");
/*!
* Bootstrap v4.5.2 (https://getbootstrap.com/)
* Copyright 2011-2020 The Bootstrap Authors
* Copyright 2011-2020 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
:root {
--blue: #3b82da;
--indigo: #675aa9;

File diff suppressed because one or more lines are too long

View File

@ -1,19 +1,10 @@
@charset "UTF-8";
/*
Template Name: Minton - Responsive Bootstrap 4 Admin Dashboard
Author: CoderThemes
Version: 5.0.0
Website: https://coderthemes.com/
Contact: support@coderthemes.com
File: Custom Bootstrap Css File (Creative Demo)
*/
@import url("https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&display=swap");
/*!
* Bootstrap v4.5.2 (https://getbootstrap.com/)
* Copyright 2011-2020 The Bootstrap Authors
* Copyright 2011-2020 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
:root {
--blue: #3b82da;
--indigo: #675aa9;

File diff suppressed because one or more lines are too long

View File

@ -1,18 +1,7 @@
@charset "UTF-8";
/*
Template Name: Minton - Responsive Bootstrap 4 Admin Dashboard
Author: CoderThemes
Version: 5.0.0
Website: https://coderthemes.com/
Contact: support@coderthemes.com
File: Custom Bootstrap Css File - Dark (Default Demo)
*/
/*!
* Bootstrap v4.5.2 (https://getbootstrap.com/)
* Copyright 2011-2020 The Bootstrap Authors
* Copyright 2011-2020 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
:root {
--blue: #3bafda;
--indigo: #675aa9;

File diff suppressed because one or more lines are too long

View File

@ -1,18 +1,7 @@
@charset "UTF-8";
/*
Template Name: Minton - Responsive Bootstrap 4 Admin Dashboard
Author: CoderThemes
Version: 5.0.0
Website: https://coderthemes.com/
Contact: support@coderthemes.com
File: Custom Bootstrap Css File - Dark (Material Design Demo)
*/
/*!
* Bootstrap v4.5.2 (https://getbootstrap.com/)
* Copyright 2011-2020 The Bootstrap Authors
* Copyright 2011-2020 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
:root {
--blue: #0056c1;
--indigo: #675aa9;

File diff suppressed because one or more lines are too long

View File

@ -1,10 +1,6 @@
@charset "UTF-8";
/*
Template Name: Minton - Responsive Bootstrap 4 Admin Dashboard
Author: CoderThemes
Version: 5.0.0
Website: https://coderthemes.com/
Contact: support@coderthemes.com
File: Custom Bootstrap Css File (Material Design Demo)
*/
/*!

File diff suppressed because one or more lines are too long

View File

@ -1,10 +1,6 @@
@charset "UTF-8";
/*
Template Name: Minton - Responsive Bootstrap 4 Admin Dashboard
Author: CoderThemes
Version: 5.0.0
Website: https://coderthemes.com/
Contact: support@coderthemes.com
File: Custom Bootstrap Css File - Dark (Modern Demo)
*/
@import url("https://fonts.googleapis.com/css2?family=Rubik:wght@300;400;500;700&display=swap");

File diff suppressed because one or more lines are too long

View File

@ -1,10 +1,6 @@
@charset "UTF-8";
/*
Template Name: Minton - Responsive Bootstrap 4 Admin Dashboard
Author: CoderThemes
Version: 5.0.0
Website: https://coderthemes.com/
Contact: support@coderthemes.com
File: Custom Bootstrap Css File (Modern Demo)
*/
@import url("https://fonts.googleapis.com/css2?family=Rubik:wght@300;400;500;700&display=swap");

File diff suppressed because one or more lines are too long

View File

@ -1,10 +1,6 @@
@charset "UTF-8";
/*
Template Name: Minton - Responsive Bootstrap 4 Admin Dashboard
Author: CoderThemes
Version: 5.0.0
Website: https://coderthemes.com/
Contact: support@coderthemes.com
File: Custom Bootstrap Css File - Dark (SAAS Demo)
*/
@import url("https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@300;400;500;600&display=swap");

File diff suppressed because one or more lines are too long

View File

@ -1,10 +1,6 @@
@charset "UTF-8";
/*
Template Name: Minton - Responsive Bootstrap 4 Admin Dashboard
Author: CoderThemes
Version: 5.0.0
Website: https://coderthemes.com/
Contact: support@coderthemes.com
File: Custom Bootstrap Css File (SAAS Demo)
*/
@import url("https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@300;400;500;600&display=swap");

File diff suppressed because one or more lines are too long

View File

@ -1,17 +1,6 @@
@charset "UTF-8";
/*
Template Name: Minton - Responsive Bootstrap 4 Admin Dashboard
Author: CoderThemes
Version: 5.0.0
Website: https://coderthemes.com/
Contact: support@coderthemes.com
File: Custom Bootstrap Css File (Default Demo)
*/
/*!
* Bootstrap v4.5.2 (https://getbootstrap.com/)
* Copyright 2011-2020 The Bootstrap Authors
* Copyright 2011-2020 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
:root {
--blue: #3bafda;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More