employee module

This commit is contained in:
Ranjan 2024-04-07 17:39:18 +05:45
parent 4f34db3381
commit 6b6696ded4
10 changed files with 433 additions and 427 deletions

View File

@ -5,15 +5,24 @@ namespace Modules\Employee\Http\Controllers;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Http\RedirectResponse; use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Modules\Employee\Repositories\EmployeeInterface;
class EmployeeController extends Controller class EmployeeController extends Controller
{ {
private EmployeeInterface $employeeRepository;
public function __construct(EmployeeInterface $employeeRepository)
{
$this->employeeRepository = $employeeRepository;
}
/** /**
* Display a listing of the resource. * Display a listing of the resource.
*/ */
public function index() 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. * 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) public function show($id)
{ {
return view('employee::show'); return view('employee::show');
} }
@ -46,7 +72,9 @@ class EmployeeController extends Controller
*/ */
public function edit($id) 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 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');
} }
/** /**

View 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 = [];
}

View File

@ -4,6 +4,8 @@ namespace Modules\Employee\Providers;
use Illuminate\Support\Facades\Blade; use Illuminate\Support\Facades\Blade;
use Illuminate\Support\ServiceProvider; use Illuminate\Support\ServiceProvider;
use Modules\Employee\Repositories\EmployeeInterface;
use Modules\Employee\Repositories\EmployeeRepository;
class EmployeeServiceProvider extends ServiceProvider class EmployeeServiceProvider extends ServiceProvider
{ {
@ -29,6 +31,7 @@ class EmployeeServiceProvider extends ServiceProvider
*/ */
public function register(): void public function register(): void
{ {
$this->app->bind(EmployeeInterface::class, EmployeeRepository::class);
$this->app->register(RouteServiceProvider::class); $this->app->register(RouteServiceProvider::class);
} }
@ -56,7 +59,7 @@ class EmployeeServiceProvider extends ServiceProvider
*/ */
public function registerTranslations(): void public function registerTranslations(): void
{ {
$langPath = resource_path('lang/modules/'.$this->moduleNameLower); $langPath = resource_path('lang/modules/' . $this->moduleNameLower);
if (is_dir($langPath)) { if (is_dir($langPath)) {
$this->loadTranslationsFrom($langPath, $this->moduleNameLower); $this->loadTranslationsFrom($langPath, $this->moduleNameLower);
@ -72,7 +75,7 @@ class EmployeeServiceProvider extends ServiceProvider
*/ */
protected function registerConfig(): void 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); $this->mergeConfigFrom(module_path($this->moduleName, 'config/config.php'), $this->moduleNameLower);
} }
@ -81,14 +84,14 @@ class EmployeeServiceProvider extends ServiceProvider
*/ */
public function registerViews(): void 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'); $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); $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); Blade::componentNamespace($componentNamespace, $this->moduleNameLower);
} }
@ -104,8 +107,8 @@ class EmployeeServiceProvider extends ServiceProvider
{ {
$paths = []; $paths = [];
foreach (config('view.paths') as $path) { foreach (config('view.paths') as $path) {
if (is_dir($path.'/modules/'.$this->moduleNameLower)) { if (is_dir($path . '/modules/' . $this->moduleNameLower)) {
$paths[] = $path.'/modules/'.$this->moduleNameLower; $paths[] = $path . '/modules/' . $this->moduleNameLower;
} }
} }

View 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);
}

View 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);
// }
// }
}

View File

@ -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');
}
};

View File

@ -7,14 +7,9 @@
@include('layouts.partials.breadcrumb', ['title' => $title]) @include('layouts.partials.breadcrumb', ['title' => $title])
<!-- end page title --> <!-- end page title -->
{{ html()->form('POST')->route('employee.store')->class(['needs-validation'])->attributes(['novalidate', 'enctype' => 'multipart/form-data'])->open() }}
<form action="{{ route('employee.store') }}" class="needs-validation" novalidate method="post"> @include('employee::partials.action')
@csrf {{ html()->form()->close() }}
@include('employee::partials.action')
</form>
<!--end row-->
</div> </div>
<!-- container-fluid --> <!-- container-fluid -->

View 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

View File

@ -39,187 +39,67 @@
<div id="teamlist"> <div id="teamlist">
<div class="team-list row grid-view-filter" id="team-member-list"> <div class="team-list row grid-view-filter" id="team-member-list">
@forelse ($employees as $employee)
<div class="col"> <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 class="team-cover"> <img src="assets/images/small/img-9.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="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=""
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>
</a>
<p class="text-muted member-designation mb-0">Team Leader &amp; HR</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">225</h5>
<p class="text-muted mb-0">Projects</p>
</div>
<div class="col-6">
<h5 class="tasks-num mb-1">197</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 class="card-body p-4">
</div> <div class="ribbon-two ribbon-two-success"><span>Active</span></div>
</div> <div class="row align-items-center team-row">
<div class="col-lg-4 col">
<div class="col"> <div class="team-profile-img">
<div class="card team-box"> <div class="avatar-lg img-thumbnail rounded-circle flex-shrink-0"><img
<div class="team-cover"> <img src="assets/images/small/img-12.jpg" alt="" class="img-fluid"> src="{{ asset('app/public/uploads/' . $employee->profile_picture) }}" alt=""
</div> class="member-img img-fluid d-block rounded-circle"></div>
<div class="card-body p-4"> <div class="team-content"> <a class="member-name"
<div class="row align-items-center team-row"> href="{{ route('employee.show', $employee->id) }}">
<div class="col team-settings"> <h5 class="fs-16 mb-1">{{ $employee->first_name }}</h5>
<div class="row"> </a>
<div class="col"> <p class="text-muted member-designation mb-0">Bibhuti</p>
<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>
</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> </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> {{-- <div class="col-lg-4 col">
<div class="col-lg-4 col"> <div class="row text-muted text-center">
<div class="row text-muted text-center"> <div class="col-6 border-end border-end-dashed">
<div class="col-6 border-end border-end-dashed"> <h5 class="projects-num mb-1">225</h5>
<h5 class="projects-num mb-1">352</h5> <p class="text-muted mb-0">Projects</p>
<p class="text-muted mb-0">Projects</p> </div>
</div> <div class="col-6">
<div class="col-6"> <h5 class="tasks-num mb-1">197</h5>
<h5 class="tasks-num mb-1">376</h5> <p class="text-muted mb-0">Tasks</p>
<p class="text-muted mb-0">Tasks</p> </div>
</div> </div>
</div> --}}
<div class="col-lg-2 col">
<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>
<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> @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> </div>
</div> </div>
@ -228,4 +108,65 @@
<!--end row--> <!--end row-->
</div><!-- container-fluid --> </div><!-- container-fluid -->
</div> </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 @endsection

View File

@ -1,11 +1,11 @@
<div class="row"> <div class="row">
<div class="col-lg-12"> <div class="col-lg-12">
<div class="card"> <div class="card">
<div class="card-header"> <div class="card-header card-primary">
<h4 class="card-title mb-0">Personal Details</h4> <h4 class="card-title mb-0">Personal Details</h4>
</div> </div>
<div class="card-body row"> <div class="card-body row gy-4">
<div class="col-md-4"> <div class="col-md-4">
{{ html()->label('First name')->class('form-label') }} {{ html()->label('First name')->class('form-label') }}
@ -18,18 +18,44 @@
</div> </div>
<div class="col-md-4"> <div class="col-md-4">
<label class="form-label" for="project-title-input">Project Title</label> {{ html()->label('Last name')->class('form-label') }}
<input type="text" class="form-control" id="project-title-input" placeholder="Enter project title"> {{ html()->text('last_name')->class('form-control')->placeholder('Enter Last Name')->required() }}
{{ html()->div('Please enter last name')->class('invalid-feedback') }}
</div> </div>
<div class="col-md-4"> <div class="col-md-4">
<label class="form-label" for="project-thumbnail-img">Thumbnail Image</label> {{ html()->label('Gender')->class('form-label') }}
<input class="form-control" id="project-thumbnail-img" type="file" {{ html()->select('gender', ['male', 'female'])->class('form-select')->placeholder('Select Gender') }}
accept="image/png, image/gif, image/jpeg">
</div> </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> </div>
<!-- end card body --> <!-- end card body -->
@ -37,243 +63,85 @@
<!-- end card --> <!-- end card -->
<div class="card"> <div class="card">
<div class="card-header"> <div class="card-header card-primary">
<h5 class="card-title mb-0">Attached files</h5> <h5 class="card-title mb-0">Address Detail</h5>
</div> </div>
<div class="card-body"> <div class="card-body row gy-2">
<div> {{-- <div class="col-md-4">
<p class="text-muted">Add Attached files here.</p> {{ 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="col-md-4">
{{ html()->label('State')->class('form-label') }}
<div class="dz-message needsclick"> {{ html()->select('state_id', ['Nepal'])->class('form-select')->placeholder('Select State') }}
<div class="mb-3">
<i class="display-4 text-muted ri-upload-cloud-2-fill"></i>
</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> </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>
</div>
</div>
<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>
</div> </div>
<!-- end card --> <!-- end card -->
<div class="mb-4 text-start"> <div class="mb-4 text-end">
<button type="submit" class="btn btn-danger w-sm">Delete</button> <button type="submit" class="btn btn-success w-sm">Save</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>
</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>
</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> </div>