Merge branch 'main' of http://bibgit.com/dharmaraj/New-OMIS into omis_dharma
This commit is contained in:
commit
4eace5b650
@ -5,15 +5,24 @@ namespace Modules\Employee\Http\Controllers;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Modules\Employee\Repositories\EmployeeInterface;
|
||||
|
||||
class EmployeeController extends Controller
|
||||
{
|
||||
|
||||
private EmployeeInterface $employeeRepository;
|
||||
|
||||
public function __construct(EmployeeInterface $employeeRepository)
|
||||
{
|
||||
$this->employeeRepository = $employeeRepository;
|
||||
}
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
return view('employee::index');
|
||||
$data['employees'] = $this->employeeRepository->findAll();
|
||||
return view('employee::index', $data);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -28,9 +37,25 @@ class EmployeeController extends Controller
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*/
|
||||
public function store(Request $request): RedirectResponse
|
||||
public function store(Request $request)
|
||||
{
|
||||
//
|
||||
$inputData = $request->only(['first_name', 'last_name']);
|
||||
// try {
|
||||
|
||||
if ($request->hasFile('profile_pic')) {
|
||||
$fileName = time() . '_' . $request->profile_pic->getClientOriginalName();
|
||||
$filePath = $request->file('profile_pic')->storeAs('uploads', $fileName, 'public');
|
||||
$inputData['profile_picture'] = time() . '_' . $request->profile_pic->getClientOriginalName();
|
||||
// $fileModel->file_path = '/storage/' . $filePath;
|
||||
// $fileModel->save();
|
||||
}
|
||||
|
||||
$this->employeeRepository->create($inputData);
|
||||
toastr()->success('Employee Created Succesfully');
|
||||
// } catch (\Throwable $th) {
|
||||
// toastr()->error($th->getMessage());
|
||||
// }
|
||||
return redirect()->route('employee.index');
|
||||
}
|
||||
|
||||
/**
|
||||
@ -38,6 +63,7 @@ class EmployeeController extends Controller
|
||||
*/
|
||||
public function show($id)
|
||||
{
|
||||
|
||||
return view('employee::show');
|
||||
}
|
||||
|
||||
@ -46,7 +72,9 @@ class EmployeeController extends Controller
|
||||
*/
|
||||
public function edit($id)
|
||||
{
|
||||
return view('employee::edit');
|
||||
$data['title'] = 'Edit Employee';
|
||||
$data['employee'] = $this->employeeRepository->getEmployeeById($id);
|
||||
return view('employee::edit', $data);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -54,7 +82,21 @@ class EmployeeController extends Controller
|
||||
*/
|
||||
public function update(Request $request, $id): RedirectResponse
|
||||
{
|
||||
//
|
||||
$inputData = $request->only(['first_name', 'last_name']);
|
||||
// try {
|
||||
|
||||
if ($request->hasFile('profile_pic')) {
|
||||
$fileName = time() . '_' . $request->profile_pic->getClientOriginalName();
|
||||
$filePath = $request->file('profile_pic')->storeAs('uploads', $fileName, 'public');
|
||||
$inputData['profile_picture'] = time() . '_' . $request->profile_pic->getClientOriginalName();
|
||||
}
|
||||
|
||||
$this->employeeRepository->update($id, $inputData);
|
||||
toastr()->success('Employee Created Succesfully');
|
||||
// } catch (\Throwable $th) {
|
||||
// toastr()->error($th->getMessage());
|
||||
// }
|
||||
return redirect()->route('employee.index');
|
||||
}
|
||||
|
||||
/**
|
||||
|
13
Modules/Employee/app/Models/Employee.php
Normal file
13
Modules/Employee/app/Models/Employee.php
Normal file
@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Employee\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Employee extends Model
|
||||
{
|
||||
protected $table = 'tbl_employees';
|
||||
protected $primaryKey = 'id';
|
||||
protected $guarded = [];
|
||||
|
||||
}
|
@ -4,6 +4,8 @@ namespace Modules\Employee\Providers;
|
||||
|
||||
use Illuminate\Support\Facades\Blade;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
use Modules\Employee\Repositories\EmployeeInterface;
|
||||
use Modules\Employee\Repositories\EmployeeRepository;
|
||||
|
||||
class EmployeeServiceProvider extends ServiceProvider
|
||||
{
|
||||
@ -29,6 +31,7 @@ class EmployeeServiceProvider extends ServiceProvider
|
||||
*/
|
||||
public function register(): void
|
||||
{
|
||||
$this->app->bind(EmployeeInterface::class, EmployeeRepository::class);
|
||||
$this->app->register(RouteServiceProvider::class);
|
||||
}
|
||||
|
||||
@ -56,7 +59,7 @@ class EmployeeServiceProvider extends ServiceProvider
|
||||
*/
|
||||
public function registerTranslations(): void
|
||||
{
|
||||
$langPath = resource_path('lang/modules/'.$this->moduleNameLower);
|
||||
$langPath = resource_path('lang/modules/' . $this->moduleNameLower);
|
||||
|
||||
if (is_dir($langPath)) {
|
||||
$this->loadTranslationsFrom($langPath, $this->moduleNameLower);
|
||||
@ -72,7 +75,7 @@ class EmployeeServiceProvider extends ServiceProvider
|
||||
*/
|
||||
protected function registerConfig(): void
|
||||
{
|
||||
$this->publishes([module_path($this->moduleName, 'config/config.php') => config_path($this->moduleNameLower.'.php')], 'config');
|
||||
$this->publishes([module_path($this->moduleName, 'config/config.php') => config_path($this->moduleNameLower . '.php')], 'config');
|
||||
$this->mergeConfigFrom(module_path($this->moduleName, 'config/config.php'), $this->moduleNameLower);
|
||||
}
|
||||
|
||||
@ -81,14 +84,14 @@ class EmployeeServiceProvider extends ServiceProvider
|
||||
*/
|
||||
public function registerViews(): void
|
||||
{
|
||||
$viewPath = resource_path('views/modules/'.$this->moduleNameLower);
|
||||
$viewPath = resource_path('views/modules/' . $this->moduleNameLower);
|
||||
$sourcePath = module_path($this->moduleName, 'resources/views');
|
||||
|
||||
$this->publishes([$sourcePath => $viewPath], ['views', $this->moduleNameLower.'-module-views']);
|
||||
$this->publishes([$sourcePath => $viewPath], ['views', $this->moduleNameLower . '-module-views']);
|
||||
|
||||
$this->loadViewsFrom(array_merge($this->getPublishableViewPaths(), [$sourcePath]), $this->moduleNameLower);
|
||||
|
||||
$componentNamespace = str_replace('/', '\\', config('modules.namespace').'\\'.$this->moduleName.'\\'.ltrim(config('modules.paths.generator.component-class.path'), config('modules.paths.app_folder','')));
|
||||
$componentNamespace = str_replace('/', '\\', config('modules.namespace') . '\\' . $this->moduleName . '\\' . ltrim(config('modules.paths.generator.component-class.path'), config('modules.paths.app_folder', '')));
|
||||
Blade::componentNamespace($componentNamespace, $this->moduleNameLower);
|
||||
}
|
||||
|
||||
@ -104,8 +107,8 @@ class EmployeeServiceProvider extends ServiceProvider
|
||||
{
|
||||
$paths = [];
|
||||
foreach (config('view.paths') as $path) {
|
||||
if (is_dir($path.'/modules/'.$this->moduleNameLower)) {
|
||||
$paths[] = $path.'/modules/'.$this->moduleNameLower;
|
||||
if (is_dir($path . '/modules/' . $this->moduleNameLower)) {
|
||||
$paths[] = $path . '/modules/' . $this->moduleNameLower;
|
||||
}
|
||||
}
|
||||
|
||||
|
12
Modules/Employee/app/Repositories/EmployeeInterface.php
Normal file
12
Modules/Employee/app/Repositories/EmployeeInterface.php
Normal file
@ -0,0 +1,12 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Employee\Repositories;
|
||||
|
||||
interface EmployeeInterface
|
||||
{
|
||||
public function findAll();
|
||||
public function getEmployeeById($employeeId);
|
||||
public function delete($employeeId);
|
||||
public function create($EmployeeDetails);
|
||||
public function update($employeeId, array $newDetails);
|
||||
}
|
49
Modules/Employee/app/Repositories/EmployeeRepository.php
Normal file
49
Modules/Employee/app/Repositories/EmployeeRepository.php
Normal file
@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Employee\Repositories;
|
||||
|
||||
use Modules\Employee\Models\Employee;
|
||||
|
||||
class EmployeeRepository implements EmployeeInterface
|
||||
{
|
||||
public function findAll()
|
||||
{
|
||||
return Employee::get();
|
||||
}
|
||||
|
||||
public function getEmployeeById($employeeId)
|
||||
{
|
||||
return Employee::findOrFail($employeeId);
|
||||
}
|
||||
|
||||
public function delete($employeeId)
|
||||
{
|
||||
Employee::destroy($employeeId);
|
||||
}
|
||||
|
||||
public function create($employeeDetails)
|
||||
{
|
||||
// dd($employeeDetails);
|
||||
return Employee::create($employeeDetails);
|
||||
}
|
||||
|
||||
public function update($employeeId, array $newDetails)
|
||||
{
|
||||
return Employee::whereId($employeeId)->update($newDetails);
|
||||
}
|
||||
|
||||
// public function uploadImage($file)
|
||||
// {
|
||||
// if ($req->file()) {
|
||||
// $fileName = time() . '_' . $req->file->getClientOriginalName();
|
||||
// $filePath = $req->file('file')->storeAs('uploads', $fileName, 'public');
|
||||
// $fileModel->name = time() . '_' . $req->file->getClientOriginalName();
|
||||
// $fileModel->file_path = '/storage/' . $filePath;
|
||||
// $fileModel->save();
|
||||
// return back()
|
||||
// ->with('success', 'File has been uploaded.')
|
||||
// ->with('file', $fileName);
|
||||
// }
|
||||
// }
|
||||
|
||||
}
|
@ -0,0 +1,61 @@
|
||||
<?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('tbl_employees', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->string('first_name')->nullable();
|
||||
$table->string('middle_name')->nullable();
|
||||
$table->string('last_name')->nullable();
|
||||
$table->string('email')->nullable();
|
||||
$table->unsignedBigInteger('genders_id')->nullable();
|
||||
$table->date('nepali_dob')->nullable();
|
||||
$table->date('dob')->nullable();
|
||||
$table->unsignedBigInteger('nationalities_id')->nullable();
|
||||
$table->text('about_me')->nullable();
|
||||
$table->string('signature')->nullable();
|
||||
$table->string('father_name')->nullable();
|
||||
$table->string('mother_name')->nullable();
|
||||
$table->string('grand_father_name')->nullable();
|
||||
$table->string('grand_mother_name')->nullable();
|
||||
$table->string('spouse')->nullable();
|
||||
$table->string('contact')->nullable();
|
||||
$table->string('alt_contact')->nullable();
|
||||
$table->string('profile_picture')->nullable();
|
||||
$table->unsignedBigInteger('users_id')->nullable();
|
||||
$table->text('skills')->nullable();
|
||||
$table->text('experience')->nullable();
|
||||
$table->text('permanent_address')->nullable();
|
||||
$table->unsignedBigInteger('permanent_city')->nullable();
|
||||
$table->text('temporary_address')->nullable();
|
||||
$table->unsignedBigInteger('temporary_city')->nullable();
|
||||
$table->text('old_system_address')->nullable();
|
||||
$table->text('education')->nullable();
|
||||
$table->unsignedBigInteger('castes_id')->nullable();
|
||||
$table->unsignedBigInteger('ethnicities_id')->nullable();
|
||||
$table->unsignedBigInteger('dags_id')->nullable();
|
||||
$table->string('status')->nullable();
|
||||
$table->string('remarks')->nullable();
|
||||
$table->unsignedBigInteger('createdby')->nullable();
|
||||
$table->unsignedBigInteger('updatedby')->nullable();
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::dropIfExists('employees');
|
||||
}
|
||||
};
|
@ -7,14 +7,9 @@
|
||||
@include('layouts.partials.breadcrumb', ['title' => $title])
|
||||
<!-- end page title -->
|
||||
|
||||
|
||||
<form action="{{ route('employee.store') }}" class="needs-validation" novalidate method="post">
|
||||
@csrf
|
||||
{{ html()->form('POST')->route('employee.store')->class(['needs-validation'])->attributes(['novalidate', 'enctype' => 'multipart/form-data'])->open() }}
|
||||
@include('employee::partials.action')
|
||||
</form>
|
||||
|
||||
|
||||
<!--end row-->
|
||||
{{ html()->form()->close() }}
|
||||
|
||||
</div>
|
||||
<!-- container-fluid -->
|
||||
|
22
Modules/Employee/resources/views/edit.blade.php
Normal file
22
Modules/Employee/resources/views/edit.blade.php
Normal file
@ -0,0 +1,22 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="page-content">
|
||||
<div class="container-fluid">
|
||||
<!-- start page title -->
|
||||
@include('layouts.partials.breadcrumb', ['title' => $title])
|
||||
<!-- end page title -->
|
||||
|
||||
{{-- {{ html()->form('POST')->route('employee.store')->class(['needs-validation'])->attributes(['novalidate', 'enctype' => 'multipart/form-data'])->open() }} --}}
|
||||
{{ html()->modelForm($employee, 'PUT')->route('employee.update', $employee->id)->class(['needs-validation'])->attributes(['novalidate', 'enctype' => 'multipart/form-data'])->open() }}
|
||||
@include('employee::partials.action')
|
||||
{{ html()->closeModelForm() }}
|
||||
|
||||
</div>
|
||||
<!-- container-fluid -->
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@push('js')
|
||||
<script src="{{ asset('assets/js/pages/form-validation.init.js') }}"></script>
|
||||
@endpush
|
@ -39,47 +39,28 @@
|
||||
|
||||
<div id="teamlist">
|
||||
<div class="team-list row grid-view-filter" id="team-member-list">
|
||||
|
||||
@forelse ($employees as $employee)
|
||||
<div class="col">
|
||||
<div class="card team-box">
|
||||
<div class="card team-box ribbon-box mb-lg-0 material-shadow border shadow-none">
|
||||
<div class="team-cover"> <img src="assets/images/small/img-9.jpg" alt="" class="img-fluid">
|
||||
</div>
|
||||
<div class="card-body p-4">
|
||||
<div class="ribbon-two ribbon-two-success"><span>Active</span></div>
|
||||
<div class="row align-items-center team-row">
|
||||
<div class="col team-settings">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="me-2 flex-shrink-0"> <button type="button"
|
||||
class="btn btn-light btn-icon rounded-circle btn-sm favourite-btn"> <i
|
||||
class="ri-star-fill fs-14"></i> </button> </div>
|
||||
</div>
|
||||
<div class="col dropdown text-end"> <a href="javascript:void(0);" data-bs-toggle="dropdown"
|
||||
aria-expanded="false"> <i class="ri-more-fill fs-17"></i> </a>
|
||||
<ul class="dropdown-menu dropdown-menu-end">
|
||||
<li><a class="dropdown-item edit-list" href="#addmemberModal" data-bs-toggle="modal"
|
||||
data-edit-id="12"><i class="ri-pencil-line text-muted me-2 align-bottom"></i>Edit</a>
|
||||
</li>
|
||||
<li><a class="dropdown-item remove-list" href="#removeMemberModal" data-bs-toggle="modal"
|
||||
data-remove-id="12"><i
|
||||
class="ri-delete-bin-5-line text-muted me-2 align-bottom"></i>Remove</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4 col">
|
||||
<div class="team-profile-img">
|
||||
<div class="avatar-lg img-thumbnail rounded-circle flex-shrink-0"><img
|
||||
src="assets/images/users/avatar-2.jpg" alt=""
|
||||
src="{{ asset('app/public/uploads/' . $employee->profile_picture) }}" alt=""
|
||||
class="member-img img-fluid d-block rounded-circle"></div>
|
||||
<div class="team-content"> <a class="member-name" data-bs-toggle="offcanvas"
|
||||
href="#member-overview" aria-controls="member-overview">
|
||||
<h5 class="fs-16 mb-1">Nancy Martino</h5>
|
||||
<div class="team-content"> <a class="member-name"
|
||||
href="{{ route('employee.show', $employee->id) }}">
|
||||
<h5 class="fs-16 mb-1">{{ $employee->first_name }}</h5>
|
||||
</a>
|
||||
<p class="text-muted member-designation mb-0">Team Leader & HR</p>
|
||||
<p class="text-muted member-designation mb-0">Bibhuti</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4 col">
|
||||
{{-- <div class="col-lg-4 col">
|
||||
<div class="row text-muted text-center">
|
||||
<div class="col-6 border-end border-end-dashed">
|
||||
<h5 class="projects-num mb-1">225</h5>
|
||||
@ -90,136 +71,35 @@
|
||||
<p class="text-muted mb-0">Tasks</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div> --}}
|
||||
<div class="col-lg-2 col">
|
||||
<div class="text-end"> <a href="pages-profile.html" class="btn btn-light view-btn">View
|
||||
Profile</a> </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col">
|
||||
<div class="card team-box">
|
||||
<div class="team-cover"> <img src="assets/images/small/img-12.jpg" alt="" class="img-fluid">
|
||||
</div>
|
||||
<div class="card-body p-4">
|
||||
<div class="row align-items-center team-row">
|
||||
<div class="col team-settings">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="me-2 flex-shrink-0"> <button type="button"
|
||||
class="btn btn-light btn-icon rounded-circle btn-sm favourite-btn active"> <i
|
||||
class="ri-star-fill fs-14"></i> </button> </div>
|
||||
</div>
|
||||
<div class="col dropdown text-end"> <a href="javascript:void(0);" data-bs-toggle="dropdown"
|
||||
aria-expanded="false"> <i class="ri-more-fill fs-17"></i> </a>
|
||||
<ul class="dropdown-menu dropdown-menu-end">
|
||||
<li><a class="dropdown-item edit-list" href="#addmemberModal" data-bs-toggle="modal"
|
||||
data-edit-id="11"><i
|
||||
class="ri-pencil-line text-muted me-2 align-bottom"></i>Edit</a></li>
|
||||
<li><a class="dropdown-item remove-list" href="#removeMemberModal"
|
||||
data-bs-toggle="modal" data-remove-id="11"><i
|
||||
class="ri-delete-bin-5-line text-muted me-2 align-bottom"></i>Remove</a></li>
|
||||
<ul class="list-inline mb-0 text-center">
|
||||
<li class="list-inline-item avatar-xs">
|
||||
<a href="{{ route('employee.edit', $employee->id) }}"
|
||||
class="avatar-title bg-info-subtle text-info fs-15 rounded">
|
||||
<i class="ri-edit-line"></i>
|
||||
</a>
|
||||
</li>
|
||||
<li class="list-inline-item avatar-xs">
|
||||
<a href="javascript:void(0);" data-bs-toggle="modal" data-bs-target="#assignRoleModal"
|
||||
class="avatar-title bg-primary-subtle text-primary fs-15 rounded">
|
||||
<i class="ri-user-add-line"></i>
|
||||
</a>
|
||||
</li>
|
||||
<li class="list-inline-item avatar-xs">
|
||||
<a href="javascript:void(0);" data-bs-toggle="modal" data-bs-target="#changePasswordModal"
|
||||
class="avatar-title bg-danger-subtle text-danger fs-15 rounded">
|
||||
<i class="ri-lock-unlock-line"></i>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4 col">
|
||||
<div class="team-profile-img">
|
||||
<div class="avatar-lg img-thumbnail rounded-circle flex-shrink-0">
|
||||
<div class="avatar-title bg-light text-primary rounded-circle text-uppercase border">HB
|
||||
</div>
|
||||
</div>
|
||||
<div class="team-content"> <a class="member-name" data-bs-toggle="offcanvas"
|
||||
href="#member-overview" aria-controls="member-overview">
|
||||
<h5 class="fs-16 mb-1">Henry Baird</h5>
|
||||
</a>
|
||||
<p class="text-muted member-designation mb-0">Full Stack Developer</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4 col">
|
||||
<div class="row text-muted text-center">
|
||||
<div class="col-6 border-end border-end-dashed">
|
||||
<h5 class="projects-num mb-1">352</h5>
|
||||
<p class="text-muted mb-0">Projects</p>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<h5 class="tasks-num mb-1">376</h5>
|
||||
<p class="text-muted mb-0">Tasks</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-2 col">
|
||||
<div class="text-end"> <a href="pages-profile.html" class="btn btn-light view-btn">View
|
||||
Profile</a> </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
|
||||
<div class="col">
|
||||
<div class="card team-box">
|
||||
<div class="team-cover"> <img src="assets/images/small/img-11.jpg" alt=""
|
||||
class="img-fluid"> </div>
|
||||
<div class="card-body p-4">
|
||||
<div class="row align-items-center team-row">
|
||||
<div class="col team-settings">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="me-2 flex-shrink-0"> <button type="button"
|
||||
class="btn btn-light btn-icon rounded-circle btn-sm favourite-btn"> <i
|
||||
class="ri-star-fill fs-14"></i> </button> </div>
|
||||
</div>
|
||||
<div class="col dropdown text-end"> <a href="javascript:void(0);" data-bs-toggle="dropdown"
|
||||
aria-expanded="false"> <i class="ri-more-fill fs-17"></i> </a>
|
||||
<ul class="dropdown-menu dropdown-menu-end">
|
||||
<li><a class="dropdown-item edit-list" href="#addmemberModal" data-bs-toggle="modal"
|
||||
data-edit-id="10"><i
|
||||
class="ri-pencil-line text-muted me-2 align-bottom"></i>Edit</a></li>
|
||||
<li><a class="dropdown-item remove-list" href="#removeMemberModal"
|
||||
data-bs-toggle="modal" data-remove-id="10"><i
|
||||
class="ri-delete-bin-5-line text-muted me-2 align-bottom"></i>Remove</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4 col">
|
||||
<div class="team-profile-img">
|
||||
<div class="avatar-lg img-thumbnail rounded-circle flex-shrink-0"><img
|
||||
src="assets/images/users/avatar-3.jpg" alt=""
|
||||
class="member-img img-fluid d-block rounded-circle"></div>
|
||||
<div class="team-content"> <a class="member-name" data-bs-toggle="offcanvas"
|
||||
href="#member-overview" aria-controls="member-overview">
|
||||
<h5 class="fs-16 mb-1">Frank Hook</h5>
|
||||
</a>
|
||||
<p class="text-muted member-designation mb-0">Project Manager</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4 col">
|
||||
<div class="row text-muted text-center">
|
||||
<div class="col-6 border-end border-end-dashed">
|
||||
<h5 class="projects-num mb-1">164</h5>
|
||||
<p class="text-muted mb-0">Projects</p>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<h5 class="tasks-num mb-1">182</h5>
|
||||
<p class="text-muted mb-0">Tasks</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-2 col">
|
||||
<div class="text-end"> <a href="pages-profile.html" class="btn btn-light view-btn">View
|
||||
Profile</a> </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -228,4 +108,65 @@
|
||||
<!--end row-->
|
||||
</div><!-- container-fluid -->
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="assignRoleModal" tabindex="-1" aria-labelledby="assignRoleLabel" aria-modal="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header model-primary">
|
||||
<h5 class="modal-title" id="exampleModalgridLabel">Assign Role</h5>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form action="{{ route('leave.store') }}" class="needs-validation" novalidate method="post">
|
||||
<div class="row gy-2">
|
||||
<div class="col-lg-12">
|
||||
{{ html()->label('Username')->class('form-label') }}
|
||||
{{ html()->text('username')->class('form-control')->placeholder('Enter Username')->required() }}
|
||||
</div>
|
||||
|
||||
<div class="col-lg-12">
|
||||
{{ html()->label('Role')->class('form-label') }}
|
||||
{{ html()->select('role_id', [])->class('form-select')->placeholder('Select Role')->required() }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-4 text-end">
|
||||
<button type="submit" class="btn btn-success w-sm">Save</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="changePasswordModal" tabindex="-1" aria-labelledby="changePasswordLabel" aria-modal="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header model-primary">
|
||||
<h5 class="modal-title" id="exampleModalgridLabel">Change Password</h5>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form action="{{ route('leave.store') }}" class="needs-validation" novalidate method="post">
|
||||
<div class="row gy-2">
|
||||
<div class="col-lg-12">
|
||||
{{ html()->label('New Password')->class('form-label') }}
|
||||
{{ html()->text('password')->class('form-control')->placeholder('Enter New Password')->required() }}
|
||||
</div>
|
||||
|
||||
<div class="col-lg-12">
|
||||
{{ html()->label('Confirm New Password')->class('form-label') }}
|
||||
{{ html()->text('confirm_password')->class('form-control')->placeholder('Enter Confirm New Password')->required() }}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="mt-4 text-end">
|
||||
<button type="submit" class="btn btn-success w-sm">Save</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
@ -1,11 +1,11 @@
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="card-header card-primary">
|
||||
<h4 class="card-title mb-0">Personal Details</h4>
|
||||
</div>
|
||||
|
||||
<div class="card-body row">
|
||||
<div class="card-body row gy-4">
|
||||
|
||||
<div class="col-md-4">
|
||||
{{ html()->label('First name')->class('form-label') }}
|
||||
@ -18,18 +18,44 @@
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
<label class="form-label" for="project-title-input">Project Title</label>
|
||||
<input type="text" class="form-control" id="project-title-input" placeholder="Enter project title">
|
||||
{{ html()->label('Last name')->class('form-label') }}
|
||||
{{ html()->text('last_name')->class('form-control')->placeholder('Enter Last Name')->required() }}
|
||||
{{ html()->div('Please enter last name')->class('invalid-feedback') }}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
<label class="form-label" for="project-thumbnail-img">Thumbnail Image</label>
|
||||
<input class="form-control" id="project-thumbnail-img" type="file"
|
||||
accept="image/png, image/gif, image/jpeg">
|
||||
{{ html()->label('Gender')->class('form-label') }}
|
||||
{{ html()->select('gender', ['male', 'female'])->class('form-select')->placeholder('Select Gender') }}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{{ html()->label('Date of Birth')->class('form-label') }}
|
||||
{{ html()->date('dob')->class('form-control')->placeholder('Choose Date of Birth')->required() }}
|
||||
{{ html()->div('Please choose dob')->class('invalid-feedback') }}
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{{ html()->label('Nationality')->class('form-label') }}
|
||||
{{ html()->select('nationality', ['Nepal', 'Other'])->class('form-control')->placeholder('Select Nationality') }}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{{ html()->label('Email')->class('form-label') }}
|
||||
{{ html()->email('email')->class('form-control')->placeholder('Enter Email')->required() }}
|
||||
{{ html()->div('Please enter email')->class('invalid-feedback') }}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{{ html()->label('Phone Number')->class('form-label') }}
|
||||
{{ html()->text('phone')->class('form-control')->placeholder('Enter Phone Number') }}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{{ html()->label('Upload Profile Pic')->class('form-label') }}
|
||||
{{ html()->file('profile_pic')->class('form-control') }}
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<!-- end card body -->
|
||||
@ -37,243 +63,85 @@
|
||||
<!-- end card -->
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="card-title mb-0">Attached files</h5>
|
||||
<div class="card-header card-primary">
|
||||
<h5 class="card-title mb-0">Address Detail</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div>
|
||||
<p class="text-muted">Add Attached files here.</p>
|
||||
<div class="card-body row gy-2">
|
||||
{{-- <div class="col-md-4">
|
||||
{{ html()->label('Country')->class('form-label') }}
|
||||
{{ html()->select('country_id', ['Nepal'])->class('form-select')->placeholder('Select Country') }}
|
||||
</div> --}}
|
||||
|
||||
<div class="dropzone dz-clickable">
|
||||
|
||||
<div class="dz-message needsclick">
|
||||
<div class="mb-3">
|
||||
<i class="display-4 text-muted ri-upload-cloud-2-fill"></i>
|
||||
<div class="col-md-4">
|
||||
{{ html()->label('State')->class('form-label') }}
|
||||
{{ html()->select('state_id', ['Nepal'])->class('form-select')->placeholder('Select State') }}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{{ html()->label('District name')->class('form-label') }}
|
||||
{{ html()->select('district_id', [])->class('form-select')->placeholder('Select District') }}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{{ html()->label('City')->class('form-label') }}
|
||||
{{ html()->text('last_name')->class('form-control')->placeholder('Enter City Name') }}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{{ html()->label('municipality')->class('form-label') }}
|
||||
{{ html()->select('municipality_id', [])->class('form-select')->placeholder('Select Municipality') }}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{{ html()->label('Ward')->class('form-label') }}
|
||||
{{ html()->text('ward')->class('form-control')->placeholder('Enter Ward no') }}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{{ html()->label('Permanent Address')->class('form-label') }}
|
||||
{{ html()->text('perm_address')->class('form-control')->placeholder('Enter Permanent Address') }}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{{ html()->label('Temporary Address')->class('form-label') }}
|
||||
{{ html()->text('temp_address')->class('form-control')->placeholder('Enter Temporary Address') }}
|
||||
</div>
|
||||
|
||||
<h5>Drop files here or click to upload.</h5>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<ul class="list-unstyled mb-0" id="dropzone-preview">
|
||||
|
||||
</ul>
|
||||
<!-- end dropzon-preview -->
|
||||
<div class="card">
|
||||
<div class="card-header card-primary">
|
||||
<h5 class="card-title mb-0">Organization Detail</h5>
|
||||
</div>
|
||||
<div class="card-body row gy-2">
|
||||
<div class="col-md-4">
|
||||
{{ html()->label('Department')->class('form-label') }}
|
||||
{{ html()->select('department_id', ['Nepal'])->class('form-select')->placeholder('Select Department') }}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{{ html()->label('Designation')->class('form-label') }}
|
||||
{{ html()->select('designation_id', ['Nepal'])->class('form-select')->placeholder('Select Designation') }}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{{ html()->label('Join Date')->class('form-label') }}
|
||||
{{ html()->date('join_date')->class('form-control')->placeholder('Choose Join Date') }}
|
||||
</div>
|
||||
|
||||
|
||||
<div class="col-md-8">
|
||||
{{ html()->label('Remarks')->class('form-label') }}
|
||||
{{ html()->textarea('remark')->class('form-control')->placeholder('Enter Remarks') }}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<!-- end card -->
|
||||
<div class="mb-4 text-start">
|
||||
<button type="submit" class="btn btn-danger w-sm">Delete</button>
|
||||
<button type="submit" class="btn btn-secondary w-sm">Draft</button>
|
||||
<button type="submit" class="btn btn-success w-sm">Create</button>
|
||||
</div>
|
||||
</div>
|
||||
<!-- end col -->
|
||||
<div class="col-lg-4">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="card-title mb-0">Privacy</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div>
|
||||
<label for="choices-privacy-status-input" class="form-label">Status</label>
|
||||
<div class="choices" data-type="select-one" tabindex="0" role="listbox" aria-haspopup="true"
|
||||
aria-expanded="false">
|
||||
<div class="choices__inner"><select class="form-select choices__input" data-choices=""
|
||||
data-choices-search-false="" id="choices-privacy-status-input" hidden="" tabindex="-1"
|
||||
data-choice="active">
|
||||
<option value="Private" data-custom-properties="[object Object]">Private</option>
|
||||
</select>
|
||||
<div class="choices__list choices__list--single">
|
||||
<div class="choices__item choices__item--selectable" data-item="" data-id="1" data-value="Private"
|
||||
data-custom-properties="[object Object]" aria-selected="true">Private</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="choices__list choices__list--dropdown" aria-expanded="false">
|
||||
<div class="choices__list" role="listbox">
|
||||
<div id="choices--choices-privacy-status-input-item-choice-1"
|
||||
class="choices__item choices__item--choice is-selected choices__item--selectable is-highlighted"
|
||||
role="option" data-choice="" data-id="1" data-value="Private" data-select-text="Press to select"
|
||||
data-choice-selectable="" aria-selected="true">Private</div>
|
||||
<div id="choices--choices-privacy-status-input-item-choice-2"
|
||||
class="choices__item choices__item--choice choices__item--selectable" role="option" data-choice=""
|
||||
data-id="2" data-value="Public" data-select-text="Press to select" data-choice-selectable="">
|
||||
Public</div>
|
||||
<div id="choices--choices-privacy-status-input-item-choice-3"
|
||||
class="choices__item choices__item--choice choices__item--selectable" role="option" data-choice=""
|
||||
data-id="3" data-value="Team" data-select-text="Press to select" data-choice-selectable="">Team
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- end card body -->
|
||||
</div>
|
||||
<!-- end card -->
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="card-title mb-0">Tags</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="mb-3">
|
||||
<label for="choices-categories-input" class="form-label">Categories</label>
|
||||
<div class="choices" data-type="select-one" tabindex="0" role="listbox" aria-haspopup="true"
|
||||
aria-expanded="false">
|
||||
<div class="choices__inner"><select class="form-select choices__input" data-choices=""
|
||||
data-choices-search-false="" id="choices-categories-input" hidden="" tabindex="-1"
|
||||
data-choice="active">
|
||||
<option value="Designing" data-custom-properties="[object Object]">Designing</option>
|
||||
</select>
|
||||
<div class="choices__list choices__list--single">
|
||||
<div class="choices__item choices__item--selectable" data-item="" data-id="1"
|
||||
data-value="Designing" data-custom-properties="[object Object]" aria-selected="true">Designing
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="choices__list choices__list--dropdown" aria-expanded="false">
|
||||
<div class="choices__list" role="listbox">
|
||||
<div id="choices--choices-categories-input-item-choice-1"
|
||||
class="choices__item choices__item--choice is-selected choices__item--selectable is-highlighted"
|
||||
role="option" data-choice="" data-id="1" data-value="Designing"
|
||||
data-select-text="Press to select" data-choice-selectable="" aria-selected="true">Designing</div>
|
||||
<div id="choices--choices-categories-input-item-choice-2"
|
||||
class="choices__item choices__item--choice choices__item--selectable" role="option" data-choice=""
|
||||
data-id="2" data-value="Development" data-select-text="Press to select"
|
||||
data-choice-selectable="">Development</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-4 text-end">
|
||||
<button type="submit" class="btn btn-success w-sm">Save</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label for="choices-text-input" class="form-label">Skills</label>
|
||||
<div class="choices" data-type="text" aria-haspopup="true" aria-expanded="false">
|
||||
<div class="choices__inner"><input class="form-control choices__input" id="choices-text-input"
|
||||
data-choices="" data-choices-limit="Required Limit" placeholder="Enter Skills" type="text"
|
||||
value="UI/UX,Figma,HTML,CSS,Javascript,C#,Nodejs" hidden="" tabindex="-1"
|
||||
data-choice="active">
|
||||
<div class="choices__list choices__list--multiple">
|
||||
<div class="choices__item choices__item--selectable" data-item="" data-id="1"
|
||||
data-value="UI/UX" data-custom-properties="[object Object]" aria-selected="true">UI/UX</div>
|
||||
<div class="choices__item choices__item--selectable" data-item="" data-id="2"
|
||||
data-value="Figma" data-custom-properties="[object Object]" aria-selected="true">Figma</div>
|
||||
<div class="choices__item choices__item--selectable" data-item="" data-id="3" data-value="HTML"
|
||||
data-custom-properties="[object Object]" aria-selected="true">HTML</div>
|
||||
<div class="choices__item choices__item--selectable" data-item="" data-id="4" data-value="CSS"
|
||||
data-custom-properties="[object Object]" aria-selected="true">CSS</div>
|
||||
<div class="choices__item choices__item--selectable" data-item="" data-id="5"
|
||||
data-value="Javascript" data-custom-properties="[object Object]" aria-selected="true">Javascript
|
||||
</div>
|
||||
<div class="choices__item choices__item--selectable" data-item="" data-id="6" data-value="C#"
|
||||
data-custom-properties="[object Object]" aria-selected="true">C#</div>
|
||||
<div class="choices__item choices__item--selectable" data-item="" data-id="7"
|
||||
data-value="Nodejs" data-custom-properties="[object Object]" aria-selected="true">Nodejs</div>
|
||||
</div><input type="search" name="search_terms" class="choices__input choices__input--cloned"
|
||||
autocomplete="off" autocapitalize="off" spellcheck="false" role="textbox" aria-autocomplete="list"
|
||||
aria-label="null">
|
||||
</div>
|
||||
<div class="choices__list choices__list--dropdown" aria-expanded="false"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- end card body -->
|
||||
</div>
|
||||
<!-- end card -->
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="card-title mb-0">Members</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="mb-3">
|
||||
<label for="choices-lead-input" class="form-label">Team Lead</label>
|
||||
<div class="choices" data-type="select-one" tabindex="0" role="listbox" aria-haspopup="true"
|
||||
aria-expanded="false">
|
||||
<div class="choices__inner"><select class="form-select choices__input" data-choices=""
|
||||
data-choices-search-false="" id="choices-lead-input" hidden="" tabindex="-1"
|
||||
data-choice="active">
|
||||
<option value="Brent Gonzalez" data-custom-properties="[object Object]">Brent Gonzalez</option>
|
||||
</select>
|
||||
<div class="choices__list choices__list--single">
|
||||
<div class="choices__item choices__item--selectable" data-item="" data-id="1"
|
||||
data-value="Brent Gonzalez" data-custom-properties="[object Object]" aria-selected="true">Brent
|
||||
Gonzalez</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="choices__list choices__list--dropdown" aria-expanded="false">
|
||||
<div class="choices__list" role="listbox">
|
||||
<div id="choices--choices-lead-input-item-choice-1"
|
||||
class="choices__item choices__item--choice is-selected choices__item--selectable is-highlighted"
|
||||
role="option" data-choice="" data-id="1" data-value="Brent Gonzalez"
|
||||
data-select-text="Press to select" data-choice-selectable="" aria-selected="true">Brent Gonzalez
|
||||
</div>
|
||||
<div id="choices--choices-lead-input-item-choice-2"
|
||||
class="choices__item choices__item--choice choices__item--selectable" role="option" data-choice=""
|
||||
data-id="2" data-value="Darline Williams" data-select-text="Press to select"
|
||||
data-choice-selectable="">Darline Williams</div>
|
||||
<div id="choices--choices-lead-input-item-choice-3"
|
||||
class="choices__item choices__item--choice choices__item--selectable" role="option" data-choice=""
|
||||
data-id="3" data-value="Ellen Smith" data-select-text="Press to select"
|
||||
data-choice-selectable="">Ellen Smith</div>
|
||||
<div id="choices--choices-lead-input-item-choice-4"
|
||||
class="choices__item choices__item--choice choices__item--selectable" role="option" data-choice=""
|
||||
data-id="4" data-value="Jeffrey Salazar" data-select-text="Press to select"
|
||||
data-choice-selectable="">Jeffrey Salazar</div>
|
||||
<div id="choices--choices-lead-input-item-choice-5"
|
||||
class="choices__item choices__item--choice choices__item--selectable" role="option" data-choice=""
|
||||
data-id="5" data-value="Mark Williams" data-select-text="Press to select"
|
||||
data-choice-selectable="">Mark Williams</div>
|
||||
<div id="choices--choices-lead-input-item-choice-6"
|
||||
class="choices__item choices__item--choice choices__item--selectable" role="option" data-choice=""
|
||||
data-id="6" data-value="Sylvia Wright" data-select-text="Press to select"
|
||||
data-choice-selectable="">Sylvia Wright</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label class="form-label">Team Members</label>
|
||||
<div class="avatar-group">
|
||||
<a href="javascript: void(0);" class="avatar-group-item material-shadow" data-bs-toggle="tooltip"
|
||||
data-bs-trigger="hover" data-bs-placement="top" aria-label="Brent Gonzalez"
|
||||
data-bs-original-title="Brent Gonzalez">
|
||||
<div class="avatar-xs">
|
||||
<img src="assets/images/users/avatar-3.jpg" alt="" class="rounded-circle img-fluid">
|
||||
</div>
|
||||
</a>
|
||||
<a href="javascript: void(0);" class="avatar-group-item material-shadow" data-bs-toggle="tooltip"
|
||||
data-bs-trigger="hover" data-bs-placement="top" data-bs-original-title="Sylvia Wright">
|
||||
<div class="avatar-xs">
|
||||
<div class="avatar-title rounded-circle bg-secondary">
|
||||
S
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
<a href="javascript: void(0);" class="avatar-group-item material-shadow" data-bs-toggle="tooltip"
|
||||
data-bs-trigger="hover" data-bs-placement="top" aria-label="Ellen Smith"
|
||||
data-bs-original-title="Ellen Smith">
|
||||
<div class="avatar-xs">
|
||||
<img src="assets/images/users/avatar-4.jpg" alt="" class="rounded-circle img-fluid">
|
||||
</div>
|
||||
</a>
|
||||
<a href="javascript: void(0);" class="avatar-group-item material-shadow" data-bs-toggle="tooltip"
|
||||
data-bs-trigger="hover" data-bs-placement="top" data-bs-original-title="Add Members">
|
||||
<div class="avatar-xs" data-bs-toggle="modal" data-bs-target="#inviteMembersModal">
|
||||
<div class="avatar-title fs-16 rounded-circle bg-light text-primary border border-dashed">
|
||||
+
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- end card body -->
|
||||
</div>
|
||||
<!-- end card -->
|
||||
</div>
|
||||
<!-- end col -->
|
||||
</div>
|
||||
|
Loading…
Reference in New Issue
Block a user