last changes since 6-2023

This commit is contained in:
Kevin Adametz 2023-07-03 10:10:09 +02:00
parent 561c5875a7
commit c1c613a4b9
53 changed files with 1351 additions and 93 deletions

View file

@ -287,7 +287,9 @@ class ReportController extends Controller
$new = false;
}
}else{
$total_price += $export->booking->isCanceled() ? $export->booking->getPriceCanceledRaw() : $export->booking->getPriceRaw();
//$total_price += $export->booking->isCanceled() ? $export->booking->getPriceCanceledRaw() : $export->booking->getPriceRaw();
$total_price += $export->isCanceled() ? $export->getPriceCanceledRaw() : $export->getPriceRaw();
$columns[] = array(
'BuchungsID' => $export->id,
'Status' => $export->lead->status->name,

View file

@ -62,6 +62,9 @@ class CMSContentController extends Controller
//store in cms old Datebase
\App\Models\Sym\CmsContent::create($data);
}else{
if($data['identifier'] === 'fewo-email-file'){
$data['integer'] = isset($data['default_travel_info']) ? 1 : 0;
}
$model = CMSContent::find($data['id']);
$model->fill($data);
$model->save();

View file

@ -232,6 +232,24 @@ class LeadController extends Controller
->addColumn('request_date', function (Lead $lead) {
return Carbon::parse($lead->request_date)->format(\Util::formatDateDB());
})
->addColumn('travel_country', function (Lead $lead) {
$out = "";
if($lead->bookings->count()){
$out = '<span class="badge badge-success">';
foreach ($lead->bookings as $booking){
if($booking->travel_country_id && $booking->travel_country) {
$out .= $booking->travel_country->destco;
}
}
$out .= '</span>';
return $out;
}
if($lead->travel_country){
return '<span class="badge badge-secondary">'.$lead->travel_country->destco.'</span>';
}
return "-";
})
->addColumn('status', function (Lead $lead) {
return $lead->getStatusBadge();
})
@ -292,7 +310,7 @@ class LeadController extends Controller
$query->where('customer_id', 'LIKE', '%'.$keyword.'%');
}
})
->rawColumns(['action_edit', 'customer_id', 'sf_guard_user_id', 'id', 'status', 'last_lead_email', 'lead_notice', 'action_delete'])
->rawColumns(['action_edit', 'customer_id', 'sf_guard_user_id', 'id', 'status', 'last_lead_email', 'travel_country', 'lead_notice', 'action_delete'])
->make(true);
}

View file

@ -18,6 +18,8 @@ class EmailsController extends Controller
protected $identifier_booking_file;
protected $identifier_fewo_file;
protected $identifier_lead_file;
public function __construct()
{

View file

@ -0,0 +1,154 @@
<?php
namespace App\Http\Controllers;
use Request;
use Carbon\Carbon;
use App\Models\Page;
class TravelContentController extends Controller
{
public function __construct()
{
$this->middleware(['admin', '2fa']);
}
public function index($step = false)
{
$data = [
'travelProgramOverviews' => Page::whereTemplate('travelProgramOverview')->get(),
'step' => $step
];
return view('travel.content.index', $data);
}
public function detail($id)
{
if($id === "new") {
$id = 'new';
}else{
$page = Page::findOrFail($id);
$id = $page->id;
}
$data = [
'model' => $page,
'id' => $id,
];
return view('travel.content.detail', $data);
}
public function store($id)
{
$data = Request::all();
if($id === "new") {
//$draft = new Draft();
}else{
$page = Page::findOrFail($id);
}
if(Page::whereSlug($data['slug'])->where('id', '!=', $page->id)->count() > 0){
$data['slug'] = "";
}
$page->title = $data['title'];
$page->title_short = $data['title_short'];
$page->pagetitle = $data['pagetitle'];
$page->slug = $data['slug'];
$page->description = $data['description'];
$page->content_new = $data['content_new'];
$page->status = $data['status'];
$page->show_in_navi = $data['show_in_navi'];
$page->save();
\Session()->flash('alert-save', '1');
return redirect(route('travel_content_detail', [$page->id]));
}
public function subDetail($id)
{
if($id === "new") {
$id = 'new';
}else{
$page = Page::findOrFail($id);
$id = $page->id;
}
$data = [
'model' => $page,
'id' => $id,
];
return view('travel.content.sub_detail', $data);
}
public function subStore($id)
{
$data = Request::all();
if($id === "new") {
//$draft = new Draft();
}else{
$page = Page::findOrFail($id);
}
if(Page::whereSlug($data['slug'])->where('id', '!=', $page->id)->count() > 0){
$data['slug'] = "";
}
$page->title = $data['title'];
$page->pagetitle = $data['pagetitle'];
$page->slug = $data['slug'];
$page->description = $data['description'];
$page->status = $data['status'];
$page->show_in_navi = $data['show_in_navi'];
$page->order = $data['order'];
$page->travel_program = $data['travel_program'] > 0 ? $data['travel_program'] : null;
$page->save();
\Session()->flash('alert-save', '1');
return redirect(route('travel_content_sub_detail', [$page->id]));
}
public function load(){
$data = Request::all();
$ret = "";
if(Request::ajax()) {
if($data['action'] === "modal-copy-page") {
if($data['id'] > 0){
$value = Page::findOrFail($data['id']);
$ret = view('travel.content.modal_copy', compact('value'))->render();
}
}
}
return response()->json(['response' => $data, 'html'=>$ret]);
}
public function update(){
$data = Request::all();
if($data['action'] === 'page-copy'){
if($data['page_copy_id'] > 0){
$model = Page::findOrFail($data['page_copy_id']);
$newModel = $model->replicate();
$newModel->date = null;
//slug unique
// $newModel->slug
$newModel->created_at = now();
$newModel->save();
}
\Session()->flash('alert-save', '1');
return redirect(route('travel_content_detail', [$data['id']]));
}
}
}

View file

@ -3,21 +3,23 @@
namespace App\Http\Controllers;
use App\Mail\MailSendFeWoInvoice;
use App\Mail\MailSendFeWoService;
use App\Mail\MailSendFeWoInfo;
use Request;
use App\Services\Util;
use App\Models\CMSContent;
use App\Models\FewoLodging;
use App\Mail\MailSendFeWoInfo;
use App\Models\FewoReservation;
use App\Models\TravelBookingFewoChannel;
use App\Models\TravelUserBookingFewo;
use App\Models\TravelUserBookingFewoNotice;
use App\Models\TravelUserBookingFile;
use App\Repositories\BookingFewoFileRepository;
use App\Repositories\TravelUserBookingFewoRepository;
use App\Services\Util;
use App\Models\CustomerFewoFile;
use App\Mail\MailSendFeWoInvoice;
use App\Mail\MailSendFeWoService;
use Illuminate\Support\Facades\Mail;
use Request;
use App\Models\TravelUserBookingFewo;
use App\Models\TravelUserBookingFile;
use App\Models\TravelBookingFewoChannel;
use App\Models\TravelUserBookingFewoNotice;
use App\Repositories\BookingFewoFileRepository;
use App\Repositories\CustomerFewoFileRepository;
use App\Repositories\TravelUserBookingFewoRepository;
class TravelUserBookingFewoController extends Controller
{
@ -147,8 +149,12 @@ class TravelUserBookingFewoController extends Controller
if($data['action'] === 'sendInfosMailtoUser') {
$travel_user_booking_fewo = TravelUserBookingFewo::findOrFail($id);
if($travel_user_booking_fewo->travel_user_id && $travel_user_booking_fewo->travel_user->email){
$mail_files = [];
if(isset($data['info_mail_files'])){
$mail_files = $this->setMailInfoFiles($data['info_mail_files'], $travel_user_booking_fewo);
}
$mail_bbc = config('mail.mail_bbc');
Mail::to($travel_user_booking_fewo->travel_user->email)->bcc($mail_bbc)->send(new MailSendFeWoInfo($travel_user_booking_fewo));
Mail::to($travel_user_booking_fewo->travel_user->email)->bcc($mail_bbc)->send(new MailSendFeWoInfo($travel_user_booking_fewo, $mail_files));
$send_info_mail = $travel_user_booking_fewo->send_info_mail;
$send_info_mail[] = [date('H:i d.m.Y') => $travel_user_booking_fewo->travel_user->email];
$travel_user_booking_fewo->send_info_mail = $send_info_mail;
@ -195,6 +201,51 @@ class TravelUserBookingFewoController extends Controller
}
}
private function setMailInfoFiles($info_mail_files, $travel_user_booking_fewo)
{
$files = [];
$ret = [];
//read files
foreach($info_mail_files as $mail_file){
if($mail_file === 'fewo_instruction_pdf'){
$files[] = [
'target' => route('customer_file_show', ['fewo_instruction_pdf', $travel_user_booking_fewo->fewo_lodging->id, 'stream']),
'name' => \App\Services\BookingFewo::getFeWoInstructionPDFName($travel_user_booking_fewo->fewo_lodging)
];
}else{
if($file = \App\Models\CMSContent::getModelBySlug($mail_file)){
$files[] = [
'target' => $file->getURL(),
'name' => $file->name
];
}
}
}
//store files
foreach($files as $file){
$arrContextOptions=array(
"ssl"=>array(
"verify_peer"=>false,
"verify_peer_name"=>false,
),
);
$contents = file_get_contents($file['target'], false, stream_context_create($arrContextOptions));
$mine = Util::getMimeFromHeader($http_response_header);
$extension = Util::getExtensionFromMime($mine);
$fileRepo = new CustomerFewoFileRepository(new CustomerFewoFile());
$fileRepo->_set('disk', 'travel_user');
$fileRepo->_set('dir', '/attachment/'.date('Y/m').'/');
$fileRepo->_set('travel_user_id', $travel_user_booking_fewo->travel_user_id);
$fileRepo->_set('customer_fewo_mail_id', NULL);
$fileRepo->_set('identifier', 'fewo_info_mail_user');
$fileRepo->_set('originalName', $file['name']);
$fileRepo->_set('mine', $mine);
$fileRepo->_set('extension', $extension);
$ret[] = $fileRepo->storeReturnFile($contents);
}
return $ret;
}
public function getAjaxRequests(){

View file

@ -14,12 +14,15 @@ class MailSendFeWoInfo extends Mailable
protected $travel_user_booking_fewo;
public $subject;
public $files;
public function __construct(TravelUserBookingFewo $travel_user_booking_fewo)
public function __construct(TravelUserBookingFewo $travel_user_booking_fewo, $files = [])
{
$this->travel_user_booking_fewo = $travel_user_booking_fewo;
$this->subject = __('STERN TOURS Anreiseinfo FEWO');
$this->files = $files;
}
public function build()
@ -40,18 +43,33 @@ class MailSendFeWoInfo extends Mailable
'mine' => 'application/pdf',
);
return $this->view('emails.info')
$message = $this->view('emails.info')
->with([
'salutation' => $salutation,
'copy1line' => $this->travel_user_booking_fewo->info_mail_text,
'copy2line' => "",
'greetings' => __('Best regards'),
'model' => $this->travel_user_booking_fewo,
])
->attach($file1['path'], [
'as' => $file1['name'],
'mime' => $file1['mine'],
])
;
]);
$message->attach($file1['path'], [
'as' => $file1['name'],
'mime' => $file1['mine'],
]);
foreach ($this->files as $file) {
$message->attach($file->getPath(),[
'as' => $file->original_name,
'mime' => $file->mine,
]); // attach each file
}
return $message;
}
}
}
//path = \Storage::disk('lead')->path($this->dir.$this->filename);
//name =
//'mine' => 'application/pdf',

View file

@ -222,6 +222,7 @@ class Booking extends Model
//'airline_id' => 'int',
'refund' => 'int',
'xx_tkt' => 'int',
'insurance_offer' => 'int',
'is_rail_fly' => 'bool',
'comfort' => 'bool',
'airline_ids' => 'array',
@ -277,6 +278,7 @@ class Booking extends Model
'final_payment',
'final_payment_date',
'travelagenda_id',
'insurance_offer',
'paying_out',
'paying_out_status',
//'airline_id',
@ -313,6 +315,12 @@ class Booking extends Model
2 => 'erledigt',
];
public static $insurance_offer_types = [
0 => '-',
1 => 'Nein, keine Reiseversicherung gewünscht',
2 => 'Ja, ich wünsche ein Reiseversicherungsangebot'
];
public static $paying_out_status_types = [
0 => '-',
1 => 'offen',
@ -921,6 +929,10 @@ class Booking extends Model
return isset(self::$paying_out_types[$this->paying_out]) ? self::$paying_out_types[$this->paying_out] : '-';
}
public function getInsuranceOfferType(){
return isset(self::$insurance_offer_types[$this->insurance_offer]) ? self::$insurance_offer_types[$this->insurance_offer] : '-';
}
public function getPayingOutStatusType(){
return isset(self::$paying_out_status_types[$this->paying_out_status]) ? self::$paying_out_status_types[$this->paying_out_status] : '-';
}

View file

@ -1,12 +1,19 @@
<?php
/**
* Created by Reliese Model.
*/
namespace App\Models;
use Carbon\Carbon;
use Cviebrock\EloquentSluggable\Sluggable;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;
/**
* App\Models\Page
*
* Class Page
*
* @property int $id
* @property int|null $owner
* @property string|null $model
@ -20,6 +27,8 @@ use Illuminate\Database\Eloquent\Model;
* @property int|null $show_in_navi
* @property int|null $order
* @property string|null $title
* @property string|null $title_short
* @property string|null $before_title
* @property string|null $pagetitle
* @property string|null $description
* @property string|null $keywords
@ -29,8 +38,8 @@ use Illuminate\Database\Eloquent\Model;
* @property int|null $OLD_CatalogID
* @property int|null $OLD_OwnerID
* @property int|null $buma_gjr
* @property string|null $date
* @property int $price-tags
* @property Carbon $date
* @property bool $price-tags
* @property string|null $text_right
* @property string|null $keyword
* @property string|null $canonical_url
@ -41,71 +50,169 @@ use Illuminate\Database\Eloquent\Model;
* @property int|null $tree_root
* @property int|null $parent_id
* @property string|null $real_url_path
* @property int|null $travel_guide_content_id
* @property string|null $box_body
* @property string|null $box_image_url
* @property string|null $box_star
* @property string|null $box_discount
* @property string|null $cms_settings
* @property int|null $fewo_lodging
* @property \Illuminate\Support\Carbon|null $created_at
* @property \Illuminate\Support\Carbon|null $updated_at
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereBoxBody($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereBoxDiscount($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereBoxImageUrl($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereBoxStar($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereBumaDestination($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereBumaGjr($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereCanonicalUrl($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereCatalogId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereCatalogIndex($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereCmsSettings($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereContent($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereContentNew($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereCountryId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereDescription($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereFewoLodging($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereKeyword($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereKeywords($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereLft($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereLvl($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereModel($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereOLDCatalogID($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereOLDOwnerID($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereOrder($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereOwner($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereOwnerSecond($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page wherePagetitle($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereParentId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page wherePriceTags($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereRealUrlPath($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereRgt($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereShowInNavi($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereSlug($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereStatus($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereTemplate($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereTextRight($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereTitle($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereTravelProgram($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereTreeRoot($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereUpdatedAt($value)
* @mixin \Eloquent
* @property int|null $travel_guide_content_id
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page query()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereTravelGuideContentId($value)
* @property string|null $title_short
* @property string|null $before_title
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereBeforeTitle($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereTitleShort($value)
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
*
* @property Page|null $page
* @property TravelCountry|null $travel_country
* @property TravelGuide|null $travel_guide
* @property Collection|Page[] $pages
* @property Collection|Redirect[] $redirects
* @property Collection|TravelCountry[] $travel_countries
* @property Collection|TravelProgram[] $travel_program_content
*
* @package App\Models
*/
class Page extends Model
{
protected $connection = 'mysql_stern';
use Sluggable;
protected $table = 'page';
protected $connection = 'mysql_stern';
protected $table = 'page';
protected $casts = [
'owner' => 'int',
'lvl' => 'int',
'owner_second' => 'int',
'catalog_id' => 'int',
'catalog_index' => 'int',
'travel_program' => 'int',
'status' => 'int',
'show_in_navi' => 'int',
'order' => 'int',
'OLD_CatalogID' => 'int',
'OLD_OwnerID' => 'int',
'buma_gjr' => 'int',
'price-tags' => 'bool',
'country_id' => 'int',
'lft' => 'int',
'rgt' => 'int',
'tree_root' => 'int',
'parent_id' => 'int',
'travel_guide_content_id' => 'int',
'fewo_lodging' => 'int'
];
protected $dates = [
'date'
];
protected $fillable = [
'owner',
'model',
'lvl',
'owner_second',
'catalog_id',
'catalog_index',
'slug',
'travel_program',
'status',
'show_in_navi',
'order',
'title',
'title_short',
'before_title',
'pagetitle',
'description',
'keywords',
'content',
'content_new',
'buma_destination',
'OLD_CatalogID',
'OLD_OwnerID',
'buma_gjr',
'date',
'price-tags',
'text_right',
'keyword',
'canonical_url',
'country_id',
'template',
'lft',
'rgt',
'tree_root',
'parent_id',
'real_url_path',
'travel_guide_content_id',
'box_body',
'box_image_url',
'box_star',
'box_discount',
'cms_settings',
'fewo_lodging'
];
public function sluggable()
{
return [
'slug' => [
'source' => 'title'
]
];
}
public function page()
{
return $this->belongsTo(Page::class, 'tree_root');
}
public function fewo_lodging()
{
return $this->belongsTo(FewoLodging::class, 'fewo_lodging');
}
public function travel_country()
{
return $this->belongsTo(TravelCountry::class, 'country_id');
}
public function travel_guide()
{
return $this->belongsTo(TravelGuide::class, 'travel_guide_content_id');
}
public function pages()
{
return $this->hasMany(Page::class, 'tree_root');
}
public function redirects()
{
return $this->hasMany(Redirect::class);
}
public function travel_countries()
{
return $this->hasMany(TravelCountry::class, 'feedback_page_id');
}
public function child_pages()
{
return $this->hasMany(Page::class, 'owner');
}
public function parent_page()
{
return $this->belongsTo(Page::class, 'parent_id');
}
public function travel_program_content()
{
return $this->belongsTo(TravelProgram::class, 'travel_program');
}
public function getContentNew()
{
return $this->content_new ? $this->content_new : $this->content;
}
}

View file

@ -52,4 +52,8 @@ class CustomerFewoFileRepository extends FileRepository {
], 200);
}
public function returnFile(){
return $this->customer_file;
}
}

View file

@ -77,6 +77,15 @@ class FileRepository extends BaseRepository {
return $this->response();
}
public function storeReturnFile( $content )
{
$this->makeFilename();
$this->store($content);
$this->size = Storage::disk($this->disk)->size($this->dir.$this->allowed_filename);
$this->save();
return $this->returnFile();
}
public function store($content){
if(!Storage::disk($this->disk)->exists( $this->dir )){
Storage::disk($this->disk)->makeDirectory($this->dir); //creates directory
@ -88,6 +97,11 @@ class FileRepository extends BaseRepository {
}
public function returnFile(){
}
public function response(){
return Response::json([
'error' => false,

View file

@ -249,11 +249,21 @@ class TravelUserBookingFewoRepository extends BaseRepository {
if ($model->is_calendar_stern_tours) {
$model->fewo_reservation->from_date = $model->getFromDateRaw();
$model->fewo_reservation->to_date = $model->getToDateRaw();
$model->fewo_reservation->save();
} else {
$model->fewo_reservation->from_date = null;
$model->fewo_reservation->to_date = null;
$FewoReservation = FewoReservation::find($model->fewo_reservation_id);
$model->fewo_reservation_id = NULL;
$model->save();
$FewoReservation->delete();
$FewoReservations = FewoReservation::where('lodging_id', $model->fewo_lodging_id)->where('from_date', $model->getFromDateRaw())->where('to_date', $model->getToDateRaw())->get();
foreach ($FewoReservations as $FewoReservation) {
$FewoReservation->delete();
}
// $model->fewo_reservation->from_date = null;
// $model->fewo_reservation->to_date = null;
}
$model->fewo_reservation->save();
} else {
if ($model->is_calendar_stern_tours) {

View file

@ -83,6 +83,7 @@ class BookingImport
'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,
'insurance_offer' => $travel_booking->insurance_offer,
];
//createBooking

View file

@ -16,10 +16,11 @@ use App\Models\TravelNationality;
use App\Models\Sym\TravelCountry as SymTravelCountry;
use App\Models\TravelArrivalPoint;
use App\Models\TravelGerneralNote;
use App\Models\TravelProgram;
class Model
{
public static function getSfGuardUserArray(){
return SfGuardUser::where('is_active', 1)->get()->pluck('fullname', 'id');
}
@ -34,6 +35,11 @@ class Model
return $emtpy ? $TravelCountry->prepend('-', 0) : $TravelCountry;
}
public static function getTravelProgramArray($emtpy = false){
$TravelProgram = TravelProgram::where('status', 1)->orderBy('title')->get()->pluck('title', 'id');
return $emtpy ? $TravelProgram->prepend('-', 0) : $TravelProgram;
}
public static function getTravelCategoryArray($emtpy = false){
$TravelCategory = TravelCategory::where('active', true)->orderBy('name')->get()->pluck('name', 'id');
return $emtpy ? $TravelCategory->prepend('-', 0) : $TravelCategory;

View file

@ -10,6 +10,7 @@ return [
'crm-tp' => ['name' => 'ADMIN CRM > Reiseprogramme' , 'color' => 'admin'],
'crm-tp-pr' => ['name' => 'ADMIN CRM > Reiseprogramme > Programme' , 'color' => 'admin'],
'crm-tp-dr' => ['name' => 'ADMIN CRM > Reiseprogramme > Vorlagen' , 'color' => 'admin'],
'crm-tp-tc' => ['name' => 'ADMIN CRM > Reiseprogramme > Inhalte' , 'color' => 'admin'],
'crm-bo' => ['name' => 'ADMIN CRM > Buchungen' , 'color' => 'admin'],
'crm-bo-re' => ['name' => 'ADMIN CRM > Buchungen > Übersicht' , 'color' => 'admin'],
'crm-bo-bo' => ['name' => 'ADMIN CRM > Buchungen > Buchungen' , 'color' => 'admin'],

View file

@ -93,6 +93,12 @@
{{ Form::select('travel_company_id', \App\Services\Model::getTravelCompanyArray(false) , $booking->travel_company_id, array('class'=>'custom-select', 'id'=>'travel_company_id')) }}
</div>
<div class="form-group col-sm-12 col-md-12">
<label class="form-label" for="travel_company_id">{{ __('Reiseversicherung') }}</label><br>
{{ $booking->getInsuranceOfferType() }}
</div>
<div class="col-12">
<h5 class="card-title mt-3 mb-1">Status</h5>
<hr class="mt-0">

View file

@ -23,7 +23,6 @@
</select>
</div>
</div>
<div class="form-row show-field-name">
<div class="form-group col">
<label for="name" class="form-label">{{ __('Name') }}</label>
@ -98,6 +97,20 @@
{{ Form::text('pos', $value->pos, array('class'=>'form-control')) }}
</div>
</div>
@if($value->identifier === 'fewo-email-file')
<div class="form-row g">
<div class="form-group col-sm-10">
<label class="custom-control custom-checkbox mt-2" style="margin-right: 20px;">
{!! Form::checkbox('default_travel_info', 1, $value->integer, ['class'=>'custom-control-input']) !!}
<span class="custom-control-label">
Als default E-Mail-Anhang bei der Anreiseinfo
</span>
</label>
</div>
</div>
@endif
</div>
<div class="modal-footer">

View file

@ -38,7 +38,7 @@
<h4 class="font-weight-bold py-3 mb-1">
Vorlage verwalten
Vorlage Reiseprogramme verwalten
<span class="float-right">
<button class="btn btn-sm btn-warning" data-toggle="modal" data-target="#exampleNotice"><i class="fa">?</i> </button>
</span>

View file

@ -2,7 +2,7 @@
@section('content')
<h4 class="font-weight-bold py-3 mb-1">
Vorlagen
Vorlagen Reiseprogramme
</h4>
<div class="nav-tabs-top mb-4">
<ul class="nav nav-tabs">

View file

@ -23,7 +23,7 @@
<li class="sidenav-divider mb-1"></li>
<li class="sidenav-header small font-weight-semibold">ADMIN CRM</li>
@if(Auth::user()->isPermission('crm-tp'))
<li class="sidenav-item{{ Request::is(['travel/*', 'drafts', 'draft/*']) ? ' open' : '' }}">
<li class="sidenav-item{{ Request::is(['travel/*', 'drafts', 'draft/*', 'travel_content', 'travel_content/*']) ? ' open' : '' }}">
<a href="javascript:void(0)" class="sidenav-link sidenav-toggle">
<i class="sidenav-icon ion ion-ios-airplane"></i>
<div>Reiseprogramme</div>
@ -39,6 +39,11 @@
<a href="{{ route('drafts') }}" class="sidenav-link"><i class="sidenav-icon ion ion-md-paper"></i><div>Vorlagen</div></a>
</li>
@endif
@if(Auth::user()->isPermission('crm-tp-tc'))
<li class="sidenav-item{{ Request::is(['travel_content', 'travel_content/*']) ? ' active' : '' }}">
<a href="{{ route('travel_content') }}" class="sidenav-link"><i class="sidenav-icon ion ion-md-map"></i><div>Inhalte</div></a>
</li>
@endif
</ul>
</li>
@endif

View file

@ -19,6 +19,7 @@
<th>{{__('Nachname')}}</th>
<th>{{__('E-Mail')}}</th>
<th>{{__('Anfrage-Datum')}}</th>
<th>{{__('Reiseland')}}</th>
<th>{{__('N.')}}</th>
<th>{{__('Sachbearbeiter')}}</th>
<th>{{__('Status')}}</th>
@ -45,13 +46,12 @@
{ data: 'customer.name', name: 'customer.name' },
{ data: 'customer.email', name: 'customer.email' },
{ data: 'request_date', name: 'request_date' },
{ data: 'travel_country', name: 'travel_country', orderable: false },
{ data: 'lead_notice', name: 'lead_notice', orderable: false },
{ data: 'sf_guard_user.last_name', name: 'sf_guard_user.last_name', searchable: false },
{ data: 'status', name: 'status' },
{ data: 'last_lead_email', name: 'last_lead_email', orderable: true },
{ data: 'action_delete', orderable: false, searchable: false},
],
"bLengthChange": false,
"iDisplayLength": 100,

View file

@ -517,6 +517,7 @@
<th>{{__('Name')}}</th>
<th>{{__('Slug')}}</th>
<th>{{__('Inhalt')}}</th>
<th>{{__('Anreiseinfo')}}</th>
<th>{{__('Type')}}</th>
<th></th>
</tr>
@ -539,6 +540,7 @@
<td>{{ $value->name }}</td>
<td>{{ $value->slug }}</td>
<td>@if($value->isFile()) {!! $value->getPreviewContent() !!} @else {{ $value->getPreviewContent() }} @endif</td>
<td>{!! get_active_badge($value->integer) !!} default</td>
<td>{{ $value->getFieldName() }}</td>
<td><a class="text-danger" href="{{ route('cms_content_all_delete', [$value->id]) }}" onclick="return confirm('{{__('Wirklich löschen?')}}');"><i class="fa fa-trash-alt"></i></a></td>
</tr>

View file

@ -0,0 +1,156 @@
@extends('layouts.layout-2')
@section('content')
{!! Form::open(['url' => route('travel_content_detail', [$id]), 'class' => 'form-horizontal']) !!}
<h4 class="font-weight-bold py-3 mb-1">
Inhalte Reiseprogramme
<div class="float-right">
<button type="submit" name="action" value="saveAll" class="btn btn-submit btn-sm">{{ __('save changes') }}</button>&nbsp;
<a href="{{route('travel_content')}}" class="btn btn-default btn-sm">{{ __('back') }}</a>
</div>
</h4>
<div class="card mb-2">
<div class="card-body">
<h4>Reiseübersicht</h4>
<div class="form-row">
<div class="form-group col-sm-12">
<label class="form-label" for="title">Titel | Navigationsleiste*</label>
{{ Form::text('title', $model->title, array('placeholder'=>__('Title'), 'class'=>'form-control', 'id'=>'title', 'required'=>true)) }}
</div>
<div class="form-group col-sm-12">
<label class="form-label" for="title_short">Title Short | Navigation *</label>
{{ Form::text('title_short', $model->title_short, array('placeholder'=>__('Title Short'), 'class'=>'form-control', 'id'=>'title_short', 'required'=>true)) }}
</div>
<div class="form-group col-sm-12">
<label class="form-label" for="pagetitle">Page Title | Überschrift Reiseboxen *</label>
{{ Form::text('pagetitle', $model->pagetitle, array('placeholder'=>__('Title Short'), 'class'=>'form-control', 'id'=>'pagetitle', 'required'=>true)) }}
</div>
<div class="form-group col-sm-12">
<label class="form-label" for="slug">URL der Seite | Unique</label>
{{ Form::text('slug', $model->slug, array('placeholder'=>__('URL der Seite'), 'class'=>'form-control', 'id'=>'slug')) }}
</div>
</div>
<div class="form-row">
<div class="col-sm-12">
<hr>
</div>
<div class="form-group col-sm-12">
<label class="form-label" for="description">Beschreibung | Metatag Suchmaschine</span></label>
{{ Form::textarea('description', $model->description, array('class'=>'form-control autoExpand', 'rows'=>2)) }}
</div>
<div class="form-group col-sm-12">
<label class="form-label" for="content_new">Inhalt | unter den Reiseboxen</span></label>
{{ Form::textarea('content_new', $model->getContentNew(), array('class'=>'form-control autoExpand', 'rows'=>2)) }}
</div>
<div class="col-sm-12">
<hr>
</div>
</div>
<div class="form-row">
<div class="form-group col-sm-6 pt-4">
<label class="switcher switcher-on-off">
{{ Form::hidden('status', 0) }}
{{ Form::checkbox('status', 1, $model->status, array('class'=>'switcher-input')) }}
<span class="switcher-indicator">
<span class="switcher-yes"></span>
<span class="switcher-no"></span>
</span>
<span class="switcher-label">sichtbar</span>
</label>
</div>
<div class="form-group col-sm-6 pt-4">
<label class="switcher switcher-on-off">
{{ Form::hidden('show_in_navi', 0) }}
{{ Form::checkbox('show_in_navi', 1, $model->show_in_navi, array('class'=>'switcher-input')) }}
<span class="switcher-indicator">
<span class="switcher-yes"></span>
<span class="switcher-no"></span>
</span>
<span class="switcher-label">sichbar in der Navigation</span>
</label>
</div>
</div>
</div>
</div>
<div class="text-left mt-3">
<button type="submit" name="action" value="saveAll" class="btn btn-submit">{{ __('save changes') }}</button>&nbsp;
<a href="{{route('travel_content')}}" class="btn btn-default">{{ __('back') }}</a> </div>
{!! Form::close() !!}
<div class="card mt-3">
<h4 class="mt-4 mb-2 ml-4">Unterseiten für Reiseübersicht {{ $model->title }}</h4>
<div class="card-datatable table-responsive pt-0">
<table class="datatables-child_pages table table-striped table-bordered">
<thead>
<tr>
<th style="max-width: 60px;">&nbsp;</th>
<th>{{__('Title')}}</th>
<th>{{__('Pagetitle')}}</th>
<th>{{__('Programm')}}</th>
<th>{{__('Pos')}}</th>
<th>{{__('sichtbar')}}</th>
<th>{{__('sichtbar in navi')}}</th>
</tr>
</thead>
<tbody>
@foreach($model->child_pages as $child_page)
<tr>
<td>
<a href="{{ route('travel_content_sub_detail', [$child_page->id]) }}" class="btn icon-btn btn-sm btn-primary">
<span class="fa fa-edit"></span>
</a>
</td>
<td><a href="{{ route('travel_content_sub_detail', [$child_page->id]) }}">{{ $child_page->title }}</a></td>
<td><a href="{{ route('travel_content_sub_detail', [$child_page->id]) }}">{{ $child_page->pagetitle }}</a></td>
@if($child_page->travel_program_content)
<td><a href="{{ route('travel_program_detail', [$child_page->travel_program_content->id]) }}">{{ $child_page->travel_program_content->title }}</a></td>
@else
<td>-</td>
@endif
<td><a href="{{ route('travel_content_sub_detail', [$child_page->id]) }}">{{ $child_page->order }}</a></td>
<td data-sort="{{ $child_page->status }}">
{!! get_active_badge($child_page->status) !!}
</td>
<td data-sort="{{ $child_page->show_in_navi }}">
{!! get_active_badge($child_page->show_in_navi) !!}
</td>
</tr>
@endforeach
</tbody>
</table>
<div class="mt-4 col">
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal"
data-target="#modals-load-content"
data-id="{{ $model->id }}"
data-model="Page"
data-action="modal-copy-page"
data-url=""
data-redirect="back"
data-route="{{ route('travel_content_load') }}">&nbsp;Neue Unterseite kopieren/anlegen</button>
</div>
</div>
</div>
<script>
$( document ).ready(function() {
$('.datatables-child_pages').dataTable({
"bLengthChange": false,
"iDisplayLength": 50,
"order": [[ 5, "desc" ],[ 4, "asc" ]],
"language": {
"url": "/js/German.json"
}
});
});
</script>
@endsection

View file

@ -0,0 +1,216 @@
@extends('layouts.layout-2')
@section('content')
<h4 class="font-weight-bold py-3 mb-1">
Inhalte Reiseprogramme
</h4>
<div class="nav-tabs-top mb-4">
<ul class="nav nav-tabs">
<li class="nav-item">
<a class="nav-link @if(!$step) active show @endif" data-toggle="tab" href="#navs-top-content_overview">Reiseübersichten</a>
</li>
{{-- <li class="nav-item">
<a class="nav-link @if($step === 'type') active show @endif" data-toggle="tab" href="#navs-top-draft_types">Typen</a>
</li>
--}}
</ul>
<div class="tab-content">
<div class="tab-pane fade @if(!$step) active show @endif" id="navs-top-content_overview">
<div class="card">
<div class="card-datatable table-responsive">
<table class="datatables-drafts table table-striped table-bordered">
<thead>
<tr>
<th style="max-width: 60px;">&nbsp;</th>
<th>{{__('Title')}}</th>
<th>{{__('Pagetitle')}}</th>
<th>{{__('sichtbar')}}</th>
<th>{{__('sichtbar in navi')}}</th>
</tr>
</thead>
<tbody>
@foreach($travelProgramOverviews as $value)
<tr>
<td>
<a href="{{ route('travel_content_detail', [$value->id]) }}" class="btn icon-btn btn-sm btn-primary">
<span class="fa fa-edit"></span>
</a>
</td>
<td><a href="{{ route('travel_content_detail', [$value->id]) }}">{{ $value->title }}</a></td>
<td><a href="{{ route('travel_content_detail', [$value->id]) }}">{{ $value->pagetitle }}</a></td>
<td data-sort="{{ $value->status }}">
{!! get_active_badge($value->status) !!}
</td>
<td data-sort="{{ $value->show_in_navi }}">
{!! get_active_badge($value->show_in_navi) !!}
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
<script>
$( document ).ready(function() {
$('.datatables-drafts').dataTable({
"bLengthChange": false,
"iDisplayLength": 50,
"language": {
"url": "/js/German.json"
}
});
});
</script>
</div>
</div>
{{-- <div class="tab-pane fade @if($step === 'type') active show @endif" id="navs-top-draft_types">
<div class="card">
<div class="card-datatable table-responsive">
<table class="datatables-types table table-striped table-bordered">
<thead>
<tr>
<th style="max-width: 60px;">&nbsp;</th>
<th style="width: 2%;">{{__('POS')}}</th>
<th>{{__('Name')}}</th>
<th>{{__('Farbe')}}</th>
<th>{{__('sichtbar')}}</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach($draft_types as $value)
<tr>
<td>
<button type="button" class="btn icon-btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-type"
data-id="{{ $value->id }}"
data-name="{{ $value->name }}"
data-color="{{ $value->color }}"
data-active="{{ $value->active }}"
data-pos="{{ $value->pos }}">
<span class="fa fa-edit"></span>
</button>
</td>
<td>{{ $value->pos }}</td>
<td>{{ $value->name }}</td>
<td>@if($value->color)
<div style="display:inline-block; width: 20px; height: 20px; border: 1px solid #888a85; background-color: {{$value->color}}"></div>
{{ $value->color }}
@else
<div style="display:inline-block; width: 20px; height: 20px; border: 1px solid #888a85; background-color: #fff"></div>
@endif
</td>
<td data-sort="{{ $value->active }}">
@if($value->active)
<span class="badge badge-pill badge-success"><i class="fa fa-check"></i></span>
@else
<span class="badge badge-pill badge-danger"><i class="fa fa-times"></i></span>
@endif
</td>
<td><a class="text-danger" href="{{ route('draft_type_delete', [$value->id]) }}" onclick="return confirm('{{__('Wirklich löschen?')}}');"><i class="fa fa-trash-alt"></i></a></td>
</tr>
@endforeach
</tbody>
</table>
<div class="mt-4 ml-3 text-left">
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-type"
data-id="new"
data-name=""
data-active="1"
data-pos="0"
>Neuen Typ anlegen</button>
</div>
</div>
<!-- Modal template -->
<div class="modal fade" id="modals-type">
<div class="modal-dialog">
<form class="modal-content" action="{{ route('draft_type_update') }}" method="post">
@csrf
<input type="hidden" class="form-control" name="id">
<div class="modal-header">
<h5 class="modal-title">Vorlagen-Typ <span class="font-weight-light">anlegen/bearbeiten</span></h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">×</button>
</div>
<div class="modal-body">
<div class="form-row">
<div class="form-group col">
<label for="name" class="form-label">Name*</label>
<input type="text" class="form-control" name="name" placeholder="{{__('Description')}}" required>
</div>
</div>
<div class="form-row">
<div class="form-group col">
<label for="pos" class="form-label">POS*</label>
<input type="text" class="form-control" name="pos" placeholder="{{__('Position')}}" required>
</div>
</div>
<div class="form-row">
<div class="form-group col">
<label for="name" class="form-label">Farbe*</label>
<input type="text" name="color" id="minicolors-hue" class="form-control" value="#fff">
</div>
</div>
<div class="form-group">
<label class="custom-control custom-checkbox m-0">
<input type="checkbox" class="custom-control-input" name="active" checked>
<span class="custom-control-label">{{__('sichtbar')}}</span>
</label>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">{{__('close')}}</button>
<button type="submit" class="btn btn-primary">{{__('save')}}</button>
</div>
</form>
</div>
</div>
<script>
$( document ).ready(function() {
$('#minicolors-hue').minicolors({
control: 'hue',
position: 'bottom ' + 'left',
});
$('#modals-type').on('show.bs.modal', function (event) {
var button = $(event.relatedTarget);
$(this).find(".modal-content input[name='id']").val(button.data('id'));
$(this).find(".modal-body input[name='name']").val(button.data('name'));
$(this).find(".modal-body input[name='pos']").val(button.data('pos'));
color = '#fff';
if(button.data('color') != ""){
color = button.data('color');
}
$('#minicolors-hue').minicolors('value', color);
// $('.selectpicker').selectpicker('refresh');
$(this).find(".modal-body input[name='active']").prop( "checked", button.data('active'));
});
$('.datatables-types').dataTable({
"bLengthChange": false,
"iDisplayLength": 50,
"order": [[ 1, "desc" ]],
"language": {
"url": "/js/German.json"
}
});
});
</script>
</div>
</div>
--}}
</div>
</div>
@endsection

View file

@ -0,0 +1,30 @@
{!! Form::open([ 'url' => route('travel_content_update'), 'method' => 'post', 'class' => 'modal-content' ]) !!}
{{ Form::hidden('action', 'page-copy') }}
{{ Form::hidden('step', false) }}
{{ Form::hidden('id', $value->id) }}
<div class="modal-header">
<h5 class="modal-title">Neue Unterseite <span class="font-weight-light">kopieren/anlegen</span></h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">×</button>
</div>
<div class="modal-body">
<div class="form-row">
<label class="form-label" for="page_copy_id">kopieren aus Unterseite</label>
<select class="custom-select" name="page_copy_id" id="page_copy_id">
@foreach($value->child_pages as $child_page)
<option value="{{$child_page->id}}">{{$child_page->title}}</option>
@endforeach
</select>
</div>
<hr>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">{{__('close')}}</button>
<button type="submit" class="btn btn-primary submit-button-form">{{__('save')}}</button>
</div>
{!! Form::close() !!}

View file

@ -0,0 +1,139 @@
@extends('layouts.layout-2')
@section('content')
{!! Form::open(['url' => route('travel_content_sub_detail', [$id]), 'class' => 'form-horizontal']) !!}
<h4 class="font-weight-bold py-3 mb-1">
Inhalte Reiseprogramme
<div class="float-right">
<button type="submit" name="action" value="saveAll" class="btn btn-submit btn-sm">{{ __('save changes') }}</button>&nbsp;
<a href="{{route('travel_content')}}" class="btn btn-default btn-sm">{{ __('back') }}</a>
</div>
</h4>
<div class="card mb-2">
<div class="card-body">
<h4>Reiseübersicht</h4>
<div class="form-row">
<div class="form-group col-sm-12">
<label class="form-label" for="title">Titel | Reisebox, Navigationsleiste*</label>
{{ Form::text('title', $model->title, array('placeholder'=>__('Title'), 'class'=>'form-control', 'id'=>'title', 'required'=>true)) }}
</div>
<div class="form-group col-sm-12">
<label class="form-label" for="pagetitle">Page Title | Überschrift Reiseprogramm *</label>
{{ Form::text('pagetitle', $model->pagetitle, array('placeholder'=>__('Title Short'), 'class'=>'form-control', 'id'=>'pagetitle', 'required'=>true)) }}
</div>
<div class="form-group col-sm-12">
<label class="form-label" for="slug">URL der Seite | Unique</label>
{{ Form::text('slug', $model->slug, array('placeholder'=>__('URL der Seite'), 'class'=>'form-control', 'id'=>'slug')) }}
</div>
<div class="col-sm-12">
<hr>
</div>
<div class="form-group col-sm-12">
<label for="travel_program" class="form-label">{{ __('Reiseprogramm') }} <a href="{{ route('travel_programs') }}"><i class="fa fa-edit"></i></a></label>
{{ Form::select('travel_program', \App\Services\Model::getTravelProgramArray(true) , $model->travel_program, array('class'=>'selectpicker', 'data-style'=>'btn-default', 'data-live-search'=>'true', 'id'=>'travel_program')) }}
</div>
</div>
<div class="form-row">
<div class="col-sm-12">
<hr>
</div>
<div class="form-group col-sm-12">
<label class="form-label" for="description">Beschreibung | Reisebox</span></label>
{{ Form::textarea('description', $model->description, array('class'=>'form-control autoExpand', 'rows'=>2)) }}
</div>
<div class="col-sm-12">
<hr>
</div>
</div>
<div class="form-row">
<div class="form-group col-sm-4 pt-4">
<label class="switcher switcher-on-off">
{{ Form::hidden('status', 0) }}
{{ Form::checkbox('status', 1, $model->status, array('class'=>'switcher-input')) }}
<span class="switcher-indicator">
<span class="switcher-yes"></span>
<span class="switcher-no"></span>
</span>
<span class="switcher-label">sichtbar</span>
</label>
</div>
<div class="form-group col-sm-4 pt-4">
<label class="switcher switcher-on-off">
{{ Form::hidden('show_in_navi', 0) }}
{{ Form::checkbox('show_in_navi', 1, $model->show_in_navi, array('class'=>'switcher-input')) }}
<span class="switcher-indicator">
<span class="switcher-yes"></span>
<span class="switcher-no"></span>
</span>
<span class="switcher-label">sichbar in der Navigation</span>
</label>
</div>
<div class="form-group col-sm-4">
<label class="form-label" for="order">Pos | Sortierung der Reiseboxen </label>
{{ Form::text('order', $model->order, array('placeholder'=>__('pos'), 'class'=>'form-control', 'id'=>'order')) }}
</div>
</div>
</div>
</div>
<div class="text-left mt-3">
<button type="submit" name="action" value="saveAll" class="btn btn-submit">{{ __('save changes') }}</button>&nbsp;
<a href="{{route('travel_content')}}" class="btn btn-default">{{ __('back') }}</a> </div>
{!! Form::close() !!}
<div class="card mt-3">
<h4 class="mt-4 mb-2 ml-4">Übersichtseite für {{ $model->title }}</h4>
<div class="card-datatable table-responsive pt-0">
<table class="datatables-parent_page table table-striped table-bordered">
<thead>
<tr>
<th style="max-width: 60px;">&nbsp;</th>
<th>{{__('Title')}}</th>
<th>{{__('Pagetitle')}}</th>
<th>{{__('sichtbar')}}</th>
<th>{{__('sichtbar in navi')}}</th>
</tr>
</thead>
<tbody>
@if($model->parent_page)
<tr>
<td>
<a href="{{ route('travel_content_detail', [$model->parent_page->id]) }}" class="btn icon-btn btn-sm btn-primary">
<span class="fa fa-edit"></span>
</a>
</td>
<td><a href="{{ route('travel_content_detail', [$model->parent_page->id]) }}">{{ $model->parent_page->title }}</a></td>
<td><a href="{{ route('travel_content_detail', [$model->parent_page->id]) }}">{{ $model->parent_page->pagetitle }}</a></td>
<td data-sort="{{ $model->parent_page->status }}">
{!! get_active_badge($model->parent_page->status) !!}
</td>
<td data-sort="{{ $model->parent_page->show_in_navi }}">
{!! get_active_badge($model->parent_page->show_in_navi) !!}
</td>
</tr>
@endif
</tbody>
</table>
</div>
</div>
<script>
$( document ).ready(function() {
$('.datatables-parent_page').dataTable({
"bLengthChange": false,
"iDisplayLength": 50,
"order": [[ 3, "desc" ]],
"language": {
"url": "/js/German.json"
}
});
});
</script>
@endsection

View file

@ -91,6 +91,38 @@
</div>
</div>
</div>
@php($info_mail_files_count = 1)
<div class="form-row">
<div class="form-group col-sm-12 mb-1">
<label for="to" class="form-label">Ausgawählte Daten als Anhang an die E-Mail:</label>
@if($travel_user_booking_fewo->fewo_lodging)
<label class="custom-control custom-checkbox mt-2" style="margin-right: 20px;">
{!! Form::checkbox('info_mail_files['.$info_mail_files_count++.']', 'fewo_instruction_pdf', 1, ['class'=>'custom-control-input']) !!}
<span class="custom-control-label">
<a target="_blank" href="{{ route('customer_file_show', ['fewo_instruction_pdf', $travel_user_booking_fewo->fewo_lodging->id, 'stream']) }}" class="badge badge-sm badge-next">
<i class="fa fa-file-pdf mr-1"></i> {{\App\Services\BookingFewo::getFeWoInstructionPDFName($travel_user_booking_fewo->fewo_lodging)}}
</a>
</span>
</label>
@endif
@foreach(\App\Services\BookingFewo::contentFiles() as $content_file)
@if($file = \App\Models\CMSContent::getModelBySlug($content_file))
<label class="custom-control custom-checkbox mt-2" style="margin-right: 20px;">
{!! Form::checkbox('info_mail_files['.$info_mail_files_count++.']', $content_file, $file->integer, ['class'=>'custom-control-input']) !!}
<span class="custom-control-label">
<a target="_blank" href="{{ $file->getURL() }}" class="badge badge-sm badge-next">
<i class="fa fa-file-pdf mr-1"></i> {{$file->name}}
</a>
</span>
</label>
@endif
@endforeach
</div>
</div>
@if($travel_user_booking_fewo->send_info_mail)
<table class="table table-striped border-bottom">
<tbody>
@ -103,6 +135,7 @@
</tbody>
</table>
@endif
<div class="text-right mt-0">
<button type="submit" name="action" value="sendInfosMailtoUser" class="btn btn-primary btn-sm" onclick="return confirm('{{__('Mail an Mieter versenden?')}}');">{{ __('E-Mail mit Anreiseinfo an Kunden versenden') }}</button>&nbsp;
</div>

View file

@ -165,6 +165,36 @@ Route::group(['middleware' => ['admin', '2fa']], function()
Route::get('/draft/load/old', 'DraftController@loadOld')->name('draft_load_old');
Route::post('/draft/load/old', 'DraftController@loadOldAction')->name('draft_load_old');
});
Route::group(['middleware' => ['auth.permission:crm-tp-tc']], function() {
//Reiseprogramme Vorlagen
Route::get('/travel_content/{step?}', 'TravelContentController@index')->name('travel_content');
Route::get('/travel_content/detail/{id}', 'TravelContentController@detail')->name('travel_content_detail');
Route::post('/travel_content/detail/{id}', 'TravelContentController@store')->name('travel_content_detail');
Route::get('/travel_content/sub_detail/{id}', 'TravelContentController@subDetail')->name('travel_content_sub_detail');
Route::post('/travel_content/sub_detail/{id}', 'TravelContentController@subStore')->name('travel_content_sub_detail');
Route::post('/travel_content/load', 'TravelContentController@load')->name('travel_content_load');
Route::post('/travel_content/update', 'TravelContentController@update')->name('travel_content_update');
/*Route::get('/draft/item/delete/{id}', 'DraftController@itemDelete')->name('draft_item_delete');
Route::get('/draft/delete/{id}', 'DraftController@delete')->name('draft_delete');
Route::post('/draft/type/update', 'DraftController@typeUpdate')->name('draft_type_update');
Route::get('/draft/type/delete/{id}', 'DraftController@typeDelete')->name('draft_type_delete');
Route::get('/draft/load/new', 'DraftController@loadNew')->name('draft_load_new');
Route::post('/draft/load/new', 'DraftController@loadNewAction')->name('draft_load_new');
Route::get('/draft/load/old', 'DraftController@loadOld')->name('draft_load_old');
Route::post('/draft/load/old', 'DraftController@loadOldAction')->name('draft_load_old');*/
});
Route::group(['middleware' => ['auth.permission:crm-bo-re']], function() {
//Buchungen > Anfragen
Route::get('/requests/{step?}', 'RequestController@index')->name('requests');

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long