Compare commits

..

29 Commits

Author SHA1 Message Date
40d34a7692 fix: Adjust cost calculation based on service status in cost result view 2025-08-25 17:22:42 +05:45
658d3600a2 maintained filteration in stay type in cost calculator 2025-08-25 16:20:07 +05:45
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
10b549315f social platform link 2025-08-22 11:51:06 +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
65 changed files with 2999 additions and 829 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 = [ $rules = [
'name' => 'required|string', 'name' => 'required|string',
'email' => 'required|email', 'email' => 'required|email',
'mobile' => 'required|string',
'digits:10', 'digits:10',
'subject' => 'nullable', 'subject' => 'nullable',
'message' => 'nullable|max:250', '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' => 'Name', 'data' => 'name', 'name' => 'name'],
['title' => 'Email', 'data' => 'email', 'name' => 'email'], ['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' => 'Class', 'data' => 'class', 'name' => 'class'],
['title' => 'Subject', 'data' => 'subject', 'name' => 'subject'], ['title' => 'Subject', 'data' => 'subject', 'name' => 'subject'],
['title' => 'Message', 'data' => 'message', 'name' => 'message'], ['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 Illuminate\Support\Facades\Route;
use Modules\CCMS\Http\Controllers\BlogController; use Modules\CCMS\Http\Controllers\BlogController;
use Modules\CCMS\Http\Controllers\BranchController; use Modules\CCMS\Http\Controllers\BranchController;
use Modules\CCMS\Http\Controllers\CareerController;
use Modules\CCMS\Http\Controllers\CategoryController; use Modules\CCMS\Http\Controllers\CategoryController;
use Modules\CCMS\Http\Controllers\CounselorController; use Modules\CCMS\Http\Controllers\CounselorController;
use Modules\CCMS\Http\Controllers\CounterController; use Modules\CCMS\Http\Controllers\CounterController;
use Modules\CCMS\Http\Controllers\CountryController; use Modules\CCMS\Http\Controllers\CountryController;
use Modules\CCMS\Http\Controllers\EnquiryController; use Modules\CCMS\Http\Controllers\EnquiryController;
use Modules\CCMS\Http\Controllers\EventController;
use Modules\CCMS\Http\Controllers\FaqCategoryController; use Modules\CCMS\Http\Controllers\FaqCategoryController;
use Modules\CCMS\Http\Controllers\FaqController; use Modules\CCMS\Http\Controllers\FaqController;
use Modules\CCMS\Http\Controllers\FranchiseController;
use Modules\CCMS\Http\Controllers\GalleryCategoryController; use Modules\CCMS\Http\Controllers\GalleryCategoryController;
use Modules\CCMS\Http\Controllers\GalleryController; use Modules\CCMS\Http\Controllers\GalleryController;
use Modules\CCMS\Http\Controllers\InstitutionController; use Modules\CCMS\Http\Controllers\InstitutionController;
use Modules\CCMS\Http\Controllers\NewsletterController;
use Modules\CCMS\Http\Controllers\PageController; use Modules\CCMS\Http\Controllers\PageController;
use Modules\CCMS\Http\Controllers\PartnerController; use Modules\CCMS\Http\Controllers\PartnerController;
use Modules\CCMS\Http\Controllers\PopupController; 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 | Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which | routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great! | contains the "web" middleware group. Now create something great!
| |Eventcontr
*/ */
Route::group(['middleware' => ['web', 'auth', 'permission'], 'prefix' => 'admin/'], function () { 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::get('service/toggle/{id}', [ServiceController::class, 'toggle'])->name('service.toggle');
Route::resource('service', ServiceController::class)->names('service'); 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::post('branch/reorder', [BranchController::class, 'reorder'])->name('branch.reorder');
Route::get('branch/toggle/{id}', [BranchController::class, 'toggle'])->name('branch.toggle'); Route::get('branch/toggle/{id}', [BranchController::class, 'toggle'])->name('branch.toggle');
Route::resource('branch', BranchController::class)->names('branch'); 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::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('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']); Route::resource('counselor', CounselorController::class)->names('counselor')->only(['index', 'store', 'destroy']);
}); });

View File

@@ -14,10 +14,9 @@ class CostCalculatorService
$query->where('country_id', $request->country_id); $query->where('country_id', $request->country_id);
} }
if ($request->filled('stay_type_id')) { // if ($request->filled('stay_type_id')) {
$query->where("stay_type_id", $request->stay_type_id); // $query->where("stay_type_id", $request->stay_type_id);
} // }
})->latest()->paginate(10)->withQueryString(); })->latest()->paginate(10)->withQueryString();
} }

View File

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

View File

@@ -3,6 +3,10 @@
use App\Http\Controllers\WebsiteController; use App\Http\Controllers\WebsiteController;
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
use Modules\CCMS\Http\Controllers\EnquiryController; 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\CoopController;
use Modules\CourseFinder\Http\Controllers\ProgramController; use Modules\CourseFinder\Http\Controllers\ProgramController;
use Modules\CourseFinder\Http\Controllers\ProgramLevelController; 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('/home/resources', [WebsiteController::class, 'resources']);
Route::get('getCoursesList', [ProgramController::class, 'getCoursesList'])->name('program.getCoursesList'); Route::get('getCoursesList', [ProgramController::class, 'getCoursesList'])->name('program.getCoursesList');
Route::post('enquiry', [EnquiryController::class, 'store'])->name('enquiry.store'); 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('getCost', [WebsiteController::class, 'getCost'])->name('cost.getCost');
Route::get('/thankyou', [WebsiteController::class, 'thankyouPage'])->name('thankyou'); Route::get('/thankyou', [WebsiteController::class, 'thankyouPage'])->name('thankyou');

View File

@@ -1,9 +1,11 @@
<?php <?php
use Modules\CCMS\Models\Blog; use Modules\CCMS\Models\Blog;
use Modules\CCMS\Models\Career;
use Modules\CCMS\Models\Category; use Modules\CCMS\Models\Category;
use Modules\CCMS\Models\Counter; use Modules\CCMS\Models\Counter;
use Modules\CCMS\Models\Country; use Modules\CCMS\Models\Country;
use Modules\CCMS\Models\Event;
use Modules\CCMS\Models\Faq; use Modules\CCMS\Models\Faq;
use Modules\CCMS\Models\FaqCategory; use Modules\CCMS\Models\FaqCategory;
use Modules\CCMS\Models\Gallery; use Modules\CCMS\Models\Gallery;
@@ -150,6 +152,44 @@ function getServices($limit = null, $order = 'desc')
->get(); ->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') function getInstitutions($limit = null, $order = 'desc')
{ {
return Institution::query() return Institution::query()

View File

@@ -5,6 +5,7 @@ namespace App\Http\Controllers;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\View; use Illuminate\Support\Facades\View;
use Modules\CCMS\Models\Blog; use Modules\CCMS\Models\Blog;
use Modules\CCMS\Models\Career;
use Modules\CCMS\Models\Country; use Modules\CCMS\Models\Country;
use Modules\CCMS\Models\Institution; use Modules\CCMS\Models\Institution;
use Modules\CCMS\Models\Page; use Modules\CCMS\Models\Page;
@@ -17,6 +18,7 @@ use Modules\CourseFinder\Models\Coop;
use Modules\CourseFinder\Models\Program; use Modules\CourseFinder\Models\Program;
use Modules\CourseFinder\Models\ProgramLevel; use Modules\CourseFinder\Models\ProgramLevel;
use Modules\CourseFinder\Services\ProgramService; use Modules\CourseFinder\Services\ProgramService;
use Illuminate\Support\Str;
class WebsiteController extends Controller class WebsiteController extends Controller
{ {
@@ -33,6 +35,8 @@ class WebsiteController extends Controller
$countries = Country::where('status', 1)->where('parent_id', null)->get(); $countries = Country::where('status', 1)->where('parent_id', null)->get();
$interviews = Service::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(); $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'); $this->path = config('app.client');
view()->share([ view()->share([
@@ -42,6 +46,8 @@ class WebsiteController extends Controller
'countries' => $countries, 'countries' => $countries,
'services' => $services, 'services' => $services,
'interviews' => $interviews, 'interviews' => $interviews,
'previousEvents' => $data['previousEvents'],
'upcomingEvents' => $data['upcomingEvents'],
]); ]);
} }
@@ -126,6 +132,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) public function testSingle($alias)
{ {
$testPreparations = $data["page"] = Test::where('status', 1) $testPreparations = $data["page"] = Test::where('status', 1)
@@ -176,7 +189,8 @@ class WebsiteController extends Controller
$page = getPageWithChildrenBySlug(parent: $parent, slug: $slug, limit: null, order: 'asc'); $page = getPageWithChildrenBySlug(parent: $parent, slug: $slug, limit: null, order: 'asc');
$teams = getTeams(limit: null, order: 'asc'); $teams = getTeams(limit: null, order: 'asc');
$blogs = getBlogs(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) { if (!$page) {
return view('client.raffles.errors.404'); return view('client.raffles.errors.404');
} }
@@ -187,7 +201,7 @@ class WebsiteController extends Controller
return view('client.raffles.errors.404'); 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() public function fallback()
@@ -259,61 +273,80 @@ class WebsiteController extends Controller
public function getCost(Request $request) public function getCost(Request $request)
{ {
$data['costss'] = $this->costCalculatorService->findAll($request); $costs = $this->costCalculatorService->findAll($request);
foreach ($data['costss'] as $value) {
$id = $value->id; if ($costs->isEmpty()) {
return view("client.raffles.errors.404");
} }
$id = $costs->last()->id;
$cost = CostCalculator::with([ $cost = CostCalculator::with([
'stayTypeLiving', 'stayTypeLiving',
'stayTypeAccomodation', 'stayTypeAccomodation',
'stayTypeOnetime', 'stayTypeOnetime',
'stayTypeService' 'stayTypeService'
])->findOrFail($id); ])->find($id);
$data['fee'] = Program::where('id', $request->program_id)->first();
$data['title'] = 'View Cost Calculation'; if (!$cost) {
$data['cost'] = $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) { $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; $accomodation = optional($cost->stayTypeAccomodation->firstWhere('title', $stayTypeTitle))->pivot;
$onetime = optional($cost->stayTypeOnetime->firstWhere('title', $stayTypeTitle))->pivot; $onetime = optional($cost->stayTypeOnetime->firstWhere('title', $stayTypeTitle))->pivot;
$service = optional($cost->stayTypeService->firstWhere('title', $stayTypeTitle))->pivot; $service = optional($cost->stayTypeService->firstWhere('title', $stayTypeTitle))->pivot;
return [ return [
'living' => [ 'living' => [
'monthly' => $living->monthly ?? 0, 'monthly' => $living->monthly ?? 0,
'yearly' => $living->yearly ?? 0, 'yearly' => $living->yearly ?? 0,
], ],
'accomodation' => [ 'accomodation' => [
'monthly' => $accomodation->monthly ?? 0, 'monthly' => $accomodation->monthly ?? 0,
'yearly' => $accomodation->yearly ?? 0, 'yearly' => $accomodation->yearly ?? 0,
], ],
'onetime' => [ 'onetime' => [
'visa' => $onetime->visa ?? 0, 'visa' => $onetime->visa ?? 0,
'biometrics' => $onetime->biometrics ?? 0, 'biometrics' => $onetime->biometrics ?? 0,
'sevis' => $onetime->sevis ?? 0, 'sevis' => $onetime->sevis ?? 0,
'application' => $onetime->application ?? 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' => [ 'service' => [
'flight_ticket' => $service->flight_ticket ?? 0, 'flight_ticket' => $service->flight_ticket ?? 0,
'insurance' => $service->insurance ?? 0, 'insurance' => $service->insurance ?? 0,
'extra' => $service->extra ?? 0, 'extra' => $service->extra ?? 0,
'total' => ($service->flight_ticket ?? 0) + ($service->insurance ?? 0) + ($service->extra ?? 0), 'total' => ($service->flight_ticket ?? 0) + ($service->insurance ?? 0) + ($service->extra ?? 0),
] ]
]; ];
}; };
$data['breakdowns'] = [ $data = [
'alone' => $getBreakdown('Alone'), 'serviceStatus' => $request->services,
'with_spouse' => $getBreakdown('With Spouse'), 'costs' => $costs,
'with_spouse_and_child' => $getBreakdown('With Spouse and Child'), 'fee' => $program,
'title' => 'View Cost Calculation',
'cost' => $cost,
'type' => Str::slug($request->status_type_id),
'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); return view('client.raffles.pages.cost-result', $data);
} }
public function thankyouPage(Request $r) public function thankyouPage(Request $r)
{ {
$data = new \stdClass(); $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) public function addToDocumentCollection(string $collectionName = 'uploads', string $file, ?string $documentName = null, ?int $referenceDocumentId = null)
{ {
dd($documentName);
if (!Storage::disk('public')->exists($collectionName)) { if (!Storage::disk('public')->exists($collectionName)) {
Storage::disk('public')->makeDirectory($collectionName); Storage::disk('public')->makeDirectory($collectionName);
} }

View File

@@ -45,6 +45,38 @@ return [
'can' => ['menu.index'], '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', 'text' => 'Offer Popup',
'url' => 'admin/popup', 'url' => 'admin/popup',
@@ -101,6 +133,14 @@ return [
'can' => ['service.index'], 'can' => ['service.index'],
], ],
[
'text' => 'Events',
'url' => 'admin/event',
'icon' => 'ri-feedback-line',
'module' => 'CCMS',
'can' => ['event.index'],
],
[ [
'text' => 'Team', 'text' => 'Team',
'url' => 'admin/team', 'url' => 'admin/team',
@@ -109,6 +149,14 @@ return [
'can' => ['team.index'], 'can' => ['team.index'],
], ],
[
'text' => 'Career',
'url' => 'admin/career',
'icon' => 'ri-feedback-line',
'module' => 'CCMS',
'can' => ['career.index'],
],
[ [
'text' => 'Blog', 'text' => 'Blog',
'icon' => 'ri-newspaper-line', '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', 'text' => 'Course Finder',

View File

@@ -618,13 +618,13 @@ z-index: 10000;
transition: .3s all ease-in-out; 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{ .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; width: 125px;
} }
.col.col-md-3:nth-child(4) .course-box img { .col.col-md-3:nth-child(4) .course-box img {
width: 120px; width: 110px;
} }
.how-it-work input, .how-it-work textarea { .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> @extends('client.raffles.layouts.app')
<html lang="en">
<head> @section('content')
<meta charset="UTF-8"> <div
<meta name="viewport" content="width=device-width, initial-scale=1.0"> 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">
<meta http-equiv="X-UA-Compatible" content="ie=edge"> <!-- Monkey Illustration -->
<title>Document</title> <div class="relative">
</head> <img src="{{ asset('raffles/assets/images/404/404.png') }}" alt="Monkey" class="animate-bounce" height="500px"
<body> width="700px">
<h1>404</h1> </div>
</body> <!-- Button -->
</html> <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>
<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> <script>
document.addEventListener('DOMContentLoaded', () => { document.addEventListener('DOMContentLoaded', () => {
const form = document.getElementById('counselor-form'); const form = document.getElementById('counselor-form');
@@ -259,6 +339,46 @@
}); });
</script> </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> <script>
$(document).ready(function() { $(document).ready(function() {
var weekdays = [ var weekdays = [

View File

@@ -61,16 +61,17 @@
<a href="{{ setting('whatsapp') }}" target="blank"> <i <a href="{{ setting('whatsapp') }}" target="blank"> <i
class="fa-brands fa-square-whatsapp"></i></a> class="fa-brands fa-square-whatsapp"></i></a>
</div> </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" <input class=" border-0 w-80percent px-20 text-14 py-10 text-black" type="email"
name="email" id="email" placeholder="Enter your 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> </form>
<div> <div>
<iframe <iframe src="{{ setting('map') }}" width="100%" height="150" style="border:0;"
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" allowfullscreen="" loading="lazy" referrerpolicy="no-referrer-when-downgrade"></iframe>
width="100%" height="150" style="border:0;" allowfullscreen="" loading="lazy"
referrerpolicy="no-referrer-when-downgrade"></iframe>
</div> </div>
</div> </div>

View File

@@ -10,7 +10,7 @@
<section class="section "> <section class="section ">
<div class="flex flex-col gap-5 justify-center items-center text-center"> <div class="flex flex-col gap-5 justify-center items-center text-center">
<h2 class="text-60 md:text-30 text-brand">Achievements</h2> <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> </div>
</section> </section>
@@ -18,59 +18,24 @@
<section class="lqd-section text-box-image pt-40 pb-30"> <section class="lqd-section text-box-image pt-40 pb-30">
<div class="container"> <div class="container">
<div class="row pb-20"> <div class="row pb-20">
<div class="col col-sm-6 col-md-4"> @foreach ($page->custom as $index => $data)
<a href="" class="flex flex-col gap-20 p-20 blog-post"> <div class="col col-sm-6 col-md-4">
<div class="w-100percent h-210 overflow-hidden rounded-16"> <a href="" class="flex flex-col gap-20 p-20 blog-post">
<img class="w-full h-full object-cover rounded-16" <div class="w-100percent h-210 overflow-hidden rounded-16">
src="{{ asset('raffles/assets/images/general/blog1.jfif') }}" alt=""> <img class="w-full h-full object-cover rounded-16"
</div> src="{{ asset($page->images[$index]) }}" alt="">
<div> </div>
<h2 class="text-20 text-ter text-center">How Successfully Used Paid Marketing to Drive <div>
Incremental <h2 class="text-20 text-ter text-center">{{ $data['key'] ?? '' }} </h2>
Ticket Sale </h2> </div>
</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="{{ asset('raffles/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>
{{-- <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> </div>
</section> </section>
</section> </section>
@endsection @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"> <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> <h2 class="text-60 md:text-30 text-sec">Career Opportunities</h2>
<div class="title-line mx-auto"></div> <div class="title-line mx-auto"></div>
<!-- <img class="w-20percent" src="assets/images/icons/line.png" alt=""> -->
</div> </div>
</section> </section>
<section class="lqd-section pt-40 pb-30"> <section class="lqd-section pt-40 pb-30">
<div class="container"> <div class="container">
<div class="row pb-20"> <div class="row pb-20">
@foreach ($careers as $career)
<div class="col col-sm-6 col-md-4"> <div class="col col-sm-6 col-md-4">
<a href="career-detail.php" class="career-box flex flex-col gap-20 border"> <a href="{{ route('career.single', $career->id) }}" class="career-box flex flex-col gap-20 border">
<span> <span>
<h5 class="text-white bg-sec px-20 py-10 rounded-10 text-18 mb-10 ml-0 inline-block">
<h5 class="text-white bg-sec px-20 py-10 rounded-10 text-18 mb-10 ml-0 inline-block"> {{ $career->department }}</h5>
Marketing</h5> </span>
</span> <h6 class="text-16 font-bols mb-10">{{ $career->job_title }}</h6>
<div class="flex items-center gap-10 mb-10">
<h6 class="text-16 font-bols mb-10">Seo Executive</h6> <i class="fa-solid fa-calendar-days text-20"></i>
<div class="flex items-center gap-10 mb-10"> <p class="font-bold text-16 text-black m-0 ">Post Date: {{ $career->created_At }}</p>
<i class="fa-solid fa-calendar-days text-20"></i> </div>
<p class="font-bold text-16 text-black m-0 ">Post Date: 2025/03/05</p> <div class="mb-10">
</div> <h2 class="text-16 font-medium text-gray">{{ $career->job_description }}</h2>
</div>
<div class="mb-10"> <button>View Detail</button>
<h2 class="text-16 font-medium text-gray">Join our team as an SEO Executive and help </a>
improve our website's visibility and search </div>
engine rankings. The ideal candidate will be…</h2> @endforeach
</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>
</div> </div>
</div> </div>
</section> </section>
</section> </section>
@endsection @endsection

View File

@@ -147,11 +147,13 @@
@foreach ($countries as $country) @foreach ($countries as $country)
<div class="col col-sm-4"> <div class="col col-sm-4">
<div> <div>
<label class="text-20 text-ter p-0 m-0 flex items-center gap-10 px-10 py-12 bg-white rounded-30 tabs"
for="{{ $country->id }}"> <input type="radio" name="country_id" value="{{ $country->id }}" <label
id="{{ $country->id }}"> {{ $country->title }} </label> class="text-20 text-ter p-0 m-0 flex items-center gap-10 px-10 py-12 bg-white rounded-30 tabs"
for="{{ $country->id }}"> <input type="radio" name="country_id"
value="{{ $country->id }}" id="{{ $country->id }}">
{{ $country->title }} </label>
</div> </div>
</div> </div>
@endforeach @endforeach
@@ -166,10 +168,12 @@
@foreach ($livingStatusOptions as $key => $status) @foreach ($livingStatusOptions as $key => $status)
<div class="col col-sm-6"> <div class="col col-sm-6">
<div class=""> <div class="">
<label class="text-20 text-ter p-0 m-0 flex items-center gap-10 px-10 py-12 bg-white rounded-30 tabs" <label
for="{{ $status }}"> <input type="radio" name="status_type_id" value="{{ $key }}" class="text-20 text-ter p-0 m-0 flex items-center gap-10 px-10 py-12 bg-white rounded-30 tabs"
id="{{ $status }}"> {{ $status }}</label> for="{{ $status }}"> <input type="radio"
name="status_type_id" value="{{ $status }}"
id="{{ $status }}"> {{ $status }}</label>
</div> </div>
</div> </div>
@endforeach @endforeach
@@ -183,18 +187,24 @@
<div class="row flex flex-wrap py-20"> <div class="row flex flex-wrap py-20">
<div class="col col-sm-4"> <div class="col col-sm-4">
<div> <div>
<label class="text-20 text-ter p-0 m-0 flex items-center gap-10 px-10 py-12 bg-white rounded-30 tabs" for="serviceYes"> <input name="services" type="radio" id="serviceYes"> Yes</label>
<label
class="text-20 text-ter p-0 m-0 flex items-center gap-10 px-10 py-12 bg-white rounded-30 tabs"
for="yes"> <input name="services" type="radio" id="yes"
value="yes"> Yes</label>
</div> </div>
</div> </div>
<div class="col col-sm-4"> <div class="col col-sm-4">
<div > <div>
<label class="text-20 text-ter p-0 m-0 flex items-center gap-10 px-10 py-12 bg-white rounded-30 tabs" for="serviceNo"> <input name="services" type="radio" id="serviceNo">No</label>
<label
class="text-20 text-ter p-0 m-0 flex items-center gap-10 px-10 py-12 bg-white rounded-30 tabs"
for="no"> <input name="services" type="radio" id="no"
value="no">No</label>
</div> </div>
@@ -209,12 +219,14 @@
<div class="row flex flex-wrap py-20"> <div class="row flex flex-wrap py-20">
@foreach ($programLevelOptions as $level) @foreach ($programLevelOptions as $level)
<div class="col col-sm-4"> <div class="col col-sm-4">
<div > <div>
<label class="text-20 text-ter p-0 m-0 flex items-center gap-10 px-10 py-12 bg-white rounded-30 tabs" <label
for="{{ $level }}"> <input type="radio" name="" id="{{ $level }}" class="text-20 text-ter p-0 m-0 flex items-center gap-10 px-10 py-12 bg-white rounded-30 tabs"
value=""> {{ $level }}</label> for="{{ $level }}"> <input type="radio" name=""
id="{{ $level }}" value="">
{{ $level }}</label>
</div> </div>
</div> </div>
@endforeach @endforeach

View File

@@ -53,128 +53,133 @@
<div class="container-fluid"> <div class="container-fluid">
<div class="row justify-content-center"> <div class="row justify-content-center">
<div class="col-lg-12"> <div class="col-lg-12">
@foreach ($breakdowns as $type => $breakdown)
<div class="a4-page">
{{-- <div class="card shadow-lg border-0 rounded-4"> --}}
<div class="bg-warning-subtle position-relative"> @php
<div class="card-body text-center py-10"> $breakdown = $breakdowns[$type];
<a class="navbar-brand p-0" href="{{ url('/') }}" rel="home"> @endphp
<span class="navbar-brand-inner">
<img src="{{ asset(setting('logo')) }}" alt="raffle logo" width="150px" <div class="a4-page">
height="150px" /> {{-- <div class="card shadow-lg border-0 rounded-4"> --}}
</span>
</a> <div class="bg-warning-subtle position-relative">
</div> <div class="card-body text-center py-10">
<a class="navbar-brand p-0" href="{{ url('/') }}" rel="home">
<span class="navbar-brand-inner">
<img src="{{ asset(setting('logo')) }}" alt="raffle logo" width="150px"
height="150px" />
</span>
</a>
</div> </div>
<div class="text-center"> </div>
<p class="mb-0 fs-5 test-muted"><i>Estimated Cost Calculation For <div class="text-center">
{{ $cost->country?->title ?? 'N/A' }}</i> (<strong <p class="mb-0 fs-5 test-muted"><i>Estimated Cost Calculation For
class="text-capitalize">{{ strtoupper(str_replace('_', ' ', $type)) }}</strong>) {{ $cost->country?->title ?? 'N/A' }}</i> (<strong
</p> class="text-capitalize">{{ strtoupper(str_replace('_', ' ', $type)) }}</strong>)
</p>
</div>
<!-- Body -->
<div class="card-body p-4">
<!-- Tution Fee -->
<h6 class="fw-bold mt-4 text-primary">Tution Fee</h6>
<div class="table-responsive">
<table
class="table table-sm table-bordered table-striped shadow-sm rounded align-middle text-center small">
<thead>
<tr class="fw-bold text-uppercase text-end small">
<th></th>
<th>Yearly</th>
</tr>
</thead>
<tbody>
<tr>
<td class="fw-semibold text-muted">{{ $fee['title'] }}</td>
<td class="text-end">
{{ $fee['fee'] }}
</td>
</tr>
</tbody>
</table>
</div>
<!-- Tution Fee -->
<!-- Living & Accommodation -->
<h6 class="fw-bold mt-30 text-primary">Recurring Costs</h6>
<div class="table-responsive">
<table
class="table table-sm table-bordered table-striped shadow-sm rounded align-middle text-center small">
<thead>
<tr class="fw-bold text-uppercase text-end small">
<th></th>
<th>Monthly</th>
<th>Yearly</th>
</tr>
</thead>
<tbody>
<tr>
<td class="fw-semibold text-muted">Living Cost</td>
<td class="text-end">{{ $breakdown['living']['monthly'] }}</td>
<td class="text-end">{{ $breakdown['living']['yearly'] }}</td>
</tr>
<tr>
<td class="fw-semibold text-muted">Accommodation Cost</td>
<td class="text-end">{{ $breakdown['accomodation']['monthly'] }}</td>
<td class="text-end">{{ $breakdown['accomodation']['yearly'] }}</td>
</tr>
<tr class="table-success">
<td class="fw-bold text-uppercase">Total Recurring</td>
<td class="fw-bold text-end">
<span class="badge bg-success fs-6 px-2 py-1">
{{ $breakdown['living']['monthly'] + $breakdown['accomodation']['monthly'] }}
</span>
</td>
<td class="fw-bold text-end">
<span class="badge bg-success fs-6 px-2 py-1">
{{ $breakdown['living']['yearly'] + $breakdown['accomodation']['yearly'] }}
</span>
</td>
</tr>
</tbody>
</table>
</div>
<!-- Living & Accommodation -->
<!-- One-time Costs -->
<h6 class="fw-bold mt-30 text-primary">One-time Costs</h6>
<div class="table-responsive">
<table
class="table table-sm table-hover table-striped border rounded shadow-sm align-middle small">
<tbody>
<tr>
<td class="fw-semibold text-muted">Visa</td>
<td class="text-end">{{ $breakdown['onetime']['visa'] }}</td>
</tr>
<tr>
<td class="fw-semibold text-muted">Biometrics</td>
<td class="text-end">{{ $breakdown['onetime']['biometrics'] }}</td>
</tr>
<tr>
<td class="fw-semibold text-muted">SEVIS</td>
<td class="text-end">{{ $breakdown['onetime']['sevis'] }}</td>
</tr>
<tr>
<td class="fw-semibold text-muted">Application</td>
<td class="text-end">{{ $breakdown['onetime']['application'] }}</td>
</tr>
<tr class="table-success">
<td class="fw-bold text-uppercase">Total One-time</td>
<td class="fw-bold text-end">
<span class="badge bg-success fs-6 px-2 py-1">
{{ $breakdown['onetime']['total'] }}
</span>
</td>
</tr>
</tbody>
</table>
</div> </div>
<!-- Body --> @if ($serviceStatus === 'yes')
<div class="card-body p-4">
<!-- Tution Fee -->
<h6 class="fw-bold mt-4 text-primary">Tution Fee</h6>
<div class="table-responsive">
<table
class="table table-sm table-bordered table-striped shadow-sm rounded align-middle text-center small">
<thead>
<tr class="fw-bold text-uppercase text-end small">
<th></th>
<th>Yearly</th>
</tr>
</thead>
<tbody>
<tr>
<td class="fw-semibold text-muted">{{ $fee['title'] }}</td>
<td class="text-end">
{{ $fee['fee'] }}
</td>
</tr>
</tbody>
</table>
</div>
<!-- Tution Fee -->
<!-- Living & Accommodation -->
<h6 class="fw-bold mt-30 text-primary">Recurring Costs</h6>
<div class="table-responsive">
<table
class="table table-sm table-bordered table-striped shadow-sm rounded align-middle text-center small">
<thead>
<tr class="fw-bold text-uppercase text-end small">
<th></th>
<th>Monthly</th>
<th>Yearly</th>
</tr>
</thead>
<tbody>
<tr>
<td class="fw-semibold text-muted">Living Cost</td>
<td class="text-end">{{ $breakdown['living']['monthly'] }}</td>
<td class="text-end">{{ $breakdown['living']['yearly'] }}</td>
</tr>
<tr>
<td class="fw-semibold text-muted">Accommodation Cost</td>
<td class="text-end">{{ $breakdown['accomodation']['monthly'] }}</td>
<td class="text-end">{{ $breakdown['accomodation']['yearly'] }}</td>
</tr>
<tr class="table-success">
<td class="fw-bold text-uppercase">Total Recurring</td>
<td class="fw-bold text-end">
<span class="badge bg-success fs-6 px-2 py-1">
{{ $breakdown['living']['monthly'] + $breakdown['accomodation']['monthly'] }}
</span>
</td>
<td class="fw-bold text-end">
<span class="badge bg-success fs-6 px-2 py-1">
{{ $breakdown['living']['yearly'] + $breakdown['accomodation']['yearly'] }}
</span>
</td>
</tr>
</tbody>
</table>
</div>
<!-- Living & Accommodation -->
<!-- One-time Costs -->
<h6 class="fw-bold mt-30 text-primary">One-time Costs</h6>
<div class="table-responsive">
<table
class="table table-sm table-hover table-striped border rounded shadow-sm align-middle small">
<tbody>
<tr>
<td class="fw-semibold text-muted">Visa</td>
<td class="text-end">{{ $breakdown['onetime']['visa'] }}</td>
</tr>
<tr>
<td class="fw-semibold text-muted">Biometrics</td>
<td class="text-end">{{ $breakdown['onetime']['biometrics'] }}</td>
</tr>
<tr>
<td class="fw-semibold text-muted">SEVIS</td>
<td class="text-end">{{ $breakdown['onetime']['sevis'] }}</td>
</tr>
<tr>
<td class="fw-semibold text-muted">Application</td>
<td class="text-end">{{ $breakdown['onetime']['application'] }}</td>
</tr>
<tr class="table-success">
<td class="fw-bold text-uppercase">Total One-time</td>
<td class="fw-bold text-end">
<span class="badge bg-success fs-6 px-2 py-1">
{{ $breakdown['onetime']['total'] }}
</span>
</td>
</tr>
</tbody>
</table>
</div>
<!-- Service Costs --> <!-- Service Costs -->
<h6 class="fw-bold mt-30 text-primary">Service Costs</h6> <h6 class="fw-bold mt-30 text-primary">Service Costs</h6>
<div class="table-responsive"> <div class="table-responsive">
@@ -204,32 +209,35 @@
</tbody> </tbody>
</table> </table>
</div> </div>
@endif
<!-- Overall --> <!-- Overall -->
<div class="table-responsive mt-4"> <div class="table-responsive mt-4">
<table <table
class="table table-sm table-bordered shadow-sm rounded-4 text-center align-middle small"> class="table table-sm table-bordered shadow-sm rounded-4 text-center align-middle small">
<tbody> <tbody>
<tr class="table-warning align-middle"> <tr class="table-warning align-middle">
<td class="fw-bold text-uppercase"> <td class="fw-bold text-uppercase">
<strong>Overall Estimated Cost</strong> <strong>Overall Estimated Cost</strong>
<div class="small fst-italic text-muted"> <div class="small fst-italic text-muted">
(Excluding Recurring Costs) (Excluding Recurring Costs)
</div> </div>
</td> </td>
<td class="text-end"> <td class="text-end">
<strong>{{ $breakdown['service']['total'] + $breakdown['onetime']['total'] + $fee['fee'] }}</strong> <strong>
</td> {{ $serviceStatus === 'yes'
</tr> ? $breakdown['service']['total'] + $breakdown['onetime']['total'] + $fee['fee']
</tbody> : $breakdown['onetime']['total'] + $fee['fee'] }}
</table> </strong>
</div> </td>
</tr>
</tbody>
</table>
</div> </div>
</div> </div>
{{-- </div> --}} </div>
@endforeach
</div> </div>
</div> </div>
</div> </div>

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" <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"> 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" <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" <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"> 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" <textarea class="w-full mb-20 rounded-6 py-15 text-14 px-10 bg-light-blue border-light-grey" name="subject"

View File

@@ -33,58 +33,56 @@
<div class="quote-mark">"</div> <div class="quote-mark">"</div>
<h2 class="heading">Your Trusted Study Abroad Partner.</h2> <h2 class="heading">{{ $page->short_description }}</h2>
<p class="message"> <p class="message">
Were more than just a consultancy—were your ultimate study abroad ally! With years of {!! $page->description !!}
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> </p>
</div> </div>
</div> </div>
</div> </div>
<!-- <div class="row items-center"> <!-- <div class="row items-center">
<div class="col col-12 col-md-6"> <div class="col col-12 col-md-6">
<div class="flex flex-wrap mr-120 ml-40 lg:m-0"> <div class="flex flex-wrap mr-120 ml-40 lg:m-0">
<div class="mb-20 relative"> <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" <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-inview="true" data-transition-delay="true"
data-delay-options='{"elements": ".lqd-highlight-inner", "delayType": "transition"}'> data-delay-options='{"elements": ".lqd-highlight-inner", "delayType": "transition"}'>
<span>Your Trusted Study Abroad <span>Your Trusted Study Abroad
</span> </span>
<mark class="lqd-highlight"><span class="lqd-highlight-txt">Partner.</span> <mark class="lqd-highlight"><span class="lqd-highlight-txt">Partner.</span>
<span class="left-0 bottom-10 lqd-highlight-inner"></span></mark> <span class="left-0 bottom-10 lqd-highlight-inner"></span></mark>
</h2> </h2>
</div> </div>
<div class="mb-20 ld-fancy-heading relative"> <div class="mb-20 ld-fancy-heading relative">
<p class="leading-25 ld-fh-element inline-block relative mb-0/5em"> <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 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 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 students to their dream universities across the globe. Your dreams are our mission
</p> </p>
</div> </div>
</div> </div>
</div> </div>
<div class="col col-12 col-md-6 p-0"> <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="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 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'); 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-single block relative " data-float="ease-in-out">
<div class="lqd-imggrp-img-container inline-flex relative items-center justify-center"> <div class="lqd-imggrp-img-container inline-flex relative items-center justify-center">
<figure class="w-full relative"> <figure class="w-full relative">
<img width="450" height="450" src="assets/images/general/about-banner.png" <img width="450" height="450" src="assets/images/general/about-banner.png"
alt="text box image" /> alt="text box image" />
</figure> </figure>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> --> </div> -->
</div> </div>
</section> </section>
@@ -103,8 +101,9 @@
<div class="swiper-wrapper"> <div class="swiper-wrapper">
@foreach ($blogs as $blog) @foreach ($blogs as $blog)
<div class="swiper-slide "> <div class="swiper-slide ">
<a class="h-full w-full relative bg-dark-before" href="blog-detail.php"> <img <a class="h-full w-full relative bg-dark-before"
class="rounded-30" src="{{ route('blog.single', $blog->slug) }}" alt=""> href="{{ route('blog.single', $blog->slug) }}"> <img class="rounded-30"
src="{{ asset($blog->image) }}" alt="">
<div class="absolute left-5percent bottom-20"> <div class="absolute left-5percent bottom-20">
<h3 class="text-white text-20">{{ $blog->title }}</h3> <h3 class="text-white text-20">{{ $blog->title }}</h3>
</div> </div>
@@ -123,6 +122,7 @@
<h2 class="text-60 md:text-30 text-brand text-center">Gallery</h2> <h2 class="text-60 md:text-30 text-brand text-center">Gallery</h2>
<!-- <img class="w-20percent" src="assets/images/icons/line.png" alt=""> --> <!-- <img class="w-20percent" src="assets/images/icons/line.png" alt=""> -->
</div> </div>
</section> </section>
@@ -133,24 +133,10 @@
<div class="swiper mySwiper-img"> <div class="swiper mySwiper-img">
<div class="swiper-wrapper"> <div class="swiper-wrapper">
<div class="swiper-slide"> <img class="rounded-10" src="assets/images/general/about-banner.png" @foreach ($galleriesCSR->images as $gallery)
alt=""></div> <div class="swiper-slide"> <img class="rounded-10" src="{{ asset($gallery) }}" alt="">
<div class="swiper-slide"> <img class="rounded-10" src="assets/images/general/about-banner.png" </div>
alt=""></div> @endforeach
<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> </div>
<div class="swiper-button-prev"></div> <div class="swiper-button-prev"></div>
<div class="swiper-button-next"></div> <div class="swiper-button-next"></div>

View File

@@ -22,101 +22,25 @@
<div class="swiper swiper-events mt-40 mb-40"> <div class="swiper swiper-events mt-40 mb-40">
<div class="swiper-wrapper"> <div class="swiper-wrapper">
<a href="" class="swiper-slide"> @foreach ($upcomingEvents as $event)
<div class="event-block relative w-full"> <a href="" class="swiper-slide">
<div class="w-full rounded-30"> <div class="event-block relative w-full">
<img src="{{ asset('raffles/assets/images/general/event1.jfif') }}" alt=""> <div class="w-full rounded-30">
</div> <img src="{{ asset($event->image) }}" alt="">
<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>
<div> <div class="flex items-center gap-20 py-20 px-20 bg-white rounded-30">
<h3 class="text-16 text-black">Free ilets Class: Raffles Educare Associates</h3> <div>
<p class="text-14 p-0 m-0 text-grey">Join the free ilets Classes </p> <h4 class="text-16 text-ter">Start</h4>
<p class="text-14 text-grey">Starting from 5 pm - 7 pm </p> <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> </div>
</div> </a>
@endforeach
</a>
<a href="" class="swiper-slide">
<div class="event-block relative w-full">
<div class="w-full rounded-30">
<img src="{{ asset('raffles/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="{{ asset('raffles/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="{{ asset('raffles/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="{{ asset('raffles/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> </div>
<!-- Pagination --> <!-- Pagination -->
<!-- <div class="swiper-pagination"></div> --> <!-- <div class="swiper-pagination"></div> -->
@@ -137,102 +61,27 @@
<div class="swiper swiper-events mt-40"> <div class="swiper swiper-events mt-40">
<div class="swiper-wrapper"> <div class="swiper-wrapper">
<a href="" class="swiper-slide"> @foreach ($previousEvents as $event)
<div class="event-block relative w-full"> <a href="" class="swiper-slide">
<div class="w-full rounded-30"> <div class="event-block relative w-full">
<img src="{{ asset('raffles/assets/images/general/event1.jfif') }}" alt=""> <div class="w-full rounded-30">
</div> <img src="{{ asset($event->image) }}" alt="">
<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>
<div> <div class="flex items-center gap-20 py-20 px-20 bg-white rounded-30">
<h3 class="text-16 text-black">Free ilets Class: Raffles Educare Associates</h3> <div>
<p class="text-14 p-0 m-0 text-grey">Join the free ilets Classes </p> <h4 class="text-16 text-ter">Start</h4>
<p class="text-14 text-grey">Starting from 5 pm - 7 pm </p> <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> </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="{{ asset('raffles/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="{{ asset('raffles/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="{{ asset('raffles/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="{{ asset('raffles/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> </div>
<!-- Pagination --> <!-- Pagination -->
<!-- <div class="swiper-pagination"></div> --> <!-- <div class="swiper-pagination"></div> -->
@@ -280,12 +129,6 @@
<div class="swiper-button-next"></div> <div class="swiper-button-next"></div>
<div class="swiper-button-prev"></div> <div class="swiper-button-prev"></div>
</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> </div>
@endsection @endsection

View File

@@ -101,19 +101,20 @@
<div class="franchise-form bg-white"> <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 <label class="text-16 pb-5" for="">Your Name <span
class="text-brand">(Required)</span></label> class="text-brand">(Required)</span></label>
<div class="flex gap-10 "> <div class="flex gap-10 ">
<div class="w-full"> <div class="w-full">
<label class="text-14 pb-5" for="">First</label> <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="" <input class="w-full mb-30 rounded-6 py-10 text-14 px-10" type="text"
id=""> name="first_name" id="">
</div> </div>
<div class="w-full"> <div class="w-full">
<label class="text-14 pb-5" for="">Last</label> <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="" <input class="w-full mb-30 rounded-6 py-10 text-14 px-10" type="text"
id=""> name="last_name" id="">
</div> </div>
@@ -123,33 +124,33 @@
<label class="text-16 pb-5" for="">Your Email Address <span <label class="text-16 pb-5" for="">Your Email Address <span
class="text-brand">(Required)</span></label> 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=""> id="">
<label class="text-16 pb-5" for="">Your Phone <span <label class="text-16 pb-5" for="">Your Phone <span
class="text-brand">(Required)</span></label> 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=""> id="">
<label class="text-16 pb-5" for="">Your Address <span <label class="text-16 pb-5" for="">Your Address <span
class="text-brand">(Required)</span></label> 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=""> id="">
<div class="flex gap-10 "> <div class="flex gap-10 ">
<div class="w-full"> <div class="w-full">
<label class="text-14 pb-5" for="">City</label> <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" <input class="w-full mb-30 rounded-6 py-10 text-14 px-10" type="text"
name="" id=""> name="city" id="">
</div> </div>
<div class="w-full"> <div class="w-full">
<label class="text-14 pb-5" for="">State/Region/Province</label> <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" <input class="w-full mb-30 rounded-6 py-10 text-14 px-10" type="text"
name="" id=""> name="state" id="">
</div> </div>
@@ -161,7 +162,7 @@
<div class="sm:block flex gap-10 "> <div class="sm:block flex gap-10 ">
<div class="w-full"> <div class="w-full">
<label class="text-14 pb-5" for="">Level to Invest</label> <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 $20,000</option>
<option value="">Less than $30,000</option> <option value="">Less than $30,000</option>
<option value="">Less than $40,000</option> <option value="">Less than $40,000</option>
@@ -169,9 +170,9 @@
</select> </select>
<!-- <select name="" id="franchise-invest"> <!-- <select name="" id="franchise-invest">
<option value="" selected hidden> Less than $10,000</option> <option value="" selected hidden> Less than $10,000</option>
<option value=""></option> <option value=""></option>
</select> --> </select> -->
</div> </div>
@@ -179,7 +180,7 @@
<label class="text-14 pb-5" for="">Do you currently own a business? <label class="text-14 pb-5" for="">Do you currently own a business?
(Yes/No)</label> (Yes/No)</label>
<input class="w-full mb-30 rounded-6 py-10 text-14 px-10" type="text" <input class="w-full mb-30 rounded-6 py-10 text-14 px-10" type="text"
name="" id=""> name="own_business" id="">
</div> </div>
@@ -192,26 +193,26 @@
business</label> 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="sm:block flex gap-10 ">
<div class="w-full"> <div class="w-full">
<label class="text-14 pb-5" for="">Preferred Franchise Location</label> <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" <input class="w-full mb-30 rounded-6 py-10 text-14 px-10" type="text"
name="" id=""> name="franchise_location" id="">
</div> </div>
<div class="w-full"> <div class="w-full">
<label class="text-14 pb-5" for="">Timeframe to Start</label> <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="">within 1 year</option>
<option value="">After 1 year</option> <option value="">After 1 year</option>
</select> </select>
<!-- <select name="" id="franchise-timeframe"> <!-- <select name="" id="franchise-timeframe">
<option value="" selected hidden> within 6 months</option> <option value="" selected hidden> within 6 months</option>
<option value=""></option> <option value=""></option>
</select> --> </select> -->
</div> </div>
@@ -221,17 +222,18 @@
</div> </div>
<div class="sm:w-full w-50percent"> <div class="sm:w-full w-50percent">
<label class="text-14 pb-5" for="">Do u already have an office setup ?</label> <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="" <input class="w-full mb-30 rounded-6 py-10 text-14 px-10" type="text"
id=""> name="office_setup" id="">
</div> </div>
<label class="text-14 pb-5" for=""> Please add your bussiness portfolio website ,and <label class="text-14 pb-5" for=""> Please add your bussiness portfolio website ,and
let us know let us know
if you have any questions?</label> 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> Message</button>
</form> </form>
</div> </div>

View File

@@ -313,18 +313,19 @@
<h3 class="text-brand text-20">Let's Connect Quick</h3> <h3 class="text-brand text-20">Let's Connect Quick</h3>
<div class="divider"></div> <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" <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="" <input class="w-full mb-30 rounded-6 py-15 text-14 px-10" type="email" name="email"
id="" placeholder="Your Email"> id="email" placeholder="Your Email" required>
<input class="w-full mb-30 rounded-6 py-15 text-14 px-10" type="email" name="" <input class="w-full mb-30 rounded-6 py-15 text-14 px-10" type="text" name="mobile"
id="" placeholder="Phone"> id="mobile" placeholder="Phone" required>
<textarea class="w-full mb-40 rounded-6 text-14 px-10" name="" id="" placeholder="Your Message"></textarea> <textarea class="w-full mb-40 rounded-6 text-14 px-10" name="message" id="" placeholder="Your Message"
<button class="px-10 py-10 bg-brand text-white rounded-10 text-16 border-0 button-hover"> 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> <i class="fa-solid fa-paper-plane text-white text-16 pr-5"></i>
Send Message</button> Send Message</button>
</form> </form>

View File

@@ -22,8 +22,9 @@
<div class="col col-12 p-0"> <div class="col col-12 p-0">
<div class="w-full flex flex-wrap justify-center module-icon-box"> <div class="w-full flex flex-wrap justify-center module-icon-box">
<a href="{{ setting('facebook') }}">
<div class="w-25percent sm:w-50percent"> <div class="w-25percent sm:w-50percent">
<a href="{{ setting('facebook') }}">
<div class="lqd-iconbox-scale transition-all mb-30 sm:mb-0 hover:scale-1/1"> <div class="lqd-iconbox-scale transition-all mb-30 sm:mb-0 hover:scale-1/1">
<div <div
class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle"> class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle">
@@ -38,10 +39,12 @@
</h3> </h3>
</div> </div>
</div> </div>
</div> </a>
</a> </div>
<a href="{{ setting('facebook') }}">
<div class="w-25percent sm:w-50percent">
<div class="w-25percent sm:w-50percent">
<a href="{{ setting('facebook') }}">
<div class="lqd-iconbox-scale transition-all mb-30 sm:mb-0 hover:scale-1/1"> <div class="lqd-iconbox-scale transition-all mb-30 sm:mb-0 hover:scale-1/1">
<div <div
class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle"> class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle">
@@ -56,10 +59,12 @@
</h3> </h3>
</div> </div>
</div> </div>
</div> </a>
</a> </div>
<a href="{{ setting('facebook') }}">
<div class="w-25percent sm:w-50percent">
<div class="w-25percent sm:w-50percent">
<a href="{{ setting('facebook') }}">
<div class="lqd-iconbox-scale transition-all mb-30 sm:mb-0 hover:scale-1/1"> <div class="lqd-iconbox-scale transition-all mb-30 sm:mb-0 hover:scale-1/1">
<div <div
class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle"> class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle">
@@ -74,10 +79,12 @@
</h3> </h3>
</div> </div>
</div> </div>
</div> </a>
</a> </div>
<a href="{{ setting('facebook') }}">
<div class="w-25percent sm:w-50percent">
<div class="w-25percent sm:w-50percent">
<a href="{{ setting('facebook') }}">
<div class="lqd-iconbox-scale transition-all mb-30 sm:mb-0 hover:scale-1/1"> <div class="lqd-iconbox-scale transition-all mb-30 sm:mb-0 hover:scale-1/1">
<div <div
class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle"> class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle">
@@ -92,8 +99,9 @@
</h3> </h3>
</div> </div>
</div> </div>
</div> </a>
</a> </div>
</div> </div>
</div> </div>
@@ -111,8 +119,9 @@
<div class="col col-12 p-0"> <div class="col col-12 p-0">
<div class="w-full flex flex-wrap justify-center module-icon-box"> <div class="w-full flex flex-wrap justify-center module-icon-box">
<a href="{{ setting('instagram') }}">
<div class="w-25percent sm:w-50percent"> <div class="w-25percent sm:w-50percent">
<a href="{{ setting('instagram') }}">
<div class="lqd-iconbox-scale transition-all pr-60 mb-30 sm:mb-0 hover:scale-1/1"> <div class="lqd-iconbox-scale transition-all pr-60 mb-30 sm:mb-0 hover:scale-1/1">
<div <div
class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle"> class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle">
@@ -127,10 +136,12 @@
</h3> </h3>
</div> </div>
</div> </div>
</div> </a>
</a> </div>
<a href="{{ setting('instagram') }}">
<div class="w-25percent sm:w-50percent">
<div class="w-25percent sm:w-50percent">
<a href="{{ setting('instagram') }}">
<div class="lqd-iconbox-scale transition-all pr-60 mb-30 sm:mb-0 hover:scale-1/1"> <div class="lqd-iconbox-scale transition-all pr-60 mb-30 sm:mb-0 hover:scale-1/1">
<div <div
class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle"> class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle">
@@ -145,10 +156,12 @@
</h3> </h3>
</div> </div>
</div> </div>
</div> </a>
</a> </div>
<a href="{{ setting('instagram') }}">
<div class="w-25percent sm:w-50percent">
<div class="w-25percent sm:w-50percent">
<a href="{{ setting('instagram') }}">
<div class="lqd-iconbox-scale transition-all pr-60 mb-30 sm:mb-0 hover:scale-1/1"> <div class="lqd-iconbox-scale transition-all pr-60 mb-30 sm:mb-0 hover:scale-1/1">
<div <div
class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle"> class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle">
@@ -163,8 +176,9 @@
</h3> </h3>
</div> </div>
</div> </div>
</div> </a>
</a> </div>
</div> </div>
</div> </div>
@@ -180,8 +194,9 @@
<div class="w-full flex flex-wrap justify-center module-icon-box"> <div class="w-full flex flex-wrap justify-center module-icon-box">
<a href="{{ setting('tiktok') }}">
<div class="w-25percent sm:w-50percent "> <div class="w-25percent sm:w-50percent ">
<a href="{{ setting('tiktok') }}">
<div <div
class="flex justify-center items-center text-center lqd-iconbox-scale transition-all pl-60 mb-30 sm:mb-0 hover:scale-1/1"> class="flex justify-center items-center text-center lqd-iconbox-scale transition-all pl-60 mb-30 sm:mb-0 hover:scale-1/1">
<div <div
@@ -197,10 +212,12 @@
</h3> </h3>
</div> </div>
</div> </div>
</div> </a>
</a> </div>
<a href="{{ setting('tiktok') }}">
<div class="w-25percent sm:w-50percent">
<div class="w-25percent sm:w-50percent">
<a href="{{ setting('tiktok') }}">
<div class="lqd-iconbox-scale transition-all pl-60 mb-30 sm:mb-0 hover:scale-1/1"> <div class="lqd-iconbox-scale transition-all pl-60 mb-30 sm:mb-0 hover:scale-1/1">
<div <div
class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle"> class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle">
@@ -215,11 +232,13 @@
</h3> </h3>
</div> </div>
</div> </div>
</div> </a>
</a> </div>
<a href="{{ setting('google') }}">
<div class="w-25percent sm:w-50percent">
<div class="w-25percent sm:w-50percent">
<a href="{{ setting('google') }}">
<div class="lqd-iconbox-scale transition-all pr-60 mb-30 sm:mb-0 hover:scale-1/1"> <div class="lqd-iconbox-scale transition-all pr-60 mb-30 sm:mb-0 hover:scale-1/1">
<div <div
class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle"> class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle">
@@ -234,8 +253,9 @@
</h3> </h3>
</div> </div>
</div> </div>
</div> </a>
</a> </div>
</div> </div>
@@ -260,8 +280,9 @@
<div class="col col-12 p-0"> <div class="col col-12 p-0">
<div class="w-full flex flex-wrap justify-center module-icon-box"> <div class="w-full flex flex-wrap justify-center module-icon-box">
<a href="{{ setting('pinterest') }}">
<div class="w-25percent sm:w-50percent"> <div class="w-25percent sm:w-50percent">
<a href="{{ setting('pinterest') }}">
<div <div
class="lqd-iconbox-scale transition-all pr-60 mb-30 sm:mb-0 hover:scale-1/1"> class="lqd-iconbox-scale transition-all pr-60 mb-30 sm:mb-0 hover:scale-1/1">
<div <div
@@ -278,8 +299,9 @@
</h3> </h3>
</div> </div>
</div> </div>
</div> </a>
</a> </div>
</div> </div>
</div> </div>
@@ -295,8 +317,9 @@
<div class="col col-12 p-0"> <div class="col col-12 p-0">
<div class="w-full flex flex-wrap justify-center module-icon-box"> <div class="w-full flex flex-wrap justify-center module-icon-box">
<a href="{{ setting('linkedin') }}">
<div class="w-25percent sm:w-50percent"> <div class="w-25percent sm:w-50percent">
<a href="{{ setting('linkedin') }}">
<div class="lqd-iconbox-scale transition-all mb-30 sm:mb-0 hover:scale-1/1"> <div class="lqd-iconbox-scale transition-all mb-30 sm:mb-0 hover:scale-1/1">
<div <div
class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle"> class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle">
@@ -312,9 +335,10 @@
</h3> </h3>
</div> </div>
</div> </div>
</div>
</a> </a>
</div>
</div> </div>
@@ -332,8 +356,9 @@
<div class="col col-12 p-0"> <div class="col col-12 p-0">
<div class="w-full flex flex-wrap justify-center module-icon-box"> <div class="w-full flex flex-wrap justify-center module-icon-box">
<a href="{{ setting('youtube') }}">
<div class="w-25percent sm:w-50percent"> <div class="w-25percent sm:w-50percent">
<a href="{{ setting('youtube') }}">
<div <div
class="lqd-iconbox-scale transition-all pr-60 mb-30 sm:mb-0 hover:scale-1/1"> class="lqd-iconbox-scale transition-all pr-60 mb-30 sm:mb-0 hover:scale-1/1">
<div <div
@@ -350,8 +375,9 @@
</h3> </h3>
</div> </div>
</div> </div>
</div> </a>
</a> </div>
</div> </div>
</div> </div>
@@ -361,38 +387,38 @@
</div> </div>
<!-- <div class="social-google pb-30"> <!-- <div class="social-google pb-30">
<h3 class="text-sec2 text-46 md:text-24 pb-30 text-center">Google Business </h3> <h3 class="text-sec2 text-46 md:text-24 pb-30 text-center">Google Business </h3>
<div class="row"> <div class="row">
<div class="col col-12 p-0"> <div class="col col-12 p-0">
<div class="w-full flex flex-wrap justify-center module-icon-box"> <div class="w-full flex flex-wrap justify-center module-icon-box">
<div class="w-25percent sm:w-50percent"> <div class="w-25percent sm:w-50percent">
<div class="lqd-iconbox-scale transition-all pr-60 mb-30 sm:mb-0 hover:scale-1/1"> <div class="lqd-iconbox-scale transition-all pr-60 mb-30 sm:mb-0 hover:scale-1/1">
<div <div
class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle"> class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle">
<div class="iconbox-icon-wrap"> <div class="iconbox-icon-wrap">
<div <div
class="iconbox-icon-container inline-flex relative z-1 rounded-full mb-20 w-75 h-75 bg-green-100 text-30"> class="iconbox-icon-container inline-flex relative z-1 rounded-full mb-20 w-75 h-75 bg-green-100 text-30">
<i class="fa-brands fa-google"></i> <i class="fa-brands fa-google"></i>
</div>
</div> </div>
<h3 class="lqd-iconbox-heading text-16 font-bold text-center leading-1em">
Raffles<br />Educare
</h3>
</div> </div>
<h3 class="lqd-iconbox-heading text-16 font-bold text-center leading-1em">
Raffles<br />Educare
</h3>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div> -->
</div> -->
</div> </div>
</div> </div>

View File

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

View File

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

View File

@@ -20,7 +20,7 @@
<div class="row "> <div class="row ">
@foreach ($firstCourse->custom as $index => $data) @foreach ($firstCourse->custom as $index => $data)
<div class=" col col-md-3"> <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=""> <div class="">
<img class="w-ful " src="{{ asset($firstCourse->images[$index]) }}" alt=""> <img class="w-ful " src="{{ asset($firstCourse->images[$index]) }}" alt="">
</div> </div>

View File

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