Mail and Booking
This commit is contained in:
parent
62e84637b6
commit
5daea268f7
250 changed files with 5377 additions and 1473 deletions
|
|
@ -32,6 +32,10 @@
|
|||
.input-group-text {
|
||||
padding: 0.438rem 0.475rem;
|
||||
}
|
||||
.badge.indicator:not(.badge-dot) {
|
||||
-webkit-transform: translate(20%, -30%);
|
||||
transform: translate(20%, -30%);
|
||||
}
|
||||
|
||||
|
||||
</style>
|
||||
|
|
@ -96,6 +100,11 @@
|
|||
<span class="badge badge-primary">{{$booking->customer_mails->count()}}</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="javascript:void(0)" data-collapse="#collapseBookingFiles">
|
||||
PDF Dateien
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
|
@ -303,7 +312,7 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{--
|
||||
{{--
|
||||
<div class="text-left mt-3">
|
||||
<button type="submit" name="action" value="saveAll" class="btn btn-submit">{{ __('save changes') }}</button>
|
||||
<a href="{{route('bookings')}}" class="btn btn-default">{{ __('zur Übersicht') }}</a>
|
||||
|
|
@ -321,7 +330,8 @@
|
|||
|
||||
@php($i = 1)
|
||||
<div class="text-right mb-2 pr-2">
|
||||
<button type="submit" name="action" value="addItemUp" class="btn btn-sm btn-primary"><i class="fa fa-plus"></i> Neue Leistung hinzufügen <i class="fa fa-arrow-up"></i></button>
|
||||
<button type="submit" name="action" value="addItemUp" class="btn btn-sm btn-primary"><i class="fa fa-plus"></i> Neue Leistung hinzufügen <i class="fa fa-arrow-up"></i></button><br>
|
||||
<button type="button" name="" class="btn btn-sm btn-info mt-2" data-toggle="modal" data-target="#modals-change-travel-dates"><i class="fa fa-sync"></i> Datum der Reise ändern </button>
|
||||
</div>
|
||||
<div class="table-responsive mb-4" style="overflow: visible">
|
||||
<table class="table mb-0" id="table_dragula_tbody" style="min-width: 1080px">
|
||||
|
|
@ -449,217 +459,505 @@
|
|||
</div>
|
||||
{!! Form::close() !!}
|
||||
|
||||
<!-- Mails -->
|
||||
<div class="card mb-2">
|
||||
<h6 class="card-header bg-primary text-white py-2" data-toggle="collapse" data-target="#collapseBookingMails" aria-expanded="true" aria-controls="collapseBookingMails">
|
||||
<strong style="line-height: 1.6em">E-Mails</strong>
|
||||
</h6>
|
||||
<div class="collapse show" id="collapseBookingMails">
|
||||
<div class="card-body px-0">
|
||||
<div class="pl-2">
|
||||
<button type="button" class="btn btn-sm btn-secondary" data-toggle="modal"
|
||||
data-target="#modals-load-content"
|
||||
data-id="new-send"
|
||||
data-model="customerMail"
|
||||
data-action="new-customer-mail"
|
||||
data-url="{{route('customer_mail_send_mail')}}"
|
||||
data-redirect="back"
|
||||
data-booking_id="{{$booking->id}}"
|
||||
data-route="{{ route('booking_modal_load') }}"><i class="ion ion-md-mail-open"></i> Neue E-Mail an Kunden</button>
|
||||
<div class="container-fluid d-flex align-items-stretch flex-grow-1 p-0">
|
||||
|
||||
<button type="button" class="btn btn-sm btn-default" data-toggle="modal"
|
||||
data-target="#modals-load-content"
|
||||
data-id="new-save"
|
||||
data-model="customerMail"
|
||||
data-action="reply-customer-mail"
|
||||
data-url="{{route('customer_mail_reply_mail')}}"
|
||||
data-redirect="back"
|
||||
data-booking_id="{{$booking->id}}"
|
||||
data-route="{{ route('booking_modal_load') }}"><i class="ion ion-md-mail-unread"></i> E-Mail Antwort speichern</button>
|
||||
</div>
|
||||
@if($booking->customer_mails)
|
||||
<div class="table-responsive">
|
||||
<table class="datatables-customer table table-striped">
|
||||
<!-- `.messages-wrapper` fills all available space of container -->
|
||||
<div class="messages-wrapper">
|
||||
<!-- Messages sidebox -->
|
||||
<div class="messages-sidebox messages-scroll bg-body border-right">
|
||||
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="max-width: 60px;"> </th>
|
||||
<th>{{__('Mail-ID')}}</th>
|
||||
{{-- <th>{{__('E-Mail')}}</th> --}}
|
||||
<th>{{__('Betreff')}}</th>
|
||||
<th>{{__('Anhang')}}</th>
|
||||
<th>{{__('gesendet')}}</th>
|
||||
<th>{{__('Gesendet')}}</th>
|
||||
<th>{{__('#')}}</th>
|
||||
<div class="py-3 px-4">
|
||||
<div class="media align-items-center">
|
||||
<div class="media-body text-center">
|
||||
<button type="button" class="btn btn-sm btn-secondary mb-3 btn-compare-customer-mails" data-toggle="modal"
|
||||
data-target="#modals-load-content"
|
||||
data-id="new-send"
|
||||
data-model="customerMail"
|
||||
data-action="new-customer-mail"
|
||||
data-url="{{route('customer_mail_send_mail')}}"
|
||||
data-redirect="back"
|
||||
data-booking_id="{{$booking->id}}"
|
||||
data-customer_mail_dir="0"
|
||||
data-customer_mail_country="0"
|
||||
data-route="{{ route('booking_modal_load') }}"><i class="ion ion-md-mail-open"></i> E-Mail schreiben</button>
|
||||
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($booking->customer_mails as $customer_mail)
|
||||
<tr role="row" class="odd">
|
||||
<td>
|
||||
<a href="#" class="btn icon-btn btn-sm btn-primary"><span class="fa fa-edit"></span></a>
|
||||
</td>
|
||||
<td>
|
||||
<a data-order="{{ $customer_mail->id }}" href="{{route('customer_mail_detail', [$customer_mail->id])}}" data-id="{{$customer_mail->id}}">{{$customer_mail->id}}</a>
|
||||
</td>
|
||||
{{-- <td>{{ $customer_mail->email }}</td> --}}
|
||||
<td> <a href="javascript:void(0)" class="badge @if($customer_mail->is_answer) badge-default @else badge-secondary @endif" data-toggle="modal"
|
||||
data-target="#modals-load-content"
|
||||
data-id="new"
|
||||
data-model="customerMail"
|
||||
data-action="show-customer-mail"
|
||||
data-url=""
|
||||
data-redirect="back"
|
||||
data-customer_mail_id="{{$customer_mail->id}}"
|
||||
data-route="{{ route('booking_modal_load') }}">
|
||||
@if($customer_mail->reply_id)
|
||||
<i class="ion ion-ios-redo ui-w-30 text-center" style="opacity: 0.7"></i>
|
||||
@else
|
||||
<i class="ion ion-ios-mail ui-w-30 text-center" style="opacity: 0.7"></i>
|
||||
@endif
|
||||
{{ $customer_mail->subject }}
|
||||
</a>
|
||||
</td>
|
||||
<td>{{ $customer_mail->customer_files->count() }}</td>
|
||||
<td>
|
||||
@if($customer_mail->send)
|
||||
<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>{{ $customer_mail->sent_at }}</td>
|
||||
<td>
|
||||
<a href="javascript:void(0)" class="btn btn-xs btn-secondary" data-toggle="modal"
|
||||
data-target="#modals-load-content"
|
||||
data-id="reply-send"
|
||||
data-model="customerMail"
|
||||
data-action="new-customer-mail"
|
||||
data-url="{{route('customer_mail_send_mail')}}"
|
||||
data-redirect="back"
|
||||
data-customer_mail_id="{{$customer_mail->id}}"
|
||||
data-booking_id="{{$booking->id}}"
|
||||
data-route="{{ route('booking_modal_load') }}">
|
||||
<span title="Antwort auf E-Mail senden" data-placement="left" rel="tooltip">
|
||||
<i class="ion ion-ios-redo"></i> <i class="ion ion-md-mail-open"></i>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<a href="javascript:void(0)" class="btn btn-xs btn-default" data-toggle="modal"
|
||||
data-target="#modals-load-content"
|
||||
data-id="reply-save"
|
||||
data-model="customerMail"
|
||||
data-action="reply-customer-mail"
|
||||
data-url="{{route('customer_mail_reply_mail')}}"
|
||||
data-redirect="back"
|
||||
data-customer_mail_id="{{$customer_mail->id}}"
|
||||
data-booking_id="{{$booking->id}}"
|
||||
data-route="{{ route('booking_modal_load') }}">
|
||||
<span title="Antwort auf E-Mail speichern" data-placement="left" rel="tooltip">
|
||||
<i class="ion ion-ios-redo"></i> <i class="ion ion-md-mail-unread"></i>
|
||||
</span>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
<button type="button" class="btn btn-sm btn-next btn-compare-customer-mails" data-toggle="modal"
|
||||
data-target="#modals-load-content"
|
||||
data-id="new-save"
|
||||
data-model="customerMail"
|
||||
data-action="reply-customer-mail"
|
||||
data-url="{{route('customer_mail_reply_mail')}}"
|
||||
data-redirect="back"
|
||||
data-booking_id="{{$booking->id}}"
|
||||
data-customer_mail_dir="0"
|
||||
data-customer_mail_country="0"
|
||||
data-route="{{ route('booking_modal_load') }}"><i class="ion ion-md-mail-unread"></i> Antwort speichern</button>
|
||||
</div>
|
||||
<a href="javascript:void(0)" class="messages-sidebox-toggler d-lg-none d-block text-muted text-large font-weight-light pl-4">×</a>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
<hr class="border-light mx-4 mt-0 mb-4">
|
||||
|
||||
<style>
|
||||
.sidebox-nav-item {
|
||||
color: #a3a4a6 !important;
|
||||
}
|
||||
.sidebox-nav-item[href]:hover,
|
||||
.sidebox-nav-item[href]:focus {
|
||||
color: #8c8e90 !important;
|
||||
}
|
||||
.sidebox-nav-item.active .item {
|
||||
color: #4E5155 !important;
|
||||
font-weight: 700 !important;
|
||||
}
|
||||
</style>
|
||||
<!-- Mail boxes -->
|
||||
|
||||
@foreach($booking::$customer_mail_dirs as $dir_id => $customer_mail_dir)
|
||||
|
||||
@php($badge = $dir_id === 0 ? "badge-primary" : "badge-outline-primary")
|
||||
<a href="javascript:void(0)" class="d-flex justify-content-between align-items-center py-2 px-4 sidebox-nav-item @if($dir_id === 0) active @endif"
|
||||
data-dir="{{$dir_id}}" data-country="0" data-icon="{{$customer_mail_dir['icon']}}" data-name="{{$customer_mail_dir['name']}}">
|
||||
<div class="item">
|
||||
<i class="ion {{$customer_mail_dir['icon']}}"></i> {{$customer_mail_dir['name']}}
|
||||
</div>
|
||||
<div class="badge {{$badge}}">{{$booking->countCustomerMailsBy($dir_id)}}</div>
|
||||
</a>
|
||||
@if($dir_id === 1 && $booking->travel_country)
|
||||
@foreach($booking->travel_country->getCountryLands() as $id => $name)
|
||||
<a href="javascript:void(0)" class="d-flex justify-content-between align-items-center py-2 px-4 sidebox-nav-item"
|
||||
data-dir="{{$dir_id}}" data-country="{{$id}}" data-icon="{{$customer_mail_dir['icon']}}" data-name="{{$name}}">
|
||||
<div class="item pl-2">
|
||||
<i class="ion {{$customer_mail_dir['icon']}}"></i> {{$name}}
|
||||
</div>
|
||||
<div class="badge {{$badge}}">{{$booking->countCustomerMailsBy($dir_id, $id)}}</div>
|
||||
</a>
|
||||
@endforeach
|
||||
@endif
|
||||
@endforeach
|
||||
<hr class="border-light m-4">
|
||||
</div>
|
||||
<!-- / Messages sidebox -->
|
||||
|
||||
<!-- Messages content wrapper -->
|
||||
<div class="d-flex flex-column w-100">
|
||||
<!-- Header -->
|
||||
<div class="flex-grow-0">
|
||||
<h4 class="media align-items-center font-weight-bold container-p-x py-3 py-lg-4 m-0">
|
||||
<a href="javascript:void(0)" class="messages-sidebox-toggler d-lg-none d-block align-self-center text-muted px-3 mr-3"><i class="ion ion-md-more"></i></a>
|
||||
<div class="media-body">
|
||||
<i id="message-sidebox-title-icon" class="ion ion-ios-filing"></i> <span id="message-sidebox-title-name">Reisender</span>
|
||||
</div>
|
||||
<input type="text" class="form-control form-control-sm" placeholder="Suche ..." style="max-width: 10rem;" id="dataTableInputSearchField">
|
||||
</h4>
|
||||
<hr class="border-light m-0">
|
||||
</div>
|
||||
<!-- / Header -->
|
||||
<style>
|
||||
div.dataTables_info, div.dataTables_paginate {
|
||||
padding: 10px;
|
||||
}
|
||||
</style>
|
||||
<!-- Wrap `.messages-scroll` to properly position scroll area. Remove this wrapper if you don't need scroll -->
|
||||
<div class="flex-grow-1 position-relative">
|
||||
<!-- Remove `.messages-scroll` and add `.flex-grow-1` if you don't need scroll -->
|
||||
<div class="messages-content flex-grow-1">
|
||||
|
||||
<div class="table-responsive" id="customer_mails_table">
|
||||
<input type="hidden" name="booking_id" value="{{$booking->id}}">
|
||||
<input type="hidden" name="customer_mail_dir" value="0">
|
||||
<input type="hidden" name="customer_mail_country" value="">
|
||||
|
||||
<table id="datatables-customer-mails" class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th> </th>
|
||||
{{-- <th>{{__('E-Mail')}}</th> --}}
|
||||
<th>{{__('Betreff')}}</th>
|
||||
<th>{{__('Datum')}}</th>
|
||||
<th style="width: 100px">{{__('#')}}</th>
|
||||
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="">
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div><!-- / .messages-content -->
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- / .messages-wrapper -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="modals-load-next">
|
||||
<div class="modal-dialog modal-lg">
|
||||
|
||||
<!-- Preis -->
|
||||
<div class="card mb-2">
|
||||
<h6 class="card-header bg-primary text-white py-2" data-toggle="collapse" data-target="#collapseBookingFiles" aria-expanded="false" aria-controls="collapseBookingFiles">
|
||||
<strong style="line-height: 1.6em">PDF Dateien</strong>
|
||||
</h6>
|
||||
<div class="collapse" id="collapseBookingFiles">
|
||||
|
||||
@php($booking_files_count = 1)
|
||||
<div class="card-body row">
|
||||
<div class="table-responsive" id="booking_files_table">
|
||||
<table class="table table-striped table-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>Datei</th>
|
||||
<th>Inhalt</th>
|
||||
<th>Datum</th>
|
||||
<th> </th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
@if($booking->booking_applications)
|
||||
@foreach($booking->booking_applications as $booking_application)
|
||||
<tr>
|
||||
<th scope="row">{{$booking_files_count++}}</th>
|
||||
<td>
|
||||
<a href="{{ route('customer_file_show', ['booking_application', $booking_application->id]) }}" target="_blank" class="badge badge-md badge-primary">
|
||||
<i class="fa fa-file-pdf mr-1"></i> Reiseanmeldung
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
Gesamtpreis: {{ \App\Services\Util::_number_format($booking_application->total)}} €
|
||||
</td>
|
||||
<td>{{\App\Services\Util::_format_date($booking_application->updated_at, 'date')}}</td>
|
||||
<td>
|
||||
<a href="{{ route('customer_file_show', ['booking_application', $booking_application->id, true]) }}" class="btn btn-xs btn-default"
|
||||
title="Download" data-placement="left" rel="tooltip">
|
||||
<i class="fa fa-download"></i>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
@endif
|
||||
|
||||
@if($booking->booking_confirmations)
|
||||
@foreach($booking->booking_confirmations as $booking_confirmation)
|
||||
<tr>
|
||||
<th scope="row">{{$booking_files_count++}}</th>
|
||||
<td>
|
||||
<a href="{{ route('customer_file_show', ['booking_confirmation', $booking_confirmation->id]) }}" target="_blank" class="badge badge-md badge-success">
|
||||
<i class="fa fa-file-pdf mr-1"></i> Reisebestätigung
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
Gesamtpreis: {{ \App\Services\Util::_number_format($booking_confirmation->total)}} € |
|
||||
Anzahlung: {{ \App\Services\Util::_number_format($booking_confirmation->deposit)}} € |
|
||||
Restzahlung: {{ \App\Services\Util::_number_format($booking_confirmation->final_payment)}} €
|
||||
</td>
|
||||
<td>{{\App\Services\Util::_format_date($booking_confirmation->updated_at, 'date')}}</td>
|
||||
<td>
|
||||
<a href="{{ route('customer_file_show', ['booking_confirmation', $booking_confirmation->id, true]) }}" class="btn btn-xs btn-default"
|
||||
title="Download" data-placement="left" rel="tooltip">
|
||||
<i class="fa fa-download"></i>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
@endif
|
||||
|
||||
@if($booking->booking_stornos)
|
||||
@foreach($booking->booking_stornos as $booking_storno)
|
||||
<tr>
|
||||
<th scope="row">{{$booking_files_count++}}</th>
|
||||
<td>
|
||||
<a href="{{ route('customer_file_show', ['booking_storno', $booking_storno->id]) }}" target="_blank" class="badge badge-md badge-danger">
|
||||
<i class="fa fa-file-pdf mr-1"></i> Stornobestätigung
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
Stornobetrag: {{ \App\Services\Util::_number_format($booking_storno->total)}} €
|
||||
</td>
|
||||
<td>{{\App\Services\Util::_format_date($booking_storno->updated_at, 'date')}}</td>
|
||||
<td>
|
||||
<a href="{{ route('customer_file_show', ['booking_storno', $booking_storno->id, true]) }}" class="btn btn-xs btn-default"
|
||||
title="Download" data-placement="left" rel="tooltip">
|
||||
<i class="fa fa-download"></i>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
@endif
|
||||
|
||||
@if($booking->coupons)
|
||||
@foreach($booking->coupons as $coupon)
|
||||
<tr>
|
||||
<th scope="row">{{$booking_files_count++}}</th>
|
||||
<td>
|
||||
<a href="{{ route('customer_file_show', ['coupon', $coupon->id]) }}" target="_blank" class="badge badge-md badge-warning">
|
||||
<i class="fa fa-file-pdf mr-1"></i> Gutschein {{$coupon->number}}
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
Wert: {{ \App\Services\Util::_number_format($coupon->value)}} € |
|
||||
bis: {{\App\Services\Util::_format_date($coupon->valid_date, 'date')}} |
|
||||
@if($coupon->is_redeemed) <i class="fa fa-check-circle text-success"></i> {{\App\Services\Util::_format_date($coupon->redeem_date, 'date')}} @else <i class="fa fa-times-circle text-danger"></i> @endif
|
||||
</td>
|
||||
<td>{{\App\Services\Util::_format_date($coupon->issue_date, 'date')}}</td>
|
||||
<td>
|
||||
<a href="{{ route('customer_file_show', ['coupon', $coupon->id, true]) }}" class="btn btn-xs btn-default"
|
||||
title="Download" data-placement="left" rel="tooltip">
|
||||
<i class="fa fa-download"></i>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
@endif
|
||||
|
||||
@if($booking->booking_vouchers)
|
||||
@foreach($booking->booking_vouchers as $booking_voucher)
|
||||
<tr>
|
||||
<th scope="row">{{$booking_files_count++}}</th>
|
||||
<td>
|
||||
<a href="{{ route('customer_file_show', ['booking_voucher', $booking_voucher->id]) }}" target="_blank" class="badge badge-md badge-dark">
|
||||
<i class="fa fa-file-pdf mr-1"></i> Voucher-ID {{$booking_voucher->id}}
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
|
||||
</td>
|
||||
<td>{{\App\Services\Util::_format_date($booking_voucher->updated_at, 'date')}}</td>
|
||||
<td>
|
||||
<a href="{{ route('customer_file_show', ['booking_vouchers', $booking_voucher->id, true]) }}" class="btn btn-xs btn-default"
|
||||
title="Download" data-placement="left" rel="tooltip">
|
||||
<i class="fa fa-download"></i>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
@endif
|
||||
|
||||
@if($booking->insurance_certificates)
|
||||
@foreach($booking->insurance_certificates as $insurance_certificate)
|
||||
<tr>
|
||||
<th scope="row">{{$booking_files_count++}}</th>
|
||||
<td>
|
||||
<a href="{{ route('customer_file_show', ['insurance_certificate', $insurance_certificate->id]) }}" target="_blank" class="badge badge-md badge-next">
|
||||
<i class="fa fa-file-pdf mr-1"></i> Sicherungsschein Nr. {{$insurance_certificate->internal_id}}
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
|
||||
</td>
|
||||
<td>{{\App\Services\Util::_format_date($insurance_certificate->updated_at, 'date')}}</td>
|
||||
<td>
|
||||
<a href="{{ route('customer_file_show', ['insurance_certificates', $insurance_certificate->id, true]) }}" class="btn btn-xs btn-default"
|
||||
title="Download" data-placement="left" rel="tooltip">
|
||||
<i class="fa fa-download"></i>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
@endif
|
||||
|
||||
@if($booking->travel_insurances)
|
||||
@foreach($booking->travel_insurances as $travel_insurances)
|
||||
<tr>
|
||||
<th scope="row">{{$booking_files_count++}}</th>
|
||||
<td>
|
||||
<i class="fa fa-info-circle mr-1"></i> Policennummer {{$travel_insurances->policy_number}}
|
||||
</td>
|
||||
<td>
|
||||
Gesamtprämie: {{ \App\Services\Util::_number_format($travel_insurances->premium)}} €
|
||||
</td>
|
||||
<td>{{\App\Services\Util::_format_date($travel_insurances->updated_at, 'date')}}</td>
|
||||
<td>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
@endif
|
||||
|
||||
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
<div class="modal fade" id="modals-load-next">
|
||||
<div class="modal-dialog modal-lg">
|
||||
|
||||
$('[rel="tooltip"]').tooltip({trigger: "hover"});
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Modal template -->
|
||||
<div class="modal fade" id="modals-change-travel-dates">
|
||||
<div class="modal-dialog">
|
||||
<form class="modal-content" action="{{ route('booking_action', ['change_travel_dates', $booking->id]) }}" method="post" onsubmit="return confirm('Datum wirklich ändern?');">
|
||||
@csrf
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">Reise verschieben</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">×</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="form-row mb-2">
|
||||
<label for="">Neues Start-Datum von:</label>
|
||||
<input type="text" class="form-control datepicker-base" name="change_travel_start_date" value="{{ \App\Services\Util::_format_date($booking->start_date)}}">
|
||||
</div>
|
||||
<p>Alle Einträge der Organisistion werden auf das neue Start-Datum angepasst.<br>
|
||||
Neue Reiseanmeldung, Reisebestätigung vorerst im CRM v2 erstellen.</p>
|
||||
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">{{__('close')}}</button>
|
||||
<button type="submit" class="btn btn-primary">{{__('ändern')}}</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
|
||||
$('[rel="tooltip"]').tooltip({trigger: "hover"});
|
||||
|
||||
|
||||
$('#top-nav-quick-jump .nav-link').on('click', function (e) {
|
||||
e.preventDefault();
|
||||
$('#top-nav-quick-jump .nav-link').removeClass('active');
|
||||
$(this).addClass('active');
|
||||
$('#top-nav-quick-jump .nav-link').on('click', function (e) {
|
||||
e.preventDefault();
|
||||
$('#top-nav-quick-jump .nav-link').removeClass('active');
|
||||
$(this).addClass('active');
|
||||
|
||||
var collapse_id = $(this).data('collapse');
|
||||
console.log(collapse_id);
|
||||
$(collapse_id).collapse('show');
|
||||
// animate
|
||||
$('html, body').animate({
|
||||
scrollTop: $(collapse_id).parent('.card').offset().top
|
||||
}, 300, function(){
|
||||
var collapse_id = $(this).data('collapse');
|
||||
console.log(collapse_id);
|
||||
$(collapse_id).collapse('show');
|
||||
// animate
|
||||
$('html, body').animate({
|
||||
scrollTop: $(collapse_id).parent('.card').offset().top
|
||||
}, 300, function(){
|
||||
|
||||
// when done, add hash to url
|
||||
// (default click behaviour)
|
||||
//window.location.hash = collapse_id;
|
||||
});
|
||||
|
||||
// when done, add hash to url
|
||||
// (default click behaviour)
|
||||
//window.location.hash = collapse_id;
|
||||
});
|
||||
|
||||
|
||||
|
||||
});
|
||||
$('.datatables-customer').dataTable({
|
||||
"bLengthChange": false,
|
||||
"iDisplayLength": 50,
|
||||
"order": [[ 5, "desc" ]],
|
||||
|
||||
"language": {
|
||||
"url": "/js/German.json"
|
||||
}
|
||||
});
|
||||
|
||||
$.dragYScroll();
|
||||
|
||||
var sort_item_pos_number = function(){
|
||||
var index = 1;
|
||||
$('#table_dragula_tbody .draft_item_tbody').each(function () {
|
||||
$(this).find('.item_pos_number').html(index);
|
||||
$(this).data('rowPosition', index);
|
||||
index++;
|
||||
});
|
||||
};
|
||||
|
||||
$(function() {
|
||||
// Drag handle
|
||||
var sortableItems = dragula([$('#table_dragula_tbody')[0]], {
|
||||
moves: function (el, container, handle) {
|
||||
return handle.classList.contains('handle');
|
||||
var oTable = $('#datatables-customer-mails').DataTable({
|
||||
"processing": true,
|
||||
"serverSide": true,
|
||||
"searching": false,
|
||||
ajax: {
|
||||
url: '{!! route( 'customer_mail_data_table' ) !!}',
|
||||
data: function(d) {
|
||||
d.booking_id = $('#customer_mails_table input[name=booking_id]').val();
|
||||
d.customer_mail_dir = $('#customer_mails_table input[name=customer_mail_dir]').val();
|
||||
d.customer_mail_country = $('#customer_mails_table input[name=customer_mail_country]').val();
|
||||
d.data_table_search = $('#dataTableInputSearchField').val();
|
||||
}
|
||||
},
|
||||
"columns": [
|
||||
/* { data: 'checkbox', width: '10px', orderable: false, searchable: false}, */
|
||||
{ data: 'important', width: '15px', searchable: false },
|
||||
{ data: 'subject', name: 'subject', width: '', orderable: false, },
|
||||
{ data: 'date', name: 'date', width: '' },
|
||||
{ data: 'action', width: '100px', orderable: false, searchable: false},
|
||||
],
|
||||
"bLengthChange": false,
|
||||
"iDisplayLength": 25,
|
||||
"orderSequence": ["desc", "asc"],
|
||||
"order": [[ 2, "desc" ]],
|
||||
"language": {
|
||||
"url": "/js/German.json"
|
||||
},
|
||||
"drawCallback": function( settings ) {
|
||||
$('#datatables-customer-mails [rel="tooltip"]').tooltip({trigger: "hover"});
|
||||
$('#datatables-customer-mails .customer-mail-ajax-action').on('click', function (event) {
|
||||
ajax_object_action(event, $(this), callback_ajax);
|
||||
});
|
||||
}
|
||||
});
|
||||
sortableItems.on('dragend', function() {
|
||||
//sort new
|
||||
sort_item_pos_number();
|
||||
|
||||
$('.messages-wrapper .sidebox-nav-item').on('click', function (event) {
|
||||
event.preventDefault();
|
||||
if($(this).hasClass('active')){
|
||||
return;
|
||||
}
|
||||
$('#customer_mails_table input[name=customer_mail_dir]').val($(this).data('dir'));
|
||||
$('#customer_mails_table input[name=customer_mail_country]').val($(this).data('country'));
|
||||
console.log($(this).data('country'));
|
||||
if($(this).data('dir') <= 10){
|
||||
$('.btn-compare-customer-mails').data('customer_mail_dir', $(this).data('dir'));
|
||||
$('.btn-compare-customer-mails').data('customer_mail_country', $(this).data('country'));
|
||||
$('.btn-compare-customer-mails').prop('disabled', false);
|
||||
}else{
|
||||
$('.btn-compare-customer-mails').prop('disabled', true);
|
||||
}
|
||||
oTable.draw();
|
||||
$('.messages-wrapper .sidebox-nav-item').removeClass('active');
|
||||
$(this).addClass('active');
|
||||
$('#message-sidebox-title-icon').removeClass().addClass('fa ' + $(this).data('icon'));
|
||||
$('#message-sidebox-title-name').html($(this).data('name'));
|
||||
$('.messages-wrapper .sidebox-nav-item').find('.badge-primary').removeClass('badge-primary').addClass('badge-outline-primary');
|
||||
$(this).find('.badge').removeClass('badge-outline-primary').addClass('badge-primary');
|
||||
|
||||
});
|
||||
|
||||
function callback_ajax(data) {
|
||||
if(data.status === 'success'){
|
||||
oTable.draw();
|
||||
}
|
||||
}
|
||||
$('#dataTableInputSearchField').keyup(function(){
|
||||
oTable.search($(this).val()).draw();
|
||||
});
|
||||
|
||||
$.dragYScroll();
|
||||
var sort_item_pos_number = function(){
|
||||
var index = 1;
|
||||
$('#table_dragula_tbody .draft_item_tbody').each(function () {
|
||||
$(this).find('.item_pos_number').html(index);
|
||||
$(this).data('rowPosition', index);
|
||||
index++;
|
||||
});
|
||||
};
|
||||
$(function() {
|
||||
// Drag handle
|
||||
var sortableItems = dragula([$('#table_dragula_tbody')[0]], {
|
||||
moves: function (el, container, handle) {
|
||||
return handle.classList.contains('handle');
|
||||
}
|
||||
});
|
||||
sortableItems.on('dragend', function() {
|
||||
//sort new
|
||||
sort_item_pos_number();
|
||||
});
|
||||
});
|
||||
|
||||
$('table .move-up-btn').on('click', function () {
|
||||
var thisRow = $(this).closest('tbody');
|
||||
var prevRow = thisRow.prev();
|
||||
if (prevRow.length) {
|
||||
prevRow.before(thisRow);
|
||||
sort_item_pos_number()
|
||||
}
|
||||
});
|
||||
|
||||
$('table .move-down-btn').on('click', function () {
|
||||
var thisRow = $(this).closest('tbody');
|
||||
var nextRow = thisRow.next();
|
||||
if (nextRow.length) {
|
||||
nextRow.after(thisRow);
|
||||
sort_item_pos_number()
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
$('table .move-up-btn').on('click', function () {
|
||||
var thisRow = $(this).closest('tbody');
|
||||
var prevRow = thisRow.prev();
|
||||
if (prevRow.length) {
|
||||
prevRow.before(thisRow);
|
||||
sort_item_pos_number()
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
$('table .move-down-btn').on('click', function () {
|
||||
var thisRow = $(this).closest('tbody');
|
||||
var nextRow = thisRow.next();
|
||||
if (nextRow.length) {
|
||||
nextRow.after(thisRow);
|
||||
sort_item_pos_number()
|
||||
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
@endsection
|
||||
@endsection
|
||||
Loading…
Add table
Add a link
Reference in a new issue