Compare commits

..

55 Commits

Author SHA1 Message Date
Mahesh Sharma 564529895f implementing-task-scheduler 2 years ago
Mahesh Sharma cce8fd095a appointment 2 years ago
tribikram f860a36947 [edit] contents for privacy and about us 2 years ago
Mahesh Sharma 67612b1116 blog 2 years ago
tribikram e269f8c285 [edit] privacy title 2 years ago
tribikram a898a3fa78 [edit] student visa icon changed 2 years ago
Mahesh Sharma ca9688fb69 et#38-rebase-conflicts 2 years ago
Mahesh Sharma f461b09d08 enquiry-form-changes 2 years ago
tribikram 401c406444 [add] hide btn on submit 2 years ago
tribikram 6a0a4ccb34 [edit] enquiry view table 2 years ago
Mahesh Sharma f2d67186be aapointment-navigation-for-admin 2 years ago
Mahesh Sharma 7f836f06c2 rebase-et#35 2 years ago
Mahesh Sharma 338d015069 enquiry-backend 2 years ago
tribikram 948b076c03 [edit] css fixed 2 years ago
tribikram 1821580633 [edit] form css 2 years ago
tribikram cf212411de [add] additional information client validation 2 years ago
Mahesh Sharma 4201b17cab rebase 2 years ago
Mahesh Sharma c5d88c4d03 enquiry-form-submit 2 years ago
Mahesh Sharma 92b515bd80 enquiry_form_element-name-change 2 years ago
tribikram b3aaa90f34 [edit] enquiry form 2 years ago
Mahesh Sharma e1eb4fa70c et#31-rebase-conflict 2 years ago
Mahesh Sharma ed3918d02a formating 2 years ago
tribikram 4a305d6a92 [edit] type date 2 years ago
tribikram c4b87ab6c0 [add] enquiry form 2 years ago
tribikram 3940ca697f [edit] css fixed 2 years ago
Mahesh Sharma e7b33f2ccc appoitment 2 years ago
tribikram 2520f2017b [edit] active class for appointment date 2 years ago
Mahesh Sharma e3210482fa changes-in-appointment 2 years ago
Mahesh Sharma d310c517c1 correction 2 years ago
tribikram c717c2cfe8 [edit] css fixed 2 years ago
tribikram f8932a97c2 [add] JRP to index page 2 years ago
Mahesh Sharma f6118eeb1f rebase-et#25 2 years ago
tribikram ca5565d448 [edit] footer target blank removed 2 years ago
tribikram f5be1c14a7 [edit] batch added on click on date 2 years ago
Mahesh Sharma 98fb64971a appointment-seeder-overall-completed 2 years ago
Mahesh Sharma 45d0b8f609 appointment-update 2 years ago
tribikram c8f0fe2d1e [edit] all right reserved text 2 years ago
tribikram f977c3ddb0 [edit] css fixed 2 years ago
Mahesh Sharma 0c5354f9ce admin-side 2 years ago
Mahesh Sharma 6023ac6817 appointment-initial-confirmed 2 years ago
Mahesh Sharma 3f2850b8d1 appointment 2 years ago
suman 25a9be6e1c Updated Universities List. 2 years ago
Mahesh Sharma f053ba81b5 meta-description-and-image 2 years ago
Mahesh Sharma 637e49f574 appointment-booked 2 years ago
Mahesh Sharma 7952068dad rebase-suman 2 years ago
Mahesh Sharma 7178c37eba appointment-book 2 years ago
Mahesh Sharma 77299944de apppointment-booking-feature 2 years ago
tribikram 740c7e3953 [edit] appointment js function 2 years ago
tribikram 8d304d8bbf [add] appointment page 2 years ago
Mahesh Sharma 41f88d9e24 appointment 2 years ago
Mahesh Sharma 715cd76f78 live-changes 2 years ago
Mahesh Sharma 26f3e38eec visa-service-changes 2 years ago
tribikram 4c3d8de59a [add] about page 2 years ago
tribikram c8a10e8392 [edit] dynamic content 2 years ago
Mahesh Sharma d356110d68 layou-and-welcome 2 years ago
  1. 36
      app/Console/Commands/CheckQueue.php
  2. 33
      app/Console/Commands/ProcessQueue.php
  3. 2
      app/Console/Kernel.php
  4. 7
      app/Http/Controllers/AboutUsController.php
  5. 278
      app/Http/Controllers/Admin/AccomodationController.php
  6. 155
      app/Http/Controllers/Admin/AppointmentController.php
  7. 11
      app/Http/Controllers/Admin/HomeController.php
  8. 82
      app/Http/Controllers/Admin/ServiceSectionController.php
  9. 2
      app/Http/Controllers/Admin/VisaServiceController.php
  10. 66
      app/Http/Controllers/Admin/VisaServiceSectionController.php
  11. 145
      app/Http/Controllers/AppointmentController.php
  12. 2
      app/Http/Controllers/BlogController.php
  13. 76
      app/Http/Controllers/EnquiryController.php
  14. 9
      app/Http/Controllers/HomeController.php
  15. 21
      app/Http/Controllers/VisaController.php
  16. 41
      app/Jobs/SendEnquiryMailJob.php
  17. 65
      app/Mail/EnquiryMail.php
  18. 3
      app/Models/AboutUs.php
  19. 3
      app/Models/AboutUsPoint.php
  20. 17
      app/Models/Appointment.php
  21. 15
      app/Models/AppointmentBookingDetail.php
  22. 6
      app/Models/Contact.php
  23. 11
      app/Models/Country.php
  24. 13
      app/Models/Enquiry.php
  25. 2
      config/app.php
  26. 4
      config/custom.php
  27. 4
      config/database.php
  28. 37
      database/migrations/2023_02_06_080253_create_appointments_table.php
  29. 32
      database/migrations/2023_02_07_044441_add_service_type_id_to_appointments_table.php
  30. 32
      database/migrations/2023_02_08_105304_add_is_booked_to_appointments_table.php
  31. 37
      database/migrations/2023_02_08_105817_create_appointment_booking_details_table.php
  32. 59
      database/migrations/2023_02_16_171148_create_enquiries_table.php
  33. 49
      database/seeders/AppointmentTableSeeder.php
  34. BIN
      public/0f4247703ff4b103988e24e44c85d480.png
  35. BIN
      public/30a732a08c6dc9216fff30a50d88ced1.jpg
  36. 0
      public/32bdf53ff6fb74f9f0281dca72148679.png
  37. 0
      public/66585abb06791217e1b88ae85417004b.png
  38. BIN
      public/a3b1cd88df18c6961bedd6566eeb3b2e.png
  39. 50
      public/admin/css/custom-admin.css
  40. BIN
      public/e4b194be57f9f8535ef5e9458c78224b.jpg
  41. BIN
      public/frontend/.DS_Store
  42. 488
      public/frontend/css/style.css
  43. BIN
      public/frontend/icons/account-student.png
  44. BIN
      public/frontend/icons/business-visa.png
  45. BIN
      public/frontend/icons/career-counselling.png
  46. BIN
      public/frontend/icons/jrp.png
  47. BIN
      public/frontend/icons/noto_graduation-cap.png
  48. 12
      public/frontend/icons/noto_graduation-cap.svg
  49. BIN
      public/frontend/icons/student-visa-icon.png
  50. 10
      public/frontend/images/corss-white.svg
  51. 82
      public/frontend/plugin/zabuto_calendar.min.css
  52. 5
      public/frontend/plugin/zabuto_calendar.min.js
  53. BIN
      public/images/media/1674659654211_1675317628.jpeg
  54. BIN
      public/images/media/smiling-girls_1675317552.png
  55. BIN
      public/images/media/smiling-girls_1675320663.png
  56. BIN
      public/images/news_and_update/2023/01/31/cf96e89432529e97306608d4584773d9.png
  57. BIN
      public/images/news_and_update/2023/02/02/13077aec220e4818c3beb064ad406b54.png
  58. BIN
      public/images/news_and_update/2023/02/02/2ce5d9d94acea4e17e6bb6e5bbe45a64.jpeg
  59. BIN
      public/images/news_and_update/2023/02/02/4181cd37c804e421d09d62c4061c9217.png
  60. BIN
      public/images/news_and_update/2023/02/02/630a12c884ad69f4dc3954d222143dd6.png
  61. BIN
      public/images/news_and_update/2023/02/03/ea07a1691feb62f4b748c239944c0b80.jpg
  62. BIN
      public/images/news_and_update/2023/02/07/006863bc9ebb28447f1efd0fc29944eb.jpg
  63. BIN
      public/images/news_and_update/2023/02/07/055c9db004249eba9bc38a54122f4a85.jpg
  64. BIN
      public/images/news_and_update/2023/02/07/05e7c93aafbd4870a1521427426e3f26.jpg
  65. BIN
      public/images/news_and_update/2023/02/07/6ef5dd4481d1121c99ec3820d550383f.jpg
  66. BIN
      public/images/news_and_update/2023/02/07/754f341b4a942f7d57cb768df482f37f.jpg
  67. BIN
      public/images/news_and_update/2023/02/07/a5dc4b32c4d35cd79d54afa7c9924e31.jpg
  68. BIN
      public/images/news_and_update/2023/02/07/e01bbc8286faa94100708ace82c80e88.jpg
  69. BIN
      public/images/news_and_update/2023/02/07/f79184b3c413abc4c1d7ef1b802dafae.jpg
  70. BIN
      public/images/news_and_update/2023/02/15/917540415d7720a1c316f6f4b5b6fa70.jpg
  71. BIN
      public/images/service/2023/02/02/01ec146faed1c7a783ea4bacd9edb4d6.png
  72. 0
      public/images/service/2023/02/02/0484f31ed87f27b9b565e15739f2bf60.png
  73. 0
      public/images/service/2023/02/02/26bfb22317d8bda9b16f02445093d260.png
  74. BIN
      public/images/service/2023/02/02/541ee4a0aea308db6c5a4a587fedd9dd.png
  75. BIN
      public/images/service/2023/02/02/cadd8d9d8cc8873c607b0a8739fe3196.png
  76. BIN
      public/images/service/2023/02/02/e104eac53ebdfdbfdeb093294ac09d15.png
  77. BIN
      public/images/service/2023/02/02/eb689cbd1fd11e416b3732424a62a60f.png
  78. BIN
      public/images/service/2023/02/02/ef8c02684d1e477927322179129d1f99.png
  79. BIN
      public/images/service/2023/02/02/fbbd7c1df29fe5dfeeffaafa18c429a5.png
  80. BIN
      public/images/service/2023/02/03/04af20a124600ffbf5446e0a5e3625a4.jpg
  81. BIN
      public/images/service/2023/02/03/0d18275607a66918a94430f18a533670.jpg
  82. BIN
      public/images/service/2023/02/03/3da662c062ff0a2a5d2bbbec19b8f040.jpg
  83. BIN
      public/images/service/2023/02/03/53c597800859eecbd02152173ef7e5ea.png
  84. BIN
      public/images/service/2023/02/03/67aa102369514db8c797367a7cd2761b.png
  85. BIN
      public/images/service/2023/02/03/6f2ddda56faa0fa6672f11738e059b63.jpg
  86. 0
      public/images/service/2023/02/03/6f8ebdc026631fc10ea3ec9ef4c067d4.png
  87. BIN
      public/images/service/2023/02/03/7096bcfd68d3efc8ad1d4fe2ad368dfa.png
  88. BIN
      public/images/service/2023/02/03/82ca792750b14492115b56c2e840ddaa.png
  89. BIN
      public/images/service/2023/02/03/886bd93d0d2cf50a71e8199b0850b91a.jpg
  90. BIN
      public/images/service/2023/02/03/8f73e3d409f73c909efbbed65cb95346.png
  91. BIN
      public/images/service/2023/02/03/a29878bc1997b3daecad530b94b18b07.jpg
  92. BIN
      public/images/service/2023/02/03/ad949c4c73e8f5d7eac4ca69b2f47d0b.jpg
  93. BIN
      public/images/service/2023/02/03/b09e9b4652c43cc61c41b6f409f6c845.jpg
  94. BIN
      public/images/service/2023/02/03/d93a341002e7fba2be18147c85359f9b.jpg
  95. BIN
      public/images/service/2023/02/03/dc4ad15dc660da968d7976fab78938f4.png
  96. BIN
      public/images/service/2023/02/03/df9d9b57c82f9264123ca7361dd2d95c.png
  97. BIN
      public/images/service/2023/02/03/dfe21745f9d84df5d82a40c27c1a776b.png
  98. BIN
      public/images/service/2023/02/06/c091ae56e148dcc3939254ba4e07af95.png
  99. BIN
      public/images/setting/2023/02/17/115fa12177ac4180dec5b3707d601bb2.png
  100. BIN
      public/images/slider/2023/02/03/7b24330e0f0fb135474ef25164d4cd43.jpg
  101. Some files were not shown because too many files have changed in this diff Show More

@ -0,0 +1,36 @@
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Queue;
class CheckQueue extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'queue:check';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Check if there is a job in the queue';
/**
* Execute the console command.
*
* @return int
*/
public function handle()
{
$count = Queue::size(); // Get the number of jobs in the queue
if ($count > 0) {
$this->call('queue:process'); // Call the ProcessQueue command if there is a job in the queue
}
}
}

@ -0,0 +1,33 @@
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Queue;
class ProcessQueue extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'queue:process';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Process the tasks in the queue';
/**
* Execute the console command.
*
* @return int
*/
public function handle()
{
Queue::daemon(); // Process the tasks in the queue
}
}

@ -15,7 +15,7 @@ class Kernel extends ConsoleKernel
*/
protected function schedule(Schedule $schedule)
{
// $schedule->command('inspire')->hourly();
$schedule->command('queue:check')->everyMinute();
}
/**

@ -7,8 +7,9 @@ use App\Models\AboutUs;
class AboutUsController extends Controller
{
public function index(){
$about = AboutUs::where('status',true)->first();
return view('about',compact('about'));
public function index()
{
$about = AboutUs::where('status', true)->first();
return view('about', compact('about'));
}
}

@ -1,278 +0,0 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Accomodation;
use App\Models\BlogPoint;
use App\Models\NewsAndUpdatePoint;
use App\Models\Setting;
use App\Models\User;
use App\Models\AccomodationFeature;
use App\Models\AccomodationInformation;
use App\Models\AccomodationSliderTitle;
use App\Models\AccomodationImage;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Session;
// use function GuzzleHttp\Promise\all;
class AccomodationController extends Controller
{
protected $view = 'admin.accomodation.';
protected $redirect = 'admin/accomodations';
public function index()
{
$settings = Accomodation::orderBy('id','DESC');
if(\request('name')){
$key = \request('name');
$settings = $settings->where('title','like','%'.$key.'%');
}
if(\request('status')){
$key = \request('status');
$settings = $settings->where('status',$key);
}
$settings = $settings->paginate(config('custom.per_page'));
return view($this->view.'index',compact('settings'));
}
public function create()
{
return view($this->view . 'create');
}
public function store(Request $request)
{
$this->validate(\request(), [
'title' => 'required',
'phone' => 'required',
'address' => 'required',
'status' => 'required',
'images' => 'required',
'slider_image' => 'required|file|mimes:jpeg,png,jpg'
]);
if($request->has('slider_image')){
$extension = \request()->file('slider_image')->getClientOriginalExtension();
$image_folder_type = array_search('accomodation',config('custom.image_folders')); //for image saved in folder
$count = rand(100,999);
$out_put_path = User::save_image(\request()->file('slider_image'),$extension,$count,$image_folder_type);
$image_path1 = $out_put_path[0];
}
$requestData = $request->all();
if(isset($image_path1)){
$requestData['slider_image'] = $image_path1;
}
// $requestData['slug'] = Setting::create_slug($requestData['keyword']);
$accomodation = Accomodation::create($requestData);
if($request->hasFile('images')){
foreach($request->file('images') as $imagefile) {
$extension = $imagefile->getClientOriginalExtension();
$image_folder_type = array_search('accomodation',config('custom.image_folders')); //for image saved in folder
$count = rand(100,999);
$out_put_path = User::save_image($imagefile,$extension,$count,$image_folder_type);
$image_path1 = $out_put_path[0];
$accomodation_image = new AccomodationImage();
$accomodation_image->accomodation_id = $accomodation->id;
$accomodation_image->image = $image_path1;
$accomodation_image->save();
}
}
if(\request('feature_name')){
foreach (\request('feature_name') as $index => $value){
$setting_point = new AccomodationFeature();
$setting_point->accomodation_id = $accomodation->id;
$setting_point->feature_name = $value;
$setting_point->save();
}
}
if(\request('information_name')){
foreach (\request('information_name') as $index => $value){
$setting_point = new AccomodationInformation();
$setting_point->accomodation_id = $accomodation->id;
$setting_point->information_name = $value;
$setting_point->save();
}
}
if(\request('title_name')){
foreach (\request('title_name') as $index => $value){
$setting_point = new AccomodationSliderTitle();
$setting_point->accomodation_id = $accomodation->id;
$setting_point->title_name = $value;
$setting_point->save();
}
}
Session::flash('success','Accomodation successfully created');
return redirect($this->redirect);
}
public function show($id)
{
$setting =Accomodation::findorfail($id);
return view($this->view.'show',compact('setting'));
}
public function edit($id){
$setting =Accomodation::findorfail($id);
return view($this->view.'edit',compact('setting'));
}
public function update(Request $request, $id){
// dd(\request()->all());
$setting =Accomodation::findorfail($id);
$this->validate(\request(), [
'title' => 'required',
'phone' => 'required',
'address' => 'required',
'status' => 'required'
// 'images' => 'required',
// 'slider_image' => 'required|file|mimes:jpeg,png,jpg'
]);
if(\request('slider_image')){
$this->validate(\request(),[
'image' => 'file|mimes:jpeg,png,jpg'
]);
if($request->hasFile('slider_image')){
$extension = $request->file('slider_image')->getClientOriginalExtension();
$image_folder_type = array_search('accomodation',config('custom.image_folders')); //for image saved in folder
$count = rand(100,999);
$out_put_path = User::save_image($request->file('slider_image'),$extension,$count,$image_folder_type);
$image_path1 = $out_put_path[0];
if (is_file(public_path().'/'.$setting->slider_image) && file_exists(public_path().'/'.$setting->slider_image)){
unlink(public_path().'/'.$setting->slider_image);
}
}
}
$requestData = $request->all();
// $requestData['slug'] = Setting::create_slug($requestData['keyword']);
if(isset($image_path1)){
$requestData['slider_image'] = $image_path1;
}
$setting->fill($requestData);
if($setting->save()){
if($request->hasFile('images')){
$accommodation_image = $setting->accommodation_images();
$accommodation_image->delete();
foreach($request->file('images') as $imagefile) {
$extension = $imagefile->getClientOriginalExtension();
$image_folder_type = array_search('accomodation',config('custom.image_folders')); //for image saved in folder
$count = rand(100,999);
$out_put_path = User::save_image($imagefile,$extension,$count,$image_folder_type);
$image_path1 = $out_put_path[0];
// if (is_file(public_path().'/'.$setting->slider_image) && file_exists(public_path().'/'.$setting->slider_image)){
// unlink(public_path().'/'.$setting->slider_image);
// }
$accomodation_image = new AccomodationImage();
$accomodation_image->accomodation_id = $id;
$accomodation_image->image = $image_path1;
$accomodation_image->save();
}
}
if(\request('feature_name') ){
$accommodation_feature = $setting->accommodation_features();
$accommodation_feature->delete();
foreach (\request('feature_name') as $index => $value){
$setting_point = new AccomodationFeature();
$setting_point->accomodation_id = $id;
$setting_point->feature_name = $value;
$setting_point->save();
}
}
if(\request('information_name') ){
$accommodation_information = $setting->accommodation_informations();
$accommodation_information->delete();
foreach (\request('information_name') as $index => $value){
$setting_point = new AccomodationInformation();
$setting_point->accomodation_id = $id;
$setting_point->information_name = $value;
$setting_point->save();
}
}
if(\request('title_name') ){
$accommodation_title = $setting->accommodation_slider_titles();
$accommodation_title->delete();
foreach (\request('title_name') as $index => $value){
$setting_point = new AccomodationSlidertitle();
$setting_point->accomodation_id = $id;
$setting_point->title_name = $value;
$setting_point->save();
}
}
}
Session::flash('success','Accomodation succesffuly edited.');
return redirect($this->redirect);
}
public function delete($id){
$setting=Accomodation::findorfail($id);
// if($setting->accommodation_features->count() > 0){
// $setting->accommodation_features()->delete();
// }
// if($setting->accommodation_informations->count() > 0){
// $setting->accommodation_informations()->delete();
// }
// if($setting->accommodation_slider_titles->count() > 0){
// $setting->accommodation_informations()->delete();
// }
if($setting->delete()){
if (is_file(public_path().'/'.$setting->slider_image) && file_exists(public_path().'/'.$setting->slider_image)){
unlink(public_path().'/'.$setting->slider_image);
}
}
Session::flash('success','Accomodation successfully is deleted !');
return redirect($this->redirect);
}
public function points_remove($id)
{
if(Auth::user()){
$setting = AccomodationFeature::findorfail($id);
$setting->delete();
return response()->json(['point_id' => $id]);
}
}
public function information_points_remove($id)
{
if(Auth::user()){
$setting = AccomodationInformation::findorfail($id);
$setting->delete();
return response()->json(['point_id' => $id]);
}
}
public function slider_points_remove($id)
{
if(Auth::user()){
$setting = AccomodationSliderTitle::findorfail($id);
$setting->delete();
return response()->json(['point_id' => $id]);
}
}
}

@ -0,0 +1,155 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Appointment;
use Illuminate\Http\Request;
use Carbon\Carbon;
class AppointmentController extends Controller
{
protected $view = 'admin.appointment.';
protected $redirect = 'admin/appointments';
// protected $service;
public function education_appointments()
{
$appointments = Appointment::where('service_type', '1')->orderBy('id', 'DESC');
if (\request('date')) {
$date = \request('date');
$appointments = $appointments->whereDate('date', $date);
}
if (\request('status')) {
$status = \request('status');
$appointments = $appointments->where('status', $status);
}
if (\request('is_booked')) {
$is_booked = (\request('is_booked')) == '1' ? true : false;
$appointments = $appointments->where('is_booked', $is_booked);
}
$appointments = $appointments->paginate(20);
$service = 'Education';
$is_booked = $is_booked ?? null;
$date = $date ?? null;
$status = $status ?? null;
return view($this->view . 'index', compact('appointments', 'service', 'is_booked', 'date', 'status'));
}
public function visa_appointments()
{
$appointments = Appointment::where('service_type', '2')->orderBy('id', 'DESC');
if (\request('date')) {
$date = \request('date');
$appointments = $appointments->whereDate('date', $date);
}
if (\request('status')) {
$status = \request('status');
$appointments = $appointments->where('status', $status);
}
if (\request('is_booked')) {
$is_booked = (\request('is_booked')) == '1' ? true : false;
$appointments = $appointments->where('is_booked', $is_booked);
}
$appointments = $appointments->paginate(20);
$is_booked = $is_booked ?? null;
$date = $date ?? null;
$status = $status ?? null;
$service = 'Migration|Visa';
return view($this->view . 'index', compact('appointments', 'service', 'is_booked', 'date', 'status'));
}
public function create()
{
return view($this->view . 'create');
}
public function store(Request $request)
{
$request->validate([
'date' => 'required|date',
'start_time' => 'required|date_format:H:i',
'end_time' => 'required|date_format:H:i',
]);
$start_time = Carbon::createFromFormat('H:i', $request->get('start_time'))->format('H:i A');
$end_time = Carbon::createFromFormat('H:i', $request->get('end_time'))->format('H:i A');
$appointment = new Appointment([
'date' => $request->get('date'),
'start_time' => $start_time,
'end_time' => $end_time,
'location' => $request->get('location'),
'description' => $request->get('description'),
'service_type' => $request->get('service_type'),
]);
$appointment->save();
if($request->get('service_type') == "1"){
$service = 'education';
}else{
$service = 'visa';
}
return redirect($this->redirect.'/'.$service)->with('success', 'Appointment has been added');
}
public function edit($id)
{
$appointment = Appointment::findorfail($id);
$start_time = explode(" ", $appointment->start_time);
$start_time = $start_time[0];
$end_time = explode(" ", $appointment->end_time);
$end_time = $end_time[0];
$appointment['start_time'] = $start_time;
$appointment['end_time'] = $end_time;
return view($this->view . 'edit', compact('appointment'));
}
public function update(Request $request, $id)
{
$request->validate([
'date' => 'required|date',
'start_time' => 'required|date_format:H:i',
'end_time' => 'required|date_format:H:i',
]);
$start_time = Carbon::createFromFormat('H:i', $request->get('start_time'))->format('H:i A');
$end_time = Carbon::createFromFormat('H:i', $request->get('end_time'))->format('H:i A');
$appointment = Appointment::find($id);
$appointment->date = $request->get('date');
$appointment->start_time = $start_time;
$appointment->end_time = $end_time;
$appointment->location = $request->get('location');
$appointment->description = $request->get('description');
$appointment->service_type = $request->get('service_type');
$appointment->status = $request->get('status');
$appointment->save();
if($request->get('service_type') == "1"){
$service = 'education';
}else{
$service = 'visa';
}
return redirect($this->redirect.'/'.$service)->with('success', 'Appointment has been updated');
}
public function show($id)
{
$appointment = Appointment::with('appointment_booking_detail')->findorfail($id);
return view($this->view . 'show', compact('appointment'));
}
public function destroy($id)
{
$appointment = Appointment::find($id);
$appointment->delete();
return redirect($this->redirect)->with('success', 'Appointment has been deleted');
}
}

@ -4,8 +4,9 @@ namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Contact;
use App\Models\Referral;
use App\Models\Enquiry;
use App\Models\Subscription;
use App\Models\VisaService;
use App\Models\Service;
use Illuminate\Http\Request;
use Illuminate\Routing\Route;
@ -20,12 +21,14 @@ class HomeController extends Controller
public function indexAdmin()
{
if(Auth::check()){
$service= Service::where('status',true);
$visa_service= VisaService::where('status',true);
$education_service= Service::where('status',true);
$enquiry= Enquiry::all();
$contact= Contact::all();
$subscription= Contact::all();
$subscription= Subscription::all();
$contacts = Contact::paginate(config('custom.per_page'));
// $referrals=Referral::paginate(config('custom.per_page'));
return view('admin.index', compact( 'service', 'contact', 'contacts','subscription'));
return view('admin.index', compact( 'visa_service', 'education_service', 'enquiry', 'contacts','contact','subscription'));
}
return view('admin.login');
}

@ -209,49 +209,59 @@ class ServiceSectionController extends Controller
$point_descriptions = $request->point_descriptions ?? [];
$icons = $request->icons ?? [];
if($points != null && $point_ids != null){
foreach($request['point_ids'] as $key => $pid){
if((!empty($points)) && ($points[0] != null)){
$service_section_point = $service_section->service_section_point();
$service_section_point->delete();
foreach($points as $point){
$service_section_point = new ServiceSectionPoint();
$service_section_point = $service_section_point->findorfail($pid);
// $service_section_point = ServiceSectionPoint::find($id);
if(array_key_exists($key,$point_descriptions)){
$service_section_point->point_description = $point_descriptions[$key];
$service_section_point->service_section_id = $service_section->id;
$service_section_point->point = $point;
$service_section_point->save();
}
}
if(array_key_exists($key,$icons)){
$extension = $icons[$key]->getClientOriginalExtension();
$image_folder_type = array_search('service',config('custom.image_folders')); //for image saved in folder
$count = rand(100,999);
// if($points != null && $point_ids != null){
// foreach($request['point_ids'] as $key => $pid){
// $service_section_point = new ServiceSectionPoint();
// $service_section_point = $service_section_point->findorfail($pid);
// // $service_section_point = ServiceSectionPoint::find($id);
$out_put_path = User::save_image($icons[$key],$extension,$count,$image_folder_type);
is_array($out_put_path) ? $service_section_point->icon = $out_put_path[0] : $service_section_point->icon = $out_put_path;
// $service_section_point->icon = $points_descriptions[$key];
}
$service_section_point->point = $points[$key];
$service_section_point->update();
// if(array_key_exists($key,$point_descriptions)){
// $service_section_point->point_description = $point_descriptions[$key];
// }
// if(array_key_exists($key,$icons)){
// $extension = $icons[$key]->getClientOriginalExtension();
// $image_folder_type = array_search('service',config('custom.image_folders')); //for image saved in folder
}
}
else{
foreach($points as $key => $point){
$service_section_point = new ServiceSectionPoint();
$service_section_point->service_section_id = $service_section->id;
$service_section_point->point = $point;
if(array_key_exists($key,$icons)){
$extension = $icons[$key]->getClientOriginalExtension();
$image_folder_type = array_search('service',config('custom.image_folders')); //for image saved in folder
// $count = rand(100,999);
$count = rand(100,999);
// $out_put_path = User::save_image($icons[$key],$extension,$count,$image_folder_type);
// is_array($out_put_path) ? $service_section_point->icon = $out_put_path[0] : $service_section_point->icon = $out_put_path;
// // $service_section_point->icon = $points_descriptions[$key];
// }
// $service_section_point->point = $points[$key];
// $service_section_point->update();
$out_put_path = User::save_image($icons[$key],$extension,$count,$image_folder_type);
is_array($out_put_path) ? $service_section_point->icon = $out_put_path[0] : $service_section_point->icon = $out_put_path;
// $service_section_point->icon = $points_descriptions[$key];
}
$service_section_point->save();
}
}
// }
// }
// else{
// foreach($points as $key => $point){
// $service_section_point = new ServiceSectionPoint();
// $service_section_point->service_section_id = $service_section->id;
// $service_section_point->point = $point;
// if(array_key_exists($key,$icons)){
// $extension = $icons[$key]->getClientOriginalExtension();
// $image_folder_type = array_search('service',config('custom.image_folders')); //for image saved in folder
// $count = rand(100,999);
// $out_put_path = User::save_image($icons[$key],$extension,$count,$image_folder_type);
// is_array($out_put_path) ? $service_section_point->icon = $out_put_path[0] : $service_section_point->icon = $out_put_path;
// // $service_section_point->icon = $points_descriptions[$key];
// }
// $service_section_point->save();
// }
// }
// $service_point = $service_section->service_section_point();
// $service_point->delete();
// foreach($points as $key => $point){

@ -169,7 +169,7 @@ class VisaServiceController extends Controller
'short_description' => 'required',
'seo_title' => 'required',
'keywords'=>'required',
'image'=>'required|mimes:jpeg,png,jpg,svg',
'image'=>'mimes:jpeg,png,jpg,svg',
]);
$service = new VisaService();

@ -181,66 +181,20 @@ class VisaServiceSectionController extends Controller
$service_section->status = \request('status');
$service_section->order_by = \request('order_by');
// if($request->hasFile('image')){
// $extension = \request()->file('image')->getClientOriginalExtension();
// $image_folder_type = array_search('service',config('custom.image_folders')); //for image saved in folder
// $count = rand(100,999);
// $out_put_path = User::save_image(\request('image'),$extension,$count,$image_folder_type);
// $image_path = $out_put_path[0];
// if (is_file(public_path().'/'.$service_section->image) && file_exists(public_path().'/'.$service_section->image)){
// unlink(public_path().'/'.$service_section->image);
// }
// $service_section->image = $image_path;
// }
if($service_section->update()){
$points = $request->points;
if($points[0] != null){
if($request['point_ids'] !== null){
foreach($request['point_ids'] as $key => $pid){
$service_section_point = new VisaServiceSectionPoint();
$service_section_point = $service_section_point->find($pid);
// $service_section_point = ServiceSectionPoint::find($id);
$service_section_point->point = $points[$key];
$service_section_point->update();
}
}else{
foreach($points as $key => $point){
$service_section_point = new VisaServiceSectionPoint();
$service_section_point->visa_service_section_id = $service_section->id;
$service_section_point->point = $point;
$service_section_point->save();
}
}
}
$service_point = $service_section->service_section_point();
$service_point->delete();
foreach($points as $key => $point){
$service_section_point = new ServiceSectionPoint();
$service_section_point->service_section_id = $service_section->id;
if(array_key_exists($key,$point_descriptions)){
$service_section_point->point_description = $point_descriptions[$key];
}
if(array_key_exists($key,$icons)){
$extension = $icons[$key]->getClientOriginalExtension();
if($request->hasFile('image')){
$extension = \request()->file('image')->getClientOriginalExtension();
$image_folder_type = array_search('service',config('custom.image_folders')); //for image saved in folder
$count = rand(100,999);
$out_put_path = User::save_image($icons[$key],$extension,$count,$image_folder_type);
is_array($out_put_path) ? $service_section_point->icon = $out_put_path[0] : $service_section_point->icon = $out_put_path;
// $service_section_point->icon = $points_descriptions[$key];
$out_put_path = User::save_image(\request('image'),$extension,$count,$image_folder_type);
$image_path = $out_put_path[0];
if (is_file(public_path().'/'.$service_section->image) && file_exists(public_path().'/'.$service_section->image)){
unlink(public_path().'/'.$service_section->image);
}
$service_section_point->point = $point;
$service_section_point->update();
$service_section->image = $image_path;
}
if($service_section->update()){
Session::flash('success','Visa Service Section has been successfully updated!');
return redirect('admin/visa_services/'.$id.'/sections');

@ -0,0 +1,145 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Appointment;
use Carbon\Carbon;
use App\Models\AppointmentBookingDetail;
class AppointmentController extends Controller
{
public function index(){
$educationAppointments = Appointment::where('date', '>=', Carbon::today())->where('service_type', '1')->get();
$visaAppointments = Appointment::where('date', '>=', Carbon::today())->where('service_type', '2')->get();
// foreach($educationAppointments as $appointment){
// $startTime = Carbon::createFromFormat('H:i', $appointment->start_time);
// $date = Carbon::createFromFormat('H:i', $appointment->start_time);
// dd($date);
// }
return view('appointment', compact('educationAppointments', 'visaAppointments'));
}
public function get_appointment_by_date(Request $request){
$dateTime = $request->date;
$date_parts = explode(" ", $dateTime);
$month_number = date_parse($date_parts[1])['month'];
$carbon = Carbon::createFromDate($date_parts[3], $month_number, $date_parts[2]);
$date = $carbon->format('Y-m-d');
$type_id = $request->id;
$appointments_all = Appointment::whereDate('date',$date)->where(['service_type' => $type_id,'is_booked' => false,'status' => 1])->get();
$old_date = Carbon::createFromFormat('Y-m-d', $date);
$formated_date = $old_date->format('M d, Y');
$currentTime = Carbon::now();
$appointments = [];
foreach ($appointments_all as $appointment) {
$start_time = explode(" ", $appointment->start_time);
$start_time = $start_time[0];
$appointmentDate = Carbon::createFromFormat('Y-m-d H:i', $appointment->date.' '.$start_time);
if ($appointmentDate->gt($currentTime)) {
array_push($appointments, $appointment);
}
}
return response()->json(['appointment' => $appointments,'formated_date' => $formated_date]);
}
public function form_submit(Request $request){
$request->validate([
'name' => 'required',
'email' => 'required|email',
'phone' => 'required',
]);
$appointment_id = $request->get('appointment_id');
$appointment = Appointment::findorfail($appointment_id);
$appointment_detail = new AppointmentBookingDetail();
$appointment_detail->name = $request->get('name');
$appointment_detail->email = $request->get('email');
$appointment_detail->phone = $request->get('phone');
$appointment_detail->notes = $request->get('notes');
$appointment_detail->appointment_id = $appointment_id;
$email = $request['email'];
$name = $request['name'];
$phone = $request['phone'];
if($appointment_detail->save()){
$date = Carbon::createFromFormat('Y-m-d', $appointment->date);
$formated_date = $date->format('M d, Y');
$appointment->is_booked = true;
$appointment->save();
$subject = 'Appointment Booked Successfully.';
dispatch(function() use ($name,$email,$phone,$subject,$formated_date,$appointment) {
\Mail::send('appointment_confirmed', array(
'full_name' =>$name,
'email' =>$email,
'date' => $formated_date,
'start_time' => $appointment['start_time'],
'end_time' => $appointment['end_time'],
'phone' =>$phone,
'subject' =>$subject
), function($message) use ($subject,$email,$name){
// $subject=($service!= '') ? 'Enquiry for '.$service : 'Contact/Feedback';
$message->subject($subject);
// $message->from('admin@eteducation.com.au', 'Admin');
$message->to($email, $name)->subject($subject);
// $message->cc('extratechweb@gmail.com', 'Extratech')->subject($subject);
// $message->cc('admin@eteducation.com.au', 'Extratech')->subject($subject);
});
});
dispatch(function() use ($name,$email,$phone,$subject,$formated_date,$appointment) {
\Mail::send('appointment_confirmed_for_admin', array(
'full_name' =>$name,
'email' =>$email,
'date' => $formated_date,
'start_time' => $appointment['start_time'],
'end_time' => $appointment['end_time'],
'phone' =>$phone,
'subject' =>$subject
), function($message) use ($subject){
// $subject=($service!= '') ? 'Enquiry for '.$service : 'Contact/Feedback';
$message->subject($subject);
// $message->to($email, $name)->subject($subject);
$message->to('mahesh@extratechs.com.au', 'Extratech')->subject($subject);
// $message->cc('admin@eteducation.com.au', 'Extratech')->subject($subject);
});
});
}
return response()->json(['appointment_detail' => $appointment_detail,'appointment' => $appointment,'formated_date' => $formated_date],200);
}
}

@ -9,7 +9,7 @@ use App\Models\Page;
class BlogController extends Controller
{
public function index(){
$page = Page::where(['title' => 'Blog','status' => 1])->first();
$page = Page::where(['title' => 'Blogs','status' => 1])->first();
$blogs = NewsAndUpdate::where('status',1)->get();
return view('blogs',compact('blogs','page'));
}

@ -0,0 +1,76 @@
<?php
namespace App\Http\Controllers;
use App\Jobs\SendEnquiryMailJob;
use App\Models\Country;
use App\Models\Enquiry;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Session;
class EnquiryController extends Controller
{
public function form()
{
$countries = Country::all();
return view('enquiry-form', compact('countries'));
}
public function submit(Request $request)
{
$work_experience = $request->get('work_experience');
if ($work_experience == 'no') {
$request['work_experience_details'] = null;
$request['salary_mode'] = null;
}
$marital_status = $request->get('marital_status');
if ($marital_status == 'Widow' || $marital_status == 'Single') {
$request['married_date'] = null;
$request['spouse_academics'] = null;
$request['spouse_work_experience'] = null;
$request['spouse_salary_mode'] = null;
}
DB::beginTransaction();
try {
$enquiry = Enquiry::create($request->all());
} catch (\Exception $e) {
DB::rollback();
return redirect()->back()->with(['msg' => 'Something went wrong. Please try again!', 'status' => false], 400);
}
DB::commit();
dispatch(new SendEnquiryMailJob($enquiry));
return redirect()->back()->with(['msg' => 'We have recieved your enquiry. You will be contacted soon!', 'status' => true], 200);
}
public function index()
{
$enquiries = Enquiry::orderBy('id', 'DESC');
if (\request('name')) {
$key = \request('name');
$enquiries = $enquiries->where('first_name', 'like', $key . '%');
}
if (\request('email')) {
$key = \request('email');
$enquiries = $enquiries->where('email', 'like', $key . '%');
}
$enquiries = $enquiries->paginate(30);
return view('admin.enquiry.index', compact('enquiries'));
}
public function show($id)
{
$enquiry = Enquiry::findorfail($id);
return view('admin.enquiry.show', compact('enquiry'));
}
public function delete($id)
{
$enquiry = Enquiry::findorfail($id);
$enquiry->delete();
Session::flash('success', 'Enquiry has been successfully deleted!');
return redirect('admin/enquiries');
}
}

@ -8,10 +8,19 @@ use App\Models\Testimonial;
use App\Models\NewsAndUpdate;
use App\Models\Subscription;
use App\Models\AboutUs;
use Illuminate\Support\Facades\Artisan;
use Database\Seeders\AppointmentTableSeeder;
class HomeController extends Controller
{
public function runSeeder(){
Artisan::call('db:seed', ['--class' => AppointmentTableSeeder::class]);
}
public function runQueueJobs(){
Artisan::call('queue:listen');
}
public function index(){
$sliders = Slider::where('status',1)->get();
$testimonials = Testimonial::where('status',1)->get();
$blogs = NewsAndUpdate::where('status',1)->get();

@ -8,15 +8,18 @@ use App\Models\Page;
class VisaController extends Controller
{
public function index(){
$page = Page::where(['title' => 'Visa','status' => 1])->first();
$visas = VisaService::where('status',1)->get();
return view('visa',compact('visas','page'));
public function index()
{
$page = Page::where(['title' => 'Visa', 'status' => 1])->first();
$visas = VisaService::where('status', 1)->get();
return view('visa', compact('visas', 'pages'));
}
public function details($slug){
$page = Page::where(['title' => 'Visa','status' => 1])->first();
$visas = VisaService::where('status',1)->get();
$service = VisaService::where(['slug' => $slug,'status' => 1])->orderby('order_by','asc')->first();
return view('visa',compact('service','page','visas'));
public function details($slug)
{
$page = Page::where(['title' => 'Visa', 'status' => 1])->first();
$visas = VisaService::where('status', 1)->get();
$service = VisaService::where(['slug' => $slug, 'status' => 1])->orderby('order_by', 'asc')->first();
return view('visa', compact('service', 'page', 'visas'));
}
}

@ -0,0 +1,41 @@
<?php
namespace App\Jobs;
use App\Mail\EnquiryMail;
use App\Models\Setting;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Mail;
class SendEnquiryMailJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/**
* Create a new job instance.
*
* @return void
*/
protected $enquiry;
public function __construct($enquiry)
{
$this->enquiry = $enquiry;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
$email = Setting::where('key', 'email')->get('value')->first()->value;
Mail::to($email)->send(new EnquiryMail($this->enquiry));
}
}

@ -0,0 +1,65 @@
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Mail\Mailables\Content;
use Illuminate\Mail\Mailables\Envelope;
use Illuminate\Queue\SerializesModels;
class EnquiryMail extends Mailable
{
use Queueable, SerializesModels;
/**
* Create a new message instance.
*
* @return void
*
*/
protected $enquiry;
public function __construct($enquiry)
{
$this->enquiry = $enquiry;
}
/**
* Get the message envelope.
*
* @return \Illuminate\Mail\Mailables\Envelope
*/
public function envelope()
{
return new Envelope(
subject: 'Enquiry Mail',
);
}
/**
* Get the message content definition.
*
* @return \Illuminate\Mail\Mailables\Content
*/
public function content()
{
return new Content(
view: 'enquiry_mail',
with: [
'enquiry' => $this->enquiry,
],
);
}
/**
* Get the attachments for the message.
*
* @return array
*/
public function attachments()
{
return [];
}
}

@ -10,7 +10,8 @@ class AboutUs extends Model
use HasFactory;
protected $table = "about_us";
public function about_us_points(){
public function about_us_points()
{
return $this->hasMany(AboutUsPoint::class);
}
}

@ -10,7 +10,8 @@ class AboutUsPoint extends Model
use HasFactory;
protected $table = "about_us_points";
public function about_us(){
public function about_us()
{
return $this->belongsto(AboutUs::class);
}
}

@ -0,0 +1,17 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Appointment extends Model
{
use HasFactory;
protected $guarded = ['id'];
public function appointment_booking_detail(){
return $this->hasOne(AppointmentBookingDetail::class);
}
}

@ -0,0 +1,15 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class AppointmentBookingDetail extends Model
{
use HasFactory;
public function appointment(){
return $this->belongsTo(Appointment::class);
}
}

@ -8,10 +8,10 @@ use Illuminate\Database\Eloquent\Model;
class Contact extends Model
{
use HasFactory;
protected $fillable=['fullname','email','service_id','phone','message','status','created_at'];
protected $fillable = ['fullname', 'email', 'service_id', 'phone', 'message', 'status', 'created_at'];
public function service(){
public function service()
{
return $this->belongsto(Service::class);
}
}

@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Country extends Model
{
use HasFactory;
}

@ -0,0 +1,13 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Enquiry extends Model
{
use HasFactory;
protected $guarded = ['id'];
}

@ -69,7 +69,7 @@ return [
|
*/
'timezone' => 'UTC',
'timezone' => 'Australia/Sydney',
/*
|--------------------------------------------------------------------------

@ -53,6 +53,10 @@ return [
'12'=>'page'
],
'service_type' => [
'1' => 'Education',
'2' => 'Visa'
],
'course_types'=>[
'1' =>'Upcoming Courses',
'2' =>'Recommended Courses',

@ -48,8 +48,8 @@ return [
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'database' => env('DB_DATABASE', 'eteducation'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',

@ -0,0 +1,37 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('appointments', function (Blueprint $table) {
$table->id();
$table->date('date');
$table->string('start_time');
$table->string('end_time');
$table->string('location')->nullable();
$table->string('description')->nullable();
$table->enum('status',[1,2]);
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('appointments');
}
};

@ -0,0 +1,32 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('appointments', function (Blueprint $table) {
$table->enum('service_type',[1,2]);
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('appointments', function (Blueprint $table) {
//
});
}
};

@ -0,0 +1,32 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('appointments', function (Blueprint $table) {
$table->boolean('is_booked')->default(false);
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('appointments', function (Blueprint $table) {
//
});
}
};

@ -0,0 +1,37 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('appointment_booking_details', function (Blueprint $table) {
$table->id();
$table->bigInteger('appointment_id')->unsigned();
$table->foreign('appointment_id')->references('id')->on('appointments')->onDelete('cascade');
$table->string('name');
$table->string('email')->nullable();
$table->string('phone');
$table->string('notes')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('appointment_booking_details');
}
};

@ -0,0 +1,59 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('enquiries', function (Blueprint $table) {
$table->id();
$table->string('first_name');
$table->string('middle_name')->nullable();
$table->string('last_name');
$table->date('dob');
$table->string('cob');
$table->string('gender');
$table->string('email');
$table->string('phone');
$table->string('address');
$table->string('highest_qualification');
$table->string('stream')->nullable();
$table->string('gpa');
$table->string('graduate_year');
$table->string('gap')->nullable();
$table->string('current_status')->nullable();
$table->string('work_experience');
$table->text('work_experience_details')->nullable();
$table->string('salary_mode')->nullable();
$table->string('test_score')->nullable();
$table->string('marital_status');
$table->string('married_date')->nullable();
$table->string('spouse_academics')->nullable();
$table->string('spouse_work_experience')->nullable();
$table->string('spouse_salary_mode')->nullable();
$table->string('immigration_history')->nullable();
$table->string('desired_study_field')->nullable();
$table->string('desired_location')->nullable();
$table->boolean('status')->default(true);
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('enquiries');
}
};

@ -0,0 +1,49 @@
<?php
namespace Database\Seeders;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use App\Models\Appointment;
use Carbon\Carbon;
use Carbon\CarbonInterval;
use Illuminate\Support\Facades\DB;
class AppointmentTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$latestAppointment = DB::table('appointments')->latest('date')->first();
$startDate = $latestAppointment ? Carbon::parse($latestAppointment->date)->addDay() : Carbon::now();
$startTime = Carbon::parse("9:00 AM");
$endTime = Carbon::parse("5:00 PM");
foreach(config('custom.service_type') as $key => $value){
for ($i = 0; $i < 7; $i++) {
$date = $startDate->copy()->addDays($i);
for ($j = 0; $j <= ((($endTime->diffInMinutes($startTime)) / 30)-1); $j++) {
$currentTime = $startTime->copy()->addMinutes(30 * $j);
$currentEndTime = $startTime->copy()->addMinutes(30 * $j + 30);
DB::table('appointments')->insert([
'date' => $date,
'start_time' => $currentTime->format("H:i A"),
'end_time' => $currentEndTime->format("H:i A"),
'service_type' => $key
]);
}
}
}
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 460 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Before

Width:  |  Height:  |  Size: 1.0 MiB

After

Width:  |  Height:  |  Size: 1.0 MiB

Before

Width:  |  Height:  |  Size: 389 KiB

After

Width:  |  Height:  |  Size: 389 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

@ -1,5 +1,5 @@
.sb{
background: #13a64f;
background: #326cbf;
padding-bottom: 50px;
}
.sidebar-dark-primary .nav-sidebar>.nav-item>.nav-link.active{
@ -28,7 +28,7 @@
margin-top: 10px;
}
.main-header{
background: #13a64f;
background: #326cbf;
}
.nav-link i{
color:#fff;
@ -206,10 +206,7 @@ svg{
.create-button{
margin-top:10px;
}
.create-button .col-md-12{
/* display:flex;
justify-content:center; */
}
.create-button .col-md-12 button{
padding:10px 50px;
}
@ -265,11 +262,6 @@ svg{
background: none;
}
.table-search{
/* width: fit-content; */
}
.search-form .table-search input{
/* margin-right: 10px; */
border-radius: 5px!important;
@ -277,7 +269,6 @@ svg{
.ds-input:focus{
border-color: #1850b7;
}
/* new edit */
.table td{
@ -320,9 +311,6 @@ svg{
background: none;
border:none;
color:#fff;
}
.dropdown-menubar .dropdown-menu[data-bs-popper]{
}
.dropdown-menubar button:active{
background-color: none;
@ -362,13 +350,13 @@ svg{
}
.btn-green{
color:#fff;
background: #13a64f;
border-color:#13a64f;
background: #326cbf;
border-color:#326cbf;
}
.btn-green:hover{
color:#fff;
background: #ea8937;
border-color:#ea8937;
background: #D933A2;
border-color:#D933A2;
}
.card-header{
padding: 1rem 1rem!important;
@ -453,7 +441,7 @@ p .font-medium{
font-weight: 700;
font-size: 16px;
color: #000;
width: 400px;
width: 300px;
}
.contact-info{
display: inline-block;
@ -469,3 +457,25 @@ p .font-medium{
.admin-table img{
width: 200px !important;
}
.sidebar-icon .menu-title{
display: inline-flex;
align-items: center;
justify-content: space-between;
padding-right: 20px;
}
.badge.notbooked{
background: #1F8D60;
font-size: 1rem;
padding: 0.6rem 1rem;
}
.badge.booked{
background: #C31521;
font-size: 1rem;
padding: 0.6rem 1rem;
}
.contact-info h2{
font-weight: bold;
font-size: 28px;
color: #326CBF;
margin-bottom: 1rem;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

@ -47,7 +47,7 @@ h2{
text-align: center;
gap: 2rem;
text-decoration: none;
padding: 0 0.8rem !important;
padding: 0 0.2rem !important;
list-style: none;
}
.nav-link{
@ -56,8 +56,23 @@ h2{
font-size: 17px;
line-height: 22px;
color: #2B2A29 !important;
padding: 0.5rem 0.1rem;
}
.header .appointment-btn{
text-decoration: none;
color: #FFFFFF;
background: #326CBF;
padding: 10px 1rem;
border-radius: 20px;
box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.15);
font-weight: 500;
font-size: 17px;
line-height: 22px;
}
.header .appointment-btn:hover{
background-color: #E32394;
transition: background-color 1s ease-out 100ms;
}
.nav-link:hover,
.nav-link:active {
color: #326CBF !important;
@ -108,6 +123,7 @@ h2{
top: 100%;
animation: fadeInUp 500ms;
padding: 0;
left: -25px;
}
.dropdown-menu a{
font-size: 1rem;
@ -232,7 +248,7 @@ Responsive Codes
.top-links{
display: flex;
align-items: center;
gap: 0.8rem;
gap: 1.8rem;
color: #000000;
margin-right: 0;
}
@ -245,7 +261,17 @@ Responsive Codes
.top-socials a{
font-size: 24px;
}
.top-links a,
.top-links a{
color: #326CBF;
font-weight: bold;
font-size: 16px;
line-height: 24px;
text-decoration: none;
}
.top-links a:hover {
text-decoration: underline;
color: #d933a2;
}
.top-links h2{
text-decoration: none;
font-weight: 500;
@ -266,7 +292,7 @@ Responsive Codes
padding: 3rem 6rem;
position: absolute;
top: 20%;
width: 60%;
width: 50%;
}
.slider-content h2{
font-weight: 700;
@ -434,7 +460,10 @@ Responsive Codes
.blog-detail-section,
.faq-section,
.student-visa-section,
.services-page-section{
.services-page-section,
.appointment-section,
.enquiry-form-section,
.privacy-policy-section{
padding: 3rem 6rem;
}
.services-section .row,
@ -716,17 +745,20 @@ Responsive Codes
.blog-img img{
border-radius: 12px 12px 0 0;
}
.blog-date{
.blog-date {
position: absolute;
right: 20px;
bottom: -35px;
right: 15px;
bottom: -30px;
display: inline-flex;
background: #326CBF;
border-radius: 50%;
padding: 20px 10px;
padding: 5px 5px;
color: #FFF1FC;
border: 3px solid #7AA9EC;
}
width: 56px;
height: 56px;
align-items: center;
}
.blog-date h5{
font-weight: 700;
font-size: 15px;
@ -735,10 +767,18 @@ Responsive Codes
color: #FFFFFF;
margin-bottom: 0;
}
.mr-3 {
margin-right: 30px;
}
.dinline {
display: inline-block;
}
/* blog ection css end */
/* study abroad css starts */
.abroad-banner-section{
box-shadow: inset 0 1700px rgb(0 0 0 / 30%);
padding: 3rem 6rem;
height: 50vh;
background-repeat: no-repeat;
@ -830,17 +870,41 @@ Responsive Codes
.scholarship-desc h1,
.scholarship-desc h3,
.career-counselling h3,
.visa-desc h3{
.visa-desc h3, .study-detail-desc h5{
color: #296AC7;
}
.universities-card{
.study-detail-desc h5{
font-weight: 600;
font-size: 22px;
margin-top: 30px;
margin-bottom: 0;
}
/* .universities-card{
background: #FFFFFF;
box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.1);
border-radius: 8px;
text-align: center;
padding: 20px;
margin: 20px 0;
} */
.universities-card ul li{
list-style: none;
font-size:16px;
font-weight: 600;
line-height: 30px;
}
.universities-card ul li::before {
content: "\f00c";
color: #296AC7;
font-family: FontAwesome, sans-serif;
display: inline-block;
margin-right: 0.5em;
margin-left: -1.3em;
width: 1.3em;
}
.universities-card ul{
margin-top:15px;
}
.universities-card h5{
font-weight: 700;
margin-top: 1rem;
@ -940,9 +1004,8 @@ Responsive Codes
color: #E22899;
font-family: FontAwesome, sans-serif;
display: inline-block;
margin-right: 0.5em;
margin-right: 0.4em;
margin-left: -1.3em;
width: 1.3em;
}
.visa-display-section{
margin-top: 40px;
@ -1014,14 +1077,18 @@ Responsive Codes
line-height: 2.6rem;
color: #FFFFFF;
}
.form-sec .form-control::placeholder{
.form-sec .form-control::placeholder,
.enquiry-form-section .form-control::placeholder,
.enquiry-form-section .form-select{
font-weight: 400;
font-size: 14px;
line-height: 26px;
color: #7B8792;
}
.form-sec .form-control{
background: #FFFFFF;
.form-sec .form-control,
.enquiry-form-row .form-control,
.enquiry-form-row .form-select{
background-color: #FFFFFF;
border: 1px solid #B1B1B1;
border-radius: 6px;
padding: 10px;
@ -1051,6 +1118,12 @@ Responsive Codes
line-height: 28px;
color: #0A2849;
}
.enquiry-form-row label{
margin-bottom: 8px;
font-weight: 400;
font-size: 16px;
line-height: 28px;
}
.contact-form .row,
.visa-display-section .row{
display: flex;
@ -1237,8 +1310,7 @@ Responsive Codes
/* blogs page css */
.article-card{
display: flex;
align-items: center;
gap: 20px;
gap: 30px;
width: 100%;
}
.related-articles{
@ -1247,9 +1319,6 @@ Responsive Codes
gap: 30px;
height: 100%;
}
.article-img{
width: 500px;
}
.featured-article img,
.article-img img{
border-radius: 12px;
@ -1376,9 +1445,6 @@ Responsive Codes
flex-direction: column;
gap: 20px;
}
.recent-card-img{
width: 300px;
}
.recent-card-content{
display: flex;
gap: 20px;
@ -1389,7 +1455,12 @@ Responsive Codes
font-size: 14px;
line-height: 18px;
color: #000000;
display: inline;
}
.recent-post-desc h5:nth-of-type(2){
margin-left:10px;
}
.recent-post-desc h2{
font-weight: 700;
font-size: 18px;
@ -1415,6 +1486,16 @@ Responsive Codes
margin: 1rem 0;
justify-content: space-between;
}
.faq-section .accordion-button{
font-weight: bold;
font-size: 17px;
}
.faq-section .accordion{
margin-top:30px;
}
.faq-section .accordion-button:not(.collapsed) {
color: #296ac7;
}
.faq-section .accordion-button:focus{
box-shadow: none;
}
@ -1442,7 +1523,279 @@ Responsive Codes
text-align: center;
color: #111111;
}
/* appointment page css */
.appointment-cards{
display: flex;
flex-direction: column;
gap: 20px;
}
/* .appointment-card{
background-color: #E5F0FF;
display: flex;
align-items: center;
gap: 20px;
text-decoration: none;
color: #000000;
padding: 10px 15px;
border-radius: 12px;
width: 360px;
} */
.appointment-section .btn-appointment{
display: flex;
align-items: center;
background-color: #E5F0FF;
text-decoration: none;
color: #000000;
padding: 10px 15px;
border-radius: 8px;
margin-bottom: 15px;
text-align: left;
}
.appointment-section .btn-appointment h2{
font-size: 20px;
font-weight: bold;
}
.appointment-section .appointment-pills .active{
background-color: #326cbf!important;
color: #fff!important;;
}
.appointment-card-img{
width: 40px;
padding:5px;
display: inline-block;
margin-right:8px;
}
.book-modal-info p{
color: #808080;
}
.appointment-section .nav-pills{
width:82%;
}
.appointment-card h3{
font-weight: bold;
font-size:24px;
}
.appointment-section form input:focus, .btn-close:focus, .appointment-section form textarea:focus{
box-shadow: none;
}
.appointment-section .modal-header{
background:#296AC7;
color:#fff;
}
.appointment-section .modal-footer button{
font-weight: 600;
}
.appointment-section .btn-primary{
background: #296AC7;
font-weight: 600;
}
.appointment-section .btn-secondary{
background: #5d5d5d;
}
.appointment-section .btn-primary:hover{
background: #0A4EB0;
border:1px solid #0b4aa5;
font-weight: 600;
}
.appointment-section .btn-secondary:hover{
background: #e62194;
border:1px solid #e62194;
font-weight: 600;
}
.appointment-section .btn-close{
background:url(../images/corss-white.svg) 0 0 no-repeat;
}
.calendar-top{
display: flex;
gap: 10px;
}
.calendar-top h5{
font-weight: bold;
font-size: 18px;
}
.zabuto-calendar{
margin-top: 20px !important;
}
table.lightgrey-weekends tbody td:nth-child(n+6) {
background-color: #f3f3f3;
}
.appointment-section h1{
color: #296AC7;
}
.calender-section h3{
font-size: 18px;
color: #9f9f9f;
}
.calender-section h2{
color: #296AC7;
}
.calender-disable{
pointer-events: none;
cursor: not-allowed;
}
.calender-disable:hover{
cursor: not-allowed;
}
.available-dates{
/* background: #f0f0f0; */
display: inline-block;
justify-content: center;
color: #272626;
margin-top: 1rem;
}
.available-dates button{
display: inline-block;
background: #e5f0ff;
border: 1px solid #e0ecfb;
color:#1a60c5;
padding: 10px 12px;
margin: 6px;
}
/* .available-dates button:nth-of-type(1){
margin-left:0;
} */
.available-dates button, .appointment-section .modal-footer button{
transition: all 250ms ease-in-out;
}
.available-dates button:hover{
background: #296ac7;
border:1px solid #2464c0;
color:#fff;
}
.available-dates h5{
margin-bottom: 0;
}
.zabuto-calendar.table>thead>tr>th,
.zabuto-calendar.table>thead:first-child>tr:first-child>td {
color: #000000;
}
.zabuto-calendar.table>thead:first-child>tr:first-child>td{
pointer-events: all;
}
table.lightgrey-weekends tbody td:nth-child(n+6) {
background-color: #f3f3f3 !important;
color: #d30000;
pointer-events: none !important;
}
.event-colourful {
color: #d7d7d7 !important;
cursor: not-allowed;
}
.event-colourful .zabuto-calendar__day{
pointer-events: none;
}
.event-clickable{
pointer-events: all !important;
color: #000000;
cursor: pointer;
background-color: #ecf4ff !important;
}
.event-clickable.active{
background-color: #27ab00 !important;
}
/* appointment page css ends */
/* enquiry page css starts */
.enquiry-from-btn{
padding: 15px 60px;
background: #326CBF;
color: #FFFFFF;
box-shadow: 0px 0px 10px rgb(0 0 0 / 15%);
border: none;
font-weight: 500;
font-size: 16px;
line-height: 22px;
border-radius: 6px;
margin-top: 35px;
}
.enquiry-from-btn:hover{
background-color: #E32394;
transition: background-color 1s ease-out 100ms;
}
.form-select .select-placeholder{
color: #000000;
}
.enquiry-form-row h3{
font-weight: 600;
color: #212529;
margin: 10px 0;
text-align: center;
font-size: 24px;
letter-spacing: 0.001em;
display: inline-block ;
}
.enquiry-form-row h3::after{
content: '';
border-bottom: 2px solid #212529;
margin: 0.5% 45%;
justify-content: center;
display: block;
}
.enquiry-form-section h2{
font-weight: 700;
text-align: center;
font-size: 36px;
line-height: 48px;
letter-spacing: 0.005em;
color: #326CBF;
}
.enquiry-form-section p{
text-align: center;
}
#spouse-married-date,
#spouse-academic,
#spouse-experience,
#spouse-salary,
#work-exp-detail,
#work-salary-mode{
display: none;
}
.married{
display: block !important;
}
.enquiry-form-section .form-control:focus,
.enquiry-form-section .form-select:focus{
box-shadow: none;
border-color: none;
}
.error{
color: red;
font-size: 14px;
line-height: 1.8rem;
}
/* enquiry page css ends */
/* privacy policy css starts */
.privacy-policy-section h1{
font-weight: 700;
text-align: center;
font-size: 36px;
line-height: 48px;
letter-spacing: 0.005em;
color: #326CBF;
margin-bottom: 1rem;
}
.privacy-policy-section ul li{
list-style: none;
color:#353030;
padding: 5px;
}
.privacy-policy-section ul li::before{
content: "\f058";
color: #326CBF;
font-family: FontAwesome;
display: inline-block;
margin-right: 0.6em;
margin-left: -1.3em;
width: 1.3em;
}
.definition-policy,
.personal-policy,
.contact-policy{
background: #eff2f4;
padding: 2rem;
margin-bottom: 40px;
}
/* privacy policy css ends */
/* Footer Css */
.footer{
background: #296AC7;
@ -1521,7 +1874,9 @@ Responsive Codes
align-items: center;
gap: 10px;
}
.blog-info h6{
.blog-info h6,
.calendar-top p,
.calendar-top h5{
margin-bottom: 0;
}
.socials-icon{
@ -1625,23 +1980,23 @@ Responsive Codes
transition: all 200ms ease-in-out;
}
.fa-facebook:hover{
color: #4267B2;
color: #A9C5ED;
}
.fa-twitter:hover{
color: #1DA1F2;
color: #A9C5ED;
}
.fa-linkedin:hover{
color: #0077B5;
color: #A9C5ED;
}
.fa-instagram:hover {
color: #d6249f;
color: #A9C5ED;
/* background: radial-gradient(circle at 30% 107%, #fdf497 0%, #fdf497 5%, #fd5949 45%,#d6249f 60%,#285AEB 90%) !important;
background-clip: text;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent !important; */
}
.fa-linkedin-in:hover{
color: #0e76a8;
color: #d6249f;
}
.box{
width: 50px;
@ -1682,6 +2037,9 @@ Responsive Codes
.displayBtn{
display: block;
}
.displayEnqBtn{
display: inline-block;
}
/* Footer Css */
/* mobile view css */
@media only screen and (min-width: 320px) and (max-width: 480px) {
@ -1689,10 +2047,13 @@ Responsive Codes
font-size: 28px;
line-height: 38px;
}
h2 {
h2,
.featured-article h2,
.blog-detail-desc h2,
.visa-content h3 {
font-weight: 600;
font-size: 22px;
line-height: 38px;
line-height: 34px;
}
#topbar{
padding: 0.5rem 0;
@ -1776,7 +2137,9 @@ Responsive Codes
.lets-chat-section,
.blog-banner,
.overseas-section,
.services-page-section{
.services-page-section,
.enquiry-form-section,
.privacy-policy-section{
padding: 2rem;
}
.contact-form-section,
@ -1873,6 +2236,28 @@ Responsive Codes
.service-page-card{
min-height: 20pc;
}
.study-detail-desc h5{
margin-bottom: 15px;
}
.universities-card ul{
margin:0;
}
.universities-card ul:nth-last-of-type(4){
margin-bottom:20px;
}
.faq-section .accordion-button{
line-height: 27px;
align-items: flex-start;
}
.faq-section .accordion-button, .accordion-body{
line-height: 27px;
}
.appointment-section{
padding:2rem;
}
.appointment-section .nav-pills {
width: 96%;
}
}
/* mobile view css end */
/* ipad, tablets screen css */
@ -1945,7 +2330,9 @@ Responsive Codes
.our-values-section,
.blog-banner,
.overseas-section,
.services-page-section{
.services-page-section,
.enquiry-form-section,
.privacy-policy-section{
padding: 3rem;
}
.services-content h1,
@ -2037,7 +2424,9 @@ Responsive Codes
.lets-chat-section,
.our-values-section,
.overseas-section,
.services-page-section{
.services-page-section,
.enquiry-form-section,
.privacy-policy-section{
padding: 3rem;
}
.why-us-section::before,
@ -2104,23 +2493,40 @@ Responsive Codes
}
/* Desktops, large screens css ends */
/* Extra large screens, TV css */
@media only screen and (min-width: 1201px) and (max-width: 1220px) {
@media only screen and (min-width: 1201px) and (max-width: 1240px) {
.navbar-list{
gap: 0.5rem;
}
.header .appointment-btn,
.nav-link{
font-size: 14px;
}
}
@media only screen and (min-width: 1241px) and (max-width: 1360px) {
.navbar-list{
gap: 0.5rem;
}
.header .appointment-btn,
.nav-link{
font-size: 15px;
}
}
/* Extra large screens, TV css ends */
@media only screen and (min-width: 1201px) and (max-width: 1440px) {
@media only screen and (min-width: 1360px) and (max-width: 1440px) {
.navbar-list{
gap: 1rem;
}
.review-card{
min-height: 37pc;
}
.values-lists a{
.values-lists a{
padding: 15px 15px 15px 0;
}
}
@media only screen and (min-width: 1440px) and (max-width: 1460px) {
.navbar-list{
gap: 1rem;
}
}
@media only screen and (min-width: 1440px) and (max-width: 1560px) {
.review-card{

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

@ -0,0 +1,12 @@
<svg width="66" height="66" viewBox="0 0 66 66" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M51.0779 47.1385C51.0779 47.1385 43.2868 54.45 32.9846 54.45C22.6824 54.45 14.8965 47.1385 14.8965 47.1385C14.8965 47.1385 13.4476 40.1827 17.191 28.1738C19.1658 21.8419 47.2674 21.1974 49.4691 26.7352C53.2126 36.135 51.0779 47.1385 51.0779 47.1385Z" fill="#C31780"/>
<path d="M14.8963 47.1385L17.3661 49.1185C17.3661 49.1185 17.3455 45.1997 18.5572 41.5439C19.011 40.1775 20.63 39.6052 21.8469 40.3735L31.2777 46.2877C31.7947 46.6114 32.3914 46.7852 33.0014 46.7898C33.6113 46.7943 34.2106 46.6294 34.7324 46.3135C39.2389 43.5806 50.9952 36.4289 51.5314 35.9906C51.5314 35.9906 51.5314 35.1089 51.3097 33.9849L14.7622 34.0313L14.8963 47.1385Z" fill="#AA2376"/>
<path d="M63.3238 26.828L34.0363 44.2716C33.3969 44.6531 32.5977 44.6531 31.9531 44.2716L2.67596 26.828C1.86127 26.3433 1.86127 25.1625 2.67596 24.6778L31.9635 7.23423C32.6028 6.85267 33.4021 6.85267 34.0466 7.23423L63.3341 24.6778C64.1436 25.1625 64.1436 26.3433 63.3238 26.828Z" fill="#E22899"/>
<path d="M33.0206 42.9928C33.0155 42.9928 33.0052 42.998 33 42.998C32.9175 42.998 32.835 42.9773 32.7628 42.9309L2.15533 25.2863C2.15533 25.2863 2.00579 25.5698 2.15533 26.0803C2.31001 26.5908 2.5472 26.7558 2.67611 26.8331L31.9636 44.2767C32.2833 44.4675 32.6442 44.5655 33.0052 44.5655H33.0258V42.9928H33.0206Z" fill="#F266BB"/>
<path d="M32.9998 42.9928C33.0049 42.9928 33.0153 42.998 33.0204 42.998C33.1029 42.998 33.1854 42.9773 33.2576 42.9309L63.8651 25.2863C63.8651 25.2863 64.0146 25.5698 63.8651 26.0803C63.7104 26.5908 63.4732 26.7558 63.3443 26.8331L34.0568 44.2767C33.7371 44.4675 33.3762 44.5655 33.0153 44.5655H32.9946V42.9928H32.9998Z" fill="#C41780"/>
<path d="M18.2788 36.1247L18.4438 34.6758C18.4438 34.6758 31.0818 27.8025 32.3296 27.0806C33.5774 26.3587 34.8871 25.5544 35.4697 24.9098C36.501 23.7755 35.7585 23.0639 35.7585 23.0639C35.7585 23.0639 34.9438 24.3839 32.9999 24.1519C31.8862 24.0178 30.4372 23.1155 30.1949 22.6926C29.9526 22.2698 15.9276 32.9536 15.9276 32.9536L15.8296 34.6706L18.2788 36.1247Z" fill="#AA2376"/>
<path d="M35.7585 23.069C34.4075 24.9562 32.1182 24.1312 32.1182 24.1312C32.1182 24.1312 24.9458 27.5704 24.6777 27.0497C24.4096 26.5289 30.6022 23.3423 30.6022 23.3423C30.6022 23.3423 30.2568 22.0739 30.2929 21.5325C30.2929 21.5325 19.0935 28.6584 14.8911 31.0561C12.6894 32.3142 12.2202 33.5001 12.2253 35.1708C12.2253 35.9029 12.2357 38.28 12.246 39.6979C12.246 39.9609 12.1325 40.2084 11.9314 40.3734C11.627 40.6229 11.3816 40.9369 11.2131 41.2926C11.0446 41.6484 10.9571 42.0371 10.9569 42.4308C10.9569 43.2197 11.3024 43.9261 11.8489 44.4159C12.1428 44.6789 12.081 45.2461 12.1068 45.6122C12.1583 46.3134 12.1068 46.6331 11.818 47.2828C11.5344 47.917 11.2714 48.5667 11.091 49.237C10.9518 49.7526 10.8589 50.2837 10.7661 50.8097C10.1525 54.3314 9.8741 58.0954 8.24988 61.3336C8.21929 61.3941 8.20103 61.4601 8.19615 61.5277C8.19127 61.5953 8.19988 61.6633 8.22146 61.7275C8.24305 61.7918 8.27719 61.8512 8.3219 61.9021C8.36661 61.9531 8.421 61.9947 8.48191 62.0245C8.60438 62.0863 8.74633 62.0971 8.87675 62.0546C9.00717 62.0121 9.11548 61.9197 9.17801 61.7976C10.0236 60.1115 10.4619 58.2656 10.8228 56.4351C10.8022 58.0903 10.7919 59.7609 10.7352 61.5656C10.7249 61.9162 10.6991 62.6226 11.0188 62.7773C12.2202 63.36 12.2202 61.5656 12.2202 61.5656C12.2202 61.5656 12.2357 63.1795 13.8702 63.1795C15.5047 63.1795 15.6233 61.5656 15.6233 61.5656C15.6233 61.5656 15.7419 63.0454 16.5824 62.9733C16.9227 62.9423 17.3713 62.7361 17.2114 60.9675C17.0516 59.204 16.6546 52.8825 16.4844 50.8818C16.2472 48.1129 15.3397 46.4681 15.1541 45.4884C15.0871 45.1172 15.0819 44.7304 15.3758 44.4881C15.6749 44.243 15.9171 43.9357 16.0855 43.5875C16.2538 43.2394 16.3443 42.8587 16.3507 42.4721C16.3571 42.0854 16.2792 41.702 16.1224 41.3485C15.9656 40.9949 15.7337 40.6798 15.4428 40.425C15.3394 40.3346 15.2585 40.2214 15.2066 40.0943C15.1547 39.9672 15.1332 39.8297 15.1438 39.6928C15.2418 38.3573 15.35 36.4186 15.4377 35.97C15.8193 33.9539 16.8144 33.5929 17.8354 32.9948C18.8563 32.3915 33.6444 25.6781 34.5055 25.1058C36.0988 24.0384 35.7585 23.069 35.7585 23.069Z" fill="#E2A610"/>
<path d="M35.7588 23.069C34.4852 24.8686 31.8401 24.0642 31.8401 24.0642C31.8401 24.0642 25.0802 27.06 25.5288 26.5186C25.9722 25.9772 30.6026 23.3423 30.6026 23.3423C30.6026 23.3423 30.2571 22.0739 30.2932 21.5325C30.2932 21.5325 18.8979 28.117 14.479 31.2829C13.3394 32.1028 11.9266 33.4434 13.0765 34.7789C13.6076 35.3925 14.6337 35.5214 15.2885 35.0367C15.6855 34.7479 15.9949 34.3251 16.3455 33.99C16.7787 33.5672 17.3046 33.299 17.8202 32.9948C18.8412 32.3915 33.6293 25.6781 34.4904 25.1058C36.0991 24.0384 35.7588 23.069 35.7588 23.069Z" fill="#FFCA28"/>
<path d="M13.4628 47.3653C12.7822 47.3653 12.3232 47.3086 11.9056 47.2106C11.8311 47.1936 11.7652 47.1504 11.7197 47.0889C11.6743 47.0274 11.6525 46.9517 11.6581 46.8755L11.7922 44.9058C11.8076 44.7047 11.9984 44.5655 12.1943 44.6222C12.6584 44.7563 13.5865 44.8903 15.1025 44.5706C15.2881 44.5294 15.4737 44.6583 15.4943 44.8491L15.7006 46.8084C15.7161 46.9683 15.6129 47.1178 15.4582 47.1539C14.6693 47.3344 14.097 47.3653 13.4628 47.3653Z" fill="#9E740B"/>
<path d="M51.0777 47.1385C51.0777 47.1385 51.9904 42.3741 51.6243 37.3055C51.5624 36.4496 51.0365 35.7122 50.6291 38.708C50.3971 40.425 49.8918 45.5658 49.0307 48.7781C50.3455 47.8294 51.0777 47.1385 51.0777 47.1385ZM33.8919 18.9699C34.2683 19.0885 34.6138 19.3772 34.7118 19.7639C34.8407 20.2796 34.5158 20.7952 34.1652 21.1974C33.4794 21.9863 32.5358 22.6772 31.4891 22.6411C31.1436 22.6308 30.7724 22.5174 30.561 22.2441C30.4115 22.0533 30.3599 21.8058 30.3444 21.5635C30.2516 19.7949 32.2522 18.4542 33.8919 18.9699Z" fill="#FF55BC"/>
</svg>

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

@ -0,0 +1,10 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_205_38)">
<path d="M0.293031 0.293081C0.480558 0.10561 0.734866 0.000294724 1.00003 0.000294724C1.26519 0.000294724 1.5195 0.10561 1.70703 0.293081L8.00003 6.58608L14.293 0.293081C14.3853 0.197571 14.4956 0.121389 14.6176 0.0689798C14.7396 0.0165708 14.8709 -0.0110155 15.0036 -0.0121693C15.1364 -0.0133231 15.2681 0.0119786 15.391 0.0622595C15.5139 0.11254 15.6255 0.186793 15.7194 0.280686C15.8133 0.374579 15.8876 0.486231 15.9379 0.609127C15.9881 0.732024 16.0134 0.863703 16.0123 0.996482C16.0111 1.12926 15.9835 1.26048 15.9311 1.38249C15.8787 1.50449 15.8025 1.61483 15.707 1.70708L9.41403 8.00008L15.707 14.2931C15.8892 14.4817 15.99 14.7343 15.9877 14.9965C15.9854 15.2587 15.8803 15.5095 15.6948 15.6949C15.5094 15.8803 15.2586 15.9855 14.9964 15.9878C14.7342 15.99 14.4816 15.8892 14.293 15.7071L8.00003 9.41408L1.70703 15.7071C1.51843 15.8892 1.26583 15.99 1.00363 15.9878C0.741433 15.9855 0.49062 15.8803 0.305212 15.6949C0.119804 15.5095 0.014635 15.2587 0.0123566 14.9965C0.0100781 14.7343 0.110873 14.4817 0.293031 14.2931L6.58603 8.00008L0.293031 1.70708C0.10556 1.51955 0.000244141 1.26525 0.000244141 1.00008C0.000244141 0.734917 0.10556 0.480609 0.293031 0.293081Z" fill="white"/>
</g>
<defs>
<clipPath id="clip0_205_38">
<rect width="16" height="16" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

@ -0,0 +1,82 @@
/*! Zabuto Calendar - v2.1.0 - 2022-12-29
* https://github.com/zabuto/calendar
* Copyright (c) 2022 Anke Heijnen; Licensed MIT */
.zabuto-calendar {
width: 100%;
margin: 0;
padding: 0
}
.zabuto-calendar__navigation__item--next,
.zabuto-calendar__navigation__item--prev {
text-align: center;
cursor: pointer
}
.zabuto-calendar__navigation__item--header {
text-align: center
}
.zabuto-calendar__navigation__item--header__title {
cursor: pointer;
font-weight: bolder
}
.zabuto-calendar__days-of-week__item {
text-align: center
}
.zabuto-calendar__day {
text-align: center
}
.zabuto-calendar__day--today {
text-align: center
}
.zabuto-calendar.table td,
.zabuto-calendar.table th {
vertical-align: middle
}
.zabuto-calendar.table thead td {
padding-top: 14px;
padding-bottom: 14px;
background-color: #fafafa
}
.zabuto-calendar.table-bordered thead td {
border: 0
}
.zabuto-calendar.table thead th {
background-color: #f0f0f0
}
.zabuto-calendar.table>thead:first-child>tr:first-child>td {
border-top: 1px solid #ddd
}
.zabuto-calendar.table>thead>tr>th {
border-bottom: 2px solid #ddd
}
.zabuto-calendar.table>tbody td {
width: calc(100% / 7)
}
.zabuto-calendar.table>tbody>tr:last-child>td {
border-bottom: 1px solid #ddd
}
.zabuto-calendar.table>tbody td .badge {
font-size: 100%
}
.zabuto-calendar.clickable>tbody td {
cursor: pointer
}
.zabuto-calendar.table.clickable>tbody td:hover {
background-color: #f0f0f0
}

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 394 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 394 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 460 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 389 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 389 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 441 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 441 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 441 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 441 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 500 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 431 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 572 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 610 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 389 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 932 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 572 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 431 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 405 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 441 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

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

Loading…
Cancel
Save