Passolution

This commit is contained in:
Kevin Adametz 2020-10-16 16:18:34 +02:00
parent f79806ffe8
commit 06fc3ba919
31 changed files with 337 additions and 119 deletions

94
.idea/workspace.xml generated
View file

@ -2,8 +2,6 @@
<project version="4">
<component name="ChangeListManager">
<list default="true" id="e1ac1cea-a1a5-4c16-b5f0-5908c7d368de" name="Default Changelist" comment="">
<change afterPath="$PROJECT_DIR$/.idea/codeStyles/codeStyleConfig.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/Services/Passolution.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" />
@ -27,35 +25,32 @@
<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/sys/tools/import.blade.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/fewo/infos/2020/Anreiseinfo-12445.pdf" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/public/files/shares/20_cropped_1597925108.jpg" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/public/files/shares/21_cropped_1597925617.jpg" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/public/files/shares/Bilder/Jordanien/Berg-Nebo/berg-nebo.jpeg" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/public/files/shares/Bilder/Jordanien/Berg-Nebo/thumbs/berg-nebo.jpeg" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/public/files/shares/thumbs/20_cropped_1597925108.jpg" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/public/files/shares/thumbs/21_cropped_1597925617.jpg" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/public/files/shares/youtube/Aegypten/Kairo/Altes-aeyptische-Museum-in-Kairo-gypten.youtube" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/public/files/shares/youtube/Aegypten/Kairo/thumbs/Altes-aeyptische-Museum-in-Kairo-gypten.jpg" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/public/files/shares/youtube/Das-Sonnenwunder-von-Abu-Simbel-in-gypten-wird-gefeiert.youtube" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/public/files/shares/youtube/Tempel-Nefertari-und-Ramses-am-Nassersee-in-Abu-Simbel.youtube" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/public/files/shares/youtube/thumbs/Das-Sonnenwunder-von-Abu-Simbel-in-gypten-wird-gefeiert.jpg" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/public/files/shares/youtube/thumbs/Tempel-Nefertari-und-Ramses-am-Nassersee-in-Abu-Simbel.jpg" afterDir="false" />
<change afterPath="$PROJECT_DIR$/resources/views/pdf/passolution.blade.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/public/pdf/passolution/Einreisebestimmungen_de_AT-EG.pdf" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/public/pdf/passolution/Einreisebestimmungen_de_AT_EG.pdf" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/public/pdf/passolution/Einreisebestimmungen_de_CH-EG.pdf" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/public/pdf/passolution/Einreisebestimmungen_de_CH_EG.pdf" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/public/pdf/passolution/Einreisebestimmungen_de_DE-EG,IL.pdf" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/public/pdf/passolution/Einreisebestimmungen_de_DE-EG.pdf" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/public/pdf/passolution/Einreisebestimmungen_de_DE_0.pdf" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/public/pdf/passolution/Einreisebestimmungen_de_DE_EG,IL.pdf" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/public/pdf/passolution/Einreisebestimmungen_de_DE_EG.pdf" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/public/pdf/passolution/Einreisebestimmungen_de_IT-EG.pdf" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/public/pdf/passolution/Einreisebestimmungen_de_IT_EG.pdf" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/public/pdf/passolutioneinreisebestimmungendede0pdf" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/API/BookingController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/API/BookingController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/API/CMSContentController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/API/CMSContentController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/API/CMSContentInfoController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/API/CMSContentInfoController.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/SyS/Tools/ContentLinkController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/SyS/Tools/ContentLinkController.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/Sym/TravelCountry.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Models/Sym/TravelCountry.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/TravelNationality.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Models/TravelNationality.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$/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_03_05_114656_create_travel_nationality_table.php" beforeDir="false" afterPath="$PROJECT_DIR$/database/migrations/2019_03_05_114656_create_travel_nationality_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_05_15_111351_create_customer_fewo_mails_table.php" beforeDir="false" afterPath="$PROJECT_DIR$/database/migrations/2020_05_15_111351_create_customer_fewo_mails_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$/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/CMSFeWoController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/CMS/CMSFeWoController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/CustomerFileController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/CustomerFileController.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/Participant.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Models/Participant.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Services/CreatePDF.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Services/CreatePDF.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Services/Passolution.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Services/Passolution.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$/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_152709_create_participant_table.php" beforeDir="false" afterPath="$PROJECT_DIR$/database/migrations/2020_01_29_152709_create_participant_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" />
@ -103,20 +98,8 @@
<change beforePath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/src/views/index.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/src/views/index.blade.php" afterDir="false" />
<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/js/filemanager.js" beforeDir="false" afterPath="$PROJECT_DIR$/public/js/filemanager.js" 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/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/user/booking/_detail_invoice.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/travel/user/booking/_detail_invoice.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/travel/user/booking/_detail_sm_mails.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/travel/user/booking/_detail_sm_mails.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$/routes/api.php" beforeDir="false" afterPath="$PROJECT_DIR$/routes/api.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" />
<change beforePath="$PROJECT_DIR$/storage/app/public/files/shares/Kalkofes-Mattscheibe---Jonas-Dnzel---AfD-meets-Tinder.youtube" beforeDir="false" afterPath="$PROJECT_DIR$/storage/app/public/files/shares/Kalkofes-Mattscheibe---Jonas-Dnzel---AfD-meets-Tinder.youtube" afterDir="false" />
<change beforePath="$PROJECT_DIR$/storage/app/public/files/shares/youtube/Aegypten/Kairo/Altes-gyptische-Museum-in-Kairo-gypten.youtube" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/storage/app/public/files/shares/youtube/Aegypten/Kairo/thumbs/Altes-gyptische-Museum-in-Kairo-gypten.jpg" beforeDir="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/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" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -174,7 +157,7 @@
</commandsHistory>
</component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager" />
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component>
<component name="HighlightingSettingsPerFile">
<setting file="file://$PROJECT_DIR$/app/Http/Controllers/SyS/Tools/ContentLinkController.php" root0="FORCE_HIGHLIGHTING" root1="SKIP_HIGHLIGHTING" />
@ -350,7 +333,7 @@
<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/sys/tools" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/resources/views/pdf" />
<property name="nodejs_package_manager_path" value="npm" />
<property name="settings.editor.selected.configurable" value="reference.settings.ide.settings.web.browsers" />
<property name="ts.external.directory.path" value="$APPLICATION_HOME_DIR$/plugins/JavaScriptLanguage/jsLanguageServicesImpl/external" />
@ -358,11 +341,11 @@
</component>
<component name="RecentsManager">
<key name="CopyFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$/resources/views/pdf" />
<recent name="$PROJECT_DIR$/resources/views/sys/tools" />
<recent name="$PROJECT_DIR$/app/Services" />
<recent name="$PROJECT_DIR$/resources/views/settings/categorie" />
<recent name="$PROJECT_DIR$/app/Models" />
<recent name="$PROJECT_DIR$/app/Http/Controllers/Settings" />
</key>
<key name="MoveFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$/resources/views/iq/modal" />
@ -838,6 +821,11 @@
<workItem from="1599660603346" duration="3426000" />
<workItem from="1600072901519" duration="199000" />
<workItem from="1600181011694" duration="1654000" />
<workItem from="1600328782967" duration="70000" />
<workItem from="1601475795112" duration="725000" />
<workItem from="1602667789589" duration="14596000" />
<workItem from="1602759989843" duration="29000" />
<workItem from="1602760025394" duration="965000" />
</task>
<servers />
</component>
@ -867,34 +855,28 @@
<screen x="0" y="23" width="2560" height="1417" />
</state>
<state x="772" y="369" key="#Plugins/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1594817275541" />
<state x="962" y="536" key="#com.intellij.fileTypes.FileTypeChooser" timestamp="1593421255813">
<screen x="0" y="23" width="2560" height="1417" />
</state>
<state x="962" y="536" key="#com.intellij.fileTypes.FileTypeChooser/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1593421255813" />
<state x="723" y="23" key="#com.intellij.refactoring.rename.AutomaticRenamingDialog" timestamp="1596546431493">
<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/2560.-527.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1596546431493" />
<state x="1018" y="488" key="#com.jetbrains.php.actions.copyPaste.importReferences.PhpImportReferencesDialog" timestamp="1598531475446">
<state x="1018" y="488" key="#com.jetbrains.php.actions.copyPaste.importReferences.PhpImportReferencesDialog" timestamp="1602690104099">
<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="1598531475446" />
<state x="1018" y="488" key="#com.jetbrains.php.actions.copyPaste.importReferences.PhpImportReferencesDialog/-2560.23.2560.1417/2560.-555.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1602690104099" />
<state x="815" y="370" key="SettingsEditor" timestamp="1596782995537">
<screen x="0" y="23" width="2560" height="1417" />
</state>
<state x="815" y="370" key="SettingsEditor/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1596782995537" />
<state x="756" y="429" key="SettingsEditor/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@2560.-527.1440.2537" timestamp="1592914034552" />
<state x="1063" y="650" key="com.intellij.openapi.vcs.update.UpdateOrStatusOptionsDialogupdate-v2" timestamp="1594741295723">
<screen x="0" y="23" width="2560" height="1417" />
</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="1594741295723" />
<state x="116" y="290" width="1487" height="939" key="find.popup" timestamp="1600181889953">
<state x="116" y="290" width="1487" height="939" key="find.popup" timestamp="1602760776314">
<screen x="0" y="23" width="2560" height="1417" />
</state>
<state x="116" y="290" width="1487" height="939" key="find.popup/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1598972743240" />
<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="1593692693354" />
<state x="116" y="290" width="1487" height="939" key="find.popup/-2560.23.2560.1417/2560.-555.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1600181889953" />
<state x="-1885" y="397" width="1487" height="939" key="find.popup/2560.-527.1440.2537/-2560.23.2560.1417/0.23.2560.1417@-2560.23.2560.1417" timestamp="1593528261486" />
<state x="116" y="290" width="1487" height="939" key="find.popup/-2560.23.2560.1417/2560.-555.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1602760776314" />
<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="1596272276087" />
<state x="946" y="348" width="670" height="676" key="search.everywhere.popup" timestamp="1600181903721">
<screen x="0" y="23" width="2560" height="1417" />

View file

@ -90,6 +90,7 @@ class BookingController extends Controller
'participant_firstname' => isset($travel_booking->participants[0]['first_name']) ? $travel_booking->participants[0]['first_name'] : null,
'participant_birthdate' => isset($travel_booking->participants[0]['birthday']) ? date( "Y-m-d", strtotime($travel_booking->participants[0]['birthday'])) : null,
'participant_salutation_id' => isset($travel_booking->participants[0]['gender']) ? $travel_booking->participants[0]['gender'] : null,
'nationality_id' => isset($travel_booking->participants[0]['nationality']) ? $travel_booking->participants[0]['nationality'] : null,
'travel_company_id' => isset($travel_booking->service_items[0]['travel_company_id']) ? $travel_booking->service_items[0]['travel_company_id'] : null,
'price' => $travel_booking->price,
'price_total' => $travel_booking->price_total,
@ -113,6 +114,7 @@ class BookingController extends Controller
'participant_birthdate' => date( "Y-m-d", strtotime($participant['birthday'])),
'participant_salutation_id' => $participant['gender'],
'participant_child' => $participant['child'],
'nationality_id' =>$participant['nationality'],
]);
}
}

View file

@ -25,8 +25,8 @@ class CMSContentController extends Controller
'destco' => $destco,
'tdat' => $tdat,
];
$passolution = new Passolution();
$passolution->fill($data);
$passolution = new Passolution($data);
//$passolution->fill($data);
$html = $passolution->read();
return response()->json(['response' => $html]);
@ -71,12 +71,15 @@ class CMSContentController extends Controller
'tdat' => $tdat,
];
$passolution = new Passolution();
$passolution->fill($data);
$html = $passolution->read();
return response()->json(['success' => true, "response" => $html, "data" => $data], 200, $headers);
$passolution = new Passolution($data);
//$passolution->fill($data);
$html = $passolution->read(true);
return response()->json(['success' => true,
"response" => $html,
"pdf"=> $passolution->getPdfPath(['filename', 'url']),
"additionalContent" => $passolution->additionalContent,
"data" => $data],
200, $headers);
}

View file

@ -40,6 +40,7 @@ class BookingController extends Controller
}else{
$booking = Booking::findOrFail($id);
$booking->getPassolutionPDF(true);
$id = $booking->id;
}
$data = [

View file

@ -140,7 +140,11 @@ class CMSFeWoController extends Controller
if($data['action'] === 'previewPDF'){
$pdf_content = BookingFewo::getFeWoCMSContentForPDF($this->identifier_content, $identifier_fewo);
$pdf_file = new CreatePDF('pdf.fewo_instructions');
return $pdf_file->create($fewo, $pdf_content);
return $pdf_file->create([
'contents' => $pdf_content,
'fewo' => $fewo
]
);
}
if($data['action'] === 'addItem' && isset($data['content_pos_id'])) {

View file

@ -101,8 +101,10 @@ class CustomerFileController extends Controller
$pdf_name = \App\Services\BookingFewo::getFeWoInstructionPDFName($fewo);
$pdf_content = BookingFewo::getFeWoCMSContentForPDF($identifier_content, $identifier_fewo);
$pdf_file = new CreatePDF('pdf.fewo_instructions');
return $pdf_file->create($fewo, $pdf_content, $pdf_name, $cd);
return $pdf_file->create([
'contents' => $pdf_content,
'fewo' => $fewo
], $pdf_name, $cd);
break;
}

View file

@ -6,6 +6,7 @@
namespace App\Models;
use App\Services\Passolution;
use App\Services\Util;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Collection;
@ -245,6 +246,7 @@ class Booking extends Model
'participant_firstname',
'participant_birthdate',
'participant_salutation_id',
'nationality_id',
'ev_number',
'merlin_knr',
'merlin_order_number',
@ -335,6 +337,7 @@ class Booking extends Model
2 => 'success',
];
protected $passolutionPDFs = [];
/*public function branch()
{
@ -514,6 +517,11 @@ class Booking extends Model
return $this->hasMany(BookingProviderService::class, 'booking_id')->where('status', '=', 0);
}
public function travel_nationality()
{
return $this->belongsTo(TravelNationality::class, 'nationality_id');
}
public function hasBookingServicesUnchecked(){
$country_services = true;
$provider_services = true;
@ -537,6 +545,37 @@ class Booking extends Model
return false;
}
public function getPassolutionPDF($create = false){
$nats = [];
if(count($this->passolutionPDFs)){
return $this->passolutionPDFs;
}
$destco = $this->travel_country->destco;
if($this->travel_nationality){
$nats[$this->travel_nationality->nat] = $this->travel_nationality->nat;
}
if($this->participants->count()){
foreach ($this->participants as $participant){
if($participant->travel_nationality){
$nats[$participant->travel_nationality->nat] = $participant->travel_nationality->nat;
}
}
}
foreach ($nats as $nat){
$data = [
'nat' => $nat,
'destco' => $destco,
];
$passolution = new Passolution($data);
$this->passolutionPDFs[] = $passolution->findOrCreatePDF($create);
}
return $this->passolutionPDFs;
}
public function calculate_price_total()
{
$travel_draft_item = false;

View file

@ -57,7 +57,8 @@ class Participant extends Model
'participant_firstname',
'participant_birthdate',
'participant_salutation_id',
'participant_child'
'participant_child',
'nationality_id'
];
public function booking()
@ -69,4 +70,9 @@ class Participant extends Model
{
return $this->belongsTo(Salutation::class, 'participant_salutation_id');
}
public function travel_nationality()
{
return $this->belongsTo(TravelNationality::class, 'nationality_id');
}
}

View file

@ -3,6 +3,7 @@ namespace App\Services;
use App\Libraries\CouponPDF;
use App\Models\Coupon;
use Storage;
class CreatePDF{
@ -15,20 +16,16 @@ class CreatePDF{
$this->view = $view;
}
public function create($fewo, $contents, $name='test.pdf', $output='stream'){
public function create($data, $name='test.pdf', $output='stream', $path = false){
header('Content-type: text/html; charset=UTF-8') ;//chrome
//dd($data);
$data = [
'contents' => $contents,
'fewo' => $fewo,
];
$pdf = app('dompdf.wrapper');
$pdf->getDomPDF()->set_option("enable_php", true);
$pdf->loadView($this->view, $data);
$pdf->setPaper('A4', 'portrait');
if($output === 'stream'){
return $pdf->stream($name);
}
@ -37,22 +34,10 @@ class CreatePDF{
}
if($output === 'save'){
/* $dir = $invoice->getInvoiceStorageDir();
if(!Storage::disk('invoices')->exists( $dir )){
Storage::disk('invoices')->makeDirectory($dir); //creates directory
}
$path = Storage::disk('invoices')->getAdapter()->getPathPrefix();
if($preview){
$filename = "preview.pdf";
}else{
$filename = $invoice->invoice_number.".pdf";
}
$pdf->save($path.$dir.$filename);
return $path.$dir.$filename; */
//return $pdf->download($name);
if($path){
$pdf->save($path.$name);
return $path.$name;
}
}
}

View file

@ -2,6 +2,7 @@
namespace App\Services;
use GuzzleHttp\Client;
use Storage;
class Passolution
{
@ -21,8 +22,16 @@ class Passolution
private $enr;
private $agency;
private $htmlText = "";
private $pdfPath = [];
public function __construct()
private $pdf_dir = "";
private $pdf_path = "";
private $pdf_name = "";
public $additionalContent = "";
public function __construct($data = [])
{
//User-ID of the travel agency to which the data is forwarded
$this->aid = "sterntours@passolution.de";
@ -44,7 +53,10 @@ class Passolution
$this->enr = 123123;
//Agency number of the travel agency to which the data is forwarded
$this->agency = 1000;
$this->fill();
$this->pdf_dir = 'pdf/passolution/';
$this->fill($data);
}
@ -57,11 +69,11 @@ class Passolution
//Country-Code of the destination
$this->destco = isset($data['destco']) ? $data['destco'] : 'de';
//Travel dates in format DD-MM-YYYY
$this->tdat = isset($data['tdat']) ? $data['tdat'] : '20-12-2020';
$this->tdat = isset($data['tdat']) ? $data['tdat'] : date("d-m-Y");
}
public function read()
public function read($create = false, $return = true)
{
$url = "https://api01.passolution.de/condition/search.php";
@ -94,47 +106,122 @@ class Passolution
if(isset($body->status) && $body->status !== 200){
return isset($body->message) ? $body->message : '';
}
$text = "";
$this->htmlText = "";
if(is_array($body->response)){
foreach ($body->response as $response){
$text .= "<p><strong>".$response->additionalContent."</strong></p>";
$this->htmlText .= "<p><strong>".$response->additionalContent."</strong></p>";
$this->additionalContent = trim(substr($response->additionalContent, (strpos($response->additionalContent, "/")+1)));
$text .= "<h2>".$response->entry->response->headline."</h2>";
$text .= "<p>".$response->entry->response->content."</p>";
$this->htmlText .= "<h2>".$response->entry->response->headline."</h2>";
$this->htmlText .= "<p>".$response->entry->response->content."</p>";
$text .= "<h2>".$response->visa->response->headline."</h2>";
$text .= "<p>".$response->visa->response->content."</p>";
$this->htmlText .= "<h2>".$response->visa->response->headline."</h2>";
$this->htmlText .= "<p>".$response->visa->response->content."</p>";
$text .= "<h2>".$response->transitvisa->response->headline."</h2>";
$text .= "<p>".$response->transitvisa->response->content."</p>";
$this->htmlText .= "<h2>".$response->transitvisa->response->headline."</h2>";
$this->htmlText .= "<p>".$response->transitvisa->response->content."</p>";
$text .= "<h2>".$response->inoculation->response->headline."</h2>";
$text .= "<p>".$response->inoculation->response->content."</p>";
$this->htmlText .= "<h2>".$response->inoculation->response->headline."</h2>";
$this->htmlText .= "<p>".$response->inoculation->response->content."</p>";
}
}else{
$text .= "<p><strong>".$body->response->additionalContent."</strong></p>";
$this->htmlText .= "<p><strong>".$body->response->additionalContent."</strong></p>";
$this->additionalContent = trim(substr($body->response->additionalContent, (strpos($body->response->additionalContent, "/") +1)));
$text .= "<h2>".$body->response->entry->headline."</h2>";
$text .= "<p>".$body->response->entry->content."</p>";
$this->htmlText .= "<h2>".$body->response->entry->headline."</h2>";
$this->htmlText .= "<p>".$body->response->entry->content."</p>";
$text .= "<h2>".$body->response->visa->headline."</h2>";
$text .= "<p>".$body->response->visa->content."</p>";
$this->htmlText .= "<h2>".$body->response->visa->headline."</h2>";
$this->htmlText .= "<p>".$body->response->visa->content."</p>";
$text .= "<h2>".$body->response->transitvisa->headline."</h2>";
$text .= "<p>".$body->response->transitvisa->content."</p>";
$this->htmlText .= "<h2>".$body->response->transitvisa->headline."</h2>";
$this->htmlText .= "<p>".$body->response->transitvisa->content."</p>";
$text .= "<h2>".$body->response->inoculation->headline."</h2>";
$text .= "<p>".$body->response->inoculation->content."</p>";
$this->htmlText .= "<h2>".$body->response->inoculation->headline."</h2>";
$this->htmlText .= "<p>".$body->response->inoculation->content."</p>";
}
return nl2br($text);
if($create){
$this->createPDF();
}
return nl2br($this->htmlText);
}
}
public function createPDF(){
$this->createPDFName();
$this->storagePath();
$this->onlyCreatePDF();
$this->pdfPath = [
'filename' => $this->pdf_name,
'disk' => Storage::disk('public')->path( $this->pdf_dir.$this->pdf_name ),
'url' => Storage::disk('public')->url($this->pdf_dir.$this->pdf_name)
];
return $this->pdfPath;
}
public function onlyCreatePDF(){
$pdf_file = new CreatePDF('pdf.passolution');
$pdf_file->create(['contents' => $this->htmlText], $this->pdf_name, 'save', $this->pdf_path.$this->pdf_dir);
}
public function findOrCreatePDF($create = false){
$this->createPDFName();
$this->storagePath();
$bool = Storage::disk('public')->exists( $this->pdf_dir.$this->pdf_name );
if(!$bool && $create){
$this->read();
$this->onlyCreatePDF();
$bool = true;
}
if($bool){
$this->pdfPath = [
'filename' => $this->pdf_name,
'disk' => Storage::disk('public')->path( $this->pdf_dir.$this->pdf_name ),
'url' => Storage::disk('public')->url($this->pdf_dir.$this->pdf_name),
'size' => Storage::disk('public')->size($this->pdf_dir.$this->pdf_name),
'date' => Storage::disk('public')->lastModified($this->pdf_dir.$this->pdf_name),
];
}
return $this->pdfPath;
}
public function getPdfPath($key = null){
if($key !== null && is_array($key)){
$ret = [];
foreach ($key as $k){
if(isset($this->pdfPath[$k])){
$ret[$k] = $this->pdfPath[$k];
}
}
return $ret;
}
if($key !== null && isset($this->pdfPath[$key])){
return $this->pdfPath[$key];
}
return $this->pdfPath;
}
public function createPDFName(){
$this->pdf_name = "Einreisebestimmungen_".$this->lang."_".$this->nat."-".$this->destco.".pdf";
}
public function storagePath(){
if(!Storage::disk('public')->exists( $this->pdf_dir )){
Storage::disk('public')->makeDirectory($this->pdf_dir); //creates directory
}
$this->pdf_path = Storage::disk('public')->getAdapter()->getPathPrefix();
}
}
/*

View file

@ -289,5 +289,18 @@ class Util
return $content;
}
public static function _formatBytes($size, $precision = 2)
{
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

@ -40,6 +40,7 @@ class CreateBookingTable extends Migration
$table->string('participant_firstname', 255)->nullable();
$table->date('participant_birthdate')->nullable();
$table->bigInteger('participant_salutation_id')->nullable();
$table->unsignedInteger('nationality_id')->nullable();
$table->string('ev_number', 255)->nullable();
$table->string('merlin_knr', 255)->nullable();
$table->string('merlin_order_number', 255)->nullable();

View file

@ -25,6 +25,8 @@ class CreateParticipantTable extends Migration
$table->date('participant_birthdate')->nullable();
$table->bigInteger('participant_salutation_id')->nullable();
$table->tinyInteger('participant_child')->nullable()->default(0);
$table->unsignedInteger('nationality_id')->nullable();
$table->index('booking_id', 'participant_booking_id_idx');
$table->index('participant_salutation_id', 'participant_participant_salutation_id_idx');

View file

@ -30,6 +30,7 @@
</a>
</td>
<td>
Reise |
Gesamtpreis: {{ \App\Services\Util::_number_format($booking_application->total)}} &euro;
</td>
<td>{{\App\Services\Util::_format_date($booking_application->updated_at, 'date')}}</td>
@ -53,6 +54,7 @@
</a>
</td>
<td>
Reise |
Gesamtpreis: {{ \App\Services\Util::_number_format($booking_confirmation->total)}} &euro; |
Anzahlung: {{ \App\Services\Util::_number_format($booking_confirmation->deposit)}} &euro; |
Restzahlung: {{ \App\Services\Util::_number_format($booking_confirmation->final_payment)}} &euro;
@ -78,7 +80,7 @@
</a>
</td>
<td>
Stornobetrag: {{ \App\Services\Util::_number_format($booking_storno->total)}} &euro;
Storno | Betrag: {{ \App\Services\Util::_number_format($booking_storno->total)}} &euro;
</td>
<td>{{\App\Services\Util::_format_date($booking_storno->updated_at, 'date')}}</td>
<td>
@ -100,7 +102,7 @@
<i class="fa fa-file-pdf mr-1"></i> Gutschein {{$coupon->number}}
</a>
</td>
<td>
<td>Gutschein |
Wert: {{ \App\Services\Util::_number_format($coupon->value)}} &euro; |
bis: {{\App\Services\Util::_format_date($coupon->valid_date, 'date')}} |
@if($coupon->is_redeemed) <i class="fa fa-check-circle text-success"></i> {{\App\Services\Util::_format_date($coupon->redeem_date, 'date')}} @else <i class="fa fa-times-circle text-danger"></i> @endif
@ -234,6 +236,30 @@
@endif
@endforeach
@foreach($booking->getPassolutionPDF() as $PassolutionPDF)
@if($PassolutionPDF)
<tr>
<th scope="row">{{$booking_files_count++}}</th>
<td>
<a target="_blank" href="{{ $PassolutionPDF['url'] }}" class="badge badge-md badge-next">
<i class="fa fa-file-pdf mr-1"></i> {{$PassolutionPDF['filename']}}
</a>
</td>
<td>
Passolution |
{{ \App\Services\Util::_formatBytes($PassolutionPDF['size']) }}
</td>
<td>{{\App\Services\Util::_format_date($PassolutionPDF['date'], 'date')}}</td>
<td>
<a href="{{ $PassolutionPDF['url'] }}" class="btn btn-xs btn-default"
title="Download" data-placement="left" rel="tooltip" download="">
<i class="fa fa-download"></i>
</a>
</td>
</tr>
@endif
@endforeach
@if($booking->booking_files)
@foreach($booking->booking_files as $booking_file)
<tr>
@ -244,6 +270,7 @@
</a>
</td>
<td>
hinzugefügt |
{{ $booking_file->mine }} | {{ $booking_file->formatBytes() }}
</td>
<td>{{\App\Services\Util::_format_date($booking_file->created_at, 'date')}}</td>

View file

@ -200,6 +200,31 @@
@endforeach
@endif
@endforeach
@foreach($booking->getPassolutionPDF() as $PassolutionPDF)
@if($PassolutionPDF)
<tr>
<th scope="row">{{$booking_files_count++}}</th>
<td>
<a target="_blank" href="{{ $PassolutionPDF['url'] }}" class="badge badge-md badge-next">
<i class="fa fa-file-pdf mr-1"></i> {{$PassolutionPDF['filename']}}
</a>
</td>
<td>
Passolution |
{{ \App\Services\Util::_formatBytes($PassolutionPDF['size']) }}
</td>
<td>{{\App\Services\Util::_format_date($PassolutionPDF['date'], 'date')}}</td>
<td>
<button data-target="{{ $PassolutionPDF['url'] }}" data-name="{{$PassolutionPDF['filename']}}" 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
@if($booking->booking_files)
@foreach($booking->booking_files as $booking_file)
<tr>

View file

@ -0,0 +1,39 @@
@extends('pdf.layout-small')
@section('content')
<style>
h1 {
font-size: 1rem;
}
h2 {
font-size: 1.1rem;
}
ul, ol {
padding-left: 2rem;
}
li {
padding-bottom: 0.5rem;
}
.pdf-input-content {
font-size: 11pt;
line-height: 1.3em;
margin-bottom: 2rem;
}
.pdf-break-block {
/* page-break-inside: avoid; */
}
</style>
<h1>Einreise-, Visabestimmungen und gesundheitspolizeilichen Vorschriften</h1>
<hr>
@if($contents)
<div class="pdf-break-block">
<div class="pdf-input-content">
{!! nl2br($contents) !!}
</div>
</div>
@endif
@endsection