diff --git a/.env b/.env
index 9928224..07403ca 100755
--- a/.env
+++ b/.env
@@ -45,18 +45,32 @@ MAIL_FEWO_EMPLOYEE=kevin@adametz.media
#MAIL_BBC=kontakt@stern-tours.de,thomas.stern@stern-tours.de
MAIL_DRIVER=smtp
-MAIL_FROM_NAME="Reisebüro STERN TOURS"
+MAIL_FROM_NAME="DEV Reisebüro STERN TOURS"
+#MAIL_FROM_ADDRESS=dev@adametz.media
+#MAIL_HOST=w017e534.kasserver.com
+#MAIL_PORT=587
+#MAIL_USERNAME=m0496c96
+#MAIL_PASSWORD=mZtVp7WQcs6DC3hf
+#MAIL_ENCRYPTION=null
+
+
+MAIL_FROM_ADDRESS=stern@sterntours.de
+MAIL_HOST=zimbra.managedemail.de
+MAIL_PORT=587
+MAIL_USERNAME=stern@stern-tours.de
+MAIL_PASSWORD=13C!NlecB!Phil4beAxKl
+MAIL_ENCRYPTION=TLS
+
+
#MAIL_FROM_ADDRESS=stern@sterntours.de
#MAIL_HOST=zimbra.managedemail.de
#MAIL_USERNAME=stern@stern-tours.de
#MAIL_PASSWORD=13C!NlecB!Phil4beAxKl
-MAIL_PORT=587
-MAIL_ENCRYPTION=TLS
-MAIL_FROM_ADDRESS=info@mein.sterntours.de
-MAIL_HOST=mail.your-server.de
-MAIL_USERNAME=info@mein.sterntours.de
-MAIL_PASSWORD=B7f8Ojt98v6tMz8W
+#MAIL_FROM_ADDRESS=info@mein.sterntours.de
+#MAIL_HOST=mail.your-server.de
+#MAIL_USERNAME=info@mein.sterntours.de
+#MAIL_PASSWORD=B7f8Ojt98v6tMz8W
#MAIL_FROM_ADDRESS=stern@stern-tours.de
#MAIL_HOST=zimbra.managedemail.de
diff --git a/app/Http/Controllers/API/BookingController.php b/app/Http/Controllers/API/BookingController.php
index a6e111b..e47cd07 100755
--- a/app/Http/Controllers/API/BookingController.php
+++ b/app/Http/Controllers/API/BookingController.php
@@ -3,15 +3,8 @@
namespace App\Http\Controllers\API;
use App\Http\Controllers\Controller;
-use App\Models\Arrangement;
-use App\Models\Booking;
-use App\Models\BookingServiceItem;
-use App\Models\Customer;
-use App\Models\Lead;
-use App\Models\Participant;
use App\Models\TravelBooking;
-use App\Repositories\DraftRepository;
-
+use App\Services\BookingImport;
class BookingController extends Controller
{
@@ -20,9 +13,9 @@ class BookingController extends Controller
protected $draftRepo;
- public function __construct(DraftRepository $draftRepo)
+ public function __construct()
{
- $this->draftRepo = $draftRepo;
+
}
public function import()
@@ -40,158 +33,12 @@ class BookingController extends Controller
return response()->json(['error' => 'no-booking-found'], $this->successStatus);
}
- // ---- createCustomer
- $data = [
- 'salutation_id' => $travel_booking->salutation_id,
- 'name' => $travel_booking->last_name,
- 'firstname' => $travel_booking->first_name,
- 'street' => $travel_booking->street,
- 'zip' => $travel_booking->zipcode,
- 'city' => $travel_booking->city,
- 'country_id' => $travel_booking->country_id,
- 'phone' => $travel_booking->phone,
- 'phonemobile' => $travel_booking->mobile,
- 'email' => $travel_booking->email
- ];
- $customer = Customer::create($data);
+ $booking = BookingImport::importFrom($travel_booking);
- // ---- createLead
- $data = [
- 'customer_id' => $customer->id,
- 'request_date' => $travel_booking->created,
- 'travelperiod_start' => $travel_booking->selected_start_date,
- 'travelperiod_end' => $travel_booking->selected_end_date,
- 'remarks' => $travel_booking->comments,
- 'sf_guard_user_id' => 15,
- 'is_closed' => true,
- 'initialcontacttype_id' => 14,
- 'status_id' => 7,
- 'website_id' => 1,
- ];
- $lead = Lead::create($data);
- $lead->updateNextDueDate();
-
- $comfort = false;
- if(isset($travel_booking->drafts['comfort']) && $travel_booking->drafts['comfort']){
- $comfort = true;
- }
- $data = [
- 'booking_date' => $travel_booking->created->format('Y-m-d'),
- 'customer_id' => $customer->id,
- 'lead_id' => $lead->id,
- 'new_drafts' => $travel_booking->drafts === null ? 0 : 1,
- 'sf_guard_user_id' => 15,
- 'branch_id' => 4,
- 'pax' => $travel_booking->selected_adults,
- 'title' => isset($travel_booking->selected_travel['travel_title']) ? $travel_booking->selected_travel['travel_title'] : "",
- 'comfort' => $comfort,
- 'start_date' => $travel_booking->selected_start_date->format('Y-m-d'),
- 'end_date' => $travel_booking->selected_end_date->format('Y-m-d'),
- 'website_id' => 1,
- 'travel_number' => isset($travel_booking->selected_travel['travel_number']) ? $travel_booking->selected_travel['travel_number'] : null,
- /*'participant_name' => isset($travel_booking->participants[0]['last_name']) ? $travel_booking->participants[0]['last_name'] : null,
- '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,*/
- 'participant_name' => null,
- 'participant_firstname' => null,
- 'participant_birthdate' => null,
- 'participant_salutation_id' => null,
- 'nationality_id' => null,
- 'price' => $travel_booking->price,
- 'price_total' => $travel_booking->price_total,
- 'deposit_total' => $travel_booking->deposit_total,
- 'final_payment' => $travel_booking->final_payment,
- 'final_payment_date' => $travel_booking->final_payment_date->format('Y-m-d'),
- 'travel_country_id' => isset($travel_booking->selected_travel['travel_country_id'][0]) ? $travel_booking->selected_travel['travel_country_id'][0] : null,
- 'travel_category_id' => isset($travel_booking->selected_travel['travel_category_id']) ? $travel_booking->selected_travel['travel_category_id'] : null,
- 'travelagenda_id' => isset($travel_booking->selected_travel['travelagenda_id']) ? $travel_booking->selected_travel['travelagenda_id'] : null,
- 'travel_company_id' => isset($travel_booking->selected_travel['travel_company_id']) ? $travel_booking->selected_travel['travel_company_id'] : 4,
- ];
-
- //createBooking
- $booking = Booking::create($data);
-
- //createTraveler
- if($travel_booking->participants){
- foreach ($travel_booking->participants as $key => $participant){
- Participant::create([
- 'booking_id' => $booking->id,
- 'participant_name' => $participant['last_name'],
- 'participant_firstname' => $participant['first_name'],
- 'participant_birthdate' => date( "Y-m-d", strtotime($participant['birthday'])),
- 'participant_salutation_id' => $participant['gender'],
- 'participant_child' => $participant['child'],
- 'nationality_id' =>$participant['nationality'],
- ]);
-
- }
- }
-
- //createServiceItem //service_items
- if($travel_booking->service_items){
- foreach ($travel_booking->service_items as $key => $service_item){
- BookingServiceItem::create([
- 'booking_id' => $booking->id,
- 'travel_company_id' => $service_item['travel_company_id'],
- 'service_price' => $service_item['service_price'],
- 'service_price_refund' => 0,
- 'commission' => $service_item['commission'],
- 'travel_date' => $service_item['travel_date'],
- 'name' => $service_item['name'],
- 'is_commission_locked' => 0,
- ]);
- }
- }
-
- //createServiceItem //insurances
- if($travel_booking->insurances){
- foreach ($travel_booking->insurances as $key => $service_item){
- BookingServiceItem::create([
- 'booking_id' => $booking->id,
- 'travel_company_id' => $service_item['travel_company_id'],
- 'service_price' => $service_item['price'],
- 'service_price_refund' => 0,
- 'commission' => $service_item['commission'],
- 'travel_date' => $service_item['travel_date'],
- 'name' => $service_item['name'],
- 'is_commission_locked' => 0,
- ]);
- }
- }
-
-
-
- //createArrangement
- if($travel_booking->arrangements) {
- foreach ($travel_booking->arrangements as $key => $arrangement){
- Arrangement::create([
- 'state' => isset($arrangement['state']) ? $arrangement['state'] : null,
- 'begin' => isset($arrangement['end']) ? $arrangement['end'] : null,
- 'end' => isset($arrangement['end']) ? $arrangement['end'] : null,
- 'type_s' => isset($arrangement['type_s']) ? $arrangement['type_s'] : null,
- 'data_s' => isset($arrangement['data_s']) ? $arrangement['data_s'] : null,
- 'view_position' => isset($arrangement['view_position']) ? $arrangement['view_position'] : null,
- 'booking_id' => $booking->id,
- 'type_id' => $arrangement['type_id'],
- 'in_pdf' => isset($arrangement['in_pdf']) ? $arrangement['in_pdf'] : null,
- ]);
- }
- }
-
- //createDrafts
-
- if($travel_booking->drafts) {
- $this->draftRepo->create_drafts_from_booking($booking->id, $travel_booking->drafts);
- }
-
- $travel_booking->crm_booking_id = $booking->id;
- $travel_booking->save();
$ret= [
'url_v1' => make_old_url('/index.php/booking/'.$booking->id.'/edit'),
'url_v3' => route('booking_detail', $booking->id),
- 'lead_id' => $lead->id
+ 'lead_id' => $booking->lead_id
];
return response()->json(['success' => "import", "ret" => $ret], $this->successStatus);
//return response()->json(['error' => 'no-node'], $this->successStatus);
diff --git a/app/Http/Controllers/SyS/ContentLinkController.php b/app/Http/Controllers/SyS/ContentLinkController.php
new file mode 100755
index 0000000..393fd61
--- /dev/null
+++ b/app/Http/Controllers/SyS/ContentLinkController.php
@@ -0,0 +1,102 @@
+middleware(['sysadmin', '2fa']);
+ }
+
+ public function filterHTML(){
+
+ }
+ //content_links
+ public function calcu()
+ {
+
+ /*$query = Booking::with('booking_draft_items')->select('booking.*')->where('new_drafts', true);
+
+ $query->whereHas('booking_draft_items', function ($q) {
+ $q->where('comfort', true);
+ });
+ $bookings = $query->get();
+ foreach ($bookings as $booking){
+ $booking->comfort = true;
+ $booking->save();
+ }
+*/
+
+ $bookings = Booking::orderBy('id', 'DESC')->offset(0)->limit(1000)->get();
+
+
+
+
+ // dd("nothing");
+ $val = [];
+ $text = "";
+
+ $data = [
+ 'text' => $text,
+ 'bookings' => $bookings,
+ ];
+ return view('sys.tools.links', $data);
+
+ }
+
+ /*
+ clean code
+ $travelGuides = TravelGuide::all();
+ foreach ($travelGuides as $travelGuide){
+ if(strpos($travelGuide->full_text, "
") !== false){
+ $val[$travelGuide->id] = "
";
+ }
+ }
+
+ foreach ($travelGuides as $travelGuide){
+ if(strpos($travelGuide->full_text, "id] = "full_text;
+
+ // $new_text = preg_replace('/]*>([\s\S]*?)<\/h1[^>]*>/', '', $TravelGuide->full_text);
+
+*/
+
+ public function calcuStore()
+ {
+ return redirect()->back();
+ }
+
+
+
+
+
+}
diff --git a/app/Http/Controllers/SyS/SysController.php b/app/Http/Controllers/SyS/SysController.php
new file mode 100644
index 0000000..f8773b3
--- /dev/null
+++ b/app/Http/Controllers/SyS/SysController.php
@@ -0,0 +1,65 @@
+middleware(['sysadmin', '2fa']);
+ }
+
+ public function index()
+ {
+ return view('sys.index');
+ }
+
+ public function tool($serve)
+ {
+ switch ($serve) {
+ case 'reimport':
+ return ReImport::show();
+ break;
+ case 'calcu':
+ dd('check App\Services\SyS\ReCalcu');
+ break;
+ case 'tree':
+ dd('check App\Services\SyS\Import');
+ break;
+ case 'clean_tree_code':
+ dd('check App\Services\SyS\Import');
+ break;
+ case 'media_insert':
+ dd('check App\Services\SyS\Import');
+ break;
+ case 'import':
+ dd('check App\Services\SyS\Import');
+ break;
+ }
+ abort(403, 'not found tool');
+ }
+
+
+ public function store($serve)
+ {
+ switch ($serve) {
+ case 'reimport':
+ return ReImport::store();
+ break;
+
+ }
+ abort(403, 'not found tool');
+ }
+
+
+
+
+
+
+}
diff --git a/app/Http/Controllers/SyS/Tools/ContentLinkController.php b/app/Http/Controllers/SyS/Tools/ContentLinkController.php
deleted file mode 100755
index 1185fa7..0000000
--- a/app/Http/Controllers/SyS/Tools/ContentLinkController.php
+++ /dev/null
@@ -1,742 +0,0 @@
-middleware(['sysadmin', '2fa']);
- }
-
- public function filterHTML(){
-
- }
- //content_links
- public function index()
- {
-
- /*$query = Booking::with('booking_draft_items')->select('booking.*')->where('new_drafts', true);
-
- $query->whereHas('booking_draft_items', function ($q) {
- $q->where('comfort', true);
- });
- $bookings = $query->get();
- foreach ($bookings as $booking){
- $booking->comfort = true;
- $booking->save();
- }
-*/
-
- $bookings = Booking::orderBy('id', 'DESC')->offset(0)->limit(1000)->get();
-
-
-
-
- // dd("nothing");
- $val = [];
- $text = "";
-
- $data = [
- 'text' => $text,
- 'bookings' => $bookings,
- ];
- return view('sys.tools.links', $data);
-
- }
-
- /*
- clean code
- $travelGuides = TravelGuide::all();
- foreach ($travelGuides as $travelGuide){
- if(strpos($travelGuide->full_text, "
") !== false){
- $val[$travelGuide->id] = "
";
- }
- }
-
- foreach ($travelGuides as $travelGuide){
- if(strpos($travelGuide->full_text, "id] = "full_text;
-
- // $new_text = preg_replace('/]*>([\s\S]*?)<\/h1[^>]*>/', '', $TravelGuide->full_text);
-
-*/
-
- public function store()
- {
- return redirect()->back();
- }
-
- //tree
- public function tree()
- {
- $text = "";
- $val = [];
- $trees = IQContentTree::all();
- foreach ($trees as $tree){
- foreach ($tree->iq_content_tree_nodes as $tree_node){
-
- $text .= $tree_node->id." -- ".$tree_node->title."\n";
- foreach ($tree_node->iq_content_sites as $site){
- if($site->travel_guide && $site->identifier === null){
- $identifier = $site->travel_guide->scope === 1 ? 'long' : 'short';
- //$site->identifier = $site->travel_guide->scope === 1 ? 'long' : 'short';
- $text .= "-- ".$site->id." -- ".$identifier."\n";
- }
- }
- }
- }
- $data = [
- 'text' => $text,
- 'values' => $val,
- ];
- return view('sys.tools.trees', $data);
- }
-
- public function treeStore()
- {
- $trees = IQContentTree::all();
- foreach ($trees as $tree){
- foreach ($tree->iq_content_tree_nodes as $tree_node){
-
- foreach ($tree_node->iq_content_sites as $site){
- if($site->travel_guide){
- $site->identifier = $site->travel_guide->scope === 1 ? 'long' : 'short';
- $site->save();
- }
- }
- }
- }
- return redirect()->back();
- }
-
-
- //clean_tree_code
- public function cleanTreeCode(){
- $val = [];
- $text = "";
-
- $travelGuide = TravelGuide::find(166);
- $text = $travelGuide->full_text;
-
- $data = [
- 'new_text' => \App\Services\Util::cleanHTML($text),
- 'full_text' => $travelGuide->full_text,
- 'values' => $val,
- ];
- return view('sys.tools.clean', $data);
- }
-
- public function cleanTreeCodeStore(){
- $this->cleanTextTravelGuide();
- return redirect()->back();
- }
-
- public function cleanTextTravelGuide()
- {
- $TravelGuides = TravelGuide::all();
- foreach ($TravelGuides as $travelGuide){
- $new_text = \App\Services\Util::cleanHTML($travelGuide->full_text);
- if(strcmp($travelGuide->full_text, $new_text) != 0){
- $travelGuide->full_text = $new_text;
- $travelGuide->save();
- var_dump($travelGuide->id);
- echo "
";
- }
- }
- die("done");
- }
-
- //media_insert
- public function mediaInsert(){
- $val = [];
- $text = "";
- $data = [
- 'text' => $text,
- 'values' => $val,
- ];
- return view('sys.tools.insert', $data);
- }
-
- public function mediaInsertStore(){
- $val = [];
-
- $data = Request::all();
- $text = $data['text'];
-
- if($data['action'] === 'insert'){
- $lines = explode(PHP_EOL, $text);
- $FolderC = new FolderController();
- $FileC = new FileController();
-
- foreach ($lines as $line){
- $sep = explode(';', $line);
- if(isset($sep[0]) && isset($sep[1]) && isset($sep[2])){
- //youtube //main dir
- $working_dir = "/shares/youtube/".$sep[0];
- $folder_name = $sep[1];
-
- $folder = $FolderC->makeFolder($working_dir, $folder_name);
- $working_dir = $working_dir."/".$folder_name;
- $file = $FileC->makeYoutube($working_dir, $sep[2]);
- $val[] = $file.' - '.$sep[2]." | ".$working_dir;
- }
- }
- }
- if($data['action'] === 'youtube_ids'){
- $TravelGuides = TravelGuide::all();
- foreach ($TravelGuides as $travelGuide){
- $this->findYoutubeLinks($val, $travelGuide);
-
- /* */
- }
- }
- if($data['action'] === 'replace_youtube_links') {
- $TravelGuides = TravelGuide::all();
- foreach ($TravelGuides as $travelGuide){
- $this->replaceYoutubeLinks($val, $travelGuide);
-
- /* */
- }
- }
-
- if($data['action'] === 'replace_youtube_div') {
- $this->replaceYoutubeDiv($val, TravelGuide::find(335));
- $TravelGuides = TravelGuide::all();
- foreach ($TravelGuides as $travelGuide){
- $this->replaceYoutubeDiv($val, $travelGuide);
-
- /* */
- }
- }
-
-
- $data = [
- 'text' => $text,
- 'values' => $val,
- ];
- return view('sys.tools.insert', $data);
-
- }
-
-//import
- public function import()
- {
- $text = "";
- $val = [];
-
- $data = [
- 'text' => $text,
- 'values' => $val,
- ];
- return view('sys.tools.import', $data);
- }
-
- public function importStore()
- {
-
- $data = Request::all();
-
- $lines = explode(PHP_EOL, $data['text']);
-
- if($data['action'] === 'import_TN'){
- foreach ($lines as $line){
- $ex = explode(';', $line);
- $t_n = TravelNationality::whereName(trim($ex[1]))->first();
- if($t_n){
- $t_n->nat = $ex[0];
- $t_n->save();
- }else{
- TravelNationality::create([
- 'name' => trim($ex[1]),
- 'nat' => $ex[0],
- 'active' => false,
- ]
- );
- }
- }
- }
-
- if($data['action'] === 'import_CT') {
- foreach ($lines as $line){
- $ex = explode(';', $line);
- $t_c = TravelCountry::whereName(trim($ex[1]))->first();
- if($t_c){
- dump($t_c->name);
- $t_c->destco = $ex[0];
- $t_c->save();
-
- $tc = \App\Models\Sym\TravelCountry::find($t_c->crm_id);
- $tc->destco = $ex[0];
- $tc->save();
- }
- }
- dd("");
- }
-
- return redirect()->back();
- }
-
-
- private function replaceYoutubeDiv(&$val, $travelGuide)
- {
- $ret = [];
- $dom = new \DOMDocument('1.0', 'utf-8');
- @$dom->loadHTML(mb_convert_encoding($travelGuide->full_text, 'HTML-ENTITIES', 'UTF-8'));
- $links = $dom->getElementsByTagName('iframe');
- foreach ($links as $link) {
- if($link->parentNode->parentNode->nodeName === 'div'){
- if($link->parentNode->parentNode->getAttribute('itemprop') === 'video'){
- if($link->parentNode->parentNode->getAttribute('class') === 'mediaA'){
- if($link->parentNode->parentNode->parentNode->getAttribute('itemprop') === 'video'){
-
- $need = $link->parentNode->parentNode;
- $replace = $link->parentNode->parentNode->parentNode;
- $replace->parentNode->insertBefore($dom->importNode($need, true), $replace->nextSibling);
- $replace->parentNode->removeChild($replace);
- $html = $dom->saveHTML();
-
- $travelGuide->full_text = $html;
- $travelGuide->save();
- $val[] = 'replace - '.$travelGuide->id;
-
- }else{
- // dump("notfound itemprop over class mediaA".$travelGuide->id);
- $val[] = 'notfound - itemprop over class mediaA - '.$travelGuide->id;
-
- //in
-
- foreach ($link->parentNode->parentNode->childNodes as $node){
- if($node->nodeName === 'h2'){
-
- if($node->firstChild->nodeName === '#text'){
-
- $span = $dom->createElement('span', htmlspecialchars($node->nodeValue));
-
- $span->setAttribute('itemprop', 'name');
- $h2 = $dom->createElement('h2');
- $h2->appendChild($span);
-
- $node->parentNode->replaceChild($h2, $node);
- $html = $dom->saveHTML();
-
- $travelGuide->full_text = $html;
- $travelGuide->save();
- $val[] = 'replace h2 - '.$travelGuide->id;
-
-
- }
-
-
-
-
-
-
- }
- }
- //
-
- }
- //dump("found M div ".$travelGuide->id);
- }else{
- // dump("notfound class mediaA".$travelGuide->id);
- $val[] = 'notfound - class mediaA - '.$travelGuide->id;
- }
- }else{
- // dump("notfound div ".$travelGuide->id);
- $val[] = 'notfound - video - '.$travelGuide->id;
-
-
- }
- // dump($travelGuide->id);
- }else{
- //dump("notfound".$travelGuide->id);
- $val[] = 'notfound - div - '.$travelGuide->id;
- }
- }
-
-
- return $ret;
- }
-
- private function replaceYoutubeLinks(&$val, $travelGuide)
- {
- $ret = [];
- $dom = new \DOMDocument('1.0', 'utf-8');
- @$dom->loadHTML(mb_convert_encoding($travelGuide->full_text, 'HTML-ENTITIES', 'UTF-8'));
- $links = $dom->getElementsByTagName('iframe');
- foreach ($links as $link) {
-
- $src = $link->getAttribute('src');
-
-
- //
- $replace = false;
- $reLink = false;
- if($link->parentNode->nodeName === 'div'){
- if($link->parentNode->getAttribute('class') === 'video-container'){
- if($link->parentNode->parentNode->getAttribute('class') === 'mediaA' && $link->parentNode->parentNode->getAttribute('itemprop') !== 'video'){
- $replace = $link->parentNode->parentNode;
- $reLink = $link->parentNode;
- }else{
- $val[] = 'found - manual - '.$travelGuide->id;
- }
- }else{
- $val[] = 'first div - manual - '.$travelGuide->id;
-
- }
-
- }elseif ($link->parentNode->nodeName === 'p'){
- if($link->parentNode->parentNode->nodeName === 'div'){
- if($link->parentNode->parentNode->getAttribute('itemprop') === 'video'){
- //replace div
- $replace = $link->parentNode->parentNode;
- $reLink = $link->parentNode;
- }else{
- //replace p
- $replace = $link->parentNode;
- $reLink = $link;
- }
- }else{
- $replace = $link->parentNode;
- $reLink = $link;
- }
-
- }else{
- $val[] = 'else div - manual - '.$travelGuide->id;
- }
- if($replace){
-
- $id = preg_replace('/http.*?embed\//i', '', $src);
- $videoID = preg_replace('#[&\?].+$#', '', $id);
- $identifier = Str::slug(pre_slug($videoID), '-');
- $IQContentFile = IQContentFile::whereIdentifier($identifier)->first();
- if($IQContentFile) {
-
- $video = new \DOMDocument('1.0', 'utf-8');
- $makeText = '';
- $makeText = str_replace('&', '&', $makeText);
- $video->loadHTML($makeText);
- $replace->insertBefore($dom->importNode($video->documentElement, true), $reLink->nextSibling);
- $replace->removeChild($reLink);
- $html = $dom->saveHTML();
-
- $travelGuide->full_text = $html;
- $travelGuide->save();
-
- $val[] = 'replace - '.$travelGuide->id;
- }
-
-
- }
- }
-
-
- return $ret;
- }
-
- private function findYoutubeLinks(&$val, $travelGuide)
- {
- $ret = [];
- $dom = new \DOMDocument('1.0', 'utf-8');
- @$dom->loadHTML(mb_convert_encoding($travelGuide->full_text, 'HTML-ENTITIES', 'UTF-8'));
-
- $links = $dom->getElementsByTagName('iframe');
- foreach ($links as $link) {
-
- $src = $link->getAttribute('src');
-
- $id = preg_replace('/http.*?embed\//i', '', $src);
- $videoID = preg_replace('#[&\?].+$#', '', $id);
-
- $identifier = Str::slug(pre_slug($videoID), '-');
- $count = IQContentFile::whereIdentifier($identifier)->count();
-
- if($count === 0){
- $ret[$videoID] = $count;
- $val[] = "weitere;Travel-Guide;".$videoID.";";
- }
- }
- return $ret;
- }
- //private?
- public function h1ToTitleTravelGuide()
- {
- $TravelGuides = TravelGuide::all();
- foreach ($TravelGuides as $travelGuide){
- if(strpos($travelGuide->full_text,'' )){
- $dom = new \DOMDocument('1.0', 'utf-8');
- @$dom->loadHTML(mb_convert_encoding($travelGuide->full_text, 'HTML-ENTITIES', 'UTF-8'));
- $elements = $dom->getElementsByTagName('h1');
-
- foreach ($elements as $element) {
- if($element->nodeValue != ""){
- var_dump($travelGuide->id);
- var_dump($element->nodeValue);
- echo "
";
- var_dump($travelGuide->name);
- echo "
";
- echo "--";
- echo "
";
-
- $new_text = preg_replace('/]*>([\s\S]*?)<\/h1[^>]*>/', '', $travelGuide->full_text);
-
- $travelGuide->name = $element->nodeValue;
- $travelGuide->full_text = $new_text;
- $travelGuide->save();
- }
- }
- }
- }
- die("done");
- }
-
- public function readNodeAndSaveToTree(){
- $input = Request::all();
- $ret = [];
- if(isset($input['text'])){
- $out = $this->ul_to_array($input['text']);
- $this->array_to_nodes($out);
- }
- die("done");
- $data = [
- 'text' => $input['text'],
- 'values' => $ret,
- ];
- return view('iq.tools.links', $data);
- }
-
- public function array_to_nodes($array, $lvl = 1, $parent_id = 1, $pos=100){
-
-
- if(is_array($array)){
- foreach ($array as $node){
- if(isset($node['slug'])){
-
- $slug = substr($node['slug'], 0, 80);
- // $slug = substr($node['slug'], 0, strrpos($slug, " "));
-
- $name = substr($node['name'], 0, 255);
- // $name = substr($node['name'], 0, strrpos($name, " "));
-
-
- $data = [
- 'tree_id' => 1,
- 'parent_id' => $parent_id,
- 'lvl' => $lvl,
- 'name' => $name,
- 'identifier' => $slug,
- 'active' => false,
- 'pos' => $pos++,
- ];
- $tree_node = IQContentTreeNode::create($data);
-
-
- $travel_guides = TravelGuide::whereSlug($node['slug'])->get();
- foreach ($travel_guides as $travel_guide){
- if(IQContentSite::whereTreeNodeId($tree_node->id)->whereTravelGuideId($travel_guide->id)->count() == 0) {
- IQContentSite::create(['tree_node_id' => $tree_node->id, 'travel_guide_id' => $travel_guide->id]);
- }
- }
-
-
- }
- if(isset($node['children']) && is_array($node['children'])){
- $this->array_to_nodes($node['children'], $lvl + 1, $tree_node->id, $pos);
- }
- }
- }
-
- }
-
- public function ul_to_array($ol){
- if(is_string($ol)){
- if(!$ol = simplexml_load_string($ol)) {
- trigger_error("Syntax error in UL/LI structure");
- return FALSE;
- }
- return $this->ul_to_array($ol);
- } else if(is_object($ol)){
- $output = array();
- foreach($ol->li as $li){
-
- $tmp = false;
- if(isset($li->ol)){
- $tmp = $this->ul_to_array($li->ol);
- }
-
- if($li->count()){
-
- $str = (string) $li;
-
- $a = new \SimpleXMLElement($li->children()->asXML());
- $str = (string) $a[0]." ".$str;
- $str = str_replace("\n", "", $str);
- $str = str_replace("\r", "", $str);
- $str = str_replace("\t", "", $str);
- $str = preg_replace(array('/\s{2,}/', '/[\t\n]/'), ' ', $str);
-
- if(trim($str) !== "" && $str !== null){
- $slug = (string) $a['href'];
- $link = explode("/", $slug);
-
- $link1 = array_pop($link);
- $link1 = str_replace('.htm', '',$link1);
- $output[] = ['slug'=> $link1, 'name'=>$str, 'children'=>$tmp];
- }
- }else{
- $str = (string) $li;
- $str = str_replace("\n", "", $str);
- $str = str_replace("\r", "", $str);
- $str = str_replace("\t", "", $str);
- if(trim($str) !== "" && $str !== null){
-
- $output[] = ['slug'=>'', 'name'=>$str, 'children'=>$tmp];
- }
- }
-
- }
- return $output;
- } else {
- return FALSE;
- }
- }
-
- public function rindex()
- {
- $data = [
- 'text' => "",
- 'values' => [],
- ];
- return view('iq.content.tools.redirects', $data);
- }
-
- public function rstore()
- {
-
- $iqContentTree = IQContentTree::find(2);
- $this->makeTree($iqContentTree);
- $input = Request::all();
- $ret = [];
-
- if(isset($input['text'])){
-
-
- $dom = new \DOMDocument('1.0', 'utf-8');
- @$dom->loadHTML(mb_convert_encoding($input['text'], 'HTML-ENTITIES', 'UTF-8'));
-
- $tags = ['ol'];
- foreach ($tags as $tag){
- $domElements = [];
- $elements = $dom->getElementsByTagName($tag)->item(0);
-
- foreach($elements as $node){
- foreach($node->childNodes as $child) {
- $ret[] = array($child->nodeName => $child->nodeValue);
- }
- }
- }
-
- /* $tags = ['a']; foreach ($tags as $tag){
- $domElements = [];
- $elements = $dom->getElementsByTagName($tag);
- foreach ($elements as $element) {
- $domElements[] = $element;
-
- }
- foreach ($domElements as $domElement) {
- $r = "-----";
- $href = $domElement->getAttribute('href');
- $link = explode("/", $href);
-
- $link1 = array_pop($link);
- $link1 = str_replace('.html', '',$link1);
- $link1 = str_replace('-', '',$link1);
- if(isset($this->tree[$link1])){
- $r = $this->tree[$link1];
- }else{
- $link1 = array_pop($link);
- $link1 = str_replace('.html', '',$link1);
- $link1 = str_replace('-', '',$link1);
- if(isset($this->tree[$link1])){
- $r = $this->tree[$link1];
- }
- }
-
- $ret[] = "Redirect 301 /".$href." ".$r;
-
- }
- }*/
-
- }
- $data = [
- 'text' => $input['text'],
- 'values' => $ret,
- ];
-
- return view('iq.content.tools.redirects', $data);
-
- }
-
- public function makeTree(IQContentTree $iq_content_tree, $lvl = 0, $parent_id = false, $url = "")
- {
-
- if ($parent_id) {
- //where('active', true)
- $tree_nodes = IQContentTreeNode::where('tree_id', $iq_content_tree->id)->where('lvl', $lvl)->where('active', true)->where('parent_id', $parent_id)->orderBy('pos', 'ASC')->get();
- } else {
-
- $url = "/" . $iq_content_tree->identifier . "/";
- $tree_nodes = IQContentTreeNode::where('tree_id', $iq_content_tree->id)->where('lvl', $lvl)->where('active', true)->orderBy('pos', 'ASC')->get();
- }
-
- foreach ($tree_nodes as $node) {
- $children = IQContentTreeNode::where('tree_id', $iq_content_tree->id)->where('lvl', $lvl + 1)->where('active', true)->where('parent_id', $node->id)->count();
- $this->tree[str_replace('-', '', $node->identifier)] = url($url . $node->identifier);
-
- if ($children) {
- $this->makeTree($iq_content_tree, $lvl + 1, $node->id, $url . $node->identifier . "/");
-
- }
- }
- return true;
- }
-
-
-
-}
diff --git a/app/Models/TravelBooking.php b/app/Models/TravelBooking.php
index 3f04f46..d98d3b6 100644
--- a/app/Models/TravelBooking.php
+++ b/app/Models/TravelBooking.php
@@ -9,103 +9,6 @@ namespace App\Models;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model;
-/**
- * Class TravelBooking
- *
- * @property int $id
- * @property int $salutation_id
- * @property string $first_name
- * @property string $last_name
- * @property string $street
- * @property string $zipcode
- * @property string $city
- * @property int $country_id
- * @property string $fax
- * @property string $phone
- * @property string $mobile
- * @property string $comments
- * @property string $email
- * @property Carbon $created
- * @property Carbon $selected_start_date
- * @property Carbon $selected_end_date
- * @property string $program_name
- * @property string $selected_travel
- * @property string $selected_departure
- * @property int $program_id
- * @property int $period_id
- * @property string $class
- * @property int $selected_adults
- * @property int $selected_childs
- * @property int $participants_total
- * @property string $participants
- * @property string $drafts
- * @property string $service_items
- * @property string $arrangements
- * @property string $rooms
- * @property float $price
- * @property float $price_total
- * @property float $deposit_total
- * @property float $final_payment
- * @property Carbon $final_payment_date
- * @property string $insurance_name
- * @property string $insurances
- * @property int $travel_cancellation
- * @property string $options
- * @property string $class_options
- * @property string $extra_category
- * @property bool $accept_legal_rights
- * @property string $ip
- * @package App\Models
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking newModelQuery()
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking newQuery()
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking query()
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereAcceptLegalRights($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereArrangements($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereCity($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereClass($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereClassOptions($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereComments($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereCountryId($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereCreated($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereDepositTotal($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereDrafts($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereEmail($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereExtraCategory($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereFax($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereFinalPayment($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereFinalPaymentDate($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereFirstName($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereId($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereInsuranceName($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereInsurances($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereIp($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereLastName($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereMobile($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereOptions($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereParticipants($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereParticipantsTotal($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking wherePeriodId($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking wherePhone($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking wherePrice($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking wherePriceTotal($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereProgramId($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereProgramName($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereRooms($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereSalutationId($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereSelectedAdults($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereSelectedChilds($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereSelectedDeparture($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereSelectedEndDate($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereSelectedStartDate($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereSelectedTravel($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereServiceItems($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereStreet($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereTravelCancellation($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereZipcode($value)
- * @mixin \Eloquent
- * @property int|null $crm_booking_id
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereCrmBookingId($value)
- */
class TravelBooking extends Model
{
protected $connection = 'mysql_stern';
diff --git a/app/Models/TravelClass.php b/app/Models/TravelClass.php
index b0b0539..7946136 100644
--- a/app/Models/TravelClass.php
+++ b/app/Models/TravelClass.php
@@ -53,4 +53,5 @@ class TravelClass extends Model
{
return $this->hasMany('App\Models\TravelProgramDraft', 'travel_class_id', 'id');
}
+
}
diff --git a/app/Models/TravelProgram.php b/app/Models/TravelProgram.php
index 01874c4..166682e 100644
--- a/app/Models/TravelProgram.php
+++ b/app/Models/TravelProgram.php
@@ -12,7 +12,7 @@ use Illuminate\Database\Eloquent\Model;
/**
* Class TravelProgram
- *
+ *
* @property int $id
* @property float|null $profit_margin
* @property int|null $category_id
@@ -58,7 +58,6 @@ use Illuminate\Database\Eloquent\Model;
* @property int|null $discount_is_percent_value
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
- *
* @property TravelArrivalPoint|null $travel_arrival_point
* @property TravelOrganizer|null $travel_organizer
* @property TravelInsurance|null $travel_insurance
@@ -73,8 +72,62 @@ use Illuminate\Database\Eloquent\Model;
* @property Collection|TravelProgramImage[] $travel_program_images
* @property TravelProgramOption $travel_program_option
* @property TravelProgramRelated $travel_program_related
- *
* @package App\Models
+ * @property int|null $travel_company
+ * @property-read Collection|\App\Models\TravelClass[] $classes
+ * @property-read int|null $classes_count
+ * @property-read int|null $travel_classes_count
+ * @property-read int|null $travel_program_drafts_count
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram query()
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereAdvices($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereCategoryId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereClassDescription($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereDefaultFlightPrice($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereDepositPercent($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereDiscount($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereDiscountIsPercentValue($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereExcluded($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereGeneralnote($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereHtmlDescription($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereInSlider($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereIncluded($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereInsurance1($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereInsurance2($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereInsurance3($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereInsurance4($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereIsSeasonal($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereMapHtml($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereMapImage($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereMapImageExt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereMaxAgeForChildren($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereNettoPricesInEuro($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereNotes($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereOrganizer($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram wherePosition($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereProfitMargin($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereProgramCode($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereProgramDuration($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereProgramType($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereShowMap($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereSliderInfo($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereStatus($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereSubtitle($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereTextRight($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereTitle($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereTravelAgenda($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereTravelArrivalPointId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereTravelCategory($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereTravelCompany($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereTravelCountry($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereUpdatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereUrl($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereWeekdays($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereYouth($value)
+ * @mixin \Eloquent
*/
class TravelProgram extends Model
{
@@ -134,6 +187,7 @@ class TravelProgram extends Model
'url',
'max_age_for_children',
'html_description',
+ 'payment_conditions',
'insurance_1',
'insurance_2',
'insurance_3',
@@ -191,9 +245,9 @@ class TravelProgram extends Model
return $this->belongsTo(TravelInsurance::class, 'insurance_3');
}
- public function travel_category()
+ public function travel_program_category()
{
- return $this->belongsTo(TravelCategory::class, 'category_id');
+ return $this->belongsTo(TravelProgramCategory::class, 'category_id');
}
public function travel_general_note()
diff --git a/app/Models/TravelProgramCategory.php b/app/Models/TravelProgramCategory.php
new file mode 100644
index 0000000..93781e4
--- /dev/null
+++ b/app/Models/TravelProgramCategory.php
@@ -0,0 +1,29 @@
+hasMany(TravelProgram::class, 'category_id');
+ }
+}
diff --git a/app/Models/TravelProgramDraft.php b/app/Models/TravelProgramDraft.php
index 1610260..354d1c5 100644
--- a/app/Models/TravelProgramDraft.php
+++ b/app/Models/TravelProgramDraft.php
@@ -58,4 +58,10 @@ class TravelProgramDraft extends Model
{
return $this->belongsTo(Draft::class, 'draft_id', 'id');
}
+
+ public function getWeekdaysOrAll()
+ {
+ return ($this->weekdays !== NULL && $this->weekdays[0] !== null) ? $this->weekdays : [0 => "0", 1 => "1", 2 => "2", 3 => "3", 4 => "4", 5 => "5", 6 => "6"];
+ }
+
}
diff --git a/app/Models/TravelProgrammCategory.php b/app/Models/TravelProgrammCategory.php
new file mode 100644
index 0000000..93781e4
--- /dev/null
+++ b/app/Models/TravelProgrammCategory.php
@@ -0,0 +1,29 @@
+hasMany(TravelProgram::class, 'category_id');
+ }
+}
diff --git a/app/Repositories/DraftRepository.php b/app/Repositories/DraftRepository.php
index 8feb359..c6ccdfe 100644
--- a/app/Repositories/DraftRepository.php
+++ b/app/Repositories/DraftRepository.php
@@ -493,7 +493,10 @@ class DraftRepository extends BaseRepository {
foreach ($travel_program->travel_program_drafts as $travel_program_draft) {
//this need an realation to travel class by booking and price
- if(in_array($weekday, $travel_program_draft->weekdays)){
+ if(in_array($weekday, $travel_program_draft->getWeekdaysOrAll())){
+ if(!$travel_program_draft->travel_class){
+ return $travel_program_draft->draft;
+ }
if($data['comfort'] == false && strpos(strtolower($travel_program_draft->travel_class->name), 'standard') !== false){
return $travel_program_draft->draft;
}
diff --git a/app/Repositories/TravelProgramRepository.php b/app/Repositories/TravelProgramRepository.php
index c628180..89e28f6 100644
--- a/app/Repositories/TravelProgramRepository.php
+++ b/app/Repositories/TravelProgramRepository.php
@@ -75,6 +75,7 @@ class TravelProgramRepository extends BaseRepository {
'max_age_for_children' => $data['max_age_for_children'] ? $data['max_age_for_children'] : null,
'url' => $data['url'] ? $data['url'] : null,
'generalnote' => $data['generalnote'] ? $data['generalnote'] : null,
+ 'payment_conditions' => $data['payment_conditions'] ? $data['payment_conditions'] : null,
];
$this->model->fill($fill);
$this->model->save();
@@ -153,7 +154,7 @@ class TravelProgramRepository extends BaseRepository {
}
public function updateDraft($data)
- {
+ {
if(isset($data['weekdays']) && count($data['weekdays']) > 1 && in_array(NULL, $data['weekdays'])){
$data['weekdays'] = array_filter($data['weekdays'], 'is_numeric');
sort($data['weekdays']);
@@ -163,13 +164,13 @@ class TravelProgramRepository extends BaseRepository {
'travel_program_id' => $data['travel_program_id'],
'travel_class_id' => $data['travel_class_id'],
'draft_id' => $data['draft_id'],
- 'weekdays' => isset($data['weekdays']) ? $data['weekdays'] : null,
+ 'weekdays' => isset($data['weekdays']) ? $data['weekdays'] : NULL,
]);
}else{
$travel_program_draft = TravelProgramDraft::findOrFail($data['id']);
$travel_program_draft->draft_id = $data['draft_id'];
$travel_program_draft->travel_class_id = $data['travel_class_id'];
- $travel_program_draft->weekdays = isset($data['weekdays']) ? $data['weekdays'] : null;
+ $travel_program_draft->weekdays = isset($data['weekdays']) ? $data['weekdays'] : NULL;
$travel_program_draft->save();
}
return $travel_program_draft;
diff --git a/app/Services/BookingImport.php b/app/Services/BookingImport.php
new file mode 100644
index 0000000..9bf98d1
--- /dev/null
+++ b/app/Services/BookingImport.php
@@ -0,0 +1,171 @@
+ $travel_booking->salutation_id,
+ 'name' => $travel_booking->last_name,
+ 'firstname' => $travel_booking->first_name,
+ 'street' => $travel_booking->street,
+ 'zip' => $travel_booking->zipcode,
+ 'city' => $travel_booking->city,
+ 'country_id' => $travel_booking->country_id,
+ 'phone' => $travel_booking->phone,
+ 'phonemobile' => $travel_booking->mobile,
+ 'email' => $travel_booking->email
+ ];
+ $customer = Customer::create($data);
+
+ // ---- createLead
+ $data = [
+ 'customer_id' => $customer->id,
+ 'request_date' => $travel_booking->created,
+ 'travelperiod_start' => $travel_booking->selected_start_date,
+ 'travelperiod_end' => $travel_booking->selected_end_date,
+ 'remarks' => $travel_booking->comments,
+ 'sf_guard_user_id' => 15,
+ 'is_closed' => true,
+ 'initialcontacttype_id' => 14,
+ 'status_id' => 7,
+ 'website_id' => 1,
+ ];
+ $lead = Lead::create($data);
+ $lead->updateNextDueDate();
+
+ $comfort = false;
+ if(isset($travel_booking->drafts['comfort']) && $travel_booking->drafts['comfort']){
+ $comfort = true;
+ }
+ $data = [
+ 'booking_date' => $travel_booking->created->format('Y-m-d'),
+ 'customer_id' => $customer->id,
+ 'lead_id' => $lead->id,
+ 'new_drafts' => $travel_booking->drafts === null ? 0 : 1,
+ 'sf_guard_user_id' => 15,
+ 'branch_id' => 4,
+ 'pax' => $travel_booking->selected_adults,
+ 'title' => isset($travel_booking->selected_travel['travel_title']) ? $travel_booking->selected_travel['travel_title'] : "",
+ 'comfort' => $comfort,
+ 'start_date' => $travel_booking->selected_start_date->format('Y-m-d'),
+ 'end_date' => $travel_booking->selected_end_date->format('Y-m-d'),
+ 'website_id' => 1,
+ 'travel_number' => isset($travel_booking->selected_travel['travel_number']) ? $travel_booking->selected_travel['travel_number'] : null,
+ /*'participant_name' => isset($travel_booking->participants[0]['last_name']) ? $travel_booking->participants[0]['last_name'] : null,
+ '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,*/
+ 'participant_name' => null,
+ 'participant_firstname' => null,
+ 'participant_birthdate' => null,
+ 'participant_salutation_id' => null,
+ 'nationality_id' => null,
+ 'price' => $travel_booking->price,
+ 'price_total' => $travel_booking->price_total,
+ 'deposit_total' => $travel_booking->deposit_total,
+ 'final_payment' => $travel_booking->final_payment,
+ 'final_payment_date' => $travel_booking->final_payment_date->format('Y-m-d'),
+ 'travel_country_id' => isset($travel_booking->selected_travel['travel_country_id'][0]) ? $travel_booking->selected_travel['travel_country_id'][0] : null,
+ 'travel_category_id' => isset($travel_booking->selected_travel['travel_category_id']) ? $travel_booking->selected_travel['travel_category_id'] : null,
+ 'travelagenda_id' => isset($travel_booking->selected_travel['travelagenda_id']) ? $travel_booking->selected_travel['travelagenda_id'] : null,
+ 'travel_company_id' => isset($travel_booking->selected_travel['travel_company_id']) ? $travel_booking->selected_travel['travel_company_id'] : 4,
+ ];
+
+ //createBooking
+ $booking = Booking::create($data);
+
+ //createTraveler
+ if($travel_booking->participants){
+ foreach ($travel_booking->participants as $key => $participant){
+ Participant::create([
+ 'booking_id' => $booking->id,
+ 'participant_name' => $participant['last_name'],
+ 'participant_firstname' => $participant['first_name'],
+ 'participant_birthdate' => date( "Y-m-d", strtotime($participant['birthday'])),
+ 'participant_salutation_id' => $participant['gender'],
+ 'participant_child' => $participant['child'],
+ 'nationality_id' =>$participant['nationality'],
+ ]);
+
+ }
+ }
+
+ //createServiceItem //service_items
+ if($travel_booking->service_items){
+ foreach ($travel_booking->service_items as $key => $service_item){
+ BookingServiceItem::create([
+ 'booking_id' => $booking->id,
+ 'travel_company_id' => $service_item['travel_company_id'],
+ 'service_price' => $service_item['service_price'],
+ 'service_price_refund' => 0,
+ 'commission' => $service_item['commission'],
+ 'travel_date' => $service_item['travel_date'],
+ 'name' => $service_item['name'],
+ 'is_commission_locked' => 0,
+ ]);
+ }
+ }
+
+ //createServiceItem //insurances
+ if($travel_booking->insurances){
+ foreach ($travel_booking->insurances as $service_item){
+ BookingServiceItem::create([
+ 'booking_id' => $booking->id,
+ 'travel_company_id' => $service_item['travel_company_id'],
+ 'service_price' => $service_item['price'],
+ 'service_price_refund' => 0,
+ 'commission' => $service_item['commission'],
+ 'travel_date' => $service_item['travel_date'],
+ 'name' => $service_item['name'],
+ 'is_commission_locked' => 0,
+ ]);
+ }
+ }
+
+
+
+ //createArrangement
+ if($travel_booking->arrangements) {
+ foreach ($travel_booking->arrangements as $key => $arrangement){
+ Arrangement::create([
+ 'state' => isset($arrangement['state']) ? $arrangement['state'] : null,
+ 'begin' => isset($arrangement['end']) ? $arrangement['end'] : null,
+ 'end' => isset($arrangement['end']) ? $arrangement['end'] : null,
+ 'type_s' => isset($arrangement['type_s']) ? $arrangement['type_s'] : null,
+ 'data_s' => isset($arrangement['data_s']) ? $arrangement['data_s'] : null,
+ 'view_position' => isset($arrangement['view_position']) ? $arrangement['view_position'] : null,
+ 'booking_id' => $booking->id,
+ 'type_id' => $arrangement['type_id'],
+ 'in_pdf' => isset($arrangement['in_pdf']) ? $arrangement['in_pdf'] : null,
+ ]);
+ }
+ }
+
+ //createDrafts
+
+ if($travel_booking->drafts) {
+ $draftRepo = new DraftRepository($booking);
+ $draftRepo->create_drafts_from_booking($booking->id, $travel_booking->drafts);
+ }
+
+ $travel_booking->crm_booking_id = $booking->id;
+ $travel_booking->save();
+
+ return $booking;
+
+ }
+}
\ No newline at end of file
diff --git a/app/Services/HTMLHelper.php b/app/Services/HTMLHelper.php
index 88efd3d..9976b7a 100644
--- a/app/Services/HTMLHelper.php
+++ b/app/Services/HTMLHelper.php
@@ -52,6 +52,16 @@ class HTMLHelper
6 => 'Samstag',
];
+ private static $shortDays = [
+ 0 => 'So',
+ 1 => 'Mo',
+ 2 => 'Di',
+ 3 => 'Mi',
+ 4 => 'Do',
+ 5 => 'Fr',
+ 6 => 'Sa',
+ ];
+
public static $de_days = [
1 => 'Montag',
2 => 'Dienstag',
@@ -89,6 +99,10 @@ class HTMLHelper
return self::$days[$i];
}
+ public static function getShortDay($i){
+ return self::$shortDays[$i];
+ }
+
public static function getDeDays(){
return self::$de_days;
}
@@ -409,13 +423,18 @@ class HTMLHelper
return $ret;
}
- public static function getWeekdaysString($weekdays = []){
+ public static function getWeekdaysString($weekdays = [], $short = false){
$ret = "";
if(is_array($weekdays) && count($weekdays)){
foreach($weekdays as $weekday){
if($weekday !== NULL){
- $ret .= self::getDay($weekday).', ';
+ if($short){
+ $ret .= self::getShortDay($weekday).', ';
+ }else{
+ $ret .= self::getDay($weekday).', ';
+
+ }
}
}
if($ret != ""){
diff --git a/app/Services/SyS/Import.php b/app/Services/SyS/Import.php
new file mode 100644
index 0000000..3ca8142
--- /dev/null
+++ b/app/Services/SyS/Import.php
@@ -0,0 +1,652 @@
+iq_content_tree_nodes as $tree_node){
+
+ $text .= $tree_node->id." -- ".$tree_node->title."\n";
+ foreach ($tree_node->iq_content_sites as $site){
+ if($site->travel_guide && $site->identifier === null){
+ $identifier = $site->travel_guide->scope === 1 ? 'long' : 'short';
+ //$site->identifier = $site->travel_guide->scope === 1 ? 'long' : 'short';
+ $text .= "-- ".$site->id." -- ".$identifier."\n";
+ }
+ }
+ }
+ }
+ $data = [
+ 'text' => $text,
+ 'values' => $val,
+ ];
+ return view('sys.tools.trees', $data);
+ }
+
+ public function treeStore()
+ {
+ $trees = IQContentTree::all();
+ foreach ($trees as $tree){
+ foreach ($tree->iq_content_tree_nodes as $tree_node){
+
+ foreach ($tree_node->iq_content_sites as $site){
+ if($site->travel_guide){
+ $site->identifier = $site->travel_guide->scope === 1 ? 'long' : 'short';
+ $site->save();
+ }
+ }
+ }
+ }
+ return redirect()->back();
+ }
+
+
+ //clean_tree_code
+ public function cleanTreeCode(){
+ $val = [];
+ $text = "";
+
+ $travelGuide = TravelGuide::find(166);
+ $text = $travelGuide->full_text;
+
+ $data = [
+ 'new_text' => \App\Services\Util::cleanHTML($text),
+ 'full_text' => $travelGuide->full_text,
+ 'values' => $val,
+ ];
+ return view('sys.tools.clean', $data);
+ }
+
+ public function cleanTreeCodeStore(){
+ $this->cleanTextTravelGuide();
+ return redirect()->back();
+ }
+
+ public function cleanTextTravelGuide()
+ {
+ $TravelGuides = TravelGuide::all();
+ foreach ($TravelGuides as $travelGuide){
+ $new_text = \App\Services\Util::cleanHTML($travelGuide->full_text);
+ if(strcmp($travelGuide->full_text, $new_text) != 0){
+ $travelGuide->full_text = $new_text;
+ $travelGuide->save();
+ var_dump($travelGuide->id);
+ echo "
";
+ }
+ }
+ die("done");
+ }
+
+ //media_insert
+ public function mediaInsert(){
+ $val = [];
+ $text = "";
+ $data = [
+ 'text' => $text,
+ 'values' => $val,
+ ];
+ return view('sys.tools.insert', $data);
+ }
+
+ public function mediaInsertStore(){
+ $val = [];
+
+ $data = Request::all();
+ $text = $data['text'];
+
+ if($data['action'] === 'insert'){
+ $lines = explode(PHP_EOL, $text);
+ $FolderC = new FolderController();
+ $FileC = new FileController();
+
+ foreach ($lines as $line){
+ $sep = explode(';', $line);
+ if(isset($sep[0]) && isset($sep[1]) && isset($sep[2])){
+ //youtube //main dir
+ $working_dir = "/shares/youtube/".$sep[0];
+ $folder_name = $sep[1];
+
+ $folder = $FolderC->makeFolder($working_dir, $folder_name);
+ $working_dir = $working_dir."/".$folder_name;
+ $file = $FileC->makeYoutube($working_dir, $sep[2]);
+ $val[] = $file.' - '.$sep[2]." | ".$working_dir;
+ }
+ }
+ }
+ if($data['action'] === 'youtube_ids'){
+ $TravelGuides = TravelGuide::all();
+ foreach ($TravelGuides as $travelGuide){
+ $this->findYoutubeLinks($val, $travelGuide);
+
+ /* */
+ }
+ }
+ if($data['action'] === 'replace_youtube_links') {
+ $TravelGuides = TravelGuide::all();
+ foreach ($TravelGuides as $travelGuide){
+ $this->replaceYoutubeLinks($val, $travelGuide);
+
+ /* */
+ }
+ }
+
+ if($data['action'] === 'replace_youtube_div') {
+ $this->replaceYoutubeDiv($val, TravelGuide::find(335));
+ $TravelGuides = TravelGuide::all();
+ foreach ($TravelGuides as $travelGuide){
+ $this->replaceYoutubeDiv($val, $travelGuide);
+
+ /* */
+ }
+ }
+
+
+ $data = [
+ 'text' => $text,
+ 'values' => $val,
+ ];
+ return view('sys.tools.insert', $data);
+
+ }
+
+//import
+ public function import()
+ {
+ $text = "";
+ $val = [];
+
+ $data = [
+ 'text' => $text,
+ 'values' => $val,
+ ];
+ return view('sys.tools.import', $data);
+ }
+
+ public function importStore()
+ {
+
+ $data = Request::all();
+
+ $lines = explode(PHP_EOL, $data['text']);
+
+ if($data['action'] === 'import_TN'){
+ foreach ($lines as $line){
+ $ex = explode(';', $line);
+ $t_n = TravelNationality::whereName(trim($ex[1]))->first();
+ if($t_n){
+ $t_n->nat = $ex[0];
+ $t_n->save();
+ }else{
+ TravelNationality::create([
+ 'name' => trim($ex[1]),
+ 'nat' => $ex[0],
+ 'active' => false,
+ ]
+ );
+ }
+ }
+ }
+
+ if($data['action'] === 'import_CT') {
+ foreach ($lines as $line){
+ $ex = explode(';', $line);
+ $t_c = TravelCountry::whereName(trim($ex[1]))->first();
+ if($t_c){
+ dump($t_c->name);
+ $t_c->destco = $ex[0];
+ $t_c->save();
+
+ $tc = \App\Models\Sym\TravelCountry::find($t_c->crm_id);
+ $tc->destco = $ex[0];
+ $tc->save();
+ }
+ }
+ dd("");
+ }
+
+ return redirect()->back();
+ }
+
+
+ private function replaceYoutubeDiv(&$val, $travelGuide)
+ {
+ $ret = [];
+ $dom = new \DOMDocument('1.0', 'utf-8');
+ @$dom->loadHTML(mb_convert_encoding($travelGuide->full_text, 'HTML-ENTITIES', 'UTF-8'));
+ $links = $dom->getElementsByTagName('iframe');
+ foreach ($links as $link) {
+ if($link->parentNode->parentNode->nodeName === 'div'){
+ if($link->parentNode->parentNode->getAttribute('itemprop') === 'video'){
+ if($link->parentNode->parentNode->getAttribute('class') === 'mediaA'){
+ if($link->parentNode->parentNode->parentNode->getAttribute('itemprop') === 'video'){
+
+ $need = $link->parentNode->parentNode;
+ $replace = $link->parentNode->parentNode->parentNode;
+ $replace->parentNode->insertBefore($dom->importNode($need, true), $replace->nextSibling);
+ $replace->parentNode->removeChild($replace);
+ $html = $dom->saveHTML();
+
+ $travelGuide->full_text = $html;
+ $travelGuide->save();
+ $val[] = 'replace - '.$travelGuide->id;
+
+ }else{
+ // dump("notfound itemprop over class mediaA".$travelGuide->id);
+ $val[] = 'notfound - itemprop over class mediaA - '.$travelGuide->id;
+
+ //in
+
+ foreach ($link->parentNode->parentNode->childNodes as $node){
+ if($node->nodeName === 'h2'){
+
+ if($node->firstChild->nodeName === '#text'){
+
+ $span = $dom->createElement('span', htmlspecialchars($node->nodeValue));
+
+ $span->setAttribute('itemprop', 'name');
+ $h2 = $dom->createElement('h2');
+ $h2->appendChild($span);
+
+ $node->parentNode->replaceChild($h2, $node);
+ $html = $dom->saveHTML();
+
+ $travelGuide->full_text = $html;
+ $travelGuide->save();
+ $val[] = 'replace h2 - '.$travelGuide->id;
+
+
+ }
+
+
+
+
+
+
+ }
+ }
+ //
+
+ }
+ //dump("found M div ".$travelGuide->id);
+ }else{
+ // dump("notfound class mediaA".$travelGuide->id);
+ $val[] = 'notfound - class mediaA - '.$travelGuide->id;
+ }
+ }else{
+ // dump("notfound div ".$travelGuide->id);
+ $val[] = 'notfound - video - '.$travelGuide->id;
+
+
+ }
+ // dump($travelGuide->id);
+ }else{
+ //dump("notfound".$travelGuide->id);
+ $val[] = 'notfound - div - '.$travelGuide->id;
+ }
+ }
+
+
+ return $ret;
+ }
+
+ private function replaceYoutubeLinks(&$val, $travelGuide)
+ {
+ $ret = [];
+ $dom = new \DOMDocument('1.0', 'utf-8');
+ @$dom->loadHTML(mb_convert_encoding($travelGuide->full_text, 'HTML-ENTITIES', 'UTF-8'));
+ $links = $dom->getElementsByTagName('iframe');
+ foreach ($links as $link) {
+
+ $src = $link->getAttribute('src');
+
+
+ //
+ $replace = false;
+ $reLink = false;
+ if($link->parentNode->nodeName === 'div'){
+ if($link->parentNode->getAttribute('class') === 'video-container'){
+ if($link->parentNode->parentNode->getAttribute('class') === 'mediaA' && $link->parentNode->parentNode->getAttribute('itemprop') !== 'video'){
+ $replace = $link->parentNode->parentNode;
+ $reLink = $link->parentNode;
+ }else{
+ $val[] = 'found - manual - '.$travelGuide->id;
+ }
+ }else{
+ $val[] = 'first div - manual - '.$travelGuide->id;
+
+ }
+
+ }elseif ($link->parentNode->nodeName === 'p'){
+ if($link->parentNode->parentNode->nodeName === 'div'){
+ if($link->parentNode->parentNode->getAttribute('itemprop') === 'video'){
+ //replace div
+ $replace = $link->parentNode->parentNode;
+ $reLink = $link->parentNode;
+ }else{
+ //replace p
+ $replace = $link->parentNode;
+ $reLink = $link;
+ }
+ }else{
+ $replace = $link->parentNode;
+ $reLink = $link;
+ }
+
+ }else{
+ $val[] = 'else div - manual - '.$travelGuide->id;
+ }
+ if($replace){
+
+ $id = preg_replace('/http.*?embed\//i', '', $src);
+ $videoID = preg_replace('#[&\?].+$#', '', $id);
+ $identifier = Str::slug(pre_slug($videoID), '-');
+ $IQContentFile = IQContentFile::whereIdentifier($identifier)->first();
+ if($IQContentFile) {
+
+ $video = new \DOMDocument('1.0', 'utf-8');
+ $makeText = '';
+ $makeText = str_replace('&', '&', $makeText);
+ $video->loadHTML($makeText);
+ $replace->insertBefore($dom->importNode($video->documentElement, true), $reLink->nextSibling);
+ $replace->removeChild($reLink);
+ $html = $dom->saveHTML();
+
+ $travelGuide->full_text = $html;
+ $travelGuide->save();
+
+ $val[] = 'replace - '.$travelGuide->id;
+ }
+
+
+ }
+ }
+
+
+ return $ret;
+ }
+
+ private function findYoutubeLinks(&$val, $travelGuide)
+ {
+ $ret = [];
+ $dom = new \DOMDocument('1.0', 'utf-8');
+ @$dom->loadHTML(mb_convert_encoding($travelGuide->full_text, 'HTML-ENTITIES', 'UTF-8'));
+
+ $links = $dom->getElementsByTagName('iframe');
+ foreach ($links as $link) {
+
+ $src = $link->getAttribute('src');
+
+ $id = preg_replace('/http.*?embed\//i', '', $src);
+ $videoID = preg_replace('#[&\?].+$#', '', $id);
+
+ $identifier = Str::slug(pre_slug($videoID), '-');
+ $count = IQContentFile::whereIdentifier($identifier)->count();
+
+ if($count === 0){
+ $ret[$videoID] = $count;
+ $val[] = "weitere;Travel-Guide;".$videoID.";";
+ }
+ }
+ return $ret;
+ }
+ //private?
+ public function h1ToTitleTravelGuide()
+ {
+ $TravelGuides = TravelGuide::all();
+ foreach ($TravelGuides as $travelGuide){
+ if(strpos($travelGuide->full_text,'' )){
+ $dom = new \DOMDocument('1.0', 'utf-8');
+ @$dom->loadHTML(mb_convert_encoding($travelGuide->full_text, 'HTML-ENTITIES', 'UTF-8'));
+ $elements = $dom->getElementsByTagName('h1');
+
+ foreach ($elements as $element) {
+ if($element->nodeValue != ""){
+ var_dump($travelGuide->id);
+ var_dump($element->nodeValue);
+ echo "
";
+ var_dump($travelGuide->name);
+ echo "
";
+ echo "--";
+ echo "
";
+
+ $new_text = preg_replace('/]*>([\s\S]*?)<\/h1[^>]*>/', '', $travelGuide->full_text);
+
+ $travelGuide->name = $element->nodeValue;
+ $travelGuide->full_text = $new_text;
+ $travelGuide->save();
+ }
+ }
+ }
+ }
+ die("done");
+ }
+
+ public function readNodeAndSaveToTree(){
+ $input = Request::all();
+ $ret = [];
+ if(isset($input['text'])){
+ $out = $this->ul_to_array($input['text']);
+ $this->array_to_nodes($out);
+ }
+ die("done");
+ $data = [
+ 'text' => $input['text'],
+ 'values' => $ret,
+ ];
+ return view('iq.tools.links', $data);
+ }
+
+ public function array_to_nodes($array, $lvl = 1, $parent_id = 1, $pos=100){
+
+
+ if(is_array($array)){
+ foreach ($array as $node){
+ if(isset($node['slug'])){
+
+ $slug = substr($node['slug'], 0, 80);
+ // $slug = substr($node['slug'], 0, strrpos($slug, " "));
+
+ $name = substr($node['name'], 0, 255);
+ // $name = substr($node['name'], 0, strrpos($name, " "));
+
+
+ $data = [
+ 'tree_id' => 1,
+ 'parent_id' => $parent_id,
+ 'lvl' => $lvl,
+ 'name' => $name,
+ 'identifier' => $slug,
+ 'active' => false,
+ 'pos' => $pos++,
+ ];
+ $tree_node = IQContentTreeNode::create($data);
+
+
+ $travel_guides = TravelGuide::whereSlug($node['slug'])->get();
+ foreach ($travel_guides as $travel_guide){
+ if(IQContentSite::whereTreeNodeId($tree_node->id)->whereTravelGuideId($travel_guide->id)->count() == 0) {
+ IQContentSite::create(['tree_node_id' => $tree_node->id, 'travel_guide_id' => $travel_guide->id]);
+ }
+ }
+
+
+ }
+ if(isset($node['children']) && is_array($node['children'])){
+ $this->array_to_nodes($node['children'], $lvl + 1, $tree_node->id, $pos);
+ }
+ }
+ }
+
+ }
+
+ public function ul_to_array($ol){
+ if(is_string($ol)){
+ if(!$ol = simplexml_load_string($ol)) {
+ trigger_error("Syntax error in UL/LI structure");
+ return FALSE;
+ }
+ return $this->ul_to_array($ol);
+ } else if(is_object($ol)){
+ $output = array();
+ foreach($ol->li as $li){
+
+ $tmp = false;
+ if(isset($li->ol)){
+ $tmp = $this->ul_to_array($li->ol);
+ }
+
+ if($li->count()){
+
+ $str = (string) $li;
+
+ $a = new \SimpleXMLElement($li->children()->asXML());
+ $str = (string) $a[0]." ".$str;
+ $str = str_replace("\n", "", $str);
+ $str = str_replace("\r", "", $str);
+ $str = str_replace("\t", "", $str);
+ $str = preg_replace(array('/\s{2,}/', '/[\t\n]/'), ' ', $str);
+
+ if(trim($str) !== "" && $str !== null){
+ $slug = (string) $a['href'];
+ $link = explode("/", $slug);
+
+ $link1 = array_pop($link);
+ $link1 = str_replace('.htm', '',$link1);
+ $output[] = ['slug'=> $link1, 'name'=>$str, 'children'=>$tmp];
+ }
+ }else{
+ $str = (string) $li;
+ $str = str_replace("\n", "", $str);
+ $str = str_replace("\r", "", $str);
+ $str = str_replace("\t", "", $str);
+ if(trim($str) !== "" && $str !== null){
+
+ $output[] = ['slug'=>'', 'name'=>$str, 'children'=>$tmp];
+ }
+ }
+
+ }
+ return $output;
+ } else {
+ return FALSE;
+ }
+ }
+
+ public function rindex()
+ {
+ $data = [
+ 'text' => "",
+ 'values' => [],
+ ];
+ return view('iq.content.tools.redirects', $data);
+ }
+
+ public function rstore()
+ {
+
+ $iqContentTree = IQContentTree::find(2);
+ $this->makeTree($iqContentTree);
+ $input = Request::all();
+ $ret = [];
+
+ if(isset($input['text'])){
+
+
+ $dom = new \DOMDocument('1.0', 'utf-8');
+ @$dom->loadHTML(mb_convert_encoding($input['text'], 'HTML-ENTITIES', 'UTF-8'));
+
+ $tags = ['ol'];
+ foreach ($tags as $tag){
+ $domElements = [];
+ $elements = $dom->getElementsByTagName($tag)->item(0);
+
+ foreach($elements as $node){
+ foreach($node->childNodes as $child) {
+ $ret[] = array($child->nodeName => $child->nodeValue);
+ }
+ }
+ }
+
+ /* $tags = ['a']; foreach ($tags as $tag){
+ $domElements = [];
+ $elements = $dom->getElementsByTagName($tag);
+ foreach ($elements as $element) {
+ $domElements[] = $element;
+
+ }
+ foreach ($domElements as $domElement) {
+ $r = "-----";
+ $href = $domElement->getAttribute('href');
+ $link = explode("/", $href);
+
+ $link1 = array_pop($link);
+ $link1 = str_replace('.html', '',$link1);
+ $link1 = str_replace('-', '',$link1);
+ if(isset($this->tree[$link1])){
+ $r = $this->tree[$link1];
+ }else{
+ $link1 = array_pop($link);
+ $link1 = str_replace('.html', '',$link1);
+ $link1 = str_replace('-', '',$link1);
+ if(isset($this->tree[$link1])){
+ $r = $this->tree[$link1];
+ }
+ }
+
+ $ret[] = "Redirect 301 /".$href." ".$r;
+
+ }
+ }*/
+
+ }
+ $data = [
+ 'text' => $input['text'],
+ 'values' => $ret,
+ ];
+
+ return view('iq.content.tools.redirects', $data);
+
+ }
+
+ public function makeTree(IQContentTree $iq_content_tree, $lvl = 0, $parent_id = false, $url = "")
+ {
+
+ if ($parent_id) {
+ //where('active', true)
+ $tree_nodes = IQContentTreeNode::where('tree_id', $iq_content_tree->id)->where('lvl', $lvl)->where('active', true)->where('parent_id', $parent_id)->orderBy('pos', 'ASC')->get();
+ } else {
+
+ $url = "/" . $iq_content_tree->identifier . "/";
+ $tree_nodes = IQContentTreeNode::where('tree_id', $iq_content_tree->id)->where('lvl', $lvl)->where('active', true)->orderBy('pos', 'ASC')->get();
+ }
+
+ foreach ($tree_nodes as $node) {
+ $children = IQContentTreeNode::where('tree_id', $iq_content_tree->id)->where('lvl', $lvl + 1)->where('active', true)->where('parent_id', $node->id)->count();
+ $this->tree[str_replace('-', '', $node->identifier)] = url($url . $node->identifier);
+
+ if ($children) {
+ $this->makeTree($iq_content_tree, $lvl + 1, $node->id, $url . $node->identifier . "/");
+
+ }
+ }
+ return true;
+ }
+}
diff --git a/app/Services/SyS/ReCalcu.php b/app/Services/SyS/ReCalcu.php
new file mode 100644
index 0000000..30317c8
--- /dev/null
+++ b/app/Services/SyS/ReCalcu.php
@@ -0,0 +1,71 @@
+select('booking.*')->where('new_drafts', true);
+
+ $query->whereHas('booking_draft_items', function ($q) {
+ $q->where('comfort', true);
+ });
+ $bookings = $query->get();
+ foreach ($bookings as $booking){
+ $booking->comfort = true;
+ $booking->save();
+ }
+*/
+
+ $bookings = Booking::orderBy('id', 'DESC')->offset(0)->limit(1000)->get();
+
+
+
+
+ // dd("nothing");
+ $val = [];
+ $text = "";
+
+ $data = [
+ 'text' => $text,
+ 'bookings' => $bookings,
+ ];
+ return view('sys.tools.links', $data);
+
+ }
+
+ /*
+ clean code
+ $travelGuides = TravelGuide::all();
+ foreach ($travelGuides as $travelGuide){
+ if(strpos($travelGuide->full_text, "
") !== false){
+ $val[$travelGuide->id] = "
";
+ }
+ }
+
+ foreach ($travelGuides as $travelGuide){
+ if(strpos($travelGuide->full_text, "id] = "full_text;
+
+ // $new_text = preg_replace('/]*>([\s\S]*?)<\/h1[^>]*>/', '', $TravelGuide->full_text);
+
+*/
+
+ public function calcuStore()
+ {
+ return redirect()->back();
+ }
+}
diff --git a/app/Services/SyS/ReImport.php b/app/Services/SyS/ReImport.php
new file mode 100644
index 0000000..5431723
--- /dev/null
+++ b/app/Services/SyS/ReImport.php
@@ -0,0 +1,41 @@
+limit(200)->get();
+ $data = [
+ 'values' => $TravelBooking,
+ 'text' => '',
+ ];
+
+ return view('sys.tools.reimport', $data);
+
+ }
+
+ public static function store()
+ {
+ $data = Request::all();
+ $ret = "";
+ if(strpos($data['action'], 'checkOne_') !== false){
+ $id = (int) str_replace('checkOne_', '', $data['action']);
+ $travel_booking = TravelBooking::findOrFail($id);
+
+ $booking = BookingImport::importFrom($travel_booking);
+
+ dd($booking);
+ }
+ \Session()->flash('alert-success', $ret);
+ return back();
+ }
+}
diff --git a/public/fonts/nunito.css b/public/fonts/nunito.css
new file mode 100644
index 0000000..d1667dd
--- /dev/null
+++ b/public/fonts/nunito.css
@@ -0,0 +1,208 @@
+/* nunito-200 - latin */
+@font-face {
+ font-family: 'Nunito';
+ font-style: normal;
+ font-weight: 200;
+ src: url('./nunito/nunito-v25-latin-200.eot'); /* IE9 Compat Modes */
+ src: local(''),
+ url('./nunito/nunito-v25-latin-200.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('./nunito/nunito-v25-latin-200.woff2') format('woff2'), /* Super Modern Browsers */
+ url('./nunito/nunito-v25-latin-200.woff') format('woff'), /* Modern Browsers */
+ url('./nunito/nunito-v25-latin-200.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('./nunito/nunito-v25-latin-200.svg#Nunito') format('svg'); /* Legacy iOS */
+}
+/* nunito-300 - latin */
+@font-face {
+ font-family: 'Nunito';
+ font-style: normal;
+ font-weight: 300;
+ src: url('./nunito/nunito-v25-latin-300.eot'); /* IE9 Compat Modes */
+ src: local(''),
+ url('./nunito/nunito-v25-latin-300.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('./nunito/nunito-v25-latin-300.woff2') format('woff2'), /* Super Modern Browsers */
+ url('./nunito/nunito-v25-latin-300.woff') format('woff'), /* Modern Browsers */
+ url('./nunito/nunito-v25-latin-300.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('./nunito/nunito-v25-latin-300.svg#Nunito') format('svg'); /* Legacy iOS */
+}
+/* nunito-regular - latin */
+@font-face {
+ font-family: 'Nunito';
+ font-style: normal;
+ font-weight: 400;
+ src: url('./nunito/nunito-v25-latin-regular.eot'); /* IE9 Compat Modes */
+ src: local(''),
+ url('./nunito/nunito-v25-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('./nunito/nunito-v25-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */
+ url('./nunito/nunito-v25-latin-regular.woff') format('woff'), /* Modern Browsers */
+ url('./nunito/nunito-v25-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('./nunito/nunito-v25-latin-regular.svg#Nunito') format('svg'); /* Legacy iOS */
+}
+/* nunito-500 - latin */
+@font-face {
+ font-family: 'Nunito';
+ font-style: normal;
+ font-weight: 500;
+ src: url('./nunito/nunito-v25-latin-500.eot'); /* IE9 Compat Modes */
+ src: local(''),
+ url('./nunito/nunito-v25-latin-500.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('./nunito/nunito-v25-latin-500.woff2') format('woff2'), /* Super Modern Browsers */
+ url('./nunito/nunito-v25-latin-500.woff') format('woff'), /* Modern Browsers */
+ url('./nunito/nunito-v25-latin-500.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('./nunito/nunito-v25-latin-500.svg#Nunito') format('svg'); /* Legacy iOS */
+}
+/* nunito-600 - latin */
+@font-face {
+ font-family: 'Nunito';
+ font-style: normal;
+ font-weight: 600;
+ src: url('./nunito/nunito-v25-latin-600.eot'); /* IE9 Compat Modes */
+ src: local(''),
+ url('./nunito/nunito-v25-latin-600.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('./nunito/nunito-v25-latin-600.woff2') format('woff2'), /* Super Modern Browsers */
+ url('./nunito/nunito-v25-latin-600.woff') format('woff'), /* Modern Browsers */
+ url('./nunito/nunito-v25-latin-600.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('./nunito/nunito-v25-latin-600.svg#Nunito') format('svg'); /* Legacy iOS */
+}
+/* nunito-700 - latin */
+@font-face {
+ font-family: 'Nunito';
+ font-style: normal;
+ font-weight: 700;
+ src: url('./nunito/nunito-v25-latin-700.eot'); /* IE9 Compat Modes */
+ src: local(''),
+ url('./nunito/nunito-v25-latin-700.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('./nunito/nunito-v25-latin-700.woff2') format('woff2'), /* Super Modern Browsers */
+ url('./nunito/nunito-v25-latin-700.woff') format('woff'), /* Modern Browsers */
+ url('./nunito/nunito-v25-latin-700.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('./nunito/nunito-v25-latin-700.svg#Nunito') format('svg'); /* Legacy iOS */
+}
+/* nunito-800 - latin */
+@font-face {
+ font-family: 'Nunito';
+ font-style: normal;
+ font-weight: 800;
+ src: url('./nunito/nunito-v25-latin-800.eot'); /* IE9 Compat Modes */
+ src: local(''),
+ url('./nunito/nunito-v25-latin-800.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('./nunito/nunito-v25-latin-800.woff2') format('woff2'), /* Super Modern Browsers */
+ url('./nunito/nunito-v25-latin-800.woff') format('woff'), /* Modern Browsers */
+ url('./nunito/nunito-v25-latin-800.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('./nunito/nunito-v25-latin-800.svg#Nunito') format('svg'); /* Legacy iOS */
+}
+/* nunito-900 - latin */
+@font-face {
+ font-family: 'Nunito';
+ font-style: normal;
+ font-weight: 900;
+ src: url('./nunito/nunito-v25-latin-900.eot'); /* IE9 Compat Modes */
+ src: local(''),
+ url('./nunito/nunito-v25-latin-900.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('./nunito/nunito-v25-latin-900.woff2') format('woff2'), /* Super Modern Browsers */
+ url('./nunito/nunito-v25-latin-900.woff') format('woff'), /* Modern Browsers */
+ url('./nunito/nunito-v25-latin-900.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('./nunito/nunito-v25-latin-900.svg#Nunito') format('svg'); /* Legacy iOS */
+}
+/* nunito-200italic - latin */
+@font-face {
+ font-family: 'Nunito';
+ font-style: italic;
+ font-weight: 200;
+ src: url('./nunito/nunito-v25-latin-200italic.eot'); /* IE9 Compat Modes */
+ src: local(''),
+ url('./nunito/nunito-v25-latin-200italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('./nunito/nunito-v25-latin-200italic.woff2') format('woff2'), /* Super Modern Browsers */
+ url('./nunito/nunito-v25-latin-200italic.woff') format('woff'), /* Modern Browsers */
+ url('./nunito/nunito-v25-latin-200italic.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('./nunito/nunito-v25-latin-200italic.svg#Nunito') format('svg'); /* Legacy iOS */
+}
+/* nunito-300italic - latin */
+@font-face {
+ font-family: 'Nunito';
+ font-style: italic;
+ font-weight: 300;
+ src: url('./nunito/nunito-v25-latin-300italic.eot'); /* IE9 Compat Modes */
+ src: local(''),
+ url('./nunito/nunito-v25-latin-300italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('./nunito/nunito-v25-latin-300italic.woff2') format('woff2'), /* Super Modern Browsers */
+ url('./nunito/nunito-v25-latin-300italic.woff') format('woff'), /* Modern Browsers */
+ url('./nunito/nunito-v25-latin-300italic.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('./nunito/nunito-v25-latin-300italic.svg#Nunito') format('svg'); /* Legacy iOS */
+}
+/* nunito-italic - latin */
+@font-face {
+ font-family: 'Nunito';
+ font-style: italic;
+ font-weight: 400;
+ src: url('./nunito/nunito-v25-latin-italic.eot'); /* IE9 Compat Modes */
+ src: local(''),
+ url('./nunito/nunito-v25-latin-italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('./nunito/nunito-v25-latin-italic.woff2') format('woff2'), /* Super Modern Browsers */
+ url('./nunito/nunito-v25-latin-italic.woff') format('woff'), /* Modern Browsers */
+ url('./nunito/nunito-v25-latin-italic.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('./nunito/nunito-v25-latin-italic.svg#Nunito') format('svg'); /* Legacy iOS */
+}
+/* nunito-500italic - latin */
+@font-face {
+ font-family: 'Nunito';
+ font-style: italic;
+ font-weight: 500;
+ src: url('./nunito/nunito-v25-latin-500italic.eot'); /* IE9 Compat Modes */
+ src: local(''),
+ url('./nunito/nunito-v25-latin-500italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('./nunito/nunito-v25-latin-500italic.woff2') format('woff2'), /* Super Modern Browsers */
+ url('./nunito/nunito-v25-latin-500italic.woff') format('woff'), /* Modern Browsers */
+ url('./nunito/nunito-v25-latin-500italic.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('./nunito/nunito-v25-latin-500italic.svg#Nunito') format('svg'); /* Legacy iOS */
+}
+/* nunito-600italic - latin */
+@font-face {
+ font-family: 'Nunito';
+ font-style: italic;
+ font-weight: 600;
+ src: url('./nunito/nunito-v25-latin-600italic.eot'); /* IE9 Compat Modes */
+ src: local(''),
+ url('./nunito/nunito-v25-latin-600italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('./nunito/nunito-v25-latin-600italic.woff2') format('woff2'), /* Super Modern Browsers */
+ url('./nunito/nunito-v25-latin-600italic.woff') format('woff'), /* Modern Browsers */
+ url('./nunito/nunito-v25-latin-600italic.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('./nunito/nunito-v25-latin-600italic.svg#Nunito') format('svg'); /* Legacy iOS */
+}
+/* nunito-700italic - latin */
+@font-face {
+ font-family: 'Nunito';
+ font-style: italic;
+ font-weight: 700;
+ src: url('./nunito/nunito-v25-latin-700italic.eot'); /* IE9 Compat Modes */
+ src: local(''),
+ url('./nunito/nunito-v25-latin-700italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('./nunito/nunito-v25-latin-700italic.woff2') format('woff2'), /* Super Modern Browsers */
+ url('./nunito/nunito-v25-latin-700italic.woff') format('woff'), /* Modern Browsers */
+ url('./nunito/nunito-v25-latin-700italic.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('./nunito/nunito-v25-latin-700italic.svg#Nunito') format('svg'); /* Legacy iOS */
+}
+/* nunito-800italic - latin */
+@font-face {
+ font-family: 'Nunito';
+ font-style: italic;
+ font-weight: 800;
+ src: url('./nunito/nunito-v25-latin-800italic.eot'); /* IE9 Compat Modes */
+ src: local(''),
+ url('./nunito/nunito-v25-latin-800italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('./nunito/nunito-v25-latin-800italic.woff2') format('woff2'), /* Super Modern Browsers */
+ url('./nunito/nunito-v25-latin-800italic.woff') format('woff'), /* Modern Browsers */
+ url('./nunito/nunito-v25-latin-800italic.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('./nunito/nunito-v25-latin-800italic.svg#Nunito') format('svg'); /* Legacy iOS */
+}
+/* nunito-900italic - latin */
+@font-face {
+ font-family: 'Nunito';
+ font-style: italic;
+ font-weight: 900;
+ src: url('./nunito/nunito-v25-latin-900italic.eot'); /* IE9 Compat Modes */
+ src: local(''),
+ url('./nunito/nunito-v25-latin-900italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('./nunito/nunito-v25-latin-900italic.woff2') format('woff2'), /* Super Modern Browsers */
+ url('./nunito/nunito-v25-latin-900italic.woff') format('woff'), /* Modern Browsers */
+ url('./nunito/nunito-v25-latin-900italic.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('./nunito/nunito-v25-latin-900italic.svg#Nunito') format('svg'); /* Legacy iOS */
+}
\ No newline at end of file
diff --git a/public/fonts/nunito/nunito-v25-latin-200.eot b/public/fonts/nunito/nunito-v25-latin-200.eot
new file mode 100644
index 0000000..4058019
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-200.eot differ
diff --git a/public/fonts/nunito/nunito-v25-latin-200.svg b/public/fonts/nunito/nunito-v25-latin-200.svg
new file mode 100644
index 0000000..d910c48
--- /dev/null
+++ b/public/fonts/nunito/nunito-v25-latin-200.svg
@@ -0,0 +1,411 @@
+
+
+
diff --git a/public/fonts/nunito/nunito-v25-latin-200.ttf b/public/fonts/nunito/nunito-v25-latin-200.ttf
new file mode 100644
index 0000000..03afdd9
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-200.ttf differ
diff --git a/public/fonts/nunito/nunito-v25-latin-200.woff b/public/fonts/nunito/nunito-v25-latin-200.woff
new file mode 100644
index 0000000..4d444eb
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-200.woff differ
diff --git a/public/fonts/nunito/nunito-v25-latin-200.woff2 b/public/fonts/nunito/nunito-v25-latin-200.woff2
new file mode 100644
index 0000000..af85fe6
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-200.woff2 differ
diff --git a/public/fonts/nunito/nunito-v25-latin-200italic.eot b/public/fonts/nunito/nunito-v25-latin-200italic.eot
new file mode 100644
index 0000000..d9ceb61
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-200italic.eot differ
diff --git a/public/fonts/nunito/nunito-v25-latin-200italic.svg b/public/fonts/nunito/nunito-v25-latin-200italic.svg
new file mode 100644
index 0000000..4eb4928
--- /dev/null
+++ b/public/fonts/nunito/nunito-v25-latin-200italic.svg
@@ -0,0 +1,420 @@
+
+
+
diff --git a/public/fonts/nunito/nunito-v25-latin-200italic.ttf b/public/fonts/nunito/nunito-v25-latin-200italic.ttf
new file mode 100644
index 0000000..0c4fe74
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-200italic.ttf differ
diff --git a/public/fonts/nunito/nunito-v25-latin-200italic.woff b/public/fonts/nunito/nunito-v25-latin-200italic.woff
new file mode 100644
index 0000000..41f444c
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-200italic.woff differ
diff --git a/public/fonts/nunito/nunito-v25-latin-200italic.woff2 b/public/fonts/nunito/nunito-v25-latin-200italic.woff2
new file mode 100644
index 0000000..0647a00
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-200italic.woff2 differ
diff --git a/public/fonts/nunito/nunito-v25-latin-300.eot b/public/fonts/nunito/nunito-v25-latin-300.eot
new file mode 100644
index 0000000..4521824
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-300.eot differ
diff --git a/public/fonts/nunito/nunito-v25-latin-300.svg b/public/fonts/nunito/nunito-v25-latin-300.svg
new file mode 100644
index 0000000..b475681
--- /dev/null
+++ b/public/fonts/nunito/nunito-v25-latin-300.svg
@@ -0,0 +1,412 @@
+
+
+
diff --git a/public/fonts/nunito/nunito-v25-latin-300.ttf b/public/fonts/nunito/nunito-v25-latin-300.ttf
new file mode 100644
index 0000000..d632423
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-300.ttf differ
diff --git a/public/fonts/nunito/nunito-v25-latin-300.woff b/public/fonts/nunito/nunito-v25-latin-300.woff
new file mode 100644
index 0000000..ddb18a9
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-300.woff differ
diff --git a/public/fonts/nunito/nunito-v25-latin-300.woff2 b/public/fonts/nunito/nunito-v25-latin-300.woff2
new file mode 100644
index 0000000..04548e2
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-300.woff2 differ
diff --git a/public/fonts/nunito/nunito-v25-latin-300italic.eot b/public/fonts/nunito/nunito-v25-latin-300italic.eot
new file mode 100644
index 0000000..3fdb81a
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-300italic.eot differ
diff --git a/public/fonts/nunito/nunito-v25-latin-300italic.svg b/public/fonts/nunito/nunito-v25-latin-300italic.svg
new file mode 100644
index 0000000..b6b34ad
--- /dev/null
+++ b/public/fonts/nunito/nunito-v25-latin-300italic.svg
@@ -0,0 +1,424 @@
+
+
+
diff --git a/public/fonts/nunito/nunito-v25-latin-300italic.ttf b/public/fonts/nunito/nunito-v25-latin-300italic.ttf
new file mode 100644
index 0000000..793559b
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-300italic.ttf differ
diff --git a/public/fonts/nunito/nunito-v25-latin-300italic.woff b/public/fonts/nunito/nunito-v25-latin-300italic.woff
new file mode 100644
index 0000000..d98cec9
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-300italic.woff differ
diff --git a/public/fonts/nunito/nunito-v25-latin-300italic.woff2 b/public/fonts/nunito/nunito-v25-latin-300italic.woff2
new file mode 100644
index 0000000..0b43eef
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-300italic.woff2 differ
diff --git a/public/fonts/nunito/nunito-v25-latin-500.eot b/public/fonts/nunito/nunito-v25-latin-500.eot
new file mode 100644
index 0000000..19f6529
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-500.eot differ
diff --git a/public/fonts/nunito/nunito-v25-latin-500.svg b/public/fonts/nunito/nunito-v25-latin-500.svg
new file mode 100644
index 0000000..0787083
--- /dev/null
+++ b/public/fonts/nunito/nunito-v25-latin-500.svg
@@ -0,0 +1,412 @@
+
+
+
diff --git a/public/fonts/nunito/nunito-v25-latin-500.ttf b/public/fonts/nunito/nunito-v25-latin-500.ttf
new file mode 100644
index 0000000..43f9a6e
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-500.ttf differ
diff --git a/public/fonts/nunito/nunito-v25-latin-500.woff b/public/fonts/nunito/nunito-v25-latin-500.woff
new file mode 100644
index 0000000..ea98a9c
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-500.woff differ
diff --git a/public/fonts/nunito/nunito-v25-latin-500.woff2 b/public/fonts/nunito/nunito-v25-latin-500.woff2
new file mode 100644
index 0000000..96f3121
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-500.woff2 differ
diff --git a/public/fonts/nunito/nunito-v25-latin-500italic.eot b/public/fonts/nunito/nunito-v25-latin-500italic.eot
new file mode 100644
index 0000000..2900924
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-500italic.eot differ
diff --git a/public/fonts/nunito/nunito-v25-latin-500italic.svg b/public/fonts/nunito/nunito-v25-latin-500italic.svg
new file mode 100644
index 0000000..5d9b33a
--- /dev/null
+++ b/public/fonts/nunito/nunito-v25-latin-500italic.svg
@@ -0,0 +1,423 @@
+
+
+
diff --git a/public/fonts/nunito/nunito-v25-latin-500italic.ttf b/public/fonts/nunito/nunito-v25-latin-500italic.ttf
new file mode 100644
index 0000000..b26e3ec
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-500italic.ttf differ
diff --git a/public/fonts/nunito/nunito-v25-latin-500italic.woff b/public/fonts/nunito/nunito-v25-latin-500italic.woff
new file mode 100644
index 0000000..c5dbc30
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-500italic.woff differ
diff --git a/public/fonts/nunito/nunito-v25-latin-500italic.woff2 b/public/fonts/nunito/nunito-v25-latin-500italic.woff2
new file mode 100644
index 0000000..16ec315
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-500italic.woff2 differ
diff --git a/public/fonts/nunito/nunito-v25-latin-600.eot b/public/fonts/nunito/nunito-v25-latin-600.eot
new file mode 100644
index 0000000..ef722a5
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-600.eot differ
diff --git a/public/fonts/nunito/nunito-v25-latin-600.svg b/public/fonts/nunito/nunito-v25-latin-600.svg
new file mode 100644
index 0000000..9b5274d
--- /dev/null
+++ b/public/fonts/nunito/nunito-v25-latin-600.svg
@@ -0,0 +1,412 @@
+
+
+
diff --git a/public/fonts/nunito/nunito-v25-latin-600.ttf b/public/fonts/nunito/nunito-v25-latin-600.ttf
new file mode 100644
index 0000000..742de57
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-600.ttf differ
diff --git a/public/fonts/nunito/nunito-v25-latin-600.woff b/public/fonts/nunito/nunito-v25-latin-600.woff
new file mode 100644
index 0000000..aa4b811
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-600.woff differ
diff --git a/public/fonts/nunito/nunito-v25-latin-600.woff2 b/public/fonts/nunito/nunito-v25-latin-600.woff2
new file mode 100644
index 0000000..5ed5e51
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-600.woff2 differ
diff --git a/public/fonts/nunito/nunito-v25-latin-600italic.eot b/public/fonts/nunito/nunito-v25-latin-600italic.eot
new file mode 100644
index 0000000..8ddbc55
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-600italic.eot differ
diff --git a/public/fonts/nunito/nunito-v25-latin-600italic.svg b/public/fonts/nunito/nunito-v25-latin-600italic.svg
new file mode 100644
index 0000000..1c6e8a7
--- /dev/null
+++ b/public/fonts/nunito/nunito-v25-latin-600italic.svg
@@ -0,0 +1,423 @@
+
+
+
diff --git a/public/fonts/nunito/nunito-v25-latin-600italic.ttf b/public/fonts/nunito/nunito-v25-latin-600italic.ttf
new file mode 100644
index 0000000..843d25d
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-600italic.ttf differ
diff --git a/public/fonts/nunito/nunito-v25-latin-600italic.woff b/public/fonts/nunito/nunito-v25-latin-600italic.woff
new file mode 100644
index 0000000..930a141
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-600italic.woff differ
diff --git a/public/fonts/nunito/nunito-v25-latin-600italic.woff2 b/public/fonts/nunito/nunito-v25-latin-600italic.woff2
new file mode 100644
index 0000000..2cf160d
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-600italic.woff2 differ
diff --git a/public/fonts/nunito/nunito-v25-latin-700.eot b/public/fonts/nunito/nunito-v25-latin-700.eot
new file mode 100644
index 0000000..c52964b
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-700.eot differ
diff --git a/public/fonts/nunito/nunito-v25-latin-700.svg b/public/fonts/nunito/nunito-v25-latin-700.svg
new file mode 100644
index 0000000..436a18e
--- /dev/null
+++ b/public/fonts/nunito/nunito-v25-latin-700.svg
@@ -0,0 +1,414 @@
+
+
+
diff --git a/public/fonts/nunito/nunito-v25-latin-700.ttf b/public/fonts/nunito/nunito-v25-latin-700.ttf
new file mode 100644
index 0000000..04eb0d6
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-700.ttf differ
diff --git a/public/fonts/nunito/nunito-v25-latin-700.woff b/public/fonts/nunito/nunito-v25-latin-700.woff
new file mode 100644
index 0000000..6048b67
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-700.woff differ
diff --git a/public/fonts/nunito/nunito-v25-latin-700.woff2 b/public/fonts/nunito/nunito-v25-latin-700.woff2
new file mode 100644
index 0000000..d0a5677
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-700.woff2 differ
diff --git a/public/fonts/nunito/nunito-v25-latin-700italic.eot b/public/fonts/nunito/nunito-v25-latin-700italic.eot
new file mode 100644
index 0000000..4720926
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-700italic.eot differ
diff --git a/public/fonts/nunito/nunito-v25-latin-700italic.svg b/public/fonts/nunito/nunito-v25-latin-700italic.svg
new file mode 100644
index 0000000..bd4a282
--- /dev/null
+++ b/public/fonts/nunito/nunito-v25-latin-700italic.svg
@@ -0,0 +1,426 @@
+
+
+
diff --git a/public/fonts/nunito/nunito-v25-latin-700italic.ttf b/public/fonts/nunito/nunito-v25-latin-700italic.ttf
new file mode 100644
index 0000000..36f29f1
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-700italic.ttf differ
diff --git a/public/fonts/nunito/nunito-v25-latin-700italic.woff b/public/fonts/nunito/nunito-v25-latin-700italic.woff
new file mode 100644
index 0000000..036fa0b
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-700italic.woff differ
diff --git a/public/fonts/nunito/nunito-v25-latin-700italic.woff2 b/public/fonts/nunito/nunito-v25-latin-700italic.woff2
new file mode 100644
index 0000000..d8bce57
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-700italic.woff2 differ
diff --git a/public/fonts/nunito/nunito-v25-latin-800.eot b/public/fonts/nunito/nunito-v25-latin-800.eot
new file mode 100644
index 0000000..f6707fe
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-800.eot differ
diff --git a/public/fonts/nunito/nunito-v25-latin-800.svg b/public/fonts/nunito/nunito-v25-latin-800.svg
new file mode 100644
index 0000000..061c19f
--- /dev/null
+++ b/public/fonts/nunito/nunito-v25-latin-800.svg
@@ -0,0 +1,416 @@
+
+
+
diff --git a/public/fonts/nunito/nunito-v25-latin-800.ttf b/public/fonts/nunito/nunito-v25-latin-800.ttf
new file mode 100644
index 0000000..73461a1
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-800.ttf differ
diff --git a/public/fonts/nunito/nunito-v25-latin-800.woff b/public/fonts/nunito/nunito-v25-latin-800.woff
new file mode 100644
index 0000000..e82ecc7
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-800.woff differ
diff --git a/public/fonts/nunito/nunito-v25-latin-800.woff2 b/public/fonts/nunito/nunito-v25-latin-800.woff2
new file mode 100644
index 0000000..63fe567
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-800.woff2 differ
diff --git a/public/fonts/nunito/nunito-v25-latin-800italic.eot b/public/fonts/nunito/nunito-v25-latin-800italic.eot
new file mode 100644
index 0000000..faa3dce
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-800italic.eot differ
diff --git a/public/fonts/nunito/nunito-v25-latin-800italic.svg b/public/fonts/nunito/nunito-v25-latin-800italic.svg
new file mode 100644
index 0000000..5973d8f
--- /dev/null
+++ b/public/fonts/nunito/nunito-v25-latin-800italic.svg
@@ -0,0 +1,427 @@
+
+
+
diff --git a/public/fonts/nunito/nunito-v25-latin-800italic.ttf b/public/fonts/nunito/nunito-v25-latin-800italic.ttf
new file mode 100644
index 0000000..fc1d9c0
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-800italic.ttf differ
diff --git a/public/fonts/nunito/nunito-v25-latin-800italic.woff b/public/fonts/nunito/nunito-v25-latin-800italic.woff
new file mode 100644
index 0000000..5116260
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-800italic.woff differ
diff --git a/public/fonts/nunito/nunito-v25-latin-800italic.woff2 b/public/fonts/nunito/nunito-v25-latin-800italic.woff2
new file mode 100644
index 0000000..4ce205d
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-800italic.woff2 differ
diff --git a/public/fonts/nunito/nunito-v25-latin-900.eot b/public/fonts/nunito/nunito-v25-latin-900.eot
new file mode 100644
index 0000000..a27136c
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-900.eot differ
diff --git a/public/fonts/nunito/nunito-v25-latin-900.svg b/public/fonts/nunito/nunito-v25-latin-900.svg
new file mode 100644
index 0000000..9fb30a1
--- /dev/null
+++ b/public/fonts/nunito/nunito-v25-latin-900.svg
@@ -0,0 +1,413 @@
+
+
+
diff --git a/public/fonts/nunito/nunito-v25-latin-900.ttf b/public/fonts/nunito/nunito-v25-latin-900.ttf
new file mode 100644
index 0000000..08769bc
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-900.ttf differ
diff --git a/public/fonts/nunito/nunito-v25-latin-900.woff b/public/fonts/nunito/nunito-v25-latin-900.woff
new file mode 100644
index 0000000..20724ad
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-900.woff differ
diff --git a/public/fonts/nunito/nunito-v25-latin-900.woff2 b/public/fonts/nunito/nunito-v25-latin-900.woff2
new file mode 100644
index 0000000..0fbfe77
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-900.woff2 differ
diff --git a/public/fonts/nunito/nunito-v25-latin-900italic.eot b/public/fonts/nunito/nunito-v25-latin-900italic.eot
new file mode 100644
index 0000000..639a3e2
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-900italic.eot differ
diff --git a/public/fonts/nunito/nunito-v25-latin-900italic.svg b/public/fonts/nunito/nunito-v25-latin-900italic.svg
new file mode 100644
index 0000000..9520e26
--- /dev/null
+++ b/public/fonts/nunito/nunito-v25-latin-900italic.svg
@@ -0,0 +1,428 @@
+
+
+
diff --git a/public/fonts/nunito/nunito-v25-latin-900italic.ttf b/public/fonts/nunito/nunito-v25-latin-900italic.ttf
new file mode 100644
index 0000000..9ff98a8
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-900italic.ttf differ
diff --git a/public/fonts/nunito/nunito-v25-latin-900italic.woff b/public/fonts/nunito/nunito-v25-latin-900italic.woff
new file mode 100644
index 0000000..3977342
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-900italic.woff differ
diff --git a/public/fonts/nunito/nunito-v25-latin-900italic.woff2 b/public/fonts/nunito/nunito-v25-latin-900italic.woff2
new file mode 100644
index 0000000..33edc2f
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-900italic.woff2 differ
diff --git a/public/fonts/nunito/nunito-v25-latin-italic.eot b/public/fonts/nunito/nunito-v25-latin-italic.eot
new file mode 100644
index 0000000..484f5a3
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-italic.eot differ
diff --git a/public/fonts/nunito/nunito-v25-latin-italic.svg b/public/fonts/nunito/nunito-v25-latin-italic.svg
new file mode 100644
index 0000000..473eddd
--- /dev/null
+++ b/public/fonts/nunito/nunito-v25-latin-italic.svg
@@ -0,0 +1,423 @@
+
+
+
diff --git a/public/fonts/nunito/nunito-v25-latin-italic.ttf b/public/fonts/nunito/nunito-v25-latin-italic.ttf
new file mode 100644
index 0000000..e3ab9c3
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-italic.ttf differ
diff --git a/public/fonts/nunito/nunito-v25-latin-italic.woff b/public/fonts/nunito/nunito-v25-latin-italic.woff
new file mode 100644
index 0000000..e3d10e3
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-italic.woff differ
diff --git a/public/fonts/nunito/nunito-v25-latin-italic.woff2 b/public/fonts/nunito/nunito-v25-latin-italic.woff2
new file mode 100644
index 0000000..0017722
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-italic.woff2 differ
diff --git a/public/fonts/nunito/nunito-v25-latin-regular.eot b/public/fonts/nunito/nunito-v25-latin-regular.eot
new file mode 100644
index 0000000..5db896b
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-regular.eot differ
diff --git a/public/fonts/nunito/nunito-v25-latin-regular.svg b/public/fonts/nunito/nunito-v25-latin-regular.svg
new file mode 100644
index 0000000..442a61b
--- /dev/null
+++ b/public/fonts/nunito/nunito-v25-latin-regular.svg
@@ -0,0 +1,410 @@
+
+
+
diff --git a/public/fonts/nunito/nunito-v25-latin-regular.ttf b/public/fonts/nunito/nunito-v25-latin-regular.ttf
new file mode 100644
index 0000000..f9a7f72
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-regular.ttf differ
diff --git a/public/fonts/nunito/nunito-v25-latin-regular.woff b/public/fonts/nunito/nunito-v25-latin-regular.woff
new file mode 100644
index 0000000..2df129c
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-regular.woff differ
diff --git a/public/fonts/nunito/nunito-v25-latin-regular.woff2 b/public/fonts/nunito/nunito-v25-latin-regular.woff2
new file mode 100644
index 0000000..8b85e17
Binary files /dev/null and b/public/fonts/nunito/nunito-v25-latin-regular.woff2 differ
diff --git a/public/fonts/roboto.css b/public/fonts/roboto.css
new file mode 100644
index 0000000..0b6ecc8
--- /dev/null
+++ b/public/fonts/roboto.css
@@ -0,0 +1,156 @@
+/* roboto-100 - latin */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 100;
+ src: url('./roboto/roboto-v30-latin-100.eot'); /* IE9 Compat Modes */
+ src: local(''),
+ url('./roboto/roboto-v30-latin-100.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('./roboto/roboto-v30-latin-100.woff2') format('woff2'), /* Super Modern Browsers */
+ url('./roboto/roboto-v30-latin-100.woff') format('woff'), /* Modern Browsers */
+ url('./roboto/roboto-v30-latin-100.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('./roboto/roboto-v30-latin-100.svg#Roboto') format('svg'); /* Legacy iOS */
+}
+/* roboto-100italic - latin */
+@font-face {
+ font-family: 'Roboto';
+ font-style: italic;
+ font-weight: 100;
+ src: url('./roboto/roboto-v30-latin-100italic.eot'); /* IE9 Compat Modes */
+ src: local(''),
+ url('./roboto/roboto-v30-latin-100italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('./roboto/roboto-v30-latin-100italic.woff2') format('woff2'), /* Super Modern Browsers */
+ url('./roboto/roboto-v30-latin-100italic.woff') format('woff'), /* Modern Browsers */
+ url('./roboto/roboto-v30-latin-100italic.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('./roboto/roboto-v30-latin-100italic.svg#Roboto') format('svg'); /* Legacy iOS */
+}
+/* roboto-300 - latin */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 300;
+ src: url('./roboto/roboto-v30-latin-300.eot'); /* IE9 Compat Modes */
+ src: local(''),
+ url('./roboto/roboto-v30-latin-300.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('./roboto/roboto-v30-latin-300.woff2') format('woff2'), /* Super Modern Browsers */
+ url('./roboto/roboto-v30-latin-300.woff') format('woff'), /* Modern Browsers */
+ url('./roboto/roboto-v30-latin-300.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('./roboto/roboto-v30-latin-300.svg#Roboto') format('svg'); /* Legacy iOS */
+}
+/* roboto-300italic - latin */
+@font-face {
+ font-family: 'Roboto';
+ font-style: italic;
+ font-weight: 300;
+ src: url('./roboto/roboto-v30-latin-300italic.eot'); /* IE9 Compat Modes */
+ src: local(''),
+ url('./roboto/roboto-v30-latin-300italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('./roboto/roboto-v30-latin-300italic.woff2') format('woff2'), /* Super Modern Browsers */
+ url('./roboto/roboto-v30-latin-300italic.woff') format('woff'), /* Modern Browsers */
+ url('./roboto/roboto-v30-latin-300italic.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('./roboto/roboto-v30-latin-300italic.svg#Roboto') format('svg'); /* Legacy iOS */
+}
+/* roboto-regular - latin */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url('./roboto/roboto-v30-latin-regular.eot'); /* IE9 Compat Modes */
+ src: local(''),
+ url('./roboto/roboto-v30-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('./roboto/roboto-v30-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */
+ url('./roboto/roboto-v30-latin-regular.woff') format('woff'), /* Modern Browsers */
+ url('./roboto/roboto-v30-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('./roboto/roboto-v30-latin-regular.svg#Roboto') format('svg'); /* Legacy iOS */
+}
+/* roboto-italic - latin */
+@font-face {
+ font-family: 'Roboto';
+ font-style: italic;
+ font-weight: 400;
+ src: url('./roboto/roboto-v30-latin-italic.eot'); /* IE9 Compat Modes */
+ src: local(''),
+ url('./roboto/roboto-v30-latin-italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('./roboto/roboto-v30-latin-italic.woff2') format('woff2'), /* Super Modern Browsers */
+ url('./roboto/roboto-v30-latin-italic.woff') format('woff'), /* Modern Browsers */
+ url('./roboto/roboto-v30-latin-italic.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('./roboto/roboto-v30-latin-italic.svg#Roboto') format('svg'); /* Legacy iOS */
+}
+/* roboto-500 - latin */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 500;
+ src: url('./roboto/roboto-v30-latin-500.eot'); /* IE9 Compat Modes */
+ src: local(''),
+ url('./roboto/roboto-v30-latin-500.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('./roboto/roboto-v30-latin-500.woff2') format('woff2'), /* Super Modern Browsers */
+ url('./roboto/roboto-v30-latin-500.woff') format('woff'), /* Modern Browsers */
+ url('./roboto/roboto-v30-latin-500.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('./roboto/roboto-v30-latin-500.svg#Roboto') format('svg'); /* Legacy iOS */
+}
+/* roboto-500italic - latin */
+@font-face {
+ font-family: 'Roboto';
+ font-style: italic;
+ font-weight: 500;
+ src: url('./roboto/roboto-v30-latin-500italic.eot'); /* IE9 Compat Modes */
+ src: local(''),
+ url('./roboto/roboto-v30-latin-500italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('./roboto/roboto-v30-latin-500italic.woff2') format('woff2'), /* Super Modern Browsers */
+ url('./roboto/roboto-v30-latin-500italic.woff') format('woff'), /* Modern Browsers */
+ url('./roboto/roboto-v30-latin-500italic.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('./roboto/roboto-v30-latin-500italic.svg#Roboto') format('svg'); /* Legacy iOS */
+}
+/* roboto-700 - latin */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 700;
+ src: url('./roboto/roboto-v30-latin-700.eot'); /* IE9 Compat Modes */
+ src: local(''),
+ url('./roboto/roboto-v30-latin-700.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('./roboto/roboto-v30-latin-700.woff2') format('woff2'), /* Super Modern Browsers */
+ url('./roboto/roboto-v30-latin-700.woff') format('woff'), /* Modern Browsers */
+ url('./roboto/roboto-v30-latin-700.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('./roboto/roboto-v30-latin-700.svg#Roboto') format('svg'); /* Legacy iOS */
+}
+/* roboto-700italic - latin */
+@font-face {
+ font-family: 'Roboto';
+ font-style: italic;
+ font-weight: 700;
+ src: url('./roboto/roboto-v30-latin-700italic.eot'); /* IE9 Compat Modes */
+ src: local(''),
+ url('./roboto/roboto-v30-latin-700italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('./roboto/roboto-v30-latin-700italic.woff2') format('woff2'), /* Super Modern Browsers */
+ url('./roboto/roboto-v30-latin-700italic.woff') format('woff'), /* Modern Browsers */
+ url('./roboto/roboto-v30-latin-700italic.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('./roboto/roboto-v30-latin-700italic.svg#Roboto') format('svg'); /* Legacy iOS */
+}
+/* roboto-900 - latin */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 900;
+ src: url('./roboto/roboto-v30-latin-900.eot'); /* IE9 Compat Modes */
+ src: local(''),
+ url('./roboto/roboto-v30-latin-900.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('./roboto/roboto-v30-latin-900.woff2') format('woff2'), /* Super Modern Browsers */
+ url('./roboto/roboto-v30-latin-900.woff') format('woff'), /* Modern Browsers */
+ url('./roboto/roboto-v30-latin-900.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('./roboto/roboto-v30-latin-900.svg#Roboto') format('svg'); /* Legacy iOS */
+}
+/* roboto-900italic - latin */
+@font-face {
+ font-family: 'Roboto';
+ font-style: italic;
+ font-weight: 900;
+ src: url('./roboto/roboto-v30-latin-900italic.eot'); /* IE9 Compat Modes */
+ src: local(''),
+ url('./roboto/roboto-v30-latin-900italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('./roboto/roboto-v30-latin-900italic.woff2') format('woff2'), /* Super Modern Browsers */
+ url('./roboto/roboto-v30-latin-900italic.woff') format('woff'), /* Modern Browsers */
+ url('./roboto/roboto-v30-latin-900italic.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('./roboto/roboto-v30-latin-900italic.svg#Roboto') format('svg'); /* Legacy iOS */
+}
\ No newline at end of file
diff --git a/public/fonts/roboto/roboto-v30-latin-100.eot b/public/fonts/roboto/roboto-v30-latin-100.eot
new file mode 100644
index 0000000..094a755
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-100.eot differ
diff --git a/public/fonts/roboto/roboto-v30-latin-100.svg b/public/fonts/roboto/roboto-v30-latin-100.svg
new file mode 100644
index 0000000..e8c8fc8
--- /dev/null
+++ b/public/fonts/roboto/roboto-v30-latin-100.svg
@@ -0,0 +1,313 @@
+
+
+
diff --git a/public/fonts/roboto/roboto-v30-latin-100.ttf b/public/fonts/roboto/roboto-v30-latin-100.ttf
new file mode 100644
index 0000000..7e9d45d
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-100.ttf differ
diff --git a/public/fonts/roboto/roboto-v30-latin-100.woff b/public/fonts/roboto/roboto-v30-latin-100.woff
new file mode 100644
index 0000000..a815cf8
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-100.woff differ
diff --git a/public/fonts/roboto/roboto-v30-latin-100.woff2 b/public/fonts/roboto/roboto-v30-latin-100.woff2
new file mode 100644
index 0000000..71c9bb7
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-100.woff2 differ
diff --git a/public/fonts/roboto/roboto-v30-latin-100italic.eot b/public/fonts/roboto/roboto-v30-latin-100italic.eot
new file mode 100644
index 0000000..6353d2c
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-100italic.eot differ
diff --git a/public/fonts/roboto/roboto-v30-latin-100italic.svg b/public/fonts/roboto/roboto-v30-latin-100italic.svg
new file mode 100644
index 0000000..c51ce87
--- /dev/null
+++ b/public/fonts/roboto/roboto-v30-latin-100italic.svg
@@ -0,0 +1,332 @@
+
+
+
diff --git a/public/fonts/roboto/roboto-v30-latin-100italic.ttf b/public/fonts/roboto/roboto-v30-latin-100italic.ttf
new file mode 100644
index 0000000..9b185aa
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-100italic.ttf differ
diff --git a/public/fonts/roboto/roboto-v30-latin-100italic.woff b/public/fonts/roboto/roboto-v30-latin-100italic.woff
new file mode 100644
index 0000000..5c0c285
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-100italic.woff differ
diff --git a/public/fonts/roboto/roboto-v30-latin-100italic.woff2 b/public/fonts/roboto/roboto-v30-latin-100italic.woff2
new file mode 100644
index 0000000..4ccadd1
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-100italic.woff2 differ
diff --git a/public/fonts/roboto/roboto-v30-latin-300.eot b/public/fonts/roboto/roboto-v30-latin-300.eot
new file mode 100644
index 0000000..052b15c
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-300.eot differ
diff --git a/public/fonts/roboto/roboto-v30-latin-300.svg b/public/fonts/roboto/roboto-v30-latin-300.svg
new file mode 100644
index 0000000..4ded944
--- /dev/null
+++ b/public/fonts/roboto/roboto-v30-latin-300.svg
@@ -0,0 +1,312 @@
+
+
+
diff --git a/public/fonts/roboto/roboto-v30-latin-300.ttf b/public/fonts/roboto/roboto-v30-latin-300.ttf
new file mode 100644
index 0000000..0ddede8
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-300.ttf differ
diff --git a/public/fonts/roboto/roboto-v30-latin-300.woff b/public/fonts/roboto/roboto-v30-latin-300.woff
new file mode 100644
index 0000000..36979ae
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-300.woff differ
diff --git a/public/fonts/roboto/roboto-v30-latin-300.woff2 b/public/fonts/roboto/roboto-v30-latin-300.woff2
new file mode 100644
index 0000000..6068138
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-300.woff2 differ
diff --git a/public/fonts/roboto/roboto-v30-latin-300italic.eot b/public/fonts/roboto/roboto-v30-latin-300italic.eot
new file mode 100644
index 0000000..bad3b49
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-300italic.eot differ
diff --git a/public/fonts/roboto/roboto-v30-latin-300italic.svg b/public/fonts/roboto/roboto-v30-latin-300italic.svg
new file mode 100644
index 0000000..758402b
--- /dev/null
+++ b/public/fonts/roboto/roboto-v30-latin-300italic.svg
@@ -0,0 +1,329 @@
+
+
+
diff --git a/public/fonts/roboto/roboto-v30-latin-300italic.ttf b/public/fonts/roboto/roboto-v30-latin-300italic.ttf
new file mode 100644
index 0000000..a0423bc
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-300italic.ttf differ
diff --git a/public/fonts/roboto/roboto-v30-latin-300italic.woff b/public/fonts/roboto/roboto-v30-latin-300italic.woff
new file mode 100644
index 0000000..f52f767
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-300italic.woff differ
diff --git a/public/fonts/roboto/roboto-v30-latin-300italic.woff2 b/public/fonts/roboto/roboto-v30-latin-300italic.woff2
new file mode 100644
index 0000000..22c57b0
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-300italic.woff2 differ
diff --git a/public/fonts/roboto/roboto-v30-latin-500.eot b/public/fonts/roboto/roboto-v30-latin-500.eot
new file mode 100644
index 0000000..fec0361
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-500.eot differ
diff --git a/public/fonts/roboto/roboto-v30-latin-500.svg b/public/fonts/roboto/roboto-v30-latin-500.svg
new file mode 100644
index 0000000..67eecf4
--- /dev/null
+++ b/public/fonts/roboto/roboto-v30-latin-500.svg
@@ -0,0 +1,305 @@
+
+
+
diff --git a/public/fonts/roboto/roboto-v30-latin-500.ttf b/public/fonts/roboto/roboto-v30-latin-500.ttf
new file mode 100644
index 0000000..4f515e2
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-500.ttf differ
diff --git a/public/fonts/roboto/roboto-v30-latin-500.woff b/public/fonts/roboto/roboto-v30-latin-500.woff
new file mode 100644
index 0000000..d39bb52
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-500.woff differ
diff --git a/public/fonts/roboto/roboto-v30-latin-500.woff2 b/public/fonts/roboto/roboto-v30-latin-500.woff2
new file mode 100644
index 0000000..29342a8
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-500.woff2 differ
diff --git a/public/fonts/roboto/roboto-v30-latin-500italic.eot b/public/fonts/roboto/roboto-v30-latin-500italic.eot
new file mode 100644
index 0000000..8eb31ad
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-500italic.eot differ
diff --git a/public/fonts/roboto/roboto-v30-latin-500italic.svg b/public/fonts/roboto/roboto-v30-latin-500italic.svg
new file mode 100644
index 0000000..bed50dc
--- /dev/null
+++ b/public/fonts/roboto/roboto-v30-latin-500italic.svg
@@ -0,0 +1,326 @@
+
+
+
diff --git a/public/fonts/roboto/roboto-v30-latin-500italic.ttf b/public/fonts/roboto/roboto-v30-latin-500italic.ttf
new file mode 100644
index 0000000..18e0f3c
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-500italic.ttf differ
diff --git a/public/fonts/roboto/roboto-v30-latin-500italic.woff b/public/fonts/roboto/roboto-v30-latin-500italic.woff
new file mode 100644
index 0000000..b6ad1c5
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-500italic.woff differ
diff --git a/public/fonts/roboto/roboto-v30-latin-500italic.woff2 b/public/fonts/roboto/roboto-v30-latin-500italic.woff2
new file mode 100644
index 0000000..ae1933f
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-500italic.woff2 differ
diff --git a/public/fonts/roboto/roboto-v30-latin-700.eot b/public/fonts/roboto/roboto-v30-latin-700.eot
new file mode 100644
index 0000000..701f742
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-700.eot differ
diff --git a/public/fonts/roboto/roboto-v30-latin-700.svg b/public/fonts/roboto/roboto-v30-latin-700.svg
new file mode 100644
index 0000000..11db87d
--- /dev/null
+++ b/public/fonts/roboto/roboto-v30-latin-700.svg
@@ -0,0 +1,309 @@
+
+
+
diff --git a/public/fonts/roboto/roboto-v30-latin-700.ttf b/public/fonts/roboto/roboto-v30-latin-700.ttf
new file mode 100644
index 0000000..59830da
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-700.ttf differ
diff --git a/public/fonts/roboto/roboto-v30-latin-700.woff b/public/fonts/roboto/roboto-v30-latin-700.woff
new file mode 100644
index 0000000..db0012d
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-700.woff differ
diff --git a/public/fonts/roboto/roboto-v30-latin-700.woff2 b/public/fonts/roboto/roboto-v30-latin-700.woff2
new file mode 100644
index 0000000..771fbec
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-700.woff2 differ
diff --git a/public/fonts/roboto/roboto-v30-latin-700italic.eot b/public/fonts/roboto/roboto-v30-latin-700italic.eot
new file mode 100644
index 0000000..eb39518
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-700italic.eot differ
diff --git a/public/fonts/roboto/roboto-v30-latin-700italic.svg b/public/fonts/roboto/roboto-v30-latin-700italic.svg
new file mode 100644
index 0000000..050bee0
--- /dev/null
+++ b/public/fonts/roboto/roboto-v30-latin-700italic.svg
@@ -0,0 +1,325 @@
+
+
+
diff --git a/public/fonts/roboto/roboto-v30-latin-700italic.ttf b/public/fonts/roboto/roboto-v30-latin-700italic.ttf
new file mode 100644
index 0000000..9552181
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-700italic.ttf differ
diff --git a/public/fonts/roboto/roboto-v30-latin-700italic.woff b/public/fonts/roboto/roboto-v30-latin-700italic.woff
new file mode 100644
index 0000000..17efecc
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-700italic.woff differ
diff --git a/public/fonts/roboto/roboto-v30-latin-700italic.woff2 b/public/fonts/roboto/roboto-v30-latin-700italic.woff2
new file mode 100644
index 0000000..a56a6ed
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-700italic.woff2 differ
diff --git a/public/fonts/roboto/roboto-v30-latin-900.eot b/public/fonts/roboto/roboto-v30-latin-900.eot
new file mode 100644
index 0000000..99a3f75
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-900.eot differ
diff --git a/public/fonts/roboto/roboto-v30-latin-900.svg b/public/fonts/roboto/roboto-v30-latin-900.svg
new file mode 100644
index 0000000..9efdf4e
--- /dev/null
+++ b/public/fonts/roboto/roboto-v30-latin-900.svg
@@ -0,0 +1,302 @@
+
+
+
diff --git a/public/fonts/roboto/roboto-v30-latin-900.ttf b/public/fonts/roboto/roboto-v30-latin-900.ttf
new file mode 100644
index 0000000..bc31a87
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-900.ttf differ
diff --git a/public/fonts/roboto/roboto-v30-latin-900.woff b/public/fonts/roboto/roboto-v30-latin-900.woff
new file mode 100644
index 0000000..04cbe94
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-900.woff differ
diff --git a/public/fonts/roboto/roboto-v30-latin-900.woff2 b/public/fonts/roboto/roboto-v30-latin-900.woff2
new file mode 100644
index 0000000..067cb32
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-900.woff2 differ
diff --git a/public/fonts/roboto/roboto-v30-latin-900italic.eot b/public/fonts/roboto/roboto-v30-latin-900italic.eot
new file mode 100644
index 0000000..a5893d1
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-900italic.eot differ
diff --git a/public/fonts/roboto/roboto-v30-latin-900italic.svg b/public/fonts/roboto/roboto-v30-latin-900italic.svg
new file mode 100644
index 0000000..f8f5ab3
--- /dev/null
+++ b/public/fonts/roboto/roboto-v30-latin-900italic.svg
@@ -0,0 +1,324 @@
+
+
+
diff --git a/public/fonts/roboto/roboto-v30-latin-900italic.ttf b/public/fonts/roboto/roboto-v30-latin-900italic.ttf
new file mode 100644
index 0000000..46ff742
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-900italic.ttf differ
diff --git a/public/fonts/roboto/roboto-v30-latin-900italic.woff b/public/fonts/roboto/roboto-v30-latin-900italic.woff
new file mode 100644
index 0000000..4d7794b
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-900italic.woff differ
diff --git a/public/fonts/roboto/roboto-v30-latin-900italic.woff2 b/public/fonts/roboto/roboto-v30-latin-900italic.woff2
new file mode 100644
index 0000000..59cab0f
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-900italic.woff2 differ
diff --git a/public/fonts/roboto/roboto-v30-latin-italic.eot b/public/fonts/roboto/roboto-v30-latin-italic.eot
new file mode 100644
index 0000000..ee2f1ef
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-italic.eot differ
diff --git a/public/fonts/roboto/roboto-v30-latin-italic.svg b/public/fonts/roboto/roboto-v30-latin-italic.svg
new file mode 100644
index 0000000..4d59797
--- /dev/null
+++ b/public/fonts/roboto/roboto-v30-latin-italic.svg
@@ -0,0 +1,323 @@
+
+
+
diff --git a/public/fonts/roboto/roboto-v30-latin-italic.ttf b/public/fonts/roboto/roboto-v30-latin-italic.ttf
new file mode 100644
index 0000000..add4a6e
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-italic.ttf differ
diff --git a/public/fonts/roboto/roboto-v30-latin-italic.woff b/public/fonts/roboto/roboto-v30-latin-italic.woff
new file mode 100644
index 0000000..ebee16b
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-italic.woff differ
diff --git a/public/fonts/roboto/roboto-v30-latin-italic.woff2 b/public/fonts/roboto/roboto-v30-latin-italic.woff2
new file mode 100644
index 0000000..e1b7a79
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-italic.woff2 differ
diff --git a/public/fonts/roboto/roboto-v30-latin-regular.eot b/public/fonts/roboto/roboto-v30-latin-regular.eot
new file mode 100644
index 0000000..c244b08
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-regular.eot differ
diff --git a/public/fonts/roboto/roboto-v30-latin-regular.svg b/public/fonts/roboto/roboto-v30-latin-regular.svg
new file mode 100644
index 0000000..627f5a3
--- /dev/null
+++ b/public/fonts/roboto/roboto-v30-latin-regular.svg
@@ -0,0 +1,308 @@
+
+
+
diff --git a/public/fonts/roboto/roboto-v30-latin-regular.ttf b/public/fonts/roboto/roboto-v30-latin-regular.ttf
new file mode 100644
index 0000000..d0e6325
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-regular.ttf differ
diff --git a/public/fonts/roboto/roboto-v30-latin-regular.woff b/public/fonts/roboto/roboto-v30-latin-regular.woff
new file mode 100644
index 0000000..9eaa94f
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-regular.woff differ
diff --git a/public/fonts/roboto/roboto-v30-latin-regular.woff2 b/public/fonts/roboto/roboto-v30-latin-regular.woff2
new file mode 100644
index 0000000..020729e
Binary files /dev/null and b/public/fonts/roboto/roboto-v30-latin-regular.woff2 differ
diff --git a/resources/views/admin/modal/company-service.blade.php b/resources/views/admin/modal/company-service.blade.php
index 058334f..9257b52 100755
--- a/resources/views/admin/modal/company-service.blade.php
+++ b/resources/views/admin/modal/company-service.blade.php
@@ -17,7 +17,7 @@
- {{ Form::textarea('description', $value->description, array('Beschreibung'=>__('Beschreibung'), 'class'=>'form-control', 'rows'=>2)) }}
+ {{ Form::textarea('description', $value->description, array('placeholder'=>__('Beschreibung'), 'class'=>'form-control', 'rows'=>2)) }}
diff --git a/resources/views/admin/modal/country-service.blade.php b/resources/views/admin/modal/country-service.blade.php
index 10ed8e5..21c6cdd 100755
--- a/resources/views/admin/modal/country-service.blade.php
+++ b/resources/views/admin/modal/country-service.blade.php
@@ -17,7 +17,7 @@
- {{ Form::textarea('description', $value->description, array('Beschreibung'=>__('Beschreibung'), 'class'=>'form-control', 'rows'=>2)) }}
+ {{ Form::textarea('description', $value->description, array('placeholder'=>__('Beschreibung'), 'class'=>'form-control', 'rows'=>2)) }}
diff --git a/resources/views/admin/modal/provider-service.blade.php b/resources/views/admin/modal/provider-service.blade.php
index e9bc2da..29aa948 100755
--- a/resources/views/admin/modal/provider-service.blade.php
+++ b/resources/views/admin/modal/provider-service.blade.php
@@ -17,7 +17,7 @@
- {{ Form::textarea('description', $value->description, array('Beschreibung'=>__('Beschreibung'), 'class'=>'form-control', 'rows'=>2)) }}
+ {{ Form::textarea('description', $value->description, array('placeholder'=>__('Beschreibung'), 'class'=>'form-control', 'rows'=>2)) }}
diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php
index 6dba26c..ce2d4aa 100644
--- a/resources/views/layouts/app.blade.php
+++ b/resources/views/layouts/app.blade.php
@@ -14,8 +14,8 @@
-
-
+
+
diff --git a/resources/views/layouts/application.blade.php b/resources/views/layouts/application.blade.php
index 01724fc..231281b 100755
--- a/resources/views/layouts/application.blade.php
+++ b/resources/views/layouts/application.blade.php
@@ -11,7 +11,7 @@
{{ config('app.name') }}
-
+
diff --git a/resources/views/layouts/auth.blade.php b/resources/views/layouts/auth.blade.php
index 47be305..d2015e9 100755
--- a/resources/views/layouts/auth.blade.php
+++ b/resources/views/layouts/auth.blade.php
@@ -12,7 +12,7 @@
-
+
diff --git a/resources/views/layouts/includes/layout-sidenav.blade.php b/resources/views/layouts/includes/layout-sidenav.blade.php
index 66ac1b2..bb834e3 100755
--- a/resources/views/layouts/includes/layout-sidenav.blade.php
+++ b/resources/views/layouts/includes/layout-sidenav.blade.php
@@ -414,30 +414,8 @@
@if(Auth::user()->isSySAdmin())
-
-
-
-
- {{ __('Tools') }}
-
-
-
+
+ Tools
@endif
diff --git a/resources/views/sys/index.blade.php b/resources/views/sys/index.blade.php
new file mode 100644
index 0000000..6f4989f
--- /dev/null
+++ b/resources/views/sys/index.blade.php
@@ -0,0 +1,19 @@
+@extends('layouts.layout-2')
+
+@section('content')
+
+
+
+@endsection
\ No newline at end of file
diff --git a/resources/views/sys/tools/reimport b/resources/views/sys/tools/reimport
new file mode 100644
index 0000000..1a97ede
--- /dev/null
+++ b/resources/views/sys/tools/reimport
@@ -0,0 +1,75 @@
+@extends('layouts.layout-2')
+
+@section('content')
+
+ @if ($errors->any())
+
+
+
+
+ @foreach ($errors->all() as $error)
+ - {{ $error }}
+ @endforeach
+
+
+
+
+ @endif
+
+
+
+ SysAdmin Kundenhoheit prüfen
+
+
+ {!! Form::open(['url' => route('sysadmin_tool_store', ['customers']), 'class' => '']) !!}
+
+
+ {{--
+
+
+
+
+
+
+
+
+
--}}
+
+ @if(count($values)>0)
+
+
+
+
+
+
+ | ID |
+ {{__('Mail')}} |
+ {{__('is like')}} |
+ {{__('OrderID')}} |
+ {{__('txaction')}} |
+ {{__('Action')}} |
+
+
+
+ @foreach($values as $shopping_user)
+
+ | {{$shopping_user->id}} |
+ {{$shopping_user->billing_email}} |
+ {{$shopping_user->is_like}} |
+ @if($shopping_user->shopping_order){{$shopping_user->shopping_order->id}}@endif |
+ @if($shopping_user->shopping_order){{$shopping_user->shopping_order->txaction}}@endif |
+ |
+
+ @endforeach
+
+
+
+
+
+ @endif
+
+
+ {!! Form::close() !!}
+
+@endsection
+
diff --git a/resources/views/sys/tools/reimport.blade.php b/resources/views/sys/tools/reimport.blade.php
new file mode 100644
index 0000000..014104d
--- /dev/null
+++ b/resources/views/sys/tools/reimport.blade.php
@@ -0,0 +1,71 @@
+@extends('layouts.layout-2')
+
+@section('content')
+
+ @if ($errors->any())
+
+
+
+
+ @foreach ($errors->all() as $error)
+ - {{ $error }}
+ @endforeach
+
+
+
+
+ @endif
+
+
+
+ SysAdmin ReImport TravelBooking
+
+
+ {!! Form::open(['url' => route('sysadmin_tool_store', ['reimport']), 'class' => '']) !!}
+
+
+ {{--
+
+
+
+
+
+
+
+
+
--}}
+
+ @if(count($values)>0)
+
+
+
+
+
+ | ID |
+ crm_booking_id |
+ first_name |
+ last_name |
+ Action |
+
+
+
+ @foreach($values as $value)
+
+ | {{$value->id}} |
+ {{$value->crm_booking_id}} |
+ {{$value->first_name}} |
+ {{$value->last_name}} |
+ |
+
+ @endforeach
+
+
+
+
+ @endif
+
+
+ {!! Form::close() !!}
+
+@endsection
+
diff --git a/resources/views/travel/program/_details.blade.php b/resources/views/travel/program/_details.blade.php
index b921ae4..6ad6786 100644
--- a/resources/views/travel/program/_details.blade.php
+++ b/resources/views/travel/program/_details.blade.php
@@ -12,7 +12,7 @@
{{ Form::text('deposit_percent', $program->deposit_percent, array('class'=>'form-control', 'id'=>'deposit_percent')) }}
@@ -43,12 +43,21 @@
-