Compare commits

...

88 Commits
et#4 ... master

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
tribikram 42cf230d1f [edit] subscription response 2 years ago
tribikram 0965c5384e [edit] topbar, static images and subscription function 2 years ago
tribikram af14ed28ec [add] loader on subscribe 2 years ago
Mahesh Sharma a03a462df5 et#14-rebase 2 years ago
tribikram bc56a1bc5b [add] insurance and career caunselling page 2 years ago
Mahesh Sharma feaf5fdfe4 page-controller 2 years ago
Mahesh Sharma bce3f03aec changes 2 years ago
Mahesh Sharma 80deba7807 visa-section 2 years ago
Mahesh Sharma 6cdd7bd5fb rebase-et#12 2 years ago
tribikram b461fb7d58 [add] static icons for about us homepage 2 years ago
Mahesh Sharma 7deffa7011 rebase-et#12 2 years ago
Mahesh Sharma 786f71526b welcome-blade 2 years ago
Mahesh Sharma 3f29aac604 blog-update 2 years ago
Mahesh Sharma c3ba2dd657 subscription 2 years ago
tribikram d83ce78ce0 [edit] css fixed 2 years ago
tribikram 3f560013ed [edit] responsive design 2 years ago
Mahesh Sharma 334a55e10b visa-service-update 2 years ago
tribikram 19ee0065fb [add] visa page 2 years ago
Mahesh Sharma 6133ab4714 faq-module 2 years ago
Mahesh Sharma b5e126e207 contact-and-app 2 years ago
tribikram 2278b8c858 [add] client side validation 2 years ago
tribikram 3180b425c8 [edit] hover dropdown and responsive design 2 years ago
Mahesh Sharma 64e65e5d36 et#6-rebase-conflicts 2 years ago
tribikram 068d1d546c [edit] mobile responsive 2 years ago
Mahesh Sharma d77b41f001 changes-after-live 2 years ago
Mahesh Sharma 5e9dc074f8 blog 2 years ago
tribikram ec8eb63e87 [add] faqs section 2 years ago
tribikram 6f5ae06de3 [edit] blog social share 2 years ago
Mahesh Sharma da3cbca386 et#4-rebase 2 years ago
tribikram cb40e2db72 [add] blogs banner section 2 years ago
tribikram 451b039346 [add] image change on click 2 years ago
Mahesh Sharma 7d7cbd32fb et#4-rebase 2 years ago
Mahesh Sharma 5fc953dd42 about-testimonial-page 2 years ago
  1. 36
      app/Console/Commands/CheckQueue.php
  2. 33
      app/Console/Commands/ProcessQueue.php
  3. 2
      app/Console/Kernel.php
  4. 15
      app/Http/Controllers/AboutUsController.php
  5. 26
      app/Http/Controllers/Admin/AboutUsController.php
  6. 278
      app/Http/Controllers/Admin/AccomodationController.php
  7. 155
      app/Http/Controllers/Admin/AppointmentController.php
  8. 31
      app/Http/Controllers/Admin/FaqController.php
  9. 11
      app/Http/Controllers/Admin/HomeController.php
  10. 26
      app/Http/Controllers/Admin/ImageUploadController.php
  11. 4
      app/Http/Controllers/Admin/NewsAndUpdateController.php
  12. 61
      app/Http/Controllers/Admin/PageController.php
  13. 76
      app/Http/Controllers/Admin/ServiceSectionController.php
  14. 2
      app/Http/Controllers/Admin/TestimonialController.php
  15. 2
      app/Http/Controllers/Admin/VisaServiceController.php
  16. 118
      app/Http/Controllers/Admin/VisaServiceSectionController.php
  17. 145
      app/Http/Controllers/AppointmentController.php
  18. 21
      app/Http/Controllers/BlogController.php
  19. 13
      app/Http/Controllers/ContactController.php
  20. 76
      app/Http/Controllers/EnquiryController.php
  21. 16
      app/Http/Controllers/FaqController.php
  22. 51
      app/Http/Controllers/HomeController.php
  23. 26
      app/Http/Controllers/ImageUploadController.php
  24. 4
      app/Http/Controllers/StudyAbroadController.php
  25. 17
      app/Http/Controllers/VisaController.php
  26. 41
      app/Jobs/SendEnquiryMailJob.php
  27. 65
      app/Mail/EnquiryMail.php
  28. 3
      app/Models/AboutUs.php
  29. 3
      app/Models/AboutUsPoint.php
  30. 17
      app/Models/Appointment.php
  31. 15
      app/Models/AppointmentBookingDetail.php
  32. 6
      app/Models/Contact.php
  33. 11
      app/Models/Country.php
  34. 2
      app/Models/Enquiry.php
  35. 12
      app/Models/Faq.php
  36. 2
      app/Models/NewsAndUpdate.php
  37. 13
      app/Models/Page.php
  38. 1
      composer.json
  39. 50
      composer.lock
  40. 2
      config/app.php
  41. 6
      config/custom.php
  42. 4
      config/database.php
  43. 13
      database/migrations/2022_12_13_035945_create_visa_service_sections_table.php
  44. 1
      database/migrations/2022_12_13_043239_create_visa_service_section_points_table.php
  45. 2
      database/migrations/2023_01_28_112013_add_bottom_description_to_about_us_table.php
  46. 37
      database/migrations/2023_01_30_094030_create_pages_table.php
  47. 36
      database/migrations/2023_02_01_060849_create_faqs_table.php
  48. 37
      database/migrations/2023_02_06_080253_create_appointments_table.php
  49. 32
      database/migrations/2023_02_07_044441_add_service_type_id_to_appointments_table.php
  50. 32
      database/migrations/2023_02_08_105304_add_is_booked_to_appointments_table.php
  51. 37
      database/migrations/2023_02_08_105817_create_appointment_booking_details_table.php
  52. 59
      database/migrations/2023_02_16_171148_create_enquiries_table.php
  53. 49
      database/seeders/AppointmentTableSeeder.php
  54. BIN
      public/265f9b86f1f2173dfba9df0c640c375f.png
  55. BIN
      public/30a732a08c6dc9216fff30a50d88ced1.jpg
  56. BIN
      public/32bdf53ff6fb74f9f0281dca72148679.png
  57. BIN
      public/444e7c4daeb60e097b604ecd0b82e72e.png
  58. BIN
      public/617de07568e91a7e61ab6cbe607aa8cf.png
  59. BIN
      public/6258765774afe8ab2415e5132328ceb8.png
  60. BIN
      public/66585abb06791217e1b88ae85417004b.png
  61. BIN
      public/a3b1cd88df18c6961bedd6566eeb3b2e.png
  62. 50
      public/admin/css/custom-admin.css
  63. BIN
      public/cd3ab551b8ba7b6b297a2aa9b7535059.png
  64. BIN
      public/e4b194be57f9f8535ef5e9458c78224b.jpg
  65. BIN
      public/f7f3ee09c49b9166801b81a4c76b0160.png
  66. BIN
      public/fac5889d788c0726512ab7c5cdbd646b.png
  67. BIN
      public/frontend/.DS_Store
  68. 1616
      public/frontend/css/style.css
  69. BIN
      public/frontend/icons/Icons/24-houes.png
  70. BIN
      public/frontend/icons/Icons/Institutions.png
  71. BIN
      public/frontend/icons/Icons/rating.png
  72. BIN
      public/frontend/icons/Icons/teams.png
  73. BIN
      public/frontend/icons/account-student.png
  74. BIN
      public/frontend/icons/business-visa.png
  75. BIN
      public/frontend/icons/career-counselling.png
  76. BIN
      public/frontend/icons/close.png
  77. 17
      public/frontend/icons/coin.svg
  78. BIN
      public/frontend/icons/email.png
  79. 3
      public/frontend/icons/email.svg
  80. 5
      public/frontend/icons/exclusive.svg
  81. BIN
      public/frontend/icons/hamburger.png
  82. BIN
      public/frontend/icons/jrp.png
  83. BIN
      public/frontend/icons/menu.png
  84. BIN
      public/frontend/icons/noto_graduation-cap.png
  85. 12
      public/frontend/icons/noto_graduation-cap.svg
  86. BIN
      public/frontend/icons/phone.png
  87. BIN
      public/frontend/icons/student-visa-icon.png
  88. BIN
      public/frontend/images/about/Commitment.jpg
  89. BIN
      public/frontend/images/about/Integrity.jpg
  90. BIN
      public/frontend/images/about/professionlaiosn-1.jpg
  91. BIN
      public/frontend/images/about/professionlaiosn.jpg
  92. BIN
      public/frontend/images/about/realiability.jpg
  93. BIN
      public/frontend/images/about/tranprancy.jpg
  94. BIN
      public/frontend/images/about/trusthworthy.jpg
  95. BIN
      public/frontend/images/attractive-man.png
  96. BIN
      public/frontend/images/blank.png
  97. BIN
      public/frontend/images/blog-banner.jpg
  98. BIN
      public/frontend/images/blog-passport.png
  99. BIN
      public/frontend/images/blogs-banner.png
  100. BIN
      public/frontend/images/blogs-detail.png
  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();
}
/**

@ -0,0 +1,15 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\AboutUs;
class AboutUsController extends Controller
{
public function index()
{
$about = AboutUs::where('status', true)->first();
return view('about', compact('about'));
}
}

@ -54,6 +54,7 @@ class AboutUsController extends Controller
*/
public function store(Request $request)
{
$this->validate(\request(),[
@ -147,6 +148,7 @@ class AboutUsController extends Controller
*/
public function update(Request $request, $id)
{
// dd($request->all());
$setting=AboutUs::findorfail($id);
$this->validate(\request(),[
@ -183,18 +185,18 @@ class AboutUsController extends Controller
// $requestData = $request->all();
// $setting->fill($requestData);
if($setting->update()){
$points = $request->points;
if((!empty($points)) && ($points[0] != null)){
$about_us_point = $setting->about_us_points();
$about_us_point->delete();
foreach($points as $point){
$about_us_point = new AboutUsPoint();
$about_us_point->about_us_id = $id;
$about_us_point->point = $point;
$about_us_point->save();
}
}
// $points = $request->points;
// if((!empty($points)) && ($points[0] != null)){
// $about_us_point = $setting->about_us_points();
// $about_us_point->delete();
// foreach($points as $point){
// $about_us_point = new AboutUsPoint();
// $about_us_point->about_us_id = $id;
// $about_us_point->point = $point;
// $about_us_point->save();
// }
// }
Session::flash('success','About Us has been Updated!');
return redirect($this->redirect);
}

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

@ -5,18 +5,18 @@ namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Service;
use App\Models\ServiceOld;
use App\Models\ServiceFaq;
use App\Models\Faq;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Session;
class ServiceFaqController extends Controller
class FaqController extends Controller
{
protected $view= 'admin.service_faq.';
protected $redirect = 'admin/service_faqs';
protected $view= 'admin.faq.';
protected $redirect = 'admin/faqs';
public function index(){
$settings = ServiceFaq::paginate(config('custom.per_page'));
$settings = Faq::paginate(config('custom.per_page'));
return view($this->view.'index',compact('settings'));
}
@ -34,21 +34,21 @@ class ServiceFaqController extends Controller
]);
$requestData = $request->all();
$setting = ServiceFaq::create($requestData);
Session::flash('success','ServiceFAQ is created');
$setting = Faq::create($requestData);
Session::flash('success','FAQ is created');
return redirect($this->redirect);
}
public function edit($id){
$setting = ServiceFaq::findorfail($id);
$setting = Faq::findorfail($id);
$services = Service::all();
return view($this->view.'edit',compact('setting'),compact('services'));
}
public function update(Request $request, $id){
$setting =ServiceFaq::findorfail($id);
$setting =Faq::findorfail($id);
$this->validate(\request(), [
'question' =>'required|string',
'answer'=>'required',
@ -59,8 +59,19 @@ class ServiceFaqController extends Controller
$requestData = $request->all();
$setting->fill($requestData);
$setting->save();
Session::flash('success','CourseFAQ is Updated');
Session::flash('success','FAQ is Updated');
return redirect($this->redirect);
}
public function show($id)
{
$faq = new Faq();
$setting = $faq->findorfail($id);
return view($this->view . 'show', compact('setting'));
}
}

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

@ -0,0 +1,26 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ImageUploadController extends Controller
{
public function storeImage(Request $request)
{
if ($request->hasFile('upload')) {
$finfo = finfo_open(FILEINFO_MIME_TYPE); // Return MIME type a la the 'mimetype' extension
$mimeType = finfo_file($finfo, $request->file('upload'));
finfo_close($finfo);
if ($mimeType == 'image/jpeg' || $mimeType == 'image/png' || $mimeType == 'image/svg+xml' || $mimeType == 'image/gif' || $mimeType == 'image/webp') {
$originName = $request->file('upload')->getClientOriginalName();
$fileName = pathinfo($originName, PATHINFO_FILENAME);
$extension = $request->file('upload')->getClientOriginalExtension();
$fileName = $fileName . '_' . time() . '.' . $extension;
$request->file('upload')->move(public_path('images/media'), $fileName);
$url = asset('images/media/' . $fileName);
return response()->json(['fileName' => $fileName, 'uploaded'=> 1, 'url' => $url]);
}
}
}
}

@ -17,7 +17,7 @@ use function GuzzleHttp\Promise\all;
class NewsAndUpdateController extends Controller
{
protected $view = 'admin.news_and_update.';
protected $redirect = 'admin/news_and_updates';
protected $redirect = 'admin/blogs';
public function index()
{
@ -43,7 +43,6 @@ class NewsAndUpdateController extends Controller
public function store(Request $request)
{
$this->validate(\request(), [
'description' => 'required',
// 'bottom_description' => 'required',
@ -105,7 +104,6 @@ class NewsAndUpdateController extends Controller
}
public function update(Request $request, $id){
$setting =NewsAndUpdate::findorfail($id);
$this->validate(\request(), [
'description' => 'required',

@ -4,17 +4,17 @@ namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Partner;
use App\Models\Page;
use App\Models\User;
use Illuminate\Support\Facades\Session;
class PartnerController extends Controller
class PageController extends Controller
{
protected $view = 'admin.partner.';
protected $redirect = 'admin/partners';
protected $view = 'admin.page.';
protected $redirect = 'admin/pages';
public function index()
{
$settings = Partner::orderBy('id','DESC');
$settings = Page::orderBy('id','DESC');
// if(\request('title')){
// $key = \request('title1');
// $settings = $settings->where('title1','like','%'.$key.'%');
@ -38,57 +38,58 @@ class PartnerController extends Controller
$this->validate(\request(), [
// 'title' => 'required',
'title' => 'required',
'status' => 'required',
'image' => 'required|file|mimes:jpeg,png,jpg'
'banner_image' => 'file|mimes:jpeg,png,jpg'
]);
if($request->hasFile('image')){
$extension = \request()->file('image')->getClientOriginalExtension();
$image_folder_type = array_search('partner',config('custom.image_folders')); //for image saved in folder
if($request->hasFile('banner_image')){
$extension = \request()->file('banner_image')->getClientOriginalExtension();
$image_folder_type = array_search('page',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);
$out_put_path = User::save_image(\request('banner_image'),$extension,$count,$image_folder_type);
$image_path1 = $out_put_path[0];
}
$requestData = $request->all();
if(isset($image_path1)){
$requestData['image'] = $image_path1;
$requestData['banner_image'] = $image_path1;
}
// $requestData['slug'] = Setting::create_slug($requestData['keyword']);
$setting = Partner::create($requestData);
$setting = Page::create($requestData);
Session::flash('success','Partner successfully created');
Session::flash('success','Page successfully created');
return redirect($this->redirect);
}
public function edit($id)
{
$setting = Partner::findorfail($id);
$setting = Page::findorfail($id);
return view($this->view.'edit',compact('setting'));
}
public function update(Request $request, $id){
$setting =Partner::findorfail($id);
$setting =Page::findorfail($id);
$this->validate(\request(), [
// 'name' => 'required',
'title' => 'required',
'status' => 'required',
'image' => 'file|mimes:jpeg,png,jpg,pdf'
]);
if(\request('image')){
if(\request('banner_image')){
$this->validate(\request(),[
'image' => 'file|mimes:jpeg,png,jpg,pdf'
'banner_image' => 'file|mimes:jpeg,png,jpg'
]);
if($request->hasFile('image')){
$extension = \request()->file('image')->getClientOriginalExtension();
$image_folder_type = array_search('partner',config('custom.image_folders')); //for image saved in folder
if($request->hasFile('banner_image')){
$extension = \request()->file('banner_image')->getClientOriginalExtension();
$image_folder_type = array_search('page',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);
$out_put_path = User::save_image(\request('banner_image'),$extension,$count,$image_folder_type);
$image_path1 = $out_put_path[0];
if (is_file(public_path().'/'.$setting->image) && file_exists(public_path().'/'.$setting->image)){
unlink(public_path().'/'.$setting->image);
if (is_file(public_path().'/'.$setting->banner_image) && file_exists(public_path().'/'.$setting->banner_image)){
unlink(public_path().'/'.$setting->banner_image);
}
}
}
@ -97,25 +98,25 @@ class PartnerController extends Controller
$requestData = $request->all();
// $requestData['slug'] = Setting::create_slug($requestData['keyword']);
if(isset($image_path1)){
$requestData['image'] = $image_path1;
$requestData['banner_image'] = $image_path1;
}
$setting->fill($requestData);
$setting->save();
Session::flash('success','Partner succesffuly updated.');
Session::flash('success','Page succesffuly updated.');
return redirect($this->redirect);
}
public function delete($id){
$setting=Partner::findorfail($id);
$setting=Page::findorfail($id);
if($setting->delete()){
if (is_file(public_path().'/'.$setting->image) && file_exists(public_path().'/'.$setting->image)){
unlink(public_path().'/'.$setting->image);
}
}
Session::flash('success','Partner is deleted !');
Session::flash('success','Page is deleted !');
return redirect($this->redirect);
}
}

@ -209,39 +209,59 @@ class ServiceSectionController extends Controller
$point_descriptions = $request->point_descriptions ?? [];
$icons = $request->icons ?? [];
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_id = $service_section->id;
$service_section_point->point = $point;
$service_section_point->save();
}
}
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);
// 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);
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
// 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
$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->point = $points[$key];
// $service_section_point->update();
}
}
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;
// $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){

@ -31,7 +31,7 @@ class TestimonialController extends Controller
{
$this->validate(\request(),[
'heading' =>'required',
// 'heading' =>'required',
// 'title' =>'required',
'image' =>'required|file|mimes:jpeg,png,jpg,pdf',
'review' =>'required',

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

@ -64,22 +64,18 @@ class VisaServiceSectionController extends Controller
$this->validate(\request(),[
// 'title' => 'required',
'description' => 'required',
'status' => 'required',
'order_by' => 'required'
]);
$service_section = new VisaServiceSection();
$service_section->right_title = \request('right_title');
$service_section->right_sub_title = \request('right_sub_title');
$service_section->left_title = \request('left_title');
$service_section->left_sub_title = \request('left_sub_title');
$service_section->top_description = strip_tags(\request('top_description'));
$service_section->left_description = strip_tags(\request('left_description'));
$service_section->point_title = strip_tags(\request('point_title'));
$service_section->visa_length = strip_tags(\request('visa_length'));
$service_section->title = \request('title');
$service_section->sub_title = \request('sub_title');
$service_section->description = (\request('description'));
$service_section->sub_description = (\request('sub_description'));
$service_section->visa_service_id = $id;
$service_section->status = \request('status');
$service_section->order_by = \request('order_by');
@ -99,22 +95,22 @@ class VisaServiceSectionController extends Controller
if($service_section->save()){
$points = $request->points;
// $points = $request->points;
// $point_descriptions = $request->point_descriptions ?? [];
// $icons = $request->icons ?? [];
if($points[0] != null){
// if($points[0] != null){
foreach($points as $key => $point){
// foreach($points as $key => $point){
$service_section_point = new VisaServiceSectionPoint();
// $service_section_point = new VisaServiceSectionPoint();
$service_section_point->visa_service_section_id = $service_section->id;
// $service_section_point->visa_service_section_id = $service_section->id;
$service_section_point->point = $point;
$service_section_point->save();
}
}
// $service_section_point->point = $point;
// $service_section_point->save();
// }
// }
Session::flash('success','Visa Service Section has been created!');
return redirect('admin/visa_services/'.$id.'/sections');
@ -172,84 +168,33 @@ class VisaServiceSectionController extends Controller
public function update(Request $request, $id, $secId)
{
$this->validate(\request(),[
'top_description' => 'required',
'description' => 'required',
'status' => 'required',
'order_by' => 'required'
]);
$service_section = VisaServiceSection::findOrFail($secId);
$service_section->right_title = \request('right_title');
$service_section->right_sub_title = \request('right_sub_title');
$service_section->left_title = \request('left_title');
$service_section->left_sub_title = \request('left_sub_title');
$service_section->top_description = strip_tags(\request('top_description'));
$service_section->left_description = strip_tags(\request('left_description'));
$service_section->point_title = strip_tags(\request('point_title'));
$service_section->visa_length = strip_tags(\request('visa_length'));
$service_section->title = \request('title');
$service_section->sub_title = \request('sub_title');
$service_section->description = (\request('description'));
$service_section->sub_description = (\request('sub_description'));
$service_section->visa_service_id = $id;
$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($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();
// $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->point = $point;
// $service_section_point->update();
// }
Session::flash('success','Visa Service Section has been successfully updated!');
return redirect('admin/visa_services/'.$id.'/sections');
@ -271,6 +216,7 @@ class VisaServiceSectionController extends Controller
}
public function service_point($service_point_id){
if(Auth::user()){
$setting = ServiceSectionPoint::findorfail($service_point_id);
$setting->delete();

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

@ -0,0 +1,21 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\NewsAndUpdate;
use App\Models\Page;
class BlogController extends Controller
{
public function index(){
$page = Page::where(['title' => 'Blogs','status' => 1])->first();
$blogs = NewsAndUpdate::where('status',1)->get();
return view('blogs',compact('blogs','page'));
}
public function blog_detail($slug){
$blog = NewsAndUpdate::where(['slug' => $slug, 'status' => 1])->first();
return view('blog-detail',compact('blog'));
}
}

@ -4,9 +4,15 @@ namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Contact;
use App\Models\Page;
class ContactController extends Controller
{
public function index(){
$page = Page::where(['title' => 'Contact Us','status' => 1])->first();
return view('contact',compact('page'));
}
public function post_contact(Request $request){
$contact = new Contact();
@ -45,10 +51,9 @@ class ContactController extends Controller
), function($message) use ($subject){
// $subject=($service!= '') ? 'Enquiry for '.$service : 'Contact/Feedback';
$message->subject($subject);
// $message->to('info@agilityhomecare.com.au', 'AgilityHomeCare')->subject($subject);
$message->to('mahesh@extratechs.com.au', 'Extratech')->subject($subject);
// $message->cc('suman@extratechs.com.u', 'Extratech')->subject($subject);
$message->to('admin@eteducation.com.au', 'Et-Visa')->subject($subject);
$message->cc('extratechweb@gmail.com', 'Extratech')->subject($subject);
$message->cc('suman@extratechs.com.au', 'Extratech')->subject($subject);
});
// });

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

@ -0,0 +1,16 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Faq;
use App\Models\Page;
class FaqController extends Controller
{
public function index(){
$page = Page::where(['title' => 'FAQ','status' => 1])->first();
$faqs = Faq::where('status',true)->get();
return view('faq',compact('faqs','page'));
}
}

@ -4,11 +4,56 @@ namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Slider;
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 index(){
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();
return view('welcome',compact('sliders'));
}
$testimonials = Testimonial::where('status',1)->get();
$blogs = NewsAndUpdate::where('status',1)->get();
$about_us = AboutUs::where('status',1)->get();
return view('welcome',compact('sliders','testimonials','blogs','about_us'));
}
public function subscribe(Request $request)
{
$email = $request->email;
$subscription = new Subscription();
$subscription->email = $email;
$subscription->save();
\Mail::send('subscribe_mail', array(
'email' =>\request('email'),
'subject' => 'Subscription Notice',
), function($message) use ($request){
$subject = 'Subscription Notice';
$message->subject('Subscription Notice');
$message->to('admin@eteducation.com.au', 'Et-Visa')->subject($subject);
$message->cc('extratechweb@gmail.com', 'Extratech')->subject($subject);
$message->cc('suman@extratechs.com.au', 'Extratech')->subject($subject);
});
return response()->json(['success' => 'Thank You for Subscribing !','status' =>'Ok'],200);
}
}

@ -0,0 +1,26 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ImageUploadController extends Controller
{
public function storeImage(Request $request)
{
if ($request->hasFile('upload')) {
$finfo = finfo_open(FILEINFO_MIME_TYPE); // Return MIME type a la the 'mimetype' extension
$mimeType = finfo_file($finfo, $request->file('upload'));
finfo_close($finfo);
if ($mimeType == 'image/jpeg' || $mimeType == 'image/png' || $mimeType == 'image/svg+xml' || $mimeType == 'image/gif' || $mimeType == 'image/webp') {
$originName = $request->file('upload')->getClientOriginalName();
$fileName = pathinfo($originName, PATHINFO_FILENAME);
$extension = $request->file('upload')->getClientOriginalExtension();
$fileName = $fileName . '_' . time() . '.' . $extension;
$request->file('upload')->move(public_path('images/media'), $fileName);
$url = asset('images/media/' . $fileName);
return response()->json(['fileName' => $fileName, 'uploaded'=> 1, 'url' => $url]);
}
}
}
}

@ -4,12 +4,14 @@ namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Service;
use App\Models\Page;
class StudyAbroadController extends Controller
{
public function study_abroad(){
$page = Page::where(['title' => 'Study Abroad','status' => 1])->first();
$services = Service::with('service_sections')->get();
return view('study-abroad',compact('services'));
return view('study-abroad',compact('services','page'));
}
public function details($slug){

@ -4,11 +4,22 @@ namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\VisaService;
use App\Models\Page;
class VisaController extends Controller
{
public function index(){
$visas = VisaService::where('status',1)->get();
return view('visa',compact('visas'));
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'));
}
}

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

@ -5,7 +5,7 @@ namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Partner extends Model
class Enquiry extends Model
{
use HasFactory;

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

@ -8,7 +8,7 @@ use Illuminate\Database\Eloquent\Model;
class NewsAndUpdate extends Model
{
use HasFactory;
protected $fillable=['slug','point_title','blog_type','image','image_alt','description','seo_title','seo_description','middle_description','bottom_description','keyword','meta_keyword','status','publish_date','title','image_credit','author','image_caption','thumbnail'];
protected $fillable=['slug','type','point_title','blog_type','image','image_alt','description','seo_title','seo_description','middle_description','bottom_description','keyword','meta_keyword','status','publish_date','title','image_credit','author','image_caption','thumbnail'];
public function news_and_update_points()
{

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

@ -6,6 +6,7 @@
"license": "MIT",
"require": {
"php": "^8.0.2",
"ckeditor/ckeditor": "^4.20",
"guzzlehttp/guzzle": "^7.2",
"laravel/framework": "^9.19",
"laravel/sanctum": "^3.0",

50
composer.lock generated

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "f70c81adf2990f185a8632535bd08631",
"content-hash": "dee6185e5e08740c0389af948f15bb03",
"packages": [
{
"name": "brick/math",
@ -62,6 +62,54 @@
],
"time": "2022-08-10T22:54:19+00:00"
},
{
"name": "ckeditor/ckeditor",
"version": "4.20.1",
"source": {
"type": "git",
"url": "https://github.com/ckeditor/ckeditor4-releases.git",
"reference": "d519387a9448cbb66a5091361ddf665fd8728743"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/ckeditor/ckeditor4-releases/zipball/d519387a9448cbb66a5091361ddf665fd8728743",
"reference": "d519387a9448cbb66a5091361ddf665fd8728743",
"shasum": ""
},
"type": "library",
"notification-url": "https://packagist.org/downloads/",
"license": [
"GPL-2.0+",
"LGPL-2.1+",
"MPL-1.1+"
],
"authors": [
{
"name": "CKSource",
"homepage": "https://cksource.com"
}
],
"description": "JavaScript WYSIWYG web text editor.",
"homepage": "https://ckeditor.com/ckeditor-4/",
"keywords": [
"CKEditor",
"ckeditor4",
"editor",
"fckeditor",
"html",
"javascript",
"richtext",
"text",
"wysiwyg"
],
"support": {
"forum": "https://stackoverflow.com/tags/ckeditor",
"issues": "https://github.com/ckeditor/ckeditor4/issues",
"source": "https://github.com/ckeditor/ckeditor4",
"wiki": "https://ckeditor.com/docs/ckeditor4/latest/"
},
"time": "2022-11-30T15:28:41+00:00"
},
{
"name": "dflydev/dot-access-data",
"version": "v3.0.2",

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

@ -50,9 +50,13 @@ return [
'9' => 'testimonial',
'10' => 'visa_service',
'11'=>'applicant',
'12'=>'partner'
'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',

@ -17,16 +17,11 @@ return new class extends Migration
$table->id();
$table->bigInteger('visa_service_id')->unsigned();
$table->foreign('visa_service_id')->references('id')->on('visa_services')->onDelete('cascade');
$table->longText('top_description')->nullable();
$table->string('image')->nullable();
$table->string('left_title');
$table->string('left_sub_title');
$table->longText('left_description');
$table->string('right_title')->nullable();
$table->string('right_sub_title')->nullable();
// $table->longText('sub_description')->nullable();
$table->longText('point_title')->nullable();
$table->string('visa_length')->nullable();
$table->string('title');
$table->string('sub_title')->nullable();
$table->longText('description');
$table->longText('sub_description')->nullable();
$table->enum('status',[1,2]);
$table->string('order_by');
$table->timestamps();

@ -18,6 +18,7 @@ return new class extends Migration
$table->bigInteger('visa_service_section_id')->unsigned();
$table->foreign('visa_service_section_id')->references('id')->on('visa_service_sections')->onDelete('cascade');
$table->text('point');
$table->string('image')->nullable();
$table->timestamps();
});
}

@ -14,7 +14,7 @@ return new class extends Migration
public function up()
{
Schema::table('about_us', function (Blueprint $table) {
$table->string('bottom_description')->nullable();
$table->longText('bottom_description')->nullable();
});
}

@ -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('pages', function (Blueprint $table) {
$table->id();
$table->string('banner_image')->nullable();
$table->string('title');
$table->string('sub_title')->nullable();
$table->longText('description')->nullable();
$table->longText('sub_description')->nullable();
$table->enum('status',['1','2']);
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('pages');
}
};

@ -0,0 +1,36 @@
<?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('faqs', function (Blueprint $table) {
$table->id();
$table->bigInteger('service_id')->unsigned()->nullable();
$table->foreign('service_id')->references('id')->on('services');
$table->longText('question');
$table->longText('answer');
$table->enum('status',[1,2]);
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('faqs');
}
};

@ -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.

After

Width:  |  Height:  |  Size: 460 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 460 KiB

Binary file not shown.

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: 460 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 717 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 460 KiB

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

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: 2.4 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 478 B

@ -1,4 +1,3 @@
<svg width="18" height="14" viewBox="0 0 18 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="1" y="1" width="16" height="12" rx="2" fill="#7E869E" fill-opacity="0.25" stroke="#326CBF" stroke-width="1.2"/>
<path d="M8.10557 7.55279L1 4V11C1 12.1046 1.89543 13 3 13H15C16.1046 13 17 12.1046 17 11V4L9.89443 7.55279C9.33137 7.83431 8.66863 7.83431 8.10557 7.55279Z" fill="#326CBF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M0.0132028 4.15129C-3.38676e-10 4.69022 0 5.30205 0 6V8C0 10.8284 0 12.2426 0.87868 13.1213C1.75736 14 3.17157 14 6 14H12C14.8284 14 16.2426 14 17.1213 13.1213C18 12.2426 18 10.8284 18 8V6C18 5.30205 18 4.69022 17.9868 4.15129L9.97129 8.60436C9.36724 8.93994 8.63276 8.93994 8.02871 8.60436L0.0132028 4.15129ZM0.242967 2.02971C0.325845 2.05052 0.407399 2.08237 0.485643 2.12584L9 6.85604L17.5144 2.12584C17.5926 2.08237 17.6742 2.05052 17.757 2.02971C17.6271 1.55619 17.4276 1.18491 17.1213 0.87868C16.2426 0 14.8284 0 12 0H6C3.17157 0 1.75736 0 0.87868 0.87868C0.572448 1.18491 0.372942 1.55619 0.242967 2.02971Z" fill="#296AC7"/>
</svg>

Before

Width:  |  Height:  |  Size: 399 B

After

Width:  |  Height:  |  Size: 784 B

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 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: 429 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 412 KiB

After

Width:  |  Height:  |  Size: 412 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 618 B

After

Width:  |  Height:  |  Size: 618 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 179 KiB

After

Width:  |  Height:  |  Size: 179 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 151 KiB

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 MiB

After

Width:  |  Height:  |  Size: 2.4 MiB

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

Loading…
Cancel
Save