7 Commits

Author SHA1 Message Date
bf44886663 Attendance module 2024-04-16 17:23:35 +05:45
2c2526ef72 first commit 2024-04-16 11:29:08 +05:45
9a50f296fe calendar 2024-04-16 11:27:13 +05:45
d1851922ec complaint calendar transfer warning 2024-04-15 18:01:31 +05:45
e9c62209d4 added company company type into admin module 2024-04-15 13:47:40 +05:45
158765a250 Merge branch 'omis_ranjan' of http://bibgit.com/dharmaraj/New-OMIS into omis_dharma 2024-04-15 10:25:13 +05:45
6ae0143005 taxation 2024-04-15 10:15:16 +05:45
139 changed files with 6232 additions and 135 deletions

View File

@ -0,0 +1,68 @@
<?php
namespace Modules\Admin\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
class CalendarController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
$data['title'] = 'Calendar';
return view('admin::calendars.index', $data);
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
return view('admin::calendars.create');
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request): RedirectResponse
{
//
}
/**
* Show the specified resource.
*/
public function show($id)
{
return view('admin::calendars.show');
}
/**
* Show the form for editing the specified resource.
*/
public function edit($id)
{
return view('admin::calendars.edit');
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, $id): RedirectResponse
{
//
}
/**
* Remove the specified resource from storage.
*/
public function destroy($id)
{
//
}
}

View File

@ -0,0 +1,114 @@
<?php
namespace Modules\Admin\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Modules\Admin\Repositories\CompanyRepository;
use Modules\Admin\Services\AdminService;
class CompanyController extends Controller
{
private $companyRepository;
private $adminService;
public function __construct(CompanyRepository $companyRepository, AdminService $adminService)
{
$this->companyRepository = $companyRepository;
$this->adminService = $adminService;
}
/**
* Display a listing of the resource.
*/
public function index()
{
$data['title'] = 'Company Lists';
$data['companyLists'] = $this->companyRepository->findAll();
return view('admin::companies.index', $data);
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
$data['title'] = 'Create Company';
$data['editable'] = false;
$data['companyTypeLists'] = $this->adminService->pluckCompanyTypes();
return view('admin::companies.create', $data);
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request): RedirectResponse
{
try {
$this->companyRepository->create($request->all());
toastr()->success('Company Created Successfully');
} catch (\Throwable $th) {
toastr()->error($th->getMessage());
}
return redirect()->route('company.index');
}
/**
* Show the specified resource.
*/
public function show($id)
{
return view('admin::companies.show');
}
/**
* Show the form for editing the specified resource.
*/
public function edit($id)
{
try {
$data['title'] = 'Edit Company';
$data['editable'] = true;
$data['companyTypeLists'] = $this->adminService->pluckCompanyTypes();
$data['company'] = $this->companyRepository->getCompanyById($id);
} catch (\Throwable $th) {
toastr()->error($th->getMessage());
}
return view('admin::companies.edit', $data);
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, $id): RedirectResponse
{
try {
$this->companyRepository->update($id, $request->all());
toastr()->success('Company Updated Successfully');
} catch (\Throwable $th) {
toastr()->error($th->getMessage());
}
return redirect()->route('company.index');
}
/**
* Remove the specified resource from storage.
*/
public function destroy($id)
{
try {
$this->companyRepository->delete($id);
toastr()->success('Company Deleted Successfully');
} catch (\Throwable $th) {
toastr()->error($th->getMessage());
}
return redirect()->route('company.index');
}
}

View File

@ -0,0 +1,109 @@
<?php
namespace Modules\Admin\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Modules\Admin\Repositories\CompanyTypeRepository;
class CompanyTypeController extends Controller
{
private $companyTypeRepository;
public function __construct(CompanyTypeRepository $companyTypeRepository)
{
$this->companyTypeRepository = $companyTypeRepository;
}
/**
* Display a listing of the resource.
*/
public function index()
{
$data['title'] = 'Company Type Lists';
$data['companyTypeLists'] = $this->companyTypeRepository->findAll();
return view('admin::companytypes.index', $data);
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
$data['title'] = 'Create Company Type';
$data['editable'] = false;
return view('admin::companytypes.create', $data);
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request): RedirectResponse
{
try {
$this->companyTypeRepository->create($request->all());
toastr()->success('Company Type Created Successfully');
} catch (\Throwable $th) {
toastr()->error($th->getMessage());
}
return redirect()->route('companyType.index');
}
/**
* Show the specified resource.
*/
public function show($id)
{
return view('admin::companytypes.show');
}
/**
* Show the form for editing the specified resource.
*/
public function edit($id)
{
try {
$data['title'] = 'Edit Company Type';
$data['editable'] = true;
$data['companyType'] = $this->companyTypeRepository->getCompanyById($id);
} catch (\Throwable $th) {
toastr()->error($th->getMessage());
}
return view('admin::companytypes.edit', $data);
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, $id): RedirectResponse
{
try {
$this->companyTypeRepository->update($id, $request->all());
toastr()->success('Company Updated Successfully');
} catch (\Throwable $th) {
toastr()->error($th->getMessage());
}
return redirect()->route('company.index');
}
/**
* Remove the specified resource from storage.
*/
public function destroy($id)
{
try {
$this->companyTypeRepository->delete($id);
toastr()->success('Company Type Deleted Successfully');
} catch (\Throwable $th) {
toastr()->error($th->getMessage());
}
return redirect()->route('companyType.index');
}
}

View File

@ -0,0 +1,109 @@
<?php
namespace Modules\Admin\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Modules\Admin\Repositories\ComplaintRepository;
class ComplaintController extends Controller
{
private $complaintRepository;
public function __construct(ComplaintRepository $complaintRepository)
{
$this->complaintRepository = $complaintRepository;
}
/**
* Display a listing of the resource.
*/
public function index()
{
$data['title'] = 'Complaint Lists';
$data['complaintLists'] = $this->complaintRepository->findAll();
return view('admin::complaints.index', $data);
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
$data['title'] = 'Create Complaint';
$data['editable'] = false;
return view('admin::complaints.create', $data);
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request): RedirectResponse
{
try {
$this->complaintRepository->create($request->all());
toastr()->success('Complaint Created Successfully');
} catch (\Throwable $th) {
toastr()->error($th->getMessage());
}
return redirect()->route('complaint.index');
}
/**
* Show the specified resource.
*/
public function show($id)
{
return view('admin::complaints.show');
}
/**
* Show the form for editing the specified resource.
*/
public function edit($id)
{
try {
$data['title'] = 'Edit Complaint';
$data['editable'] = true;
$data['complaint'] = $this->complaintRepository->getComplaintById($id);
} catch (\Throwable $th) {
toastr()->error($th->getMessage());
}
return view('admin::complaints.edit', $data);
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, $id): RedirectResponse
{
try {
$this->complaintRepository->update($id, $request->all());
toastr()->success('Complaint Updated Successfully');
} catch (\Throwable $th) {
toastr()->error($th->getMessage());
}
return redirect()->route('complaint.index');
}
/**
* Remove the specified resource from storage.
*/
public function destroy($id)
{
try {
$this->complaintRepository->delete($id);
toastr()->success('Complaint Deleted Successfully');
} catch (\Throwable $th) {
toastr()->error($th->getMessage());
}
return redirect()->route('complaint.index');
}
}

View File

@ -0,0 +1,109 @@
<?php
namespace Modules\Admin\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Modules\Admin\Repositories\EventRepository;
class EventController extends Controller
{
private $eventRepository;
public function __construct(EventRepository $eventRepository)
{
$this->eventRepository = $eventRepository;
}
/**
* Display a listing of the resource.
*/
public function index()
{
$data['title'] = 'Event Lists';
$data['eventLists'] = $this->eventRepository->findAll();
return view('admin::events.index', $data);
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
$data['title'] = 'Create Event';
$data['editable'] = false;
return view('admin::events.create', $data);
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request): RedirectResponse
{
try {
$this->eventRepository->create($request->all());
toastr()->success('Event Created Successfully');
} catch (\Throwable $th) {
toastr()->error($th->getMessage());
}
return redirect()->route('event.index');
}
/**
* Show the specified resource.
*/
public function show($id)
{
return view('admin::events.show');
}
/**
* Show the form for editing the specified resource.
*/
public function edit($id)
{
try {
$data['title'] = 'Edit Event';
$data['editable'] = true;
$data['event'] = $this->eventRepository->getEventById($id);
} catch (\Throwable $th) {
toastr()->error($th->getMessage());
}
return view('admin::events.edit', $data);
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, $id): RedirectResponse
{
try {
$this->eventRepository->update($id, $request->all());
toastr()->success('Event Updated Successfully');
} catch (\Throwable $th) {
toastr()->error($th->getMessage());
}
return redirect()->route('event.index');
}
/**
* Remove the specified resource from storage.
*/
public function destroy($id)
{
try {
$this->eventRepository->delete($id);
toastr()->success('Event Deleted Successfully');
} catch (\Throwable $th) {
toastr()->error($th->getMessage());
}
return redirect()->route('event.index');
}
}

View File

@ -0,0 +1,109 @@
<?php
namespace Modules\Admin\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Modules\Admin\Repositories\HolidayRepository;
class HolidayController extends Controller
{
private $holidayRepository;
public function __construct(HolidayRepository $holidayRepository)
{
$this->holidayRepository = $holidayRepository;
}
/**
* Display a listing of the resource.
*/
public function index()
{
$data['title'] = 'Holiday Lists';
$data['holidayLists'] = $this->holidayRepository->findAll();
return view('admin::holidays.index', $data);
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
$data['title'] = 'Create Holiday';
$data['editable'] = false;
return view('admin::holidays.create', $data);
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request): RedirectResponse
{
try {
$this->holidayRepository->create($request->all());
toastr()->success('Holiday Created Successfully');
} catch (\Throwable $th) {
toastr()->error($th->getMessage());
}
return redirect()->route('holiday.index');
}
/**
* Show the specified resource.
*/
public function show($id)
{
return view('admin::holidays.show');
}
/**
* Show the form for editing the specified resource.
*/
public function edit($id)
{
try {
$data['title'] = 'Edit Holiday';
$data['editable'] = true;
$data['holiday'] = $this->holidayRepository->getHolidayById($id);
} catch (\Throwable $th) {
toastr()->error($th->getMessage());
}
return view('admin::holidays.edit', $data);
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, $id): RedirectResponse
{
try {
$this->holidayRepository->update($id, $request->all());
toastr()->success('Holiday Updated Successfully');
} catch (\Throwable $th) {
toastr()->error($th->getMessage());
}
return redirect()->route('holiday.index');
}
/**
* Remove the specified resource from storage.
*/
public function destroy($id)
{
try {
$this->holidayRepository->delete($id);
toastr()->success('Holiday Deleted Successfully');
} catch (\Throwable $th) {
toastr()->error($th->getMessage());
}
return redirect()->route('holiday.index');
}
}

View File

@ -0,0 +1,109 @@
<?php
namespace Modules\Admin\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Modules\Admin\Repositories\TransferRepository;
class TransferController extends Controller
{
private $transferRepository;
public function __construct(TransferRepository $transferRepository)
{
$this->transferRepository = $transferRepository;
}
/**
* Display a listing of the resource.
*/
public function index()
{
$data['title'] = 'Transfer Lists';
$data['transferLists'] = $this->transferRepository->findAll();
return view('admin::transfers.index', $data);
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
$data['title'] = 'Create Transfer';
$data['editable'] = false;
return view('admin::transfers.create', $data);
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request): RedirectResponse
{
try {
$this->transferRepository->create($request->all());
toastr()->success('Transfer Created Successfully');
} catch (\Throwable $th) {
toastr()->error($th->getMessage());
}
return redirect()->route('transfer.index');
}
/**
* Show the specified resource.
*/
public function show($id)
{
return view('admin::transfers.show');
}
/**
* Show the form for editing the specified resource.
*/
public function edit($id)
{
try {
$data['title'] = 'Edit Transfer';
$data['editable'] = true;
$data['transfer'] = $this->transferRepository->getTransferById($id);
} catch (\Throwable $th) {
toastr()->error($th->getMessage());
}
return view('admin::transfers.edit', $data);
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, $id): RedirectResponse
{
try {
$this->transferRepository->update($id, $request->all());
toastr()->success('Transfer Updated Successfully');
} catch (\Throwable $th) {
toastr()->error($th->getMessage());
}
return redirect()->route('transfer.index');
}
/**
* Remove the specified resource from storage.
*/
public function destroy($id)
{
try {
$this->transferRepository->delete($id);
toastr()->success('Transfer Deleted Successfully');
} catch (\Throwable $th) {
toastr()->error($th->getMessage());
}
return redirect()->route('transfer.index');
}
}

View File

@ -0,0 +1,109 @@
<?php
namespace Modules\Admin\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Modules\Admin\Repositories\WarningRepository;
class WarningController extends Controller
{
private $warningRepository;
public function __construct(WarningRepository $warningRepository)
{
$this->warningRepository = $warningRepository;
}
/**
* Display a listing of the resource.
*/
public function index()
{
$data['title'] = 'Warning Lists';
$data['warningLists'] = $this->warningRepository->findAll();
return view('admin::warnings.index', $data);
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
$data['title'] = 'Create Warning';
$data['editable'] = false;
return view('admin::warnings.create', $data);
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request): RedirectResponse
{
try {
$this->warningRepository->create($request->all());
toastr()->success('Warning Created Successfully');
} catch (\Throwable $th) {
toastr()->error($th->getMessage());
}
return redirect()->route('warning.index');
}
/**
* Show the specified resource.
*/
public function show($id)
{
return view('admin::warnings.show');
}
/**
* Show the form for editing the specified resource.
*/
public function edit($id)
{
try {
$data['title'] = 'Edit Warning';
$data['editable'] = true;
$data['warning'] = $this->warningRepository->getWarningById($id);
} catch (\Throwable $th) {
toastr()->error($th->getMessage());
}
return view('admin::warnings.edit', $data);
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, $id): RedirectResponse
{
try {
$this->warningRepository->update($id, $request->all());
toastr()->success('Warning Updated Successfully');
} catch (\Throwable $th) {
toastr()->error($th->getMessage());
}
return redirect()->route('warning.index');
}
/**
* Remove the specified resource from storage.
*/
public function destroy($id)
{
try {
$this->warningRepository->delete($id);
toastr()->success('Warning Deleted Successfully');
} catch (\Throwable $th) {
toastr()->error($th->getMessage());
}
return redirect()->route('warning.index');
}
}

View File

@ -0,0 +1,32 @@
<?php
namespace Modules\Admin\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Modules\Admin\Database\factories\CompanyFactory;
class Company extends Model
{
use HasFactory;
protected $table = 'tbl_companies';
protected $primaryKey = 'company_id';
/**
* The attributes that are mass assignable.
*/
protected $fillable = [
'title',
'alias',
'company_type_id',
'address',
'bank_name',
'bank_acc_no',
'bank_acc_branch',
'status',
'description',
'remarks',
'createdBy',
'updatedBy',
];
}

View File

@ -0,0 +1,28 @@
<?php
namespace Modules\Admin\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Modules\Admin\Database\factories\CompanyTypeFactory;
class CompanyType extends Model
{
use HasFactory;
protected $table = 'tbl_company_types';
protected $primaryKey = 'company_type_id';
/**
* The attributes that are mass assignable.
*/
protected $fillable = [
'title',
'alias',
'status',
'description',
'remarks',
'createdBy',
'updatedBy',
];
}

View File

@ -0,0 +1,31 @@
<?php
namespace Modules\Admin\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Modules\Admin\Database\factories\ComplaintFactory;
class Complaint extends Model
{
use HasFactory;
protected $table = 'tbl_complaints';
protected $primaryKey = 'complaint_id';
/**
* The attributes that are mass assignable.
*/
protected $fillable = [
'complaint_id',
'employee_id',
'complaint_date',
'complaint_by',
'description',
'remarks',
'status',
'createdBy',
'updatedBy',
];
}

View File

@ -0,0 +1,33 @@
<?php
namespace Modules\Admin\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Modules\Admin\Database\factories\EventFactory;
class Event extends Model
{
use HasFactory;
protected $table = 'tbl_events';
protected $primaryKey = "event_id";
/**
* The attributes that are mass assignable.
*/
protected $fillable = [
'title',
'alias',
'type',
'date',
'start_time',
'end_time',
'location',
'status',
'description',
'remarks',
'createdBy',
'updatedBy',
];
}

View File

@ -0,0 +1,30 @@
<?php
namespace Modules\Admin\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Modules\Admin\Database\factories\HolidayFactory;
class Holiday extends Model
{
use HasFactory;
protected $table = 'tbl_holidays';
protected $primaryKey = "holiday_id";
/**
* The attributes that are mass assignable.
*/
protected $fillable = [
'title',
'alias',
'date',
'status',
'description',
'remarks',
'createdBy',
'updatedBy'
];
}

View File

@ -0,0 +1,29 @@
<?php
namespace Modules\Admin\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Modules\Admin\Database\factories\TransferFactory;
class Transfer extends Model
{
use HasFactory;
protected $table = 'tbl_transfers';
protected $primaryKey = 'transfer_id';
/**
* The attributes that are mass assignable.
*/
protected $fillable = [
'employee_id',
'old_department_id',
'new_department_id',
'status',
'transfer_date',
'description',
'remarks',
'createdBy',
'updatedBy',
];
}

View File

@ -0,0 +1,28 @@
<?php
namespace Modules\Admin\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Modules\Admin\Database\factories\WarningFactory;
class Warning extends Model
{
use HasFactory;
protected $table = 'tbl_warnings';
protected $primaryKey = 'warning_id';
/**
* The attributes that are mass assignable.
*/
protected $fillable = [
'employee_id',
'subject',
'warning_date',
'description',
'remarks',
'status',
'createdBy',
'updatedBy',
];
}

View File

@ -7,6 +7,6 @@ interface AppreciationInterface
public function findAll();
public function getAppreciationById($appreciationId);
public function delete($appreciationId);
public function create(array $AppreciationDetails);
public function create(array $appreciationDetails);
public function update($appreciationId, array $newDetails);
}

View File

@ -0,0 +1,12 @@
<?php
namespace Modules\Admin\Repositories;
interface CompanyInterface
{
public function findAll();
public function getCompanyById($companyId);
public function delete($companyId);
public function create(array $companyDetails);
public function update($companyId, array $newDetails);
}

View File

@ -0,0 +1,35 @@
<?php
namespace Modules\Admin\Repositories;
use Modules\Admin\Models\Company;
class CompanyRepository implements CompanyInterface
{
public function findAll()
{
return Company::get();
}
public function getCompanyById($companyId)
{
return Company::findOrFail($companyId);
}
public function delete($companyId)
{
Company::destroy($companyId);
}
public function create(array $companyDetails)
{
return Company::create($companyDetails);
}
public function update($companyId, array $newDetails)
{
return Company::where('company_id', $companyId)->update($newDetails);
}
}

View File

@ -0,0 +1,12 @@
<?php
namespace Modules\Admin\Repositories;
interface CompanyTypeInterface
{
public function findAll();
public function getCompanyTypeById($companyTypeId);
public function delete($companyTypeId);
public function create(array $companyTypeDetails);
public function update($companyTypeId, array $newDetails);
}

View File

@ -0,0 +1,35 @@
<?php
namespace Modules\Admin\Repositories;
use Modules\Admin\Models\CompanyType;
class CompanyTypeRepository implements CompanyTypeInterface
{
public function findAll()
{
return CompanyType::get();
}
public function getCompanyTypeById($companyTypeId)
{
return CompanyType::findOrFail($companyTypeId);
}
public function delete($companyTypeId)
{
CompanyType::destroy($companyTypeId);
}
public function create(array $companyTypeDetails)
{
return CompanyType::create($companyTypeDetails);
}
public function update($companyTypeId, array $newDetails)
{
return CompanyType::where('companyType_id', $companyTypeId)->update($newDetails);
}
}

View File

@ -0,0 +1,12 @@
<?php
namespace Modules\Admin\Repositories;
interface ComplaintInterface
{
public function findAll();
public function getComplaintById($complaintId);
public function delete($complaintId);
public function create(array $complaintDetails);
public function update($complaintId, array $newDetails);
}

View File

@ -0,0 +1,35 @@
<?php
namespace Modules\Admin\Repositories;
use Modules\Admin\Models\Complaint;
class ComplaintRepository implements ComplaintInterface
{
public function findAll()
{
return Complaint::get();
}
public function getComplaintById($complaintId)
{
return Complaint::findOrFail($complaintId);
}
public function delete($complaintId)
{
Complaint::destroy($complaintId);
}
public function create(array $complaintDetails)
{
return Complaint::create($complaintDetails);
}
public function update($complaintId, array $newDetails)
{
return Complaint::where('complaint_id', $complaintId)->update($newDetails);
}
}

View File

@ -0,0 +1,12 @@
<?php
namespace Modules\Admin\Repositories;
interface EventInterface
{
public function findAll();
public function getEventById($eventId);
public function delete($eventId);
public function create(array $eventDetails);
public function update($eventId, array $newDetails);
}

View File

@ -0,0 +1,35 @@
<?php
namespace Modules\Admin\Repositories;
use Modules\Admin\Models\Event;
class EventRepository implements EventInterface
{
public function findAll()
{
return Event::get();
}
public function getEventById($eventId)
{
return Event::findOrFail($eventId);
}
public function delete($eventId)
{
Event::destroy($eventId);
}
public function create(array $eventDetails)
{
return Event::create($eventDetails);
}
public function update($eventId, array $newDetails)
{
return Event::where('event_id', $eventId)->update($newDetails);
}
}

View File

@ -0,0 +1,12 @@
<?php
namespace Modules\Admin\Repositories;
interface HolidayInterface
{
public function findAll();
public function getHolidayById($holidayId);
public function delete($holidayId);
public function create(array $holidayDetails);
public function update($holidayId, array $newDetails);
}

View File

@ -0,0 +1,35 @@
<?php
namespace Modules\Admin\Repositories;
use Modules\Admin\Models\Holiday;
class HolidayRepository implements HolidayInterface
{
public function findAll()
{
return Holiday::get();
}
public function getHolidayById($holidayId)
{
return Holiday::findOrFail($holidayId);
}
public function delete($holidayId)
{
Holiday::destroy($holidayId);
}
public function create(array $holidayDetails)
{
return Holiday::create($holidayDetails);
}
public function update($holidayId, array $newDetails)
{
return Holiday::where('holiday_id', $holidayId)->update($newDetails);
}
}

View File

@ -7,6 +7,6 @@ interface PromotionDemotionInterface
public function findAll();
public function getPromotionDemotionById($promotionDemotionId);
public function delete($promotionDemotionId);
public function create(array $PromotionDemotionDetails);
public function create(array $promotionDemotionDetails);
public function update($promotionDemotionId, array $newDetails);
}

View File

@ -7,6 +7,6 @@ interface ResignationInterface
public function findAll();
public function getResignationById($resignationId);
public function delete($resignationId);
public function create(array $ResignationDetails);
public function create(array $resignationDetails);
public function update($resignationId, array $newDetails);
}

View File

@ -0,0 +1,12 @@
<?php
namespace Modules\Admin\Repositories;
interface TransferInterface
{
public function findAll();
public function getTransferById($transferId);
public function delete($transferId);
public function create(array $transferDetails);
public function update($transferId, array $newDetails);
}

View File

@ -0,0 +1,35 @@
<?php
namespace Modules\Admin\Repositories;
use Modules\Admin\Models\Transfer;
class TransferRepository implements TransferInterface
{
public function findAll()
{
return Transfer::get();
}
public function getTransferById($transferId)
{
return Transfer::findOrFail($transferId);
}
public function delete($transferId)
{
Transfer::destroy($transferId);
}
public function create(array $transferDetails)
{
return Transfer::create($transferDetails);
}
public function update($transferId, array $newDetails)
{
return Transfer::where('transfer_id', $transferId)->update($newDetails);
}
}

View File

@ -0,0 +1,12 @@
<?php
namespace Modules\Admin\Repositories;
interface WarningInterface
{
public function findAll();
public function getWarningById($warningId);
public function delete($warningId);
public function create(array $warningDetails);
public function update($warningId, array $newDetails);
}

View File

@ -0,0 +1,35 @@
<?php
namespace Modules\Admin\Repositories;
use Modules\Admin\Models\Warning;
class WarningRepository implements WarningInterface
{
public function findAll()
{
return Warning::get();
}
public function getWarningById($warningId)
{
return Warning::findOrFail($warningId);
}
public function delete($warningId)
{
Warning::destroy($warningId);
}
public function create(array $warningDetails)
{
return Warning::create($warningDetails);
}
public function update($warningId, array $newDetails)
{
return Warning::where('warning_id', $warningId)->update($newDetails);
}
}

View File

@ -3,6 +3,7 @@ namespace Modules\Admin\Services;
use Modules\Admin\Models\Castes;
use Modules\Admin\Models\Cities;
use Modules\Admin\Models\CompanyType;
use Modules\Admin\Models\Country;
use Modules\Admin\Models\Departments;
use Modules\Admin\Models\Designations;
@ -18,6 +19,11 @@ final class AdminService
return Country::pluck('title', 'country_id');
}
function pluckCompanyTypes()
{
return CompanyType::pluck('title', 'company_type_id');
}
function pluckProvinces()
{
return Province::pluck('title', 'province_id');

View File

@ -18,8 +18,8 @@ return new class extends Migration {
$table->unsignedBigInteger('old_designation_id')->nullable();
$table->unsignedBigInteger('new_designation_id')->nullable();
$table->unsignedBigInteger('type')->nullable();
$table->unsignedBigInteger('status')->nullable();
$table->date('date')->nullable();
$table->integer('status')->nullable();
$table->mediumText('description')->nullable();
$table->mediumText('remarks')->nullable();
$table->unsignedBigInteger('createdBy')->nullable();

View File

@ -18,7 +18,7 @@ return new class extends Migration {
$table->unsignedBigInteger('employee_id')->nullable();
$table->unsignedBigInteger('appreciated_by')->nullable();
$table->date('appreciated_date')->nullable();
$table->unsignedBigInteger('status')->nullable();
$table->integer('status')->nullable();
$table->mediumText('description')->nullable();
$table->mediumText('remarks')->nullable();
$table->unsignedBigInteger('createdBy')->nullable();

View File

@ -18,7 +18,7 @@ return new class extends Migration {
$table->unsignedBigInteger('approved_by')->nullable();
$table->mediumText('description')->nullable();
$table->mediumText('remarks')->nullable();
$table->unsignedBigInteger('status')->nullable();
$table->integer('status')->nullable();
$table->unsignedBigInteger('createdBy')->nullable();
$table->unsignedBigInteger('updatedBy')->nullable();
$table->timestamps();

View File

@ -0,0 +1,34 @@
<?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_complaints', function (Blueprint $table) {
$table->tinyInteger('complaint_id')->unsigned()->autoIncrement();
$table->unsignedBigInteger('employee_id')->nullable();
$table->date('complaint_date')->nullable();
$table->unsignedBigInteger('complaint_by')->nullable();
$table->mediumText('description')->nullable();
$table->mediumText('remarks')->nullable();
$table->integer('status')->nullable();
$table->unsignedBigInteger('createdBy')->nullable();
$table->unsignedBigInteger('updatedBy')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('tbl_complaints');
}
};

View File

@ -0,0 +1,35 @@
<?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_transfers', function (Blueprint $table) {
$table->tinyInteger('transfer_id')->unsigned()->autoIncrement();
$table->unsignedBigInteger('employee_id')->nullable();
$table->unsignedBigInteger('old_department_id')->nullable();
$table->unsignedBigInteger('new_department_id')->nullable();
$table->integer('status')->nullable();
$table->date('transfer_date')->nullable();
$table->mediumText('description')->nullable();
$table->mediumText('remarks')->nullable();
$table->unsignedBigInteger('createdBy')->nullable();
$table->unsignedBigInteger('updatedBy')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('tbl_transfers');
}
};

View File

@ -0,0 +1,35 @@
<?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_warnings', function (Blueprint $table) {
$table->tinyInteger('warning_id')->unsigned()->autoIncrement();
$table->unsignedBigInteger('employee_id')->nullable();
$table->mediumText('subject')->nullable();
$table->string('type')->nullable();
$table->date('warning_date')->nullable();
$table->mediumText('description')->nullable();
$table->mediumText('remarks')->nullable();
$table->integer('status')->nullable();
$table->unsignedBigInteger('createdBy')->nullable();
$table->unsignedBigInteger('updatedBy')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('tbl_warnings');
}
};

View File

@ -0,0 +1,37 @@
<?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_companies', function (Blueprint $table) {
$table->tinyInteger('company_id')->unsigned()->autoIncrement();
$table->string('title')->nullable();
$table->string('alias')->nullable();
$table->unsignedBigInteger('company_type_id')->nullable();
$table->integer('status')->nullable();
$table->mediumText('description')->nullable();
$table->mediumText('remarks')->nullable();
$table->string('bank_name')->nullable();
$table->string('bank_acc_no')->nullable();
$table->string('bank_acc_branch')->nullable();
$table->unsignedBigInteger('createdBy')->nullable();
$table->unsignedBigInteger('updatedBy')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('tbl_companies');
}
};

View File

@ -0,0 +1,34 @@
<?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_company_types', function (Blueprint $table) {
$table->tinyInteger('company_type_id')->unsigned()->autoIncrement();
$table->string('title')->nullable();
$table->string('alias')->nullable();
$table->integer('status')->nullable();
$table->mediumText('description')->nullable();
$table->mediumText('remarks')->nullable();
$table->unsignedBigInteger('createdBy')->nullable();
$table->unsignedBigInteger('updatedBy')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('tbl_company_types');
}
};

View File

@ -0,0 +1,38 @@
<?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_events', function (Blueprint $table) {
$table->unsignedTinyInteger('event_id')->autoIncrement();
$table->string('title')->nullable();
$table->string('alias')->nullable();
$table->string('type')->nullable();
$table->string('date')->nullable();
$table->time('start_time')->nullable();
$table->time('end_time')->nullable();
$table->integer('status')->nullable();
$table->mediumText('description')->nullable();
$table->string('location')->nullable();
$table->mediumText('remarks')->nullable();
$table->unsignedBigInteger('createdBy')->nullable();
$table->unsignedBigInteger('updatedBy')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('tbl_events');
}
};

View File

@ -0,0 +1,34 @@
<?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_holidays', function (Blueprint $table) {
$table->unsignedTinyInteger('holiday_id')->autoIncrement();
$table->string('title')->nullable();
$table->string('alias')->nullable();
$table->string('date')->nullable();
$table->integer('status')->nullable();
$table->mediumText('description')->nullable();
$table->mediumText('remarks')->nullable();
$table->unsignedBigInteger('createdBy')->nullable();
$table->unsignedBigInteger('updatedBy')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('tbl_holidays');
}
};

View File

@ -0,0 +1,224 @@
@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 -->
<div class="row">
<div class="col-12">
<div class="row">
<div class="col-xl-3">
<div class="card card-h-100">
<div class="card-body">
<button class="btn btn-primary w-100" id="btn-new-event"><i class="mdi mdi-plus"></i> Create New
Event</button>
<div id="external-events">
<br>
<p class="text-muted">Drag and drop your event or click in the calendar</p>
<div class="external-event fc-event bg-success-subtle text-success" data-class="bg-success-subtle">
<i class="mdi mdi-checkbox-blank-circle me-2"></i>New Event Planning
</div>
<div class="external-event fc-event bg-info-subtle text-info" data-class="bg-info-subtle">
<i class="mdi mdi-checkbox-blank-circle me-2"></i>Meeting
</div>
<div class="external-event fc-event bg-warning-subtle text-warning" data-class="bg-warning-subtle">
<i class="mdi mdi-checkbox-blank-circle me-2"></i>Generating Reports
</div>
<div class="external-event fc-event bg-danger-subtle text-danger" data-class="bg-danger-subtle">
<i class="mdi mdi-checkbox-blank-circle me-2"></i>Create New theme
</div>
</div>
</div>
</div>
<div>
<h5 class="mb-1">Upcoming Events</h5>
<p class="text-muted">Don't miss scheduled events</p>
<div class="me-n1 mb-3 pe-2" data-simplebar style="height: 400px">
<div id="upcoming-event-list"></div>
</div>
</div>
<div class="card">
<div class="card-body bg-info-subtle">
<div class="d-flex">
<div class="flex-shrink-0">
<i data-feather="calendar" class="text-info icon-dual-info"></i>
</div>
<div class="flex-grow-1 ms-3">
<h6 class="fs-15">Welcome to your Calendar!</h6>
<p class="text-muted mb-0">Event that applications book will appear here. Click on an event to see
the details and manage applicants event.</p>
</div>
</div>
</div>
</div>
<!--end card-->
</div> <!-- end col-->
<div class="col-xl-9">
<div class="card card-h-100">
<div class="card-body">
<div id="calendar"></div>
</div>
</div>
</div><!-- end col -->
</div>
<!--end row-->
<div style='clear:both'></div>
<!-- Add New Event MODAL -->
<div class="modal fade" id="event-modal" tabindex="-1">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content border-0">
<div class="modal-header bg-info-subtle p-3">
<h5 class="modal-title" id="modal-title">Event</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-hidden="true"></button>
</div>
<div class="modal-body p-4">
<form class="needs-validation" name="event-form" id="form-event" novalidate>
<div class="text-end">
<a href="#" class="btn btn-sm btn-soft-primary" id="edit-event-btn" data-id="edit-event"
onclick="editEvent(this)" role="button">Edit</a>
</div>
<div class="event-details">
<div class="d-flex mb-2">
<div class="flex-grow-1 d-flex align-items-center">
<div class="me-3 flex-shrink-0">
<i class="ri-calendar-event-line text-muted fs-16"></i>
</div>
<div class="flex-grow-1">
<h6 class="d-block fw-semibold mb-0" id="event-start-date-tag"></h6>
</div>
</div>
</div>
<div class="d-flex align-items-center mb-2">
<div class="me-3 flex-shrink-0">
<i class="ri-time-line text-muted fs-16"></i>
</div>
<div class="flex-grow-1">
<h6 class="d-block fw-semibold mb-0"><span id="event-timepicker1-tag"></span> - <span
id="event-timepicker2-tag"></span></h6>
</div>
</div>
<div class="d-flex align-items-center mb-2">
<div class="me-3 flex-shrink-0">
<i class="ri-map-pin-line text-muted fs-16"></i>
</div>
<div class="flex-grow-1">
<h6 class="d-block fw-semibold mb-0"> <span id="event-location-tag"></span></h6>
</div>
</div>
<div class="d-flex mb-3">
<div class="me-3 flex-shrink-0">
<i class="ri-discuss-line text-muted fs-16"></i>
</div>
<div class="flex-grow-1">
<p class="d-block text-muted mb-0" id="event-description-tag"></p>
</div>
</div>
</div>
<div class="row event-form">
<div class="col-12">
<div class="mb-3">
<label class="form-label">Type</label>
<select class="form-select d-none" name="category" id="event-category" required>
<option value="bg-danger-subtle">Danger</option>
<option value="bg-success-subtle">Success</option>
<option value="bg-primary-subtle">Primary</option>
<option value="bg-info-subtle">Info</option>
<option value="bg-dark-subtle">Dark</option>
<option value="bg-warning-subtle">Warning</option>
</select>
<div class="invalid-feedback">Please select a valid event category</div>
</div>
</div>
<!--end col-->
<div class="col-12">
<div class="mb-3">
<label class="form-label">Event Name</label>
<input class="form-control d-none" placeholder="Enter event name" type="text"
name="title" id="event-title" required value="" />
<div class="invalid-feedback">Please provide a valid event name</div>
</div>
</div>
<!--end col-->
<div class="col-12">
<div class="mb-3">
<label>Event Date</label>
<div class="input-group d-none">
<input type="text" id="event-start-date" class="form-control flatpickr flatpickr-input"
placeholder="Select date" readonly required>
<span class="input-group-text"><i class="ri-calendar-event-line"></i></span>
</div>
</div>
</div>
<!--end col-->
<div class="col-12" id="event-time">
<div class="row">
<div class="col-6">
<div class="mb-3">
<label class="form-label">Start Time</label>
<div class="input-group d-none">
<input id="timepicker1" type="text" class="form-control flatpickr flatpickr-input"
placeholder="Select start time" readonly>
<span class="input-group-text"><i class="ri-time-line"></i></span>
</div>
</div>
</div>
<div class="col-6">
<div class="mb-3">
<label class="form-label">End Time</label>
<div class="input-group d-none">
<input id="timepicker2" type="text" class="form-control flatpickr flatpickr-input"
placeholder="Select end time" readonly>
<span class="input-group-text"><i class="ri-time-line"></i></span>
</div>
</div>
</div>
</div>
</div>
<!--end col-->
<div class="col-12">
<div class="mb-3">
<label for="event-location">Location</label>
<div>
<input type="text" class="form-control d-none" name="event-location"
id="event-location" placeholder="Event location">
</div>
</div>
</div>
<!--end col-->
<input type="hidden" id="eventid" name="eventid" value="" />
<div class="col-12">
<div class="mb-3">
<label class="form-label">Description</label>
<textarea class="form-control d-none" id="event-description" placeholder="Enter a description" rows="3"
spellcheck="false"></textarea>
</div>
</div>
<!--end col-->
</div>
<!--end row-->
<div class="hstack justify-content-end gap-2">
<button type="button" class="btn btn-soft-danger" id="btn-delete-event"><i
class="ri-close-line align-bottom"></i> Delete</button>
<button type="submit" class="btn btn-success" id="btn-save-event">Add Event</button>
</div>
</form>
</div>
</div> <!-- end modal-content-->
</div> <!-- end modal dialog-->
</div> <!-- end modal-->
<!-- end modal-->
</div>
</div> <!-- end row-->
</div>
</div>
@endsection

View File

@ -0,0 +1,23 @@
@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 -->
<div class='card'>
<div class='card-body'>
{{ html()->form('POST')->route('company.store')->class(['needs-validation'])->attributes(['novalidate'])->open() }}
@include('admin::partials.companies.action')
{{ html()->form()->close() }}
</div>
</div>
</div>
@endsection

View File

@ -0,0 +1,23 @@
@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 -->
<div class='card'>
<div class='card-body'>
{{ html()->modelForm($company, 'PUT')->route('company.update', $company->company_id)->class(['needs-validation'])->attributes(['novalidate'])->open() }}
@include('admin::partials.companies.action')
{{ html()->form()->close() }}
</div>
</div>
</div>
@endsection

View File

@ -0,0 +1,69 @@
@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 -->
<div class="card">
<div class="card-header align-items-center d-flex">
<h5 class="card-title flex-grow-1 mb-0">{{ $title }}</h5>
<div class="flex-shrink-0">
<a href="{{ route('company.create') }}" class="btn btn-success waves-effect waves-light"><i
class="ri-add-fill me-1 align-bottom"></i> Create Company</a>
</div>
</div>
<div class="card-body">
<table id="buttons-datatables" class="display table-sm table-bordered table">
<thead class="table-light">
<tr>
<th class="tb-col"><span class="overline-title">S.N</span></th>
<th class="tb-col"><span class="overline-title">Name</span></th>
<th class="tb-col" data-sortable="false"><span class="overline-title">Action</span>
</th>
</tr>
</thead>
<tbody>
@foreach ($companyLists as $index => $item)
<tr>
<td class="tb-col">{{ $index + 1 }}</td>
<td class="tb-col">{{ $item->title }}</td>
<td class="tb-col">
<div class="dropdown d-inline-block">
<button class="btn btn-soft-secondary btn-sm dropdown" type="button" data-bs-toggle="dropdown"
aria-expanded="false">
<i class="ri-more-fill align-middle"></i>
</button>
<ul class="dropdown-menu dropdown-menu-end">
<li><a href="{{ route('company.show', [$item->company_id]) }}" class="dropdown-item"><i
class="ri-eye-fill text-muted me-2 align-bottom"></i> View</a>
</li>
<li><a href="{{ route('company.edit', [$item->company_id]) }}"
class="dropdown-item edit-item-btn"><i
class="ri-pencil-fill text-muted me-2 align-bottom"></i>
Edit</a>
</li>
<li>
<a href="{{ route('company.destroy', [$item->company_id]) }}"
class="dropdown-item remove-item-btn" onclick="confirmDelete(this.href)">
<i class="ri-delete-bin-fill text-muted me-2 align-bottom"></i> Delete
</a>
</li>
</ul>
</div>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
</div>
@endsection

View File

@ -0,0 +1,48 @@
@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 -->
<div class='card'>
<div class="card-header align-items-center d-flex">
<h5 class="card-title flex-grow-1 mb-0">View Detail</h5>
<div class="flex-shrink-0">
<a href="{{ route('designations.index') }}" class="btn btn-success waves-effect waves-light"><i
class="ri-add-fill me-1 align-bottom"></i> Back to List</a>
</div>
</div>
<div class='card-body'>
<p><b>Title :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->title }}</span></p>
<p><b>Alias :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->alias }}</span></p>
<p><b>Status :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span
class="{{ $data->status == 1 ? 'text-success' : 'text-danger' }}">{{ $data->status == 1 ? 'Active' : 'Inactive' }}</span>
</p>
<p><b>Remarks :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->remarks }}</span></p>
<p><b>Display Order :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->display_order }}</span></p>
<p><b>Createdby :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->createdby }}</span></p>
<p><b>Updatedby :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->updatedby }}</span></p>
<p><b>Job Description :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->job_description }}</span></p>
<p><b>Departments Id :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->departments_id }}</span></p>
<div class="d-flex justify-content-between">
<div>
<p><b>Created On :</b>&nbsp;&nbsp;&nbsp;<span>{{ $data->created_at }}</span></p>
<p><b>Created By :</b>&nbsp;&nbsp;&nbsp;<span>{{ $data->createdBy }}</span></p>
</div>
<div>
<p><b>Updated On :</b>&nbsp;&nbsp;&nbsp;<span>{{ $data->updated_at }}</span></p>
<p><b>Updated By :</b>&nbsp;&nbsp;&nbsp;<span>{{ $data->updatedBy }}</span></p>
</div>
</div>
</div>
</div>
</div>
</div>
@endSection

View File

@ -0,0 +1,23 @@
@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 -->
<div class='card'>
<div class='card-body'>
{{ html()->form('POST')->route('companyType.store')->class(['needs-validation'])->attributes(['novalidate'])->open() }}
@include('admin::partials.companytypes.action')
{{ html()->form()->close() }}
</div>
</div>
</div>
@endsection

View File

@ -0,0 +1,23 @@
@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 -->
<div class='card'>
<div class='card-body'>
{{ html()->modelForm($companyType, 'PUT')->route('companyType.update', $companytype->company_type_id)->class(['needs-validation'])->attributes(['novalidate'])->open() }}
@include('admin::partials.companytypes.action')
{{ html()->form()->close() }}
</div>
</div>
</div>
@endsection

View File

@ -0,0 +1,69 @@
@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 -->
<div class="card">
<div class="card-header align-items-center d-flex">
<h5 class="card-title flex-grow-1 mb-0">{{ $title }}</h5>
<div class="flex-shrink-0">
<a href="{{ route('companyType.create') }}" class="btn btn-success waves-effect waves-light"><i
class="ri-add-fill me-1 align-bottom"></i> Create Company Type</a>
</div>
</div>
<div class="card-body">
<table id="buttons-datatables" class="display table-sm table-bordered table">
<thead class="table-light">
<tr>
<th class="tb-col"><span class="overline-title">S.N</span></th>
<th class="tb-col"><span class="overline-title">Name</span></th>
<th class="tb-col" data-sortable="false"><span class="overline-title">Action</span>
</th>
</tr>
</thead>
<tbody>
@foreach ($companyTypeLists as $index => $item)
<tr>
<td class="tb-col">{{ $index + 1 }}</td>
<td class="tb-col">{{ $item->title }}</td>
<td class="tb-col">
<div class="dropdown d-inline-block">
<button class="btn btn-soft-secondary btn-sm dropdown" type="button" data-bs-toggle="dropdown"
aria-expanded="false">
<i class="ri-more-fill align-middle"></i>
</button>
<ul class="dropdown-menu dropdown-menu-end">
<li><a href="{{ route('companyType.show', [$item->company_type_id]) }}" class="dropdown-item"><i
class="ri-eye-fill text-muted me-2 align-bottom"></i> View</a>
</li>
<li><a href="{{ route('companyType.edit', [$item->company_type_id]) }}"
class="dropdown-item edit-item-btn"><i
class="ri-pencil-fill text-muted me-2 align-bottom"></i>
Edit</a>
</li>
<li>
<a href="{{ route('companyType.destroy', [$item->company_type_id]) }}"
class="dropdown-item remove-item-btn" onclick="confirmDelete(this.href)">
<i class="ri-delete-bin-fill text-muted me-2 align-bottom"></i> Delete
</a>
</li>
</ul>
</div>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
</div>
@endsection

View File

@ -0,0 +1,48 @@
@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 -->
<div class='card'>
<div class="card-header align-items-center d-flex">
<h5 class="card-title flex-grow-1 mb-0">View Detail</h5>
<div class="flex-shrink-0">
<a href="{{ route('designations.index') }}" class="btn btn-success waves-effect waves-light"><i
class="ri-add-fill me-1 align-bottom"></i> Back to List</a>
</div>
</div>
<div class='card-body'>
<p><b>Title :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->title }}</span></p>
<p><b>Alias :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->alias }}</span></p>
<p><b>Status :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span
class="{{ $data->status == 1 ? 'text-success' : 'text-danger' }}">{{ $data->status == 1 ? 'Active' : 'Inactive' }}</span>
</p>
<p><b>Remarks :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->remarks }}</span></p>
<p><b>Display Order :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->display_order }}</span></p>
<p><b>Createdby :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->createdby }}</span></p>
<p><b>Updatedby :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->updatedby }}</span></p>
<p><b>Job Description :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->job_description }}</span></p>
<p><b>Departments Id :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->departments_id }}</span></p>
<div class="d-flex justify-content-between">
<div>
<p><b>Created On :</b>&nbsp;&nbsp;&nbsp;<span>{{ $data->created_at }}</span></p>
<p><b>Created By :</b>&nbsp;&nbsp;&nbsp;<span>{{ $data->createdBy }}</span></p>
</div>
<div>
<p><b>Updated On :</b>&nbsp;&nbsp;&nbsp;<span>{{ $data->updated_at }}</span></p>
<p><b>Updated By :</b>&nbsp;&nbsp;&nbsp;<span>{{ $data->updatedBy }}</span></p>
</div>
</div>
</div>
</div>
</div>
</div>
@endSection

View File

@ -0,0 +1,23 @@
@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 -->
<div class='card'>
<div class='card-body'>
{{ html()->form('POST')->route('complaint.store')->class(['needs-validation'])->attributes(['novalidate'])->open() }}
@include('admin::partials.complaints.action')
{{ html()->form()->close() }}
</div>
</div>
</div>
@endsection

View File

@ -0,0 +1,23 @@
@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 -->
<div class='card'>
<div class='card-body'>
{{ html()->modelForm($complaint, 'PUT')->route('complaint.update', $complaint->complaint_id)->class(['needs-validation'])->attributes(['novalidate'])->open() }}
@include('admin::partials.complaints.action')
{{ html()->form()->close() }}
</div>
</div>
</div>
@endsection

View File

@ -0,0 +1,73 @@
@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 -->
<div class="card">
<div class="card-header align-items-center d-flex">
<h5 class="card-title flex-grow-1 mb-0">{{ $title }}</h5>
<div class="flex-shrink-0">
<a href="{{ route('complaint.create') }}" class="btn btn-success waves-effect waves-light"><i
class="ri-add-fill me-1 align-bottom"></i> Create Complaint</a>
</div>
</div>
<div class="card-body">
<table id="buttons-datatables" class="display table-sm table-bordered table">
<thead class="table-light">
<tr>
<th class="tb-col"><span class="overline-title">S.N</span></th>
<th class="tb-col"><span class="overline-title">Complaint Against</span></th>
<th class="tb-col"><span class="overline-title">complaint By</span></th>
<th class="tb-col"><span class="overline-title">complaint Date</span></th>
<th class="tb-col" data-sortable="false"><span class="overline-title">Action</span>
</th>
</tr>
</thead>
<tbody>
@foreach ($complaintLists as $index => $item)
<tr>
<td class="tb-col">{{ $index + 1 }}</td>
<td class="tb-col">{{ $item->employee_id }}</td>
<td class="tb-col">{{ $item->complaint_by }}</td>
<td class="tb-col">{{ $item->complaint_date }}</td>
<td class="tb-col">
<div class="dropdown d-inline-block">
<button class="btn btn-soft-secondary btn-sm dropdown" type="button" data-bs-toggle="dropdown"
aria-expanded="false">
<i class="ri-more-fill align-middle"></i>
</button>
<ul class="dropdown-menu dropdown-menu-end">
<li><a href="{{ route('complaint.show', [$item->complaint_id]) }}" class="dropdown-item"><i
class="ri-eye-fill text-muted me-2 align-bottom"></i> View</a>
</li>
<li><a href="{{ route('complaint.edit', [$item->complaint_id]) }}"
class="dropdown-item edit-item-btn"><i
class="ri-pencil-fill text-muted me-2 align-bottom"></i>
Edit</a>
</li>
<li>
<a href="{{ route('complaint.destroy', [$item->complaint_id]) }}"
class="dropdown-item remove-item-btn" onclick="confirmDelete(this.href)">
<i class="ri-delete-bin-fill text-muted me-2 align-bottom"></i> Delete
</a>
</li>
</ul>
</div>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
</div>
@endsection

View File

@ -0,0 +1,48 @@
@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 -->
<div class='card'>
<div class="card-header align-items-center d-flex">
<h5 class="card-title flex-grow-1 mb-0">View Detail</h5>
<div class="flex-shrink-0">
<a href="{{ route('complaints.index') }}" class="btn btn-success waves-effect waves-light"><i
class="ri-add-fill me-1 align-bottom"></i> Back to List</a>
</div>
</div>
<div class='card-body'>
<p><b>Title :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->title }}</span></p>
<p><b>Alias :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->alias }}</span></p>
<p><b>Status :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span
class="{{ $data->status == 1 ? 'text-success' : 'text-danger' }}">{{ $data->status == 1 ? 'Active' : 'Inactive' }}</span>
</p>
<p><b>Remarks :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->remarks }}</span></p>
<p><b>Display Order :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->display_order }}</span></p>
<p><b>Createdby :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->createdby }}</span></p>
<p><b>Updatedby :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->updatedby }}</span></p>
<p><b>Job Description :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->job_description }}</span></p>
<p><b>Departments Id :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->departments_id }}</span></p>
<div class="d-flex justify-content-between">
<div>
<p><b>Created On :</b>&nbsp;&nbsp;&nbsp;<span>{{ $data->created_at }}</span></p>
<p><b>Created By :</b>&nbsp;&nbsp;&nbsp;<span>{{ $data->createdBy }}</span></p>
</div>
<div>
<p><b>Updated On :</b>&nbsp;&nbsp;&nbsp;<span>{{ $data->updated_at }}</span></p>
<p><b>Updated By :</b>&nbsp;&nbsp;&nbsp;<span>{{ $data->updatedBy }}</span></p>
</div>
</div>
</div>
</div>
</div>
</div>
@endSection

View File

@ -0,0 +1,23 @@
@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 -->
<div class='card'>
<div class='card-body'>
{{ html()->form('POST')->route('event.store')->class(['needs-validation'])->attributes(['novalidate'])->open() }}
@include('admin::partials.events.action')
{{ html()->form()->close() }}
</div>
</div>
</div>
@endsection

View File

@ -0,0 +1,23 @@
@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 -->
<div class='card'>
<div class='card-body'>
{{ html()->modelForm($event, 'PUT')->route('event.update', $event->event_id)->class(['needs-validation'])->attributes(['novalidate'])->open() }}
@include('admin::partials.events.action')
{{ html()->form()->close() }}
</div>
</div>
</div>
@endsection

View File

@ -0,0 +1,76 @@
@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 -->
<div class="card">
<div class="card-header align-items-center d-flex">
<h5 class="card-title flex-grow-1 mb-0">{{ $title }}</h5>
<div class="flex-shrink-0">
<a href="{{ route('event.create') }}" class="btn btn-success waves-effect waves-light"><i
class="ri-add-fill me-1 align-bottom"></i> Create Event</a>
</div>
</div>
<div class="card-body">
<table id="buttons-datatables" class="display table-sm table-bordered table">
<thead class="table-light">
<tr>
<th class="tb-col"><span class="overline-title">S.N</span></th>
<th class="tb-col"><span class="overline-title">Type</span></th>
<th class="tb-col"><span class="overline-title">Title</span></th>
<th class="tb-col"><span class="overline-title">Date</span></th>
<th class="tb-col"><span class="overline-title">Start Time</span></th>
<th class="tb-col"><span class="overline-title">Location</span></th>
<th class="tb-col" data-sortable="false"><span class="overline-title">Action</span>
</th>
</tr>
</thead>
<tbody>
@foreach ($eventLists as $index => $item)
<tr>
<td class="tb-col">{{ $index + 1 }}</td>
<td class="tb-col">{{ $item->type }}</td>
<td class="tb-col">{{ $item->title }}</td>
<td class="tb-col">{{ $item->date }}</td>
<td class="tb-col">{{ $item->start_time }}</td>
<td class="tb-col">{{ $item->location }}</td>
<td class="tb-col">
<div class="dropdown d-inline-block">
<button class="btn btn-soft-secondary btn-sm dropdown" type="button" data-bs-toggle="dropdown"
aria-expanded="false">
<i class="ri-more-fill align-middle"></i>
</button>
<ul class="dropdown-menu dropdown-menu-end">
<li><a href="{{ route('event.show', [$item->event_id]) }}" class="dropdown-item"><i
class="ri-eye-fill text-muted me-2 align-bottom"></i> View</a>
</li>
<li><a href="{{ route('event.edit', [$item->event_id]) }}" class="dropdown-item edit-item-btn"><i
class="ri-pencil-fill text-muted me-2 align-bottom"></i>
Edit</a>
</li>
<li>
<a href="{{ route('event.destroy', [$item->event_id]) }}" class="dropdown-item remove-item-btn"
onclick="confirmDelete(this.href)">
<i class="ri-delete-bin-fill text-muted me-2 align-bottom"></i> Delete
</a>
</li>
</ul>
</div>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
</div>
@endsection

View File

@ -0,0 +1,48 @@
@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 -->
<div class='card'>
<div class="card-header align-items-center d-flex">
<h5 class="card-title flex-grow-1 mb-0">View Detail</h5>
<div class="flex-shrink-0">
<a href="{{ route('designations.index') }}" class="btn btn-success waves-effect waves-light"><i
class="ri-add-fill me-1 align-bottom"></i> Back to List</a>
</div>
</div>
<div class='card-body'>
<p><b>Title :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->title }}</span></p>
<p><b>Alias :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->alias }}</span></p>
<p><b>Status :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span
class="{{ $data->status == 1 ? 'text-success' : 'text-danger' }}">{{ $data->status == 1 ? 'Active' : 'Inactive' }}</span>
</p>
<p><b>Remarks :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->remarks }}</span></p>
<p><b>Display Order :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->display_order }}</span></p>
<p><b>Createdby :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->createdby }}</span></p>
<p><b>Updatedby :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->updatedby }}</span></p>
<p><b>Job Description :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->job_description }}</span></p>
<p><b>Departments Id :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->departments_id }}</span></p>
<div class="d-flex justify-content-between">
<div>
<p><b>Created On :</b>&nbsp;&nbsp;&nbsp;<span>{{ $data->created_at }}</span></p>
<p><b>Created By :</b>&nbsp;&nbsp;&nbsp;<span>{{ $data->createdBy }}</span></p>
</div>
<div>
<p><b>Updated On :</b>&nbsp;&nbsp;&nbsp;<span>{{ $data->updated_at }}</span></p>
<p><b>Updated By :</b>&nbsp;&nbsp;&nbsp;<span>{{ $data->updatedBy }}</span></p>
</div>
</div>
</div>
</div>
</div>
</div>
@endSection

View File

@ -0,0 +1,23 @@
@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 -->
<div class='card'>
<div class='card-body'>
{{ html()->form('POST')->route('holiday.store')->class(['needs-validation'])->attributes(['novalidate'])->open() }}
@include('admin::partials.holidays.action')
{{ html()->form()->close() }}
</div>
</div>
</div>
@endsection

View File

@ -0,0 +1,23 @@
@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 -->
<div class='card'>
<div class='card-body'>
{{ html()->modelForm($holiday, 'PUT')->route('holiday.update', $holiday->holiday_id)->class(['needs-validation'])->attributes(['novalidate'])->open() }}
@include('admin::partials.holidays.action')
{{ html()->form()->close() }}
</div>
</div>
</div>
@endsection

View File

@ -0,0 +1,71 @@
@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 -->
<div class="card">
<div class="card-header align-items-center d-flex">
<h5 class="card-title flex-grow-1 mb-0">{{ $title }}</h5>
<div class="flex-shrink-0">
<a href="{{ route('holiday.create') }}" class="btn btn-success waves-effect waves-light"><i
class="ri-add-fill me-1 align-bottom"></i> Create Holiday</a>
</div>
</div>
<div class="card-body">
<table id="buttons-datatables" class="display table-sm table-bordered table">
<thead class="table-light">
<tr>
<th class="tb-col"><span class="overline-title">S.N</span></th>
<th class="tb-col"><span class="overline-title">Type</span></th>
<th class="tb-col"><span class="overline-title">Title</span></th>
<th class="tb-col"><span class="overline-title">Date</span></th>
<th class="tb-col" data-sortable="false"><span class="overline-title">Action</span>
</th>
</tr>
</thead>
<tbody>
@foreach ($holidayLists as $index => $item)
<tr>
<td class="tb-col">{{ $index + 1 }}</td>
<td class="tb-col">{{ $item->title }}</td>
<td class="tb-col">{{ $item->date }}</td>
<td class="tb-col">
<div class="dropdown d-inline-block">
<button class="btn btn-soft-secondary btn-sm dropdown" type="button" data-bs-toggle="dropdown"
aria-expanded="false">
<i class="ri-more-fill align-middle"></i>
</button>
<ul class="dropdown-menu dropdown-menu-end">
<li><a href="{{ route('holiday.show', [$item->holiday_id]) }}" class="dropdown-item"><i
class="ri-eye-fill text-muted me-2 align-bottom"></i> View</a>
</li>
<li><a href="{{ route('holiday.edit', [$item->holiday_id]) }}" class="dropdown-item edit-item-btn"><i
class="ri-pencil-fill text-muted me-2 align-bottom"></i>
Edit</a>
</li>
<li>
<a href="{{ route('holiday.destroy', [$item->holiday_id]) }}" class="dropdown-item remove-item-btn"
onclick="confirmDelete(this.href)">
<i class="ri-delete-bin-fill text-muted me-2 align-bottom"></i> Delete
</a>
</li>
</ul>
</div>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
</div>
@endsection

View File

@ -0,0 +1,48 @@
@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 -->
<div class='card'>
<div class="card-header align-items-center d-flex">
<h5 class="card-title flex-grow-1 mb-0">View Detail</h5>
<div class="flex-shrink-0">
<a href="{{ route('designations.index') }}" class="btn btn-success waves-effect waves-light"><i
class="ri-add-fill me-1 align-bottom"></i> Back to List</a>
</div>
</div>
<div class='card-body'>
<p><b>Title :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->title }}</span></p>
<p><b>Alias :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->alias }}</span></p>
<p><b>Status :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span
class="{{ $data->status == 1 ? 'text-success' : 'text-danger' }}">{{ $data->status == 1 ? 'Active' : 'Inactive' }}</span>
</p>
<p><b>Remarks :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->remarks }}</span></p>
<p><b>Display Order :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->display_order }}</span></p>
<p><b>Createdby :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->createdby }}</span></p>
<p><b>Updatedby :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->updatedby }}</span></p>
<p><b>Job Description :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->job_description }}</span></p>
<p><b>Departments Id :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->departments_id }}</span></p>
<div class="d-flex justify-content-between">
<div>
<p><b>Created On :</b>&nbsp;&nbsp;&nbsp;<span>{{ $data->created_at }}</span></p>
<p><b>Created By :</b>&nbsp;&nbsp;&nbsp;<span>{{ $data->createdBy }}</span></p>
</div>
<div>
<p><b>Updated On :</b>&nbsp;&nbsp;&nbsp;<span>{{ $data->updated_at }}</span></p>
<p><b>Updated By :</b>&nbsp;&nbsp;&nbsp;<span>{{ $data->updatedBy }}</span></p>
</div>
</div>
</div>
</div>
</div>
</div>
@endSection

View File

@ -0,0 +1,47 @@
<div class="row gy-3">
<div class="col-lg-4 col-md-6">
{{ html()->label('Name')->class('form-label') }}
{{ html()->text('title')->class('form-control')->placeholder('Company Name') }}
</div>
<div class="col-lg-4 col-md-6">
{{ html()->label('Company Type')->class('form-label') }}
{{ html()->select('company_type_id', $companyTypeLists)->class('form-select')->placeholder('Select Company Type') }}
</div>
<div class="col-lg-4 col-md-6">
{{ html()->label('Address')->class('form-label') }}
{{ html()->text('address')->class('form-control')->placeholder('Company Full Address') }}
</div>
<div class="col-lg-12 col-md-12">
{{ html()->label('Description')->class('form-label') }}
{{ html()->textarea('description')->class('form-control')->placeholder('Company Description')->attributes(['rows' => 3]) }}
</div>
</div>
<div class="row">
<div class="col-md-12 py-4">
<h5 class="text-center">Bank Details</h5>
<div class="border-dash border"></div>
</div>
<div class="col-lg-4 col-md-6">
{{ html()->label('Name')->class('form-label') }}
{{ html()->text('bank_name')->class('form-control')->placeholder('Bank Name') }}
</div>
<div class="col-lg-4 col-md-6">
{{ html()->label('Account Number')->class('form-label') }}
{{ html()->text('bank_acc_no')->class('form-control')->placeholder('Bank Account Number') }}
</div>
<div class="col-lg-4 col-md-6">
{{ html()->label('Branch')->class('form-label') }}
{{ html()->text('bank_acc_branch')->class('form-control')->placeholder('Branch Name') }}
</div>
<div class="text-end mt-4">
{{ html()->button($editable ? 'Update' : 'Add Company', 'submit')->class('btn btn-success') }}
</div>
</div>

View File

@ -0,0 +1,11 @@
<div class="row gy-3">
<div class="col-lg-4 col-md-6">
{{ html()->label('Title')->class('form-label') }}
{{ html()->text('title')->class('form-control')->placeholder('Enter Title') }}
</div>
<div class="text-end">
{{ html()->button($editable ? 'Update' : 'Add Company Type', 'submit')->class('btn btn-success') }}
</div>
</div>

View File

@ -0,0 +1,33 @@
<div class="row gy-3">
<div class="col-lg-4 col-md-6">
{{ html()->label('Complaint Against')->class('form-label') }}
{{ html()->select('employee_id')->class('form-select')->placeholder('Select Employee') }}
</div>
<div class="col-lg-4 col-md-6">
{{ html()->label('Complaint By')->class('form-label') }}
{{ html()->select('complaint_by')->class('form-select')->placeholder('Select Who Complaint') }}
</div>
<div class="col-lg-4 col-md-6">
{{ html()->label('Complaint Date')->class('form-label') }}
{{ html()->date('complaint_date')->class('form-control')->placeholder('Select Date') }}
</div>
<div class="col-lg-12 col-md-12">
{{ html()->label('Description')->class('form-label') }}
{{ html()->textarea('description')->class('form-control')->attributes(['rows' => 5]) }}
</div>
<div class="col-lg-12 col-md-12">
{{ html()->label('Remarks')->class('form-label') }}
{{ html()->textarea('remarks')->class('form-control')->attributes(['rows' => 5]) }}
</div>
<div class="text-end">
{{ html()->button($editable ? 'Update' : 'Add Complaint', 'submit')->class('btn btn-success') }}
</div>
</div>

View File

@ -0,0 +1,50 @@
<div class="row gy-3">
<div class="col-lg-4 col-md-6">
{{ html()->label('Event Type')->class('form-label') }}
{{ html()->select('type')->class('form-select')->placeholder('Select Event Type') }}
</div>
<div class="col-lg-4 col-md-6">
{{ html()->label('Title')->class('form-label') }}
{{ html()->text('title')->class('form-control')->placeholder('Event Title') }}
</div>
<div class="col-lg-4 col-md-6">
{{ html()->label('Date')->class('form-label') }}
<div class="input-group">
{{ html()->text('date')->class('form-control flatpickr flatpickr-input')->id('event-start-date')->placeholder('Select Event Date') }}
<span class="input-group-text"><i class="ri-calendar-event-line"></i></span>
</div>
</div>
<div class="col-lg-4 col-md-6">
{{ html()->label('Start Time')->class('form-label') }}
{{ html()->time('start_time')->class('form-control')->placeholder('Event Start Time') }}
</div>
<div class="col-lg-4 col-md-6">
{{ html()->label('End Time')->class('form-label') }}
{{ html()->time('end_time')->class('form-control')->placeholder('Event End Time') }}
</div>
<div class="col-lg-4 col-md-6">
{{ html()->label('Location')->class('form-label') }}
{{ html()->text('location')->class('form-control')->placeholder('Event Location') }}
</div>
<div class="col-lg-12 col-md-12">
{{ html()->label('Description')->class('form-label') }}
{{ html()->textarea('description')->class('form-control')->placeholder('Event Description')->attributes(['rows' => 3]) }}
</div>
<div class="col-lg-12 col-md-12">
{{ html()->label('Remarks')->class('form-label') }}
{{ html()->textarea('remarks')->class('form-control')->attributes(['rows' => 3]) }}
</div>
<div class="text-end">
{{ html()->button($editable ? 'Update' : 'Add Event', 'submit')->class('btn btn-success') }}
</div>
</div>

View File

@ -0,0 +1,29 @@
<div class="row gy-3">
<div class="col-lg-4 col-md-6">
{{ html()->label('Title')->class('form-label') }}
{{ html()->text('title')->class('form-control')->placeholder('Holiday Title') }}
</div>
<div class="col-lg-4 col-md-6">
{{ html()->label('Date')->class('form-label') }}
<div class="input-group">
{{ html()->text('date')->class('form-control flatpickr flatpickr-input')->id('event-start-date')->placeholder('Select Holiday Date') }}
<span class="input-group-text"><i class="ri-calendar-event-line"></i></span>
</div>
</div>
<div class="col-lg-12 col-md-12">
{{ html()->label('Description')->class('form-label') }}
{{ html()->textarea('description')->class('form-control')->placeholder('Holiday Description')->attributes(['rows' => 3]) }}
</div>
<div class="col-lg-12 col-md-12">
{{ html()->label('Remarks')->class('form-label') }}
{{ html()->textarea('remarks')->class('form-control')->attributes(['rows' => 3]) }}
</div>
<div class="text-end">
{{ html()->button($editable ? 'Update' : 'Add Holiday', 'submit')->class('btn btn-success') }}
</div>
</div>

View File

@ -0,0 +1,37 @@
<div class="row gy-3">
<div class="col-lg-4 col-md-6">
{{ html()->label('Employee')->class('form-label') }}
{{ html()->select('employee_id')->class('form-select')->placeholder('Select Employee') }}
</div>
<div class="col-lg-4 col-md-6">
{{ html()->label('Department From')->class('form-label') }}
{{ html()->select('old_department_id')->class('form-select')->placeholder('Select Previous Department') }}
</div>
<div class="col-lg-4 col-md-6">
{{ html()->label('Department To')->class('form-label') }}
{{ html()->select('new_department_id')->class('form-select')->placeholder('Select New Department') }}
</div>
<div class="col-lg-4 col-md-6">
{{ html()->label('Transfer Date')->class('form-label') }}
{{ html()->date('transfer_date')->class('form-control')->placeholder('Select Transfer Date') }}
</div>
<div class="col-lg-12 col-md-12">
{{ html()->label('Description')->class('form-label') }}
{{ html()->textarea('description')->class('form-control')->attributes(['rows' => 3]) }}
</div>
<div class="col-lg-12 col-md-12">
{{ html()->label('Remarks')->class('form-label') }}
{{ html()->textarea('remarks')->class('form-control')->attributes(['rows' => 3]) }}
</div>
<div class="text-end">
{{ html()->button($editable ? 'Update' : 'Add Transfer', 'submit')->class('btn btn-success') }}
</div>
</div>

View File

@ -0,0 +1,36 @@
<div class="row gy-3">
<div class="col-lg-4 col-md-6">
{{ html()->label('Employee')->class('form-label') }}
{{ html()->select('employee_id')->class('form-select')->placeholder('Select Employee') }}
</div>
<div class="col-lg-4 col-md-6">
{{ html()->label('Warning type')->class('form-label') }}
{{ html()->select('type')->class('form-control')->placeholder('Select Warning Type') }}
</div>
<div class="col-lg-4 col-md-6">
{{ html()->label('Warning Date')->class('form-label') }}
{{ html()->date('warning_date')->class('form-control')->placeholder('Select Warning Date') }}
</div>
<div class="col-lg-12 col-md-12">
{{ html()->label('Subject')->class('form-label') }}
{{ html()->text('subject')->class('form-control')->placeholder('Write Warning Suject') }}
</div>
<div class="col-lg-12 col-md-12">
{{ html()->label('Description')->class('form-label') }}
{{ html()->textarea('description')->class('form-control')->attributes(['rows' => 3]) }}
</div>
<div class="col-lg-12 col-md-12">
{{ html()->label('Remarks')->class('form-label') }}
{{ html()->textarea('remarks')->class('form-control')->attributes(['rows' => 3]) }}
</div>
<div class="text-end">
{{ html()->button($editable ? 'Update' : 'Add Warning', 'submit')->class('btn btn-success') }}
</div>
</div>

View File

@ -0,0 +1,23 @@
@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 -->
<div class='card'>
<div class='card-body'>
{{ html()->form('POST')->route('transfer.store')->class(['needs-validation'])->attributes(['novalidate'])->open() }}
@include('admin::partials.transfers.action')
{{ html()->form()->close() }}
</div>
</div>
</div>
@endsection

View File

@ -0,0 +1,23 @@
@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 -->
<div class='card'>
<div class='card-body'>
{{ html()->modelForm($transfer, 'PUT')->route('transfer.update', $transfer->transfer_id)->class(['needs-validation'])->attributes(['novalidate'])->open() }}
@include('admin::partials.transfers.action')
{{ html()->form()->close() }}
</div>
</div>
</div>
@endsection

View File

@ -0,0 +1,75 @@
@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 -->
<div class="card">
<div class="card-header align-items-center d-flex">
<h5 class="card-title flex-grow-1 mb-0">{{ $title }}</h5>
<div class="flex-shrink-0">
<a href="{{ route('transfer.create') }}" class="btn btn-success waves-effect waves-light"><i
class="ri-add-fill me-1 align-bottom"></i> Create Transfer</a>
</div>
</div>
<div class="card-body">
<table id="buttons-datatables" class="display table-sm table-bordered table">
<thead class="table-light">
<tr>
<th class="tb-col"><span class="overline-title">S.N</span></th>
<th class="tb-col"><span class="overline-title">Employee</span></th>
<th class="tb-col"><span class="overline-title">Department From</span></th>
<th class="tb-col"><span class="overline-title">Department To</span></th>
<th class="tb-col"><span class="overline-title">Transfer Date</span></th>
<th class="tb-col" data-sortable="false"><span class="overline-title">Action</span>
</th>
</tr>
</thead>
<tbody>
@foreach ($transferLists as $index => $item)
<tr>
<td class="tb-col">{{ $index + 1 }}</td>
<td class="tb-col">{{ $item->employee_id }}</td>
<td class="tb-col">{{ $item->old_department_id }}</td>
<td class="tb-col">{{ $item->new_department_id }}</td>
<td class="tb-col">{{ $item->transfer_date }}</td>
<td class="tb-col">
<div class="dropdown d-inline-block">
<button class="btn btn-soft-secondary btn-sm dropdown" type="button" data-bs-toggle="dropdown"
aria-expanded="false">
<i class="ri-more-fill align-middle"></i>
</button>
<ul class="dropdown-menu dropdown-menu-end">
<li><a href="{{ route('transfer.show', [$item->transfer_id]) }}" class="dropdown-item"><i
class="ri-eye-fill text-muted me-2 align-bottom"></i> View</a>
</li>
<li><a href="{{ route('transfer.edit', [$item->transfer_id]) }}"
class="dropdown-item edit-item-btn"><i
class="ri-pencil-fill text-muted me-2 align-bottom"></i>
Edit</a>
</li>
<li>
<a href="{{ route('transfer.destroy', [$item->transfer_id]) }}"
class="dropdown-item remove-item-btn" onclick="confirmDelete(this.href)">
<i class="ri-delete-bin-fill text-muted me-2 align-bottom"></i> Delete
</a>
</li>
</ul>
</div>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
</div>
@endsection

View File

@ -0,0 +1,48 @@
@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 -->
<div class='card'>
<div class="card-header align-items-center d-flex">
<h5 class="card-title flex-grow-1 mb-0">View Detail</h5>
<div class="flex-shrink-0">
<a href="{{ route('designations.index') }}" class="btn btn-success waves-effect waves-light"><i
class="ri-add-fill me-1 align-bottom"></i> Back to List</a>
</div>
</div>
<div class='card-body'>
<p><b>Title :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->title }}</span></p>
<p><b>Alias :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->alias }}</span></p>
<p><b>Status :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span
class="{{ $data->status == 1 ? 'text-success' : 'text-danger' }}">{{ $data->status == 1 ? 'Active' : 'Inactive' }}</span>
</p>
<p><b>Remarks :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->remarks }}</span></p>
<p><b>Display Order :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->display_order }}</span></p>
<p><b>Createdby :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->createdby }}</span></p>
<p><b>Updatedby :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->updatedby }}</span></p>
<p><b>Job Description :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->job_description }}</span></p>
<p><b>Departments Id :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->departments_id }}</span></p>
<div class="d-flex justify-content-between">
<div>
<p><b>Created On :</b>&nbsp;&nbsp;&nbsp;<span>{{ $data->created_at }}</span></p>
<p><b>Created By :</b>&nbsp;&nbsp;&nbsp;<span>{{ $data->createdBy }}</span></p>
</div>
<div>
<p><b>Updated On :</b>&nbsp;&nbsp;&nbsp;<span>{{ $data->updated_at }}</span></p>
<p><b>Updated By :</b>&nbsp;&nbsp;&nbsp;<span>{{ $data->updatedBy }}</span></p>
</div>
</div>
</div>
</div>
</div>
</div>
@endSection

View File

@ -0,0 +1,23 @@
@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 -->
<div class='card'>
<div class='card-body'>
{{ html()->form('POST')->route('warning.store')->class(['needs-validation'])->attributes(['novalidate'])->open() }}
@include('admin::partials.warnings.action')
{{ html()->form()->close() }}
</div>
</div>
</div>
@endsection

View File

@ -0,0 +1,23 @@
@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 -->
<div class='card'>
<div class='card-body'>
{{ html()->modelForm($warning, 'PUT')->route('warning.update', $warning->warning_id)->class(['needs-validation'])->attributes(['novalidate'])->open() }}
@include('admin::partials.warnings.action')
{{ html()->form()->close() }}
</div>
</div>
</div>
@endsection

View File

@ -0,0 +1,75 @@
@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 -->
<div class="card">
<div class="card-header align-items-center d-flex">
<h5 class="card-title flex-grow-1 mb-0">{{ $title }}</h5>
<div class="flex-shrink-0">
<a href="{{ route('warning.create') }}" class="btn btn-success waves-effect waves-light"><i
class="ri-add-fill me-1 align-bottom"></i> Create Warning</a>
</div>
</div>
<div class="card-body">
<table id="buttons-datatables" class="display table-sm table-bordered table">
<thead class="table-light">
<tr>
<th class="tb-col"><span class="overline-title">S.N</span></th>
<th class="tb-col"><span class="overline-title">Employee</span></th>
<th class="tb-col"><span class="overline-title">Warning Type</span></th>
<th class="tb-col"><span class="overline-title">Subject</span></th>
<th class="tb-col"><span class="overline-title">Warning Date</span></th>
<th class="tb-col" data-sortable="false"><span class="overline-title">Action</span>
</th>
</tr>
</thead>
<tbody>
@foreach ($warningLists as $index => $item)
<tr>
<td class="tb-col">{{ $index + 1 }}</td>
<td class="tb-col">{{ $item->employee_id }}</td>
<td class="tb-col">{{ $item->type }}</td>
<td class="tb-col">{{ $item->subject }}</td>
<td class="tb-col">{{ $item->warning_date }}</td>
<td class="tb-col">
<div class="dropdown d-inline-block">
<button class="btn btn-soft-secondary btn-sm dropdown" type="button" data-bs-toggle="dropdown"
aria-expanded="false">
<i class="ri-more-fill align-middle"></i>
</button>
<ul class="dropdown-menu dropdown-menu-end">
<li><a href="{{ route('warning.show', [$item->warning_id]) }}" class="dropdown-item"><i
class="ri-eye-fill text-muted me-2 align-bottom"></i> View</a>
</li>
<li><a href="{{ route('warning.edit', [$item->warning_id]) }}"
class="dropdown-item edit-item-btn"><i
class="ri-pencil-fill text-muted me-2 align-bottom"></i>
Edit</a>
</li>
<li>
<a href="{{ route('warning.destroy', [$item->warning_id]) }}"
class="dropdown-item remove-item-btn" onclick="confirmDelete(this.href)">
<i class="ri-delete-bin-fill text-muted me-2 align-bottom"></i> Delete
</a>
</li>
</ul>
</div>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
</div>
@endsection

View File

@ -0,0 +1,48 @@
@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 -->
<div class='card'>
<div class="card-header align-items-center d-flex">
<h5 class="card-title flex-grow-1 mb-0">View Detail</h5>
<div class="flex-shrink-0">
<a href="{{ route('designations.index') }}" class="btn btn-success waves-effect waves-light"><i
class="ri-add-fill me-1 align-bottom"></i> Back to List</a>
</div>
</div>
<div class='card-body'>
<p><b>Title :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->title }}</span></p>
<p><b>Alias :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->alias }}</span></p>
<p><b>Status :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span
class="{{ $data->status == 1 ? 'text-success' : 'text-danger' }}">{{ $data->status == 1 ? 'Active' : 'Inactive' }}</span>
</p>
<p><b>Remarks :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->remarks }}</span></p>
<p><b>Display Order :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->display_order }}</span></p>
<p><b>Createdby :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->createdby }}</span></p>
<p><b>Updatedby :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->updatedby }}</span></p>
<p><b>Job Description :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->job_description }}</span></p>
<p><b>Departments Id :&nbsp;&nbsp;&nbsp;&nbsp;</b> <span>{{ $data->departments_id }}</span></p>
<div class="d-flex justify-content-between">
<div>
<p><b>Created On :</b>&nbsp;&nbsp;&nbsp;<span>{{ $data->created_at }}</span></p>
<p><b>Created By :</b>&nbsp;&nbsp;&nbsp;<span>{{ $data->createdBy }}</span></p>
</div>
<div>
<p><b>Updated On :</b>&nbsp;&nbsp;&nbsp;<span>{{ $data->updated_at }}</span></p>
<p><b>Updated By :</b>&nbsp;&nbsp;&nbsp;<span>{{ $data->updatedBy }}</span></p>
</div>
</div>
</div>
</div>
</div>
</div>
@endSection

View File

@ -3,8 +3,16 @@
use Illuminate\Support\Facades\Route;
use Modules\Admin\Http\Controllers\AdminController;
use Modules\Admin\Http\Controllers\AppreciationController;
use Modules\Admin\Http\Controllers\CalendarController;
use Modules\Admin\Http\Controllers\CompanyController;
use Modules\Admin\Http\Controllers\CompanyTypeController;
use Modules\Admin\Http\Controllers\ComplaintController;
use Modules\Admin\Http\Controllers\EventController;
use Modules\Admin\Http\Controllers\HolidayController;
use Modules\Admin\Http\Controllers\PromotionDemotionController;
use Modules\Admin\Http\Controllers\ResignationController;
use Modules\Admin\Http\Controllers\TransferController;
use Modules\Admin\Http\Controllers\WarningController;
/*
|--------------------------------------------------------------------------
@ -22,6 +30,14 @@ Route::group([], function () {
Route::resource('promotion-demotion', PromotionDemotionController::class)->names('promotionDemotion');
Route::resource('appreciation', AppreciationController::class)->names('appreciation');
Route::resource('resignation', ResignationController::class)->names('resignation');
Route::resource('complaint', ComplaintController::class)->names('complaint');
Route::resource('transfer', TransferController::class)->names('transfer');
Route::resource('warning', WarningController::class)->names('warning');
Route::resource('company', CompanyController::class)->names('company');
Route::resource('company-type', CompanyTypeController::class)->names('companyType');
Route::resource('event', EventController::class)->names('event');
Route::resource('holiday', HolidayController::class)->names('holiday');
Route::resource('calendar', CalendarController::class)->names('calendar');
});
require __DIR__ . '/route.countries.php';

View File

@ -6,15 +6,24 @@ use App\Http\Controllers\Controller;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Modules\Attendance\Repositories\AttendanceRepository;
class AttendanceController extends Controller
{
private $attendanceRepository;
public function __construct(AttendanceRepository $attendanceRepository)
{
$this->attendanceRepository = $attendanceRepository;
}
/**
* Display a listing of the resource.
*/
public function index()
{
return view('attendance::index');
$data['title'] = 'Attendance Lists';
$data['attendanceLists'] = $this->attendanceRepository->findAll();
return view('attendance::attendances.index', $data);
}
/**
@ -22,7 +31,9 @@ class AttendanceController extends Controller
*/
public function create()
{
return view('attendance::create');
$data['title'] = 'Create Attendance';
$data['editable'] = false;
return view('attendance::attendances.create', $data);
}
/**
@ -30,7 +41,17 @@ class AttendanceController extends Controller
*/
public function store(Request $request): RedirectResponse
{
//
$request->merge([
'date' => $request->date ? $request->date : now()->format('Y-m-d'),
]);
try {
$this->attendanceRepository->create($request->all());
toastr()->success('Attendance Created Successfully');
} catch (\Throwable $th) {
toastr()->error($th->getMessage());
}
return redirect()->route('attendance.index');
}
/**
@ -38,7 +59,7 @@ class AttendanceController extends Controller
*/
public function show($id)
{
return view('attendance::show');
return view('attendance::attendances.show');
}
/**
@ -46,7 +67,17 @@ class AttendanceController extends Controller
*/
public function edit($id)
{
return view('attendance::edit');
try {
$data['title'] = 'Edit Attendance';
$data['editable'] = true;
$data['attendance'] = $this->attendanceRepository->getAttendanceById($id);
} catch (\Throwable $th) {
toastr()->error($th->getMessage());
}
return view('attendance::attendances.edit', $data);
}
/**
@ -54,7 +85,15 @@ class AttendanceController extends Controller
*/
public function update(Request $request, $id): RedirectResponse
{
//
try {
$this->attendanceRepository->update($id, $request->all());
toastr()->success('Attendance Updated Successfully');
} catch (\Throwable $th) {
toastr()->error($th->getMessage());
}
return redirect()->route('attendance.index');
}
/**
@ -62,6 +101,12 @@ class AttendanceController extends Controller
*/
public function destroy($id)
{
//
try {
$this->attendanceRepository->delete($id);
toastr()->success('Attendance Deleted Successfully');
} catch (\Throwable $th) {
toastr()->error($th->getMessage());
}
return redirect()->route('attendance.index');
}
}

View File

@ -0,0 +1,30 @@
<?php
namespace Modules\Attendance\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Modules\Attendance\Database\factories\AttendanceFactory;
class Attendance extends Model
{
use HasFactory;
protected $table = 'tbl_attendances';
protected $primaryKey = 'attendance_id';
/**
* The attributes that are mass assignable.
*/
protected $fillable = [
'clock_in_time',
'clock_out_time',
'work_from_type',
'date',
'status',
'total_hours',
'description',
'remarks',
'createdBy',
'updatedBy',
];
}

View File

@ -0,0 +1,12 @@
<?php
namespace Modules\Attendance\Repositories;
interface AttendanceInterface
{
public function findAll();
public function getAttendanceById($attendanceId);
public function delete($attendanceId);
public function create(array $attendanceDetails);
public function update($attendanceId, array $newDetails);
}

View File

@ -0,0 +1,35 @@
<?php
namespace Modules\Attendance\Repositories;
use Modules\Attendance\Models\Attendance;
class AttendanceRepository implements AttendanceInterface
{
public function findAll()
{
return Attendance::get();
}
public function getAttendanceById($attendanceId)
{
return Attendance::findOrFail($attendanceId);
}
public function delete($attendanceId)
{
Attendance::destroy($attendanceId);
}
public function create(array $attendanceDetails)
{
return Attendance::create($attendanceDetails);
}
public function update($attendanceId, array $newDetails)
{
return Attendance::where('attendance_id', $attendanceId)->update($newDetails);
}
}

View File

@ -0,0 +1,37 @@
<?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_attendances', function (Blueprint $table) {
$table->unsignedTinyInteger('attendance_id')->autoIncrement();
$table->unsignedBigInteger('employee_id')->nullable();
$table->time('clock_in_time')->nullable();
$table->time('clock_out_time')->nullable();
$table->string('work_from_type')->nullable();
$table->date('date')->nullable();
$table->integer('status')->nullable();
$table->integer('total_hours')->nullable();
$table->mediumText('description')->nullable();
$table->mediumText('remarks')->nullable();
$table->unsignedBigInteger('createdBy')->nullable();
$table->unsignedBigInteger('updatedBy')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('tbl_attendances');
}
};

View File

@ -0,0 +1,23 @@
@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 -->
<div class='card'>
<div class='card-body'>
{{ html()->form('POST')->route('attendance.store')->class(['needs-validation'])->attributes(['novalidate'])->open() }}
@include('attendance::partials.attendances.action')
{{ html()->form()->close() }}
</div>
</div>
</div>
@endsection

View File

@ -0,0 +1,23 @@
@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 -->
<div class='card'>
<div class='card-body'>
{{ html()->modelForm($attendance, 'PUT')->route('attendance.update', $attendance->attendance_id)->class(['needs-validation'])->attributes(['novalidate'])->open() }}
@include('attendance::partials.attendances.action')
{{ html()->form()->close() }}
</div>
</div>
</div>
@endsection

View File

@ -0,0 +1,238 @@
@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 -->
<div class="card">
<div class="card-header align-items-center d-flex">
<h5 class="card-title flex-grow-1 mb-0">{{ $title }}</h5>
<div class="flex-shrink-0">
<a href="{{ route('attendance.create') }}" class="btn btn-success waves-effect waves-light"><i
class="ri-add-fill me-1 align-bottom"></i>Mark Attendance</a>
</div>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-12">
<div class="table-responsive">
<table class="dataTable table-bordered table-hover mt-3 table" id="example">
<thead class="thead-light">
<tr>
<th class="px-2" style="vertical-align: middle;">Employee</th>
<th class="f-11 pl-1 pr-2">1
<br>
<span class="text-dark-grey f-10">
Mon
</span>
</th>
<th class="f-11 pl-1 pr-2">2
<br>
<span class="text-dark-grey f-10">
Tue
</span>
</th>
<th class="f-11 pl-1 pr-2">3
<br>
<span class="text-dark-grey f-10">
Wed
</span>
</th>
<th class="f-11 pl-1 pr-2">4
<br>
<span class="text-dark-grey f-10">
Thu
</span>
</th>
<th class="f-11 pl-1 pr-2">5
<br>
<span class="text-dark-grey f-10">
Fri
</span>
</th>
<th class="f-11 pl-1 pr-2">6
<br>
<span class="text-dark-grey f-10">
Sat
</span>
</th>
<th class="f-11 pl-1 pr-2">7
<br>
<span class="text-dark-grey f-10">
Sun
</span>
</th>
<th class="f-11 pl-1 pr-2">8
<br>
<span class="text-dark-grey f-10">
Mon
</span>
</th>
<th class="f-11 pl-1 pr-2">9
<br>
<span class="text-dark-grey f-10">
Tue
</span>
</th>
<th class="f-11 pl-1 pr-2">10
<br>
<span class="text-dark-grey f-10">
Wed
</span>
</th>
<th class="f-11 pl-1 pr-2">11
<br>
<span class="text-dark-grey f-10">
Thu
</span>
</th>
<th class="f-11 pl-1 pr-2">12
<br>
<span class="text-dark-grey f-10">
Fri
</span>
</th>
<th class="f-11 pl-1 pr-2">13
<br>
<span class="text-dark-grey f-10">
Sat
</span>
</th>
<th class="f-11 pl-1 pr-2">14
<br>
<span class="text-dark-grey f-10">
Sun
</span>
</th>
<th class="f-11 pl-1 pr-2">15
<br>
<span class="text-dark-grey f-10">
Mon
</span>
</th>
<th class="f-11 pl-1 pr-2">16
<br>
<span class="text-dark-grey f-10">
Tue
</span>
</th>
<th class="f-11 pl-1 pr-2">17
<br>
<span class="text-dark-grey f-10">
Wed
</span>
</th>
<th class="f-11 pl-1 pr-2">18
<br>
<span class="text-dark-grey f-10">
Thu
</span>
</th>
<th class="f-11 pl-1 pr-2">19
<br>
<span class="text-dark-grey f-10">
Fri
</span>
</th>
<th class="f-11 pl-1 pr-2">20
<br>
<span class="text-dark-grey f-10">
Sat
</span>
</th>
<th class="f-11 pl-1 pr-2">21
<br>
<span class="text-dark-grey f-10">
Sun
</span>
</th>
<th class="f-11 pl-1 pr-2">22
<br>
<span class="text-dark-grey f-10">
Mon
</span>
</th>
<th class="f-11 pl-1 pr-2">23
<br>
<span class="text-dark-grey f-10">
Tue
</span>
</th>
<th class="f-11 pl-1 pr-2">24
<br>
<span class="text-dark-grey f-10">
Wed
</span>
</th>
<th class="f-11 pl-1 pr-2">25
<br>
<span class="text-dark-grey f-10">
Thu
</span>
</th>
<th class="f-11 pl-1 pr-2">26
<br>
<span class="text-dark-grey f-10">
Fri
</span>
</th>
<th class="f-11 pl-1 pr-2">27
<br>
<span class="text-dark-grey f-10">
Sat
</span>
</th>
<th class="f-11 pl-1 pr-2">28
<br>
<span class="text-dark-grey f-10">
Sun
</span>
</th>
<th class="f-11 pl-1 pr-2">29
<br>
<span class="text-dark-grey f-10">
Mon
</span>
</th>
<th class="f-11 pl-1 pr-2">30
<br>
<span class="text-dark-grey f-10">
Tue
</span>
</th>
<th class="px-2 text-right">Total</th>
</tr>
</thead>
<tbody>
<tr>
<td class="w-10 px-2">
<div class="align-items-center mw-50">
<div class="text-truncate">
<h5 class="f-12 mb-0">
<a href="https://demo.worksuite.biz/account/employees/1" class="text-darkest-grey">Mr.
Fletcher Berge <span class="badge badge-secondary ml-1 pr-1">It's you</span></a>
</h5>
<p class="f-12 text-dark-grey mb-0">
Junior
</p>
</div>
</div>
</td>
<td class="text-dark f-w-500 attendance-total w-100 px-2 text-right">
0 / <span class="text-lightest">30</span></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection

View File

@ -0,0 +1,32 @@
<div class="row gy-3">
<div class="col-lg-4 col-md-6">
{{ html()->label('Employee')->class('form-label') }}
{{ html()->select('employee_id')->class('form-select')->placeholder('Select Employee') }}
</div>
<div class="col-lg-4 col-md-6">
{{ html()->label('Clock In')->class('form-label') }}
{{ html()->time('clock_in_time')->class('form-control') }}
</div>
<div class="col-lg-4 col-md-6">
{{ html()->label('Clock Out')->class('form-label') }}
{{ html()->time('clock_out_time')->class('form-control') }}
</div>
<div class="col-lg-4 col-md-6">
{{ html()->label('Date')->class('form-label') }}
{{ html()->date('date')->class('form-control')->placeholder('Attendance Date') }}
</div>
<div class="col-lg-4 col-md-6">
{{ html()->label('Working From')->class('form-label') }}
{{ html()->select('work_from_type', ['home' => 'Home', 'office' => 'Office', 'other' => 'Other'])->class('form-select')->placeholder('Working From') }}
</div>
<div class="text-end">
{{ html()->button($editable ? 'Update' : 'Mark Attendance', 'submit')->class('btn btn-success') }}
</div>
</div>

View File

@ -34,7 +34,6 @@
{{ 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">
@ -56,9 +55,7 @@
<div class="col-md-4">
{{ html()->label('Upload Profile Picture')->class('form-label') }}
{{ html()->file('profile_picture')->class('form-control') }}
</div>
</div>
<div class="row gy-1 mt-1">

View File

@ -0,0 +1,67 @@
<?php
namespace Modules\Taxation\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
class TaxationController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
return view('taxation::index');
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
return view('taxation::create');
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request): RedirectResponse
{
//
}
/**
* Show the specified resource.
*/
public function show($id)
{
return view('taxation::show');
}
/**
* Show the form for editing the specified resource.
*/
public function edit($id)
{
return view('taxation::edit');
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, $id): RedirectResponse
{
//
}
/**
* Remove the specified resource from storage.
*/
public function destroy($id)
{
//
}
}

View File

View File

View File

View File

@ -0,0 +1,49 @@
<?php
namespace Modules\Taxation\Providers;
use Illuminate\Support\Facades\Route;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
class RouteServiceProvider extends ServiceProvider
{
/**
* Called before routes are registered.
*
* Register any model bindings or pattern based filters.
*/
public function boot(): void
{
parent::boot();
}
/**
* Define the routes for the application.
*/
public function map(): void
{
$this->mapApiRoutes();
$this->mapWebRoutes();
}
/**
* Define the "web" routes for the application.
*
* These routes all receive session state, CSRF protection, etc.
*/
protected function mapWebRoutes(): void
{
Route::middleware('web')->group(module_path('Taxation', '/routes/web.php'));
}
/**
* Define the "api" routes for the application.
*
* These routes are typically stateless.
*/
protected function mapApiRoutes(): void
{
Route::middleware('api')->prefix('api')->name('api.')->group(module_path('Taxation', '/routes/api.php'));
}
}

View File

@ -0,0 +1,114 @@
<?php
namespace Modules\Taxation\Providers;
use Illuminate\Support\Facades\Blade;
use Illuminate\Support\ServiceProvider;
class TaxationServiceProvider extends ServiceProvider
{
protected string $moduleName = 'Taxation';
protected string $moduleNameLower = 'taxation';
/**
* Boot the application events.
*/
public function boot(): void
{
$this->registerCommands();
$this->registerCommandSchedules();
$this->registerTranslations();
$this->registerConfig();
$this->registerViews();
$this->loadMigrationsFrom(module_path($this->moduleName, 'database/migrations'));
}
/**
* Register the service provider.
*/
public function register(): void
{
$this->app->register(RouteServiceProvider::class);
}
/**
* Register commands in the format of Command::class
*/
protected function registerCommands(): void
{
// $this->commands([]);
}
/**
* Register command Schedules.
*/
protected function registerCommandSchedules(): void
{
// $this->app->booted(function () {
// $schedule = $this->app->make(Schedule::class);
// $schedule->command('inspire')->hourly();
// });
}
/**
* Register translations.
*/
public function registerTranslations(): void
{
$langPath = resource_path('lang/modules/'.$this->moduleNameLower);
if (is_dir($langPath)) {
$this->loadTranslationsFrom($langPath, $this->moduleNameLower);
$this->loadJsonTranslationsFrom($langPath);
} else {
$this->loadTranslationsFrom(module_path($this->moduleName, 'lang'), $this->moduleNameLower);
$this->loadJsonTranslationsFrom(module_path($this->moduleName, 'lang'));
}
}
/**
* Register config.
*/
protected function registerConfig(): void
{
$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);
}
/**
* Register views.
*/
public function registerViews(): void
{
$viewPath = resource_path('views/modules/'.$this->moduleNameLower);
$sourcePath = module_path($this->moduleName, 'resources/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','')));
Blade::componentNamespace($componentNamespace, $this->moduleNameLower);
}
/**
* Get the services provided by the provider.
*/
public function provides(): array
{
return [];
}
private function getPublishableViewPaths(): array
{
$paths = [];
foreach (config('view.paths') as $path) {
if (is_dir($path.'/modules/'.$this->moduleNameLower)) {
$paths[] = $path.'/modules/'.$this->moduleNameLower;
}
}
return $paths;
}
}

View File

@ -0,0 +1,15 @@
<?php
namespace Modules\Employee\Repositories;
interface EmployeeInterface
{
public function findAll();
public function getEmployeeById($employeeId);
public function getEmployeeByEmail($email);
public function delete($employeeId);
public function create($EmployeeDetails);
public function update($employeeId, array $newDetails);
public function pluck();
}

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