Compare commits

...

39 Commits

Author SHA1 Message Date
dc32ac8f91 fix 2025-08-24 18:03:00 +05:45
9d371a8d0f fix 2025-08-24 17:58:58 +05:45
0c9adf1c7a fix 2025-08-24 17:49:47 +05:45
087c19dc4a fix: Correct column title from 'Contact' to 'Mobile' in enquiry index 2025-08-24 17:46:26 +05:45
0c92a6f518 fix 2025-08-24 17:42:15 +05:45
2d8c43691f feat: Enhance contact form with required fields for name, email, mobile, and message 2025-08-24 17:40:28 +05:45
27f371955c feat: Update contact form with proper action and input names for enquiry submission 2025-08-24 17:39:13 +05:45
1ee87559da fix: replace hardcoded map iframe with dynamic setting 2025-08-24 13:20:28 +05:45
6ef55240a0 Enhance 404 error page with custom layout and image, add admin login routes 2025-08-24 12:47:48 +05:45
6d71fe4b4a feat: Add Vacancy management functionality with controller, model, migration, and form 2025-08-22 17:03:00 +05:45
52732b0f09 feat: Implement Career Management Module
- Created CareerController for handling career-related CRUD operations.
- Added Career model with necessary attributes and relationships.
- Created migration for careers table with relevant fields.
- Developed views for creating, editing, and listing careers.
- Implemented DataTables for career listing with action buttons.
- Added routes for career management and integrated with sidebar.
- Created client-side career detail template and updated career listing page.
- Added helper functions to fetch active careers for display.
2025-08-22 13:52:06 +05:45
a11de7be9e Merge branch 'alika' of http://bibgit.com/Subash/new_raffles 2025-08-22 12:22:54 +05:45
faa2e77a46 uni size 2025-08-22 12:25:20 +05:45
f55aeec8e8 flex footer 2025-08-22 11:53:59 +05:45
b24e6a9c66 Merge branch 'alika' of http://bibgit.com/Subash/new_raffles 2025-08-22 11:51:25 +05:45
5f8c1aed38 Merge branch 'main' of ssh://bibgit.com:22022/Bibhuti-Solutions/new_raffles into alika 2025-08-22 11:51:18 +05:45
4c272e0e67 fix: Correct data attributes for first and last name fields in franchise index 2025-08-22 11:48:23 +05:45
724f46a82c fixes 2025-08-22 11:45:38 +05:45
1a744e1e2f fix 2025-08-22 11:36:34 +05:45
0652a07452 feat: Add galleries data to page views and update templates for dynamic content 2025-08-22 11:35:47 +05:45
d966b75f56 fix: Update image asset paths and modify event loop to display previous events 2025-08-22 11:26:50 +05:45
bce7ec8d3a error fix 2025-08-22 11:17:01 +05:45
31bea937c4 feat: Add functions to retrieve previous and upcoming events; update events template to display dynamic event data 2025-08-22 11:15:13 +05:45
711ae9caf9 feat: Implement Event management features including CRUD operations and routing 2025-08-22 11:03:10 +05:45
ce09f98c55 feat: Add franchise and newsletter routes; update CSR template layout 2025-08-22 10:14:26 +05:45
d29b3ba489 Add Franchise and Newsletter management features
- Implemented FranchiseController with CRUD operations and data handling.
- Created NewsletterController for managing newsletter subscriptions.
- Added routes for Franchise and Newsletter resources in web.php.
- Developed views for Franchise and Newsletter management including index, create, edit, and datatable actions.
- Introduced form handling and validation for Franchise and Newsletter submissions.
- Created database migrations for franchises and newsletters tables.
- Updated sidebar configuration to include Franchise and Newsletter sections.
- Enhanced client-side forms with AJAX submission for Franchise and Newsletter.
2025-08-21 23:23:38 +05:45
7f9d6bc8ec Merge branch 'alika' of http://bibgit.com/Subash/new_raffles 2025-08-21 22:15:42 +05:45
7155c1a6fc fix: Update image sources to use dynamic asset paths and implement blog loop in CSR template 2025-08-21 18:08:59 +05:45
6e9b6291d3 changes 2025-08-21 18:04:02 +05:45
622b9e9445 fix: Update service icon background color to blue in header 2025-08-21 18:01:48 +05:45
3148715b73 terms and condition changes 2025-08-21 17:55:44 +05:45
6ff22bc02d gallary changes 2025-08-21 17:50:39 +05:45
badfdc4c70 change in event 2025-08-21 17:41:22 +05:45
3bfb3f2b20 event changes 2025-08-21 17:37:05 +05:45
a57e00191a fix: Update franchise template to use dynamic content for images and contact details 2025-08-21 17:25:31 +05:45
c77828de8c fix: Update slidesPerView setting for improved carousel responsiveness 2025-08-21 17:06:44 +05:45
50a2b09cfa fix: Increase slidesPerView setting for enhanced carousel display on larger screens 2025-08-21 17:04:48 +05:45
a504987ac1 fix: Update slidesPerView setting for improved carousel display on larger screens 2025-08-21 17:03:49 +05:45
e80c67c0e2 fix: Adjust slidesPerView setting for better responsiveness in carousel 2025-08-21 17:02:39 +05:45
64 changed files with 2760 additions and 961 deletions

View File

@@ -0,0 +1,137 @@
<?php
namespace Modules\CCMS\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
use Modules\CCMS\Models\Career;
use Yajra\DataTables\Facades\DataTables;
class CareerController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
if (request()->ajax()) {
$model = Career::query()->orderBy('order');
return DataTables::eloquent($model)
->addIndexColumn()
->setRowClass('tableRow')
->editColumn('status', function (Career $career) {
$status = $career->status ? 'Published' : 'Draft';
$color = $career->status ? 'text-success' : 'text-danger';
return "<p class='{$color}'>{$status}</p>";
})
->addColumn('action', 'ccms::career.datatable.action')
->rawColumns(['status', 'action'])
->toJson();
}
return view('ccms::career.index', [
'title' => 'Career List',
]);
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
$careerOptions = Career::where('status', 1)->pluck('job_title', 'id');
return view('ccms::career.create', [
'title' => 'Create Career',
'editable' => false,
'careerOptions' => $careerOptions
]);
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
$maxOrder = Career::max('order');
$order = $maxOrder ? ++$maxOrder : 1;
$request->mergeIfMissing([
'slug' => Str::slug($request->title),
// 'order' => $order,
]);
Career::create($request->all());
flash()->success("Career has been created!");
return redirect()->route('career.index');
}
/**
* Show the specified resource.
*/
public function show($id)
{
return view('ccms::show');
}
/**
* Show the form for editing the specified resource.
*/
public function edit($id)
{
$careerOptions = Career::where('status', 1)->pluck('job_title', 'id');
$career = Career::findOrFail($id);
return view('ccms::career.edit', [
'title' => 'Edit Career',
'editable' => true,
'career' => $career,
'careerOptions' => $careerOptions
]);
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, $id)
{
$request->merge([
'slug' => Str::slug($request->title),
]);
$validated = $request->validate([]);
$career = Career::findOrFail($id);
$career->update($request->all());
flash()->success("Career has been updated.");
return redirect()->back();
}
/**
* Remove the specified resource from storage.
*/
public function destroy($id)
{
$career = Career::findOrFail($id);
$career->delete();
return response()->json(['status' => 200, 'message' => "Career has been deleted."], 200);
}
public function reorder(Request $request)
{
$careers = Career::all();
foreach ($careers as $career) {
foreach ($request->order as $order) {
if ($order['id'] == $career->id) {
$career->update(['order' => $order['position']]);
}
}
}
return response(['status' => true, 'message' => 'Reordered successfully'], 200);
}
public function toggle($id)
{
$career = Career::findOrFail($id);
$career->update(['status' => !$career->status]);
return response(['status' => 200, 'message' => 'Toggled successfully'], 200);
}
}

View File

@@ -60,6 +60,7 @@ class EnquiryController extends Controller
$rules = [
'name' => 'required|string',
'email' => 'required|email',
'mobile' => 'required|string',
'digits:10',
'subject' => 'nullable',
'message' => 'nullable|max:250',

View File

@@ -0,0 +1,147 @@
<?php
namespace Modules\CCMS\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
use Modules\CCMS\Models\Event;
use Yajra\DataTables\Facades\DataTables;
class EventController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
if (request()->ajax()) {
$model = Event::query()->orderBy('order');
return DataTables::eloquent($model)
->addIndexColumn()
->setRowClass('tableRow')
->editColumn('image', function (Event $event) {
return $event->getRawOriginal('image') ? "<img src='{$event->image}' alt='{$event->title}' class='rounded avatar-sm material-shadow ms-2 img-thumbnail'>" : '-';
})
->editColumn('parent_id', function (Event $event) {
return $event->parent ? "<span class='badge bg-primary p-1'>{$event->parent?->title}</span>" : '-';
})
->editColumn('status', function (Event $event) {
$status = $event->status ? 'Published' : 'Draft';
$color = $event->status ? 'text-success' : 'text-danger';
return "<p class='{$color}'>{$status}</p>";
})
->addColumn('action', 'ccms::event.datatable.action')
->rawColumns(['parent_id', 'image', 'status', 'action'])
->toJson();
}
return view('ccms::event.index', [
'title' => 'Event List',
]);
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
$eventOptions = Event::where('status', 1)->pluck('title', 'id');
return view('ccms::event.create', [
'title' => 'Create Event',
'editable' => false,
'eventOptions' => $eventOptions
]);
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
$maxOrder = Event::max('order');
$order = $maxOrder ? ++$maxOrder : 1;
$request->mergeIfMissing([
'slug' => Str::slug($request->title),
'order' => $order,
]);
$validated = $request->validate([
'title' => 'required',
]);
Event::create($request->all());
flash()->success("Event has been created!");
return redirect()->route('event.index');
}
/**
* Show the specified resource.
*/
public function show($id)
{
return view('ccms::show');
}
/**
* Show the form for editing the specified resource.
*/
public function edit($id)
{
$eventOptions = Event::where('status', 1)->pluck('title', 'id');
$event = Event::findOrFail($id);
return view('ccms::event.edit', [
'title' => 'Edit Event',
'editable' => true,
'event' => $event,
'eventOptions' => $eventOptions
]);
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, $id)
{
$request->merge([
'slug' => Str::slug($request->title),
]);
$validated = $request->validate([]);
$event = Event::findOrFail($id);
$event->update($request->all());
flash()->success("Event has been updated.");
return redirect()->back();
}
/**
* Remove the specified resource from storage.
*/
public function destroy($id)
{
$event = Event::findOrFail($id);
$event->delete();
return response()->json(['status' => 200, 'message' => "Event has been deleted."], 200);
}
public function reorder(Request $request)
{
$events = Event::all();
foreach ($events as $event) {
foreach ($request->order as $order) {
if ($order['id'] == $event->id) {
$event->update(['order' => $order['position']]);
}
}
}
return response(['status' => true, 'message' => 'Reordered successfully'], 200);
}
public function toggle($id)
{
$event = Event::findOrFail($id);
$event->update(['status' => !$event->status]);
return response(['status' => 200, 'message' => 'Toggled successfully'], 200);
}
}

View File

@@ -0,0 +1,116 @@
<?php
namespace Modules\CCMS\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Rules\Recaptcha;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\Validator;
use Modules\CCMS\Models\Franchise;
use Yajra\DataTables\Facades\DataTables;
class FranchiseController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
if (request()->ajax()) {
$model = Franchise::query()->latest();
return DataTables::eloquent($model)
->addIndexColumn()
->addColumn('action', 'ccms::franchise.datatable.action')
->rawColumns(['action'])
->toJson();
}
return view('ccms::franchise.index', [
'title' => 'Franchise List',
]);
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
try {
$rules = [
'first_name' => 'required|string',
'email' => 'required|email',
];
if (setting('enable_reCaptcha') == 1) {
$rules['g-recaptcha-response'] = ['required', new Recaptcha];
}
$messages = [
'email.email' => 'Must be a valid email address.',
'g-recaptcha-response.required' => 'Please complete reCAPTCHA validation.',
'g-recaptcha-response' => 'Invalid reCAPTCHA.',
];
$validator = Validator::make($request->all(), $rules, $messages);
if ($validator->fails()) {
return response()->json(['errors' => $validator->errors()], 422);
}
Franchise::create($request->all());
return response()->json(['status' => 200, 'message' => "Thank you for reaching out! Your message has been received and we'll get back to you shortly."], 200);
} catch (\Exception $e) {
return response()->json(['status' => 500, 'message' => 'Internal server error', 'error' => $e->getMessage()], 500);
}
}
/**
* Show the specified resource.
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*/
public function destroy($id)
{
try {
$franchise = Franchise::whereId($id)->first();
if ($franchise) {
$franchise->delete();
}
return response()->json(['status' => 200, 'message' => 'Franchise has been deleted!'], 200);
} catch (\Throwable $th) {
return redirect()->back()->with('error', $th->getMessage());
}
}
}

View File

@@ -0,0 +1,115 @@
<?php
namespace Modules\CCMS\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Rules\Recaptcha;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\Validator;
use Modules\CCMS\Models\Newsletter;
use Yajra\DataTables\Facades\DataTables;
class NewsletterController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
if (request()->ajax()) {
$model = Newsletter::query()->latest();
return DataTables::eloquent($model)
->addIndexColumn()
->addColumn('action', 'ccms::newsletter.datatable.action')
->rawColumns(['action'])
->toJson();
}
return view('ccms::newsletter.index', [
'title' => 'Newsletter List',
]);
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
try {
$rules = [
'email' => 'required|email',
];
if (setting('enable_reCaptcha') == 1) {
$rules['g-recaptcha-response'] = ['required', new Recaptcha];
}
$messages = [
'email.email' => 'Must be a valid email address.',
'g-recaptcha-response.required' => 'Please complete reCAPTCHA validation.',
'g-recaptcha-response' => 'Invalid reCAPTCHA.',
];
$validator = Validator::make($request->all(), $rules, $messages);
if ($validator->fails()) {
return response()->json(['errors' => $validator->errors()], 422);
}
Newsletter::create($validator->validated());
return response()->json(['status' => 200, 'message' => "Thank you for reaching out! Your message has been received and we'll get back to you shortly."], 200);
} catch (\Exception $e) {
return response()->json(['status' => 500, 'message' => 'Internal server error', 'error' => $e->getMessage()], 500);
}
}
/**
* Show the specified resource.
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*/
public function destroy($id)
{
try {
$newsletter = Newsletter::whereId($id)->first();
if ($newsletter) {
$newsletter->delete();
}
return response()->json(['status' => 200, 'message' => 'Newsletter has been deleted!'], 200);
} catch (\Throwable $th) {
return redirect()->back()->with('error', $th->getMessage());
}
}
}

View File

@@ -0,0 +1,147 @@
<?php
namespace Modules\CCMS\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Rules\Recaptcha;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\Validator;
use Modules\CCMS\Models\Vacancy;
use Yajra\DataTables\Facades\DataTables;
class VacancyController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
if (request()->ajax()) {
$model = Vacancy::query()->latest();
return DataTables::eloquent($model)
->addIndexColumn()
// ->setRowClass(function (Vacancy $vacancy) {
// return $vacancy->is_read ? 'text-muted' : 'text-dark';
// })
// ->editColumn('class', function (Vacancy $vacancy) {
// return $vacancy->class ?? '-';
// })
// ->editColumn('subject', function (Vacancy $vacancy) {
// return $vacancy->subject ?? '-';
// })
// ->editColumn('message', function (Vacancy $vacancy) {
// return $vacancy->message ?? '-';
// })
->addColumn('action', 'ccms::vacancy.datatable.action')
->rawColumns(['action'])
->toJson();
}
return view('ccms::vacancy.index', [
'title' => 'Vacancy List',
]);
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
try {
// $rules = [
// ];
// if (setting('enable_reCaptcha') == 1) {
// $rules['g-recaptcha-response'] = ['required', new Recaptcha];
// }
// $messages = [
// 'email.email' => 'Must be a valid email address.',
// 'g-recaptcha-response.required' => 'Please complete reCAPTCHA validation.',
// 'g-recaptcha-response' => 'Invalid reCAPTCHA.',
// ];
// $validator = Validator::make($request->all());
// if ($validator->fails()) {
// return response()->json(['errors' => $validator->errors()], 422);
// }
$modelClass = "Modules\\CCMS\\Models\\Career";
$model = $modelClass::findOrFail($request->career_id);
foreach ($request->document as $file) {
$model->addToDocumentCollection(collectionName: 'uploads/document', file: $file, documentName: $request->first_name, referenceDocumentId: null);
}
Vacancy::create($request->all());
return response()->json(['status' => 200, 'message' => "Thank you for reaching out! Your message has been received and we'll get back to you shortly."], 200);
} catch (\Exception $e) {
return response()->json(['status' => 500, 'message' => 'Internal server error', 'error' => $e->getMessage()], 500);
}
}
/**
* Show the specified resource.
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*/
public function destroy($id)
{
try {
$vacancy = Vacancy::whereId($id)->first();
if ($vacancy) {
$vacancy->delete();
}
return response()->json(['status' => 200, 'message' => 'Vacancy has been deleted!'], 200);
} catch (\Throwable $th) {
return redirect()->back()->with('error', $th->getMessage());
}
}
public function markAsRead($id)
{
try {
$vacancy = Vacancy::whereId($id)->first();
if ($vacancy) {
$vacancy->update(['is_read' => 1]);
}
return response()->json(['status' => 200, 'message' => 'Vacancy has been marked as read!'], 200);
} catch (\Throwable $th) {
return redirect()->back()->with('error', $th->getMessage());
}
}
}

View File

@@ -0,0 +1,97 @@
<?php
namespace Modules\CCMS\Models;
use App\Traits\CreatedUpdatedBy;
use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Modules\CCMS\Traits\UpdateCustomFields;
use Modules\Document\Models\Document;
use App\Traits\AddToDocumentCollection;
class Career extends Model
{
use HasFactory, UpdateCustomFields, AddToDocumentCollection, CreatedUpdatedBy;
protected $fillable = [
'department',
'job_title',
'job_description',
'job_requirements',
'salary_range',
'location',
'position',
'start_date',
'end_date',
'status',
'createdby',
'updatedby',
'order',
];
protected function casts(): array
{
return [
'custom' => 'array',
];
}
protected function images(): Attribute
{
return Attribute::make(
get: function ($value) {
if (empty($value)) {
return [];
}
$parts = explode(',', $value);
return array_map(fn($part) => asset(trim($part)), $parts);
}
);
}
protected function image(): Attribute
{
return Attribute::make(
get: fn($value) => asset($value),
);
}
protected function banner(): Attribute
{
return Attribute::make(
get: fn($value) => asset($value),
);
}
protected function sidebarImage(): Attribute
{
return Attribute::make(
get: fn($value) => asset($value),
);
}
protected function iconImage(): Attribute
{
return Attribute::make(
get: fn($value) => asset($value),
);
}
public function children()
{
return $this->hasMany(Career::class, 'parent_id');
}
public function parent()
{
return $this->belongsTo(Career::class, 'parent_id');
}
public function documents()
{
return $this->morphMany(Document::class, 'documentable');
}
}

View File

@@ -0,0 +1,113 @@
<?php
namespace Modules\CCMS\Models;
use App\Traits\CreatedUpdatedBy;
use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Modules\CCMS\Traits\UpdateCustomFields;
use Modules\Document\Models\Document;
use App\Traits\AddToDocumentCollection;
class Event extends Model
{
use HasFactory, UpdateCustomFields, AddToDocumentCollection, CreatedUpdatedBy;
/**
* The attributes that are mass assignable.
*/
protected $fillable = [
'title',
'slug',
'short_description',
'description',
'parent_id',
'icon_class',
'icon_image',
'image',
'images',
'start_date',
'end_date',
'custom',
'banner',
'meta_title',
'meta_description',
'meta_keywords',
'sidebar_title',
'sidebar_content',
'sidebar_image',
'button_text',
'button_url',
'button_target',
'status',
'createdby',
'updatedby',
'order',
];
protected function casts(): array
{
return [
'custom' => 'array',
];
}
protected function images(): Attribute
{
return Attribute::make(
get: function ($value) {
if (empty($value)) {
return [];
}
$parts = explode(',', $value);
return array_map(fn($part) => asset(trim($part)), $parts);
}
);
}
protected function image(): Attribute
{
return Attribute::make(
get: fn($value) => asset($value),
);
}
protected function banner(): Attribute
{
return Attribute::make(
get: fn($value) => asset($value),
);
}
protected function sidebarImage(): Attribute
{
return Attribute::make(
get: fn($value) => asset($value),
);
}
protected function iconImage(): Attribute
{
return Attribute::make(
get: fn($value) => asset($value),
);
}
public function children()
{
return $this->hasMany(Event::class, 'parent_id');
}
public function parent()
{
return $this->belongsTo(Event::class, 'parent_id');
}
public function documents()
{
return $this->morphMany(Document::class, 'documentable');
}
}

View File

@@ -0,0 +1,37 @@
<?php
namespace Modules\CCMS\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
// use Modules\CCMS\Database\Factories\FranchiseFactory;
class Franchise extends Model
{
use HasFactory;
/**
* The attributes that are mass assignable.
*/
protected $fillable = [
'first_name',
'last_name',
'email',
'phone',
'address',
'city',
'state',
'invest_level',
'own_business',
'yes_own_des',
'franchise_location',
'start_time_frame',
'office_setup',
'website'
];
// protected static function newFactory(): FranchiseFactory
// {
// // return FranchiseFactory::new();
// }
}

View File

@@ -0,0 +1,19 @@
<?php
namespace Modules\CCMS\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
// use Modules\CCMS\Database\Factories\NewsletterFactory;
class Newsletter extends Model
{
use HasFactory;
/**
* The attributes that are mass assignable.
*/
protected $fillable = ['email'];
}

View File

@@ -0,0 +1,21 @@
<?php
namespace Modules\CCMS\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
// use Modules\CCMS\Database\Factories\VacancyFactory;
class vacancy extends Model
{
use HasFactory;
protected $fillable = [
'first_name',
'last_name',
'email',
'phone',
'qualification',
'description',
];
}

View File

@@ -0,0 +1,28 @@
<?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('newsletters', function (Blueprint $table) {
$table->id();
$table->string('email')->unique();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('newsletters');
}
};

View File

@@ -0,0 +1,40 @@
<?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('franchises', function (Blueprint $table) {
$table->id();
$table->string('first_name')->nullable();
$table->string('last_name')->nullable();
$table->string('email')->nullable();
$table->string('phone')->nullable();
$table->string('address')->nullable();
$table->string('city')->nullable();
$table->string('state')->nullable();
$table->string('invest_level')->nullable();
$table->string('own_business')->nullable();
$table->text('yes_own_des')->nullable();
$table->string('franchise_location')->nullable();
$table->string('start_time_frame')->nullable();
$table->string('office_setup')->nullable();
$table->string('website')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('franchises');
}
};

View File

@@ -0,0 +1,58 @@
<?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('events', function (Blueprint $table) {
$table->id();
$table->text('title');
$table->text('slug')->nullable();
$table->text('short_description')->nullable();
$table->longText('description')->nullable();
$table->json('custom')->nullable();
$table->integer('parent_id')->unsigned()->nullable();
$table->string('image')->nullable();
$table->string('banner')->nullable();
$table->text('images')->nullable();
$table->date('start_date')->nullable();
$table->date('end_date')->nullable();
$table->text('meta_title')->nullable();
$table->text('meta_description')->nullable();
$table->text('meta_keywords')->nullable();
$table->text('sidebar_title')->nullable();
$table->mediumText('sidebar_content')->nullable();
$table->string('sidebar_image')->nullable();
$table->string('button_text')->nullable();
$table->string('button_url')->nullable();
$table->string('button_target')->nullable();
$table->integer('status')->default(1);
$table->string('icon_class')->nullable();
$table->string('icon_image')->nullable();
$table->integer('createdby')->unsigned()->nullable();
$table->integer('updatedby')->unsigned()->nullable();
$table->integer('order')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('events');
}
};

View File

@@ -0,0 +1,40 @@
<?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('careers', function (Blueprint $table) {
$table->id();
$table->string('department')->nullable();
$table->string('job_title')->nullable();
$table->text('job_description')->nullable();
$table->text('job_requirements')->nullable();
$table->string('salary_range')->nullable();
$table->string('location')->nullable();
$table->string('position')->nullable();
$table->date('start_date')->nullable();
$table->date('end_date')->nullable();
$table->integer('status')->default(1);
$table->integer('createdby')->unsigned()->nullable();
$table->integer('updatedby')->unsigned()->nullable();
$table->integer('order')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('careers');
}
};

View File

@@ -0,0 +1,33 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('vacancies', function (Blueprint $table) {
$table->id();
$table->string('first_name')->nullable();
$table->string('last_name')->nullable();
$table->string('email')->nullable();
$table->string('phone')->nullable();
$table->string('qualification')->nullable();
$table->text('description')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('vacancies');
}
};

View File

@@ -0,0 +1,16 @@
@extends('layouts.app')
@section('content')
<x-dashboard.breadcumb :title="$title" />
<div class="container-fluid">
@if ($errors->any())
<x-flash-message type="danger" :messages="$errors->all()" />
@endif
<div class="row">
<div class="col-xl-12">
{{ html()->form('POST')->route('career.store')->class('needs-validation')->attributes(['novalidate'])->open() }}
@include('ccms::career.partials._form')
{{ html()->form()->close() }}
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,12 @@
<div class="hstack flex-wrap gap-3">
<a href="{{ route('career.edit', $id) }}" data-bs-toggle="tooltip"
data-bs-placement="bottom" data-bs-title="Edit" class="link-success fs-15 edit-item-btn"><i
class=" ri-edit-2-line"></i></a>
<a data-link="{{ route('career.toggle', $id) }}" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-title="Toggle" data-status="{{ $status == 1 ? 'Draft' : 'Published' }}"
class="link-info fs-15 toggle-item"><i class="{{ $status == 1 ? 'ri-toggle-line' : 'ri-toggle-fill' }}"></i></a>
<a href="javascript:void(0);" data-link="{{ route('career.destroy', $id) }}" class="link-danger fs-15 remove-item"
data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-title="Delete"><i class="ri-delete-bin-6-line"></i>
</a>
</div>

View File

@@ -0,0 +1,16 @@
@extends('layouts.app')
@section('content')
<x-dashboard.breadcumb :title="$title" />
<div class="container-fluid">
@if ($errors->any())
<x-flash-message type="danger" :messages="$errors->all()" />
@endif
<div class="row">
<div class="col-xl-12">
{{ html()->modelForm($career, 'PUT')->route('career.update', $career->id)->class('needs-validation')->attributes(['novalidate'])->open() }}
@include('ccms::career.partials._form')
{{ html()->closeModelForm() }}
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,51 @@
@extends('layouts.app')
@section('content')
<div class="container-fluid">
<x-dashboard.breadcumb :title="$title" />
@if ($errors->any())
<x-flash-message type="danger" :messages="$errors->all()" />
@endif
<div class="row">
<div class="col-xl-12">
<div class="card">
<div class="card-header d-flex align-items-center justify-content-between">
<h5 class="card-title mb-0">{{ $title }}</h5>
<a href="{{ route('career.create') }}" class="btn btn-primary waves-effect waves-light text-white"><i
class="ri-add-line align-middle"></i> Create</a>
</div>
<div class="card-body">
@php
$columns = [
[
'title' => 'S.N',
'data' => 'DT_RowIndex',
'name' => 'DT_RowIndex',
'orderable' => false,
'searchable' => false,
'sortable' => false,
],
['title' => 'Job Title', 'data' => 'job_title', 'name' => 'job_title'],
['title' => 'Start Date', 'data' => 'start_date', 'name' => 'start_date'],
['title' => 'End Date', 'data' => 'end_date', 'name' => 'end_date'],
['title' => 'Department', 'data' => 'department', 'name' => 'department'],
['title' => 'Location', 'data' => 'location', 'name' => 'location'],
['title' => 'Position', 'data' => 'position', 'name' => 'position'],
['title' => 'Salary', 'data' => 'salary_range', 'name' => 'salary_range'],
['title' => 'Status', 'data' => 'status', 'name' => 'status'],
[
'title' => 'Action',
'data' => 'action',
'orderable' => false,
'searchable' => false,
],
];
@endphp
<x-data-table-script :route="route('career.index')" :reorder="route('career.reorder')" :columns="$columns" />
</div>
</div>
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,220 @@
<div class="row">
<div class="col-xl-8">
<div class="card h-auto">
<div class="card-body">
<div class="row gy-3">
<div class="col-md-6">
{{ html()->label('Job Title')->class('form-label')->for('job_title') }}
{{ html()->span('*')->class('text-danger') }}
{{ html()->text('job_title')->class('form-control')->placeholder('Enter Job Title')->required(true) }}
</div>
<div class="col-md-6">
{{ html()->label('Department')->class('form-label')->for('department') }}
{{ html()->span('*')->class('text-danger') }}
{{ html()->text('department')->class('form-control')->placeholder('Enter Department')->required(true) }}
</div>
<div class="col-md-6">
{{ html()->label('Vacancy Start Date')->class('form-label') }}
<div class="input-group">
{{ html()->text('start_date')->class('form-control')->id('career-start-date')->placeholder('Vacancy Start Date')->attributes([
'data-provider' => 'flatpickr',
'data-date-format' => 'Y-m-d',
'data-enable-time' => '',
])->required() }}
<span class="input-group-text"><i class="ri-calendar-career-line"></i></span>
</div>
</div>
<div class="col-md-6">
{{ html()->label('Vacancy End Date')->class('form-label') }}
<div class="input-group">
{{ html()->text('end_date')->class('form-control')->id('career-end-date')->placeholder('Vacancy End Date')->attributes([
'data-provider' => 'flatpickr',
'data-date-format' => 'Y-m-d',
'data-enable-time' => '',
]) }}
<span class="input-group-text"><i class="ri-calendar-career-line"></i></span>
</div>
</div>
<div class="col-md-6">
{{ html()->label('Salary Range')->class('form-label')->for('salary_range') }}
{{ html()->span('*')->class('text-danger') }}
{{ html()->text('salary_range')->class('form-control')->placeholder('Enter Salary Range')->required(true) }}
</div>
<div class="col-md-6">
{{ html()->label('Location')->class('form-label')->for('location') }}
{{ html()->span('*')->class('text-danger') }}
{{ html()->text('location')->class('form-control')->placeholder('Enter location')->required(true) }}
</div>
<div class="col-12">
{{ html()->label('Position')->class('form-label')->for('position') }}
{{ html()->span('*')->class('text-danger') }}
{{ html()->text('position')->class('form-control')->placeholder('Enter Position (e.g. Fresher, Intermidiate, Senior)')->required(true) }}
</div>
<div class="col-12">
{{ html()->label('Job Description')->class('form-label')->for('job_description') }}
{{ html()->textarea('job_description')->class('form-control')->placeholder('Enter Job Description (JD)')->rows(5) }}
</div>
<div class="col-12">
{{ html()->label('Job Requirements')->class('form-label')->for('job_requirements') }}
{{ html()->textarea('job_requirements')->class('form-control ckeditor-classic')->placeholder('Enter Job Requirements') }}
</div>
</div>
</div>
</div>
{{-- <x-ccms::custom-form-field :data="$career->custom ?? []" /> --}}
<div class="card meta-section">
<div class="card-header">
<h6 class="card-title mb-0 fs-14">Meta</h6>
</div>
<div class="card-body">
<div class="row">
<div class="col-xl-12 col-sm-12">
{{ html()->label('Meta Title')->class('form-label')->for('meta_title') }}
{{ html()->text('meta_title')->class('form-control mb-3')->placeholder('Meta Title') }}
</div>
<div class="col-xl-12 col-sm-12">
{{ html()->label('Meta Keywords')->class('form-label')->for('meta_keywords') }}
{{ html()->textarea('meta_keywords')->class('form-control mb-3')->placeholder('Meta Keywords') }}
</div>
<div class="col-xl-12 col-sm-12">
{{ html()->label('Meta Description')->class('form-label')->for('meta_description') }}
{{ html()->textarea('meta_description')->class('form-control mb-3')->placeholder('Meta wire:Description')->rows(3) }}
</div>
</div>
</div>
</div>
</div>
<div class="col-xl-4">
<div class="card">
<div class="card-header">
<h6 class="card-title mb-0 fs-14">
Published
</h6>
</div>
<div class="card-body">
{{ html()->label('Status')->class('form-label visually-hidden')->for('status') }}
{{ html()->select('status', config('constants.page_status_options'))->class('form-select choices-select') }}
</div>
<x-form-buttons :href="route('career.index')" :label="isset($career) ? 'Update' : 'Create'" />
</div>
<div class="card">
<div class="card-header">
<h6 class="card-title mb-0 fs-14">
Page Attributes
</h6>
</div>
<div class="card-body">
{{ html()->label('Parent Event')->class('form-label')->for('parent_id') }}
{{ html()->select('parent_id', $careerOptions ?? [])->value($career->parent_id ?? old('parent_id'))->class('form-select choices-select')->placeholder('Select') }}
</div>
</div>
<div class="card media-gallery-section">
<div class="card-header">
<h6 class="card-title mb-0 fs-14">
Icon
</h6>
</div>
<div class="card-body">
<div class="mb-3">
{{ html()->label('Icon')->class('form-label')->for('icon_class') }}
{{ html()->text('icon_class')->class('form-control')->placeholder('Icon class') }}
</div>
{{ html()->label('Icon Image')->class('form-label')->for('icon_image') }}
<x-image-input :data="$editable ? $career->getRawOriginal('icon_image') : null" id="icon_image" name="icon_image" :editable="$editable" :multiple=false />
</div>
</div>
<div class="card featured-image-section">
<div class="card-header">
<h6 class="card-title mb-0 fs-14">
Featured Image
</h6>
</div>
<div class="card-body">
<div class="mb-3">
{{ html()->label('Featured')->class('form-label')->for('image') }}
<x-image-input :data="$editable ? $career->getRawOriginal('image') : null" id="image" name="image" :editable="$editable" :multiple=false />
</div>
{{ html()->label('Banner')->class('form-label')->for('banner') }}
<x-image-input :data="$editable ? $career->getRawOriginal('banner') : null" id="banner" name="banner" :editable="$editable" :multiple=false />
</div>
</div>
<div class="card media-gallery-section">
<div class="card-header">
<h6 class="card-title mb-0 fs-14">
Media Gallery
</h6>
</div>
<div class="card-body">
<x-image-input :editable="$editable" id="images" name="images" :data="$editable ? $career->getRawOriginal('images') : null" :multiple="true"
label="Select Images" />
</div>
</div>
<div class="card sidebar-section">
<div class="card-header d-flex jusitfy-content-between align-items-center">
<h6 class="card-title mb-0 fs-14">Sidebar</h6>
</div>
<div class="card-body">
<div class="row gy-3">
<div class="col-lg-12">
{{ html()->label('Title')->class('form-label')->for('sidebar_title') }}
{{ html()->text('sidebar_title')->class('form-control') }}
</div>
<div class="col-lg-12">
{{ html()->label('Content')->class('form-label')->for('sidebar_content') }}
{{ html()->textarea('sidebar_content')->class('form-control')->placeholder('Short Content (optional)')->rows(3) }}
</div>
<div class="col-lg-12">
{{ html()->label('Image')->class('form-label')->for('sidebar_content') }}
<x-image-input :data="$editable ? $career->getRawOriginal('sidebar_image') : null" id="sidebar_image" name="sidebar_image" :editable="$editable"
:multiple=false />
</div>
</div>
</div>
</div>
<div class="card button-section">
<div class="card-header d-flex jusitfy-content-between align-items-center">
<h6 class="card-title mb-0 fs-14">Button</h6>
</div>
<div class="card-body">
<div class="row gy-3">
<div class="col-lg-12">
{{ html()->label('Text')->class('form-label')->for('button_text') }}
{{ html()->text('button_text')->class('form-control') }}
</div>
<div class="col-lg-12">
{{ html()->label('Link')->class('form-label')->for('button_url') }}
{{ html()->text('button_url')->class('form-control')->placeholder('Button Link') }}
</div>
<div class="col-lg-12">
{{ html()->label('Target')->class('form-label')->for('button_target') }}
{{ html()->select('button_target', config('constants.redirect_options'))->class('form-select choices-select') }}
</div>
</div>
</div>
</div>
</div>
</div>

View File

@@ -19,7 +19,7 @@
],
['title' => 'Name', 'data' => 'name', 'name' => 'name'],
['title' => 'Email', 'data' => 'email', 'name' => 'email'],
['title' => 'Contact', 'data' => 'mobile', 'name' => 'mobile'],
['title' => 'Mobile', 'data' => 'mobile', 'name' => 'mobile'],
['title' => 'Class', 'data' => 'class', 'name' => 'class'],
['title' => 'Subject', 'data' => 'subject', 'name' => 'subject'],
['title' => 'Message', 'data' => 'message', 'name' => 'message'],

View File

@@ -0,0 +1,16 @@
@extends('layouts.app')
@section('content')
<x-dashboard.breadcumb :title="$title" />
<div class="container-fluid">
@if ($errors->any())
<x-flash-message type="danger" :messages="$errors->all()" />
@endif
<div class="row">
<div class="col-xl-12">
{{ html()->form('POST')->route('event.store')->class('needs-validation')->attributes(['novalidate'])->open() }}
@include('ccms::event.partials._form')
{{ html()->form()->close() }}
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,12 @@
<div class="hstack flex-wrap gap-3">
<a href="{{ route('event.edit', $id) }}" data-bs-toggle="tooltip"
data-bs-placement="bottom" data-bs-title="Edit" class="link-success fs-15 edit-item-btn"><i
class=" ri-edit-2-line"></i></a>
<a data-link="{{ route('event.toggle', $id) }}" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-title="Toggle" data-status="{{ $status == 1 ? 'Draft' : 'Published' }}"
class="link-info fs-15 toggle-item"><i class="{{ $status == 1 ? 'ri-toggle-line' : 'ri-toggle-fill' }}"></i></a>
<a href="javascript:void(0);" data-link="{{ route('event.destroy', $id) }}" class="link-danger fs-15 remove-item"
data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-title="Delete"><i class="ri-delete-bin-6-line"></i>
</a>
</div>

View File

@@ -0,0 +1,16 @@
@extends('layouts.app')
@section('content')
<x-dashboard.breadcumb :title="$title" />
<div class="container-fluid">
@if ($errors->any())
<x-flash-message type="danger" :messages="$errors->all()" />
@endif
<div class="row">
<div class="col-xl-12">
{{ html()->modelForm($event, 'PUT')->route('event.update', $event->id)->class('needs-validation')->attributes(['novalidate'])->open() }}
@include('ccms::event.partials._form')
{{ html()->closeModelForm() }}
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,49 @@
@extends('layouts.app')
@section('content')
<div class="container-fluid">
<x-dashboard.breadcumb :title="$title" />
@if ($errors->any())
<x-flash-message type="danger" :messages="$errors->all()" />
@endif
<div class="row">
<div class="col-xl-12">
<div class="card">
<div class="card-header d-flex align-items-center justify-content-between">
<h5 class="card-title mb-0">{{ $title }}</h5>
<a href="{{ route('event.create') }}" class="btn btn-primary waves-effect waves-light text-white"><i
class="ri-add-line align-middle"></i> Create</a>
</div>
<div class="card-body">
@php
$columns = [
[
'title' => 'S.N',
'data' => 'DT_RowIndex',
'name' => 'DT_RowIndex',
'orderable' => false,
'searchable' => false,
'sortable' => false,
],
['title' => 'Image', 'data' => 'image', 'name' => 'image'],
['title' => 'Title', 'data' => 'title', 'name' => 'title'],
['title' => 'Start Date', 'data' => 'start_date', 'name' => 'start_date'],
['title' => 'End Date', 'data' => 'end_date', 'name' => 'end_date'],
['title' => 'Slug', 'data' => 'slug', 'name' => 'slug'],
['title' => 'Status', 'data' => 'status', 'name' => 'status'],
[
'title' => 'Action',
'data' => 'action',
'orderable' => false,
'searchable' => false,
],
];
@endphp
<x-data-table-script :route="route('event.index')" :reorder="route('event.reorder')" :columns="$columns" />
</div>
</div>
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,196 @@
<div class="row">
<div class="col-xl-8">
<div class="card h-auto">
<div class="card-body">
<div class="row gy-3">
<div class="col-12">
{{ html()->label('Title')->class('form-label')->for('title') }}
{{ html()->span('*')->class('text-danger') }}
{{ html()->text('title')->class('form-control')->placeholder('Enter Event Title')->required(true) }}
</div>
<div class="col-md-6">
{{ html()->label('Start Date')->class('form-label') }}
<div class="input-group">
{{ html()->text('start_date')->class('form-control')->id('event-start-date')->placeholder('Event Start Date')->attributes([
'data-provider' => 'flatpickr',
'data-date-format' => 'Y-m-d',
'data-enable-time' => '',
])->required() }}
<span class="input-group-text"><i class="ri-calendar-event-line"></i></span>
</div>
</div>
<div class="col-md-6">
{{ html()->label('End Date')->class('form-label') }}
<div class="input-group">
{{ html()->text('end_date')->class('form-control')->id('event-end-date')->placeholder('Event End Date')->attributes([
'data-provider' => 'flatpickr',
'data-date-format' => 'Y-m-d',
'data-enable-time' => '',
]) }}
<span class="input-group-text"><i class="ri-calendar-event-line"></i></span>
</div>
</div>
<div class="col-12">
{{ html()->label('Description (Short)')->class('form-label')->for('short_description') }}
{{ html()->textarea('short_description')->class('form-control')->placeholder('Enter Description (Short)')->rows(5) }}
</div>
<div class="col-12">
{{ html()->label('Description')->class('form-label')->for('description') }}
{{ html()->textarea('description')->class('form-control ckeditor-classic')->placeholder('Enter Description') }}
</div>
</div>
</div>
</div>
<x-ccms::custom-form-field :data="$event->custom ?? []" />
<div class="card meta-section">
<div class="card-header">
<h6 class="card-title mb-0 fs-14">Meta</h6>
</div>
<div class="card-body">
<div class="row">
<div class="col-xl-12 col-sm-12">
{{ html()->label('Meta Title')->class('form-label')->for('meta_title') }}
{{ html()->text('meta_title')->class('form-control mb-3')->placeholder('Meta Title') }}
</div>
<div class="col-xl-12 col-sm-12">
{{ html()->label('Meta Keywords')->class('form-label')->for('meta_keywords') }}
{{ html()->textarea('meta_keywords')->class('form-control mb-3')->placeholder('Meta Keywords') }}
</div>
<div class="col-xl-12 col-sm-12">
{{ html()->label('Meta Description')->class('form-label')->for('meta_description') }}
{{ html()->textarea('meta_description')->class('form-control mb-3')->placeholder('Meta wire:Description')->rows(3) }}
</div>
</div>
</div>
</div>
</div>
<div class="col-xl-4">
<div class="card">
<div class="card-header">
<h6 class="card-title mb-0 fs-14">
Published
</h6>
</div>
<div class="card-body">
{{ html()->label('Status')->class('form-label visually-hidden')->for('status') }}
{{ html()->select('status', config('constants.page_status_options'))->class('form-select choices-select') }}
</div>
<x-form-buttons :href="route('event.index')" :label="isset($event) ? 'Update' : 'Create'" />
</div>
<div class="card">
<div class="card-header">
<h6 class="card-title mb-0 fs-14">
Page Attributes
</h6>
</div>
<div class="card-body">
{{ html()->label('Parent Event')->class('form-label')->for('parent_id') }}
{{ html()->select('parent_id', $eventOptions ?? [])->value($event->parent_id ?? old('parent_id'))->class('form-select choices-select')->placeholder('Select') }}
</div>
</div>
<div class="card media-gallery-section">
<div class="card-header">
<h6 class="card-title mb-0 fs-14">
Icon
</h6>
</div>
<div class="card-body">
<div class="mb-3">
{{ html()->label('Icon')->class('form-label')->for('icon_class') }}
{{ html()->text('icon_class')->class('form-control')->placeholder('Icon class') }}
</div>
{{ html()->label('Icon Image')->class('form-label')->for('icon_image') }}
<x-image-input :data="$editable ? $event->getRawOriginal('icon_image') : null" id="icon_image" name="icon_image" :editable="$editable" :multiple=false />
</div>
</div>
<div class="card featured-image-section">
<div class="card-header">
<h6 class="card-title mb-0 fs-14">
Featured Image
</h6>
</div>
<div class="card-body">
<div class="mb-3">
{{ html()->label('Featured')->class('form-label')->for('image') }}
<x-image-input :data="$editable ? $event->getRawOriginal('image') : null" id="image" name="image" :editable="$editable" :multiple=false />
</div>
{{ html()->label('Banner')->class('form-label')->for('banner') }}
<x-image-input :data="$editable ? $event->getRawOriginal('banner') : null" id="banner" name="banner" :editable="$editable" :multiple=false />
</div>
</div>
<div class="card media-gallery-section">
<div class="card-header">
<h6 class="card-title mb-0 fs-14">
Media Gallery
</h6>
</div>
<div class="card-body">
<x-image-input :editable="$editable" id="images" name="images" :data="$editable ? $event->getRawOriginal('images') : null" :multiple="true"
label="Select Images" />
</div>
</div>
<div class="card sidebar-section">
<div class="card-header d-flex jusitfy-content-between align-items-center">
<h6 class="card-title mb-0 fs-14">Sidebar</h6>
</div>
<div class="card-body">
<div class="row gy-3">
<div class="col-lg-12">
{{ html()->label('Title')->class('form-label')->for('sidebar_title') }}
{{ html()->text('sidebar_title')->class('form-control') }}
</div>
<div class="col-lg-12">
{{ html()->label('Content')->class('form-label')->for('sidebar_content') }}
{{ html()->textarea('sidebar_content')->class('form-control')->placeholder('Short Content (optional)')->rows(3) }}
</div>
<div class="col-lg-12">
{{ html()->label('Image')->class('form-label')->for('sidebar_content') }}
<x-image-input :data="$editable ? $event->getRawOriginal('sidebar_image') : null" id="sidebar_image" name="sidebar_image" :editable="$editable"
:multiple=false />
</div>
</div>
</div>
</div>
<div class="card button-section">
<div class="card-header d-flex jusitfy-content-between align-items-center">
<h6 class="card-title mb-0 fs-14">Button</h6>
</div>
<div class="card-body">
<div class="row gy-3">
<div class="col-lg-12">
{{ html()->label('Text')->class('form-label')->for('button_text') }}
{{ html()->text('button_text')->class('form-control') }}
</div>
<div class="col-lg-12">
{{ html()->label('Link')->class('form-label')->for('button_url') }}
{{ html()->text('button_url')->class('form-control')->placeholder('Button Link') }}
</div>
<div class="col-lg-12">
{{ html()->label('Target')->class('form-label')->for('button_target') }}
{{ html()->select('button_target', config('constants.redirect_options'))->class('form-select choices-select') }}
</div>
</div>
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,14 @@
@extends('layouts.app')
@section('content')
<div class="container-fluid">
<x-dashboard.breadcumb :title="$title" />
{{ html()->form('POST')->route('testimonial.store')->class(['needs-validation'])->attributes(['enctype' => 'multipart/form-data', 'novalidate'])->open() }}
@include('ccms::testimonial.partials._form')
{{ html()->form()->close() }}
</div>
@endsection

View File

@@ -0,0 +1,10 @@
<div class="hstack flex-wrap gap-3">
{{-- <a data-link="{{ route('franchise.markAsRead', $id) }}" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-title="Mark as {{ $is_read == 1 ? 'unread' : 'read' }}" data-status="{{ $is_read == 1 ? 'read' : 'unread' }}" --}}
{{-- class="fs-15 mark-item"><i class="{{ $is_read == 1 ? ' ri-mail-close-line link-secondary' : ' ri-mail-check-line link-success' }}"></i></a> --}}
<a href="javascript:void(0);" data-link="{{ route('franchise.destroy', $id) }}" class="link-danger fs-15 remove-item" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-title="Delete">
<i class="ri-delete-bin-6-line"></i>
</a>
</div>

View File

@@ -0,0 +1,14 @@
@extends('layouts.app')
@section('content')
<div class="container-fluid">
<x-dashboard.breadcumb :title="$title" />
{{ html()->modelForm($testimonial, 'PUT')->route('testimonial.update', $testimonial->id)->class(['needs-validation'])->attributes(['novalidate'])->open() }}
@include('ccms::testimonial.partials._form')
{{ html()->form()->close() }}
</div>
@endsection

View File

@@ -0,0 +1,45 @@
@extends('layouts.app')
@section('content')
<div class="container-fluid">
<x-dashboard.breadcumb :title="$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>
<div class="card-body">
@php
$columns = [
[
'title' => 'S.N',
'data' => 'DT_RowIndex',
'name' => 'DT_RowIndex',
'orderable' => false,
'searchable' => false,
'sortable' => false,
],
['title' => 'First Name', 'data' => 'first_name', 'name' => 'first_name'],
['title' => 'Last Name', 'data' => 'last_name', 'name' => 'first_name'],
['title' => 'Email', 'data' => 'email', 'name' => 'email'],
['title' => 'Phone', 'data' => 'phone', 'name' => 'phone'],
['title' => 'Address', 'data' => 'address', 'name' => 'address'],
['title' => 'City', 'data' => 'city', 'name' => 'city'],
['title' => 'State', 'data' => 'state', 'name' => 'state'],
['title' => 'Invest Level', 'data' => 'invest_level', 'name' => 'invest_level'],
[
'title' => 'Franchise Location',
'data' => 'franchise_location',
'name' => 'franchise_location',
],
[
'title' => 'Action',
'data' => 'action',
'orderable' => false,
'searchable' => false,
],
];
@endphp
<x-data-table-script :route="route('franchise.index')" :reorder="null" :columns="$columns" />
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,71 @@
<div class="row">
<div class="col-lg-8 col-xl-9">
<div class="card">
<div class="card-body">
<div class="row gy-3">
<div class="col-md-6">
{{ html()->label('Name')->class('form-label') }}
{{ html()->span('*')->class('text-danger') }}
{{ html()->text('title')->class('form-control')->placeholder('Enter Name')->required() }}
{{ html()->div('Name is required')->class('invalid-feedback') }}
</div>
<div class="col-md-6">
{{ html()->label('Designation')->class('form-label') }}
{{ html()->text('designation')->class('form-control')->placeholder('Enter Designation') }}
</div>
<div class="col-md-6">
{{ html()->label('Company')->class('form-label') }}
{{ html()->text('company')->class('form-control')->placeholder('Enter Company') }}
</div>
<div class="col-lg-6">
{{ html()->label('Branch')->class('form-label')->for('branch_id') }}
{{ html()->select('branch_id', $branchOptions)->class('form-select choices-select')->placeholder('Select') }}
</div>
<div class="col-12">
{{ html()->label('Comment')->class('form-label')->for('description') }}
{{ html()->span('*')->class('text-danger') }}
{{ html()->textarea('description')->class('form-control')->rows(10) }}
</div>
</div>
</div>
</div>
</div>
<!-- end col -->
<div class="col-lg-4 col-xl-3">
<div class="card">
<div class="card-header">
<h5 class="card-title mb-0">Publish</h5>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-12">
{{ html()->select('status', config('constants.page_status_options'))->class('form-select choices-select ') }}
</div>
</div>
</div>
<!-- end card body -->
<x-form-buttons :editable="$editable" label="Save" href="{{ route('team.index') }}" />
</div>
<div class="card featured-image-section">
<div class="card-header">
<h6 class="card-title mb-0 fs-14">
Featured
</h6>
</div>
<div class="card-body">
<div class="mb-3">
{{ html()->label('Image')->class('form-label')->for('image') }}
<x-image-input :editable="$editable" id="image" name="image" :data="$editable ? $testimonial->getRawOriginal('image') : null"
:multiple="false" />
</div>
</div>
</div>
</div>
<!-- end col -->
</div>

View File

@@ -0,0 +1,14 @@
@extends('layouts.app')
@section('content')
<div class="container-fluid">
<x-dashboard.breadcumb :title="$title" />
{{ html()->form('POST')->route('testimonial.store')->class(['needs-validation'])->attributes(['enctype' => 'multipart/form-data', 'novalidate'])->open() }}
@include('ccms::testimonial.partials._form')
{{ html()->form()->close() }}
</div>
@endsection

View File

@@ -0,0 +1,8 @@
<div class="hstack flex-wrap gap-3">
<a href="javascript:void(0);" data-link="{{ route('newsletter.destroy', $id) }}" class="link-danger fs-15 remove-item"
data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-title="Delete">
<i class="ri-delete-bin-6-line"></i>
</a>
</div>

View File

@@ -0,0 +1,14 @@
@extends('layouts.app')
@section('content')
<div class="container-fluid">
<x-dashboard.breadcumb :title="$title" />
{{ html()->modelForm($testimonial, 'PUT')->route('testimonial.update', $testimonial->id)->class(['needs-validation'])->attributes(['novalidate'])->open() }}
@include('ccms::testimonial.partials._form')
{{ html()->form()->close() }}
</div>
@endsection

View File

@@ -0,0 +1,33 @@
@extends('layouts.app')
@section('content')
<div class="container-fluid">
<x-dashboard.breadcumb :title="$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>
<div class="card-body">
@php
$columns = [
[
'title' => 'S.N',
'data' => 'DT_RowIndex',
'name' => 'DT_RowIndex',
'orderable' => false,
'searchable' => false,
'sortable' => false,
],
['title' => 'Email', 'data' => 'email', 'name' => 'email'],
[
'title' => 'Action',
'data' => 'action',
'orderable' => false,
'searchable' => false,
],
];
@endphp
<x-data-table-script :route="route('newsletter.index')" :reorder="null" :columns="$columns" />
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,71 @@
<div class="row">
<div class="col-lg-8 col-xl-9">
<div class="card">
<div class="card-body">
<div class="row gy-3">
<div class="col-md-6">
{{ html()->label('Name')->class('form-label') }}
{{ html()->span('*')->class('text-danger') }}
{{ html()->text('title')->class('form-control')->placeholder('Enter Name')->required() }}
{{ html()->div('Name is required')->class('invalid-feedback') }}
</div>
<div class="col-md-6">
{{ html()->label('Designation')->class('form-label') }}
{{ html()->text('designation')->class('form-control')->placeholder('Enter Designation') }}
</div>
<div class="col-md-6">
{{ html()->label('Company')->class('form-label') }}
{{ html()->text('company')->class('form-control')->placeholder('Enter Company') }}
</div>
<div class="col-lg-6">
{{ html()->label('Branch')->class('form-label')->for('branch_id') }}
{{ html()->select('branch_id', $branchOptions)->class('form-select choices-select')->placeholder('Select') }}
</div>
<div class="col-12">
{{ html()->label('Comment')->class('form-label')->for('description') }}
{{ html()->span('*')->class('text-danger') }}
{{ html()->textarea('description')->class('form-control')->rows(10) }}
</div>
</div>
</div>
</div>
</div>
<!-- end col -->
<div class="col-lg-4 col-xl-3">
<div class="card">
<div class="card-header">
<h5 class="card-title mb-0">Publish</h5>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-12">
{{ html()->select('status', config('constants.page_status_options'))->class('form-select choices-select ') }}
</div>
</div>
</div>
<!-- end card body -->
<x-form-buttons :editable="$editable" label="Save" href="{{ route('team.index') }}" />
</div>
<div class="card featured-image-section">
<div class="card-header">
<h6 class="card-title mb-0 fs-14">
Featured
</h6>
</div>
<div class="card-body">
<div class="mb-3">
{{ html()->label('Image')->class('form-label')->for('image') }}
<x-image-input :editable="$editable" id="image" name="image" :data="$editable ? $testimonial->getRawOriginal('image') : null"
:multiple="false" />
</div>
</div>
</div>
</div>
<!-- end col -->
</div>

View File

@@ -3,16 +3,20 @@
use Illuminate\Support\Facades\Route;
use Modules\CCMS\Http\Controllers\BlogController;
use Modules\CCMS\Http\Controllers\BranchController;
use Modules\CCMS\Http\Controllers\CareerController;
use Modules\CCMS\Http\Controllers\CategoryController;
use Modules\CCMS\Http\Controllers\CounselorController;
use Modules\CCMS\Http\Controllers\CounterController;
use Modules\CCMS\Http\Controllers\CountryController;
use Modules\CCMS\Http\Controllers\EnquiryController;
use Modules\CCMS\Http\Controllers\EventController;
use Modules\CCMS\Http\Controllers\FaqCategoryController;
use Modules\CCMS\Http\Controllers\FaqController;
use Modules\CCMS\Http\Controllers\FranchiseController;
use Modules\CCMS\Http\Controllers\GalleryCategoryController;
use Modules\CCMS\Http\Controllers\GalleryController;
use Modules\CCMS\Http\Controllers\InstitutionController;
use Modules\CCMS\Http\Controllers\NewsletterController;
use Modules\CCMS\Http\Controllers\PageController;
use Modules\CCMS\Http\Controllers\PartnerController;
use Modules\CCMS\Http\Controllers\PopupController;
@@ -31,7 +35,7 @@ use Modules\CCMS\Http\Controllers\TestimonialController;
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
|Eventcontr
*/
Route::group(['middleware' => ['web', 'auth', 'permission'], 'prefix' => 'admin/'], function () {
@@ -83,6 +87,14 @@ Route::group(['middleware' => ['web', 'auth', 'permission'], 'prefix' => 'admin/
Route::get('service/toggle/{id}', [ServiceController::class, 'toggle'])->name('service.toggle');
Route::resource('service', ServiceController::class)->names('service');
Route::post('event/reorder', [EventController::class, 'reorder'])->name('event.reorder');
Route::get('event/toggle/{id}', [EventController::class, 'toggle'])->name('event.toggle');
Route::resource('event', EventController::class)->names('event');
Route::post('career/reorder', [CareerController::class, 'reorder'])->name('career.reorder');
Route::get('career/toggle/{id}', [CareerController::class, 'toggle'])->name('career.toggle');
Route::resource('career', CareerController::class)->names('career');
Route::post('branch/reorder', [BranchController::class, 'reorder'])->name('branch.reorder');
Route::get('branch/toggle/{id}', [BranchController::class, 'toggle'])->name('branch.toggle');
Route::resource('branch', BranchController::class)->names('branch');
@@ -124,5 +136,8 @@ Route::group(['middleware' => ['web', 'auth', 'permission'], 'prefix' => 'admin/
Route::get('enquiry/mark-as-read/{id}', [EnquiryController::class, 'markAsRead'])->name('enquiry.markAsRead');
Route::resource('enquiry', EnquiryController::class)->names('enquiry')->only(['index', 'store', 'destroy']);
Route::resource('franchise', FranchiseController::class)->names('franchise')->only(['index', 'store', 'destroy']);
Route::resource('newsletter', NewsletterController::class)->names('newsletter')->only(['index', 'store', 'destroy']);
Route::resource('counselor', CounselorController::class)->names('counselor')->only(['index', 'store', 'destroy']);
});

View File

@@ -16,10 +16,9 @@ use Modules\Meeting\Http\Controllers\MeetingController;
*/
Route::group(['middleware' => ['web', 'auth', 'permission'], 'prefix' => 'admin/'], function () {
Route::resource('event', EventController::class)->names('event');
// Route::resource('event', EventController::class)->names('event');
Route::post('meeting/sub-task', [MeetingController::class, 'storeSubTask'])->name('meeting.storeSubTask');
Route::resource('meeting', MeetingController::class)->names('meeting');
Route::get('meeting/{id}/send-email', [MeetingController::class, 'sendEmail'])->name('meeting.sendmail');
});

View File

@@ -3,6 +3,10 @@
use App\Http\Controllers\WebsiteController;
use Illuminate\Support\Facades\Route;
use Modules\CCMS\Http\Controllers\EnquiryController;
use Modules\CCMS\Http\Controllers\FranchiseController;
use Modules\CCMS\Http\Controllers\NewsletterController;
use Modules\CCMS\Http\Controllers\VacancyController;
use Modules\CCMS\Models\Franchise;
use Modules\CourseFinder\Http\Controllers\CoopController;
use Modules\CourseFinder\Http\Controllers\ProgramController;
use Modules\CourseFinder\Http\Controllers\ProgramLevelController;
@@ -19,6 +23,12 @@ Route::get('destination/{alias}', [WebsiteController::class, 'countrySingle'])->
Route::get('/home/resources', [WebsiteController::class, 'resources']);
Route::get('getCoursesList', [ProgramController::class, 'getCoursesList'])->name('program.getCoursesList');
Route::post('enquiry', [EnquiryController::class, 'store'])->name('enquiry.store');
Route::post('franchise', [FranchiseController::class, 'store'])->name('franchise.store');
Route::post('newsletter', [NewsletterController::class, 'store'])->name('newsletter.store');
Route::post('vacancy', [VacancyController::class, 'store'])->name('vacancy.store');
Route::get('career/{id}', [WebsiteController::class, 'careerSingle'])->name('career.single');
Route::get('getCost', [WebsiteController::class, 'getCost'])->name('cost.getCost');
Route::get('/thankyou', [WebsiteController::class, 'thankyouPage'])->name('thankyou');

View File

@@ -1,9 +1,11 @@
<?php
use Modules\CCMS\Models\Blog;
use Modules\CCMS\Models\Career;
use Modules\CCMS\Models\Category;
use Modules\CCMS\Models\Counter;
use Modules\CCMS\Models\Country;
use Modules\CCMS\Models\Event;
use Modules\CCMS\Models\Faq;
use Modules\CCMS\Models\FaqCategory;
use Modules\CCMS\Models\Gallery;
@@ -150,6 +152,44 @@ function getServices($limit = null, $order = 'desc')
->get();
}
function getCareers($limit = null, $order = 'desc')
{
return Career::query()
->where('status', 1)
->orderBy('order', $order)
->when($limit, function ($query) use ($limit) {
$query->limit($limit);
})
->get();
}
function previousEvents($limit = null, $order = 'desc')
{
return Event::query()
->where('status', 1)
->where('parent_id', null)
->where('start_date', '<=', now())
->orderBy('order', $order)
->when($limit, function ($query) use ($limit) {
$query->limit($limit);
})
->get();
}
function upcomingEvents($limit = null, $order = 'desc')
{
return Event::query()
->where('status', 1)
->where('parent_id', null)
->where('start_date', '>=', now())
->orderBy('order', $order)
->when($limit, function ($query) use ($limit) {
$query->limit($limit);
})
->get();
}
function getInstitutions($limit = null, $order = 'desc')
{
return Institution::query()

View File

@@ -5,6 +5,7 @@ namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\View;
use Modules\CCMS\Models\Blog;
use Modules\CCMS\Models\Career;
use Modules\CCMS\Models\Country;
use Modules\CCMS\Models\Institution;
use Modules\CCMS\Models\Page;
@@ -33,6 +34,8 @@ class WebsiteController extends Controller
$countries = Country::where('status', 1)->where('parent_id', null)->get();
$interviews = Service::where('status', 1)->where('parent_id', null)->get();
$services = Service::where('status', 1)->where('parent_id', null)->get();
$data['previousEvents'] = previousEvents(limit: null, order: 'asc');
$data['upcomingEvents'] = upcomingEvents(limit: null, order: 'asc');
$this->path = config('app.client');
view()->share([
@@ -42,6 +45,8 @@ class WebsiteController extends Controller
'countries' => $countries,
'services' => $services,
'interviews' => $interviews,
'previousEvents' => $data['previousEvents'],
'upcomingEvents' => $data['upcomingEvents'],
]);
}
@@ -57,7 +62,7 @@ class WebsiteController extends Controller
$data['faqs'] = getFAQs(limit: null, order: 'desc');
$data['testimonials'] = getTestimonials(limit: null, order: 'desc');
$data['blogs'] = getBlogs(limit: 4, order: 'desc');
$data['partners'] = getPartners(limit: 4, order: 'desc');
$data['partners'] = getPartners();
$data['gallaries'] = getGalleries(limit: 6, order: 'asc');
$data['achievementGalleries'] = getGalleriesByCategory(limit: null, order: 'asc', category: 'achievement');
$data['visaGalleries'] = getGalleriesByCategory(limit: null, order: 'asc', category: 'visa-success');
@@ -126,6 +131,13 @@ class WebsiteController extends Controller
}
public function careerSingle($id)
{
$data['career'] = Career::findorFail($id);
return view("client.$this->path.pages.career-detail-template", $data);
}
public function testSingle($alias)
{
$testPreparations = $data["page"] = Test::where('status', 1)
@@ -176,7 +188,8 @@ class WebsiteController extends Controller
$page = getPageWithChildrenBySlug(parent: $parent, slug: $slug, limit: null, order: 'asc');
$teams = getTeams(limit: null, order: 'asc');
$blogs = getBlogs(limit: null, order: 'asc');
$galleriesCSR = getPageWithChildrenBySlug(parent: $parent, slug: 'gallery', limit: null, order: 'asc');
$careers = getCareers(limit: null, order: 'asc');
if (!$page) {
return view('client.raffles.errors.404');
}
@@ -187,7 +200,7 @@ class WebsiteController extends Controller
return view('client.raffles.errors.404');
}
return view($path, ['page' => $page, 'teams' => $teams, 'blogs' => $blogs]);
return view($path, ['page' => $page, 'teams' => $teams, 'blogs' => $blogs, 'galleriesCSR' => $galleriesCSR], ['careers' => $careers]);
}
public function fallback()
@@ -259,61 +272,78 @@ class WebsiteController extends Controller
public function getCost(Request $request)
{
$data['costss'] = $this->costCalculatorService->findAll($request);
foreach ($data['costss'] as $value) {
$id = $value->id;
$costs = $this->costCalculatorService->findAll($request);
if ($costs->isEmpty()) {
return view("client.raffles.errors.404");
}
$id = $costs->last()->id;
$cost = CostCalculator::with([
'stayTypeLiving',
'stayTypeAccomodation',
'stayTypeOnetime',
'stayTypeService'
])->findOrFail($id);
$data['fee'] = Program::where('id', $request->program_id)->first();
$data['title'] = 'View Cost Calculation';
$data['cost'] = $cost;
])->find($id);
if (!$cost) {
return view("client.raffles.errors.404");
}
$program = Program::find($request->program_id);
if (!$program) {
return view("client.raffles.errors.404");
}
$getBreakdown = function ($stayTypeTitle) use ($cost) {
$living = optional($cost->stayTypeLiving->firstWhere('title', $stayTypeTitle))->pivot;
$living = optional($cost->stayTypeLiving->firstWhere('title', $stayTypeTitle))->pivot;
$accomodation = optional($cost->stayTypeAccomodation->firstWhere('title', $stayTypeTitle))->pivot;
$onetime = optional($cost->stayTypeOnetime->firstWhere('title', $stayTypeTitle))->pivot;
$service = optional($cost->stayTypeService->firstWhere('title', $stayTypeTitle))->pivot;
$onetime = optional($cost->stayTypeOnetime->firstWhere('title', $stayTypeTitle))->pivot;
$service = optional($cost->stayTypeService->firstWhere('title', $stayTypeTitle))->pivot;
return [
'living' => [
'monthly' => $living->monthly ?? 0,
'yearly' => $living->yearly ?? 0,
'yearly' => $living->yearly ?? 0,
],
'accomodation' => [
'monthly' => $accomodation->monthly ?? 0,
'yearly' => $accomodation->yearly ?? 0,
'yearly' => $accomodation->yearly ?? 0,
],
'onetime' => [
'visa' => $onetime->visa ?? 0,
'biometrics' => $onetime->biometrics ?? 0,
'sevis' => $onetime->sevis ?? 0,
'visa' => $onetime->visa ?? 0,
'biometrics' => $onetime->biometrics ?? 0,
'sevis' => $onetime->sevis ?? 0,
'application' => $onetime->application ?? 0,
'total' => ($onetime->visa ?? 0) + ($onetime->biometrics ?? 0) + ($onetime->sevis ?? 0) + ($onetime->application ?? 0),
'total' => ($onetime->visa ?? 0) + ($onetime->biometrics ?? 0) + ($onetime->sevis ?? 0) + ($onetime->application ?? 0),
],
'service' => [
'flight_ticket' => $service->flight_ticket ?? 0,
'insurance' => $service->insurance ?? 0,
'extra' => $service->extra ?? 0,
'total' => ($service->flight_ticket ?? 0) + ($service->insurance ?? 0) + ($service->extra ?? 0),
'insurance' => $service->insurance ?? 0,
'extra' => $service->extra ?? 0,
'total' => ($service->flight_ticket ?? 0) + ($service->insurance ?? 0) + ($service->extra ?? 0),
]
];
};
$data['breakdowns'] = [
'alone' => $getBreakdown('Alone'),
'with_spouse' => $getBreakdown('With Spouse'),
'with_spouse_and_child' => $getBreakdown('With Spouse and Child'),
$data = [
'costs' => $costs,
'fee' => $program,
'title' => 'View Cost Calculation',
'cost' => $cost,
'breakdowns' => [
'alone' => $getBreakdown('Alone'),
'with_spouse' => $getBreakdown('With Spouse'),
'with_spouse_and_child' => $getBreakdown('With Spouse and Child'),
],
];
return view('client.raffles.pages.cost-result', $data);
}
public function thankyouPage(Request $r)
{
$data = new \stdClass();

View File

@@ -11,6 +11,7 @@ trait AddToDocumentCollection
{
public function addToDocumentCollection(string $collectionName = 'uploads', string $file, ?string $documentName = null, ?int $referenceDocumentId = null)
{
dd($documentName);
if (!Storage::disk('public')->exists($collectionName)) {
Storage::disk('public')->makeDirectory($collectionName);
}

View File

@@ -45,6 +45,38 @@ return [
'can' => ['menu.index'],
],
[
'text' => 'Enquiries',
'icon' => 'ri-cellphone-line',
'module' => 'CCMS',
'submenu' => [
[
'text' => 'Enquiry',
'url' => 'admin/enquiry',
'can' => ['enquiry.index'],
],
[
'text' => 'Counsellor Request',
'url' => 'admin/counselor',
'can' => ['counselor.index'],
],
[
'text' => 'Franchise Request',
'url' => 'admin/franchise',
'can' => ['franchise.index'],
],
[
'text' => 'Newsletter',
'url' => 'admin/newsletter',
'can' => ['newsletter.index'],
],
],
],
[
'text' => 'Offer Popup',
'url' => 'admin/popup',
@@ -101,6 +133,14 @@ return [
'can' => ['service.index'],
],
[
'text' => 'Events',
'url' => 'admin/event',
'icon' => 'ri-feedback-line',
'module' => 'CCMS',
'can' => ['event.index'],
],
[
'text' => 'Team',
'url' => 'admin/team',
@@ -109,6 +149,14 @@ return [
'can' => ['team.index'],
],
[
'text' => 'Career',
'url' => 'admin/career',
'icon' => 'ri-feedback-line',
'module' => 'CCMS',
'can' => ['career.index'],
],
[
'text' => 'Blog',
'icon' => 'ri-newspaper-line',
@@ -181,21 +229,7 @@ return [
],
],
[
'text' => 'Enquiry',
'url' => 'admin/enquiry',
'icon' => ' ri-cellphone-line',
'module' => 'CCMS',
'can' => ['enquiry.index'],
],
[
'text' => 'Counsellor Request',
'url' => 'admin/counselor',
'icon' => ' ri-cellphone-line',
'module' => 'CCMS',
'can' => ['counselor.index'],
],
[
'text' => 'Course Finder',

View File

@@ -618,13 +618,13 @@ z-index: 10000;
transition: .3s all ease-in-out;
}
.col.col-md-3:nth-child(1) .course-box img, .col.col-md-3:nth-child(2) .course-box img{
width: 100%;
width: 100px;
}
.col.col-md-3:nth-child(4) .course-box img {
.col.col-md-3:nth-child(3) .course-box img {
width: 125px;
}
.col.col-md-3:nth-child(4) .course-box img {
width: 120px;
width: 110px;
}
.how-it-work input, .how-it-work textarea {

Binary file not shown.

After

Width:  |  Height:  |  Size: 267 KiB

View File

@@ -1,12 +1,17 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<h1>404</h1>
</body>
</html>
@extends('client.raffles.layouts.app')
@section('content')
<div
class="min-h-screen flex flex-col items-center justify-center bg-gradient-to-b from-yellow-100 via-white to-yellow-50 px-6">
<!-- Monkey Illustration -->
<div class="relative">
<img src="{{ asset('raffles/assets/images/404/404.png') }}" alt="Monkey" class="animate-bounce" height="500px"
width="700px">
</div>
<!-- Button -->
<a href="{{ url('/') }}"
class="mt-6 inline-block bg-yellow-400 text-gray-900 font-semibold px-6 py-3 rounded-2xl shadow-md hover:bg-yellow-500 transition duration-300">
🏠 Back to Home
</a>
</div>
@endsection

View File

@@ -219,6 +219,86 @@
});
</script>
<script>
document.addEventListener('DOMContentLoaded', () => {
const form = document.getElementById('franchise-form');
const submitBtn = document.getElementById('franchise-submit');
const url = form.action;
form.addEventListener('submit', async (e) => {
e.preventDefault();
submitBtn.disabled = true;
submitBtn.textContent = 'Submitting…';
const formData = new FormData(form);
try {
const res = await fetch(url, {
method: 'POST',
headers: {
'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]')
.content
},
body: formData
});
const data = await res.json();
if (res.ok) {
form.reset();
window.location.href =
"{{ route('thankyou') }}"; // ✅ redirect instead of toastr
} else if (data.errors && data.errors.email) {
data.errors.email.forEach(msg => toastr.error(msg));
} else {
toastr.error('Submission failed. Please try again.');
}
} catch (err) {
console.error(err);
toastr.error('Something went wrong. Please try again.');
} finally {
submitBtn.disabled = false;
submitBtn.textContent = 'Submit';
}
});
});
</script>
<script>
document.addEventListener('DOMContentLoaded', () => {
const form = document.getElementById('newsletter-form');
const submitBtn = document.getElementById('newsletter-submit');
const url = form.action;
form.addEventListener('submit', async (e) => {
e.preventDefault();
submitBtn.disabled = true;
submitBtn.textContent = 'Submitting…';
const formData = new FormData(form);
try {
const res = await fetch(url, {
method: 'POST',
headers: {
'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]')
.content
},
body: formData
});
const data = await res.json();
if (res.ok) {
form.reset();
window.location.href =
"{{ route('thankyou') }}"; // ✅ redirect instead of toastr
} else if (data.errors && data.errors.email) {
data.errors.email.forEach(msg => toastr.error(msg));
} else {
toastr.error('Submission failed. Please try again.');
}
} catch (err) {
console.error(err);
toastr.error('Something went wrong. Please try again.');
} finally {
submitBtn.disabled = false;
submitBtn.textContent = 'Submit';
}
});
});
</script>
<script>
document.addEventListener('DOMContentLoaded', () => {
const form = document.getElementById('counselor-form');
@@ -259,6 +339,46 @@
});
</script>
<script>
document.addEventListener('DOMContentLoaded', () => {
const form = document.getElementById('vacancy-form');
const submitBtn = document.getElementById('vacancy-submit-btn');
const url = form.action;
form.addEventListener('submit', async (e) => {
e.preventDefault();
submitBtn.disabled = true;
submitBtn.textContent = 'Submitting…';
const formData = new FormData(form);
try {
const res = await fetch(url, {
method: 'POST',
headers: {
'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]')
.content
},
body: formData
});
const data = await res.json();
if (res.ok) {
form.reset();
window.location.href =
"{{ route('thankyou') }}"; // ✅ redirect instead of toastr
} else if (data.errors && data.errors.email) {
data.errors.email.forEach(msg => toastr.error(msg));
} else {
toastr.error('Submission failed. Please try again.');
}
} catch (err) {
console.error(err);
toastr.error('Something went wrong. Please try again.');
} finally {
submitBtn.disabled = false;
submitBtn.textContent = 'Submit';
}
});
});
</script>
<script>
$(document).ready(function() {
var weekdays = [

View File

@@ -61,16 +61,17 @@
<a href="{{ setting('whatsapp') }}" target="blank"> <i
class="fa-brands fa-square-whatsapp"></i></a>
</div>
<form class="flex" action="">
<form class="flex" action="{{ route('newsletter.store') }}" method="post"
id="newsletter-form">
@csrf
<input class=" border-0 w-80percent px-20 text-14 py-10 text-black" type="email"
name="email" id="email" placeholder="Enter your Email">
<button class="border-0 text-white p-10 text-12 ">Subscribe</button>
<button type="submit" id="newsletter-submit"
class="border-0 text-white p-10 text-12 newsletter-submit">Subscribe</button>
</form>
<div>
<iframe
src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3532.3752814608883!2d85.32120487541293!3d27.705697025564373!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x39eb1907f7e2f099%3A0x517cd88424589879!2sRaffles%20Educare!5e0!3m2!1sen!2snp!4v1755670491057!5m2!1sen!2snp"
width="100%" height="150" style="border:0;" allowfullscreen="" loading="lazy"
referrerpolicy="no-referrer-when-downgrade"></iframe>
<iframe src="{{ setting('map') }}" width="100%" height="150" style="border:0;"
allowfullscreen="" loading="lazy" referrerpolicy="no-referrer-when-downgrade"></iframe>
</div>
</div>

View File

@@ -68,7 +68,7 @@
@foreach ($tests as $test)
<a href="{{ route('test.single', $test->slug) }}"
class="service-item">
<div class="service-icon ">
<div class="service-icon blue-bg">
<img src="{{ asset($test->image) }}"
alt="">
</div>

View File

@@ -10,7 +10,7 @@
<section class="section ">
<div class="flex flex-col gap-5 justify-center items-center text-center">
<h2 class="text-60 md:text-30 text-brand">Achievements</h2>
<img class="w-20percent" src="assets/images/icons/line.png" alt="">
<img class="w-20percent" src="{{ asset('raffles/assets/images/icons/line.png') }}" alt="">
</div>
</section>
@@ -18,167 +18,24 @@
<section class="lqd-section text-box-image pt-40 pb-30">
<div class="container">
<div class="row pb-20">
<div class="col col-sm-6 col-md-4">
<a href="" class="flex flex-col gap-20 p-20 blog-post">
<div class="w-100percent h-210 overflow-hidden rounded-16">
<img class="w-full h-full object-cover rounded-16" src="assets/images/general/blog1.jfif"
alt="">
</div>
<div>
<h2 class="text-20 text-ter text-center">How Successfully Used Paid Marketing to Drive
Incremental
Ticket Sale </h2>
</div>
@foreach ($page->custom as $index => $data)
<div class="col col-sm-6 col-md-4">
<a href="" class="flex flex-col gap-20 p-20 blog-post">
<div class="w-100percent h-210 overflow-hidden rounded-16">
<img class="w-full h-full object-cover rounded-16"
src="{{ asset($page->images[$index]) }}" alt="">
</div>
<div>
<h2 class="text-20 text-ter text-center">{{ $data['key'] ?? '' }} </h2>
</div>
</a>
</div>
@endforeach
</a>
</div>
<div class="col col-sm-6 col-md-4">
<a href="" class="flex flex-col gap-20 p-20 blog-post">
<div class="w-100percent h-210 overflow-hidden rounded-16">
<img class="w-full h-full object-cover rounded-16" src="assets/images/general/blog1.jfif"
alt="">
</div>
<div>
<h2 class="text-20 text-ter text-center">How Successfully Used Paid Marketing to Drive
Incremental
Ticket Sales</h2>
</div>
</a>
</div>
<div class="col col-sm-6 col-md-4">
<a href="" class="flex flex-col gap-20 p-20 blog-post">
<div class="w-100percent h-210 overflow-hidden rounded-16">
<img class="w-full h-full object-cover rounded-16" src="assets/images/general/blog1.jfif"
alt="">
</div>
<div>
<h2 class="text-20 text-ter text-center">How Successfully Used Paid Marketing to Drive
Incremental
Ticket Sales</h2>
</div>
</a>
</div>
<div class="col col-sm-6 col-md-4">
<a href="" class="flex flex-col gap-20 p-20 blog-post">
<div class="w-100percent h-210 overflow-hidden rounded-16">
<img class="w-full h-full object-cover rounded-16" src="assets/images/general/blog1.jfif"
alt="">
</div>
<div>
<h2 class="text-20 text-ter text-center">How Successfully Used Paid Marketing to Drive
Incremental
Ticket Sales</h2>
</div>
</a>
</div>
<div class="col col-sm-6 col-md-4">
<a href="" class="flex flex-col gap-20 p-20 blog-post">
<div class="w-100percent h-210 overflow-hidden rounded-16">
<img class="w-full h-full object-cover rounded-16" src="assets/images/general/blog1.jfif"
alt="">
</div>
<div>
<h2 class="text-20 text-ter text-center">How Successfully Used Paid Marketing to Drive
Incremental
Ticket Sales</h2>
</div>
</a>
</div>
<div class="col col-sm-6 col-md-4">
<a href="" class="flex flex-col gap-20 p-20 blog-post">
<div class="w-100percent h-210 overflow-hidden rounded-16">
<img class="w-full h-full object-cover rounded-16" src="assets/images/general/blog1.jfif"
alt="">
</div>
<div>
<h2 class="text-20 text-ter text-center">How Successfully Used Paid Marketing to Drive
Incremental
Ticket Sales</h2>
</div>
</a>
</div>
<div class="col col-sm-6 col-md-4">
<a href="" class="flex flex-col gap-20 p-20 blog-post">
<div class="w-100percent h-210 overflow-hidden rounded-16">
<img class="w-full h-full object-cover rounded-16" src="assets/images/general/blog1.jfif"
alt="">
</div>
<div>
<h2 class="text-20 text-ter text-center">How Successfully Used Paid Marketing to Drive
Incremental
Ticket Sales</h2>
</div>
</a>
</div>
<div class="col col-sm-6 col-md-4">
<a href="" class="flex flex-col gap-20 p-20 blog-post">
<div class="w-100percent h-210 overflow-hidden rounded-16">
<img class="w-full h-full object-cover rounded-16" src="assets/images/general/blog1.jfif"
alt="">
</div>
<div>
<h2 class="text-20 text-ter text-center">How Successfully Used Paid Marketing to Drive
Incremental
Ticket Sales</h2>
</div>
</a>
</div>
<div class="col col-sm-6 col-md-4">
<a href="" class="flex flex-col gap-20 p-20 blog-post">
<div class="w-100percent h-210 overflow-hidden rounded-16">
<img class="w-full h-full object-cover rounded-16" src="assets/images/general/blog1.jfif"
alt="">
</div>
<div>
<h2 class="text-20 text-ter text-center">How Successfully Used Paid Marketing to Drive
Incremental
Ticket Sales</h2>
</div>
</a>
</div>
</div>
<div class="flex justify-center gap-10">
<div class="blog-pagination cursor-pointer ">
<p class="py-5 bg-sec px-20 text-20 rounded-10 text-white button-hover">1</p>
</div>
<div class="blog-pagination cursor-pointer">
<p class="py-5 bg-sec px-20 text-20 rounded-10 text-white button-hover">2</p>
</div>
<div class="blog-pagination cursor-pointer">
<p class="py-5 bg-sec px-20 text-20 rounded-10 text-white button-hover">3</p>
</div>
<div class="blog-pagination cursor-pointer">
<p class="py-5 bg-sec px-20 text-20 rounded-10 text-white button-hover">Next</p>
</div>
</div>
</div>
</section>
</section>
@endsection

View File

@@ -0,0 +1,143 @@
@extends('client.raffles.layouts.app')
@section('content')
<div class="p-20 ">
<div class="h-175 rounded-10 bg-after relative">
<img class="h-full w-full rounded-30 object-cover"
src="{{ asset('raffles/assets/images/general/about-banner.png') }}" alt="">
<div
class="flex justify-center flex-col text-center items-center w-70percent mx-auto absolute top-20percent left-15percent z-30">
<h2 class="md:text-40 text-94 text-white">Career-Details</h2>
</div>
</div>
</div>
<section class="pt-60 career-details ">
<div class="container">
<div class="row">
<div class="col col col-12">
<div class="relative line-through">
<div class="position ">
<h4 class="text-brand">Available Position</h4>
</div>
</div>
</div>
<div class="col col col-12 ">
<div class="d-flex gap-5 pt-5">
<div class="career-img">
<img class="w-full" src="assets/images/icons/team.svg" alt="">
</div>
<div>
<h3 class="text-brand">{{ $career->job_title }}</h3>
<p>{{ setting('location') }}</p>
</div>
</div>
<div class="py-5 ">
<div class="flex gap-10">
<div class="text-12">
<i class="fa-solid fa-money-bill-wave"></i> {{ $career->salary_range }}
</div>
<div class="text-12">
<i class="fa-solid fa-location-dot"></i> {{ $career->location }}
</div>
<div class="text-12">
<i class="fa-solid fa-briefcase"></i> {{ $career->position }}
</div>
</div>
</div>
<div class="row justify-between">
<div class="col col-12 col-md-6 pt-5">
<h5>Job Description</h5>
<p>{{ $career->job_description }}
</p>
<h6 class="py-3">Key Responsibilities (JD):</h6>
{{-- <ul>
<li>1. Creative Design Development: Conceptualize and create high-quality designs for
digital and print media, including websites, social media, brochures, and promotional
materials.</li>
<li>2. BTL Marketing Designs: Design engaging visual materials for BTL marketing campaigns,
such as posters, banners, and standees, ensuring alignment with brand guidelines.</li>
<li>3. Layout and Page Design: Plan and design page layouts for print media such as
brochures, pamphlets, and magazines, ensuring an eye-catching yet functional structure.
</li>
<li>4. Brand Identity Development: Work on visual brand identity projects, creating logos,
color schemes, and overall brand guidelines that resonate with target audiences.</li>
<li>5. Client Collaboration: Collaborate with clients to understand their design
requirements and deliver solutions that meet their objectives.</li>
<li>6. Cross-Departmental Collaboration: Work closely with the marketing and production
teams to deliver cohesive and integrated creative projects.</li>
<li>7. Design for Digital Campaigns: Create digital assets for social media, websites, and
online campaigns, ensuring visual consistency across all platforms.</li>
<li>8. Quality Control: Ensure the highest standards of quality and consistency across all
creative outputs, adhering to timelines and project goals.</li>
<li>9. Software Proficiency: Utilize design tools such as Adobe Creative Suite (Photoshop,
Illustrator, InDesign, etc.) to produce creative assets with speed and precision.</li>
<li>10. Mentorship and Team Leadership: Guide and mentor junior designers, providing
feedback and support to ensure continuous growth and improvement within the team.</li>
</ul> --}}
{!! $career->job_requirements !!}
</div>
<div class="col col-12 col-md-5">
<div class=" form ">
<h2 class="text-26 mb-30 text-brand text-center">Quick Apply</h2>
<form action="{{ route('vacancy.store') }}" method="post" id="vacancy-form">
@csrf
<input type="hidden" name="career_id" value="{{ $career->id }}">
<div class="flex gap-20">
<input class="w-full mb-30 rounded-6 py-15 text-14 px-10" type="text"
name="first_name" id="" placeholder="First Name">
<input class="w-full mb-30 rounded-6 py-15 text-14 px-10" type="text"
name="last_name" id="" placeholder="Last Name">
</div>
<div class="flex gap-20">
<input class="w-full mb-30 rounded-6 py-15 text-14 px-10" type="email"
name="email" id="" placeholder="Email">
<input class="w-full mb-30 rounded-6 py-15 text-14 px-10" type="tel"
name="phone" id="" placeholder="Phone Number">
</div>
<input class="w-full mb-30 rounded-6 py-15 text-14 px-10" type="text"
name="qualification" id="" placeholder="Your Qualification">
<textarea class="w-full mb-10 rounded-6 py-15 text-14 px-10" name="description" id=""
placeholder="Short description about you"></textarea>
<label class="text-16" for="">Please Upload Your CV</label>
<input class="mb-20" type="file" name="document" id="">
<button type="submit" id="vacancy-submit-btn"
class="button-hover px-30 py-10 bg-sec text-white rounded-30 text-14 border-0 mt-20 ">Submit</button>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
@endsection

View File

@@ -11,172 +11,33 @@
<div class="flex flex-col gap-5 justify-center items-center text-center">
<h2 class="text-60 md:text-30 text-sec">Career Opportunities</h2>
<div class="title-line mx-auto"></div>
<!-- <img class="w-20percent" src="assets/images/icons/line.png" alt=""> -->
</div>
</section>
<section class="lqd-section pt-40 pb-30">
<div class="container">
<div class="row pb-20">
<div class="col col-sm-6 col-md-4">
<a href="career-detail.php" class="career-box flex flex-col gap-20 border">
<span>
<h5 class="text-white bg-sec px-20 py-10 rounded-10 text-18 mb-10 ml-0 inline-block">
Marketing</h5>
</span>
<h6 class="text-16 font-bols mb-10">Seo Executive</h6>
<div class="flex items-center gap-10 mb-10">
<i class="fa-solid fa-calendar-days text-20"></i>
<p class="font-bold text-16 text-black m-0 ">Post Date: 2025/03/05</p>
</div>
<div class="mb-10">
<h2 class="text-16 font-medium text-gray">Join our team as an SEO Executive and help
improve our website's visibility and search
engine rankings. The ideal candidate will be…</h2>
</div>
<button>View Detail</button>
</a>
</div>
<div class="col col-sm-6 col-md-4">
<a href="career-detail.php" class="career-box flex flex-col gap-20 border">
<span>
<h5 class="text-white bg-sec px-20 py-10 rounded-10 text-18 mb-10 ml-0 inline-block">
Marketing</h5>
</span>
<h6 class="text-16 font-bols mb-10">Seo Executive</h6>
<div class="flex items-center gap-10 mb-10">
<i class="fa-solid fa-calendar-days text-20"></i>
<p class="font-bold text-16 text-black m-0 ">Post Date: 2025/03/05</p>
</div>
<div class="mb-10">
<h2 class="text-16 font-medium text-gray">Join our team as an SEO Executive and help
improve our website's visibility and search
engine rankings. The ideal candidate will be…</h2>
</div>
<button>View Detail</button>
</a>
</div>
<div class="col col-sm-6 col-md-4">
<a href="career-detail.php" class="career-box flex flex-col gap-20 border">
<span>
<h5 class="text-white bg-sec px-20 py-10 rounded-10 text-18 mb-10 ml-0 inline-block">
Marketing</h5>
</span>
<h6 class="text-16 font-bols mb-10">Seo Executive</h6>
<div class="flex items-center gap-10 mb-10">
<i class="fa-solid fa-calendar-days text-20"></i>
<p class="font-bold text-16 text-black m-0 ">Post Date: 2025/03/05</p>
</div>
<div class="mb-10">
<h2 class="text-16 font-medium text-gray">Join our team as an SEO Executive and help
improve our website's visibility and search
engine rankings. The ideal candidate will be…</h2>
</div>
<button>View Detail</button>
</a>
</div>
<div class="col col-sm-6 col-md-4">
<a href="career-detail.php" class="career-box flex flex-col gap-20 border">
<span>
<h5 class="text-white bg-sec px-20 py-10 rounded-10 text-18 mb-10 ml-0 inline-block">
Marketing</h5>
</span>
<h6 class="text-16 font-bols mb-10">Seo Executive</h6>
<div class="flex items-center gap-10 mb-10">
<i class="fa-solid fa-calendar-days text-20"></i>
<p class="font-bold text-16 text-black m-0 ">Post Date: 2025/03/05</p>
</div>
<div class="mb-10">
<h2 class="text-16 font-medium text-gray">Join our team as an SEO Executive and help
improve our website's visibility and search
engine rankings. The ideal candidate will be…</h2>
</div>
<button>View Detail</button>
</a>
</div>
<div class="col col-sm-6 col-md-4">
<a href="career-detail.php" class="career-box flex flex-col gap-20 border">
<span>
<h5 class="text-white bg-sec px-20 py-10 rounded-10 text-18 mb-10 ml-0 inline-block">
Marketing</h5>
</span>
<h6 class="text-16 font-bols mb-10">Seo Executive</h6>
<div class="flex items-center gap-10 mb-10">
<i class="fa-solid fa-calendar-days text-20"></i>
<p class="font-bold text-16 text-black m-0 ">Post Date: 2025/03/05</p>
</div>
<div class="mb-10">
<h2 class="text-16 font-medium text-gray">Join our team as an SEO Executive and help
improve our website's visibility and search
engine rankings. The ideal candidate will be…</h2>
</div>
<button>View Detail</button>
</a>
</div>
<div class="col col-sm-6 col-md-4">
<a href="career-detail.php" class="career-box flex flex-col gap-20 border">
<span>
<h5 class="text-white bg-sec px-20 py-10 rounded-10 text-18 mb-10 ml-0 inline-block">
Marketing</h5>
</span>
<h6 class="text-16 font-bols mb-10">Seo Executive</h6>
<div class="flex items-center gap-10 mb-10">
<i class="fa-solid fa-calendar-days text-20"></i>
<p class="font-bold text-16 text-black m-0 ">Post Date: 2025/03/05</p>
</div>
<div class="mb-10">
<h2 class="text-16 font-medium text-gray">Join our team as an SEO Executive and help
improve our website's visibility and search
engine rankings. The ideal candidate will be…</h2>
</div>
<button>View Detail</button>
</a>
</div>
@foreach ($careers as $career)
<div class="col col-sm-6 col-md-4">
<a href="{{ route('career.single', $career->id) }}" class="career-box flex flex-col gap-20 border">
<span>
<h5 class="text-white bg-sec px-20 py-10 rounded-10 text-18 mb-10 ml-0 inline-block">
{{ $career->department }}</h5>
</span>
<h6 class="text-16 font-bols mb-10">{{ $career->job_title }}</h6>
<div class="flex items-center gap-10 mb-10">
<i class="fa-solid fa-calendar-days text-20"></i>
<p class="font-bold text-16 text-black m-0 ">Post Date: {{ $career->created_At }}</p>
</div>
<div class="mb-10">
<h2 class="text-16 font-medium text-gray">{{ $career->job_description }}</h2>
</div>
<button>View Detail</button>
</a>
</div>
@endforeach
</div>
</div>
</section>
</section>
@endsection

View File

@@ -218,7 +218,7 @@
<input class="w-full mb-30 rounded-6 py-15 text-14 px-10 bg-light-blue border-light-grey"
type="text" name="name" id="" placeholder="Full Name">
<input class="w-full mb-30 rounded-6 py-15 text-14 px-10 bg-light-blue border-light-grey"
type="text" name="phone" id="" placeholder="Phone">
type="text" name="mobile" id="" placeholder="Phone">
<input class="w-full mb-30 rounded-6 py-15 text-14 px-10 bg-light-blue border-light-grey"
type="email" name="email" id="" placeholder="Email">
<textarea class="w-full mb-20 rounded-6 py-15 text-14 px-10 bg-light-blue border-light-grey" name="subject"

View File

@@ -3,12 +3,7 @@
<section class="career">
<div class="p-20 ">
<div class="h-175 rounded-10 bg-after relative">
<img class="h-full w-full rounded-30 object-cover" src="assets/images/general/about-banner.png" alt="">
<!-- <div
class="flex justify-center flex-col text-center items-center w-70percent mx-auto absolute top-20percent left-15percent z-30">
<h2 class="md:text-40 text-94 text-white">CSR</h2>
</div> -->
<img class="h-full w-full rounded-30 object-cover" src="{{ asset($page->banner) }}" alt="">
</div>
@@ -29,7 +24,7 @@
<div class="content-wrapper">
<div class="image-section">
<div class="image-frame">
<img src="assets/images/general/about-banner.png" alt="" class="ceo-image">
<img src="{{ asset($page->image) }}" alt="" class="ceo-image">
</div>
</div>
@@ -38,58 +33,56 @@
<div class="quote-mark">"</div>
<h2 class="heading">Your Trusted Study Abroad Partner.</h2>
<h2 class="heading">{{ $page->short_description }}</h2>
<p class="message">
Were more than just a consultancy—were your ultimate study abroad ally! With years of
experience and a passion for helping students succeed, weve guided thousands of students to
their dream universities across the globe. Your dreams are our mission
{!! $page->description !!}
</p>
</div>
</div>
</div>
<!-- <div class="row items-center">
<div class="col col-12 col-md-6">
<div class="flex flex-wrap mr-120 ml-40 lg:m-0">
<div class="col col-12 col-md-6">
<div class="flex flex-wrap mr-120 ml-40 lg:m-0">
<div class="mb-20 relative">
<h2 class="ld-fh-element inline-block relative lqd-highlight-classic lqd-highlight-grow-left mt-0/5em mb-0 md:text-20 font-bold w-full"
data-inview="true" data-transition-delay="true"
data-delay-options='{"elements": ".lqd-highlight-inner", "delayType": "transition"}'>
<span>Your Trusted Study Abroad
</span>
<mark class="lqd-highlight"><span class="lqd-highlight-txt">Partner.</span>
<span class="left-0 bottom-10 lqd-highlight-inner"></span></mark>
</h2>
</div>
<div class="mb-20 ld-fancy-heading relative">
<p class="leading-25 ld-fh-element inline-block relative mb-0/5em">
Were more than just a consultancy—were your ultimate study abroad ally! With years of
experience and a passion for helping students succeed, weve guided thousands of
students to their dream universities across the globe. Your dreams are our mission
</p>
</div>
<div class="mb-20 relative">
<h2 class="ld-fh-element inline-block relative lqd-highlight-classic lqd-highlight-grow-left mt-0/5em mb-0 md:text-20 font-bold w-full"
data-inview="true" data-transition-delay="true"
data-delay-options='{"elements": ".lqd-highlight-inner", "delayType": "transition"}'>
<span>Your Trusted Study Abroad
</span>
<mark class="lqd-highlight"><span class="lqd-highlight-txt">Partner.</span>
<span class="left-0 bottom-10 lqd-highlight-inner"></span></mark>
</h2>
</div>
<div class="mb-20 ld-fancy-heading relative">
<p class="leading-25 ld-fh-element inline-block relative mb-0/5em">
Were more than just a consultancy—were your ultimate study abroad ally! With years of
experience and a passion for helping students succeed, weve guided thousands of
students to their dream universities across the globe. Your dreams are our mission
</p>
</div>
</div>
</div>
<div class="col col-12 col-md-6 p-0">
<div class="module-section flex items-center justify-center transition-all p-20 lg:p-0">
<div class="flex items-center justify-center bg-center bg-no-repeat bg-contain" style="
</div>
</div>
<div class="col col-12 col-md-6 p-0">
<div class="module-section flex items-center justify-center transition-all p-20 lg:p-0">
<div class="flex items-center justify-center bg-center bg-no-repeat bg-contain" style="
background-image: url('assets/images/demo/start-hub-1/shape-ellipse.png');
">
<div class="lqd-imggrp-single block relative " data-float="ease-in-out">
<div class="lqd-imggrp-img-container inline-flex relative items-center justify-center">
<figure class="w-full relative">
<img width="450" height="450" src="assets/images/general/about-banner.png"
alt="text box image" />
</figure>
</div>
</div>
</div>
</div>
</div>
</div> -->
<div class="lqd-imggrp-single block relative " data-float="ease-in-out">
<div class="lqd-imggrp-img-container inline-flex relative items-center justify-center">
<figure class="w-full relative">
<img width="450" height="450" src="assets/images/general/about-banner.png"
alt="text box image" />
</figure>
</div>
</div>
</div>
</div>
</div>
</div> -->
</div>
</section>
@@ -99,8 +92,6 @@
<section class="section ">
<div class="container">
<h2 class="text-60 md:text-30 text-brand text-center">Blogs</h2>
<!-- <img class="w-20percent" src="assets/images/icons/line.png" alt=""> -->
</div>
</section>
@@ -108,63 +99,17 @@
<div class="container">
<div class="swiper mySwiper-img">
<div class="swiper-wrapper">
<div class="swiper-slide ">
<a class="h-full w-full relative bg-dark-before" href="blog-detail.php"> <img class="rounded-30"
src="assets/images/general/about-banner.png" alt="">
<div class="absolute left-5percent bottom-20">
<h3 class="text-white text-20">How do i manage my financials?</h3>
</div>
</a>
</div>
<div class="swiper-slide ">
<a class="h-full w-full relative bg-dark-before" href="blog-detail.php"> <img class="rounded-30"
src="assets/images/general/about-banner.png" alt="">
<div class="absolute left-5percent bottom-20">
<h3 class="text-white text-20">How do i manage my financials?</h3>
</div>
</a>
</div>
<div class="swiper-slide ">
<a class="h-full w-full relative bg-dark-before" href="blog-detail.php"> <img class="rounded-30"
src="assets/images/general/about-banner.png" alt="">
<div class="absolute left-5percent bottom-20">
<h3 class="text-white text-20">How do i manage my financials?</h3>
</div>
</a>
</div>
<div class="swiper-slide ">
<a class="h-full w-full relative bg-dark-before" href="blog-detail.php"> <img class="rounded-30"
src="assets/images/general/about-banner.png" alt="">
<div class="absolute left-5percent bottom-20">
<h3 class="text-white text-20">How do i manage my financials?</h3>
</div>
</a>
</div>
<div class="swiper-slide ">
<a class="h-full w-full relative bg-dark-before" href="blog-detail.php"> <img class="rounded-30"
src="assets/images/general/about-banner.png" alt="">
<div class="absolute left-5percent bottom-20">
<h3 class="text-white text-20">How do i manage my financials?</h3>
</div>
</a>
</div>
<div class="swiper-slide ">
<a class="h-full w-full relative bg-dark-before" href="blog-detail.php"> <img
class="rounded-30" src="assets/images/general/about-banner.png" alt="">
<div class="absolute left-5percent bottom-20">
<h3 class="text-white text-20">How do i manage my financials?</h3>
</div>
</a>
</div>
<div class="swiper-slide ">
<a class="h-full w-full relative bg-dark-before" href="blog-detail.php"> <img
class="rounded-30" src="assets/images/general/about-banner.png" alt="">
<div class="absolute left-5percent bottom-20">
<h3 class="text-white text-20">How do i manage my financials?</h3>
</div>
</a>
</div>
@foreach ($blogs as $blog)
<div class="swiper-slide ">
<a class="h-full w-full relative bg-dark-before"
href="{{ route('blog.single', $blog->slug) }}"> <img class="rounded-30"
src="{{ asset($blog->image) }}" alt="">
<div class="absolute left-5percent bottom-20">
<h3 class="text-white text-20">{{ $blog->title }}</h3>
</div>
</a>
</div>
@endforeach
</div>
<div class="swiper-button-prev"></div>
<div class="swiper-button-next"></div>
@@ -177,6 +122,7 @@
<h2 class="text-60 md:text-30 text-brand text-center">Gallery</h2>
<!-- <img class="w-20percent" src="assets/images/icons/line.png" alt=""> -->
</div>
</section>
@@ -187,24 +133,10 @@
<div class="swiper mySwiper-img">
<div class="swiper-wrapper">
<div class="swiper-slide"> <img class="rounded-10" src="assets/images/general/about-banner.png"
alt=""></div>
<div class="swiper-slide"> <img class="rounded-10" src="assets/images/general/about-banner.png"
alt=""></div>
<div class="swiper-slide"> <img class="rounded-10" src="assets/images/general/about-banner.png"
alt=""></div>
<div class="swiper-slide"> <img class="rounded-10" src="assets/images/general/about-banner.png"
alt=""></div>
<div class="swiper-slide"> <img class="rounded-10" src="assets/images/general/about-banner.png"
alt=""></div>
<div class="swiper-slide"> <img class="rounded-10" src="assets/images/general/about-banner.png"
alt=""></div>
<div class="swiper-slide"> <img class="rounded-10" src="assets/images/general/about-banner.png"
alt=""></div>
<div class="swiper-slide"> <img class="rounded-10" src="assets/images/general/about-banner.png"
alt=""></div>
<div class="swiper-slide"> <img class="rounded-10" src="assets/images/general/about-banner.png"
alt=""></div>
@foreach ($galleriesCSR->images as $gallery)
<div class="swiper-slide"> <img class="rounded-10" src="{{ asset($gallery) }}" alt="">
</div>
@endforeach
</div>
<div class="swiper-button-prev"></div>
<div class="swiper-button-next"></div>

View File

@@ -1,8 +1,7 @@
@extends('client.raffles.layouts.app')
@section('content')
<div class="services-banner">
<img src="{{ asset('raffles/assets/assets/images/backgrounds_general/events-banner.png') }}" width="1425"
height="356" alt="events ">
<img src="{{ asset($page->banner) }}" width="1425" height="356" alt="events ">
</div>
<section class="section ">
@@ -18,116 +17,30 @@
<h2 class="ld-fh-element inline-block relative mt-10 mb-0 section-heading-sec">
Upcoming Events
</h2>
<!-- <div class="flex gap-10 mt-10">
<select name="" id="weekdays">
<option value="" selected hidden>select category</option>
<option value=""></option>
</select>
<select name="" id="eventType">
<option value="" selected hidden>select category</option>
<option value=""></option>
</select>
</div> -->
</div>
<div class="swiper swiper-events mt-40 mb-40">
<div class="swiper-wrapper">
<a href="" class="swiper-slide">
<div class="event-block relative w-full">
<div class="w-full rounded-30">
<img src="assets/images/general/event1.jfif" alt="">
</div>
<div class="flex items-center gap-20 py-20 px-20 bg-white rounded-30">
<div>
<h4 class="text-16 text-ter">Apr</h4>
<h4 class="text-18 font-bold text-black">14</h4>
@foreach ($upcomingEvents as $event)
<a href="" class="swiper-slide">
<div class="event-block relative w-full">
<div class="w-full rounded-30">
<img src="{{ asset($event->image) }}" alt="">
</div>
<div>
<h3 class="text-16 text-black">Free ilets Class: Raffles Educare Associates</h3>
<p class="text-14 p-0 m-0 text-grey">Join the free ilets Classes </p>
<p class="text-14 text-grey">Starting from 5 pm - 7 pm </p>
<div class="flex items-center gap-20 py-20 px-20 bg-white rounded-30">
<div>
<h4 class="text-16 text-ter">Start</h4>
<h4 class="text-18 font-bold text-black">{{ $event->start_date }}</h4>
</div>
<div>
<h3 class="text-16 text-black">{{ $event->title }}</h3>
<p class="text-14 p-0 m-0 text-grey">{{ $event->short_description }} </p>
</div>
</div>
</div>
</div>
</a>
<a href="" class="swiper-slide">
<div class="event-block relative w-full">
<div class="w-full rounded-30">
<img src="assets/images/general/event1.jfif" alt="">
</div>
<div class="flex items-center gap-20 py-20 px-20 bg-white rounded-30">
<div>
<h4 class="text-16 text-ter">Apr</h4>
<h4 class="text-18 font-bold text-black">14</h4>
</div>
<div>
<h3 class="text-16 text-black">Free ilets Class: Raffles Educare Associates</h3>
<p class="text-14 p-0 m-0 text-grey">Join the free ilets Classes </p>
<p class="text-14 text-grey">Starting from 5 pm - 7 pm </p>
</div>
</div>
</div>
</a>
<a href="" class="swiper-slide">
<div class="event-block relative w-full">
<div class="w-full rounded-30">
<img src="assets/images/general/event1.jfif" alt="">
</div>
<div class="flex items-center gap-20 py-20 px-20 bg-white rounded-30">
<div>
<h4 class="text-16 text-ter">Apr</h4>
<h4 class="text-18 font-bold text-black">14</h4>
</div>
<div>
<h3 class="text-16 text-black">Free ilets Class: Raffles Educare Associates</h3>
<p class="text-14 p-0 m-0 text-grey">Join the free ilets Classes </p>
<p class="text-14 text-grey">Starting from 5 pm - 7 pm </p>
</div>
</div>
</div>
</a>
<a href="" class="swiper-slide">
<div class="event-block relative w-full">
<div class="w-full rounded-30">
<img src="assets/images/general/event1.jfif" alt="">
</div>
<div class="flex items-center gap-20 py-20 px-20 bg-white rounded-30">
<div>
<h4 class="text-16 text-ter">Apr</h4>
<h4 class="text-18 font-bold text-black">14</h4>
</div>
<div>
<h3 class="text-16 text-black">Free ilets Class: Raffles Educare Associates</h3>
<p class="text-14 p-0 m-0 text-grey">Join the free ilets Classes </p>
<p class="text-14 text-grey">Starting from 5 pm - 7 pm </p>
</div>
</div>
</div>
</a>
<a href="" class="swiper-slide">
<div class="event-block relative w-full">
<div class="w-full rounded-30">
<img src="assets/images/general/event1.jfif" alt="">
</div>
<div class="flex items-center gap-20 py-20 px-20 bg-white rounded-30">
<div>
<h4 class="text-16 text-ter">Apr</h4>
<h4 class="text-18 font-bold text-black">14</h4>
</div>
<div>
<h3 class="text-16 text-black">Free ilets Class: Raffles Educare Associates</h3>
<p class="text-14 p-0 m-0 text-grey">Join the free ilets Classes </p>
<p class="text-14 text-grey">Starting from 5 pm - 7 pm </p>
</div>
</div>
</div>
</a>
</a>
@endforeach
</div>
<!-- Pagination -->
<!-- <div class="swiper-pagination"></div> -->
@@ -148,102 +61,27 @@
<div class="swiper swiper-events mt-40">
<div class="swiper-wrapper">
<a href="" class="swiper-slide">
<div class="event-block relative w-full">
<div class="w-full rounded-30">
<img src="assets/images/general/event1.jfif" alt="">
</div>
<div class="flex items-center gap-20 py-20 px-20 bg-white rounded-30">
<div>
<h4 class="text-16 text-ter">Apr</h4>
<h4 class="text-18 font-bold text-black">14</h4>
@foreach ($previousEvents as $event)
<a href="" class="swiper-slide">
<div class="event-block relative w-full">
<div class="w-full rounded-30">
<img src="{{ asset($event->image) }}" alt="">
</div>
<div>
<h3 class="text-16 text-black">Free ilets Class: Raffles Educare Associates</h3>
<p class="text-14 p-0 m-0 text-grey">Join the free ilets Classes </p>
<p class="text-14 text-grey">Starting from 5 pm - 7 pm </p>
<div class="flex items-center gap-20 py-20 px-20 bg-white rounded-30">
<div>
<h4 class="text-16 text-ter">Start</h4>
<h4 class="text-18 font-bold text-black">{{ $event->start_date }}</h4>
</div>
<div>
<h3 class="text-16 text-black">{{ $event->title }}</h3>
<p class="text-14 p-0 m-0 text-grey">{{ $event->short_description }} </p>
</div>
</div>
</div>
</div>
</a>
</a>
@endforeach
<a href="" class="swiper-slide">
<div class="event-block relative w-full">
<div class="w-full rounded-30">
<img src="assets/images/general/event1.jfif" alt="">
</div>
<div class="flex items-center gap-20 py-20 px-20 bg-white rounded-30">
<div>
<h4 class="text-16 text-ter">Apr</h4>
<h4 class="text-18 font-bold text-black">14</h4>
</div>
<div>
<h3 class="text-16 text-black">Free ilets Class: Raffles Educare Associates</h3>
<p class="text-14 p-0 m-0 text-grey">Join the free ilets Classes </p>
<p class="text-14 text-grey">Starting from 5 pm - 7 pm </p>
</div>
</div>
</div>
</a>
<a href="" class="swiper-slide">
<div class="event-block relative w-full">
<div class="w-full rounded-30">
<img src="assets/images/general/event1.jfif" alt="">
</div>
<div class="flex items-center gap-20 py-20 px-20 bg-white rounded-30">
<div>
<h4 class="text-16 text-ter">Apr</h4>
<h4 class="text-18 font-bold text-black">14</h4>
</div>
<div>
<h3 class="text-16 text-black">Free ilets Class: Raffles Educare Associates</h3>
<p class="text-14 p-0 m-0 text-grey">Join the free ilets Classes </p>
<p class="text-14 text-grey">Starting from 5 pm - 7 pm </p>
</div>
</div>
</div>
</a>
<a href="" class="swiper-slide">
<div class="event-block relative w-full">
<div class="w-full rounded-30">
<img src="assets/images/general/event1.jfif" alt="">
</div>
<div class="flex items-center gap-20 py-20 px-20 bg-white rounded-30">
<div>
<h4 class="text-16 text-ter">Apr</h4>
<h4 class="text-18 font-bold text-black">14</h4>
</div>
<div>
<h3 class="text-16 text-black">Free ilets Class: Raffles Educare Associates</h3>
<p class="text-14 p-0 m-0 text-grey">Join the free ilets Classes </p>
<p class="text-14 text-grey">Starting from 5 pm - 7 pm </p>
</div>
</div>
</div>
</a>
<a href="" class="swiper-slide">
<div class="event-block relative w-full">
<div class="w-full rounded-30">
<img src="assets/images/general/event1.jfif" alt="">
</div>
<div class="flex items-center gap-20 py-20 px-20 bg-white rounded-30">
<div>
<h4 class="text-16 text-ter">Apr</h4>
<h4 class="text-18 font-bold text-black">14</h4>
</div>
<div>
<h3 class="text-16 text-black">Free ilets Class: Raffles Educare Associates</h3>
<p class="text-14 p-0 m-0 text-grey">Join the free ilets Classes </p>
<p class="text-14 text-grey">Starting from 5 pm - 7 pm </p>
</div>
</div>
</div>
</a>
</div>
<!-- Pagination -->
<!-- <div class="swiper-pagination"></div> -->
@@ -259,109 +97,31 @@
<h2 class="ld-fh-element inline-block relative mt-10 mb-0 section-heading-sec">
Blog
</h2>
<p class="text-18 text-center">Lorem ipsum dolor sit amet consectetur adipisicing elit. Voluptate, assumenda.
<p class="text-18 text-center">Our blog
features articles written by experts in the field, providing valuable information to help you achieve
your goals.</p>
</p>
</div>
<div class="swiper swiper-events mt-40 mb-20">
<div class="swiper-wrapper">
<a href="" class="swiper-slide flex flex-col gap-20 p-10 blog-post">
<div class="w-100percent h-210 overflow-hidden rounded-16">
<img class="w-full h-full object-cover rounded-16" src="assets/images/general/blog1.jfif"
alt="">
</div>
<div>
<span class="bg-gray text-sec rounded-30 text-10 py-5 px-10 mt-10">20 min read</span>
<h2 class="text-20 text-ter pt-10">How Successfully Used Paid Marketing to Drive Incremental
Ticket Sales</h2>
</div>
<div class="flex flex-col gap-10">
<p class="text-14 text-black">Lorem ipsum dolor sit amet consectetur adipisicing elit.
Inventore reprehenderit, dolor ad quis dignissimos aliquid nesciunt distinctio suscipit
ipsam voluptatum.</p>
<p class="text-12">12 Mar - Jhon Doe</p>
</div>
</a>
<a href="" class="swiper-slide flex flex-col gap-20 p-10 blog-post">
<div class="w-100percent h-210 overflow-hidden rounded-16">
<img class="w-full h-full object-cover rounded-16" src="assets/images/general/blog1.jfif"
alt="">
</div>
<div>
<span class="bg-gray text-sec rounded-30 text-10 py-5 px-10 mt-10">20 min read</span>
<h2 class="text-20 text-ter pt-10">How Successfully Used Paid Marketing to Drive Incremental
Ticket Sales</h2>
</div>
<div class="flex flex-col gap-10">
<p class="text-14 text-black">Lorem ipsum dolor sit amet consectetur adipisicing elit.
Inventore reprehenderit, dolor ad quis dignissimos aliquid nesciunt distinctio suscipit
ipsam voluptatum.</p>
<p class="text-12">12 Mar - Jhon Doe</p>
</div>
</a>
<a href="" class="swiper-slide flex flex-col gap-20 p-10 blog-post">
<div class="w-100percent h-210 overflow-hidden rounded-16">
<img class="w-full h-full object-cover rounded-16" src="assets/images/general/blog1.jfif"
alt="">
</div>
<div>
<span class="bg-gray text-sec rounded-30 text-10 py-5 px-10 mt-10">20 min read</span>
<h2 class="text-20 text-ter pt-10">How Successfully Used Paid Marketing to Drive Incremental
Ticket Sales</h2>
</div>
<div class="flex flex-col gap-10">
<p class="text-14 text-black">Lorem ipsum dolor sit amet consectetur adipisicing elit.
Inventore reprehenderit, dolor ad quis dignissimos aliquid nesciunt distinctio suscipit
ipsam voluptatum.</p>
<p class="text-12">12 Mar - Jhon Doe</p>
</div>
</a>
<a href="" class="swiper-slide flex flex-col gap-20 p-10 blog-post">
<div class="w-100percent h-210 overflow-hidden rounded-16">
<img class="w-full h-full object-cover rounded-16" src="assets/images/general/blog1.jfif"
alt="">
</div>
<div>
<span class="bg-gray text-sec rounded-30 text-10 py-5 px-10 mt-10">20 min read</span>
<h2 class="text-20 text-ter pt-10">How Successfully Used Paid Marketing to Drive Incremental
Ticket Sales</h2>
</div>
<div class="flex flex-col gap-10">
<p class="text-14 text-black">Lorem ipsum dolor sit amet consectetur adipisicing elit.
Inventore reprehenderit, dolor ad quis dignissimos aliquid nesciunt distinctio suscipit
ipsam voluptatum.</p>
<p class="text-12">12 Mar - Jhon Doe</p>
</div>
</a>
<a href="" class="swiper-slide flex flex-col gap-20 p-10 blog-post">
<div class="w-100percent h-210 overflow-hidden rounded-16">
<img class="w-full h-full object-cover rounded-16" src="assets/images/general/blog1.jfif"
alt="">
</div>
<div>
<span class="bg-gray text-sec rounded-30 text-10 py-5 px-10 mt-10">20 min read</span>
<h2 class="text-20 text-ter pt-10">How Successfully Used Paid Marketing to Drive Incremental
Ticket Sales</h2>
</div>
<div class="flex flex-col gap-10">
<p class="text-14 text-black">Lorem ipsum dolor sit amet consectetur adipisicing elit.
Inventore reprehenderit, dolor ad quis dignissimos aliquid nesciunt distinctio suscipit
ipsam voluptatum.</p>
<p class="text-12">12 Mar - Jhon Doe</p>
</div>
</a>
@foreach ($blogs as $blog)
<a href="{{ route('blog.single', $blog->slug) }}"
class="swiper-slide flex flex-col gap-20 p-10 blog-post">
<div class="w-100percent h-210 overflow-hidden rounded-16">
<img class="w-full h-full object-cover rounded-16" src="{{ asset($blog->image) }}"
alt="">
</div>
<div>
<span class="bg-gray text-sec rounded-30 text-10 py-5 px-10 mt-10">20 min read</span>
<h2 class="text-20 text-ter pt-10">{{ $blog->title }}</h2>
</div>
<div class="flex flex-col gap-10">
<p class="text-14 text-black">{{ $blog->short_description }}</p>
</div>
</a>
@endforeach
</div>
<!-- Pagination -->
<!-- <div class="swiper-pagination"></div> -->
@@ -369,12 +129,6 @@
<div class="swiper-button-next"></div>
<div class="swiper-button-prev"></div>
</div>
<div class="flex justify-center items-center ">
<button class="text-center bg-white text-ter rounded-30 text-14">Load More</button>
</div>
</div>
@endsection

View File

@@ -9,27 +9,20 @@
<div class="row sm:px-20 pr-30 first-row pt-20 pb-30">
<div class="col col-xl-6">
<div class="franchise-model">
<img src="assets/images/backgrounds_general/franchise-model.png" alt="">
<img src="{{ asset($page->image) }}" alt="">
</div>
</div>
<div class="col col-xl-6">
<div class="flex flex-col gap-10 pb-30 border-bottom">
<h2 class="md:text-20 text-50 text-sec">Franchise</h2>
<h2 class="md:text-20 text-50 text-sec">{{ $page->title }}</h2>
<h3 class="md:text-20 text-50 text-brand">Raffles EduCare</h3>
<p>Raffles Educare Associates Pvt. Ltd., established in 2005, is one of the best educational
consultancy
with a successful track record in the overseas education.Over the 15 years of excellence we have
97%
visa success rate along with highest student satisfaction, fulfilling the career dreams of many
students. Since the year of inception, we have been providing educational services of
international
standards and escalated to be one of the leading institutions.</p>
{!! $page->description !!}
</div>
<div class="flex flex-col gap-20 pt-20">
<h5 class="text-20 text-black">Have any questions?
Call/Whatsapp</h5>
<a class="text-26 text-black" href="tel:9801086208">+977 9801086208</a>
<a class="text-26 text-black" href="tel:9801086208">+977 {{ setting('mobile') }}</a>
</div>
</div>
@@ -108,19 +101,20 @@
<div class="franchise-form bg-white">
<form action="">
<form action="{{ route('franchise.store') }}" method="post" id="franchise-form">
@csrf
<label class="text-16 pb-5" for="">Your Name <span
class="text-brand">(Required)</span></label>
<div class="flex gap-10 ">
<div class="w-full">
<label class="text-14 pb-5" for="">First</label>
<input class="w-full mb-30 rounded-6 py-10 text-14 px-10" type="text" name=""
id="">
<input class="w-full mb-30 rounded-6 py-10 text-14 px-10" type="text"
name="first_name" id="">
</div>
<div class="w-full">
<label class="text-14 pb-5" for="">Last</label>
<input class="w-full mb-30 rounded-6 py-10 text-14 px-10" type="text" name=""
id="">
<input class="w-full mb-30 rounded-6 py-10 text-14 px-10" type="text"
name="last_name" id="">
</div>
@@ -130,33 +124,33 @@
<label class="text-16 pb-5" for="">Your Email Address <span
class="text-brand">(Required)</span></label>
<input class="w-full mb-20 rounded-6 py-10 text-14 px-10" type="email" name=""
<input class="w-full mb-20 rounded-6 py-10 text-14 px-10" type="email" name="email"
id="">
<label class="text-16 pb-5" for="">Your Phone <span
class="text-brand">(Required)</span></label>
<input class="w-full mb-20 rounded-6 py-10 text-14 px-10" type="text" name=""
<input class="w-full mb-20 rounded-6 py-10 text-14 px-10" type="text" name="phone"
id="">
<label class="text-16 pb-5" for="">Your Address <span
class="text-brand">(Required)</span></label>
<input class="w-full mb-20 rounded-6 py-10 text-14 px-10" type="text" name=""
<input class="w-full mb-20 rounded-6 py-10 text-14 px-10" type="text" name="address"
id="">
<div class="flex gap-10 ">
<div class="w-full">
<label class="text-14 pb-5" for="">City</label>
<input class="w-full mb-30 rounded-6 py-10 text-14 px-10" type="text"
name="" id="">
name="city" id="">
</div>
<div class="w-full">
<label class="text-14 pb-5" for="">State/Region/Province</label>
<input class="w-full mb-30 rounded-6 py-10 text-14 px-10" type="text"
name="" id="">
name="state" id="">
</div>
@@ -168,7 +162,7 @@
<div class="sm:block flex gap-10 ">
<div class="w-full">
<label class="text-14 pb-5" for="">Level to Invest</label>
<select class="w-full py-5" name="" id="">
<select class="w-full py-5" name="invest_level" id="">
<option value="">Less than $20,000</option>
<option value="">Less than $30,000</option>
<option value="">Less than $40,000</option>
@@ -176,9 +170,9 @@
</select>
<!-- <select name="" id="franchise-invest">
<option value="" selected hidden> Less than $10,000</option>
<option value=""></option>
</select> -->
<option value="" selected hidden> Less than $10,000</option>
<option value=""></option>
</select> -->
</div>
@@ -186,7 +180,7 @@
<label class="text-14 pb-5" for="">Do you currently own a business?
(Yes/No)</label>
<input class="w-full mb-30 rounded-6 py-10 text-14 px-10" type="text"
name="" id="">
name="own_business" id="">
</div>
@@ -199,26 +193,26 @@
business</label>
<textarea class="w-full mb-20 rounded-6 py-10 text-14 px-10" name="" id=""></textarea>
<textarea class="w-full mb-20 rounded-6 py-10 text-14 px-10" name="yes_own_des" id=""></textarea>
<div class="sm:block flex gap-10 ">
<div class="w-full">
<label class="text-14 pb-5" for="">Preferred Franchise Location</label>
<input class="w-full mb-30 rounded-6 py-10 text-14 px-10" type="text"
name="" id="">
name="franchise_location" id="">
</div>
<div class="w-full">
<label class="text-14 pb-5" for="">Timeframe to Start</label>
<select class="w-full py-5" name="" id="">
<select class="w-full py-5" name="start_time_frame" id="">
<option value="">within 1 year</option>
<option value="">After 1 year</option>
</select>
<!-- <select name="" id="franchise-timeframe">
<option value="" selected hidden> within 6 months</option>
<option value=""></option>
</select> -->
<option value="" selected hidden> within 6 months</option>
<option value=""></option>
</select> -->
</div>
@@ -228,17 +222,18 @@
</div>
<div class="sm:w-full w-50percent">
<label class="text-14 pb-5" for="">Do u already have an office setup ?</label>
<input class="w-full mb-30 rounded-6 py-10 text-14 px-10" type="text" name=""
id="">
<input class="w-full mb-30 rounded-6 py-10 text-14 px-10" type="text"
name="office_setup" id="">
</div>
<label class="text-14 pb-5" for=""> Please add your bussiness portfolio website ,and
let us know
if you have any questions?</label>
<textarea class="w-full mb-20 rounded-6 py-10 text-14 px-10" name="" id=""></textarea>
<textarea class="w-full mb-20 rounded-6 py-10 text-14 px-10" name="website" id=""></textarea>
<button class="button-hover px-20 py-10 bg-sec text-white text-16 border-0">Send
<button type="submit" id="franchise-submit"
class="button-hover px-20 py-10 bg-sec text-white text-16 border-0 franchise-submit">Send
Message</button>
</form>
</div>
@@ -250,15 +245,15 @@
<div class="flex justify-center gap-30 pt-30 flex-wrap">
<a class="flex items-center gap-10 border px-10 py-20" href="mailto:info@raffleseducare.com">
<i class="fa-solid fa-envelope text-brand text-18"></i>
<p class="text-white text-18 m-0 p-0">info@raffleseducare.com</p>
<p class="text-white text-18 m-0 p-0">{{ setting('email') }}</p>
</a>
<a class="flex items-center gap-10 border px-10 py-20" href="tel:info@+977-1234567890">
<i class="fa-solid fa-phone text-brand text-18"></i>
<p class="text-white text-18 m-0 p-0">+977-1234567890</p>
<p class="text-white text-18 m-0 p-0">+977-{{ setting('mobile') }}</p>
</a>
<div class="flex items-center gap-10 border px-10 py-20">
<i class="fa-solid fa-location-dot text-brand text-18"></i>
<p class="text-white text-18 m-0 p-0">Kathmandu, Nepal</p>
<p class="text-white text-18 m-0 p-0">{{ setting('location') }}</p>
</div>
</div>

View File

@@ -1,7 +1,7 @@
@extends('client.raffles.layouts.app')
@section('content')
<div class="services-banner">
<img src="assets/images/backgrounds_general/gallery-banner.png" width="1425" height="356" alt="Gallery ">
<img src="{{ $page->banner }}" width="1425" height="356" alt="Gallery ">
</div>
@@ -17,28 +17,9 @@
<div class="container">
<div class="gallery" id="gallery">
<img src="assets/images/gallery/1.png" alt="img1">
<img src="assets/images/gallery/2.png" alt="img1">
<img src="assets/images/gallery/3.png" alt="img1">
<img src="assets/images/gallery/4.png" alt="img1">
<img src="assets/images/gallery/5.png" alt="img1">
<img src="assets/images/gallery/16.png" alt="img1">
<img src="assets/images/gallery/7.png" alt="img1">
<img src="assets/images/gallery/8.png" alt="img1">
<img src="assets/images/gallery/9.png" alt="img1">
<img src="assets/images/gallery/10.png" alt="img1">
<img src="assets/images/gallery/11.png" alt="img1">
<img src="assets/images/gallery/12.png" alt="img1">
<img src="assets/images/gallery/13.png" alt="img1">
<img src="assets/images/gallery/14.png" alt="img1">
<img src="assets/images/gallery/15.png" alt="img1">
<img src="assets/images/gallery/16.png" alt="img1">
<img src="assets/images/gallery/17.png" alt="img1">
<img src="assets/images/gallery/17.png" alt="img1">
<img src="assets/images/gallery/17.png" alt="img1">
<img src="assets/images/gallery/17.png" alt="img1">
<img src="assets/images/gallery/9.png" alt="img1">
<img src="assets/images/gallery/11.png" alt="img1">
@foreach ($page->images as $image)
<img src="{{ asset($image) }}" alt="img1">
@endforeach
</div>

View File

@@ -313,18 +313,19 @@
<h3 class="text-brand text-20">Let's Connect Quick</h3>
<div class="divider"></div>
<form class="pt-20" action="">
<form action="{{ route('enquiry.store') }}" method="post" id="contact-form">
@csrf
<input class="w-full mb-30 rounded-6 py-15 text-14 px-10 border-bottom" type="text"
name="" id="" placeholder="Your Name">
name="name" id="" placeholder="Your Name" required>
<input class="w-full mb-30 rounded-6 py-15 text-14 px-10" type="email" name=""
id="" placeholder="Your Email">
<input class="w-full mb-30 rounded-6 py-15 text-14 px-10" type="email" name=""
id="" placeholder="Phone">
<textarea class="w-full mb-40 rounded-6 text-14 px-10" name="" id="" placeholder="Your Message"></textarea>
<button class="px-10 py-10 bg-brand text-white rounded-10 text-16 border-0 button-hover">
<input class="w-full mb-30 rounded-6 py-15 text-14 px-10" type="email" name="email"
id="email" placeholder="Your Email" required>
<input class="w-full mb-30 rounded-6 py-15 text-14 px-10" type="text" name="mobile"
id="mobile" placeholder="Phone" required>
<textarea class="w-full mb-40 rounded-6 text-14 px-10" name="message" id="" placeholder="Your Message"
required></textarea>
<button type="submit" id="submit-btn"
class="px-10 py-10 bg-brand text-white rounded-10 text-16 border-0 button-hover">
<i class="fa-solid fa-paper-plane text-white text-16 pr-5"></i>
Send Message</button>
</form>

View File

@@ -3,7 +3,7 @@
<section class="career">
<div class="p-20 ">
<div class="h-175 rounded-10 bg-after relative">
<img class="h-full w-full rounded-30 object-cover" src="assets/images/general/about-banner.png" alt="">
<img class="h-full w-full rounded-30 object-cover" src="{{ asset($page->banner) }}" alt="">
</div>
@@ -21,53 +21,7 @@
<section class="lqd-section pt-40 pb-30">
<div class="container">
<section>
<div class="pb-30">
<h5 class="text-14 font-bold underline">Last updated: April 17, 2025</h5>
</div>
<div class="pb-20">
<p class="text-16 text-black">Lorem ipsum, dolor sit amet consectetur adipisicing elit. Molestiae
sed vitae explicabo unde veritatis? Assumenda dignissimos atque consectetur facilis soluta.</p>
<p class="text-16 text-black">Lorem ipsum, dolor sit amet consectetur adipisicing elit. Molestiae
sed vitae explicabo unde veritatis? Assumenda dignissimos atque consectetur facilis soluta.</p>
<p class="text-16 text-black"> Lorem ipsum, dolor sit amet consectetur adipisicing elit. Molestiae
sed vitae explicabo unde veritatis? Assumenda dignissimos atque consectetur facilis soluta.</p>
</div>
<div class="pb-20">
<h4 class="text-24 font-bold pb-20">Accounts</h4>
<p class="text-16 text-black">Lorem ipsum, dolor sit amet consectetur adipisicing elit. Molestiae
sed vitae explicabo unde veritatis? Assumenda dignissimos atque consectetur facilis soluta.
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Nemo, assumenda!</p>
<p class="text-16 text-black">Lorem ipsum, dolor sit amet consectetur adipisicing elit. Molestiae
sed vitae explicabo unde veritatis? Assumenda dignissimos atque consectetur facilis soluta.</p>
<p class="text-16 text-black">Lorem ipsum, dolor sit amet consectetur adipisicing elit. Molestiae
sed vitae explicabo unde veritatis? Assumenda dignissimos atque consectetur facilis soluta.</p>
</div>
<div class="pb-20">
<h4 class="text-24 font-bold pb-20">Links To Other Web Sites</h4>
<p class="text-16 text-black">Lorem ipsum, dolor sit amet consectetur adipisicing elit. Molestiae
sed vitae explicabo unde veritatis? Assumenda dignissimos atque consectetur facilis soluta.
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Nemo, assumenda!</p>
<p class="text-16 text-black">Lorem ipsum, dolor sit amet consectetur adipisicing elit. Molestiae
sed vitae explicabo unde veritatis? Assumenda dignissimos atque consectetur facilis soluta.</p>
<p class="text-16 text-black">Lorem ipsum, dolor sit amet consectetur adipisicing elit. Molestiae
sed vitae explicabo unde veritatis? Assumenda dignissimos atque consectetur facilis soluta.</p>
</div>
<div class="pb-20">
<h4 class="text-24 font-bold pb-20">Termination</h4>
<p class="text-16 text-black">Lorem ipsum, dolor sit amet consectetur adipisicing elit. Molestiae
sed vitae explicabo unde veritatis? Assumenda dignissimos atque consectetur facilis soluta.
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Nemo, assumenda!</p>
<p class="text-16 text-black">Lorem ipsum, dolor sit amet consectetur adipisicing elit. Molestiae
sed vitae explicabo unde veritatis? Assumenda dignissimos atque consectetur facilis soluta.</p>
<p class="text-16 text-black">Lorem ipsum, dolor sit amet consectetur adipisicing elit. Molestiae
sed vitae explicabo unde veritatis? Assumenda dignissimos atque consectetur facilis soluta.</p>
</div>
</section>
{!! $page->description !!}

View File

@@ -7,23 +7,25 @@
</div>
<section class="container py-30 free-resources">
<div class="row">
<div class="col col-md-3"></div>
<div class="col col-md-9">
<div class="flex justify-between items-center ">
<div>
<div class="row">
<div class="col col-md-3"></div>
<div class="col col-md-9">
<div class="flex justify-between items-center ">
<div>
<h2 class="md:text-30 text-60 text-sec"> {{ $page->title }}</h2>
<div class="title-line "></div>
<h2 class="md:text-30 text-60 text-sec"> {{ $page->title }}</h2>
<div class="title-line "></div>
</div>
<button class="review-button"><p>Review</p></button>
</div>
<button class="review-button">
<p>Review</p>
</button>
</div>
</div>
</div>
</div>
@if ($page->children)
<section class="free-resources-content tab-container">
@@ -82,49 +84,61 @@
@php
$accordionId = "accordion-questions-{$index}";
@endphp
<div class="py-40">
<h3 class="text-20 text-brand">
{{ $page->title }} FAQ's
Frequently Asked Questions
</h3>
<div class="accordion accordion-title-underlined accordion-sm pt-20"
id="accordion-questions" role="tablist" aria-multiselectable="true">
@foreach ($page->custom as $key => $value)
<div class="accordion accordion-title-underlined accordion-sm pt-20"
id="{{ $accordionId }}" role="tablist" aria-multiselectable="true">
@foreach ($child->custom as $key => $item)
@php
$headingId = "heading-{$index}-{$key}";
$collapseId = "collapse-{$index}-{$key}";
@endphp
<div class="accordion-item panel mb-10">
<div class="accordion-heading" role="tab"
id="heading-question-{{ $key + 1 }}">
id="{{ $headingId }}">
<h4 class="accordion-title">
<a class="collapsed text-17 font-bold" role="button"
data-bs-toggle="collapse"
data-bs-parent="#accordion-questions"
href="index.php#collapse-question-item-{{ $key + 1 }}"
aria-expanded="false"
aria-controls="collapse-question-item-{{ $key + 1 }}">
<span
class="accordion-expander text-16 text-black"><i
href="#{{ $collapseId }}"
aria-expanded="{{ $loop->first ? 'true' : 'false' }}"
aria-controls="{{ $collapseId }}">
<span class="accordion-expander text-16 text-black">
<i
class="lqd-icn-ess icon-ion-ios-arrow-forward"></i>
<i
class="lqd-icn-ess icon-ion-ios-arrow-forward"></i></span><span
class="accordion-title-txt">{{ $value['icon'] ?? '' }}</span>
class="lqd-icn-ess icon-ion-ios-arrow-forward"></i>
</span>
<span
class="accordion-title-txt">{{ $item['icon'] ?? '' }}</span>
</a>
</h4>
</div>
<div id="collapse-question-item-{{ $key + 1 }}"
class="accordion-collapse collapse"
data-bs-parent="#accordion-questions" role="tabpanel"
aria-labelledby="heading-question-{{ $key + 1 }}">
<div id="{{ $collapseId }}"
class="accordion-collapse collapse {{ $loop->first ? 'show' : '' }}"
data-bs-parent="#{{ $accordionId }}" role="tabpanel"
aria-labelledby="{{ $headingId }}">
<div
class="accordion-content text-14 leading-20 text-black">
<p>{{ $value['key'] ?? '' }}</p>
<p>{{ $item['key'] ?? '' }}</p>
</div>
</div>
</div>
@endforeach
</div>
</div>
<!-- blog -->
<div class="lqd-section blog pt-20" id="blog" data-custom-animations="true"
{{-- <div class="lqd-section blog pt-20" id="blog" data-custom-animations="true"
data-ca-options='{"animationTarget": ".btn, .animation-element", "ease": "power4.out", "initValues":{"x": "-10px", "y": "10px", "opacity":0} , "animations":{"x": "0px", "y": "0px", "opacity":1}}'>
<div class="container">
<div class="row">
@@ -174,7 +188,7 @@
</div>
</div>
</div>
</div>
</div> --}}
</div>
</div>
</div>

View File

@@ -30,7 +30,7 @@
@csrf
<input class="w-full mb-30 rounded-6 py-15 text-14 px-10" type="text" name="name"
id="" placeholder="Full Name">
<input class="w-full mb-30 rounded-6 py-15 text-14 px-10" type="text" name="phone"
<input class="w-full mb-30 rounded-6 py-15 text-14 px-10" type="text" name="mobile"
id="" placeholder="Phone">
<input class="w-full mb-30 rounded-6 py-15 text-14 px-10" type="email" name="email"
id="" placeholder="Email">

View File

@@ -20,7 +20,7 @@
<div class="row ">
@foreach ($firstCourse->custom as $index => $data)
<div class=" col col-md-3">
<a href="course-finder.php" class=" course-box rounded-10 ">
<a href="{{ route('program.coursefinder') }}" class=" course-box rounded-10 ">
<div class="">
<img class="w-ful " src="{{ asset($firstCourse->images[$index]) }}" alt="">
</div>

View File

@@ -22,6 +22,11 @@ Route::middleware('guest')->group(function () {
Route::post('login', [AuthenticatedSessionController::class, 'store']);
Route::get('admin/login', [AuthenticatedSessionController::class, 'create'])
->name('admin.login');
Route::post('admin/login', [AuthenticatedSessionController::class, 'store']);
Route::get('forgot-password', [PasswordResetLinkController::class, 'create'])
->name('password.request');