Fewo Mails / Booking Country Services

This commit is contained in:
Kevin Adametz 2020-05-28 19:03:42 +02:00
parent b9c26d06d0
commit 48a6eb2282
154 changed files with 7761 additions and 1643 deletions

232
.idea/workspace.xml generated
View file

@ -2,20 +2,38 @@
<project version="4">
<component name="ChangeListManager">
<list default="true" id="e1ac1cea-a1a5-4c16-b5f0-5908c7d368de" name="Default Changelist" comment="">
<change afterPath="$PROJECT_DIR$/app/Http/Controllers/Settings/EmailTemplateController.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/Http/Controllers/Settings/InsuranceController.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/Http/Controllers/Settings/ServiceProviderController.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/Http/Controllers/Settings/TravelCompanyController.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/Models/EmailTemplate.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/Models/Insurance.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/Services/Placeholder.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/database/migrations/2020_04_23_144804_create_insurances_table.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/database/migrations/2020_04_23_144838_create_email_templates_table.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/Http/Controllers/CustomerFewoMailController.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/Http/Controllers/ModalController.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/Models/BookingCountryService.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/Models/CustomerFewoFile.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/Models/CustomerFewoMail.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/Models/EmailTemplateDir.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/Models/GeneralFile.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/Models/TravelCountryService.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/Models/TravelUserBookingFile.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/Repositories/BookingFewoFileRepository.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/Repositories/CustomerFewoFileRepository.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/Repositories/CustomerFewoMailRepository.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/Repositories/GeneralFileRepository.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/Services/Booking.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/Services/BookingFewo.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/booking.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/database/migrations/2020_04_23_144837_create_email_template_dirs_table.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/database/migrations/2020_05_15_111351_create_customer_fewo_mails_table.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/database/migrations/2020_05_15_111435_create_customer_fewo_files_table.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/database/migrations/2020_05_16_140222_create_travel_user_booking_files_table.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/database/migrations/2020_05_20_131909_create_general_files_table.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/database/migrations/2020_05_28_112257_create_travel_country_services_table.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/database/migrations/2020_05_28_112359_create_booking_country_services_table.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/database/migrations/2019_08_05_171716_create_i_q_content_folders_table.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/database/migrations/2019_08_05_171717_create_i_q_content_files_table.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/database/migrations/2019_08_05_171718_create_i_q_content_categories_table.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/database/migrations/2019_08_05_171719_create_i_q_content_tags_table.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/database/migrations/2019_08_05_171720_create_i_q_content_file_tags_table.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/public/css/_cropper.min.css" afterDir="false" />
<change afterPath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/public/css/cropper.css" afterDir="false" />
<change afterPath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/public/js/_cropper.min.js" afterDir="false" />
<change afterPath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/public/js/cropper.js" afterDir="false" />
<change afterPath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/public/js/jquery-cropper.js" afterDir="false" />
<change afterPath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/public/js/jquery-cropper.min.js" afterDir="false" />
<change afterPath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/src/Controllers/ColorController.php" afterDir="false" />
@ -30,50 +48,103 @@
<change afterPath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/src/views/colors.blade.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/src/views/file.blade.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/src/views/move-item.blade.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/resources/views/settings/_travel_country/detail.blade.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/resources/views/settings/email_template/index.blade.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/resources/views/settings/email_template/modal.blade.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/resources/views/settings/insurance/index.blade.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/resources/views/settings/service_provider/index.blade.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/resources/views/settings/travel_company/index.blade.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/customer/attachment/2020/04/5e99b543e42254.12049207_reiseanmeldung.pdf" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/customer/attachment/2020/04/5e99b544a84a15.70270514_reisebestätigung.pdf" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/customer/attachment/2020/04/5e99b546a93b85.31250574_gutschein2022588047711038.pdf" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/customer/attachment/2020/04/5e99b5497293f4.96026058_sicherungsscheinnachsis651r.pdf" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/customer/attachment/2020/04/5e99b54ba91d07.08332553_ust111.pdf" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/customer/attachment/2020/04/5e99b57f1c31f0.70883767_reiseanmeldung.pdf" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/customer/attachment/2020/04/5e99b580163fe3.60366976_reiseanmeldung.pdf" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/customer/attachment/2020/04/5ea8590b019148.46292698_muscat-sultan-qaboos-moschee-h1_k.jpg" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/customer/attachment/2020/04/5ea85937d5bf78.04249430_jdatlastoollogo.png" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/customer/attachment/2020/04/5ea859563f7df6.49508975_muscat-sultan-qaboos-moschee-h1_k.jpg" afterDir="false" />
<change afterPath="$PROJECT_DIR$/resources/views/admin/modal/country-service.blade.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/resources/views/admin/modal/upload.blade.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/resources/views/settings/emails/index.blade.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/resources/views/travel/user/booking/_detail_files.blade.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/resources/views/travel/user/booking/_detail_invoice.blade.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/resources/views/travel/user/booking/_detail_mails.blade.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/resources/views/travel/user/booking/_detail_sm_mails.blade.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/resources/views/travel/user/booking/mail/modal-new-booking-files.blade.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/resources/views/travel/user/booking/mail/modal-new-mail.blade.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/resources/views/travel/user/booking/mail/modal-show-mail-inner.blade.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/resources/views/travel/user/booking/mail/modal-show-mail.blade.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/resources/views/travel/user/booking/upload_modal.blade.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/booking/files/2020/05/5ecfd762aa38a0.56412773_jackodurextrusionsstrang.jpg" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/booking/files/2020/05/5ecfd762e89a97.23023265_jdatlastoollogo.png" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/booking_fewo/files/2020/05/5ebfdb1ba22d59.38592238_jdatlastoollogo.png" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/booking_fewo/files/2020/05/5ebfdb5d952323.95463407_muscat-sultan-qaboos-moschee-h1_k.jpg" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/customer/attachment/2020/05/5eb5345ca5de87.88438301_arb20190815.pdf" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/customer/attachment/2020/05/5eb953a1c209a0.17939907_arb20190815.pdf" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/customer/attachment/2020/05/5eb953a3eee0d4.85910050_sicherungsscheinnachsis651r.pdf" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/customer/attachment/2020/05/5eb953a586abe9.14636744_gutschein2022585047591314.pdf" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/customer/attachment/2020/05/5ebe7cafc91eb3.64758684_8.jpg" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/customer/attachment/2020/05/5ebfc2a178f776.19101914_8.jpg" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/customer/attachment/2020/05/5ec5300d90ac01.47787398_jdatlastoollogo.png" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/customer/attachment/2020/05/5ec530720c7520.94997351_.html" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/customer/attachment/2020/05/5ec530a06604b5.06762823_.html" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/customer/attachment/2020/05/5ec530a2888c21.81994786_.html" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/customer/attachment/2020/05/5ec530b0cd1b45.60705604_sicherungsscheinnachsis651.html" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/customer/attachment/2020/05/5ec530bea69b42.94459338_sicherungsscheinnachsis651.html" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/customer/attachment/2020/05/5ec530bf720f45.26590361_jdatlastoollogo.png" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/customer/attachment/2020/05/5ec53165b27a66.41746967_sicherungsscheinnachsis651.html" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/fewo/infos/2020/Anreiseinfo-10848.pdf" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/fewo/invoices/2020/10848.pdf" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/general/2020/05/5ec51b17d1da21.32961364_jdatlastoollogo.png" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/general/2020/05/5ec51c02399ba4.58193608_the-easter-bunny-with-easter-eggs.jpg" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/general/2020/05/5ec51c643b2398.58669480_ust111.pdf" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/public/cms_files/2020/05/5eb5320e7d1990.10675631_arb20190815.pdf" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/public/cms_files/2020/05/5eb92c7f54cbc9.72843966_jdatlastoollogo.png" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/public/cms_files/2020/05/5eb935c79e7808.39271407_jdatlastoollogo.png" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/public/cms_files/2020/05/5eb950427e3795.55847896_jdatlastoollogo.png" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/public/cms_files/2020/05/5ebe665cd98ca1.76107546_8.jpg" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/travel_user/attachment/2020/05/5ebfc46e0ff3c0.14228313_8.jpg" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/travel_user/attachment/2020/05/5ebfc49a63c465.01874505_8.jpg" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/travel_user/attachment/2020/05/5ebfc6754af358.11706766_jdatlastoollogo.png" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/travel_user/attachment/2020/05/5ebfc6a83aaa03.48156108_8.jpg" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/travel_user/attachment/2020/05/5ebfdc2163c6f3.61031669_jdatlastoollogo.png" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/travel_user/attachment/2020/05/5ebfdc9a5508f1.82637218_jdatlastoollogo.png" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/travel_user/attachment/2020/05/5ebfdc9b61abc4.55465946_muscat-sultan-qaboos-moschee-h1_k.jpg" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/travel_user/attachment/2020/05/5ec53110cfd978.74599082_8.jpg" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.phpstorm.meta.php" beforeDir="false" afterPath="$PROJECT_DIR$/.phpstorm.meta.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/_ide_helper.php" beforeDir="false" afterPath="$PROJECT_DIR$/_ide_helper.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/_ide_helper_models.php" beforeDir="false" afterPath="$PROJECT_DIR$/_ide_helper_models.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/Admin/ReportController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/Admin/ReportController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/BookingController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/BookingController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/CMS/CMSContentCountryController.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/CustomerController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/CustomerController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/CMS/CMSContentController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/CMS/CMSContentController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/CustomerMailController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/CustomerMailController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/LeadController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/LeadController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/DraftController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/DraftController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/FileController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/FileController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/RequestController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/RequestController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/Settings/AirlineController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/Settings/AirlineController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/Settings/EmailTemplateController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/Settings/EmailsController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/Settings/TravelCountryController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/Settings/TravelCountryController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/Settings/TravelNationalityController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/Settings/TravelNationalityController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/TravelUserBookingFewoController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/TravelUserBookingFewoController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Models/Airline.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Models/Airline.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Models/Booking.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Models/Booking.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Models/BookingServiceItem.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Models/BookingServiceItem.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Models/BookingFile.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Models/BookingFile.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Models/CMSContent.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Models/CMSContent.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Models/CustomerFile.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Models/CustomerFile.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Models/CustomerMail.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Models/CustomerMail.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Models/EmailTemplate.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Models/EmailTemplate.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Models/Insurance.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Models/Insurance.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Models/ServiceProvider.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Models/ServiceProvider.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Models/Sym/CmsContent.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Models/Sym/CmsContent.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Models/Sym/TravelCountry.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Models/Sym/TravelCountry.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Models/TravelCompany.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Models/TravelCompany.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Models/TravelCountry.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Models/TravelCountry.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Models/TravelUser.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Models/TravelUser.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Models/TravelUserBookingFewo.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Models/TravelUserBookingFewo.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Repositories/BookingRepository.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Repositories/BookingRepository.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Repositories/CMSFileRepository.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Repositories/CMSFileRepository.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Repositories/CustomerMailRepository.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Repositories/CustomerMailRepository.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Repositories/FileRepository.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Repositories/FileRepository.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Repositories/TravelUserBookingFewoRepository.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Repositories/TravelUserBookingFewoRepository.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Services/HTMLHelper.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Services/HTMLHelper.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Services/Placeholder.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Services/Placeholder.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Services/Util.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Services/Util.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/helpers.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/helpers.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/bootstrap/cache/services.php" beforeDir="false" afterPath="$PROJECT_DIR$/bootstrap/cache/services.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/composer.lock" beforeDir="false" afterPath="$PROJECT_DIR$/composer.lock" afterDir="false" />
<change beforePath="$PROJECT_DIR$/config/app.php" beforeDir="false" afterPath="$PROJECT_DIR$/config/app.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/config/filesystems.php" beforeDir="false" afterPath="$PROJECT_DIR$/config/filesystems.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/config/permissions.php" beforeDir="false" afterPath="$PROJECT_DIR$/config/permissions.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/database/migrations/2018_10_29_202123_create_booking_table.php" beforeDir="false" afterPath="$PROJECT_DIR$/database/migrations/2018_10_29_202123_create_booking_table.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/database/migrations/2020_01_29_154619_create_travel_company_table.php" beforeDir="false" afterPath="$PROJECT_DIR$/database/migrations/2020_01_29_154619_create_travel_company_table.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/database/migrations/2020_02_04_160054_create_service_provider_table.php" beforeDir="false" afterPath="$PROJECT_DIR$/database/migrations/2020_02_04_160054_create_service_provider_table.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/database/migrations/2018_10_29_193339_create_travel_country_table.php" beforeDir="false" afterPath="$PROJECT_DIR$/database/migrations/2018_10_29_193339_create_travel_country_table.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/database/migrations/2019_02_27_113516_create_c_m_s_contents_table.php" beforeDir="false" afterPath="$PROJECT_DIR$/database/migrations/2019_02_27_113516_create_c_m_s_contents_table.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/database/migrations/2020_03_11_131408_create_customer_mails_table.php" beforeDir="false" afterPath="$PROJECT_DIR$/database/migrations/2020_03_11_131408_create_customer_mails_table.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/database/migrations/2020_04_23_144838_create_email_templates_table.php" beforeDir="false" afterPath="$PROJECT_DIR$/database/migrations/2020_04_23_144838_create_email_templates_table.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/database/migrations/sym/0001_sym_travel_country_table.php" beforeDir="false" afterPath="$PROJECT_DIR$/database/migrations/sym/0001_sym_travel_country_table.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/database/migrations/sym/0002_sym_salutation_table.php" beforeDir="false" afterPath="$PROJECT_DIR$/database/migrations/sym/0002_sym_salutation_table.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/composer.json" beforeDir="false" afterPath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/composer.json" afterDir="false" />
<change beforePath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/public/css/cropper.min.css" beforeDir="false" afterPath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/public/css/cropper.min.css" afterDir="false" />
<change beforePath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/public/js/cropper.min.js" beforeDir="false" afterPath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/public/js/cropper.min.js" afterDir="false" />
@ -122,26 +193,36 @@
<change beforePath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/src/views/move.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/src/views/move.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/src/views/resize.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/src/views/resize.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/public/css/application.css" beforeDir="false" afterPath="$PROJECT_DIR$/public/css/application.css" afterDir="false" />
<change beforePath="$PROJECT_DIR$/public/css/stern_fewo_pdf.css" beforeDir="false" afterPath="$PROJECT_DIR$/public/css/stern_fewo_pdf.css" afterDir="false" />
<change beforePath="$PROJECT_DIR$/public/js/custom.js" beforeDir="false" afterPath="$PROJECT_DIR$/public/js/custom.js" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/admin/report/bookings.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/admin/report/bookings.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/admin/report/service_providers.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/admin/report/service_providers.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/booking/_detail_booking.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/booking/_detail_booking.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/booking/_detail_files.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/booking/_detail_files.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/booking/_detail_mails.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/booking/_detail_mails.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/booking/_detail_price.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/booking/_detail_price.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/booking/detail.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/booking/detail.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/cms/content/country/detail.blade.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/cms/content/country/index.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/settings/_travel_country/index.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/cms/content/all/index.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/cms/content/all/index.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/cms/content/all/modal.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/cms/content/all/modal.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/cms/feedback/detail.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/cms/feedback/detail.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/customer/mail/detail.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/customer/mail/detail.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/customer/mail/modal-new-booking-files.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/customer/mail/modal-new-booking-files.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/customer/mail/modal-new-mail.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/customer/mail/modal-new-mail.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/customer/mail/modal-show-mail-inner.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/customer/mail/modal-show-mail-inner.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/customer/mail/modal-show-mail.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/customer/mail/modal-show-mail.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/drafts/index.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/drafts/index.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/layouts/application.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/layouts/application.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/layouts/includes/layout-sidenav.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/layouts/includes/layout-sidenav.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/pdf/layout.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/pdf/layout.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/request/index.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/request/index.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/settings/airline/index.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/settings/airline/index.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/settings/keywords/index.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/settings/keywords/index.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/settings/email_template/index.blade.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/settings/email_template/modal.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/settings/emails/modal.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/settings/travel_agenda/index.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/settings/travel_agenda/index.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/settings/travel_country/detail.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/settings/travel_country/detail.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/settings/travel_country/index.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/settings/travel_country/index.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/settings/travel_nationality/index.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/settings/travel_nationality/index.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/travel/program/index.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/travel/program/index.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/travel/user/booking/detail.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/travel/user/booking/detail.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/travel/user/booking/form.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/travel/user/booking/_detail_info.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/travel/user/booking/index.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/travel/user/booking/index.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/routes/web.php" beforeDir="false" afterPath="$PROJECT_DIR$/routes/web.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/storage/app/fewo/invoices/2019/12345.pdf" beforeDir="false" afterPath="$PROJECT_DIR$/storage/app/fewo/invoices/2019/12345.pdf" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -363,18 +444,18 @@
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="database.console.LAST_STATE" value="false" />
<property name="js.buildTools.grunt.grunt-cli.package" value="" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/resources/views/settings/email_template" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/resources/views/admin/modal" />
<property name="nodejs_package_manager_path" value="npm" />
<property name="settings.editor.selected.configurable" value="preferences.pluginManager" />
<property name="ts.external.directory.path" value="$APPLICATION_HOME_DIR$/plugins/JavaScriptLanguage/jsLanguageServicesImpl/external" />
</component>
<component name="RecentsManager">
<key name="CopyFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$/resources/views/settings/email_template" />
<recent name="$PROJECT_DIR$/app/Services" />
<recent name="$PROJECT_DIR$/public/vendor/libs/quill-placeholder-module/dist" />
<recent name="$PROJECT_DIR$/resources/views/settings/insurance" />
<recent name="$PROJECT_DIR$/resources/views/settings/travel_company" />
<recent name="$PROJECT_DIR$/resources/views/admin/modal" />
<recent name="$PROJECT_DIR$/database/migrations" />
<recent name="$PROJECT_DIR$/app/Repositories" />
<recent name="$PROJECT_DIR$/app/Http/Controllers" />
<recent name="$PROJECT_DIR$/resources/views/travel/user/booking" />
</key>
<key name="MoveFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$/resources/views/settings" />
@ -758,6 +839,28 @@
<workItem from="1588267968818" duration="645000" />
<workItem from="1588269075570" duration="700000" />
<workItem from="1588410019832" duration="192000" />
<workItem from="1588773726930" duration="6534000" />
<workItem from="1588921195355" duration="55000" />
<workItem from="1588933251807" duration="6864000" />
<workItem from="1589190101431" duration="19260000" />
<workItem from="1589269047694" duration="3307000" />
<workItem from="1589276676756" duration="737000" />
<workItem from="1589278830126" duration="6263000" />
<workItem from="1589288028671" duration="123000" />
<workItem from="1589288181054" duration="168000" />
<workItem from="1589288630720" duration="192000" />
<workItem from="1589354128939" duration="2657000" />
<workItem from="1589367550440" duration="1192000" />
<workItem from="1589387823616" duration="52000" />
<workItem from="1589526614664" duration="15622000" />
<workItem from="1589621507076" duration="10136000" />
<workItem from="1589785312070" duration="717000" />
<workItem from="1589788515182" duration="3337000" />
<workItem from="1589816832356" duration="3887000" />
<workItem from="1589873447010" duration="1144000" />
<workItem from="1589959162608" duration="2522000" />
<workItem from="1589967486173" duration="10489000" />
<workItem from="1590656843540" duration="18541000" />
</task>
<servers />
</component>
@ -793,30 +896,20 @@
<state x="873" y="395" key="#Notifications/-2560.23.2560.1417/0.23.2560.1417@0.23.2560.1417" timestamp="1586283483077" />
<state x="873" y="395" key="#Notifications/2560.-493.1440.2537/-2560.23.2560.1417/0.23.2560.1417@0.23.2560.1417" timestamp="1585998077451" />
<state x="873" y="395" key="#Notifications/2560.-527.1440.2537/-2560.23.2560.1417/0.23.2560.1417@0.23.2560.1417" timestamp="1587029730203" />
<state x="-1399" y="392" key="#com.intellij.execution.impl.EditConfigurationsDialog" timestamp="1581158769046">
<screen x="-2560" y="23" width="2560" height="1417" />
</state>
<state x="-1399" y="392" key="#com.intellij.execution.impl.EditConfigurationsDialog/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@-2560.23.2560.1417" timestamp="1581158769046" />
<state x="-1399" y="392" key="#com.intellij.execution.impl.EditConfigurationsDialog/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1581158740331" />
<state x="968" y="466" key="#com.intellij.openapi.updateSettings.impl.PluginUpdateInfoDialog" timestamp="1585396813007">
<screen x="0" y="23" width="2560" height="1417" />
</state>
<state x="968" y="466" key="#com.intellij.openapi.updateSettings.impl.PluginUpdateInfoDialog/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1581431073950" />
<state x="968" y="466" key="#com.intellij.openapi.updateSettings.impl.PluginUpdateInfoDialog/2560.-493.1440.2537/-2560.23.2560.1417/0.23.2560.1417@0.23.2560.1417" timestamp="1585396813007" />
<state x="723" y="23" key="#com.intellij.refactoring.rename.AutomaticRenamingDialog" timestamp="1586342353394">
<state x="723" y="23" key="#com.intellij.refactoring.rename.AutomaticRenamingDialog" timestamp="1590658970755">
<screen x="0" y="23" width="2560" height="1417" />
</state>
<state x="723" y="23" key="#com.intellij.refactoring.rename.AutomaticRenamingDialog/-2560.23.2560.1417/0.23.2560.1417@0.23.2560.1417" timestamp="1586342353394" />
<state x="723" y="54" key="#com.intellij.refactoring.rename.AutomaticRenamingDialog/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1581351314829" />
<state x="1018" y="488" key="#com.jetbrains.php.actions.copyPaste.importReferences.PhpImportReferencesDialog" timestamp="1587982214324">
<state x="723" y="23" key="#com.intellij.refactoring.rename.AutomaticRenamingDialog/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1590658970755" />
<state x="1018" y="488" key="#com.jetbrains.php.actions.copyPaste.importReferences.PhpImportReferencesDialog" timestamp="1590660061034">
<screen x="0" y="23" width="2560" height="1417" />
</state>
<state x="1018" y="488" key="#com.jetbrains.php.actions.copyPaste.importReferences.PhpImportReferencesDialog/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1587982214324" />
<state x="1018" y="488" key="#com.jetbrains.php.actions.copyPaste.importReferences.PhpImportReferencesDialog/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1590660061034" />
<state x="1018" y="488" key="#com.jetbrains.php.actions.copyPaste.importReferences.PhpImportReferencesDialog/2560.-527.1440.2537/-2560.23.2560.1417/0.23.2560.1417@0.23.2560.1417" timestamp="1587048507717" />
<state x="1097" y="610" width="600" height="300" key="ComposerAddDependencyOutputPopupDimensionServiceKey" timestamp="1581350288912">
<screen x="0" y="23" width="2560" height="1417" />
</state>
<state x="1097" y="610" width="600" height="300" key="ComposerAddDependencyOutputPopupDimensionServiceKey/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1581350288912" />
<state width="2518" height="407" key="GridCell.Tab.0.bottom" timestamp="1587976409045">
<screen x="0" y="23" width="2560" height="1417" />
</state>
@ -833,10 +926,6 @@
<screen x="0" y="23" width="2560" height="1417" />
</state>
<state width="2518" height="407" key="GridCell.Tab.0.right/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1587976409044" />
<state x="1020" y="544" width="527" height="375" key="PHPComposerAddDependencyDialogDimensionKey" timestamp="1581350432217">
<screen x="0" y="23" width="2560" height="1417" />
</state>
<state x="1020" y="544" width="527" height="375" key="PHPComposerAddDependencyDialogDimensionKey/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1581350432217" />
<state x="815" y="370" key="SettingsEditor" timestamp="1587029998517">
<screen x="0" y="23" width="2560" height="1417" />
</state>
@ -847,19 +936,20 @@
</state>
<state x="1063" y="650" key="com.intellij.openapi.vcs.update.UpdateOrStatusOptionsDialogupdate-v2/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1585232936868" />
<state x="1063" y="650" key="com.intellij.openapi.vcs.update.UpdateOrStatusOptionsDialogupdate-v2/2560.-527.1440.2537/-2560.23.2560.1417/0.23.2560.1417@0.23.2560.1417" timestamp="1587128795225" />
<state x="-1885" y="398" width="1487" height="939" key="find.popup" timestamp="1588269655118">
<screen x="-2560" y="23" width="2560" height="1417" />
<state x="675" y="397" width="1487" height="939" key="find.popup" timestamp="1590683778555">
<screen x="0" y="23" width="2560" height="1417" />
</state>
<state x="870" y="380" width="1487" height="939" key="find.popup/-2560.23.2560.1417/0.23.2560.1417@0.23.2560.1417" timestamp="1586367147094" />
<state x="-1885" y="398" width="1487" height="939" key="find.popup/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@-2560.23.2560.1417" timestamp="1588269655118" />
<state x="675" y="398" width="1487" height="939" key="find.popup/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1588253604606" />
<state x="675" y="397" width="1487" height="939" key="find.popup/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1590683778555" />
<state x="2940" y="143" width="837" height="1682" key="find.popup/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@2560.-527.1440.2537" timestamp="1589874198139" />
<state x="870" y="380" width="1487" height="939" key="find.popup/2560.-493.1440.2537/-2560.23.2560.1417/0.23.2560.1417@0.23.2560.1417" timestamp="1586172282780" />
<state x="870" y="380" width="1487" height="939" key="find.popup/2560.-527.1440.2537/-2560.23.2560.1417/0.23.2560.1417@0.23.2560.1417" timestamp="1587130944842" />
<state x="946" y="348" width="670" height="676" key="search.everywhere.popup" timestamp="1588072154124">
<state x="946" y="348" width="670" height="676" key="search.everywhere.popup" timestamp="1589202350952">
<screen x="0" y="23" width="2560" height="1417" />
</state>
<state x="946" y="348" width="670" height="676" key="search.everywhere.popup/-2560.23.2560.1417/0.23.2560.1417@0.23.2560.1417" timestamp="1586370499861" />
<state x="946" y="348" width="670" height="676" key="search.everywhere.popup/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1588072154124" />
<state x="946" y="348" width="670" height="676" key="search.everywhere.popup/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1589202350952" />
<state x="946" y="348" width="670" height="676" key="search.everywhere.popup/2560.-493.1440.2537/-2560.23.2560.1417/0.23.2560.1417@0.23.2560.1417" timestamp="1585834441242" />
<state x="946" y="348" width="670" height="676" key="search.everywhere.popup/2560.-527.1440.2537/-2560.23.2560.1417/0.23.2560.1417@0.23.2560.1417" timestamp="1587036951215" />
</component>

View file

@ -5,7 +5,7 @@ namespace PHPSTORM_META {
/**
* PhpStorm Meta file, to provide autocomplete information for PhpStorm
* Generated on 2020-04-23 10:42:35.
* Generated on 2020-05-28 13:03:00.
*
* @author Barry vd. Heuvel <barryvdh@gmail.com>
* @see https://github.com/barryvdh/laravel-ide-helper

View file

@ -2,8 +2,8 @@
// @formatter:off
/**
* A helper file for Laravel 5, to provide autocomplete information to your IDE
* Generated for Laravel 6.18.5 on 2020-04-23 10:42:32.
* A helper file for Laravel, to provide autocomplete information to your IDE
* Generated for Laravel 6.18.13 on 2020-05-28 13:02:56.
*
* This file should not be included in your code, only analyzed by your IDE!
*
@ -8726,7 +8726,7 @@ namespace Illuminate\Support\Facades {
/**
* Get the client user agent.
*
* @return string
* @return string|null
* @static
*/
public static function userAgent()
@ -13124,7 +13124,8 @@ namespace Illuminate\Support\Facades {
* @return bool
* @static
*/
public static function prepend($path, $data, $separator = '')
public static function prepend($path, $data, $separator = '
')
{
/** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
return $instance->prepend($path, $data, $separator);
@ -13139,7 +13140,8 @@ namespace Illuminate\Support\Facades {
* @return bool
* @static
*/
public static function append($path, $data, $separator = '')
public static function append($path, $data, $separator = '
')
{
/** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
return $instance->append($path, $data, $separator);
@ -15204,7 +15206,7 @@ namespace Illuminate\Support\Facades {
/**
* Get the client user agent.
*
* @return string
* @return string|null
* @static
*/
public static function userAgent()
@ -19070,7 +19072,7 @@ namespace Maatwebsite\Excel\Facades {
* @param string $event
* @static
*/
public static function extend($concern, $handler, $event = 'Maatwebsite\Excel\Events\BeforeWriting')
public static function extend($concern, $handler, $event = 'Maatwebsite\\Excel\\Events\\BeforeWriting')
{
return \Maatwebsite\Excel\Excel::extend($concern, $handler, $event);
}
@ -19344,6 +19346,188 @@ namespace Yajra\DataTables\Facades {
}
namespace Barryvdh\DomPDF {
/**
*
*
*/
class Facade {
/**
* Get the DomPDF instance
*
* @return \Barryvdh\DomPDF\Dompdf
* @static
*/
public static function getDomPDF()
{
/** @var \Barryvdh\DomPDF\PDF $instance */
return $instance->getDomPDF();
}
/**
* Set the paper size (default A4)
*
* @param string $paper
* @param string $orientation
* @return \Barryvdh\DomPDF\PDF
* @static
*/
public static function setPaper($paper, $orientation = 'portrait')
{
/** @var \Barryvdh\DomPDF\PDF $instance */
return $instance->setPaper($paper, $orientation);
}
/**
* Show or hide warnings
*
* @param bool $warnings
* @return \Barryvdh\DomPDF\PDF
* @static
*/
public static function setWarnings($warnings)
{
/** @var \Barryvdh\DomPDF\PDF $instance */
return $instance->setWarnings($warnings);
}
/**
* Load a HTML string
*
* @param string $string
* @param string $encoding Not used yet
* @return static
* @static
*/
public static function loadHTML($string, $encoding = null)
{
/** @var \Barryvdh\DomPDF\PDF $instance */
return $instance->loadHTML($string, $encoding);
}
/**
* Load a HTML file
*
* @param string $file
* @return static
* @static
*/
public static function loadFile($file)
{
/** @var \Barryvdh\DomPDF\PDF $instance */
return $instance->loadFile($file);
}
/**
* Add metadata info
*
* @param array $info
* @return static
* @static
*/
public static function addInfo($info)
{
/** @var \Barryvdh\DomPDF\PDF $instance */
return $instance->addInfo($info);
}
/**
* Load a View and convert to HTML
*
* @param string $view
* @param array $data
* @param array $mergeData
* @param string $encoding Not used yet
* @return static
* @static
*/
public static function loadView($view, $data = [], $mergeData = [], $encoding = null)
{
/** @var \Barryvdh\DomPDF\PDF $instance */
return $instance->loadView($view, $data, $mergeData, $encoding);
}
/**
* Set/Change an option in DomPdf
*
* @param array $options
* @return static
* @static
*/
public static function setOptions($options)
{
/** @var \Barryvdh\DomPDF\PDF $instance */
return $instance->setOptions($options);
}
/**
* Output the PDF as a string.
*
* @return string The rendered PDF as string
* @static
*/
public static function output()
{
/** @var \Barryvdh\DomPDF\PDF $instance */
return $instance->output();
}
/**
* Save the PDF to a file
*
* @param $filename
* @return static
* @static
*/
public static function save($filename)
{
/** @var \Barryvdh\DomPDF\PDF $instance */
return $instance->save($filename);
}
/**
* Make the PDF downloadable by the user
*
* @param string $filename
* @return \Illuminate\Http\Response
* @static
*/
public static function download($filename = 'document.pdf')
{
/** @var \Barryvdh\DomPDF\PDF $instance */
return $instance->download($filename);
}
/**
* Return a response with the PDF to show in the browser
*
* @param string $filename
* @return \Illuminate\Http\Response
* @static
*/
public static function stream($filename = 'document.pdf')
{
/** @var \Barryvdh\DomPDF\PDF $instance */
return $instance->stream($filename);
}
/**
*
*
* @static
*/
public static function setEncryption($password)
{
/** @var \Barryvdh\DomPDF\PDF $instance */
return $instance->setEncryption($password);
}
}
}
namespace Barryvdh\Debugbar {
/**
@ -19950,188 +20134,6 @@ namespace Barryvdh\Debugbar {
}
namespace Barryvdh\DomPDF {
/**
*
*
*/
class Facade {
/**
* Get the DomPDF instance
*
* @return \Barryvdh\DomPDF\Dompdf
* @static
*/
public static function getDomPDF()
{
/** @var \Barryvdh\DomPDF\PDF $instance */
return $instance->getDomPDF();
}
/**
* Set the paper size (default A4)
*
* @param string $paper
* @param string $orientation
* @return \Barryvdh\DomPDF\PDF
* @static
*/
public static function setPaper($paper, $orientation = 'portrait')
{
/** @var \Barryvdh\DomPDF\PDF $instance */
return $instance->setPaper($paper, $orientation);
}
/**
* Show or hide warnings
*
* @param bool $warnings
* @return \Barryvdh\DomPDF\PDF
* @static
*/
public static function setWarnings($warnings)
{
/** @var \Barryvdh\DomPDF\PDF $instance */
return $instance->setWarnings($warnings);
}
/**
* Load a HTML string
*
* @param string $string
* @param string $encoding Not used yet
* @return static
* @static
*/
public static function loadHTML($string, $encoding = null)
{
/** @var \Barryvdh\DomPDF\PDF $instance */
return $instance->loadHTML($string, $encoding);
}
/**
* Load a HTML file
*
* @param string $file
* @return static
* @static
*/
public static function loadFile($file)
{
/** @var \Barryvdh\DomPDF\PDF $instance */
return $instance->loadFile($file);
}
/**
* Add metadata info
*
* @param array $info
* @return static
* @static
*/
public static function addInfo($info)
{
/** @var \Barryvdh\DomPDF\PDF $instance */
return $instance->addInfo($info);
}
/**
* Load a View and convert to HTML
*
* @param string $view
* @param array $data
* @param array $mergeData
* @param string $encoding Not used yet
* @return static
* @static
*/
public static function loadView($view, $data = [], $mergeData = [], $encoding = null)
{
/** @var \Barryvdh\DomPDF\PDF $instance */
return $instance->loadView($view, $data, $mergeData, $encoding);
}
/**
* Set/Change an option in DomPdf
*
* @param array $options
* @return static
* @static
*/
public static function setOptions($options)
{
/** @var \Barryvdh\DomPDF\PDF $instance */
return $instance->setOptions($options);
}
/**
* Output the PDF as a string.
*
* @return string The rendered PDF as string
* @static
*/
public static function output()
{
/** @var \Barryvdh\DomPDF\PDF $instance */
return $instance->output();
}
/**
* Save the PDF to a file
*
* @param $filename
* @return static
* @static
*/
public static function save($filename)
{
/** @var \Barryvdh\DomPDF\PDF $instance */
return $instance->save($filename);
}
/**
* Make the PDF downloadable by the user
*
* @param string $filename
* @return \Illuminate\Http\Response
* @static
*/
public static function download($filename = 'document.pdf')
{
/** @var \Barryvdh\DomPDF\PDF $instance */
return $instance->download($filename);
}
/**
* Return a response with the PDF to show in the browser
*
* @param string $filename
* @return \Illuminate\Http\Response
* @static
*/
public static function stream($filename = 'document.pdf')
{
/** @var \Barryvdh\DomPDF\PDF $instance */
return $instance->stream($filename);
}
/**
*
*
* @static
*/
public static function setEncryption($password)
{
/** @var \Barryvdh\DomPDF\PDF $instance */
return $instance->setEncryption($password);
}
}
}
namespace Laracasts\Flash {
/**
@ -22443,7 +22445,7 @@ namespace {
/**
* Add an "order by" clause to the query.
*
* @param \Closure|\Illuminate\Database\Query\Builder|string $column
* @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Query\Expression|string $column
* @param string $direction
* @return \Illuminate\Database\Query\Builder
* @throws \InvalidArgumentException
@ -23199,10 +23201,10 @@ namespace {
class DataTables extends \Yajra\DataTables\Facades\DataTables {}
class Debugbar extends \Barryvdh\Debugbar\Facade {}
class PDF extends \Barryvdh\DomPDF\Facade {}
class Debugbar extends \Barryvdh\Debugbar\Facade {}
class Flash extends \Laracasts\Flash\Flash {}
class Html extends \Collective\Html\HtmlFacade {}

View file

@ -114,6 +114,13 @@ namespace App\Models\Sym{
* @property-read int|null $bookings_count
* @property array|null $contact_emails
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\TravelCountry whereContactEmails($value)
* @property array|null $mail_dirs
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\TravelCountry whereMailDirs($value)
* @property string|null $mail_dir_name
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\TravelCountry whereMailDirName($value)
* @property-read \App\Models\TravelCountry|null $stern_travel_country
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\TravelCountryService[] $travel_country_services
* @property-read int|null $travel_country_services_count
*/
class TravelCountry extends \Eloquent {}
}
@ -147,6 +154,12 @@ namespace App\Models\Sym{
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\CmsContent whereUpdatedAt($value)
* @mixin \Eloquent
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\CmsContent findSimilarSlugs($attribute, $config, $slug)
* @property string|null $identifier
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\CmsContent whereIdentifier($value)
* @property array|null $object
* @property int|null $pos
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\CmsContent whereObject($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\CmsContent wherePos($value)
*/
class CmsContent extends \Eloquent {}
}
@ -287,6 +300,77 @@ namespace App\Models{
class Keyword extends \Eloquent {}
}
namespace App\Models{
/**
* Class CustomerFewoMail
*
* @property int $id
* @property int $travel_user_booking_fewo_id
* @property int $travel_user_id
* @property bool $is_answer
* @property int $reply_id
* @property string $email
* @property string $recipient
* @property string $cc
* @property string $bcc
* @property string $subject
* @property string $message
* @property int $dir
* @property int $subdir
* @property bool $draft
* @property bool $important
* @property bool $send
* @property bool $fail
* @property string $error
* @property Carbon $sent_at
* @property Carbon $scheduled_at
* @property Carbon $delivered_at
* @property Carbon $created_at
* @property Carbon $updated_at
* @property CustomerFewoMail $customer_fewo_mail
* @property TravelUserBookingFewo $travel_user_booking_fewo
* @property TravelUser $travel_user
* @property Collection|CustomerFewoFile[] $customer_fewo_files
* @property Collection|CustomerFewoMail[] $customer_fewo_mails
* @package App\Models
* @property-read int|null $customer_fewo_files_count
* @property-read int|null $customer_fewo_mails_count
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail query()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereBcc($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereCc($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereDeliveredAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereDir($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereDraft($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereEmail($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereError($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereFail($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereImportant($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereIsAnswer($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereMessage($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereRecipient($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereReplyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereScheduledAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereSend($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereSentAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereSubdir($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereSubject($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereTravelUserBookingFewoId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereTravelUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereUpdatedAt($value)
* @mixin \Eloquent
* @property-read \App\Models\TravelUserBookingFewo $booking
* @property-read \App\Models\TravelUser $customer
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\CustomerFewoFile[] $customer_files
* @property-read int|null $customer_files_count
* @property-read \App\Models\CustomerFewoMail|null $customer_mail
*/
class CustomerFewoMail extends \Eloquent {}
}
namespace App\Models{
/**
* App\Models\TravelNationality
@ -522,6 +606,43 @@ namespace App\Models{
class UserUpdateEmail extends \Eloquent {}
}
namespace App\Models{
/**
* Class TravelUserBookingFile
*
* @property int $id
* @property int $travel_user_booking_fewos
* @property string $identifier
* @property string $filename
* @property string $dir
* @property string $original_name
* @property string $ext
* @property string $mine
* @property int $size
* @property Carbon $created_at
* @property Carbon $updated_at
* @property TravelUserBookingFewo $travel_user_booking_fewo
* @package App\Models
* @property int|null $travel_user_booking_fewo_id
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile query()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile whereDir($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile whereExt($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile whereFilename($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile whereIdentifier($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile whereMine($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile whereOriginalName($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile whereSize($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile whereTravelUserBookingFewoId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile whereUpdatedAt($value)
* @mixin \Eloquent
*/
class TravelUserBookingFile extends \Eloquent {}
}
namespace App\Models{
/**
* Class BookingServiceItem
@ -864,6 +985,35 @@ namespace App\Models{
class Website extends \Eloquent {}
}
namespace App\Models{
/**
* Class EmailTemplateDir
*
* @property int $id
* @property string $name
* @property string $color
* @property bool $active
* @property int $pos
* @property Carbon $created_at
* @property Carbon $updated_at
* @property Collection|EmailTemplate[] $email_templates
* @package App\Models
* @property-read int|null $email_templates_count
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplateDir newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplateDir newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplateDir query()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplateDir whereActive($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplateDir whereColor($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplateDir whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplateDir whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplateDir whereName($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplateDir wherePos($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplateDir whereUpdatedAt($value)
* @mixin \Eloquent
*/
class EmailTemplateDir extends \Eloquent {}
}
namespace App\Models{
/**
* App\Models\CMSInfoHoliday
@ -956,6 +1106,8 @@ namespace App\Models{
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereTravelCountryId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereUpdatedAt($value)
* @mixin \Eloquent
* @property int|null $subdir
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereSubdir($value)
*/
class CustomerMail extends \Eloquent {}
}
@ -1165,6 +1317,42 @@ namespace App\Models{
class BookingDraftItem extends \Eloquent {}
}
namespace App\Models{
/**
* Class GeneralFile
*
* @property int $id
* @property int $travel_country_id
* @property string $identifier
* @property string $filename
* @property string $dir
* @property string $original_name
* @property string $ext
* @property string $mine
* @property int $size
* @property Carbon $created_at
* @property Carbon $updated_at
* @property TravelCountry $travel_country
* @package App\Models
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile query()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile whereDir($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile whereExt($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile whereFilename($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile whereIdentifier($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile whereMine($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile whereOriginalName($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile whereSize($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile whereTravelCountryId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile whereUpdatedAt($value)
* @mixin \Eloquent
*/
class GeneralFile extends \Eloquent {}
}
namespace App\Models{
/**
* App\Models\Country
@ -1530,6 +1718,45 @@ namespace App\Models{
class FewoReservation extends \Eloquent {}
}
namespace App\Models{
/**
* Class CustomerFewoFile
*
* @property int $id
* @property int $travel_user_id
* @property int $customer_fewo_mail_id
* @property string $identifier
* @property string $filename
* @property string $dir
* @property string $original_name
* @property string $ext
* @property string $mine
* @property int $size
* @property Carbon $created_at
* @property Carbon $updated_at
* @property CustomerFewoMail $customer_fewo_mail
* @property TravelUser $travel_user
* @package App\Models
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile query()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereCustomerFewoMailId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereDir($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereExt($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereFilename($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereIdentifier($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereMine($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereOriginalName($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereSize($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereTravelUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereUpdatedAt($value)
* @mixin \Eloquent
*/
class CustomerFewoFile extends \Eloquent {}
}
namespace App\Models{
/**
* App\Models\TravelCountry
@ -1586,6 +1813,15 @@ namespace App\Models{
* @property-read int|null $travel_nationality_requirements_count
* @property array|null $contact_emails
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereContactEmails($value)
* @property array|null $mail_dirs
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereMailDirs($value)
* @property string $mail_dir_name
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereMailDirName($value)
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\GeneralFile[] $general_files
* @property-read int|null $general_files_count
* @property-read \App\Models\Sym\TravelCountry|null $crm_travel_country
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\TravelCountryService[] $travel_country_services
* @property-read int|null $travel_country_services_count
*/
class TravelCountry extends \Eloquent {}
}
@ -1961,6 +2197,36 @@ namespace App\Models{
class IQContentSite extends \Eloquent {}
}
namespace App\Models{
/**
* Class EmailTemplate
*
* @property int $id
* @property int $email_template_dir_id
* @property string $subject
* @property string $message
* @property bool $active
* @property Carbon $created_at
* @property Carbon $updated_at
* @property EmailTemplateDir $email_template_dir
* @package App\Models
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate query()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate whereActive($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate whereEmailTemplateDirId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate whereMessage($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate whereSubject($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate whereUpdatedAt($value)
* @mixin \Eloquent
* @property string $name
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate whereName($value)
*/
class EmailTemplate extends \Eloquent {}
}
namespace App\Models{
/**
* Class StatusHistory
@ -2018,6 +2284,32 @@ namespace App\Models{
class FewoPrice extends \Eloquent {}
}
namespace App\Models{
/**
* Class Insurance
*
* @property int $id
* @property string $name
* @property string $name_full
* @property string $contact_emails
* @property bool $active
* @property Carbon $created_at
* @property Carbon $updated_at
* @package App\Models
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Insurance newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Insurance newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Insurance query()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Insurance whereActive($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Insurance whereContactEmails($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Insurance whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Insurance whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Insurance whereName($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Insurance whereUpdatedAt($value)
* @mixin \Eloquent
*/
class Insurance extends \Eloquent {}
}
namespace App\Models{
/**
* App\Models\CMSInfoAvailable
@ -2105,6 +2397,8 @@ namespace App\Models{
* @mixin \Eloquent
* @property int|null $active
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompany whereActive($value)
* @property array|null $contact_emails
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompany whereContactEmails($value)
*/
class TravelCompany extends \Eloquent {}
}
@ -2157,6 +2451,12 @@ namespace App\Models{
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent query()
* @property string|null $identifier
* @property array|null $object
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent whereIdentifier($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent whereObject($value)
* @property int|null $pos
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent wherePos($value)
*/
class CMSContent extends \Eloquent {}
}
@ -2479,6 +2779,10 @@ namespace App\Models{
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProvider whereName($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProvider whereType($value)
* @mixin \Eloquent
* @property array|null $contact_emails
* @property bool|null $active
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProvider whereActive($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProvider whereContactEmails($value)
*/
class ServiceProvider extends \Eloquent {}
}
@ -2665,6 +2969,14 @@ namespace App\Models{
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFewo whereUpdatedAt($value)
* @property string|null $last_change_at
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFewo whereLastChangeAt($value)
* @property-read \App\Models\CustomerFewoMail|null $customer_fewo_mail_last
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\CustomerFewoMail[] $customer_fewo_mails
* @property-read int|null $customer_fewo_mails_count
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\CustomerFewoMail[] $customer_fewo_mails_sent_at
* @property-read int|null $customer_fewo_mails_sent_at_count
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\TravelUserBookingFile[] $booking_files
* @property-read int|null $booking_files_count
* @property-read \App\Models\TravelUser $customer
*/
class TravelUserBookingFewo extends \Eloquent {}
}
@ -3113,6 +3425,40 @@ namespace App\Models{
class CMSInfo extends \Eloquent {}
}
namespace App\Models{
/**
* Class TravelCountryService
*
* @property int $id
* @property int $travel_country_id
* @property int $crm_travel_country
* @property string $name
* @property string $description
* @property bool $active
* @property Carbon $created_at
* @property Carbon $updated_at
* @property TravelCountry $travel_country
* @property Collection|BookingCountryService[] $booking_country_services
* @package App\Models
* @property int|null $crm_travel_country_id
* @property int|null $pos
* @property-read int|null $booking_country_services_count
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService query()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService whereActive($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService whereCrmTravelCountryId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService whereDescription($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService whereName($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService wherePos($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService whereTravelCountryId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService whereUpdatedAt($value)
*/
class TravelCountryService extends \Eloquent {}
}
namespace App\Models{
/**
* App\Models\IQContentTree
@ -3191,6 +3537,30 @@ namespace App\Models{
class BookingStorno extends \Eloquent {}
}
namespace App\Models{
/**
* Class BookingCountryService
*
* @property int $id
* @property int $travel_country_service_id
* @property int $booking_id
* @property Carbon $created_at
* @property Carbon $updated_at
* @property Booking $booking
* @property TravelCountryService $travel_country_service
* @package App\Models
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCountryService newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCountryService newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCountryService query()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCountryService whereBookingId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCountryService whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCountryService whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCountryService whereTravelCountryServiceId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCountryService whereUpdatedAt($value)
*/
class BookingCountryService extends \Eloquent {}
}
namespace App\Models{
/**
* App\Models\SfGuardUser

View file

@ -273,7 +273,6 @@ class ReportController extends Controller
private function prozessProvidersSearch(){
$query = ServiceProviderEntry::with('booking', 'service_provider', 'booking.customer')->select('service_provider_entry.*');
if(Request::get('filter_is_cleared') != ""){
$query->where('is_cleared', '=', Request::get('filter_is_cleared'));
@ -293,8 +292,6 @@ class ReportController extends Controller
$q->where("start_date", '<=', $travel_date_to);
});
}
return $query;
}

View file

@ -55,9 +55,15 @@ class BookingController extends Controller
{
// \Session()->flash('alert-save', '1');
$data = Request::all();
if($id == "new") {
if($data['action'] === 'update_booking'){
$booking = $this->bookingRepo->updateBooking($id, $data);
\Session()->flash('alert-save', '1');
return redirect(route('booking_detail', [$booking->id])."#collapseBookingBooking");
}
if($id === "new") {
$booking = new Booking();
}else{
$booking = Booking::findOrFail($id);
@ -244,6 +250,27 @@ class BookingController extends Controller
}
public function delete($id, $del="booking"){
if($del === 'booking') {
//$model = Booking::findOrFail($id);
//$model->delete();
\Session()->flash('alert-success', __('Buchung gelöscht sowie die Reservierung im Sterntrous Kalender'));
}
if($del === 'booking_file'){
$booking_file = BookingFile::findOrFail($id);
$booking = $booking_file->booking;
$fileRepo = new BookingFileRepository($booking_file);
$fileRepo->_set('disk', 'booking');
$fileRepo->delete();
$booking_file->delete();
\Session()->flash('alert-success', 'Datei gelöscht');
return redirect(route('booking_detail', [$booking->id]));
}
return redirect(route('requests'));
}
}

View file

@ -12,8 +12,12 @@ use Validator;
class CMSContentController extends Controller
{
protected $identifier_content;
public function __construct()
{
$this->identifier_content = 'general';
}
@ -21,7 +25,8 @@ class CMSContentController extends Controller
public function index()
{
$data = [
'contents' => CMSContent::all()->sortByDesc('id')
'contents' => CMSContent::where('identifier', '=', $this->identifier_content)->get()->sortByDesc('id'),
'identifier_content' => $this->identifier_content,
];
return view('cms.content.all.index', $data);
}
@ -30,18 +35,17 @@ class CMSContentController extends Controller
public function store()
{
$data = Request::all();
if(Request::ajax()) {
//upload file
if($data['file']){
$cmsFileRepo = new CMSFileRepository(new CMSContent());
$cmsFileRepo->_set('data', $data);
$cmsFileRepo->_set('disk', 'public');
$cmsFileRepo->_set('dir', '/cms_files/'.date('Y/m').'/');
$cmsFileRepo->_set('identifier', 'cms_file');
return $cmsFileRepo->uploadFile(Request::all());
}
return response()->json(['response' => $data, 'html'=>""]);
}
$rules = array(
'name' => 'required',
@ -68,6 +72,10 @@ class CMSContentController extends Controller
}
\Session()->flash('alert-save', '1');
if(isset($data['back'])){
return redirect($data['back']);
}
return redirect(route('cms_content_all'));
}
@ -78,9 +86,11 @@ class CMSContentController extends Controller
$data = Request::all();
$returnHTML = "";
if(isset($data['model']) && isset($data['id']) ){
if($data['model'] == 'content'){
if($data['id'] == "new"){
if($data['model'] === 'content'){
if($data['id'] === "new"){
$value = new CMSContent();
$value->identifier = $data['identifier'];
$value->field = isset($data['field']) ? $data['field'] : null;
}else {
$value = CMSContent::find($data['id']);
}
@ -93,19 +103,16 @@ class CMSContentController extends Controller
//public
public function delete($id){
$content = CMSContent::findOrFail($id);
if($content->isFile()){
$content->deleteFile();
}
$content->delete();
$m = \App\Models\Sym\CmsContent::find($id);
$m->delete();
\Session()->flash('alert-success', __('Content gelöscht'));
return redirect(route('cms_content_all'));
return back(); //redirect(route('cms_content_all'));
}
}

View file

@ -0,0 +1,383 @@
<?php
namespace App\Http\Controllers;
use App\Models\CustomerFewoFile;
use App\Models\CustomerFewoMail;
use App\Models\EmailTemplate;
use App\Models\TravelUserBookingFewo;
use App\Models\TravelUserBookingFile;
use App\Repositories\BookingFewoFileRepository;
use App\Repositories\CustomerFewoFileRepository;
use App\Repositories\CustomerFewoMailRepository;
use App\Services\Util;
use Carbon;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Support\Facades\URL;
use Request;
use Response;
class CustomerFewoMailController extends Controller
{
protected $customerMailRepo;
public function __construct(CustomerFewoMailRepository $customerMailRepo)
{
$this->middleware('admin');
$this->customerMailRepo = $customerMailRepo;
}
public function index()
{
$data = [
];
return view('customer.mail.index', $data);
}
public function detail($id)
{
if($id === "new") {
$customer_mail = new CustomerFewoMail();
$id = 'new';
}else{
$customer_mail = CustomerFewoMail::findOrFail($id);
$id = $customer_mail->id;
}
$data = [
'customer_mail' => $customer_mail,
'id' => $id,
'back' => URL::previous(),
];
return view('customer.mail.detail', $data);
}
public function store($id, $action=false)
{
$data = Request::all();
$customer_mail = CustomerFewoMail::findOrFail($id);
if($action === 'move-mail'){
$data['subdir'] = isset($data['subdir']) && $data['subdir'] ? $data['subdir'] : null;
$customer_mail->dir = $data['dir'];
$customer_mail->subdir = $data['subdir'];
$customer_mail->save();
}
return back();
}
public function delete($id){
$customer_mail = CustomerFewoMail::find($id);
$customer_mail->dir = 12;
$customer_mail->subdir = 0;
$customer_mail->save();
\Session()->flash('alert-success', __('Mail gelöscht'));
return back();
}
public function loadModal(){
$data = Request::all();
$ret = "";
if(Request::ajax()) {
if ($data['action'] === "new-customer-mail" || $data['action'] === "reply-customer-mail" || $data['action'] === "show-customer-mail" || $data['action'] === "edit-customer-mail"){
$data['customers'] = [];
if ($data['action'] === "new-customer-mail" && isset($data['travel_user_booking_fewo_id']) && $TravelUserBookingFewo = TravelUserBookingFewo::find($data['travel_user_booking_fewo_id'])) {
$tmp = [];
$tmp['email'] = $TravelUserBookingFewo->travel_user ? $TravelUserBookingFewo->travel_user->email : "";
$tmp['name'] = $TravelUserBookingFewo->travel_user ? $TravelUserBookingFewo->travel_user->first_name . " " . $TravelUserBookingFewo->travel_user->last_name . " | " : "- | ";
$tmp['name'] .= $TravelUserBookingFewo->fewo_lodging_id ? $TravelUserBookingFewo->fewo_lodging->name . " | " : "- | ";
$data['customers'][$TravelUserBookingFewo->id] = $tmp;
}
$ret = CustomerFewoMailRepository::loadModal($data);
}
if($data['action'] === "modal-upload-booking-file") {
$ret = view("travel.user.booking.upload_modal", compact('data'))->render();
}
if($data['action'] === "upload-booking-file"){
if($data['travel_user_booking_fewo_id']){
$bookingFileRepo = new BookingFewoFileRepository(new TravelUserBookingFile());
$bookingFileRepo->_set('disk', 'booking_fewo');
$bookingFileRepo->_set('travel_user_booking_fewo_id', $data['travel_user_booking_fewo_id']);
$bookingFileRepo->_set('dir', '/files/'.date('Y/m').'/');
$bookingFileRepo->_set('identifier', 'booking');
return $bookingFileRepo->uploadFile(Request::all());
}
}
}
return response()->json(['response' => $data, 'html'=>$ret]);
}
public function sendMail(CustomerFewoMailRepository $customerFewoMailRepository){
$data = Request::all();
$customerFewoMailRepository->sendAndStore($data);
if($data['action'] == 'draft'){
\Session()->flash('alert-success', "Entwurf gespeichert!");
}else{
\Session()->flash('alert-success', "Mail gesendet!");
}
return back();
}
public function replyMail(CustomerFewoMailRepository $customerFewoMailRepository){
$data = Request::all();
$customerFewoMailRepository->replyStore($data);
\Session()->flash('alert-success', "Mail gespeichert!");
return back();
}
/*public function getCustomerFewoMails()
{
$query = CustomerFewoMail::with('booking')->with('customer')->select('customer_mails.*');
return \DataTables::eloquent($query)
->addColumn('action_edit', function (CustomerFewoMail $customer_mail) {
return '<a href="'.route('customer_mail_detail', [$customer_mail->id]).'" class="btn icon-btn btn-sm btn-primary"><span class="fa fa-edit"></span></a>';
})
->addColumn('id', function (CustomerFewoMail $customer_mail) {
return '<a data-order="'.$customer_mail->id.'" href="'.route('customer_mail_detail', [$customer_mail->id]).'" data-id="'.$customer_mail->id.'">'.$customer_mail->id.'</a>';
})
->addColumn('booking', function (CustomerFewoMail $customer_mail) {
$out = $customer_mail->booking->travel_country_id ? $customer_mail->booking->travel_country->name." | " : "- | ";
$out .= $customer_mail->booking->travelagenda_id ? $customer_mail->booking->travel_agenda->name."" : "-";
return $out;
})
->addColumn('travel_user_booking_fewo_id', function (CustomerFewoMail $customer_mail) {
return '<a data-order="'.$customer_mail->travel_user_booking_fewo_id.'" href="'.route('booking_detail', [$customer_mail->travel_user_booking_fewo_id]).'">'.$customer_mail->travel_user_booking_fewo_id.'</a>';
})
->addColumn('customer_id', function (CustomerFewoMail $customer_mail) {
return '<a data-order="'.$customer_mail->customer_id.'" href="'.route('customer_detail', [$customer_mail->customer_id]).'">'.$customer_mail->customer_id.'</a>';
})
->addColumn('send', function (CustomerFewoMail $customer_mail) {
return $customer_mail->send ? '<span class="badge badge-pill badge-success"><i class="fa fa-check"></i></span>' : '<span class="badge badge-pill badge-danger"><i class="fa fa-times"></i></span>';
})
->orderColumn('id', 'id $1')
->orderColumn('travel_user_booking_fewo_id', 'travel_user_booking_fewo_id $1')
->orderColumn('customer_id', 'customer_id $1')
->orderColumn('send', 'send $1')
->filterColumn('id', function($query, $keyword) {
if($keyword != ""){
$query->where('id', 'LIKE', '%'.$keyword.'%');
}
})
->filterColumn('customer_id', function($query, $keyword) {
if($keyword != ""){
$query->where('customer_id', 'LIKE', '%'.$keyword.'%');
}
})
->filterColumn('travel_user_booking_fewo_id', function($query, $keyword) {
if($keyword != ""){
$query->where('travel_user_booking_fewo_id', 'LIKE', '%'.$keyword.'%');
}
})
->rawColumns(['action_edit', 'send', 'customer_id', 'travel_user_booking_fewo_id', 'id'])
->make(true);
}*/
public function getEmailTemplates()
{
$query = EmailTemplate::with('email_template_dir')->select('email_templates.*')->where('active', '=', true);
if(Request::get('filter_email_templates_directory') != ""){
$query->where('email_template_dir_id', '=', Request::get('filter_email_templates_directory'));
}
return \DataTables::eloquent($query)
->addColumn('action', function (EmailTemplate $emailTemplate) {
return '<a href="javascript:void(0)" class="btn icon-btn btn-sm btn-primary email-template-action"
data-url="'.route('customer_mail_ajax').'" data-id="'.$emailTemplate->id.'" data-action="load_email_template"
title="Vorlage laden" data-placement="left" rel="tooltip"><span class="ion ion-ios-arrow-dropup"></span></a>';
})
->addColumn('email_template_dir.name', function (EmailTemplate $emailTemplate) {
return $emailTemplate->email_template_dir ? '<span class="badge badge-default" style="background-color: '.$emailTemplate->email_template_dir->color.'">'.$emailTemplate->email_template_dir->name.'</span>' : '&nbsp;';
})
->orderColumn('id', 'id $1')
->orderColumn('subject', 'subject $1')
->orderColumn('name', 'name $1')
->orderColumn('email_template_dir.name', 'email_template_dir.name $1')
->orderColumn('message', 'message $1')
->filterColumn('id', function($query, $keyword) {
if($keyword != ""){
$query->where('id', 'LIKE', '%'.$keyword.'%');
}
})
->filterColumn('subject', function($query, $keyword) {
if($keyword != ""){
$query->where('name', 'LIKE', '%'.$keyword.'%');
$query->OrWhere('subject', 'LIKE', '%'.$keyword.'%');
$query->OrWhere('message', 'LIKE', '%'.$keyword.'%');
}
})
->rawColumns(['action', 'email_template_dir.name'])
->make(true);
}
public function uploadAttachment($id){
$fileRepo = new CustomerFewoFileRepository(new CustomerFewoFile());
if($id === 'tmp'){
$fileRepo->_set('disk', 'travel_user');
$fileRepo->_set('dir', '/attachment/'.date('Y/m').'/');
$fileRepo->_set('travel_user_id', NULL);
$fileRepo->_set('customer_fewo_mail_id', NULL);
$fileRepo->_set('identifier', 'tmp');
return $fileRepo->uploadFile(Request::all());
}
return Response::json([
'error' => true,
'code' => 200
], 200);
}
public function ajax(){
$data = Request::all();
$ret = "";
$status = false;
if(Request::ajax()){
if($data['action'] === 'toggle_important'){
$customer_mail = CustomerFewoMail::find($data['id']);
$customer_mail->important = ($customer_mail->important ? false : true);
$customer_mail->save();
$status = 'success';
}
if($data['action'] === 'load_email_template'){
$email_template = EmailTemplate::find($data['id']);
$ret = $email_template->message;
$data['subject'] = $email_template->subject;
$status = 'success';
}
if($data['action'] === 'delete_mail_attachment'){
$customer_file = CustomerFewoFile::find($data['id']);
$fileRepo = new CustomerFewoFileRepository($customer_file);
$fileRepo->_set('disk', 'travel_user');
$ret = $fileRepo->delete();
$status = 'success';
}
if($data['action'] === 'add_attachment'){
$arrContextOptions=array(
"ssl"=>array(
"verify_peer"=>false,
"verify_peer_name"=>false,
),
);
$contents = file_get_contents($data['target'], false, stream_context_create($arrContextOptions));
$mine = Util::getMimeFromHeader($http_response_header);
$extension = Util::getExtensionFromMime($mine);
$fileRepo = new CustomerFewoFileRepository(new CustomerFewoFile());
$fileRepo->_set('disk', 'travel_user');
$fileRepo->_set('dir', '/attachment/'.date('Y/m').'/');
$fileRepo->_set('travel_user_id', NULL);
$fileRepo->_set('customer_fewo_mail_id', NULL);
$fileRepo->_set('identifier', 'tmp');
$fileRepo->_set('originalName', $data['name']);
$fileRepo->_set('mine', $mine);
$fileRepo->_set('extension', $extension);
return $fileRepo->storeFile($contents);
}
}
return response()->json(['response' => $data, 'html'=>$ret, 'status'=>$status]);
}
private function getSearchRequests()
{
if (!Request::get('travel_user_booking_fewo_id')) {
return false;
}
$query = CustomerFewoMail::where('travel_user_booking_fewo_id', '=', Request::get('travel_user_booking_fewo_id'));
if (Request::get('customer_mail_dir') == 11) { //draft
$query->where('draft', '=', true)->where('dir', '!=', 12);
}else{
$query->where('dir', '=', Request::get('customer_mail_dir')); //with('lead'
}
if (Request::get('customer_mail_subdir')) {
$query->where('subdir', '=', Request::get('customer_mail_subdir'));
}
return $query;
}
public function getRequests(){
$query = $this->getSearchRequests();
return \DataTables::eloquent($query)
->addColumn('checkbox', function (CustomerFewoMail $customer_mail) {
return '<div class="message-checkbox mr-1">
<label class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input">
<span class="custom-control-label"></span>
</label>
</div>';
})
->addColumn('important', function (CustomerFewoMail $customer_mail) {
$icon = ($customer_mail->important ? 'ion-md-star' : 'ion-md-star-outline');
return '<a href="javascript:void(0)" class="ion '.$icon.' d-block text-secondary text-big mr-3 customer-mail-ajax-action"
data-url="'.route('customer_fewo_mail_ajax').'" data-id="'.$customer_mail->id.'" data-important="'.$customer_mail->important.'" data-action="toggle_important"></a>';
})
->addColumn('subject', function (CustomerFewoMail $customer_mail) {
$icon = $customer_mail->reply_id ? 'ion-ios-redo' : 'ion-ios-mail';
$badge = $customer_mail->is_answer ? 'badge-next' : 'badge-secondary';
$badge = $customer_mail->draft ? 'badge-default' : $badge;
$to_icon = $customer_mail->draft ? '<i class="ion ion-ios-warning" style="opacity: 0.7"></i>' : '';
$action = $customer_mail->draft ? 'edit-customer-mail' : 'show-customer-mail';
$id = $customer_mail->draft ? $customer_mail->id : 'new';
$url = $customer_mail->draft ? route('customer_fewo_mail_send_mail') : '';
return '<a href="javascript:void(0)" class="badge '.$badge.'" data-toggle="modal"
data-target="#modals-load-content" data-id="'.$id.'" data-model="CustomerFewoMail"
data-action="'.$action.'" data-url="'.$url.'" data-redirect="back"
data-customer_mail_id="'.$customer_mail->id.'" data-route="'.route('customer_fewo_modal_load').'">
'.$to_icon.'<i class="ion '.$icon.' ui-w-30 text-center" style="opacity: 0.7"></i>'.$customer_mail->subject.'
'.($customer_mail->customer_fewo_files->count() ? '&nbsp; <i class="ion ion-md-attach"> <span class="badge badge-primary indicator">'.$customer_mail->customer_fewo_files->count().'</span></i>' : '');
})
->addColumn('date', function (CustomerFewoMail $customer_mail) {
if($customer_mail->send){
return '<span class="badge badge-success" style="background-color: #94ae59"><i class="fa fa-check-circle"></i> '.$customer_mail->sent_at.'</span>';
}
return '<span class="badge badge-default"><i class="fa fa-times-circle"></i> '.$customer_mail->sent_at.'</span>';
})
->addColumn('action', function (CustomerFewoMail $customer_mail) {
$ret = '';
if(!$customer_mail->draft){
$ret = '<a href="javascript:void(0)" class="btn btn-xs btn-secondary" data-toggle="modal"
data-target="#modals-load-content" data-id="reply-send" data-model="customerMail" data-action="new-customer-mail"
data-url="'.route('customer_fewo_mail_send_mail').'" data-redirect="back" data-customer_mail_id="'.$customer_mail->id.'"
data-travel_user_booking_fewo_id="'.$customer_mail->travel_user_booking_fewo_id.'" data-route="'.route('customer_fewo_modal_load').'" data-customer_mail_dir="'.$customer_mail->dir.'" data-customer_subdir="'.$customer_mail->subdir.'">
<span title="Antwort auf E-Mail senden" data-placement="left" rel="tooltip"><i class="ion ion-ios-redo"></i> <i class="ion ion-md-mail-open"></i></span>
</a>
&nbsp;
<a href="javascript:void(0)" class="btn btn-xs btn-default" data-toggle="modal"
data-target="#modals-load-content" data-id="reply-save" data-model="customerMail" data-action="reply-customer-mail"
data-url="'.route('customer_fewo_mail_reply_mail').'" data-redirect="back" data-customer_mail_id="'.$customer_mail->id.'"
data-travel_user_booking_fewo_id="'.$customer_mail->travel_user_booking_fewo_id.'" data-route="'.route('customer_fewo_modal_load').'" data-customer_mail_dir="'.$customer_mail->dir.'" data-customer_mail_subdir="'.$customer_mail->subdir.'">
<span title="Antwort auf E-Mail speichern" data-placement="left" rel="tooltip"><i class="ion ion-ios-redo"></i> <i class="ion ion-md-mail-unread"></i></span>
</a>
&nbsp;';
}
$ret .= '<a href="'.route('customer_fewo_mail_delete', [$customer_mail->id]).'" class="btn btn-xs btn-default text-danger" onclick="return confirm(\'In den Papierkorb verschieben?\');"><i class="ion ion-md-trash"></i></a>';
return '<div style="white-space: nowrap;">'.$ret.'</div>';
})
->orderColumn('date', 'sent_at $1')
->orderColumn('subject', 'subject $1')
->orderColumn('important', 'important $1')
->rawColumns(['checkbox', 'important', 'subject', 'date', 'action'])
->make(true);
}
}

View file

@ -3,6 +3,7 @@
namespace App\Http\Controllers;
use App\Models\Customer;
use App\Models\CustomerFewoMail;
use App\Models\CustomerFile;
use App\Models\CustomerMail;
use App\Models\EmailTemplate;
@ -39,13 +40,10 @@ class CustomerMailController extends Controller
if($id === "new") {
$customer_mail = new CustomerMail();
$id = 'new';
}else{
$customer_mail = CustomerMail::findOrFail($id);
$id = $customer_mail->id;
}
$data = [
'customer_mail' => $customer_mail,
'id' => $id,
@ -58,23 +56,29 @@ class CustomerMailController extends Controller
public function store($id, $action=false)
{
$data = Request::all();
$customer_mail = CustomerMail::findOrFail($id);
if($action === 'move-mail'){
$data['travel_country_id'] = isset($data['travel_country_id']) && $data['travel_country_id'] ? $data['travel_country_id'] : null;
$customer_mail = CustomerMail::findOrFail($id);
$data['subdir'] = isset($data['subdir']) && $data['subdir'] ? $data['subdir'] : null;
$customer_mail->dir = $data['dir'];
$customer_mail->travel_country_id = $data['travel_country_id'];
$customer_mail->subdir = $data['subdir'];
$customer_mail->save();
}
if($action === 'move-mail-fewo'){
$customer_mail = CustomerFewoMail::findOrFail($id);
$data['subdir'] = isset($data['subdir']) && $data['subdir'] ? $data['subdir'] : null;
$customer_mail->dir = $data['dir'];
$customer_mail->subdir = $data['subdir'];
$customer_mail->save();
}
return back();
}
public function delete($id){
$customer_mail = CustomerMail::find($id);
$customer_mail->dir = 12;
$customer_mail->travel_country_id = null;
$customer_mail->draft = false;
$customer_mail->subdir = 0;
$customer_mail->save();
\Session()->flash('alert-success', __('Mail gelöscht'));
@ -186,7 +190,11 @@ class CustomerMailController extends Controller
public function getEmailTemplates()
{
$query = EmailTemplate::where('active', '=', true);
$query = EmailTemplate::with('email_template_dir')->select('email_templates.*')->where('active', '=', true);
if(Request::get('filter_email_templates_directory') != ""){
$query->where('email_template_dir_id', '=', Request::get('filter_email_templates_directory'));
}
return \DataTables::eloquent($query)
->addColumn('action', function (EmailTemplate $emailTemplate) {
@ -194,8 +202,12 @@ class CustomerMailController extends Controller
data-url="'.route('customer_mail_ajax').'" data-id="'.$emailTemplate->id.'" data-action="load_email_template"
title="Vorlage laden" data-placement="left" rel="tooltip"><span class="ion ion-ios-arrow-dropup"></span></a>';
})
->addColumn('email_template_dir.name', function (EmailTemplate $emailTemplate) {
return $emailTemplate->email_template_dir ? '<span class="badge badge-default" style="background-color: '.$emailTemplate->email_template_dir->color.'">'.$emailTemplate->email_template_dir->name.'</span>' : '&nbsp;';
})
->orderColumn('id', 'id $1')
->orderColumn('subject', 'subject $1')
->orderColumn('email_template_dir.name', 'email_template_dir.name $1')
->orderColumn('message', 'message $1')
->filterColumn('id', function($query, $keyword) {
if($keyword != ""){
@ -204,17 +216,16 @@ class CustomerMailController extends Controller
})
->filterColumn('subject', function($query, $keyword) {
if($keyword != ""){
$query->where('subject', 'LIKE', '%'.$keyword.'%');
$query->where('name', 'LIKE', '%'.$keyword.'%');
$query->OrWhere('subject', 'LIKE', '%'.$keyword.'%');
$query->OrWhere('message', 'LIKE', '%'.$keyword.'%');
}
})
->rawColumns(['action'])
->rawColumns(['action', 'email_template_dir.name'])
->make(true);
}
public function uploadAttachment($id){
$fileRepo = new CustomerFileRepository(new CustomerFile());
@ -290,13 +301,13 @@ class CustomerMailController extends Controller
}
$query = CustomerMail::where('booking_id', '=', Request::get('booking_id'));
if (Request::get('customer_mail_dir') == 11) { //draft
$query->where('draft', '=', true);
$query->where('draft', '=', true)->where('dir', '!=', 12);
}else{
$query->where('dir', '=', Request::get('customer_mail_dir')); //with('lead'
}
if (Request::get('customer_mail_country')) {
$query->where('travel_country_id', '=', Request::get('customer_mail_country'));
if (Request::get('customer_mail_subdir')) {
$query->where('subdir', '=', Request::get('customer_mail_subdir'));
}
return $query;
}
@ -348,14 +359,14 @@ class CustomerMailController extends Controller
$ret = '<a href="javascript:void(0)" class="btn btn-xs btn-secondary" data-toggle="modal"
data-target="#modals-load-content" data-id="reply-send" data-model="customerMail" data-action="new-customer-mail"
data-url="'.route('customer_mail_send_mail').'" data-redirect="back" data-customer_mail_id="'.$customer_mail->id.'"
data-booking_id="'.$customer_mail->booking_id.'" data-route="'.route('booking_modal_load').'" data-customer_mail_dir="'.$customer_mail->dir.'" data-customer_mail_country="'.$customer_mail->travel_country_id.'">
data-booking_id="'.$customer_mail->booking_id.'" data-route="'.route('booking_modal_load').'" data-customer_mail_dir="'.$customer_mail->dir.'" data-customer_mail_subdir="'.$customer_mail->subdir.'">
<span title="Antwort auf E-Mail senden" data-placement="left" rel="tooltip"><i class="ion ion-ios-redo"></i> <i class="ion ion-md-mail-open"></i></span>
</a>
&nbsp;
<a href="javascript:void(0)" class="btn btn-xs btn-default" data-toggle="modal"
data-target="#modals-load-content" data-id="reply-save" data-model="customerMail" data-action="reply-customer-mail"
data-url="'.route('customer_mail_reply_mail').'" data-redirect="back" data-customer_mail_id="'.$customer_mail->id.'"
data-booking_id="'.$customer_mail->booking_id.'" data-route="'.route('booking_modal_load').'" data-customer_mail_dir="'.$customer_mail->dir.'" data-customer_mail_country="'.$customer_mail->travel_country_id.'">
data-booking_id="'.$customer_mail->booking_id.'" data-route="'.route('booking_modal_load').'" data-customer_mail_dir="'.$customer_mail->dir.'" data-customer_mail_subdir="'.$customer_mail->subdir.'">
<span title="Antwort auf E-Mail speichern" data-placement="left" rel="tooltip"><i class="ion ion-ios-redo"></i> <i class="ion ion-md-mail-unread"></i></span>
</a>
&nbsp;';
@ -375,7 +386,7 @@ class CustomerMailController extends Controller
/*->filterColumn('subject', function($query, $keyword) {
if($keyword != ""){
$query->whereRaw("subject LIKE ?", '%'.$keyword.'%');
}
})*/
->orderColumn('date', 'sent_at $1')

View file

@ -5,6 +5,7 @@ namespace App\Http\Controllers;
use App\Models\Draft;
use App\Models\DraftItem;
use App\Models\DraftType;
use Request;
class DraftController extends Controller
{
@ -28,7 +29,7 @@ class DraftController extends Controller
public function detail($id)
{
if($id == "new") {
if($id === "new") {
$draft = new Draft();
$draft->active = true;
$id = 'new';
@ -48,7 +49,7 @@ class DraftController extends Controller
public function store($id)
{
$data = Request::all();
if($id == "new") {
if($id === "new") {
$draft = new Draft();
}else{
$draft = Draft::findOrFail($id);
@ -145,7 +146,7 @@ class DraftController extends Controller
public function typeUpdate(){
$data = Request::all();
if($data['id'] == "new"){
if($data['id'] === "new"){
$draft_type = DraftType::create([
'name' => $data['name'],
'active' => isset($data['active']) ? true : false,
@ -158,8 +159,6 @@ class DraftController extends Controller
$draft_type->active = isset($data['active']) ? true : false;
$draft_type->color = $data['color'];
$draft_type->pos = $data['pos'];
$draft_type->save();
}

View file

@ -27,6 +27,11 @@ class FileController extends Controller
$filename = $file->original_name;
$path = $file->getPath();
}
if ($disk === 'travel_user'){
$file = \App\Models\CustomerFewoFile::findOrFail($id);
$filename = $file->original_name;
$path = $file->getPath();
}
if ($disk === 'booking'){
$file = \App\Models\BookingFile::findOrFail($id);
@ -34,6 +39,18 @@ class FileController extends Controller
$path = $file->getPath();
}
if ($disk === 'general'){
$file = \App\Models\GeneralFile::findOrFail($id);
$filename = $file->original_name;
$path = $file->getPath();
}
if ($disk === 'booking_fewo'){
$file = \App\Models\TravelUserBookingFile::findOrFail($id);
$filename = $file->original_name;
$path = $file->getPath();
}
if ($disk === 'cms_file'){
$file = \App\Models\CMSContent::findOrFail($id);
$filename = $file->name;

View file

@ -0,0 +1,70 @@
<?php
namespace App\Http\Controllers;
use App\Models\GeneralFile;
use App\Models\TravelCountry;
use App\Models\TravelCountryService;
use App\Repositories\GeneralFileRepository;
use Request;
class ModalController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public function load(){
$data = Request::all();
$ret = "";
$status = false;
if(Request::ajax()){
if($data['action'] === "upload-travel_country-file"){
if($value = TravelCountry::find($data['id'])){
$generalFileRepo = new GeneralFileRepository(new GeneralFile());
$generalFileRepo->_set('disk', 'general');
$generalFileRepo->_set('travel_country_id', $data['id']);
$generalFileRepo->_set('dir', '/'.date('Y/m').'/');
$generalFileRepo->_set('identifier', 'travel_country');
$generalFileRepo->_set('redirect', $data['back']);
return $generalFileRepo->uploadFile(Request::all());
}
}
if($data['action'] === 'modal-upload-travel_country-file'){
$data['action'] = 'upload-travel_country-file';
$ret = view("admin.modal.upload", compact('data'))->render();
}
if($data['action'] === 'modal-travel_country-services'){
if($data['id'] === 'new'){
$value = new TravelCountryService();
$value->active = true;
}else{
$value = TravelCountryService::find($data['id']);
}
$ret = view("admin.modal.country-service", compact('data', 'value'))->render();
}
}
return response()->json(['response' => $data, 'html'=>$ret, 'status'=>$status]);
}
}
/* <button type="button" class="btn btn-sm btn-primary" data-toggle="modal"
data-target="#modals-load-content"
data-id="{{ $value->id }}"
data-model="emailTemplate"
data-action="modal-email-template"
data-url=""
data-redirect="back"
data-route="{{ route('modal_load') }}"><span class="fa fa-edit"></span></button>*/

View file

@ -9,6 +9,7 @@ use App\Models\Status;
use App\Models\Sym\TravelCountry;
use App\Models\TravelAgenda;
use App\Models\TravelCompany;
use App\Models\TravelCountryService;
use App\Repositories\CustomerMailRepository;
use Carbon\Carbon;
use Request;
@ -79,7 +80,7 @@ class RequestController extends Controller
*/
private function getSearchRequests(){
$query = Booking::with('lead')->with('customer')->with('customer_mails')->select('booking.*')->where('lead_id', '!=', NULL);
$query = Booking::with('lead')->with('customer')->with('customer_mails')->with('customer_mails')->select('booking.*')->where('lead_id', '!=', NULL);
if(Request::get('full_firstname_search') != ""){
$query->whereHas('customer', function ($q) {
@ -225,9 +226,33 @@ class RequestController extends Controller
public function getAjaxRequests(){
$query = $this->getSearchRequests();
$ret = $query->get()->pluck('travelagenda_id', 'id')->unique()->toArray();
return TravelAgenda::whereIn('id', $ret)->get()->pluck('name', 'id');
$data = Request::all();
if(Request::ajax()) {
if(isset($data['action']) && $data['action'] === "get_popover_booking_services") {
$booking = Booking::findOrFail($data['booking_id']);
$ret = "";
foreach($booking->travel_country->getContactLandsModels() as $TravelCountry){
if($TravelCountry->stern_travel_country){
foreach($TravelCountry->stern_travel_country->travel_country_services as $travel_country_service){
$ret .= \App\Models\BookingCountryService::getStatus($travel_country_service->id, $booking->id) ?
'<span class="badge badge-pill badge-success"><i class="fa fa-check"></i> '.$travel_country_service->name.'</span>' :
'<span class="badge badge-pill badge-danger""><i class="fa fa-times"></i> '.$travel_country_service->name.'</span>';
$ret .= '<br>';
}
}
}
if($ret === ""){
return 'keine Leistungen definiert';
}
return $ret;
}
$query = $this->getSearchRequests();
$ret = $query->get()->pluck('travelagenda_id', 'id')->unique()->toArray();
return TravelAgenda::whereIn('id', $ret)->get()->pluck('name', 'id');
}
}
public function loadModal(){
@ -290,8 +315,13 @@ class RequestController extends Controller
return $booking->getEndDateFormat();
})
->addColumn('travel_documents', function (Booking $booking) {
return $booking->travel_documents ? ' <span data-order="1" class="badge badge-pill badge-success"><i class="fa fa-check"></i></span>' : '<span data-order="0" class="badge badge-pill badge-danger"><i class="fa fa-times"></i></span>';
return $booking->travel_documents ? '<span data-order="1" class="badge badge-pill badge-success" title="Reiseunterlagen" data-placement="top" rel="tooltip"><i class="fa fa-check"></i></span>' : '<span data-order="0" class="badge badge-pill badge-danger" title="Reiseunterlagen" data-placement="top" rel="tooltip"><i class="fa fa-times"></i></span>';
})
->addColumn('booking_country_services', function (Booking $booking) {
return $booking->hasBookingCountryServicesUnchecked() ? '<span data-order="1" class="badge badge-pill badge-success" data-booking_id="'.$booking->id.'" data-placement="top" data-toggle="popover" title="Reise-, Agenturleistungen"><i class="fa fa-check"></i></span>' :
'<span data-order="0" class="badge badge-pill badge-danger" data-booking_id="'.$booking->id.'" data-placement="top" data-toggle="popover" title="Reise-, Agenturleistungen"><i class="fa fa-times"></i></span>';
})
->addColumn('sf_guard_user_id', function (Booking $booking) {
return '<span data-order="'.($booking->sf_guard_user_id ? $booking->sf_guard_user_id : 0).'">'.($booking->sf_guard_user_id? $booking->sf_guard_user->first_name." ".$booking->sf_guard_user->last_name : "-").'</span>';
})
@ -312,7 +342,6 @@ class RequestController extends Controller
if($booking->lawyer_date){
return '<span data-order="'.$booking->lead->status_id.'"><span class="badge badge-dark" style="background-color: '.$color.'">'.$icon.$booking->lawyer_date->format('d.m.Y').'</span></span>';
}
}
return '<span data-order="'.$booking->lead->status_id.'"><span class="badge badge-dark" style="background-color: '.$color.'">'.$icon.$booking->lead->status->name.'</span></span>';
}
@ -348,7 +377,7 @@ class RequestController extends Controller
return '<span data-order="'.$booking->refund_date.'"><span class="badge badge-'.$booking->getRefundColor().'">'.$booking->getRefundTypeList().'</span></span>';
})
->addColumn('hold', function (Booking $booking) {
return $booking->hold ? ' <span data-order="1" class="badge badge-pill badge-success"><i class="fa fa-check"></i></span>' : '<span data-order="0" class="badge badge-pill badge-danger"><i class="fa fa-times"></i></span>';
return $booking->hold ? ' <span data-order="1" class="badge badge-pill badge-success" title="Hold" data-placement="top" rel="tooltip"><i class="fa fa-check"></i></span>' : '<span data-order="0" class="badge badge-pill badge-danger" title="Hold" data-placement="top" rel="tooltip"><i class="fa fa-times"></i></span>';
})
->addColumn('xx_tkt', function (Booking $booking) {
return '<span data-order="'.$booking->xx_tkt_date.'"><span class="badge badge-'.$booking->getXxTktColor().'">'.$booking->getXxTktTypeList().'</span></span>';
@ -391,8 +420,8 @@ class RequestController extends Controller
->orderColumn('airline_id', 'airline_id $1')
->orderColumn('hold', 'hold $1')
->orderColumn('xx_tkt', 'xx_tkt_date $1')
->orderColumn('travel_documents', 'travel_documents $1')
->rawColumns(['action_lead_edit', 'lead_id', 'participant_firstname', 'participant_name', 'action_booking_edit', 'travel_country_id', 'travelagenda_id', 'travel_company_id', 'sf_guard_user_id', 'lead.status_id', 'last_customer_email', 'id', 'travel_documents', 'paying_out', 'paying_out_status', 'airline_id', 'refund', 'hold', 'xx_tkt'])
//->orderColumn('travel_documents', 'travel_documents $1')
->rawColumns(['action_lead_edit', 'lead_id', 'participant_firstname', 'participant_name', 'action_booking_edit', 'travel_country_id', 'travelagenda_id', 'travel_company_id', 'sf_guard_user_id', 'lead.status_id', 'last_customer_email', 'id', 'travel_documents', 'booking_country_services', 'paying_out', 'paying_out_status', 'airline_id', 'refund', 'hold', 'xx_tkt'])
->make(true);
}
}

View file

@ -1,75 +0,0 @@
<?php
namespace App\Http\Controllers\Settings;
use App\Http\Controllers\Controller;
use App\Models\EmailTemplate;
use Request;
class EmailTemplateController extends Controller
{
public function __construct()
{
$this->middleware('admin');
}
public function index($step = false)
{
$data = [
'email_template' => EmailTemplate::all(),
];
return view('settings.email_template.index', $data);
}
public function load(){
$data = Request::all();
$ret = "";
if(Request::ajax()) {
if($data['action'] === "modal-email-template") {
if($data['id'] === 'new'){
$value = new EmailTemplate();
$value->id = 0;
$value->active = 1;
}else{
$value = EmailTemplate::find($data['id']);
}
$ret = view("settings.email_template.modal", compact('value'))->render();
}
}
return response()->json(['response' => $data, 'html'=>$ret]);
}
public function update(){
$data = Request::all();
$data['active'] = isset($data['active']) ? true : false;
if($data['id'] === "new" || $data['id'] == 0){
$model = EmailTemplate::create($data);
}else{
$model = EmailTemplate::find($data['id']);
$model->fill($data);
$model->save();
}
\Session()->flash('alert-save', '1');
return redirect(route('admin_settings_email_template'));
}
public function delete($id){
$model = EmailTemplate::findOrFail($id);
$model->delete();
\Session()->flash('alert-success', 'Eintrag gelöscht');
return redirect()->back();
}
}

View file

@ -0,0 +1,143 @@
<?php
namespace App\Http\Controllers\Settings;
use App\Http\Controllers\Controller;
use App\Models\CMSContent;
use App\Models\EmailTemplate;
use App\Models\EmailTemplateDir;
use App\Services\Booking;
use App\Services\BookingFewo;
use App\Services\Util;
use Request;
class EmailsController extends Controller
{
protected $identifier_booking_file;
protected $identifier_fewo_file;
public function __construct()
{
$this->identifier_booking_file = 'booking-email-file';
$this->identifier_fewo_file = 'fewo-email-file';
$this->middleware('admin');
}
public function index($step = false)
{
$data = [
'email_template' => EmailTemplate::all(),
'email_template_dirs' => EmailTemplateDir::all(),
'booking_email_files' => CMSContent::where('identifier', '=', $this->identifier_booking_file)->get()->sortByDesc('pos'),
'customer_mail_dirs' => Booking::getCustomerMailDirs(),
'identifier_booking_file' => $this->identifier_booking_file,
'identifier_fewo_file' => $this->identifier_fewo_file,
'fewo_email_files' => CMSContent::where('identifier', '=', $this->identifier_fewo_file)->get()->sortByDesc('pos'),
'customer_fewo_mail_dirs' => BookingFewo::getCustomerMailDirs(),
'step' => $step
];
return view('settings.emails.index', $data);
}
public function load(){
$data = Request::all();
$ret = "";
if(Request::ajax()) {
if($data['action'] === "modal-email-template") {
if($data['id'] === 'new'){
$value = new EmailTemplate();
$value->id = 0;
$value->active = 1;
}else{
$value = EmailTemplate::find($data['id']);
}
$directories = EmailTemplateDir::where('active', '=', true)->get();
$ret = view("settings.emails.modal", compact('value', 'directories'))->render();
}
}
return response()->json(['response' => $data, 'html'=>$ret]);
}
public function update(){
$data = Request::all();
$data['active'] = isset($data['active']) ? true : false;
$data['step'] = isset($data['step']) ? $data['step'] : false;
if($data['action'] === 'email_template'){
if($data['id'] === "new" || $data['id'] == 0){
$model = EmailTemplate::create($data);
}else{
$model = EmailTemplate::find($data['id']);
$model->fill($data);
$model->save();
}
}
if($data['action'] === 'email_template_dir') {
if($data['id'] === "new"){
EmailTemplateDir::create($data);
}else{
$model = EmailTemplateDir::find($data['id']);
$model->fill($data);
$model->save();
}
}
if($data['action'] === 'customer_mail_dirs') {
$data['object'] = [
'icon' => $data['icon'],
'model' => $data['model'],
'emails' => isset($data['emails']) ? Util::_explodeLines($data['emails']) : null,
];
$pos = $data['pos'];
if($pos > 9){
\Session()->flash('alert-error', 'max 9 Ordner für E-Mail Ablage');
return redirect(route('admin_settings_emails', [$data['step']]));
}
if($data['id'] === "new"){
//check ist pos
if(CMSContent::where('identifier', '=', $data['identifier'])->where('pos', '=', $pos)->count()){
\Session()->flash('alert-error', 'Die ID '.$pos.' existiert schon');
return redirect(route('admin_settings_emails', [$data['step']]));
}
CMSContent::create($data);
//store in cms old Datebase
\App\Models\Sym\CmsContent::create($data);
}else{
$model = CMSContent::find($data['id']);
if($model->pos != $pos && CMSContent::where('identifier', '=', $data['identifier'])->where('pos', '=', $pos)->count()){
\Session()->flash('alert-error', 'Die ID '.$pos.' existiert schon');
return redirect(route('admin_settings_emails', [$data['step']]));
}
$model->fill($data);
$model->save();
$m = \App\Models\Sym\CmsContent::find($data['id']);
$m->fill($data);
$m->save();
}
}
\Session()->flash('alert-save', '1');
return redirect(route('admin_settings_emails', [$data['step']]));
}
public function delete($id){
$model = EmailTemplate::findOrFail($id);
$model->delete();
\Session()->flash('alert-success', 'Eintrag gelöscht');
return redirect()->back();
}
}

View file

@ -4,9 +4,14 @@ namespace App\Http\Controllers\Settings;
use App\Http\Controllers\Controller;
use App\Models\GeneralFile;
use App\Models\TravelCountry;
use App\Models\TravelCountryService;
use App\Models\TravelNationality;
use App\Repositories\CustomerFileRepository;
use App\Repositories\GeneralFileRepository;
use App\Services\Util;
use IqContent\LaravelFilemanager\Lfm;
use Request;
class TravelCountryController extends Controller
@ -48,27 +53,45 @@ class TravelCountryController extends Controller
'id' => $id,
'step' => $step,
'travel_nationalities' => TravelNationality::where('active', true)->get(),
'lfm_helper' => app(Lfm::class),
];
return view('settings.travel_country.detail', $data);
}
public function update($id)
{
$data = Request::all();
if(isset($data['update-action'])){
if($data['update-action'] === 'save-travel-county-service'){
$data['active'] = true;//isset($data['active']) ? true : false;
$travel_country = TravelCountry::findOrFail($id);
$data['travel_country_id'] = $travel_country->id;
$data['crm_travel_country_id'] = $travel_country->crm_id;
if($data['travel_county_service_id'] === 'new'){
$model = TravelCountryService::create($data);
}else{
$model = TravelCountryService::find($data['travel_county_service_id']);
$model->fill($data);
$model->save();
}
\Session()->flash('alert-save', '1');
return redirect($data['back']);
}
}
$data['contact_emails'] = isset($data['contact_emails']) ? Util::_explodeLines($data['contact_emails']) : null;
if(!isset($data['contact_lands'])){
$data['contact_lands'] = null;
}
$data['action'] = isset($data['action']) ? $data['action'] : false;
/*
* $data['is_customer_country'] = isset($data['is_customer_country']) ? true : false;
$data['active_frontend'] = isset($data['active_frontend']) ? true : false;
$data['active_backend'] = isset($data['active_backend']) ? true : false;
*/
if($id === "new"){
$data['crm_id'] = 0;
$model = TravelCountry::create($data);
}else{
$model = TravelCountry::find($id);
@ -82,41 +105,64 @@ class TravelCountryController extends Controller
$model->setNationalityRequirement($travel_nationality_id, $text);
}
}
//TODO for this time
if ($data['action'] === 'contact') {
//we need an update in the old CRM v1 system DB
$tc = \App\Models\Sym\TravelCountry::findOrFail($model->crm_id);
if(!$tc){
$tc = \App\Models\Sym\TravelCountry::create($data);
$model->crm_id = $tc->id;
$model->save();
}else{
$tc->fill($data);
$tc->save();
}
$tc = \App\Models\Sym\TravelCountry::find($model->crm_id);
if(!$tc){
$tc = \App\Models\Sym\TravelCountry::create($data);
$model->crm_id = $tc->id;
$model->save();
}else {
$tc->fill($data);
$tc->save();
}
\Session()->flash('alert-save', '1');
return redirect(route('admin_settings_travel_country_detail', [$model->id]));
return redirect(route('admin_settings_travel_country_detail', [$model->id, $data['action']]));
}
public function delete($id){
$model = TravelCountry::findOrFail($id);
if( $model->travel_nationality_requirements){
foreach($model->travel_nationality_requirements as $travel_nationality_requirement){
$travel_nationality_requirement->delete();
public function delete($id, $del="travel_country"){
if($del === 'travel_country'){
$model = TravelCountry::findOrFail($id);
if($model->travel_nationality_requirements){
foreach($model->travel_nationality_requirements as $travel_nationality_requirement){
$travel_nationality_requirement->delete();
}
}
}
$tc = \App\Models\Sym\TravelCountry::find($model->crm_id);
if($tc){
$tc->delete();
$tc = \App\Models\Sym\TravelCountry::find($model->crm_id);
if($tc){
$tc->delete();
}
$model->delete();
\Session()->flash('alert-success', 'Eintrag gelöscht');
return redirect()->back();
}
if($del === 'general_file'){
$general_file = GeneralFile::findOrFail($id);
$travel_country = $general_file->travel_country;
$fileRepo = new GeneralFileRepository($general_file);
$fileRepo->_set('disk', 'general');
$fileRepo->delete();
$general_file->delete();
\Session()->flash('alert-success', 'Datei gelöscht');
return redirect(route('admin_settings_travel_country_detail', [$travel_country->id, 'data']));
}
if($del === 'country_service'){
$travel_country_service = TravelCountryService::findOrFail($id);
$travel_country = $travel_country_service->travel_country;
//check as entry
if($travel_country_service->booking_country_services->count() > 0){
\Session()->flash('alert-error', 'Die Leistung kann nicht gelöscht werden, diese hat Einträge bei den Buchungen');
return redirect(route('admin_settings_travel_country_detail', [$travel_country->id, 'services']));
}
$travel_country_service->delete();
\Session()->flash('alert-success', 'Eintrag gelöscht');
return redirect(route('admin_settings_travel_country_detail', [$travel_country->id, 'services']));
}
$model->delete();
\Session()->flash('alert-success', 'Eintrag gelöscht');
return redirect()->back();
}
}

View file

@ -7,8 +7,12 @@ use App\Mail\MailSendFeWoInvoice;
use App\Mail\MailSendFeWoService;
use App\Mail\MailSendFeWoInfo;
use App\Models\CMSContent;
use App\Models\FewoLodging;
use App\Models\FewoReservation;
use App\Models\TravelBookingFewoChannel;
use App\Models\TravelUserBookingFewo;
use App\Models\TravelUserBookingFile;
use App\Repositories\BookingFewoFileRepository;
use App\Repositories\TravelUserBookingFewoRepository;
use App\Services\Util;
use Illuminate\Support\Facades\Mail;
@ -23,12 +27,16 @@ class TravelUserBookingFewoController extends Controller
$this->middleware('admin');
$this->userBookingFewoRepo = $userBookingFewoRepo;
}
public function index($step = false)
{
$data = [
'step' => $step
'step' => $step,
'filter_fewo_options' => FewoLodging::get()->pluck('name', 'id'),
'filter_channel_options' => TravelBookingFewoChannel::get()->pluck('name', 'id'),
];
return view('travel.user.booking.index', $data);
@ -41,13 +49,13 @@ class TravelUserBookingFewoController extends Controller
$replace_info_text = [];
if($id == "new") {
if($id === "new") {
$travel_user_booking_fewo = new TravelUserBookingFewo();
$id = 'new';
}else{
$travel_user_booking_fewo = TravelUserBookingFewo::findOrFail($id);
$max_adults = isset($travel_user_booking_fewo->fewo_lodging->maximum_adults) ? $travel_user_booking_fewo->fewo_lodging->maximum_adults : 10;
$max_children = isset($travel_user_booking_fewo->fewo_lodging->maximum_childs) ? $travel_user_booking_fewo->fewo_lodging->maximum_childs : 10;;
$max_adults = $travel_user_booking_fewo->fewo_lodging->maximum_adults ? $travel_user_booking_fewo->fewo_lodging->maximum_adults : 10;
$max_children = $travel_user_booking_fewo->fewo_lodging->maximum_childs ? $travel_user_booking_fewo->fewo_lodging->maximum_childs : 10;;
$id = $travel_user_booking_fewo->id;
$replace_info_text['fewo_user_anrede'] = $travel_user_booking_fewo->getUserSalutation();
$replace_info_text['fewo_adresse'] = $travel_user_booking_fewo->getNameAddressLocation(", ");
@ -171,58 +179,87 @@ class TravelUserBookingFewoController extends Controller
}
}
public function delete($id){
$model = TravelUserBookingFewo::findOrFail($id);
$FewoReservations = FewoReservation::where('lodging_id', $model->fewo_lodging_id)->where('from_date', $model->getFromDateRaw())->where('to_date', $model->getToDateRaw())->get();
foreach ($FewoReservations as $FewoReservation){
$FewoReservation->delete();
public function delete($id, $del="travel_user_booking_fewo"){
if($del === 'travel_user_booking_fewo') {
$model = TravelUserBookingFewo::findOrFail($id);
$FewoReservations = FewoReservation::where('lodging_id', $model->fewo_lodging_id)->where('from_date', $model->getFromDateRaw())->where('to_date', $model->getToDateRaw())->get();
foreach ($FewoReservations as $FewoReservation) {
$FewoReservation->delete();
}
$model->delete();
\Session()->flash('alert-success', __('Buchung gelöscht sowie die Reservierung im Sterntrous Kalender'));
}
if($del === 'booking_fewo_files'){
$booking_fewo_file = TravelUserBookingFile::findOrFail($id);
$travel_user_booking_fewo = $booking_fewo_file->travel_user_booking_fewo;
$fileRepo = new BookingFewoFileRepository($booking_fewo_file);
$fileRepo->_set('disk', 'booking_fewo');
$fileRepo->delete();
$booking_fewo_file->delete();
\Session()->flash('alert-success', 'Datei gelöscht');
return redirect(route('travel_user_booking_fewo_detail', [$travel_user_booking_fewo->id]));
}
$model->delete();
\Session()->flash('alert-success', __('Buchung gelöscht sowie die Reservierung im Sterntrous Kalender'));
return redirect(route('travel_user_booking_fewos'));
}
private function prozessTravelUserBookingFewosSearch(){
$query = TravelUserBookingFewo::with('travel_booking_fewo_channel')->with('fewo_lodging')
->select('travel_user_booking_fewos.*')
->where('deleted_at', '=', null);
if(Request::get('option_fewo_id') != ""){
$query->where('fewo_lodging_id', '=', Request::get('option_fewo_id'));
}
if(Request::get('option_channel_id') != ""){
$query->where('travel_booking_fewo_channel_id', '=', Request::get('option_channel_id'));
}
return $query;
}
public function getTravelUserBookingFewos()
{
//confirmation_code_remider is delete 2
$query = TravelUserBookingFewo::where('deleted_at', '=', null);
$query = $this->prozessTravelUserBookingFewosSearch();
return \DataTables::eloquent($query)
->addColumn('action_edit', function (TravelUserBookingFewo $travel_user_booking_fewo) {
return '<a data-order="'.$travel_user_booking_fewo->id.'" href="' . route('travel_user_booking_fewo_detail', [$travel_user_booking_fewo->id]) . '" class="btn icon-btn btn-sm btn-primary"><span class="fa fa-edit"></span></a>';
})
->addColumn('fewo_lodging', function (TravelUserBookingFewo $travel_user_booking_fewo) {
//return '<a href="' . route('travel_user_booking_fewo_detail', [$travel_user_booking_fewo->fewo_lodging_id]) . '">'.$travel_user_booking_fewo->fewo_lodging->name.'</a>';
return $travel_user_booking_fewo->fewo_lodging->name;
})
->addColumn('travel_user', function (TravelUserBookingFewo $travel_user_booking_fewo) {
return '<a href="' . route('travel_user_detail', [$travel_user_booking_fewo->travel_user_id]) . '">'.$travel_user_booking_fewo->travel_user->first_name.' '.$travel_user_booking_fewo->travel_user->last_name.'</a>';
})
->addColumn('is_calendar', function (TravelUserBookingFewo $travel_user_booking_fewo) {
$back = "";
$back = "<div class='no-break'>";
$back .= get_active_badge($travel_user_booking_fewo->is_calendar_fewo_direct, "FEWO Direkt")." ";
$back .= get_active_badge($travel_user_booking_fewo->is_calendar_hrs, "HRS")." ";
$back .= get_active_badge($travel_user_booking_fewo->is_calendar_stern_tours, "STERN TOURS");
$back .= "</div>";
return $back;
})
->addColumn('is_mail', function (TravelUserBookingFewo $travel_user_booking_fewo) {
$back = "";
$back = "<div class='no-break'>";
$back .= get_active_badge($travel_user_booking_fewo->isSendUserMail(), "Mietbestätigung")." ";
$back .= get_active_badge($travel_user_booking_fewo->isSendInfoMail(), "Anrreiseinfo")." ";
$back .= get_active_badge($travel_user_booking_fewo->isSendServiceMail(), "Dienstleister Mail");
$back .= "</div>";
return $back;
})
->addColumn('status_name', function (TravelUserBookingFewo $travel_user_booking_fewo) {
return $travel_user_booking_fewo->getStatuesName();
})
->addColumn('action_delete', function (TravelUserBookingFewo $travel_user_booking_fewo) {
return '<a href="' . route('travel_user_booking_fewo_delete', [$travel_user_booking_fewo->id]) . '" class="btn icon-btn btn-sm btn-danger" onclick="return confirm(\''.__('Really delete entry?').'\');"><span class="fa fa-trash"></span></a>';
})
->rawColumns(['action_edit', 'fewo_lodging', 'travel_user', 'is_calendar', 'is_mail', 'action_delete'])
->filterColumn('fewo_lodging.name', function ($query, $keyword) {
if ($keyword != "") {
$query->whereHas('travel_user', function ($q) use ($keyword) {
$q->where("first_name", 'LIKE', '%' . $keyword . '%')
->orWhere('last_name', 'LIKE', '%' . $keyword . '%');
});
}
})
->rawColumns(['action_edit', 'travel_user', 'is_calendar', 'is_mail', 'action_delete'])
->make(true);
}
}

View file

@ -47,4 +47,12 @@ class Airline extends Model
protected $casts = ['contact_emails' => 'array'];
public static function getAsNameIdArray($empty = true){
$ret = Airline::get()->pluck('name', 'id')->toArray();
if($empty){
$first = [null => "-"];
return $first + $ret;
}
return $ret;
}
}

View file

@ -287,11 +287,12 @@ class Booking extends Model
2 => 'erledigt',
];
public static $hold_types = [
0 => '-',
1 => 'eingetragen',
];
public static $customer_mail_dirs = [
0 => ['name' => 'Reisender', 'icon'=>'ion-ios-filing'],
1 => ['name' => 'Agentur', 'icon'=>'ion-ios-folder-open'],
2 => ['name' => 'Flug', 'icon'=>'ion-ios-airplane'],
3 => ['name' => 'Versicherung', 'icon'=>'ion-ios-help-buoy'],
11 => ['name' => 'Entwürfe', 'icon'=>'ion-md-create'],
12 => ['name' => 'Papierkorb', 'icon'=>'ion-md-trash'],
];
@ -473,6 +474,23 @@ class Booking extends Model
return $this->hasMany(BookingFile::class);
}
public function booking_country_services()
{
return $this->hasMany(BookingCountryService::class, 'booking_id');
}
public function booking_country_services_checked()
{
return $this->hasMany(BookingCountryService::class, 'booking_id')->where('status', '=', 0);
}
public function hasBookingCountryServicesUnchecked(){
if(!$this->booking_country_services->count() || $this->booking_country_services_checked->count() ||
($this->booking_country_services->count() !== TravelCountryService::where('crm_travel_country_id', '=', $this->travel_country_id)->count())){
return false;
}
return true;
}
public function calculate_price_total()
{
@ -740,13 +758,13 @@ class Booking extends Model
return isset($this->xx_tkt_colors[$this->xx_tkt]) ? $this->xx_tkt_colors[$this->xx_tkt] : '-';
}
public function countCustomerMailsBy($dir, $country=false){
public function countCustomerMailsBy($dir, $subdir=false){
if($dir === 11){
return $this->customer_mails->where('draft', true)->count();
return $this->customer_mails->where('draft', true)->where('dir', '!=', 12)->count();
}
if($country){
return $this->customer_mails->where('dir', $dir)->where('travel_country_id', $country)->count();
if($subdir){
return $this->customer_mails->where('dir', $dir)->where('subdir', $subdir)->count();
}
return $this->customer_mails->where('dir', $dir)->count();
}

View file

@ -0,0 +1,75 @@
<?php
/**
* Created by Reliese Model.
*/
namespace App\Models;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model;
/**
* Class BookingCountryService
*
* @property int $id
* @property int $travel_country_service_id
* @property int $booking_id
* @property Carbon $created_at
* @property Carbon $updated_at
* @property Booking $booking
* @property TravelCountryService $travel_country_service
* @package App\Models
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCountryService newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCountryService newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCountryService query()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCountryService whereBookingId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCountryService whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCountryService whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCountryService whereTravelCountryServiceId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCountryService whereUpdatedAt($value)
* @mixin \Eloquent
*/
class BookingCountryService extends Model
{
protected $connection = 'mysql';
protected $table = 'booking_country_services';
protected $casts = [
'travel_country_service_id' => 'int',
'booking_id' => 'int',
'status' => 'int'
];
protected $fillable = [
'travel_country_service_id',
'booking_id',
'status'
];
protected $status_type = [
0 => 'offen',
1 => 'erledigt',
];
public function booking()
{
return $this->belongsTo(Booking::class);
}
public function travel_country_service()
{
return $this->belongsTo(TravelCountryService::class);
}
public static function getStatus($travel_country_service_id, $booking_id){
$booking_country_service = BookingCountryService::where('travel_country_service_id', '=', $travel_country_service_id)
->where('booking_id', '=', $booking_id)->first();
if($booking_country_service){
return $booking_country_service->status;
}
return 0;
}
}

View file

@ -50,13 +50,6 @@ class BookingFile extends Model
'size' => 'int'
];
public static $icon_ext = [
'default' => 'fa fa-file',
'pdf'=> 'fa fa-file-pdf',
'jpg'=> 'fa fa-file-image',
'png'=> 'fa fa-file-image',
];
protected $fillable = [
'booking_id',
'identifier',
@ -68,6 +61,13 @@ class BookingFile extends Model
'size'
];
public static $icon_ext = [
'default' => 'fa fa-file',
'pdf'=> 'fa fa-file-pdf',
'jpg'=> 'fa fa-file-image',
'png'=> 'fa fa-file-image',
];
public function booking()
{
return $this->belongsTo(Booking::class);

View file

@ -32,6 +32,12 @@ use Illuminate\Database\Eloquent\Model;
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent query()
* @property string|null $identifier
* @property array|null $object
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent whereIdentifier($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent whereObject($value)
* @property int|null $pos
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent wherePos($value)
*/
class CMSContent extends Model
{
@ -59,7 +65,12 @@ class CMSContent extends Model
protected $table = 'c_m_s_contents';
protected $fillable = [
'name', 'slug', 'field', 'text', 'full_text', 'integer', 'decimal',
'name', 'slug', 'identifier', 'field', 'text', 'full_text', 'object', 'integer', 'decimal', 'pos',
];
protected $casts = [
'object' => 'array',
'pos' => 'int'
];
public function sluggable()
@ -107,11 +118,14 @@ class CMSContent extends Model
return $this->full_text;
break;
case 'file':
return \GuzzleHttp\json_decode($this->full_text);
// return \GuzzleHttp\json_decode($this->full_text);
return $this->object;
break;
case 'array':
return $this->object;
break;
case 'integer':
return $this->integer;
break;
case 'decimal':
return $this->decimal;
@ -122,13 +136,21 @@ class CMSContent extends Model
//FILE ------------------------
public function isFile(){
return $this->field === 'file' ? true : false;
return $this->id > 0 && $this->field === 'file' ? true : false;
}
/*'identifier', 'filename', 'dir', 'original_name', 'ext', 'mine', 'size'*/
public function getFileContent($key= false){
if($key && $this->isFile()){
$file = \GuzzleHttp\json_decode($this->full_text);
return isset($file->{$key}) ? $file->{$key} : false;
// $file = \GuzzleHttp\json_decode($this->full_text);
return isset($this->object[$key]) ? $this->object[$key] : false;
}
return false;
}
public function getArrayContent($key= false){
if($key && $this->field === 'array'){
// $file = \GuzzleHttp\json_decode($this->full_text);
return isset($this->object[$key]) ? $this->object[$key] : false;
}
return false;
}
@ -209,7 +231,10 @@ class CMSContent extends Model
return $CMSContent->full_text;
break;
case 'file':
return \GuzzleHttp\json_decode($CMSContent->full_text);
return $CMSContent->object; //\GuzzleHttp\json_decode($CMSContent->full_text);
break;
case 'array':
return $CMSContent->object; //\GuzzleHttp\json_decode($CMSContent->full_text);
break;
case 'integer':
return $CMSContent->integer;

View file

@ -0,0 +1,115 @@
<?php
/**
* Created by Reliese Model.
*/
namespace App\Models;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model;
/**
* Class CustomerFewoFile
*
* @property int $id
* @property int $travel_user_id
* @property int $customer_fewo_mail_id
* @property string $identifier
* @property string $filename
* @property string $dir
* @property string $original_name
* @property string $ext
* @property string $mine
* @property int $size
* @property Carbon $created_at
* @property Carbon $updated_at
* @property CustomerFewoMail $customer_fewo_mail
* @property TravelUser $travel_user
* @package App\Models
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile query()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereCustomerFewoMailId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereDir($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereExt($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereFilename($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereIdentifier($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereMine($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereOriginalName($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereSize($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereTravelUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereUpdatedAt($value)
* @mixin \Eloquent
*/
class CustomerFewoFile extends Model
{
protected $connection = 'mysql_stern';
protected $table = 'customer_fewo_files';
protected $casts = [
'travel_user_id' => 'int',
'customer_fewo_mail_id' => 'int',
'size' => 'int'
];
protected $fillable = [
'travel_user_id',
'customer_fewo_mail_id',
'identifier',
'filename',
'dir',
'original_name',
'ext',
'mine',
'size'
];
public static $icon_ext = [
'default' => 'fa fa-file',
'pdf'=> 'fa fa-file-pdf',
'jpg'=> 'fa fa-file-image',
'png'=> 'fa fa-file-image',
];
public function customer_fewo_mail()
{
return $this->belongsTo(CustomerFewoMail::class);
}
public function travel_user()
{
return $this->belongsTo(TravelUser::class);
}
public function getIconExt(){
return isset(self::$icon_ext[$this->ext]) ? self::$icon_ext[$this->ext] : self::$icon_ext['default'];
}
public function getURL($do=false){
return route('storage_file', [$this->id, 'travel_user', $do]);
}
public function getPath(){
return \Storage::disk('travel_user')->path($this->dir.$this->filename);
}
public function formatBytes($precision = 2)
{
$size = $this->size;
if ($size > 0) {
$size = (int) $size;
$base = log($size) / log(1024);
$suffixes = array(' bytes', ' KB', ' MB', ' GB', ' TB');
return round(pow(1024, $base - floor($base)), $precision) . $suffixes[floor($base)];
} else {
return $size;
}
}
}

View file

@ -0,0 +1,189 @@
<?php
/**
* Created by Reliese Model.
*/
namespace App\Models;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;
/**
* Class CustomerFewoMail
*
* @property int $id
* @property int $travel_user_booking_fewo_id
* @property int $travel_user_id
* @property bool $is_answer
* @property int $reply_id
* @property string $email
* @property string $recipient
* @property string $cc
* @property string $bcc
* @property string $subject
* @property string $message
* @property int $dir
* @property int $subdir
* @property bool $draft
* @property bool $important
* @property bool $send
* @property bool $fail
* @property string $error
* @property Carbon $sent_at
* @property Carbon $scheduled_at
* @property Carbon $delivered_at
* @property Carbon $created_at
* @property Carbon $updated_at
* @property CustomerFewoMail $customer_fewo_mail
* @property TravelUserBookingFewo $travel_user_booking_fewo
* @property TravelUser $travel_user
* @property Collection|CustomerFewoFile[] $customer_fewo_files
* @property Collection|CustomerFewoMail[] $customer_fewo_mails
* @package App\Models
* @property-read int|null $customer_fewo_files_count
* @property-read int|null $customer_fewo_mails_count
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail query()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereBcc($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereCc($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereDeliveredAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereDir($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereDraft($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereEmail($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereError($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereFail($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereImportant($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereIsAnswer($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereMessage($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereRecipient($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereReplyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereScheduledAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereSend($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereSentAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereSubdir($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereSubject($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereTravelUserBookingFewoId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereTravelUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereUpdatedAt($value)
* @mixin \Eloquent
* @property-read \App\Models\TravelUserBookingFewo $booking
* @property-read \App\Models\TravelUser $customer
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\CustomerFewoFile[] $customer_files
* @property-read int|null $customer_files_count
* @property-read \App\Models\CustomerFewoMail|null $customer_mail
*/
class CustomerFewoMail extends Model
{
protected $connection = 'mysql_stern';
protected $table = 'customer_fewo_mails';
protected $casts = [
'travel_user_booking_fewo_id' => 'int',
'travel_user_id' => 'int',
'is_answer' => 'bool',
'reply_id' => 'int',
'dir' => 'int',
'subdir' => 'int',
'draft' => 'bool',
'important' => 'bool',
'send' => 'bool',
'fail' => 'bool',
'recipient' => 'array',
'cc' => 'array',
'bcc' => 'array'
];
protected $dates = [
'sent_at',
'scheduled_at',
'delivered_at'
];
protected $fillable = [
'travel_user_booking_fewo_id',
'travel_user_id',
'is_answer',
'reply_id',
'email',
'recipient',
'cc',
'bcc',
'subject',
'message',
'dir',
'subdir',
'draft',
'important',
'send',
'fail',
'error',
'sent_at',
'scheduled_at',
'delivered_at'
];
public function customer_fewo_mail()
{
return $this->belongsTo(CustomerFewoMail::class, 'reply_id');
}
public function customer_mail()
{
return $this->belongsTo(CustomerFewoMail::class, 'reply_id');
}
public function travel_user_booking_fewo()
{
return $this->belongsTo(TravelUserBookingFewo::class);
}
public function booking()
{
return $this->belongsTo(TravelUserBookingFewo::class);
}
public function travel_user()
{
return $this->belongsTo(TravelUser::class);
}
public function customer()
{
return $this->belongsTo(TravelUser::class, 'travel_user_id');
}
public function customer_fewo_files()
{
return $this->hasMany(CustomerFewoFile::class);
}
public function customer_files()
{
return $this->hasMany(CustomerFewoFile::class, 'customer_fewo_mail_id');
}
public function customer_fewo_mails()
{
return $this->hasMany(CustomerFewoMail::class, 'reply_id');
}
public function getSentAtRaw(){
return $this->attributes['sent_at'];
}
public function getSentAtAttribute(){
if(!$this->attributes['sent_at']){ return ""; }
return Carbon::parse($this->attributes['sent_at'])->format(\Util::formatDateTimeDB());
}
public function getCreatedAtAttribute(){
if(!$this->attributes['created_at']){ return ""; }
return Carbon::parse($this->attributes['created_at'])->format(\Util::formatDateTimeDB());
}
}

View file

@ -58,12 +58,6 @@ class CustomerFile extends Model
'size' => 'int'
];
public static $icon_ext = [
'default' => 'fa fa-file',
'pdf'=> 'fa fa-file-pdf',
'jpg'=> 'fa fa-file-image',
'png'=> 'fa fa-file-image',
];
protected $fillable = [
'customer_id',
'customer_mail_id',
@ -76,6 +70,13 @@ class CustomerFile extends Model
'size'
];
public static $icon_ext = [
'default' => 'fa fa-file',
'pdf'=> 'fa fa-file-pdf',
'jpg'=> 'fa fa-file-image',
'png'=> 'fa fa-file-image',
];
public function customer()
{
return $this->belongsTo(Customer::class);

View file

@ -75,6 +75,8 @@ use Illuminate\Database\Eloquent\Model;
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereTravelCountryId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereUpdatedAt($value)
* @mixin \Eloquent
* @property int|null $subdir
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereSubdir($value)
*/
class CustomerMail extends Model
{
@ -96,7 +98,8 @@ class CustomerMail extends Model
'is_answer' => 'bool',
'reply_id' => 'int',
'dir' => 'int',
'travel_country_id' => 'int',
'subdir' => 'int',
'travel_country_id' => 'int',
'draft' => 'bool',
'important' => 'bool',
'send' => 'bool',
@ -125,7 +128,8 @@ class CustomerMail extends Model
'subject',
'message',
'dir',
'travel_country_id',
'subdir',
'travel_country_id',
'draft',
'important',
'send',

View file

@ -11,29 +11,49 @@ use Illuminate\Database\Eloquent\Model;
/**
* Class EmailTemplate
*
*
* @property int $id
* @property int $email_template_dir_id
* @property string $subject
* @property string $message
* @property bool $active
* @property Carbon $created_at
* @property Carbon $updated_at
*
* @property EmailTemplateDir $email_template_dir
* @package App\Models
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate query()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate whereActive($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate whereEmailTemplateDirId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate whereMessage($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate whereSubject($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate whereUpdatedAt($value)
* @mixin \Eloquent
* @property string $name
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate whereName($value)
*/
class EmailTemplate extends Model
{
protected $connection = 'mysql';
protected $table = 'email_templates';
protected $table = 'email_templates';
protected $casts = [
'email_template_dir_id' => 'int',
'active' => 'bool'
];
protected $fillable = [
'email_template_dir_id',
'name',
'subject',
'message',
'active'
];
public function email_template_dir()
{
return $this->belongsTo(EmailTemplateDir::class);
}
}

View file

@ -0,0 +1,58 @@
<?php
/**
* Created by Reliese Model.
*/
namespace App\Models;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;
/**
* Class EmailTemplateDir
*
* @property int $id
* @property string $name
* @property string $color
* @property bool $active
* @property int $pos
* @property Carbon $created_at
* @property Carbon $updated_at
* @property Collection|EmailTemplate[] $email_templates
* @package App\Models
* @property-read int|null $email_templates_count
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplateDir newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplateDir newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplateDir query()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplateDir whereActive($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplateDir whereColor($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplateDir whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplateDir whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplateDir whereName($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplateDir wherePos($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplateDir whereUpdatedAt($value)
* @mixin \Eloquent
*/
class EmailTemplateDir extends Model
{
protected $table = 'email_template_dirs';
protected $casts = [
'active' => 'bool',
'pos' => 'int'
];
protected $fillable = [
'name',
'color',
'active',
'pos'
];
public function email_templates()
{
return $this->hasMany(EmailTemplate::class);
}
}

106
app/Models/GeneralFile.php Normal file
View file

@ -0,0 +1,106 @@
<?php
/**
* Created by Reliese Model.
*/
namespace App\Models;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model;
/**
* Class GeneralFile
*
* @property int $id
* @property int $travel_country_id
* @property string $identifier
* @property string $filename
* @property string $dir
* @property string $original_name
* @property string $ext
* @property string $mine
* @property int $size
* @property Carbon $created_at
* @property Carbon $updated_at
* @property TravelCountry $travel_country
* @package App\Models
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile query()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile whereDir($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile whereExt($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile whereFilename($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile whereIdentifier($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile whereMine($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile whereOriginalName($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile whereSize($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile whereTravelCountryId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile whereUpdatedAt($value)
* @mixin \Eloquent
*/
class GeneralFile extends Model
{
protected $connection = 'mysql';
protected $table = 'general_files';
protected $casts = [
'travel_country_id' => 'int',
'size' => 'int'
];
protected $fillable = [
'travel_country_id',
'identifier',
'filename',
'dir',
'original_name',
'ext',
'mine',
'size'
];
public static $icon_ext = [
'default' => 'fa fa-file',
'pdf'=> 'fa fa-file-pdf',
'jpg'=> 'fa fa-file-image',
'png'=> 'fa fa-file-image',
];
public function travel_country()
{
return $this->belongsTo(TravelCountry::class, 'travel_country_id');
}
public function getIconExt(){
return isset(self::$icon_ext[$this->ext]) ? self::$icon_ext[$this->ext] : self::$icon_ext['default'];
}
public function getURL($do=false){
return route('storage_file', [$this->id, 'general', $do]);
}
public function getPath(){
return \Storage::disk('general')->path($this->dir.$this->filename);
}
public function formatBytes($precision = 2)
{
$size = $this->size;
if ($size > 0) {
$size = (int) $size;
$base = log($size) / log(1024);
$suffixes = array(' bytes', ' KB', ' MB', ' GB', ' TB');
return round(pow(1024, $base - floor($base)), $precision) . $suffixes[floor($base)];
} else {
return $size;
}
}
}

View file

@ -11,7 +11,7 @@ use Illuminate\Database\Eloquent\Model;
/**
* Class Insurance
*
*
* @property int $id
* @property string $name
* @property string $name_full
@ -19,8 +19,17 @@ use Illuminate\Database\Eloquent\Model;
* @property bool $active
* @property Carbon $created_at
* @property Carbon $updated_at
*
* @package App\Models
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Insurance newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Insurance newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Insurance query()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Insurance whereActive($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Insurance whereContactEmails($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Insurance whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Insurance whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Insurance whereName($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Insurance whereUpdatedAt($value)
* @mixin \Eloquent
*/
class Insurance extends Model
{

View file

@ -27,6 +27,10 @@ use Illuminate\Database\Eloquent\Model;
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProvider whereName($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProvider whereType($value)
* @mixin \Eloquent
* @property array|null $contact_emails
* @property bool|null $active
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProvider whereActive($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProvider whereContactEmails($value)
*/
class ServiceProvider extends Model
{

View file

@ -34,6 +34,12 @@ use Illuminate\Database\Eloquent\Model;
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\CmsContent whereUpdatedAt($value)
* @mixin \Eloquent
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\CmsContent findSimilarSlugs($attribute, $config, $slug)
* @property string|null $identifier
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\CmsContent whereIdentifier($value)
* @property array|null $object
* @property int|null $pos
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\CmsContent whereObject($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\CmsContent wherePos($value)
*/
class CmsContent extends Model
{
@ -45,7 +51,12 @@ class CmsContent extends Model
protected $table = 'cms_contents';
protected $fillable = [
'name', 'slug', 'field', 'text', 'full_text', 'integer', 'decimal',
'name', 'slug', 'identifier', 'field', 'text', 'full_text', 'object', 'integer', 'decimal', 'pos',
];
protected $casts = [
'object' => 'array',
'pos' => 'int'
];
public $timestamps = false;

View file

@ -3,7 +3,9 @@
namespace App\Models\Sym;
use App\Models\Booking;
use App\Models\GeneralFile;
use App\Models\Lead;
use App\Models\TravelCountryService;
use Illuminate\Database\Eloquent\Model;
@ -40,6 +42,13 @@ use Illuminate\Database\Eloquent\Model;
* @property-read int|null $bookings_count
* @property array|null $contact_emails
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\TravelCountry whereContactEmails($value)
* @property array|null $mail_dirs
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\TravelCountry whereMailDirs($value)
* @property string|null $mail_dir_name
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\TravelCountry whereMailDirName($value)
* @property-read \App\Models\TravelCountry|null $stern_travel_country
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\TravelCountryService[] $travel_country_services
* @property-read int|null $travel_country_services_count
*/
class TravelCountry extends Model
{
@ -53,6 +62,8 @@ class TravelCountry extends Model
'is_customer_country',
'active_backend',
'contact_lands',
'mail_dir_name',
'mail_dirs',
'contact_headline',
'contact_text_1',
'contact_text_2',
@ -63,7 +74,7 @@ class TravelCountry extends Model
];
protected $casts = ['contact_lands' => 'array', 'contact_emails' => 'array'];
protected $casts = ['contact_lands' => 'array', 'mail_dirs'=>'array', 'contact_emails' => 'array'];
public $timestamps = false;
@ -77,6 +88,16 @@ class TravelCountry extends Model
return $this->hasMany(Booking::class, 'travel_country_id', 'id');
}
public function stern_travel_country()
{
return $this->hasOne(\App\Models\TravelCountry::class, 'crm_id', 'id');
}
public function travel_country_services()
{
return $this->hasMany(TravelCountryService::class, 'crm_travel_country_id', 'id')->orderBy('pos', 'DESC');
}
public function getCountryLands(){
$ret = [];
if($this->contact_lands){
@ -90,4 +111,22 @@ class TravelCountry extends Model
}
return $ret;
}
public function getMailDirs($id){
return isset($this->mail_dirs[$id]) ? $this->mail_dirs[$id] : [];
}
public function getContactLandsModels(){
$ret = [];
if($this->contact_lands){
foreach ($this->contact_lands as $travel_country_id){
if($travel_country = TravelCountry::find($travel_country_id)){
$ret[$travel_country->id] = $travel_country;
}
}
}else{
$ret[$this->id] = $this;
}
return $ret;
}
}

View file

@ -34,6 +34,8 @@ use Illuminate\Database\Eloquent\Model;
* @mixin \Eloquent
* @property int|null $active
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompany whereActive($value)
* @property array|null $contact_emails
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompany whereContactEmails($value)
*/
class TravelCompany extends Model
{

View file

@ -60,6 +60,15 @@ use Illuminate\Support\Str;
* @property-read int|null $travel_nationality_requirements_count
* @property array|null $contact_emails
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereContactEmails($value)
* @property array|null $mail_dirs
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereMailDirs($value)
* @property string $mail_dir_name
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereMailDirName($value)
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\GeneralFile[] $general_files
* @property-read int|null $general_files_count
* @property-read \App\Models\Sym\TravelCountry|null $crm_travel_country
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\TravelCountryService[] $travel_country_services
* @property-read int|null $travel_country_services_count
*/
class TravelCountry extends Model
{
@ -68,7 +77,6 @@ class TravelCountry extends Model
protected $table = 'travel_country';
protected $fillable = [
'name',
'slug',
@ -76,6 +84,8 @@ class TravelCountry extends Model
'text_before',
'text_after',
'contact_lands',
'mail_dir_name',
'mail_dirs',
'contact_headline',
'contact_text_1',
'contact_text_2',
@ -90,7 +100,7 @@ class TravelCountry extends Model
];
protected $casts = ['contact_lands' => 'array', 'contact_emails' => 'array'];
protected $casts = ['contact_lands' => 'array', 'mail_dirs' => 'array', 'contact_emails' => 'array'];
public $timestamps = false;
@ -105,11 +115,26 @@ class TravelCountry extends Model
return $this->belongsTo('App\Models\Page', 'feedback_page_id', 'id');
}
public function crm_travel_country()
{
return $this->belongsTo(\App\Models\Sym\TravelCountry::class, 'crm_id', 'id');
}
public function travel_nationality_requirements()
{
return $this->hasMany('App\Models\TravelNationalityRequirement', 'travel_country_id', 'id');
}
public function general_files()
{
return $this->hasMany(GeneralFile::class, 'travel_country_id', 'id');
}
public function travel_country_services()
{
return $this->hasMany(TravelCountryService::class, 'travel_country_id', 'id')->orderBy('pos', 'DESC');
}
public function setSlugAttribute( $value ) {
if(!isset($value) || $value == ""){
$this->attributes['slug'] = Str::slug(pre_slug($this->name), '-');
@ -131,6 +156,23 @@ class TravelCountry extends Model
return $ret;
}
public function getMailDirs($id){
return isset($this->mail_dirs[$id]) ? $this->mail_dirs[$id] : [];
}
public function getContactLandsModels(){
$ret = [];
if($this->contact_lands){
foreach ($this->contact_lands as $travel_country_id){
if($travel_country = TravelCountry::where('crm_id', $contact_land_id)->first()){
$ret[$travel_country->id] = $travel_country;
}
}
}else{
$ret[$this->id] = $this;
}
return $ret;
}
public function getNationalityRequirement($travel_nationality_id){
$model = TravelNationalityRequirement::where('travel_country_id', $this->id)->where('travel_nationality_id', $travel_nationality_id)->first();

View file

@ -0,0 +1,85 @@
<?php
/**
* Created by Reliese Model.
*/
namespace App\Models;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;
/**
* Class TravelCountryService
*
* @property int $id
* @property int $travel_country_id
* @property int $crm_travel_country
* @property string $name
* @property string $description
* @property bool $active
* @property Carbon $created_at
* @property Carbon $updated_at
* @property TravelCountry $travel_country
* @property Collection|BookingCountryService[] $booking_country_services
* @package App\Models
* @property int|null $crm_travel_country_id
* @property int|null $pos
* @property-read int|null $booking_country_services_count
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService query()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService whereActive($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService whereCrmTravelCountryId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService whereDescription($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService whereName($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService wherePos($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService whereTravelCountryId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService whereUpdatedAt($value)
* @mixin \Eloquent
*/
class TravelCountryService extends Model
{
protected $connection = 'mysql';
protected $table = 'travel_country_services';
protected $casts = [
'travel_country_id' => 'int',
'crm_travel_country_id' => 'int',
'pos' => 'int',
'active' => 'bool'
];
protected $fillable = [
'travel_country_id',
'crm_travel_country_id',
'name',
'description',
'pos',
'active'
];
protected $status_type = [
0 => 'offen',
1 => 'erledigt',
];
public function travel_country()
{
return $this->belongsTo(TravelCountry::class, 'travel_country_id');
}
public function crm_travel_country()
{
return $this->belongsTo(\App\Models\Sym\TravelCountry::class);
}
public function booking_country_services()
{
return $this->hasMany(BookingCountryService::class);
}
}

View file

@ -131,4 +131,8 @@ class TravelUser extends Model
public function setBirthdayAttribute( $value ) {
$this->attributes['birthday'] = isset($value) ? (new Carbon($value))->format('Y-m-d') : NULL;
}
public function getSalutation(){
return $this->salutation_id == 1 ? 'Herr' : 'Frau';
}
}

View file

@ -98,6 +98,14 @@ use App\Services\Util;
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFewo whereUpdatedAt($value)
* @property string|null $last_change_at
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFewo whereLastChangeAt($value)
* @property-read \App\Models\CustomerFewoMail|null $customer_fewo_mail_last
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\CustomerFewoMail[] $customer_fewo_mails
* @property-read int|null $customer_fewo_mails_count
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\CustomerFewoMail[] $customer_fewo_mails_sent_at
* @property-read int|null $customer_fewo_mails_sent_at_count
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\TravelUserBookingFile[] $booking_files
* @property-read int|null $booking_files_count
* @property-read \App\Models\TravelUser $customer
*/
class TravelUserBookingFewo extends Model
{
@ -182,6 +190,11 @@ class TravelUserBookingFewo extends Model
'status_text'
];
public static $customer_mail_dirs = [
11 => ['name' => 'Entwürfe', 'icon'=>'ion-md-create'],
12 => ['name' => 'Papierkorb', 'icon'=>'ion-md-trash'],
];
public function fewo_lodging()
{
return $this->belongsTo(\App\Models\FewoLodging::class);
@ -202,6 +215,31 @@ class TravelUserBookingFewo extends Model
return $this->belongsTo(\App\Models\TravelUser::class);
}
public function customer()
{
return $this->belongsTo(\App\Models\TravelUser::class, 'travel_user_id');
}
public function booking_files()
{
return $this->hasMany(TravelUserBookingFile::class, 'travel_user_booking_fewo_id');
}
public function customer_fewo_mails()
{
return $this->hasMany(CustomerFewoMail::class, 'travel_user_booking_fewo_id', 'id');
}
public function customer_fewo_mails_sent_at()
{
return $this->hasMany(CustomerFewoMail::class, 'travel_user_booking_fewo_id')->orderBy('sent_at', 'ASC');
}
public function customer_fewo_mail_last()
{
return $this->hasOne(CustomerFewoMail::class, 'travel_user_booking_fewo_id')->latest();
}
public function getStatuesName(){
if(isset(self::$statues[$this->status])){
return self::$statues[$this->status];
@ -693,6 +731,16 @@ class TravelUserBookingFewo extends Model
return false;
}
public function countCustomerMailsBy($dir, $subdir=false){
if($dir === 11){
return $this->customer_fewo_mails->where('draft', true)->where('dir', '!=', 12)->count();
}
if($subdir){
return $this->customer_fewo_mails->where('dir', $dir)->where('subdir', $subdir)->count();
}
return $this->customer_fewo_mails->where('dir', $dir)->count();
}
}

View file

@ -0,0 +1,106 @@
<?php
/**
* Created by Reliese Model.
*/
namespace App\Models;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model;
/**
* Class TravelUserBookingFile
*
* @property int $id
* @property int $travel_user_booking_fewos
* @property string $identifier
* @property string $filename
* @property string $dir
* @property string $original_name
* @property string $ext
* @property string $mine
* @property int $size
* @property Carbon $created_at
* @property Carbon $updated_at
* @property TravelUserBookingFewo $travel_user_booking_fewo
* @package App\Models
* @property int|null $travel_user_booking_fewo_id
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile query()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile whereDir($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile whereExt($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile whereFilename($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile whereIdentifier($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile whereMine($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile whereOriginalName($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile whereSize($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile whereTravelUserBookingFewoId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile whereUpdatedAt($value)
* @mixin \Eloquent
*/
class TravelUserBookingFile extends Model
{
protected $connection = 'mysql_stern';
protected $table = 'travel_user_booking_files';
protected $casts = [
'travel_user_booking_fewo_id' => 'int',
'size' => 'int'
];
protected $fillable = [
'travel_user_booking_fewo_id',
'identifier',
'filename',
'dir',
'original_name',
'ext',
'mine',
'size'
];
public static $icon_ext = [
'default' => 'fa fa-file',
'pdf'=> 'fa fa-file-pdf',
'jpg'=> 'fa fa-file-image',
'png'=> 'fa fa-file-image',
];
public function travel_user_booking_fewo()
{
return $this->belongsTo(TravelUserBookingFewo::class, 'travel_user_booking_fewo_id');
}
public function getIconExt(){
return isset(self::$icon_ext[$this->ext]) ? self::$icon_ext[$this->ext] : self::$icon_ext['default'];
}
public function getURL($do=false){
return route('storage_file', [$this->id, 'booking_fewo', $do]);
}
public function getPath(){
return \Storage::disk('booking_fewo')->path($this->dir.$this->filename);
}
public function formatBytes($precision = 2)
{
$size = $this->size;
if ($size > 0) {
$size = (int) $size;
$base = log($size) / log(1024);
$suffixes = array(' bytes', ' KB', ' MB', ' GB', ' TB');
return round(pow(1024, $base - floor($base)), $precision) . $suffixes[floor($base)];
} else {
return $size;
}
}
}

View file

@ -0,0 +1,53 @@
<?php
namespace App\Repositories;
use App\Models\BookingFile;
use App\Models\TravelUserBookingFile;
use Response;
class BookingFewoFileRepository extends FileRepository {
protected $booking_fewo_file;
protected $travel_user_booking_fewo_id;
protected $identifier;
public function __construct(TravelUserBookingFile $model){
parent::__construct();
$this->model = $model;
}
public function save(){
$this->booking_fewo_file = TravelUserBookingFile::create([
'travel_user_booking_fewo_id' => $this->travel_user_booking_fewo_id,
'identifier' => $this->identifier,
'filename' => $this->allowed_filename,
'dir' => $this->dir,
'original_name' => $this->originalName,
'ext' => $this->extension,
'mine' => $this->mine,
'size' => $this->size
]);
}
public function response(){
return Response::json([
'error' => false,
'filename' => $this->allowed_filename,
'file_id' =>$this->booking_fewo_file->id,
'file_data' => $this->extension,
'file_icon' => $this->booking_fewo_file->getIconExt(),
'file_format_bytes' => $this->booking_fewo_file->formatBytes(),
'file_url' => $this->booking_fewo_file->getURL(),
'redirect' => '',
'code' => 200
], 200);
}
}

View file

@ -4,6 +4,7 @@ namespace App\Repositories;
use App\Models\Booking;
use App\Models\BookingCountryService;
class BookingRepository extends BaseRepository {
@ -18,4 +19,55 @@ class BookingRepository extends BaseRepository {
return $this->model;
}
public function updateBooking($id, $data){
$this->model = Booking::findOrFail($id);
$fill = [
'paying_out' => $data['paying_out'],
'paying_out_status' => $data['paying_out_status'],
'airline_id' => $data['airline_id'],
'refund' => $data['refund'],
'refund_date' => _reformat_date($data['refund_date']),
'lawyer_date' => _reformat_date($data['lawyer_date']),
'hold' => $data['hold'],
'xx_tkt' => $data['xx_tkt'],
'xx_tkt_date' => _reformat_date($data['xx_tkt_date']),
'filekey' => $data['filekey'],
'is_rail_fly' => isset($data['is_rail_fly']) ? true : false,
'notice' => $data['notice'],
];
$this->model->fill($fill);
$this->model->save();
if(isset($data['country_service'])){
$this->updateCountryService($data['country_service']);
}
return $this->model;
}
public function updateCountryService($country_services){
foreach ($country_services as $country_service_id=>$val){
$booking_country_service = BookingCountryService::where('travel_country_service_id', '=', $country_service_id)
->where('booking_id', '=', $this->model->id)->first();
if(!$booking_country_service){
$booking_country_service = BookingCountryService::create([
'travel_country_service_id' => $country_service_id,
'booking_id' => $this->model->id,
'status' => $val
]);
}else{
$booking_country_service->fill([
'status' => $val
]);
$booking_country_service->save();
}
}
}
}

View file

@ -8,7 +8,7 @@ use Response;
class CMSFileRepository extends FileRepository {
protected $identifier;
protected $data;
public function __construct($model){
parent::__construct();
@ -28,7 +28,8 @@ class CMSFileRepository extends FileRepository {
$data = [
"name" => $this->originalName,
"field" => "file",
"full_text" => \GuzzleHttp\json_encode($file_data),
"identifier" => $this->data['identifier'],
"object" => $file_data, //\GuzzleHttp\json_encode($file_data),
];
$this->model = CMSContent::create($data);
//store in cms old Datebase

View file

@ -0,0 +1,55 @@
<?php
namespace App\Repositories;
use App\Models\CustomerFewoFile;
use Response;
class CustomerFewoFileRepository extends FileRepository {
protected $customer_file;
protected $travel_user_id;
protected $customer_fewo_mail_id;
protected $identifier;
public function __construct(CustomerFewoFile $model){
parent::__construct();
$this->model = $model;
}
public function save(){
$this->customer_file = CustomerFewoFile::create([
'travel_user_id' => $this->travel_user_id,
'customer_fewo_mail_id' => $this->customer_fewo_mail_id,
'identifier' => $this->identifier,
'filename' => $this->allowed_filename,
'dir' => $this->dir,
'original_name' => $this->originalName,
'ext' => $this->extension,
'mine' => $this->mine,
'size' => $this->size
]);
}
public function response(){
return Response::json([
'error' => false,
'original_name' => $this->originalName,
'filename' => $this->allowed_filename,
'file_id' =>$this->customer_file->id,
'file_data' => $this->extension,
'file_icon' => $this->customer_file->getIconExt(),
'file_format_bytes' => $this->customer_file->formatBytes(),
'file_url' => $this->customer_file->getURL(),
'redirect' => '',
'code' => 200
], 200);
}
}

View file

@ -0,0 +1,340 @@
<?php
namespace App\Repositories;
use App\Mail\MailSendInfo;
use App\Models\CMSContent;
use App\Models\CustomerFewoFile;
use App\Models\CustomerFewoMail;
use App\Models\EmailTemplate;
use App\Models\TravelUserBookingFewo;
use App\Services\Placeholder;
use App\Services\Util;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Support\Facades\Mail;
class CustomerFewoMailRepository extends BaseRepository {
public function __construct(CustomerFewoMail $model)
{
$this->model = $model;
}
public function update($data)
{
return $this->model;
}
public function sendAndStore($data){
//send or draft
//$data['action']
if(isset($data['send_mail_to']) && is_array($data['send_mail_to'])) {
//has Attachments
$customer_files = [];
if(isset($data['message_attachment_id']) && is_array($data['message_attachment_id'])){
foreach ($data['message_attachment_id'] as $message_attachment_id){
if($CustomerFile = CustomerFewoFile::find($message_attachment_id)){
$customer_files[] = $CustomerFile;
}
}
}
foreach ($data['send_mail_to'] as $booking_fewo_id => $on) {
$booking_fewo = TravelUserBookingFewo::find($booking_fewo_id);
if ($booking_fewo->travel_user) {
$data['draft'] = (isset($data['action']) && $data['action'] === 'draft' ? true : false);
if(!$data['draft']){
$data['message'] = $this->prepareContent($booking_fewo, $data['message']);
$data['subject'] = $this->prepareContent($booking_fewo, $data['subject']);
}
$reply_id = isset($data['customer_mail_id']) ? $data['customer_mail_id'] : NULL;
$email = isset($data['send_mail_to_mail'][$booking_fewo_id]) ? $data['send_mail_to_mail'][$booking_fewo_id] : $booking_fewo->travel_user->email;
$customer_mail = $this->store($booking_fewo, $data, $email, false, $reply_id);
foreach ($customer_files as $file) {
$file->travel_user_id = $booking_fewo->travel_user_id;
$file->customer_fewo_mail_id = $customer_mail->id;
$file->identifier = 'mail';
$file->save();
}
if(isset($data['action']) && $data['action'] === 'send'){ //not at draft
$this->sendMail($customer_mail);
}
}
}
}
}
public function replyStore($data){
if(isset($data['travel_user_booking_fewo_id']) && $booking_fewo = TravelUserBookingFewo::find($data['travel_user_booking_fewo_id'])) {
//has Attachments
$customer_files = [];
if(isset($data['message_attachment_id']) && is_array($data['message_attachment_id'])){
foreach ($data['message_attachment_id'] as $message_attachment_id){
if($CustomerFile = CustomerFewoFile::find($message_attachment_id)){
$customer_files[] = $CustomerFile;
}
}
}
if ($booking_fewo->travel_user) {
$data['draft'] = (isset($data['action']) && $data['action'] === 'draft' ? true : false);
$mail_from = isset($data['mail_from']) ? $data['mail_from'] : $booking_fewo->travel_user->email;
$sent_at = isset($data['sent_at']) ? \Carbon::parse(str_replace("- ", "", $data['sent_at'])) : now();
$reply_id = isset($data['customer_mail_id']) ? $data['customer_mail_id'] : NULL;
$customer_mail = $this->store($booking_fewo, $data, $mail_from, true, $reply_id, $sent_at);
foreach ($customer_files as $file) {
$file->travel_user_id = $booking_fewo->travel_user_id;
$file->customer_fewo_mail_id = $customer_mail->id;
$file->identifier = 'mail';
$file->save();
}
}
}
}
public function store($booking_fewo, $data, $mail_from, $is_answer = false, $reply_id = NULL, $sent_at=false){
if(isset($data['save_customer_mail_id'])){
$customer_mail = CustomerFewoMail::find($data['save_customer_mail_id']);
$customer_mail->fill([
'travel_user_booking_fewo_id' => $booking_fewo->id,
'travel_user_id' => $booking_fewo->travel_user_id,
'is_answer' => $is_answer,
'reply_id' => $reply_id,
'email' => $mail_from,
'recipient' => isset($data['recipient']) ? Util::_explodeLines($data['recipient']) : null,
'cc' => isset($data['cc']) ? Util::_explodeLines($data['cc']) : null,
'bcc' => isset($data['bcc']) ? Util::_explodeLines($data['bcc']) : null,
'subject' => $data['subject'],
'message' => $data['message'],
'dir' => isset($data['dir']) ? $data['dir'] : 0,
'subdir' => isset($data['subdir']) ? $data['subdir'] : 0,
'draft' => $data['draft'],
'sent_at' => $sent_at ? $sent_at : now(),
])->save();
}else{
$customer_mail = CustomerFewoMail::create([
'travel_user_booking_fewo_id' => $booking_fewo->id,
'travel_user_id' => $booking_fewo->travel_user_id,
'is_answer' => $is_answer,
'reply_id' => $reply_id,
'email' => $mail_from,
'recipient' => isset($data['recipient']) ? Util::_explodeLines($data['recipient']) : null,
'cc' => isset($data['cc']) ? Util::_explodeLines($data['cc']) : null,
'bcc' => isset($data['bcc']) ? Util::_explodeLines($data['bcc']) : null,
'subject' => $data['subject'],
'message' => $data['message'],
'dir' => isset($data['dir']) ? $data['dir'] : 0,
'subdir' => isset($data['subdir']) ? $data['subdir'] : 0,
'draft' => $data['draft'],
'sent_at' => $sent_at ? $sent_at : now(),
]);
}
return $customer_mail;
}
private function sendMail($customer_mail){
$to_mails = [];
if(strpos($customer_mail->email, ',')){
$to_mails = array_map('trim', explode(',', $customer_mail->email));
}else{
$to_mails[] = $customer_mail->email;
}
if($customer_mail->recipient){
$to_mails = array_merge($to_mails, $customer_mail->recipient);
}
$customer_files = $customer_mail->customer_files;
try {
//
Mail::to($to_mails)
->cc($customer_mail->cc ?: [])
->bcc($customer_mail->bcc ?: [])
->send(new MailSendInfo($customer_mail->subject, $customer_mail->message, $customer_files));
}
catch(\Exception $e){
// Never reached
$customer_mail->fail = true;
$customer_mail->error = $e->getMessage();
$customer_mail->save();
return false;
}
$customer_mail->send = true;
$customer_mail->sent_at = now();
$customer_mail->save();
return true;
}
private function prepareContent($booking_fewo, $content){
$content = Placeholder::replaceBookingFewo($booking_fewo, $content);
return $content;
}
private static function prepareContactMails($value){
if(isset($value->customers)){ //&& $value->customer_mail_dir !== NULL
$first_mail = "";
if($value->customer_mail_dir < 10){ // && $value->customer_mail_subdir > 0
$customer_mail_dir = \App\Services\BookingFewo::getCustomerMailDir($value->customer_mail_dir);
$contact_emails = \App\Services\BookingFewo::getCustomerMailEmails($customer_mail_dir, $value->customer_mail_subdir);
if($value->customer_mail_dir == 0){
$value->recipient = Util::_implodeLines($contact_emails);
return $value;
}else{
if($contact_emails && count($contact_emails) > 0) {
$first_mail = array_shift($contact_emails);
if (count($contact_emails) > 0) {
$value->recipient = Util::_implodeLines($contact_emails);
}
}
}
}
foreach ($value->customers as $key=>$val){
$val['email'] = $first_mail;
$value->customers[$key] = $val;
}
}
return $value;
}
public static function loadModal($data)
{
$value = new Collection();
$value->title = "";
$value->subtitle = "";
$value->url = "";
$value->recipient = "";
$value->cc = "";
$value->bcc = "";
$value->lead_title_id = "";
$value->filter_email_templates_directories = EmailTemplate::join('email_template_dirs', 'email_template_dir_id', '=', 'email_template_dirs.id')->get()->pluck('name', 'id')->unique()->toArray();
/*Ansicht*/
if ($data['action'] === "show-customer-mail") {
if (isset($data['customer_mail_id']) && $customer_mail = CustomerFewoMail::find($data['customer_mail_id'])) {
$value->url = $data['url'];
$value->title = "E-Mail Ansicht";
return view("travel.user.booking.mail.modal-show-mail", compact('data', 'value', 'customer_mail'))->render();
}
}
/* neue Mail */
if ($data['action'] === "edit-customer-mail") {
$value->id = $data['id']; //
$customer_mail = CustomerFewoMail::find($value->id);
$booking = $customer_mail->travel_user_booking_fewo;
$value->customer_files = $customer_mail->customer_files;
$value->save_customer_mail_id = $customer_mail->id;
$value->draft = true;
$value->id = $customer_mail->travel_user_booking_fewo_id;
$value->booking = $booking;
$value->show = 'single';
$value->lead_title_id = " - (".$value->booking->invoice_number.")";
$tmp = [];
$tmp['email'] = $booking->travel_user ? $booking->travel_user->email : "";
$tmp['name'] = $booking->travel_user ? $booking->travel_user->first_name . " " . $booking->travel_user->last_name . " | " : "- | ";
$tmp['name'] .= $booking->fewo_lodging_id ? $booking->fewo_lodging->name . " | " : "- | ";
$data['customers'][$booking->id] = $tmp;
$value->customers = $data['customers'];
$value->subject = $customer_mail->subject;
$value->message = $customer_mail->message;
$value->recipient = Util::_implodeLines($customer_mail->recipient);
$value->cc = Util::_implodeLines($customer_mail->cc);
$value->bcc = Util::_implodeLines($customer_mail->bcc);
$value->title = "E-Mail- Nachricht an Kunden senden";
$value->subtitle = "Dem Kunden wird eine E-Mail zugesendet.";
if($customer_mail->reply_id){
$value->title = "E-Mail Antwort an Kunden senden";
$value->subtitle = "Dem Kunden wird eine E-Mail zugesendet, die im System als Antwort gespeichert wird.";
$value->customer_mail = $customer_mail;
}
$value->s_placeholder = "Betreff der E-Mail";
$value->m_placeholder = "Nachricht der E-Mail";
$value->url = $data['url'];
$value->customer_mail_dir = $customer_mail->dir ? $customer_mail->dir : 0;
$value->customer_mail_subdir = $customer_mail->subdir ? $customer_mail->subdir : 0;
return view("travel.user.booking.mail.modal-new-mail", compact('data', 'value'))->render();
}
/* neue Mail */
if ($data['action'] === "new-customer-mail") {
$value->id = "";
$value->draft = false;
$value->lead_title_id = "-";
//singel
if (isset($data['travel_user_booking_fewo_id']) && $booking_fewo = TravelUserBookingFewo::find($data['travel_user_booking_fewo_id'])) {
$value->id = $data['travel_user_booking_fewo_id'];
$value->booking = $booking_fewo;
$value->show = 'single';
$value->draft = true;
$value->lead_title_id = " - (".$value->booking->invoice_number.")";
}else{
//multi
$value->show = 'multi';
}
$value->customers = $data['customers'];
$value->subject = $value->lead_title_id;
$value->message = CMSContent::getContentBySlug('mailvorlage');
$value->s_placeholder = "Betreff der E-Mail";
$value->m_placeholder = "Nachricht der E-Mail";
if(isset($data['customer_mail_id']) && $customer_mail = CustomerFewoMail::find($data['customer_mail_id'])){
$value->subject = "Re: ".Util::_first_replace($customer_mail->subject);
$value->customer_mail = $customer_mail;
}
$value->title = "E-Mail- Nachricht an Kunden senden";
$value->subtitle = "Dem Kunden wird eine E-Mail zugesendet.";
if($data['id'] === 'reply-send'){
$value->title = "E-Mail Antwort an Kunden senden";
$value->subtitle = "Dem Kunden wird eine E-Mail zugesendet, die im System als Antwort gespeichert wird.";
}
$value->url = $data['url'];
$value->customer_mail_dir = isset($data['customer_mail_dir']) ? $data['customer_mail_dir'] : 0;
$value->customer_mail_subdir = isset($data['customer_mail_subdir']) ? $data['customer_mail_subdir'] : 0;
$value = self::prepareContactMails($value);
return view("travel.user.booking.mail.modal-new-mail", compact('data', 'value'))->render();
}
/*Antwort speichern*/
if ($data['action'] === "reply-customer-mail") {
if (isset($data['travel_user_booking_fewo_id']) && $booking_fewo = TravelUserBookingFewo::find($data['travel_user_booking_fewo_id'])) {
$value->id = $data['travel_user_booking_fewo_id'];
$value->draft = false;
$value->booking = $booking_fewo;
$value->message = "";
$value->subject = "";
$value->lead_title_id = " - (".$value->booking->invoice_number.")";
$value->s_placeholder = "Betreff des Kunden";
$value->m_placeholder = "Nachricht des Kunden";
if(isset($data['customer_mail_id']) && $customer_mail = CustomerFewoMail::find($data['customer_mail_id'])){
$value->subject = "Re: ".Util::_first_replace($customer_mail->subject);
$value->customer_mail = $customer_mail;
}
$value->title = "E-Mail Antwort speichern";
$value->subtitle = "Die E-Mail wird im System gespeichert.";
if($data['id'] === 'reply-save'){
$value->subtitle = "Die E-Mail wird im System als Antwort gespeichert.";
}
$value->url = $data['url'];
$value->show = 'reply';
$value->customer_mail_dir = isset($data['customer_mail_dir']) ? $data['customer_mail_dir'] : 0;
$value->customer_mail_subdir = isset($data['customer_mail_subdir']) ? $data['customer_mail_subdir'] : 0;
$value = self::prepareContactMails($value);
return view("travel.user.booking.mail.modal-new-mail", compact('data', 'value'))->render();
}
}
}
}

View file

@ -9,6 +9,7 @@ use App\Models\Booking;
use App\Models\CMSContent;
use App\Models\CustomerFile;
use App\Models\CustomerMail;
use App\Models\EmailTemplate;
use App\Services\Placeholder;
use App\Services\Util;
use Illuminate\Database\Eloquent\Collection;
@ -98,7 +99,6 @@ class CustomerMailRepository extends BaseRepository {
public function store($booking, $data, $mail_from, $is_answer = false, $reply_id = NULL, $sent_at=false){
$data['travel_country_id'] = isset($data['travel_country_id']) && $data['travel_country_id']>0 ? $data['travel_country_id'] : NULL;
if(isset($data['save_customer_mail_id'])){
$customer_mail = CustomerMail::find($data['save_customer_mail_id']);
$customer_mail->fill([
@ -114,7 +114,7 @@ class CustomerMailRepository extends BaseRepository {
'subject' => $data['subject'],
'message' => $data['message'],
'dir' => isset($data['dir']) ? $data['dir'] : 0,
'travel_country_id' => $data['travel_country_id'],
'subdir' => isset($data['subdir']) ? $data['subdir'] : 0,
'draft' => $data['draft'],
'sent_at' => $sent_at ? $sent_at : now(),
])->save();
@ -132,7 +132,7 @@ class CustomerMailRepository extends BaseRepository {
'subject' => $data['subject'],
'message' => $data['message'],
'dir' => isset($data['dir']) ? $data['dir'] : 0,
'travel_country_id' => $data['travel_country_id'],
'subdir' => isset($data['subdir']) ? $data['subdir'] : 0,
'draft' => $data['draft'],
'sent_at' => $sent_at ? $sent_at : now(),
]);
@ -178,36 +178,29 @@ class CustomerMailRepository extends BaseRepository {
}
private static function prepareContactMails($value){
if(isset($value->customers) && $value->customer_mail_dir > 0){
if(isset($value->customers)){ //&& $value->customer_mail_dir !== NULL
$first_mail = "";
if($value->customer_mail_dir == 1 && $value->customer_mail_country > 0){
//Agentur / Land
$travel_country = \App\Models\Sym\TravelCountry::find($value->customer_mail_country);
if($travel_country && $travel_country->contact_emails && count($travel_country->contact_emails) > 0){
$contact_emails = $travel_country->contact_emails;
$first_mail = array_shift($contact_emails);
if(count($contact_emails) > 0){
if($value->customer_mail_dir < 10){ // && $value->customer_mail_subdir > 0
$customer_mail_dir = \App\Services\Booking::getCustomerMailDir($value->customer_mail_dir);
$contact_emails = \App\Services\Booking::getCustomerMailEmails($customer_mail_dir, $value->customer_mail_subdir);
if($value->customer_mail_dir == 0){
$value->recipient = Util::_implodeLines($contact_emails);
return $value;
}else{
if($contact_emails && count($contact_emails) > 0) {
$first_mail = array_shift($contact_emails);
if (count($contact_emails) > 0) {
$value->recipient = Util::_implodeLines($contact_emails);
}
}
}
}
}
if($value->customer_mail_dir == 2){
//Airline
$airline = Airline::whereName('Xemail')->first();
if($airline && $airline->contact_emails && count($airline->contact_emails) > 0){
$contact_emails = $airline->contact_emails;
$first_mail = array_shift($contact_emails);
if(count($contact_emails) > 0){
$value->recipient = Util::_implodeLines($contact_emails);
}
}
}
}
foreach ($value->customers as $key=>$val){
$val['email'] = $first_mail;
$value->customers[$key] = $val;
}
}
return $value;
}
@ -222,6 +215,8 @@ class CustomerMailRepository extends BaseRepository {
$value->cc = "";
$value->bcc = "";
$value->lead_title_id = "";
$value->filter_email_templates_directories = EmailTemplate::join('email_template_dirs', 'email_template_dir_id', '=', 'email_template_dirs.id')->get()->pluck('name', 'id')->unique()->toArray();
/*Ansicht*/
if ($data['action'] === "show-customer-mail") {
if (isset($data['customer_mail_id']) && $customer_mail = CustomerMail::find($data['customer_mail_id'])) {
@ -262,12 +257,14 @@ class CustomerMailRepository extends BaseRepository {
if($customer_mail->reply_id){
$value->title = "E-Mail Antwort an Kunden senden";
$value->subtitle = "Dem Kunden wird eine E-Mail zugesendet, die im System als Antwort gespeichert wird.";
$value->customer_mail = $customer_mail;
}
$value->s_placeholder = "Betreff der E-Mail";
$value->m_placeholder = "Nachricht der E-Mail";
$value->url = $data['url'];
$value->customer_mail_dir = $customer_mail->dir ? $customer_mail->dir : 0;
$value->customer_mail_country = $customer_mail->travel_country_id ? $customer_mail->travel_country_id : 0;
$value->customer_mail_subdir = $customer_mail->subdir ? $customer_mail->subdir : 0;
return view("customer.mail.modal-new-mail", compact('data', 'value'))->render();
@ -307,7 +304,7 @@ class CustomerMailRepository extends BaseRepository {
}
$value->url = $data['url'];
$value->customer_mail_dir = isset($data['customer_mail_dir']) ? $data['customer_mail_dir'] : 0;
$value->customer_mail_country = isset($data['customer_mail_country']) ? $data['customer_mail_country'] : 0;
$value->customer_mail_subdir = isset($data['customer_mail_subdir']) ? $data['customer_mail_subdir'] : 0;
$value = self::prepareContactMails($value);
return view("customer.mail.modal-new-mail", compact('data', 'value'))->render();
@ -337,7 +334,7 @@ class CustomerMailRepository extends BaseRepository {
$value->url = $data['url'];
$value->show = 'reply';
$value->customer_mail_dir = isset($data['customer_mail_dir']) ? $data['customer_mail_dir'] : 0;
$value->customer_mail_country = isset($data['customer_mail_country']) ? $data['customer_mail_country'] : 0;
$value->customer_mail_subdir = isset($data['customer_mail_subdir']) ? $data['customer_mail_subdir'] : 0;
$value = self::prepareContactMails($value);
return view("customer.mail.modal-new-mail", compact('data', 'value'))->render();

View file

@ -23,6 +23,8 @@ class FileRepository extends BaseRepository {
protected $mine;
protected $size;
protected $redirect;
public function __construct(){
@ -95,7 +97,7 @@ class FileRepository extends BaseRepository {
'file_data' => $this->extension,
'mine' => $this->mine,
'size' => $this->size,
'redirect' => '',
'redirect' => $this->redirect,
'code' => 200
], 200);
}

View file

@ -0,0 +1,51 @@
<?php
namespace App\Repositories;
use App\Models\GeneralFile;
use Response;
class GeneralFileRepository extends FileRepository {
protected $general_file;
protected $travel_country_id;
protected $identifier;
public function __construct(GeneralFile $model){
parent::__construct();
$this->model = $model;
}
public function save(){
$this->general_file = GeneralFile::create([
'travel_country_id' => $this->travel_country_id,
'identifier' => $this->identifier,
'filename' => $this->allowed_filename,
'dir' => $this->dir,
'original_name' => $this->originalName,
'ext' => $this->extension,
'mine' => $this->mine,
'size' => $this->size
]);
}
public function response(){
return Response::json([
'error' => false,
'filename' => $this->allowed_filename,
'file_id' =>$this->general_file->id,
'file_data' => $this->extension,
'file_icon' => $this->general_file->getIconExt(),
'file_format_bytes' => $this->general_file->formatBytes(),
'file_url' => $this->general_file->getURL(),
'redirect' => $this->redirect,
'code' => 200
], 200);
}
}

View file

@ -57,11 +57,9 @@ class TravelUserBookingFewoRepository extends BaseRepository {
];
$pdf = PDF::loadView('pdf.invoice_fewo', $data);
$pdf->setPaper('A4', 'portrait');
$path =$model->getInvoicePath();
$filename = $model->getInvoiceFileName();
$pdf->save($path.$filename);
return $path.$filename;
//return $pdf->stream('invoice.pdf');
}

80
app/Services/Booking.php Normal file
View file

@ -0,0 +1,80 @@
<?php
namespace App\Services;
use App\Models\Airline;
use App\Models\CMSContent;
use App\Models\Insurance;
use App\Models\TravelCompany;
class Booking
{
public static function contentFiles(){
$booking_email_files = CMSContent::where('identifier', '=', 'booking-email-file')->get()->sortByDesc('pos')->pluck('slug', 'id');
return $booking_email_files;
}
public static function getCustomerMailDirs(){
$customer_mail_dirs = CMSContent::where('identifier', '=', 'customer-mail-dirs')->get()->sortBy('pos');
return $customer_mail_dirs;
}
public static function getCustomerMailDir($id){
return CMSContent::where('identifier', '=', 'customer-mail-dirs')->where('pos', '=', $id)->first();
}
public static function getCustomerMailName($customer_mail_dir, $mail_dir_id){
switch ($customer_mail_dir->getArrayContent('model')){
case 'TravelCountry':
$model = \App\Models\Sym\TravelCountry::find($mail_dir_id);
break;
case 'Airline':
$model = Airline::find($mail_dir_id);
break;
case 'Insurance':
$model = Insurance::find($mail_dir_id);
break;
case 'TravelCompany':
$model = TravelCompany::find($mail_dir_id);
break;
default:
return '';
}
if($model){
if($customer_mail_dir->getArrayContent('model') === 'TravelCountry'){
return $model->mail_dir_name;
}
return $model->name;
}
return "";
}
public static function getCustomerMailEmails($customer_mail_dir, $mail_dir_id){
switch ($customer_mail_dir->getArrayContent('model')){
case 'TravelCountry':
$model = \App\Models\Sym\TravelCountry::find($mail_dir_id);
break;
case 'Airline':
$model = Airline::find($mail_dir_id);
break;
case 'Insurance':
$model = Insurance::find($mail_dir_id);
break;
case 'TravelCompany':
$model = TravelCompany::find($mail_dir_id);
break;
default:
//direkt from CMSContent
return $customer_mail_dir->getArrayContent('emails');
}
if($model){
return $model->contact_emails;
}
return [];
}
}

View file

@ -0,0 +1,79 @@
<?php
namespace App\Services;
use App\Models\Airline;
use App\Models\CMSContent;
use App\Models\Insurance;
use App\Models\TravelCompany;
class BookingFewo
{
public static function contentFiles(){
$booking_email_files = CMSContent::where('identifier', '=', 'fewo-email-file')->get()->sortByDesc('pos')->pluck('slug', 'id');
return $booking_email_files;
}
public static function getCustomerMailDirs(){
$customer_mail_dirs = CMSContent::where('identifier', '=', 'customer-fewo-mail-dirs')->get()->sortBy('pos');
return $customer_mail_dirs;
}
public static function getCustomerMailDir($id){
return CMSContent::where('identifier', '=', 'customer-fewo-mail-dirs')->where('pos', '=', $id)->first();
}
public static function getCustomerMailName($customer_mail_dir, $mail_dir_id){
switch ($customer_mail_dir->getArrayContent('model')){
case 'TravelCountry':
$model = \App\Models\Sym\TravelCountry::find($mail_dir_id);
break;
case 'Airline':
$model = Airline::find($mail_dir_id);
break;
case 'Insurance':
$model = Insurance::find($mail_dir_id);
break;
case 'TravelCompany':
$model = TravelCompany::find($mail_dir_id);
break;
default:
return '';
}
if($model){
if($customer_mail_dir->getArrayContent('model') === 'TravelCountry'){
return $model->mail_dir_name;
}
return $model->name;
}
return "";
}
public static function getCustomerMailEmails($customer_mail_dir, $mail_dir_id){
switch ($customer_mail_dir->getArrayContent('model')){
case 'TravelCountry':
$model = \App\Models\Sym\TravelCountry::find($mail_dir_id);
break;
case 'Airline':
$model = Airline::find($mail_dir_id);
break;
case 'Insurance':
$model = Insurance::find($mail_dir_id);
break;
case 'TravelCompany':
$model = TravelCompany::find($mail_dir_id);
break;
default:
//direkt from CMSContent
return $customer_mail_dir->getArrayContent('emails');
}
if($model){
return $model->contact_emails;
}
return [];
}
}

View file

@ -1,15 +1,17 @@
<?php
namespace App\Services;
use App\Models\Airline;
use App\Models\CMSAuthor;
use App\Models\CMSContent;
use App\Models\Country;
use App\Models\Draft;
use App\Models\DraftType;
use App\Models\FewoLodging;
use App\Models\IndustrySector;
use App\Models\Interest;
use App\Models\Insurance;
use App\Models\TravelBookingFewoChannel;
use App\Models\TravelClass;
use App\Models\TravelCompany;
use App\Models\TravelCountry;
use App\Models\TravelGuide;
use App\Models\TravelNationality;
@ -250,9 +252,14 @@ class HTMLHelper
return $ret;
}
public static function getTravelUserOptions($id = false, $order = "ASC"){
public static function getTravelUserOptions($id = false, $order = "ASC", $empty=false){
$options = TravelUser::orderBy('id', $order)->get();
$ret = '';
if($empty){
$ret = '<option value="">Bitte wählen</option>\n';
}
foreach ($options as $option){
$attr = ($option->id === $id) ? 'selected="selected"' : '';
$ret .= '<option value="'.$option->id.'" '.$attr.'>'.$option->first_name.' '.$option->last_name.' | '.$option->email.' ('.$option->id.')</option>\n';
@ -260,6 +267,33 @@ class HTMLHelper
return $ret;
}
public static function getCustomerMailDirsOptions(CMSContent $customer_mail_dir, $checked = []){
//$checked = [];
$model = $customer_mail_dir->getArrayContent('model');
switch ($model){
case 'TravelCountry':
$options = \App\Models\Sym\TravelCountry::where('active_backend',1)->get();
break;
case 'Airline':
$options = Airline::where('name_full', 'like', '%Xemail%')->get();
break;
case 'Insurance':
$options = Insurance::where('active',1)->get();
break;
case 'TravelCompany':
$options = TravelCompany::where('active',1)->get();
break;
default:
return '';
}
$ret = '';
foreach ($options as $option){
$attr = (in_array($option->id, $checked)) ? 'selected="selected"' : '';
$ret .= '<option value="'.$option->id.'" '.$attr.'>'.$option->name.'</option>\n';
}
return $ret;
}
public static function getFewoLodgingOptions($id = false){
$options = FewoLodging::all();
$ret = '';

View file

@ -2,6 +2,7 @@
namespace App\Services;
use App\Models\Booking;
use App\Models\TravelUserBookingFewo;
class Placeholder
{
@ -63,6 +64,32 @@ class Placeholder
return $content;
}
public static function replaceBookingFewo(TravelUserBookingFewo $booking_fewo, $content)
{
$dear = $booking_fewo->travel_user->salutation_id == 1 ? 'geehrter' : 'geehrte';
$first_name = $booking_fewo->travel_user->first_name;
$last_name = $booking_fewo->travel_user->last_name;
$title = $booking_fewo->travel_user->title;
$country = "";
$program = $booking_fewo->fewo_lodging_id ? $booking_fewo->fewo_lodging->name : "-";
$salutation = $booking_fewo->travel_user->salutation_id == 1 ? 'Herr' : 'Frau';
$start_date = $booking_fewo->from_date;
$end_date = $booking_fewo->to_date;
$booking_date = $booking_fewo->booking_date;
$airline = "";
$search = [];
$replace = [];
foreach (self::$booking as $key => $value) {
$search[] = $value;
$replace[] = ${$key};
}
$content = str_replace($search, $replace, $content);
$content = preg_replace('/<placeholder.*?>(.*?)<\/placeholder>/', '$1', $content);
$content = preg_replace('/<span contenteditable="false">(.*?)<\/span>/', '$1', $content);
return $content;
}
}

View file

@ -33,6 +33,13 @@ class Util
return \Carbon::parse($date)->format(\Util::formatDateDB());
}
public static function _reformat_date($date, $to = 'date'){
if($to === 'datetime'){
return \Carbon::parse($date)->format('Y-m-d - H:i');
}
return \Carbon::parse($date)->format('Y-m-d');
}
public static function _format_number($value){
return preg_replace("/[^0-9,]/", "", $value);
@ -62,7 +69,7 @@ class Util
if(is_array($value)){
return implode($glue, $value);
}
return "";
return $value;
}
public static function _clean_float($value){
@ -191,5 +198,21 @@ class Util
return isset($mime_types[$mine]) ? $mime_types[$mine] : "";
}
public static function getURLasContent($url, $base=false){
$arrContextOptions=array(
"ssl"=>array(
"verify_peer"=>false,
"verify_peer_name"=>false,
),
);
$content = file_get_contents($url, false, stream_context_create($arrContextOptions));
if($base){
$type = pathinfo($url, PATHINFO_EXTENSION);
$base64Data = base64_encode($content);
return 'data:image/' . $type . ';base64,' . $base64Data;
}
return $content;
}
}

View file

@ -20,10 +20,16 @@ if (! function_exists('make_v2_url')) {
if (! function_exists('_format_date')) {
function _format_date($date, $to = 'date')
{
return \App\Services\Util::_format_date($date, $to);
return $date ? \App\Services\Util::_format_date($date, $to) : null;
}
}
if (! function_exists('_reformat_date')) {
function _reformat_date($date, $to = 'date')
{
return $date ? \App\Services\Util::_reformat_date($date, $to) : null;
}
}
if (! function_exists('array_to_json')) {
function array_to_json($value)
@ -32,7 +38,6 @@ if (! function_exists('array_to_json')) {
}
}
if (! function_exists('last_array_element')) {
function last_array_element($value)
{
@ -86,4 +91,14 @@ if (! function_exists('get_file_last_time')) {
}
return date("Ymd-i", time());
}
}
if (! function_exists('my_count')) {
function my_count($value)
{
if ($value && is_array($value)) {
return count($value);
}
return 0;
}
}

View file

@ -47,12 +47,13 @@
43 => 'App\\Providers\\EventServiceProvider',
44 => 'App\\Providers\\RouteServiceProvider',
45 => 'Barryvdh\\LaravelIdeHelper\\IdeHelperServiceProvider',
46 => 'Jenssegers\\Date\\DateServiceProvider',
47 => 'Collective\\Html\\HtmlServiceProvider',
48 => 'Intervention\\Image\\ImageServiceProvider',
49 => 'Maatwebsite\\Excel\\ExcelServiceProvider',
50 => 'Yajra\\DataTables\\DataTablesServiceProvider',
51 => 'Reliese\\Coders\\CodersServiceProvider',
46 => 'Barryvdh\\DomPDF\\ServiceProvider',
47 => 'Jenssegers\\Date\\DateServiceProvider',
48 => 'Collective\\Html\\HtmlServiceProvider',
49 => 'Intervention\\Image\\ImageServiceProvider',
50 => 'Maatwebsite\\Excel\\ExcelServiceProvider',
51 => 'Yajra\\DataTables\\DataTablesServiceProvider',
52 => 'Reliese\\Coders\\CodersServiceProvider',
),
'eager' =>
array (
@ -87,11 +88,12 @@
28 => 'App\\Providers\\EventServiceProvider',
29 => 'App\\Providers\\RouteServiceProvider',
30 => 'Barryvdh\\LaravelIdeHelper\\IdeHelperServiceProvider',
31 => 'Jenssegers\\Date\\DateServiceProvider',
32 => 'Intervention\\Image\\ImageServiceProvider',
33 => 'Maatwebsite\\Excel\\ExcelServiceProvider',
34 => 'Yajra\\DataTables\\DataTablesServiceProvider',
35 => 'Reliese\\Coders\\CodersServiceProvider',
31 => 'Barryvdh\\DomPDF\\ServiceProvider',
32 => 'Jenssegers\\Date\\DateServiceProvider',
33 => 'Intervention\\Image\\ImageServiceProvider',
34 => 'Maatwebsite\\Excel\\ExcelServiceProvider',
35 => 'Yajra\\DataTables\\DataTablesServiceProvider',
36 => 'Reliese\\Coders\\CodersServiceProvider',
),
'deferred' =>
array (

718
composer.lock generated

File diff suppressed because it is too large Load diff

View file

@ -172,6 +172,7 @@ return [
App\Providers\RouteServiceProvider::class,
Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class,
Barryvdh\DomPDF\ServiceProvider::class,
Jenssegers\Date\DateServiceProvider::class,
Collective\Html\HtmlServiceProvider::class,
Intervention\Image\ImageServiceProvider::class,
@ -239,6 +240,7 @@ return [
'Util' => App\Services\Util::class,
'Excel' => Maatwebsite\Excel\Facades\Excel::class,
'DataTables' => Yajra\DataTables\Facades\DataTables::class,
'PDF' => Barryvdh\DomPDF\Facade::class,
],

5
config/booking.php Executable file
View file

@ -0,0 +1,5 @@
<?php
return [
];

View file

@ -60,12 +60,30 @@ return [
'url' => env('APP_URL').'/storage/customer',
'visibility' => 'public',
],
'travel_user' => [
'driver' => 'local',
'root' => storage_path('app/travel_user'),
'url' => env('APP_URL').'/storage/travel_user',
'visibility' => 'public',
],
'booking' => [
'driver' => 'local',
'root' => storage_path('app/booking'),
'url' => env('APP_URL').'/storage/booking',
'visibility' => 'public',
],
'general' => [
'driver' => 'local',
'root' => storage_path('app/general'),
'url' => env('APP_URL').'/storage/general',
'visibility' => 'public',
],
'booking_fewo' => [
'driver' => 'local',
'root' => storage_path('app/booking_fewo'),
'url' => env('APP_URL').'/storage/booking_fewo',
'visibility' => 'public',
],
'fewo_invoices' => [
'driver' => 'local',
'root' => storage_path('app/fewo/invoices'),

View file

@ -33,7 +33,7 @@ return [
2 => [
'sua-st' => ['name' => 'SUPERADMIN > Einstellungen' , 'color' => 'superadmin'],
'sua-st-al' => ['name' => 'SUPERADMIN > Einstellungen > Airline' , 'color' => 'superadmin'],
'sua-st-et' => ['name' => 'SUPERADMIN > Einstellungen > E-Mail Vorlagen' , 'color' => 'superadmin'],
'sua-st-em' => ['name' => 'SUPERADMIN > Einstellungen > E-Mails' , 'color' => 'superadmin'],
'sua-st-ke' => ['name' => 'SUPERADMIN > Einstellungen > Keywords' , 'color' => 'superadmin'],
'sua-st-sp' => ['name' => 'SUPERADMIN > Einstellungen > Leistungsträger' , 'color' => 'superadmin'],
'sua-st-tn' => ['name' => 'SUPERADMIN > Einstellungen > Nationalitäten' , 'color' => 'superadmin'],
@ -46,7 +46,6 @@ return [
'sua-re-bo' => ['name' => 'SUPERADMIN > Export > Buchungen' , 'color' => 'superadmin'],
'sua-re-pp' => ['name' => 'SUPERADMIN > Export > Leistungsträger' , 'color' => 'superadmin'],
'sua-ur-rt' => ['name' => 'SUPERADMIN > User Rechte' , 'color' => 'danger'],
'cms-cn-co' => ['name' => 'ADMIN CMS > Inhalte > Länder' , 'color' => 'secondary'],
],

View file

@ -21,13 +21,15 @@ class CreateTravelCountryTable extends Migration
$table->string('name')->nullable();
$table->string('slug')->nullable();
$table->string('mail_dir_name')->nullable();
$table->text('html_information')->nullable();
$table->string('text_before')->nullable();
$table->string('text_after')->nullable();
$table->string('contact_lands')->nullable();
$table->string('mail_dirs')->nullable();
$table->string('contact_headline')->nullable();
$table->text('contact_text_1')->nullable();
$table->text('contact_text_2')->nullable();

View file

@ -18,6 +18,7 @@ class CreateCMSContentsTable extends Migration
$table->string('name');
$table->string('slug')->index()->unique();
$table->string('identifier')->nullable()->index();
$table->string('field', 10)->index();
@ -26,6 +27,9 @@ class CreateCMSContentsTable extends Migration
$table->integer('integer')->nullable();
$table->decimal('decimal')->nullable();
$table->unsignedTinyInteger('pos')->default(0);
$table->timestamps();
});
}

View file

@ -33,12 +33,11 @@ class CreateCustomerMailsTable extends Migration
$table->text('message')->nullable();
$table->unsignedTinyInteger('dir')->default(0);
$table->bigInteger('travel_country_id')->nullable();
$table->bigInteger('subdir')->nullable();
$table->boolean('draft')->default(false);
$table->boolean('important')->default(false);
$table->boolean('send')->default(false);
$table->boolean('fail')->default(false);
$table->text('error')->nullable();
@ -64,12 +63,6 @@ class CreateCustomerMailsTable extends Migration
$table->foreign('reply_id')
->references('id')
->on('customer_mails');
$table->foreign('travel_country_id')
->references('id')
->on('travel_country');
});
}

View file

@ -0,0 +1,35 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateEmailTemplateDirsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('email_template_dirs', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('color', 10)->nullable();
$table->boolean('active')->default(true);
$table->unsignedTinyInteger('pos')->default(0);
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('email_template_dirs');
}
}

View file

@ -15,10 +15,16 @@ class CreateEmailTemplatesTable extends Migration
{
Schema::create('email_templates', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('subject', 255);
$table->unsignedInteger('email_template_dir_id')->nullable();
$table->string('name', 255);
$table->string('subject', 255)->nullable();
$table->text('message')->nullable();
$table->boolean('active')->default(true);
$table->timestamps();
$table->foreign('email_template_dir_id')
->references('id')
->on('email_template_dirs');
});
}

View file

@ -0,0 +1,74 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateCustomerFewoMailsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::connection('mysql_stern')->create('customer_fewo_mails', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('travel_user_booking_fewo_id');
$table->unsignedInteger('travel_user_id');
$table->boolean('is_answer')->default(false);
$table->unsignedInteger('reply_id');
$table->string('email', 255);
$table->text('recipient')->nullable();
$table->text('cc')->nullable();
$table->text('bcc')->nullable();
$table->string('subject', 255);
$table->text('message')->nullable();
$table->unsignedTinyInteger('dir')->default(0);
$table->bigInteger('subdir')->nullable();
$table->boolean('draft')->default(false);
$table->boolean('important')->default(false);
$table->boolean('send')->default(false);
$table->boolean('fail')->default(false);
$table->text('error')->nullable();
$table->timestamp('sent_at')->nullable();
$table->timestamp('scheduled_at')->nullable();
$table->timestamp('delivered_at')->nullable();
$table->timestamps();
$table->foreign('travel_user_booking_fewo_id')
->references('id')
->on('travel_user_booking_fewos');
$table->foreign('travel_user_id')
->references('id')
->on('travel_users');
$table->foreign('reply_id')
->references('id')
->on('customer_fewo_mails');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::connection('mysql_stern')->dropIfExists('customer_fewo_mails');
}
}

View file

@ -0,0 +1,50 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateCustomerFewoFilesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::connection('mysql_stern')->create('customer_fewo_files', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('travel_user_id')->nullable();
$table->unsignedInteger('customer_fewo_mail_id')->nullable();
$table->string('identifier')->index();
$table->string('filename');
$table->string('dir');
$table->string('original_name');
$table->string('ext');
$table->string('mine');
$table->unsignedInteger('size');
$table->timestamps();
$table->foreign('travel_user_id')
->references('id')
->on('travel_users');
$table->foreign('customer_fewo_mail_id')
->references('id')
->on('customer_fewo_mails');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::connection('mysql_stern')->dropIfExists('customer_fewo_files');
}
}

View file

@ -0,0 +1,46 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateTravelUserBookingFilesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::connection('mysql_stern')->create('travel_user_booking_files', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('travel_user_booking_fewo_id')->nullable();
$table->string('identifier')->index();
$table->string('filename');
$table->string('dir');
$table->string('original_name');
$table->string('ext');
$table->string('mine');
$table->unsignedInteger('size');
$table->timestamps();
$table->foreign('travel_user_booking_fewo_id')
->references('id')
->on('travel_user_booking_fewos');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::connection('mysql_stern')->dropIfExists('travel_user_booking_files');
}
}

View file

@ -0,0 +1,42 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateGeneralFilesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('general_files', function (Blueprint $table) {
$table->increments('id');
$table->bigInteger('travel_country_id')->nullable();
$table->string('identifier')->index();
$table->string('filename');
$table->string('dir');
$table->string('original_name');
$table->string('ext');
$table->string('mine');
$table->unsignedInteger('size');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('general_files');
}
}

View file

@ -0,0 +1,41 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateTravelCountryServicesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('travel_country_services', function (Blueprint $table) {
$table->increments('id');
$table->bigInteger('travel_country_id')->nullable()->index();
$table->integer('crm_travel_country_id')->nullable();
$table->string('name')->nullable()->index();
$table->text('description')->nullable();
$table->boolean('active')->default(true);
$table->unsignedTinyInteger('pos')->default(0);
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('travel_country_services');
}
}

View file

@ -0,0 +1,45 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateBookingCountryServicesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('booking_country_services', function (Blueprint $table) {
$table->bigIncrements('id');
$table->unsignedInteger('travel_country_service_id')->index();
$table->bigInteger('booking_id')->index();
$table->unsignedTinyInteger('status')->default(0);
$table->timestamps();
$table->foreign('travel_country_service_id', 'booking_country_services_tcsid')
->references('id')
->on('travel_country_services');
$table->foreign('booking_id')
->references('id')
->on('booking');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('booking_travel_country_services');
}
}

View file

@ -8,7 +8,7 @@ use Illuminate\Database\Migrations\Migration;
* Migration auto-generated by Sequel Pro Laravel Export (1.4.1)
* @see https://github.com/cviebrock/sequel-pro-laravel-export
*/
class CreateSalutationTable extends Migration
class CreateTravelCountryTable extends Migration
{
/**
* Run the migrations.
@ -17,13 +17,30 @@ class CreateSalutationTable extends Migration
*/
public function up()
{
Schema::create('salutation', function (Blueprint $table) {
Schema::create('travel_country', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name', 255);
$table->string('mail_dir_name', 255)->nullable();
$table->tinyInteger('is_customer_country')->nullable()->default(0);
$table->tinyInteger('active_backend')->nullable()->default(0);
$table->string('contact_lands', 255)->nullable();
$table->string('mail_dirs', 255)->nullable();
$table->string('contact_headline', 255)->nullable();
$table->text('contact_text_1')->nullable();
$table->text('contact_text_2')->nullable();
$table->text('contact_text_3')->nullable();
$table->text('contact_text_4')->nullable();
$table->text('contact_footer')->nullable();
$table->text('contact_emails')->nullable();
});
}
/**
@ -33,6 +50,6 @@ class CreateSalutationTable extends Migration
*/
public function down()
{
Schema::dropIfExists('salutation');
Schema::dropIfExists('travel_country');
}
}

View file

@ -8,7 +8,7 @@ use Illuminate\Database\Migrations\Migration;
* Migration auto-generated by Sequel Pro Laravel Export (1.4.1)
* @see https://github.com/cviebrock/sequel-pro-laravel-export
*/
class CreateTravelCountryTable extends Migration
class CreateSalutationTable extends Migration
{
/**
* Run the migrations.
@ -17,13 +17,18 @@ class CreateTravelCountryTable extends Migration
*/
public function up()
{
Schema::create('travel_country', function (Blueprint $table) {
Schema::create('salutation', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name', 255);
$table->tinyInteger('is_customer_country')->nullable()->default(false);
$table->boolean('active_backend')->nullable()->default(false);
});
}
/**
@ -33,6 +38,6 @@ class CreateTravelCountryTable extends Migration
*/
public function down()
{
Schema::dropIfExists('travel_country');
Schema::dropIfExists('salutation');
}
}

View file

@ -470,3 +470,44 @@ div.dropzone.dz-drag-hover {
.ql-picker.ql-placeholder > span.ql-picker-options > span.ql-picker-item::before {
content: attr(data-label);
}
.nav-tabs-top > .nav .nav-link{
line-height: 1.3em;
background-color: rgba(24, 28, 33, 0.10);
border-color: rgba(24, 28, 33, 0.15);
}
.nav-tabs-top > .nav .nav-link:hover{
line-height: 1.3em;
border-color: rgba(24, 28, 33, 0.25);
}
.nav-tabs-top > .nav .nav-link.active {
color: #66500f;
background-color: #ffc926;
font-weight: bold;
border-color: rgba(24, 28, 33, 0.25);
}
.nav-tabs-top > .nav {
padding-left: 0.25em;
padding-right: 0.25em;
}
.nav-tabs-top > .tab-content {
border: none;
}
@media (min-width: 768px) {
#filter_email_templates_directory {
position: absolute;width: 50%;z-index: 999;margin-top: -5px;
}
}
.no-break {
white-space: nowrap;
}
.card-header,
.card-footer,
.card hr {
border-color: rgba(24, 28, 33, 0.15);
}

View file

@ -10,15 +10,16 @@ body {
padding: 0;
color: #000;
background: #fff;
font-size: 10pt;
line-height: 1.2em;
font-size: 9.5pt;
line-height: 1.15em;
font-family: Helvetica;
}
table {
border: none;
}
strong {
font-weight: 600;
font-weight: bold;
}
@page {
@ -35,7 +36,7 @@ strong {
}
.font-weight-bold {
font-weight: 600;
font-weight: bold;
}
#logo_box {
position: absolute;
@ -57,7 +58,7 @@ strong {
width: 100mm;
height: 45mm;
z-index: 1;
font-size: 11pt;
font-size: 10pt;
color:#000;
}
#address_box #address_back{

View file

@ -140,7 +140,7 @@ $(function () {
$.each(button.data(), function(index, value){
data[index] = value;
});
//console.log(data);
// console.log(data);
loadModalInner(this, data);
});
@ -173,7 +173,7 @@ $(function () {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
success: function(data) {
// console.log(data);
// console.log(data);
$(data.response.target).find('.modal-dialog').html(data.html);
$(data.response.target).find('.selectpicker').selectpicker('refresh');
initModalInner();
@ -371,15 +371,25 @@ jQuery(document).ready(function() {
});
});
jQuery.each(jQuery('textarea.autoExpand'), function() {
var offset = this.offsetHeight - this.clientHeight;
var resizeTextarea = function(el) {
var resizeTextarea = function(el) {
if(el.scrollHeight > 0){
var offset = el.offsetHeight - el.clientHeight;
jQuery(el).css('height', 'auto').css('height', el.scrollHeight + offset);
};
jQuery(this).on('keyup input', function() { resizeTextarea(this); }).removeClass('autoExpand');
}
$(this).removeClass('autoExpand');
};
jQuery.each(jQuery('textarea.autoExpand'), function() {
jQuery(this).on('keyup input', function() { resizeTextarea(this); });
jQuery(this).on('focus input', function() { resizeTextarea(this); });
resizeTextarea(this);
});
jQuery('.collapse').on('shown.bs.collapse', function () {
$('#'+$(this).attr('id')).find('textarea.autoExpand').each(function () {
resizeTextarea(this);
});
})
$(function() {
$('.datepicker-range').datepicker({
@ -392,7 +402,6 @@ $(function() {
});
$('.datepicker-base').datepicker({
calendarWeeks: true,
todayBtn: 'linked',

View file

@ -0,0 +1,36 @@
<div class="modal-content">
{!! Form::open(['url' => $data['url'], 'class' => '', 'enctype' => 'multipart/form-data']) !!}
{{ Form::hidden('travel_county_service_id', $data['id']) }}
{{ Form::hidden('back', $data['back']) }}
<div class="modal-header">
<h5 class="modal-title">
Länderleistungen Agenturleistungen
<span class="font-weight-light">hinzufügen</span>
</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">×</button>
</div>
<div class="modal-body">
<div class="form-group">
<label for="name" class="form-label">{{ __('Name') }}</label>
{{ Form::text('name', $value->name, array('placeholder'=>__('Name'), 'class'=>'form-control', 'required')) }}
</div>
<div class="form-group ">
<label for="full_text" class="form-label">{{ __('Beschreibung') }}</label>
{{ Form::textarea('description', $value->description, array('Beschreibung'=>__('Beschreibung'), 'class'=>'form-control', 'rows'=>2)) }}
</div>
<div class="form-group">
<label for="pos" class="form-label">{{ __('Position') }}</label>
{{ Form::text('pos', $value->pos, array('class'=>'form-control')) }}
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">schließen</button>
<button type="submit" class="btn btn-primary" name="update-action" value="save-travel-county-service">speichern</button>
</div>
{!! Form::close() !!}
</div>
<script type="text/javascript">
</script>

View file

@ -0,0 +1,98 @@
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">
{{ __('Datei') }}
<span class="font-weight-light">hinzufügen</span>
</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">×</button>
</div>
<div class="modal-body">
<div class="form-row show-content-file">
<div class="col-12">
<div class="alert alert-danger alert-dismissable" style="display:none;"></div>
</div>
<div class="col-12 mt-2 mb-4">
{!! Form::open([ 'url' => $data['url'], 'method' => 'post', 'files' => true, 'enctype' => 'multipart/form-data', 'class' => 'dropzone', 'id' => 'uploadModalFile' ]) !!}
<input type="hidden" name="id" value="{{ $data['id'] }}">
<input type="hidden" name="action" value="{{ $data['action'] }}">
<input type="hidden" name="back" value="{{ $data['back'] }}">
<div class="fallback">
<input name="file" type="file" multiple>
</div>
{!! Form::close() !!}
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">schließen</button>
</div>
</div>
<script type="text/javascript">
$( document ).ready(function() {
Dropzone.autoDiscover = false;
$("#uploadModalFile").dropzone({
uploadMultiple: false,
parallelUploads: 1,
maxFilesize: 32,
addRemoveLinks: true,
dictDefaultMessage: '<i class="ion ion-ios-cloud-upload "></i>Hier klicken, oder Datei hier reinziehen (Drag&Drop)',
dictFallbackMessage: 'Ihr Browser unterstützt Drag&Drop Dateiuploads nicht',
dictFallbackText: 'Benutzen Sie das Formular um Ihre Dateien hochzuladen',
dictFileTooBig: "Die Datei ist zu groß. Die maximale Dateigröße beträgt 32 MB",
dictInvalidFileType: 'Eine Datei dieses Typs kann nicht hochgeladen werden',
dictResponseError: "Der Server hat ihre Anfrage mit Status error abgelehnt",
dictCancelUpload: 'Hochladen abbrechen',
dictCancelUploadConfirmation: null,
dictRemoveFile: 'Datei entfernen',
dictMaxFilesExceeded: 'Sie können keine weiteren Dateien mehr hochladen',
acceptedFiles: "image/jpeg,image/pjpeg,image/png,image/gif,application/pdf,text/plain",
// The setting up of the dropzone
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
init:function() {
this.on("removedfile", function(file) {
var _ele = $('.alert-danger');
_ele.fadeOut();
});
this.on("addedfile", function (file) {
var _ele = $('.alert-danger');
_ele.fadeOut();
});
},
error: function(file, response) {
var message
if($.type(response) === "string")
message = response; //dropzone sends it's own error messages in string
else
message = response.message;
var _ele = $('.alert-danger');
_ele.fadeIn();
console.log(message);
_ele.text(message);
},
success: function(file, response) {
console.log(file);
console.log(response);
if(response.error === false){
if(response.redirect){
window.location.href = response.redirect
}else{
//window.location.href = window.location.href; //This is a possibility
window.location.reload(); //Another possiblity
}
}
}
});
});
</script>

View file

@ -41,33 +41,94 @@
<label class="form-label" for="title">{{ __('Reisetitel') }}</label>
{{ Form::text('title', $booking->title, array('placeholder'=>__('Reisetitel'), 'class'=>'form-control', 'id'=>'title', 'readonly')) }}
</div>
<div class="col-12">
<hr>
<h5 class="card-title mt-3 mb-1">Status</h5>
<hr class="mt-0">
</div>
<div class="form-group col-sm-6 col-md-3">
<label class="form-label" for="paying_out">{{ __('K-Wunsch') }}</label>
{{ Form::select('paying_out', \App\Models\Booking::$paying_out_types , $booking->paying_out, array('class'=>'custom-select', 'id'=>'paying_out' )) }}
</div>
<div class="form-group col-sm-6 col-md-3">
<label class="form-label" for="paying_out_status">{{ __('KW-Status') }}</label>
{{ Form::select('paying_out_status', \App\Models\Booking::$paying_out_status_types , $booking->paying_out_status, array('class'=>'custom-select', 'id'=>'paying_out_status' )) }}
</div>
<div class="form-group col-sm-6 col-md-3">
<label class="form-label" for="refund">{{ __('Refund') }}</label>
{{ Form::select('refund', \App\Models\Booking::$refund_types , $booking->refund, array('class'=>'custom-select', 'id'=>'refund' )) }}
</div>
<div class="form-group col-sm-6 col-md-3">
<label class="form-label" for="refund_date">{{ __('Refund Datum') }}</label>
{{ Form::text('refund_date', _format_date($booking->refund_date), array('placeholder'=>__('Refund Datum'), 'class'=>'form-control datepicker-base', 'id'=>'refund_date')) }}
</div>
<div class="form-group col-sm-6 col-md-3">
<label class="form-label" for="xx_tkt">{{ __('XX TKT') }}</label>
{{ Form::select('xx_tkt', \App\Models\Booking::$xx_tkt_types , $booking->xx_tkt, array('class'=>'custom-select', 'id'=>'xx_tkt' )) }}
</div>
<div class="form-group col-sm-6 col-md-3">
<label class="form-label" for="xx_tkt_date">{{ __('XX TKT Datum') }}</label>
{{ Form::text('xx_tkt_date', _format_date($booking->xx_tkt_date), array('placeholder'=>__('XX TKT Datum'), 'class'=>'form-control datepicker-base', 'id'=>'xx_tkt_date')) }}
</div>
<div class="form-group col-sm-6 col-md-3">
<label class="form-label" for="hold">{{ __('Hold') }}</label>
{{ Form::select('hold', \App\Models\Booking::$hold_types , $booking->hold, array('class'=>'custom-select', 'id'=>'hold' )) }}
</div>
<div class="form-group col-sm-6 col-md-3">
<label class="form-label" for="airline_id">{{ __('Airline') }}</label>
{{ Form::select('airline_id', \App\Models\Airline::getAsNameIdArray() , $booking->airline_id, array('class'=>'custom-select', 'id'=>'airline_id' )) }}
</div>
<div class="form-group col-sm-6 col-md-3">
<label class="form-label" for="filekey">{{ __('Filekey') }}</label>
{{ Form::text('filekey', $booking->filekey, array('placeholder'=>__('Filekey'), 'class'=>'form-control', 'id'=>'filekey')) }}
</div>
<div class="form-group col-sm-6 col-md-3">
<label class="form-label" for="">&nbsp;</label>
<label class="custom-control custom-checkbox mt-2" style="margin-right: 20px;">
{!! Form::checkbox('is_rail_fly', 1, $booking->is_rail_fly, ['class'=>'custom-control-input', 'id'=>'is_rail_fly']) !!}
<span class="custom-control-label">{{__('Rail & Fly')}}</span>
</label>
</div>
<div class="form-group col-sm-6 col-md-3">
<label class="form-label" for="lawyer_date">{{ __('Anwaltsfrist') }}</label>
{{ Form::text('lawyer_date', _format_date($booking->lawyer_date), array('placeholder'=>__('Anwaltsfrist'), 'class'=>'form-control datepicker-base', 'id'=>'lawyer_date')) }}
</div>
<div class="form-group col-sm-6 col-md-4">
<label class="form-label" for="paying_out">{{ __('K-Wunsch') }}</label>
{{ Form::text('paying_out', $booking->getPayingOutType(), array('placeholder'=>__('K-Wunsch'), 'class'=>'form-control', 'id'=>'paying_out', 'readonly')) }}
<div class="form-group col-sm-12 col-md-12">
<label class="form-label" for="notice">{{ __('Bemerkung') }}</label>
{{ Form::text('notice', $booking->notice, array('placeholder'=>__('Bemerkung'), 'class'=>'form-control', 'id'=>'notice')) }}
</div>
<div class="form-group col-sm-6 col-md-4">
<label class="form-label" for="paying_out_status">{{ __('KW-Status') }}</label>
{{ Form::text('paying_out_status', $booking->getPayingOutStatusType(), array('placeholder'=>__('KW-Status'), 'class'=>'form-control', 'id'=>'paying_out_status', 'readonly')) }}
<div class="col-12">
<h5 class="card-title mt-3 mb-1">Leistungen</h5>
<hr class="mt-0">
</div>
<div class="form-group col-sm-6 col-md-4">
<label class="form-label" for="refund">{{ __('Refund') }}</label>
{{ Form::text('refund', $booking->getRefundType(), array('placeholder'=>__('Refund'), 'class'=>'form-control', 'id'=>'refund', 'readonly')) }}
</div>
<div class="form-group col-sm-6 col-md-4">
<label class="form-label" for="refund_date">{{ __('Refund Datum') }}</label>
{{ Form::text('refund_date', _format_date($booking->refund_date), array('placeholder'=>__('Refund Datum'), 'class'=>'form-control', 'id'=>'refund_date', 'readonly')) }}
</div>
<div class="form-group col-sm-6 col-md-4">
<label class="form-label" for="xx_tkt">{{ __('XX TKT') }}</label>
{{ Form::text('xx_tkt', $booking->getXxTktType(), array('placeholder'=>__('XX TKT'), 'class'=>'form-control', 'id'=>'xx_tkt', 'readonly')) }}
</div>
<div class="form-group col-sm-6 col-md-4">
<label class="form-label" for="xx_tkt_date">{{ __('XX TKT Datum') }}</label>
{{ Form::text('xx_tkt_date', _format_date($booking->xx_tkt_date), array('placeholder'=>__('XX TKT Datum'), 'class'=>'form-control', 'id'=>'xx_tkt_date', 'readonly')) }}
@foreach($booking->travel_country->getContactLandsModels() as $TravelCountry)
@if($TravelCountry->stern_travel_country)
@foreach($TravelCountry->stern_travel_country->travel_country_services as $travel_country_service)
<div class="col-sm-6 col-md-4">
<label class="switcher switcher-on-off">
{{ Form::hidden('country_service['.$travel_country_service->id.']', 0) }}
{{ Form::checkbox('country_service['.$travel_country_service->id.']', 1, \App\Models\BookingCountryService::getStatus($travel_country_service->id, $booking->id), array('class'=>'switcher-input')) }}
<span class="switcher-indicator">
<span class="switcher-yes"><span class="ion ion-md-checkmark"></span></span>
<span class="switcher-no"><span class="ion ion-md-close"></span></span>
</span>
<span class="switcher-label">{{ $travel_country_service->name }}</span>
</label>
</div>
@endforeach
@endif
@endforeach
<div class="col-12">
<hr>
<div class="text-left mt-3">
<button type="submit" name="action" value="update_booking" class="btn btn-sm btn-secondary">{{ __('save changes') }}</button>&nbsp;
<a href="{{route('bookings')}}" class="btn btn-sm btn-default">{{ __('zur Übersicht') }}</a>
</div>
</div>
</div>

View file

@ -180,27 +180,59 @@
@endforeach
@endif
@if($security_certificate = \App\Models\CMSContent::getModelBySlug('sicherungsschein-nach-sis651r-pdf'))
<tr>
<th scope="row">{{$booking_files_count++}}</th>
<td>
<a target="_blank" href="{{ $security_certificate->getURL() }}" class="badge badge-md badge-next">
<i class="fa fa-file-pdf mr-1"></i> {{$security_certificate->name}}
</a>
</td>
<td>
{{ $security_certificate->formatBytes() }}
</td>
<td>{{\App\Services\Util::_format_date($security_certificate->created_at, 'date')}}</td>
<td>
<a href="{{ $security_certificate->getURL('download') }}" class="btn btn-xs btn-default"
title="Download" data-placement="left" rel="tooltip">
<i class="fa fa-download"></i>
</a>
</td>
</tr>
@endif
@foreach(\App\Services\Booking::contentFiles() as $content_file)
@if($file = \App\Models\CMSContent::getModelBySlug($content_file))
<tr>
<th scope="row">{{$booking_files_count++}}</th>
<td>
<a target="_blank" href="{{ $file->getURL() }}" class="badge badge-md badge-next">
<i class="fa fa-file-pdf mr-1"></i> {{$file->name}}
</a>
</td>
<td>
@if(Auth::user()->isPermission('sua-st-em'))
<a href="{{route('admin_settings_emails', ['settings'])}}">E-Mails</a> |
@endif
{{ $file->formatBytes() }}
</td>
<td>{{\App\Services\Util::_format_date($file->created_at, 'date')}}</td>
<td>
<a href="{{ $file->getURL('download') }}" class="btn btn-xs btn-default"
title="Download" data-placement="left" rel="tooltip">
<i class="fa fa-download"></i>
</a>
</td>
</tr>
@endif
@endforeach
@foreach($booking->travel_country->getContactLandsModels() as $TravelCountry)
@if($TravelCountry->stern_travel_country)
@foreach($TravelCountry->stern_travel_country->general_files as $general_files)
<tr>
<th scope="row">{{$booking_files_count++}}</th>
<td>
<a target="_blank" href="{{ $general_files->getURL() }}" class="badge badge-md badge-info">
<i class="{{$general_files->getIconExt()}} mr-1"></i> {{$general_files->original_name}}
</a>
</td>
<td>
@if(Auth::user()->isPermission('sua-st-co'))
<a href="{{route('admin_settings_travel_country_detail', [$TravelCountry->stern_travel_country->id, 'data'])}}">{{$TravelCountry->stern_travel_country->name }}</a> |
@endif
{{ $general_files->mine }} | {{ $general_files->formatBytes() }}
</td>
<td>{{\App\Services\Util::_format_date($general_files->created_at, 'date')}}</td>
<td>
<a href="{{ $general_files->getURL('download') }}" class="btn btn-xs btn-default"
title="Download" data-placement="left" rel="tooltip">
<i class="fa fa-download"></i>
</a>
</td>
</tr>
@endforeach
@endif
@endforeach
@if($booking->booking_files)
@foreach($booking->booking_files as $booking_file)
@ -220,6 +252,8 @@
title="Download" data-placement="left" rel="tooltip">
<i class="fa fa-download"></i>
</a>
<a class="ml-2 btn btn-xs btn-danger" href="{{ route('booking_delete', [$booking_file->id, 'booking_file']) }}" onclick="return confirm('{{__('Wirklich löschen?')}}');"><i class="fa fa-trash-alt"></i></a>
</td>
</tr>
@endforeach
@ -228,8 +262,15 @@
</table>
</div>
<div class="text-right d-block w-100">
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal"
@if(Auth::user()->isPermission('sua-st-em'))
<div class="float-left small">Allgemeine Dateien unter: <a href="{{route('admin_settings_emails', ['settings'])}}">Einstellungen -> E-Mails / Einstellungen</a></div>
@endif
@if(Auth::user()->isPermission('sua-st-co'))
<br><div class="float-left small">Landesspezifische Dateien unter: <a href="{{route('admin_settings_travel_country', [])}}">Einstellungen -> Reieseländer</a></div>
@endif
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal"
data-target="#modals-load-content"
data-id="new-file"
data-model="bookingFile"

View file

@ -1,6 +1,8 @@
<div class="card mb-2">
<h6 class="card-header bg-primary text-white py-2" data-toggle="collapse" data-target="#collapseBookingMails" aria-expanded="false" aria-controls="collapseBookingMails">
<strong style="line-height: 1.6em">E-Mails</strong>
<span class="badge badge-secondary">{{ $booking->customer_mails->count() }}</span>
</h6>
<div class="collapse" id="collapseBookingMails">
<div class="container-fluid d-flex align-items-stretch flex-grow-1 p-0">
@ -16,25 +18,25 @@
<button type="button" class="btn btn-sm btn-secondary mb-3 btn-compare-customer-mails" data-toggle="modal"
data-target="#modals-load-content"
data-id="new-send"
data-model="customerMail"
data-model="CustomerMail"
data-action="new-customer-mail"
data-url="{{route('customer_mail_send_mail')}}"
data-redirect="back"
data-booking_id="{{$booking->id}}"
data-customer_mail_dir="0"
data-customer_mail_country="0"
data-customer_mail_subdir="0"
data-route="{{ route('booking_modal_load') }}"><i class="ion ion-md-mail-open"></i>&nbsp;E-Mail schreiben</button>
<button type="button" class="btn btn-sm btn-next btn-compare-customer-mails" data-toggle="modal"
data-target="#modals-load-content"
data-id="new-save"
data-model="customerMail"
data-model="CustomerMail"
data-action="reply-customer-mail"
data-url="{{route('customer_mail_reply_mail')}}"
data-redirect="back"
data-booking_id="{{$booking->id}}"
data-customer_mail_dir="0"
data-customer_mail_country="0"
data-customer_mail_subdir="0"
data-route="{{ route('booking_modal_load') }}"><i class="ion ion-md-mail-unread"></i>&nbsp;Antwort speichern</button>
</div>
<a href="javascript:void(0)" class="messages-sidebox-toggler d-lg-none d-block text-muted text-large font-weight-light pl-4">&times;</a>
@ -44,40 +46,50 @@
<style>
.sidebox-nav-item {
color: #838387 !important;
}
.sidebox-nav-item_sub {
color: #a3a4a6 !important;
}
.sidebox-nav-item[href]:hover,
.sidebox-nav-item[href]:focus {
color: #8c8e90 !important;
color: #606265 !important;
}
.sidebox-nav-item.active .item {
color: #4E5155 !important;
color: #3e4244 !important;
font-weight: 700 !important;
}
</style>
<!-- Mail boxes -->
@foreach(\App\Services\Booking::getCustomerMailDirs() as $customer_mail_dir)
@php($badge = $customer_mail_dir->pos === 0 ? "badge-primary" : "badge-outline-primary")
<a href="javascript:void(0)" class="d-flex justify-content-between align-items-center py-2 px-4 sidebox-nav-item @if($customer_mail_dir->pos === 0) active @endif"
data-dir="{{$customer_mail_dir->pos}}" data-subdir="0" data-icon="{{$customer_mail_dir->getArrayContent('icon')}}" data-name="{{$customer_mail_dir->name}}">
<div class="item">
<i class="ion {{$customer_mail_dir->getArrayContent('icon')}}"></i> {{$customer_mail_dir->name}}
</div>
<div class="badge {{$badge}}">{{$booking->countCustomerMailsBy($customer_mail_dir->pos)}}</div>
</a>
@foreach($booking->travel_country->getMailDirs($customer_mail_dir->pos) as $mail_dir_id)
@php ($mail_dir_name = \App\Services\Booking::getCustomerMailName($customer_mail_dir, $mail_dir_id))
<a href="javascript:void(0)" class="d-flex justify-content-between align-items-center py-1 px-4 sidebox-nav-item sidebox-nav-item_sub"
data-dir="{{$customer_mail_dir->pos}}" data-subdir="{{$mail_dir_id}}" data-icon="{{$customer_mail_dir->getArrayContent('icon')}}" data-name="{{$mail_dir_name}}">
<div class="item pl-2">
<i class="ion {{$customer_mail_dir->getArrayContent('icon')}}"></i> {{$mail_dir_name}}
</div>
<div class="badge {{$badge}}">{{$booking->countCustomerMailsBy($customer_mail_dir->pos, $mail_dir_id)}}</div>
</a>
@endforeach
@endforeach
@foreach($booking::$customer_mail_dirs as $dir_id => $customer_mail_dir)
@php($badge = $dir_id === 0 ? "badge-primary" : "badge-outline-primary")
<a href="javascript:void(0)" class="d-flex justify-content-between align-items-center py-2 px-4 sidebox-nav-item @if($dir_id === 0) active @endif"
data-dir="{{$dir_id}}" data-country="0" data-icon="{{$customer_mail_dir['icon']}}" data-name="{{$customer_mail_dir['name']}}">
<a href="javascript:void(0)" class="d-flex justify-content-between align-items-center py-2 px-4 sidebox-nav-item"
data-dir="{{$dir_id}}" data-subdir="0" data-icon="{{$customer_mail_dir['icon']}}" data-name="{{$customer_mail_dir['name']}}">
<div class="item">
<i class="ion {{$customer_mail_dir['icon']}}"></i> {{$customer_mail_dir['name']}}
</div>
<div class="badge {{$badge}}">{{$booking->countCustomerMailsBy($dir_id)}}</div>
</a>
@if($dir_id === 1 && $booking->travel_country)
@foreach($booking->travel_country->getCountryLands() as $id => $name)
<a href="javascript:void(0)" class="d-flex justify-content-between align-items-center py-2 px-4 sidebox-nav-item"
data-dir="{{$dir_id}}" data-country="{{$id}}" data-icon="{{$customer_mail_dir['icon']}}" data-name="{{$name}}">
<div class="item pl-2">
<i class="ion {{$customer_mail_dir['icon']}}"></i> {{$name}}
</div>
<div class="badge {{$badge}}">{{$booking->countCustomerMailsBy($dir_id, $id)}}</div>
</a>
@endforeach
@endif
@endforeach
<hr class="border-light m-4">
</div>
@ -110,7 +122,7 @@
<div class="table-responsive" id="customer_mails_table">
<input type="hidden" name="booking_id" value="{{$booking->id}}">
<input type="hidden" name="customer_mail_dir" value="0">
<input type="hidden" name="customer_mail_country" value="">
<input type="hidden" name="customer_mail_subdir" value="">
<table id="datatables-customer-mails" class="table table-striped">
<thead>
<tr>

View file

@ -3,14 +3,6 @@
@section('content')
<style>
/* body {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}*/
.btn-xs {
line-height: 1.3em;
}
@ -46,23 +38,6 @@
<h4 class="font-weight-bold py-3 mb-1">
Buchung verwalten
</h4>
{{--
<style>
[class*="nav-tabs"]
{
position: fixed;
z-index: 9;
background-color: #fff;
margin-top: -11%; // adjust according to your need
}
[class*="tab-content"]
{
margin-top: 5%;
}
</style>
--}}
<ul class="nav nav-sm nav-tabs nav-justified tabs-alt mb-3" id="top-nav-quick-jump">
<li class="nav-item">
<a class="nav-link" href="javascript:void(0)" data-collapse="#collapseBookingInfo">
@ -138,6 +113,11 @@
@include('booking._detail_files')
<div class="float-right mt-3">
<a href="{{route('requests')}}" class="btn btn-sm btn-default">{{ __('zur Übersicht') }}</a>
<a href="{{ make_old_url('/index.php/booking/'.$booking->id.'/edit') }}" class="btn btn-sm btn-default float-right">{{ __('zurück ins CRM v2') }}</a>
</div>
<div class="modal fade" id="modals-load-next">
<div class="modal-dialog modal-lg">
@ -229,7 +209,6 @@
init_site();
var oTable = $('#datatables-customer-mails').DataTable({
"processing": true,
"serverSide": true,
@ -237,9 +216,10 @@
ajax: {
url: '{!! route( 'customer_mail_data_table' ) !!}',
data: function(d) {
d.model = 'CustomerMail';
d.booking_id = $('#customer_mails_table input[name=booking_id]').val();
d.customer_mail_dir = $('#customer_mails_table input[name=customer_mail_dir]').val();
d.customer_mail_country = $('#customer_mails_table input[name=customer_mail_country]').val();
d.customer_mail_subdir = $('#customer_mails_table input[name=customer_mail_subdir]').val();
d.data_table_search = $('#dataTableInputSearchField').val();
}
},
@ -276,10 +256,10 @@
return;
}
$('#customer_mails_table input[name=customer_mail_dir]').val($(this).data('dir'));
$('#customer_mails_table input[name=customer_mail_country]').val($(this).data('country'));
$('#customer_mails_table input[name=customer_mail_subdir]').val($(this).data('subdir'));
if($(this).data('dir') <= 10){
$('.btn-compare-customer-mails').data('customer_mail_dir', $(this).data('dir'));
$('.btn-compare-customer-mails').data('customer_mail_country', $(this).data('country'));
$('.btn-compare-customer-mails').data('customer_mail_subdir', $(this).data('subdir'));
$('.btn-compare-customer-mails').prop('disabled', false);
}else{
$('.btn-compare-customer-mails').prop('disabled', true);
@ -291,7 +271,6 @@
$('#message-sidebox-title-name').html($(this).data('name'));
$('.messages-wrapper .sidebox-nav-item').find('.badge-primary').removeClass('badge-primary').addClass('badge-outline-primary');
$(this).find('.badge').removeClass('badge-outline-primary').addClass('badge-primary');
});
$('#dataTableInputSearchField').keyup(function(){

View file

@ -26,7 +26,9 @@
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal"
data-target="#modals-load-content"
data-id="new"
data-identifier="{{$identifier_content}}"
data-model="content"
data-back="{{route('cms_content_all')}}"
data-route="{{ route('cms_content_all_load_modal') }}"
>Neuen Content anlegen</button>
</div>
@ -39,7 +41,6 @@
<th>{{__('Slug')}}</th>
<th>{{__('Inhalt')}}</th>
<th>{{__('Type')}}</th>
<th></th>
</tr>
</thead>
@ -49,7 +50,9 @@
<td class="not">
<button type="button" class="btn icon-btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-load-content"
data-id="{{ $value->id }}"
data-identifier="{{$identifier_content}}"
data-model="content"
data-back="{{route('cms_content_all')}}"
data-route="{{ route('cms_content_all_load_modal') }}">
<span class="fa fa-edit"></span>
</button>
@ -58,9 +61,7 @@
<td>{{ $value->slug }}</td>
<td>@if($value->isFile()) {!! $value->getPreviewContent() !!} @else {{ $value->getPreviewContent() }} @endif</td>
<td>{{ $value->getFieldName() }}</td>
<td><a class="text-danger" href="{{ route('cms_content_all_delete', [$value->id]) }}" onclick="return confirm('{{__('Wirklich löschen?')}}');"><i class="fa fa-trash-alt"></i></a></td>
</tr>
@endforeach
</tbody>
@ -68,12 +69,13 @@
<div class="mt-4 mr-4 text-right">
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-load-content"
data-id="new"
data-identifier="{{$identifier_content}}"
data-model="content"
data-back="{{route('cms_content_all')}}"
data-route="{{ route('cms_content_all_load_modal') }}"
>Neuen Content anlegen</button>
</div>
</div>
</div>
<script>
$( document ).ready(function() {
@ -89,8 +91,4 @@
});
</script>
@endsection

View file

@ -1,7 +1,9 @@
{!! Form::open(['url' => route('cms_content_all_store'), 'class' => 'modal-content', 'enctype' => 'multipart/form-data']) !!}
{!! Form::open(['url' => route('cms_content_all_store'), 'class' => 'modal-content', 'enctype' => 'multipart/form-data', 'id'=> 'cmsContentForm']) !!}
<input type="hidden" name="id" id="id" value="{{ $value->id > 0 ? $value->id : 'new' }}">
<input type="hidden" name="identifier" id="identifier" value="{{ $value->identifier }}">
<input type="hidden" name="back" id="back" value="{{ $data['back'] }}">
<div class="modal-header">
@ -39,7 +41,7 @@
<div class="form-row show-content-full_text" style="display:none ;">
<div class="form-group col">
<label for="text" class="form-label">{{ __('Full Text') }}</label>
<label for="full_text" class="form-label">{{ __('Full Text') }}</label>
{{ Form::textarea('full_text', $value->full_text, array('placeholder'=>__('Full Text'), 'class'=>'form-control', 'rows'=>20)) }}
</div>
</div>
@ -81,16 +83,20 @@
</div>
<div class="col-12 mt-2 mb-4">
<!-- You can add extra form fields here -->
<div class="dropzone" id="fileUpload"></div>
<div class="dropzone" id="fileUploadContentForm"></div>
</div>
@endif
</div>
<div class="form-row show-field-slug">
<div class="form-group col">
<label for="name" class="form-label">{{ __('Slug') }}</label>
<div class="form-group col-sm-10">
<label for="slug" class="form-label">{{ __('Slug') }}</label>
{{ Form::text('slug', $value->slug, array('class'=>'form-control')) }}
</div>
<div class="form-group col-sm-2">
<label for="pos" class="form-label">{{ __('Position') }}</label>
{{ Form::text('pos', $value->pos, array('class'=>'form-control')) }}
</div>
</div>
</div>
@ -107,24 +113,30 @@
$( document ).ready(function() {
$('div[class*="show-content"]').hide();
$('.show-content-'+$('select[name="field"]').val()).show();
$('#cmsContentForm div[class*="show-content"]').hide();
$('#cmsContentForm .show-content-'+$('#cmsContentForm select[name="field"]').val()).show();
$('select[name="field"]').on('change', function () {
$('div[class*="show-content"]').hide();
$('.show-content-'+$(this).val()).show();
if($(this).val() == 'file' && $('input[name="id"]').val() == 'new'){
function cmsContentShowFileFields(){
if($('#cmsContentForm select[name="field"]').val() === 'file' && $('#cmsContentForm input[name="id"]').val() === 'new'){
$('.show-field-slug').hide();
$('.show-field-name').hide();
}else{
$('.show-field-slug').show();
$('.show-field-name').show();
}
}
cmsContentShowFileFields();
$('#cmsContentForm select[name="field"]').on('change', function () {
$('#cmsContentForm div[class*="show-content"]').hide();
$('#cmsContentForm .show-content-'+$(this).val()).show();
cmsContentShowFileFields();
});
Dropzone.autoDiscover = false;
$("#fileUpload").dropzone({
$("#fileUploadContentForm").dropzone({
url: "{{route('cms_content_all_store')}}",
params: {'identifier':'{{ $value->identifier }}','back':'{{$data['back'] }}'},
uploadMultiple: false,
parallelUploads: 1,
maxFilesize: 32,

View file

@ -61,7 +61,6 @@
</div>
</div>
<div class="form-row">
<div class="form-group col-md-12">
<label class="form-label" for="feedback_pagetitle">{{ __('META-Titel (optional)') }}</label>
@ -80,7 +79,6 @@
</div>
</div>
<div class="text-left mt-3">
<button type="submit" name="action" value="saveAll" class="btn btn-submit">{{ __('save changes') }}</button>&nbsp;
<a href="{{route('cms_feedback')}}" class="btn btn-default">{{ __('back') }}</a>

View file

@ -193,7 +193,7 @@
<div class="message-attachment ui-bordered p-2 mr-3 mb-3">
<div class="message-attachment-file display-4"><i class="{{$file->getIconExt()}}"></i></div>
<div class="media-body ml-3">
<strong class="message-attachment-filename">{{$file->filename}}</strong>
<strong class="message-attachment-filename">{{$file->original_name}}</strong>
<div class="text-muted small">{{$file->formatBytes()}}</div>
<div>
<a href="{{$file->getURL()}}" target="_blank" class="mail-att-show">Vorschau</a> &nbsp;

View file

@ -154,27 +154,52 @@
@endforeach
@endif
@if($security_certificate = \App\Models\CMSContent::getModelBySlug('sicherungsschein-nach-sis651r-pdf'))
<tr>
<th scope="row">{{$booking_files_count++}}</th>
<td>
<a target="_blank" href="{{ $security_certificate->getURL() }}" class="badge badge-md badge-next">
<i class="fa fa-file-pdf mr-1"></i> {{$security_certificate->name}}
</a>
</td>
<td>
{{ $security_certificate->formatBytes() }}
</td>
<td>{{\App\Services\Util::_format_date($security_certificate->created_at, 'date')}}</td>
<td>
<button data-target="{{ $security_certificate->getURL() }}" data-name="{{ $security_certificate->name }}" class="btn btn-xs btn-primary add-file-to-attachment"
title="als Anhang hinzufügen" data-placement="left" rel="tooltip">
<i class="fa fa-cloud-download-alt"></i>
</button>
</td>
</tr>
@endif
@foreach(\App\Services\Booking::contentFiles() as $content_file)
@if($file = \App\Models\CMSContent::getModelBySlug($content_file))
<tr>
<th scope="row">{{$booking_files_count++}}</th>
<td>
<a target="_blank" href="{{ $file->getURL() }}" class="badge badge-md badge-next">
<i class="fa fa-file-pdf mr-1"></i> {{$file->name}}
</a>
</td>
<td>
{{ $file->formatBytes() }}
</td>
<td>{{\App\Services\Util::_format_date($file->created_at, 'date')}}</td>
<td>
<button data-target="{{ $file->getURL() }}" data-name="{{ $file->name }}" class="btn btn-xs btn-primary add-file-to-attachment"
title="als Anhang hinzufügen" data-placement="left" rel="tooltip">
<i class="fa fa-cloud-download-alt"></i>
</button>
</td>
</tr>
@endif
@endforeach
@foreach($booking->travel_country->getContactLandsModels() as $TravelCountry)
@if($TravelCountry->stern_travel_country)
@foreach($TravelCountry->stern_travel_country->general_files as $general_files)
<tr>
<th scope="row">{{$booking_files_count++}}</th>
<td>
<a target="_blank" href="{{ $general_files->getURL() }}" class="badge badge-md badge-info">
<i class="{{$general_files->getIconExt()}} mr-1"></i> {{$general_files->original_name}}
</a>
</td>
<td>
{{ $general_files->mine }} | {{ $general_files->formatBytes() }}
</td>
<td>{{\App\Services\Util::_format_date($general_files->created_at, 'date')}}</td>
<td>
<button data-target="{{ $general_files->getURL() }}" data-name="{{ $general_files->original_name }}" class="btn btn-xs btn-primary add-file-to-attachment"
title="als Anhang hinzufügen" data-placement="left" rel="tooltip">
<i class="fa fa-cloud-download-alt"></i>
</button>
</td>
</tr>
@endforeach
@endif
@endforeach
@if($booking->booking_files)
@foreach($booking->booking_files as $booking_file)
<tr>

View file

@ -130,8 +130,8 @@
<div class="form-group mb-1">
<label class="form-label" for="message">Nachricht</label>
@if($value->show === 'single' || $value->show === 'multi')
@if(Auth::user()->isPermission('sua-st-et'))
<div class="float-right small">Vorlage unter: <a href="{{route('admin_settings_email_template')}}">Einstellungen -> E-Mail Vorlagen</a></div>
@if(Auth::user()->isPermission('sua-st-em'))
<div class="float-right small">Vorlage unter: <a href="{{route('admin_settings_emails')}}">Einstellungen -> E-Mails / Vorlagen</a></div>
@endif
@endif
<div id="message-editor-toolbar">
@ -175,12 +175,21 @@
</div>
<div class="collapse col-12" id="collapseModalEmailTemplate">
<hr class="mt-0">
<select class="custom-select" name="filter_email_templates_directory" id="filter_email_templates_directory" style="">
<option value="">Alle Verzeichniss</option>
@foreach($value->filter_email_templates_directories as $id=>$name)
<option value="{{$id}}" >{{$name}}</option>
@endforeach
</select>
<div class="table-responsive" id="email_templates_table">
<table id="datatables-email-templates" class="table table-striped">
<thead>
<tr>
<th>#</th>
<th>{{__('Betreff')}}</th>
<th>{{__('Vorlage Bezeichnung')}}</th>
<th>{{__('Verzeichniss')}}</th>
<th>&nbsp;</th>
</tr>
</thead>
@ -197,23 +206,27 @@
<div class="col-sm-6">
<label for="send_mail_dir" class="form-label">Ablegen unter:</label>
<select class="custom-select" name="dir" id="send_mail_dir">
@foreach($value->booking::$customer_mail_dirs as $dir_id=>$customer_mail_dirs)
@if($dir_id <= 10)
<option value="{{$dir_id}}" @if($value->customer_mail_dir == $dir_id) selected @endif>{{$customer_mail_dirs['name']}}</option>
@endif
@foreach(\App\Services\Booking::getCustomerMailDirs() as $customer_mail_dir)
<option value="{{$customer_mail_dir->pos}}" @if($value->customer_mail_dir == $customer_mail_dir->pos) selected @endif>{{$customer_mail_dir->name}}</option>
@endforeach
</select>
</div>
<div class="col-sm-6">
<label for="send_mail_country" class="form-label">&nbsp;</label>
<select class="custom-select" name="travel_country_id" id="send_mail_country">
@if($value->booking->travel_country)
@foreach($value->booking->travel_country->getCountryLands() as $country_id => $country_name)
<option value="0">Nur bei Agentur -> Land</option>
<option value="{{$country_id}}" @if($value->customer_mail_country == $country_id) selected @endif>{{$country_name}}</option>
<label for="subdir" class="form-label">&nbsp;</label>
{{-- TODO load subdirs by pos id --}}
@if(isset($value->booking) && $value->booking->travel_country)
@foreach(\App\Services\Booking::getCustomerMailDirs() as $customer_mail_dir)
@if($customer_mail_dir->pos > 0)
<select class="custom-select send_mail_subdir" name="subdir" id="send_mail_subdir_{{$customer_mail_dir->pos}}">
<option value="0">keinen Unterordner</option>
@foreach($value->booking->travel_country->getMailDirs($customer_mail_dir->pos) as $mail_dir_id)
@php ($mail_dir_name = \App\Services\Booking::getCustomerMailName($customer_mail_dir, $mail_dir_id))
<option value="{{$mail_dir_id}}" @if($value->customer_mail_subdir == $mail_dir_id) selected @endif>{{$mail_dir_name}}</option>
@endforeach
@endif
</select>
</select>
@endif
@endforeach
@endif
</div>
</div>
@endif
@ -244,7 +257,7 @@
<div class="message-attachment ui-bordered p-2 mr-3 mb-3">
<div class="message-attachment-file display-4"><i class="mail-att-icon {{$customer_file->getIconExt()}}"></i></div>
<div class="media-body ml-3">
<strong class="message-attachment-filename">{{$customer_file->filename}}</strong>
<strong class="message-attachment-filename">{{$customer_file->original_name}}</strong>
<div class="text-muted small mail-att-size">{{$customer_file->formatBytes()}}</div>
<div>
<a href="{{$customer_file->getURL()}}" target="_blank" class="mail-att-show">Vorschau</a> &nbsp;
@ -320,22 +333,25 @@
$('#preview-mail-attachment').append(template);
}
function change_dir_country_select(){
//agentur
if($('#send_mail_dir').val() == 1){
$('#send_mail_country').prop('disabled', false);
}else{
$('#send_mail_country').prop('disabled', true);
$('#send_mail_country').val(0);
}
function change_mail_subdir_select(){
var $dir_id = $('#send_mail_dir').val();
$('.send_mail_subdir').each(function () {
var send_mail_subdir = 'send_mail_subdir_' + $dir_id;
if($(this).attr('id') === send_mail_subdir){
$(this).prop('disabled', false);
$(this).show();
}else{
$(this).prop('disabled', true);
$(this).val(0);
$(this).hide();
}
})
}
$(document).ready(function() {
change_dir_country_select();
change_mail_subdir_select();
$('#send_mail_dir').on('change', function () {
change_dir_country_select();
change_mail_subdir_select();
});
if (!window.Quill) {
$('#message-editor,#message-editor-toolbar').remove();
@ -344,6 +360,7 @@
Quill.register('modules/placeholder', PlaceholderModule.default(Quill))
//$('#message-editor-fallback').remove();
var quill = new Quill('#message-editor', {
debug: 'error',
modules: {
toolbar: '#message-editor-toolbar',
placeholder: {
@ -400,7 +417,6 @@
});
var emailTempplateTable = $('#datatables-email-templates').DataTable({
"processing": true,
"serverSide": true,
@ -408,10 +424,14 @@
"autoWidth": false,
ajax: {
url: '{!! route( 'email_template_data_table' ) !!}',
data: function(d) {
d.filter_email_templates_directory = $('select[name=filter_email_templates_directory]').val();
}
},
"columns": [
{ data: 'id', width: '8%', searchable: true },
{ data: 'subject', name: 'subject', width: '', searchable: true },
{ data: 'name', name: 'name', width: '', searchable: true },
{ data: 'email_template_dir.name', name: 'email_template_dir.name', width: '25%', orderable: false, searchable: false },
{ data: 'action', width: '8%', orderable: false, searchable: false},
],
"bLengthChange": false,
@ -428,6 +448,10 @@
});
}
});
$('#filter_email_templates_directory').on('change', function(){
emailTempplateTable.draw();
});
function callback_email_template_data_table(data) {
if(data.status === 'success'){
$('input#subject').val(data.response.subject + $('input#lead_title_id').val());

View file

@ -110,34 +110,40 @@
</div>
</div>
@endif
@if(isset($show_move_dirs))
<hr class="border-light m-0">
<div class="px-4 pt-4 pb-2">
{!! Form::open(['url' => route('customer_mail_detail', [$customer_mail->id, 'move-mail']), 'class' => 'move-mail-form']) !!}
<div class="form-row">
<div class="col-sm-6">
<label for="customer_mail_dir_{{$customer_mail->id}}" class="form-label">Ablegen unter:</label>
<select class="custom-select customer_mail_dir" name="dir" id="customer_mail_dir_{{$customer_mail->id}}">
@foreach($customer_mail->booking::$customer_mail_dirs as $dir_id=>$customer_mail_dirs)
@if($dir_id <= 10)
<option value="{{$dir_id}}" @if($customer_mail->dir == $dir_id) selected @endif>{{$customer_mail_dirs['name']}}</option>
@endif
<label for="customer_mail_dir" class="form-label">Ablegen unter:</label>
<select class="custom-select customer_mail_dir" name="dir" id="customer_mail_dir">
@foreach(\App\Services\Booking::getCustomerMailDirs() as $customer_mail_dir)
<option value="{{$customer_mail_dir->pos}}" @if($customer_mail->dir == $customer_mail_dir->pos) selected @endif>{{$customer_mail_dir->name}}</option>
@endforeach
</select>
</div>
<div class="col-sm-6">
<button type="submit" class="btn btn-xs btn-default float-right mt-1"><i class="ion ion-ios-redo"></i>&nbsp; verschieben</button>
<label for="customer_mail_country_{{$customer_mail->id}}" class="form-label">&nbsp;</label>
<select class="custom-select customer_mail_country" name="travel_country_id" id="customer_mail_country_{{$customer_mail->id}}">
@if($customer_mail->booking->travel_country)
@foreach($customer_mail->booking->travel_country->getCountryLands() as $country_id => $country_name)
<option value="0">Nur bei Agentur -> Land</option>
<option value="{{$country_id}}" @if($customer_mail->travel_country_id == $country_id) selected @endif>{{$country_name}}</option>
@endforeach
@endif
</select>
<label for="subdir" class="form-label">&nbsp;</label>
{{-- TODO load subdirs by pos id --}}
@if($customer_mail->booking->travel_country)
@foreach(\App\Services\Booking::getCustomerMailDirs() as $customer_mail_dir)
@if($customer_mail_dir->pos > 0)
<select class="custom-select customer_mail_subdir" name="subdir" id="customer_mail_subdir_{{$customer_mail_dir->pos}}">
<option value="0">keinen Unterordner</option>
@foreach($customer_mail->booking->travel_country->getMailDirs($customer_mail_dir->pos) as $mail_dir_id)
@php ($mail_dir_name = \App\Services\Booking::getCustomerMailName($customer_mail_dir, $mail_dir_id))
<option value="{{$mail_dir_id}}" @if($customer_mail->subdir == $mail_dir_id) selected @endif>{{$mail_dir_name}}</option>
@endforeach
</select>
@endif
@endforeach
@endif
</div>
</div>
{!! Form::close() !!}
</div>
@endif
</div>

View file

@ -8,7 +8,7 @@
</div>
<div class="modal-body">
@include('customer.mail.modal-show-mail-inner', ['customer_mail' => $customer_mail])
@include('customer.mail.modal-show-mail-inner', ['customer_mail' => $customer_mail, 'show_move_dirs' => true])
@if($customer_mail->customer_mail)
@include('customer.mail.modal-show-mail-inner', ['customer_mail' => $customer_mail->customer_mail])
@ -21,26 +21,33 @@
</div>
<script type="text/javascript">
function change_dir_country_select(_form){
if(_form.find('.customer_mail_dir').val() == 1){
_form.find('.customer_mail_country').prop('disabled', false);
}else{
_form.find('.customer_mail_country').prop('disabled', true);
_form.find('.customer_mail_country').val(0);
}
function change_mail_subdir_select(_form){
var $dir_id = _form.find('#customer_mail_dir').val();
$('.customer_mail_subdir').each(function () {
var customer_mail_subdir = 'customer_mail_subdir_' + $dir_id;
if($(this).attr('id') === customer_mail_subdir){
$(this).prop('disabled', false);
$(this).show();
}else{
$(this).prop('disabled', true);
$(this).val(0);
$(this).hide();
}
})
}
$(document).ready(function() {
$('form.move-mail-form').each(function () {
var _form = $(this);
$(this).find('.customer_mail_dir').on('change', function () {
change_dir_country_select(_form);
change_mail_subdir_select(_form);
_form.find('.btn-default').removeClass('btn-default').addClass('btn-primary');
});
$(this).find('.customer_mail_country').on('change', function () {
$(this).find('.customer_mail_subdir').on('change', function () {
_form.find('.btn-default').removeClass('btn-default').addClass('btn-primary');
});
change_dir_country_select(_form);
change_mail_subdir_select(_form);
});
});
</script>

View file

@ -7,15 +7,15 @@
<div class="nav-tabs-top mb-4">
<ul class="nav nav-tabs">
<li class="nav-item">
<a class="nav-link @if($step == false) active show @endif" data-toggle="tab" href="#navs-top-drafts">Übersicht</a>
<a class="nav-link @if(!$step) active show @endif" data-toggle="tab" href="#navs-top-drafts">Übersicht</a>
</li>
<li class="nav-item">
<a class="nav-link @if($step == 'type') active show @endif" data-toggle="tab" href="#navs-top-draft_types">Typen</a>
<a class="nav-link @if($step === 'type') active show @endif" data-toggle="tab" href="#navs-top-draft_types">Typen</a>
</li>
</ul>
<div class="tab-content">
<div class="tab-pane fade @if($step == false) active show @endif" id="navs-top-drafts">
<div class="tab-pane fade @if(!$step) active show @endif" id="navs-top-drafts">
<div class="card">
<div class="card-datatable table-responsive">
<table class="datatables-drafts table table-striped table-bordered">
@ -71,9 +71,8 @@
</div>
</div>
<div class="tab-pane fade @if($step == 'type') active show @endif" id="navs-top-draft_types">
<div class="card-body">
<div class="tab-pane fade @if($step === 'type') active show @endif" id="navs-top-draft_types">
<div class="card">
<div class="card-datatable table-responsive">
<table class="datatables-types table table-striped table-bordered">
<thead>
@ -122,7 +121,7 @@
@endforeach
</tbody>
</table>
<div class="mt-4 text-left">
<div class="mt-4 ml-3 text-left">
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-type"
data-id="new"
data-name=""
@ -179,7 +178,6 @@
</div>
</div>
<script>
$( document ).ready(function() {
@ -213,7 +211,6 @@
});
});
</script>
</div>
</div>

View file

@ -68,7 +68,7 @@
@yield('styles')
<!-- Application stylesheets -->
<link rel="stylesheet" href="{{ mix('/css/application.css') }}?v=7{{ get_file_last_time('js/application.css') }}">
<link rel="stylesheet" href="{{ mix('/css/application.css') }}?v=9{{ get_file_last_time('js/application.css') }}">
<script src="{{ asset('/js/jquery.min.js') }}"></script>
<link rel="stylesheet" type="text/css" href="{{ asset('/css/cookieconsent.min.css') }}" />
@ -158,7 +158,7 @@
<!-- Application javascripts -->
<script src="{{ mix('/js/application.js') }}"></script>
<script src="{{ asset('/js/custom.js?v=7') }}{{ get_file_last_time('/js/custom.js') }}"></script>
<script src="{{ asset('/js/custom.js?v=9') }}{{ get_file_last_time('/js/custom.js') }}"></script>
@include('asset.js')
@ -229,8 +229,6 @@
$(document).ready(function() {
$('.summernote').summernote({
height: 300,
tabsize: 2,

View file

@ -214,9 +214,9 @@
<a href="{{ route('admin_settings_airline') }}" class="sidenav-link"><i class="sidenav-icon ion ion-md-airplane"></i><div>{{ __('Airline') }}</div></a>
</li>
@endif
@if(Auth::user()->isPermission('sua-st-et'))
<li class="sidenav-item{{ Request::is('cms/content/email_template') ? ' active' : '' }}">
<a href="{{ route('admin_settings_email_template') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-mail"></i><div>{{ __('E-Mail Vorlagen') }}</div></a>
@if(Auth::user()->isPermission('sua-st-em'))
<li class="sidenav-item{{ Request::is('admin/settings/emails') ? ' active' : '' }}">
<a href="{{ route('admin_settings_emails') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-mail"></i><div>{{ __('E-Mails') }}</div></a>
</li>
@endif
@if(Auth::user()->isPermission('sua-st-ke'))
@ -284,48 +284,11 @@
</ul>
</li>
@endif
@if(Auth::user()->isPermission('sua-ur-rt'))
<li class="sidenav-item{{ Request::is('admin/users') ? ' active' : '' }} {{ Request::is('admin/user/edit/*') ? ' active' : '' }}">
<a href="{{ route('admin_users') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-ribbon"></i><div>{{ __('User Rechte') }}</div></a>
</li>
@endif
{{--
<li class="sidenav-item @if(Request::is('iq/tools/content/*')) open @endif">
<a href="javascript:void(0)" class="sidenav-link sidenav-toggle"><i class="sidenav-icon ion ion-md-apps"></i>
<div>Tools</div>
</a>
<ul class="sidenav-menu">
<li class="sidenav-item">
<a target="_blank" href="{{route('iq_tools_content_links')}}" class="sidenav-link">
<div>Tree from HTML</div>
</a>
</li>
</ul>
</li>
--}}
{{-- <li class="sidenav-item{{ Request::is('admin/translate/*') ? ' open' : '' }}">
<a href="javascript:void(0)" class="sidenav-link sidenav-toggle">
<i class="sidenav-icon ion ion-ios-browsers"></i>
<div>Inhalte</div>
</a>
<ul class="sidenav-menu">
<li class="sidenav-item{{ Request::is('admin/translate/file/*') ? ' active' : '' }}">
<a href="{{ route('admin_translate_file') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-browsers"></i><div>{{ __('Vorlagen') }}</div></a>
</li>
<li class="sidenav-item{{ Request::is('admin/translate/all/*') ? ' active' : '' }}">
<a href="{{ route('admin_translate_all') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-browsers"></i><div>{{ __('Allgemein') }}</div></a>
</li>
</ul>
</li>
--}}
@endif
@if(Auth::user()->isSySAdmin())

View file

@ -1,15 +1,19 @@
<!DOCTYPE html>
<html lang="en">
<head>
<base href="{{ url('/') }}">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
{!! Html::style('css/stern_fewo_pdf.css') !!}
<style>
{!! \App\Services\Util::getURLasContent(asset('/css/stern_fewo_pdf.css')) !!}
</style>
</head>
<body>
<div id="logo_box">
<img src="{{asset('images/stern-tours-logo.png')}}">
<img src="{{\App\Services\Util::getURLasContent(asset('/images/stern-tours-logo.png'), true)}}" alt="STERNTOURS">
</div>
@yield('content')
<div id="footer_box">

View file

@ -188,6 +188,7 @@
<th>{{__('Anreise')}}</th>
<th>{{__('Abreise')}}</th>
<th>{{__('U.')}}</th>
<th>{{__('L.')}}</th>
<th>{{__('Sachbearbeiter')}}</th>
<th>{{__('Status')}}</th>
<th>{{__('E-Mail')}}</th>
@ -266,6 +267,7 @@
{ data: 'start_date', name: 'start_date' },
{ data: 'end_date', name: 'end_date' },
{ data: 'travel_documents', name: 'travel_documents', orderable: false },
{ data: 'booking_country_services', name: 'booking_country_services', orderable: false },
{ data: 'sf_guard_user_id', name: 'sf_guard_user_id', orderable: false },
{ data: 'lead.status_id', name: 'lead.status_id', orderable: false },
{ data: 'last_customer_email', name: 'last_customer_email', orderable: true },
@ -302,7 +304,7 @@
}
} );
} );*/
this.api().columns(11).every( function () {
this.api().columns(13).every( function () {
var column = this;
var title = $(column.header()).html();
var select = $('<select class="selectpicker"><option value="">'+title+'</option></select>')
@ -344,6 +346,21 @@
drawCallback: function () {
//console.log($('#travel_option_agenda_id').prop('disabled'));
//only when is disabled, refesh list is load by other filter.
$('#datatables-requests [rel="tooltip"]').tooltip({trigger: "hover"});
$('#datatables-requests [data-toggle="popover"]').popover({trigger: "hover", content: get_popover_content, html: true,});
/* $('#datatables-requests [data-toggle="popover"]').hover(function() {
var e = $(this);
e.off('hover');
console.log(e.data('booking_id'))
e.popover({content: "test"}).popover('show');
/*$.get(e.data('load_id'),function(d) {
e.popover({content: d}).popover('show');
});
});*/
if($('#travel_option_agenda_id').prop('disabled')) {
var data = table.ajax.params();
//console.log(data);
@ -381,6 +398,41 @@
}
});
function get_popover_content() {
if ($(this).data('booking_id')) {
var data = {};
data['action'] = 'get_popover_booking_services';
data['booking_id'] = $(this).data('booking_id');
$(this).addClass("loading");
var icontent = $.ajax({
url: '{!! route( 'data_ajax_requests' ) !!}',
data: data,
type: "POST",
dataType: "html",
cache: false,
contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
encode: true,
async: false,
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
success: function() {
// just get the response
},
error: function() {
// nothing
}
}).responseText;
$(this).removeClass("loading");
return icontent;
}
return "Keine Buchungs-ID";
}
function clearTravelOptionAgenda(){
$('#travel_option_agenda_id').empty().prop('disabled', true);
}

View file

@ -1,64 +0,0 @@
@extends('layouts.layout-2')
@section('content')
<h4 class="font-weight-bold py-3 mb-1">
E-Mail Vorlagen
</h4>
<div class="card">
<div class="card-datatable table-responsive">
<table class="datatables-default table table-striped table-bordered">
<thead>
<tr>
<th style="max-width: 60px;">&nbsp;</th>
<th>{{__('Betreff')}}</th>
<th>{{__('sichtbar')}}</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach($email_template as $value)
<tr>
<td data-sort="{{ $value->id }}">
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal"
data-target="#modals-load-content"
data-id="{{ $value->id }}"
data-model="emailTemplate"
data-action="modal-email-template"
data-url=""
data-redirect="back"
data-route="{{ route('admin_settings_email_template_load') }}"><span class="fa fa-edit"></span></button>
</td>
<td>{{ $value->subject }}</td>
<td data-sort="{{ $value->active }}">{!! \App\Services\HTMLHelper::getActiveIcon($value->active) !!}</td>
<td><a class="text-danger" href="{{ route('admin_settings_email_template_delete', [$value->id]) }}" onclick="return confirm('{{__('Wirklich löschen?')}}');"><i class="fa fa-trash-alt"></i></a></td>
</tr>
@endforeach
</tbody>
</table>
<div class="mt-4 col">
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal"
data-target="#modals-load-content"
data-id="new"
data-model="emailTemplate"
data-action="modal-email-template"
data-url=""
data-redirect="back"
data-route="{{ route('admin_settings_email_template_load') }}">&nbsp;Neue E-Mail Vorlage anlegen</button>
</div>
</div>
<script>
$( document ).ready(function() {
$('.datatables-default').dataTable({
"bLengthChange": false,
"iDisplayLength": 50,
"order": [[ 0, "desc" ]],
"language": {
"url": "/js/German.json"
}
});
});
</script>
</div>
@endsection

View file

@ -0,0 +1,619 @@
@extends('layouts.layout-2')
@section('content')
<h4 class="font-weight-bold py-3 mb-1">
E-Mail Vorlagen
</h4>
<div class="nav-tabs-top mb-4">
<ul class="nav nav-tabs">
<li class="nav-item">
<a class="nav-link @if(!$step) active show @endif" data-toggle="tab" href="#navs-top-drafts">Vorlagen</a>
</li>
<li class="nav-item">
<a class="nav-link @if($step === 'directories') active show @endif" data-toggle="tab" href="#navs-top-directories">Verzeichnisse</a>
</li>
<li class="nav-item">
<a class="nav-link @if($step === 'settings') active show @endif" data-toggle="tab" href="#navs-top-settings">Einstellungen</a>
</li>
</ul>
<div class="tab-content">
<div class="tab-pane fade @if(!$step) active show @endif" id="navs-top-drafts">
<div class="card">
<div class="card-datatable table-responsive">
<table class="datatables-default table table-striped table-bordered">
<thead>
<tr>
<th style="max-width: 60px;">&nbsp;</th>
<th>{{__('Vorlage Bezeichnung')}}</th>
<th>{{__('Verzeichniss')}}</th>
<th>{{__('sichtbar')}}</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach($email_template as $value)
<tr>
<td data-sort="{{ $value->id }}">
<button type="button" class="btn icon-btn btn-sm btn-primary" data-toggle="modal"
data-target="#modals-load-content"
data-id="{{ $value->id }}"
data-model="emailTemplate"
data-action="modal-email-template"
data-url=""
data-redirect="back"
data-route="{{ route('admin_settings_emails_load') }}"><span class="fa fa-edit"></span></button>
</td>
<td>{{ $value->name }}</td>
<td>@if($value->email_template_dir)
<span class="badge badge-default" style="background-color: {{$value->email_template_dir->color}}">{{ $value->email_template_dir->name }}</span>
@else
&nbsp;
@endif
</td>
<td data-sort="{{ $value->active }}">{!! \App\Services\HTMLHelper::getActiveIcon($value->active) !!}</td>
<td><a class="text-danger" href="{{ route('admin_settings_emails_delete', [$value->id]) }}" onclick="return confirm('{{__('Wirklich löschen?')}}');"><i class="fa fa-trash-alt"></i></a></td>
</tr>
@endforeach
</tbody>
</table>
<div class="mt-4 col">
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal"
data-target="#modals-load-content"
data-id="new"
data-model="emailTemplate"
data-action="modal-email-template"
data-url=""
data-redirect="back"
data-route="{{ route('admin_settings_emails_load') }}">&nbsp;Neue E-Mail Vorlage anlegen</button>
</div>
</div>
<script>
$( document ).ready(function() {
$('.datatables-default').dataTable({
"bLengthChange": false,
"iDisplayLength": 50,
"order": [[ 0, "desc" ]],
"language": {
"url": "/js/German.json"
}
});
});
</script>
</div>
</div>
<div class="tab-pane fade @if($step === 'directories') active show @endif" id="navs-top-directories">
<div class="card">
<div class="card-datatable table-responsive">
<table class="datatables-types table table-striped table-bordered">
<thead>
<tr>
<th style="max-width: 60px;">&nbsp;</th>
<th style="width: 2%;">{{__('POS')}}</th>
<th>{{__('Name')}}</th>
<th>{{__('Farbe')}}</th>
<th>{{__('sichtbar')}}</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach($email_template_dirs as $value)
<tr>
<td>
<button type="button" class="btn icon-btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-type"
data-id="{{ $value->id }}"
data-name="{{ $value->name }}"
data-color="{{ $value->color }}"
data-active="{{ $value->active }}"
data-pos="{{ $value->pos }}">
<span class="fa fa-edit"></span>
</button>
</td>
<td>{{ $value->pos }}</td>
<td>{{ $value->name }}</td>
<td>@if($value->color)
<div style="display:inline-block; width: 20px; height: 20px; border: 1px solid #888a85; background-color: {{$value->color}}"></div>
{{ $value->color }}
@else
<div style="display:inline-block; width: 20px; height: 20px; border: 1px solid #888a85; background-color: #fff"></div>
@endif
</td>
<td data-sort="{{ $value->active }}">
@if($value->active)
<span class="badge badge-pill badge-success"><i class="fa fa-check"></i></span>
@else
<span class="badge badge-pill badge-danger"><i class="fa fa-times"></i></span>
@endif
</td>
<td><a class="text-danger" href="{{ route('draft_type_delete', [$value->id]) }}" onclick="return confirm('{{__('Wirklich löschen?')}}');"><i class="fa fa-trash-alt"></i></a></td>
</tr>
@endforeach
</tbody>
</table>
<div class="mt-4 ml-3 text-left">
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-type"
data-id="new"
data-name=""
data-active="1"
data-pos="0"
>Neues Verzeichniss anlegen</button>
</div>
</div>
<!-- Modal template -->
<div class="modal fade" id="modals-type">
<div class="modal-dialog">
<form class="modal-content" action="{{ route('admin_settings_emails_update') }}" method="post">
@csrf
<input type="hidden" class="form-control" name="id">
<input type="hidden" class="form-control" name="action" value="email_template_dir">
<input type="hidden" class="form-control" name="step" value="directories">
<div class="modal-header">
<h5 class="modal-title">Verzeichniss <span class="font-weight-light">anlegen/bearbeiten</span></h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">×</button>
</div>
<div class="modal-body">
<div class="form-row">
<div class="form-group col">
<label for="name" class="form-label">Name*</label>
<input type="text" class="form-control" name="name" placeholder="{{__('Description')}}" required>
</div>
</div>
<div class="form-row">
<div class="form-group col">
<label for="pos" class="form-label">POS*</label>
<input type="text" class="form-control" name="pos" placeholder="{{__('Position')}}" required>
</div>
</div>
<div class="form-row">
<div class="form-group col">
<label for="name" class="form-label">Farbe*</label>
<input type="text" name="color" id="minicolors-hue" class="form-control" value="#fff">
</div>
</div>
<div class="form-group">
<label class="custom-control custom-checkbox m-0">
<input type="checkbox" class="custom-control-input" name="active" checked>
<span class="custom-control-label">{{__('sichtbar')}}</span>
</label>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">{{__('close')}}</button>
<button type="submit" class="btn btn-primary">{{__('save')}}</button>
</div>
</form>
</div>
</div>
<script>
$( document ).ready(function() {
$('#minicolors-hue').minicolors({
control: 'hue',
position: 'bottom ' + 'left',
});
$('#modals-type').on('show.bs.modal', function (event) {
var button = $(event.relatedTarget);
$(this).find(".modal-content input[name='id']").val(button.data('id'));
$(this).find(".modal-body input[name='name']").val(button.data('name'));
$(this).find(".modal-body input[name='pos']").val(button.data('pos'));
color = '#fff';
if(button.data('color') != ""){
color = button.data('color');
}
$('#minicolors-hue').minicolors('value', color);
// $('.selectpicker').selectpicker('refresh');
$(this).find(".modal-body input[name='active']").prop( "checked", button.data('active'));
});
$('.datatables-types').dataTable({
"bLengthChange": false,
"iDisplayLength": 50,
"order": [[ 1, "desc" ]],
"language": {
"url": "/js/German.json"
}
});
});
</script>
</div>
</div>
<div class="tab-pane fade @if($step === 'settings') active show @endif" id="navs-top-settings">
<div class="card">
<h4 class="mt-4 mb-2 ml-4">Ordner für Buchungen/E-Mail Ablage</h4>
<p class="ml-4">Unterordner werden für das jeweilige Reiseland der Buchung unter <a href="{{route('admin_settings_travel_country')}}">Reiseländer</a> -> Land / E-Mails zugewiesen </p>
<div class="card-datatable table-responsive pt-0">
<table class="datatables-customer-mail-dirs table table-striped table-bordered">
<thead>
<tr>
<th style="max-width: 60px;">&nbsp;</th>
<th style="width: 2%;">{{__('ID')}}</th>
<th>{{__('Name')}}</th>
<th>{{__('Icon')}}</th>
<th>{{__('Model')}}</th>
<th>{{__('E-Mails')}}</th>
</tr>
</thead>
<tbody>
@php($next_customer_mail_dir_id = 0)
@foreach($customer_mail_dirs as $customer_mail_dir)
<tr>
<td class="not">
<button type="button" class="btn icon-btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-customer-mail-dirs"
data-id="{{$customer_mail_dir->id}}"
data-icon="{{$customer_mail_dir->getArrayContent('icon')}}"
data-model="{{$customer_mail_dir->getArrayContent('model')}}"
data-emails="{{\App\Services\Util::_implodeLines($customer_mail_dir->getArrayContent('emails'))}}"
data-name="{{$customer_mail_dir->name}}"
data-pos="{{$customer_mail_dir->pos}}">
<span class="fa fa-edit"></span>
</button>
</td>
<td>{{ $customer_mail_dir->pos }}</td>
<td>{{ $customer_mail_dir->name }}</td>
<td>{{ $customer_mail_dir->getArrayContent('icon') }}</td>
<td>{{ $customer_mail_dir->getArrayContent('model') }}</td>
<td>
{!! \App\Services\Util::_implodeLines( $customer_mail_dir->getArrayContent('emails'), "<br>") !!}
</td>
{{-- <td><a class="text-danger" href="" onclick="return confirm('{{__('Wirklich löschen?')}}');"><i class="fa fa-trash-alt"></i></a></td> --}}
</tr>
@php($next_customer_mail_dir_id = $customer_mail_dir->pos+1)
@endforeach
</tbody>
</table>
<div class="mt-4 ml-3 text-left">
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-customer-mail-dirs"
data-id="new"
data-icon=""
data-model=""
data-emails=""
data-name=""
data-pos="{{$next_customer_mail_dir_id}}"
>Neuen Ordner anlegen</button>
</div>
</div>
<!-- Modal template -->
<div class="modal fade" id="modals-customer-mail-dirs">
<div class="modal-dialog">
<form class="modal-content" action="{{ route('admin_settings_emails_update') }}" method="post">
@csrf
<input type="hidden" class="form-control" name="id">
<input type="hidden" class="form-control" name="action" value="customer_mail_dirs">
<input type="hidden" class="form-control" name="step" value="settings">
<input type="hidden" class="form-control" name="identifier" value="customer-mail-dirs">
<input type="hidden" class="form-control" name="field" value="array">
<div class="modal-header">
<h5 class="modal-title">E-Mail Ordner <span class="font-weight-light">anlegen/bearbeiten</span></h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">×</button>
</div>
<div class="modal-body">
<div class="form-row">
<div class="form-group col">
<label for="pos" class="form-label">ID*</label>
<input type="text" class="form-control" name="pos" placeholder="{{__('ID')}}" required>
<em>Die ID definiert die Zuweisung der E-Mails in die jeweiligen Ordner, bei Änderungen der ID können schon zugeordnete E-Mails nicht mehr angezeigt werden.</em>
</div>
</div>
<div class="form-row">
<div class="form-group col">
<label for="name" class="form-label">Name*</label>
<input type="text" class="form-control" name="name" placeholder="{{__('Description')}}" required>
</div>
</div>
<div class="form-row">
<div class="form-group col">
<label for="icon" class="form-label">Icon*</label>
<input type="text" class="form-control" name="icon" placeholder="{{__('Icon')}}" required>
</div>
</div>
<div class="form-row">
<div class="form-group col">
<label for="model" class="form-label">Model <span class="text-muted">(wird benötigt um Unterordner unter Reiseländer zuzuweisen)</span></label>
<input type="text" class="form-control" name="model" placeholder="{{__('Model')}}">
<em>Das Model das muss vorab in der Programmierung erfasst werden.</em>
</div>
</div>
<div class="form-row">
<div class="form-group col">
<label class="form-label" for="emails">Für interene Mails <span class="text-muted">(jede E-Mail in eine extra Zeile)</span></label>
<textarea class="form-control" rows="4" name="emails" cols="50"></textarea>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">{{__('close')}}</button>
<button type="submit" class="btn btn-primary">{{__('save')}}</button>
</div>
</form>
</div>
</div>
<hr>
<h4 class="mt-2 mb-0 ml-4">Allgemeine PDF Dateien für Buchungen/E-Mail-Anhänge</h4>
<div class="card-datatable table-responsive pt-0">
<table class="datatables-booking-email-files table table-striped table-bordered">
<thead>
<tr>
<th style="max-width: 60px;">&nbsp;</th>
<th style="width: 2%;">{{__('POS')}}</th>
<th>{{__('Name')}}</th>
<th>{{__('Slug')}}</th>
<th>{{__('Inhalt')}}</th>
<th>{{__('Type')}}</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach($booking_email_files as $value)
<tr>
<td class="not">
<button type="button" class="btn icon-btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-load-content"
data-id="{{ $value->id }}"
data-pos="{{ $value->pos }}"
data-identifier="{{$identifier_booking_file}}"
data-model="content"
data-back="{{route('admin_settings_emails', ['settings'])}}"
data-route="{{ route('cms_content_all_load_modal') }}">
<span class="fa fa-edit"></span>
</button>
</td>
<td>{{ $value->pos }}</td>
<td>{{ $value->name }}</td>
<td>{{ $value->slug }}</td>
<td>@if($value->isFile()) {!! $value->getPreviewContent() !!} @else {{ $value->getPreviewContent() }} @endif</td>
<td>{{ $value->getFieldName() }}</td>
<td><a class="text-danger" href="{{ route('cms_content_all_delete', [$value->id]) }}" onclick="return confirm('{{__('Wirklich löschen?')}}');"><i class="fa fa-trash-alt"></i></a></td>
</tr>
@endforeach
</tbody>
</table>
<div class="mt-4 ml-3 text-left">
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-load-content"
data-id="new"
data-identifier="{{$identifier_booking_file}}"
data-field="file"
data-model="content"
data-back="{{route('admin_settings_emails', ['settings'])}}"
data-route="{{ route('cms_content_all_load_modal') }}"
>Neue Datei anlegen</button>
</div>
</div>
<hr><hr>
<!-- FEWO -->
<h4 class="mt-4 mb-2 ml-4">Ordner für FeWo/E-Mail Ablage</h4>
<div class="card-datatable table-responsive pt-0">
<table class="datatables-customer-fewo-mail-dirs table table-striped table-bordered">
<thead>
<tr>
<th style="max-width: 60px;">&nbsp;</th>
<th style="width: 2%;">{{__('ID')}}</th>
<th>{{__('Name')}}</th>
<th>{{__('Icon')}}</th>
<th>{{__('Model')}}</th>
<th>{{__('E-Mails')}}</th>
</tr>
</thead>
<tbody>
@php($next_customer_fewo_mail_dir_id = 0)
@foreach($customer_fewo_mail_dirs as $customer_fewo_mail_dir)
<tr>
<td class="not">
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-customer-fewo-mail-dirs"
data-id="{{$customer_fewo_mail_dir->id}}"
data-icon="{{$customer_fewo_mail_dir->getArrayContent('icon')}}"
data-model="{{$customer_fewo_mail_dir->getArrayContent('model')}}"
data-emails="{{\App\Services\Util::_implodeLines($customer_fewo_mail_dir->getArrayContent('emails'))}}"
data-name="{{$customer_fewo_mail_dir->name}}"
data-pos="{{$customer_fewo_mail_dir->pos}}">
<span class="fa fa-edit"></span>
</button>
</td>
<td>{{ $customer_fewo_mail_dir->pos }}</td>
<td>{{ $customer_fewo_mail_dir->name }}</td>
<td>{{ $customer_fewo_mail_dir->getArrayContent('icon') }}</td>
<td>{{ $customer_fewo_mail_dir->getArrayContent('model') }}</td>
<td>
{!! \App\Services\Util::_implodeLines( $customer_fewo_mail_dir->getArrayContent('emails'), "<br>") !!}
</td>
{{-- <td><a class="text-danger" href="" onclick="return confirm('{{__('Wirklich löschen?')}}');"><i class="fa fa-trash-alt"></i></a></td> --}}
</tr>
@php($next_customer_fewo_mail_dir_id = $customer_fewo_mail_dir->pos+1)
@endforeach
</tbody>
</table>
<div class="mt-4 ml-3 text-left">
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-customer-fewo-mail-dirs"
data-id="new"
data-icon=""
data-model=""
data-emails=""
data-name=""
data-pos="{{$next_customer_fewo_mail_dir_id}}"
>Neuen Ordner anlegen</button>
</div>
</div>
<!-- Modal template -->
<div class="modal fade" id="modals-customer-fewo-mail-dirs">
<div class="modal-dialog">
<form class="modal-content" action="{{ route('admin_settings_emails_update') }}" method="post">
@csrf
<input type="hidden" class="form-control" name="id">
<input type="hidden" class="form-control" name="action" value="customer_mail_dirs">
<input type="hidden" class="form-control" name="step" value="settings">
<input type="hidden" class="form-control" name="identifier" value="customer-fewo-mail-dirs">
<input type="hidden" class="form-control" name="field" value="array">
<div class="modal-header">
<h5 class="modal-title">E-Mail Ordner <span class="font-weight-light">anlegen/bearbeiten</span></h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">×</button>
</div>
<div class="modal-body">
<div class="form-row">
<div class="form-group col">
<label for="pos" class="form-label">ID*</label>
<input type="text" class="form-control" name="pos" placeholder="{{__('ID')}}" required>
<em>Die ID definiert die Zuweisung der E-Mails in die jeweiligen Ordner, bei Änderungen der ID können schon zugeordnete E-Mails nicht mehr angezeigt werden.</em>
</div>
</div>
<div class="form-row">
<div class="form-group col">
<label for="name" class="form-label">Name*</label>
<input type="text" class="form-control" name="name" placeholder="{{__('Description')}}" required>
</div>
</div>
<div class="form-row">
<div class="form-group col">
<label for="icon" class="form-label">Icon*</label>
<input type="text" class="form-control" name="icon" placeholder="{{__('Icon')}}" required>
</div>
</div>
<div class="form-row">
<div class="form-group col">
<label for="model" class="form-label">Model <span class="text-muted">(wird benötigt um Unterordner unter Reiseländer zuzuweisen)</span></label>
<input type="text" class="form-control" name="model" placeholder="{{__('Model')}}">
<em>Das Model das muss vorab in der Programmierung erfasst werden.</em>
</div>
</div>
<div class="form-row">
<div class="form-group col">
<label class="form-label" for="emails">Für interene Mails <span class="text-muted">(jede E-Mail in eine extra Zeile)</span></label>
<textarea class="form-control" rows="4" name="emails" cols="50"></textarea>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">{{__('close')}}</button>
<button type="submit" class="btn btn-primary">{{__('save')}}</button>
</div>
</form>
</div>
</div>
<hr>
<h4 class="mt-2 mb-0 ml-4">Allgemeine PDF Dateien für FeWo/E-Mail-Anhänge</h4>
<div class="card-datatable table-responsive pt-0">
<table class="datatables-fewo-email-files table table-striped table-bordered">
<thead>
<tr>
<th style="max-width: 60px;">&nbsp;</th>
<th style="width: 2%;">{{__('POS')}}</th>
<th>{{__('Name')}}</th>
<th>{{__('Slug')}}</th>
<th>{{__('Inhalt')}}</th>
<th>{{__('Type')}}</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach($fewo_email_files as $value)
<tr>
<td class="not">
<button type="button" class="btn icon-btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-load-content"
data-id="{{ $value->id }}"
data-pos="{{ $value->pos }}"
data-identifier="{{$identifier_fewo_file}}"
data-model="content"
data-back="{{route('admin_settings_emails', ['settings'])}}"
data-route="{{ route('cms_content_all_load_modal') }}">
<span class="fa fa-edit"></span>
</button>
</td>
<td>{{ $value->pos }}</td>
<td>{{ $value->name }}</td>
<td>{{ $value->slug }}</td>
<td>@if($value->isFile()) {!! $value->getPreviewContent() !!} @else {{ $value->getPreviewContent() }} @endif</td>
<td>{{ $value->getFieldName() }}</td>
<td><a class="text-danger" href="{{ route('cms_content_all_delete', [$value->id]) }}" onclick="return confirm('{{__('Wirklich löschen?')}}');"><i class="fa fa-trash-alt"></i></a></td>
</tr>
@endforeach
</tbody>
</table>
<div class="mt-4 ml-3 text-left">
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-load-content"
data-id="new"
data-identifier="{{$identifier_fewo_file}}"
data-field="file"
data-model="content"
data-back="{{route('admin_settings_emails', ['settings'])}}"
data-route="{{ route('cms_content_all_load_modal') }}"
>Neue Datei anlegen</button>
</div>
</div>
<script>
$( document ).ready(function() {
$('.datatables-booking-email-files').dataTable({
"bLengthChange": false,
"iDisplayLength": 50,
"order": [[ 1, "desc" ]],
"language": {
"url": "/js/German.json"
}
});
$('.datatables-customer-mail-dirs').dataTable({
"bLengthChange": false,
"iDisplayLength": 50,
"order": [[ 1, "asc" ]],
"language": {
"url": "/js/German.json"
}
});
$('.datatables-customer-fewo-mail-dirs').dataTable({
"bLengthChange": false,
"iDisplayLength": 50,
"order": [[ 1, "asc" ]],
"language": {
"url": "/js/German.json"
}
});
$('.datatables-fewo-email-files').dataTable({
"bLengthChange": false,
"iDisplayLength": 50,
"order": [[ 1, "desc" ]],
"language": {
"url": "/js/German.json"
}
});
$('#modals-customer-mail-dirs').on('show.bs.modal', function (event) {
var button = $(event.relatedTarget);
$(this).find(".modal-content input[name='id']").val(button.data('id'));
$(this).find(".modal-body input[name='name']").val(button.data('name'));
$(this).find(".modal-body input[name='pos']").val(button.data('pos'));
$(this).find(".modal-body input[name='icon']").val(button.data('icon'));
$(this).find(".modal-body input[name='model']").val(button.data('model'));
$(this).find(".modal-body textarea[name='emails']").val(button.data('emails'));
});
$('#modals-customer-fewo-mail-dirs').on('show.bs.modal', function (event) {
var button = $(event.relatedTarget);
$(this).find(".modal-content input[name='id']").val(button.data('id'));
$(this).find(".modal-body input[name='name']").val(button.data('name'));
$(this).find(".modal-body input[name='pos']").val(button.data('pos'));
$(this).find(".modal-body input[name='icon']").val(button.data('icon'));
$(this).find(".modal-body input[name='model']").val(button.data('model'));
$(this).find(".modal-body textarea[name='emails']").val(button.data('emails'));
});
});
</script>
</div>
</div>
</div>
@endsection

View file

@ -1,14 +1,36 @@
{!! Form::open([ 'url' => route('admin_settings_email_template_update'), 'method' => 'post', 'class' => 'modal-content' ]) !!}
{!! Form::open([ 'url' => route('admin_settings_emails_update'), 'method' => 'post', 'class' => 'modal-content' ]) !!}
{{ Form::hidden('action', 'email_template') }}
{{ Form::hidden('step', false) }}
{{ Form::hidden('id', $value->id) }}
<div class="modal-header">
<h5 class="modal-title">E-Mail Vorlagen <span class="font-weight-light">anlegen/bearbeiten</span></h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">×</button>
</div>
<div class="modal-body">
<div class="form-row">
<label class="form-label" for="filter_service_provider_id">Verzeichniss</label>
<select class="custom-select" name="email_template_dir_id" id="email_template_dir_id">
<option value="">Kein Verzeichniss</option>
@foreach($directories as $directory)
<option value="{{$directory->id}}" @if($value->email_template_dir_id === $directory->id) selected @endif>{{$directory->name}}</option>
@endforeach
</select>
</div>
<hr>
<div class="form-row">
<div class="form-group col">
<label for="subject" class="form-label">Betreff*</label>
{{ Form::text('subject', $value->subject, array('class'=>'form-control', 'required'=>true)) }}
<label for="name" class="form-label">Vorlage Bezeichnung*</label>
{{ Form::text('name', $value->name, array('class'=>'form-control', 'required'=>true)) }}
</div>
</div>
<div class="form-row">
<div class="form-group col">
<label for="subject" class="form-label">Betreff</label>
{{ Form::text('subject', $value->subject, array('class'=>'form-control')) }}
</div>
</div>
<div class="form-row">

View file

@ -45,7 +45,6 @@
data-name=""
data-active="1"
data-travelcountry_id="0"
>Neues Reiseprogramm anlegen</button>
</div>
</div>

View file

@ -16,14 +16,22 @@
<a class="nav-link @if($step == false) active show @endif" data-toggle="tab" href="#navs-site">Seite</a>
</li>
<li class="nav-item">
<a class="nav-link @if($step == 'form') active show @endif" data-toggle="tab" href="#navs-form">Formular</a>
<a class="nav-link @if($step === 'form') active show @endif" data-toggle="tab" href="#navs-form">Formular</a>
</li>
<li class="nav-item">
<a class="nav-link @if($step == 'contact') active show @endif" data-toggle="tab" href="#navs-contact">Kontaktdaten</a>
<a class="nav-link @if($step === 'contact') active show @endif" data-toggle="tab" href="#navs-contact">Kontaktdaten</a>
</li>
<li class="nav-item">
<a class="nav-link @if($step == 'travel') active show @endif" data-toggle="tab" href="#navs-travel">Einreisebestimmungen</a>
<a class="nav-link @if($step === 'emails') active show @endif" data-toggle="tab" href="#navs-emails">E-Mails</a>
</li>
<li class="nav-item">
<a class="nav-link @if($step === 'data') active show @endif" data-toggle="tab" href="#navs-data">PDF-Dateien</a>
</li>
<li class="nav-item">
<a class="nav-link @if($step === 'services') active show @endif" data-toggle="tab" href="#navs-services">Leistungen</a>
</li>
<li class="nav-item">
<a class="nav-link @if($step === 'travel') active show @endif" data-toggle="tab" href="#navs-travel">Einreisebestimmungen</a>
</li>
</ul>
@ -31,6 +39,12 @@
<div class="tab-content">
<div class="tab-pane fade @if($step == false) active show @endif" id="navs-site">
<div class="card-body">
<div class="form-row">
<div class="form-group col-sm-12">
<label class="form-label" for="name">{{ __('Name') }} *</label>
{{ Form::text('name', $model->name, array('placeholder'=>__('Name'), 'class'=>'form-control', 'id'=>'name', 'required'=>true)) }}
</div>
</div>
<br>
<h4>Inhalte für Seite</h4>
<div class="form-row">
@ -83,7 +97,7 @@
</div>
</div>
<div class="tab-pane fade @if($step == 'form') active show @endif" id="navs-form">
<div class="tab-pane fade @if($step === 'form') active show @endif" id="navs-form">
<div class="card-body">
<br>
<h4>Inhalte für Formular</h4>
@ -102,27 +116,20 @@
</div>
</div>
<div class="tab-pane fade @if($step == 'contact') active show @endif" id="navs-contact">
<div class="tab-pane fade @if($step === 'contact') active show @endif" id="navs-contact">
<div class="card-body">
<h4>Land/Länder für Kontaktdaten definieren</h4>
<div class="form-row">
<div class="form-group col-sm-12">
<label class="form-label" for="contact_lands">Kontaktdaten aus folgenden Ländern nehmen</label>
<select class="selectpicker" data-style="btn-default" name="contact_lands[]" multiple>
{!! HTMLHelper::getTravelCountriesOptions($model->contact_lands) !!}
</select>
<em>Land/Länder müssen angeben sein, die Kontaktdaten des Landes (Reiselandes) werden nacheinander im PDF (RA, RB, Voucher) eingefügt.</em>
<em>Das Land selbst muss auch hier selbst aufgeführt werden, wenn es angezeicht werden soll. Die Kontaktdaten der definierten Länder (Reiselandes) werden nacheinander am Ende des PDF's (RA, RB, Voucher) eingefügt.</em>
</div>
</div>
<hr>
<h4>E-Mail-Adressen</h4>
<div class="form-row">
<div class="form-group col-sm-6">
<label class="form-label" for="contact_headline">Der Agenturen für interene Mails <span class="text-muted">(jede E-Mail in eine extra Zeile)</span></label>
{{ Form::textarea('contact_emails', \App\Services\Util::_implodeLines($model->contact_emails), ['class' => 'form-control', 'rows'=>4]) }}
</div>
</div>
<hr>
<h4>Kontaktdaten PDF</h4>
<h4>Kontaktdaten im PDF</h4>
<div class="form-row">
<div class="form-group col-sm-12">
<label class="form-label" for="contact_headline">Überschrift</label>
@ -147,7 +154,7 @@
</div>
</div>
<hr>
<h4>Rückfragen PDF</h4>
<h4>Rückfragen im PDF</h4>
<p>Übergreifende Texte für jedes Land sind unter: <a href="{{route('cms_content_all')}}">Inhalte Allgemein</a><br>
- PDF Footer Hinweise Rückfragen<br>
- PDF Footer Hinweise Reisebedingungen<br>
@ -164,7 +171,161 @@
</div>
</div>
<div class="tab-pane fade @if($step == 'travel') active show @endif" id="navs-travel">
<div class="tab-pane fade @if($step === 'emails') active show @endif" id="navs-emails">
<div class="card-body">
<div class="form-row">
<div class="form-group col-sm-12">
<label class="form-label" for="mail_dir_name">Angezeigter Ordnername für dieses Land*</label>
{{ Form::text('mail_dir_name', $model->mail_dir_name, array('placeholder'=>__('Name'), 'class'=>'form-control', 'id'=>'name')) }}
</div>
</div>
<hr>
<h4>Vordefinierte E-Mail-Adressen <span class="text-muted">für dieses Reiseland</span></h4>
<div class="form-row">
<div class="form-group col-sm-12">
<div class="form-group col-sm-">
<label class="form-label" for="contact_headline">der Agenturen für interene Mails <span class="text-muted">(jede E-Mail in eine extra Zeile)</span></label>
{{ Form::textarea('contact_emails', \App\Services\Util::_implodeLines($model->contact_emails), ['class' => 'form-control', 'rows'=>4]) }}
</div>
</div>
</div>
<hr>
<h4>Unterordner für die E-Mail Ablage für dieses Land</h4>
<p>Unterordner können unter <a href="{{route('admin_settings_emails', ['settings'])}}">Einstellungen -> E-Mails / Einstellungen</a> bearbeitet werden</p>
<hr>
@foreach(App\Services\Booking::getCustomerMailDirs() as $customer_mail_dir)
@if($customer_mail_dir->getArrayContent('model'))
<h5><i class="ion {{$customer_mail_dir->getArrayContent('icon')}}"></i> {{$customer_mail_dir->name}} <span class="text-muted">angezeigte E-Mail-Ordner</span></h5>
<div class="form-row">
<div class="form-group col-sm-12">
<label class="form-label" for="mail_dirs">Unterordner hinzufügen</label>
<select class="selectpicker" data-style="btn-default" name="mail_dirs[{{$customer_mail_dir->pos}}][]" multiple data-live-search="true">
{!! HTMLHelper::getCustomerMailDirsOptions($customer_mail_dir, $model->getMailDirs($customer_mail_dir->pos)) !!}
</select>
<em>Zum jeweiligen Reiseland können hier weitere Unterordner für die E-Mail-Ablage ausgewählt werden.
Die vordefinierten E-Mail-Adressen des Reiselandes werden bei einer neuen E-Mail entsprechend einsetzt.</em>
</div>
</div>
<hr>
@endif
@endforeach
<button type="submit" name="action" value="emails" class="btn btn-submit">{{ __('save changes') }}</button>&nbsp;
</div>
</div>
<div class="tab-pane fade @if($step === 'data') active show @endif" id="navs-data">
<div class="card-body">
<br>
<h4>PDF-Dateien <span class="text-muted">für dieses Reiseland</span></h4>
<div class="table-responsive" id="booking_files_table">
<table class="table table-striped table-sm">
<thead>
<tr>
<th>#</th>
<th>Datei</th>
<th>Inhalt</th>
<th>Datum</th>
<th>&nbsp;</th>
</tr>
</thead>
<tbody>
@if($model->general_files)
@php($general_files_count = 1)
@foreach($model->general_files as $general_file)
<tr>
<th scope="row">{{$general_files_count++}}</th>
<td>
<a target="_blank" href="{{ $general_file->getURL() }}" class="badge badge-md badge-secondary">
<i class="{{$general_file->getIconExt()}} mr-1"></i> {{$general_file->original_name}}
</a>
</td>
<td>
{{ $general_file->mine }} | {{ $general_file->formatBytes() }}
</td>
<td>{{\App\Services\Util::_format_date($general_file->created_at, 'date')}}</td>
<td>
<a href="{{ $general_file->getURL('download') }}" class="btn btn-xs btn-default"
title="Download" data-placement="left" rel="tooltip">
<i class="fa fa-download"></i>
</a>
<a class="ml-2 btn btn-xs btn-danger" href="{{ route('admin_settings_travel_country_delete', [$general_file->id, 'general_file']) }}" onclick="return confirm('{{__('Wirklich löschen?')}}');"><i class="fa fa-trash-alt"></i></a>
</td>
</tr>
@endforeach
@endif
</tbody>
</table>
</div>
<div class="text-right d-block w-100">
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-load-content"
data-id="{{$model->id}}"
data-model="GeneralFile"
data-action="modal-upload-travel_country-file"
data-back="{{route('admin_settings_travel_country_detail', [$model->id, 'data'])}}"
data-url="{{ route('modal_load') }}"
data-route="{{ route('modal_load') }}"><i class="ion ion-md-cloud-upload"></i>&nbsp;Datei hinzufügen</button>
</div>
</div>
</div>
<div class="tab-pane fade @if($step === 'services') active show @endif" id="navs-services">
<div class="card-body">
<br>
<h4>Länderleistungen/Agenturleistungen <span class="text-muted">für dieses Reiseland</span></h4>
<div class="table-responsive" id="booking_files_table">
<table class="table table-striped table-sm">
<thead>
<tr>
<th style="width: 2%;">&nbsp;</th>
<th style="width: 6%;">{{__('POS')}}</th>
<th>Leistung</th>
<th>Beschreibung</th>
<th>&nbsp;</th>
</tr>
</thead>
<tbody>
@if($model->travel_country_services)
@foreach($model->travel_country_services as $travel_country_service)
<tr>
<td class="not">
<button type="button" class="btn icon-btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-load-content"
data-id="{{$travel_country_service->id}}"
data-model="TravelCountryService"
data-action="modal-travel_country-services"
data-back="{{route('admin_settings_travel_country_detail', [$model->id, 'services'])}}"
data-url="{{ route('admin_settings_travel_country_update', [$model->id]) }}"
data-route="{{ route('modal_load') }}"><span class="fa fa-edit"></span></button>
</td>
<td>{{$travel_country_service->pos }}</td>
<td>{{$travel_country_service->name}}</td>
<td>{{$travel_country_service->description}}</td>
<td>
<a class="ml-2 btn btn-xs btn-danger" href="{{ route('admin_settings_travel_country_delete', [$travel_country_service->id, 'country_service']) }}" onclick="return confirm('{{__('Wirklich löschen?')}}');"><i class="fa fa-trash-alt"></i></a>
</td>
</tr>
@endforeach
@endif
</tbody>
</table>
</div>
<div class="text-right d-block w-100">
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-load-content"
data-id="new"
data-model="TravelCountryService"
data-action="modal-travel_country-services"
data-back="{{route('admin_settings_travel_country_detail', [$model->id, 'services'])}}"
data-url="{{ route('admin_settings_travel_country_update', [$model->id]) }}"
data-route="{{ route('modal_load') }}"><i class="ion ion-md-add-circle"></i>&nbsp;Leistung hinzufügen</button>
</div>
</div>
</div>
<div class="tab-pane fade @if($step === 'travel') active show @endif" id="navs-travel">
<div class="card-body">
<br>
<h4>Einreisebestimmungen</h4>
@ -175,22 +336,16 @@
{{ Form::textarea('travel_nationality_requirement['.$travel_nationality->id.']', $model->getNationalityRequirement($travel_nationality->id), ['class' => 'form-control summernote-small', 'id'=>'travel_nationality_requirement_'.$travel_nationality->id]) }}
</div>
</div>
@endforeach
<button type="submit" name="action" value="travel" class="btn btn-submit">{{ __('save changes') }}</button>&nbsp;
</div>
</div>
</div>
</div>
<div class="text-left mt-3">
<a href="{{route('admin_settings_travel_country')}}" class="btn btn-default">{{ __('back') }}</a>
</div>
{!! Form::close() !!}
<script>

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