mein-sterntours/app/Http/Controllers/API/DraftController.php
2020-03-07 19:45:39 +01:00

133 lines
No EOL
5.6 KiB
PHP
Executable file

<?php
namespace App\Http\Controllers\API;
use App\Http\Controllers\Controller;
use App\Models\BookingDraftItem;
use App\Models\Draft;
use App\Models\TravelProgram;
use Carbon\Carbon;
use HTMLHelper;
use Request;
class DraftController extends Controller
{
public $successStatus = 200;
public $data = "";
public $className = "";
public $option = "";
public function draft($action)
{
if ($action === "get_draft_list") {
$drafts = Draft::where('active', true)->get()->sortByDesc("id");
return response()->json(['success' => $drafts], $this->successStatus);
}
if ($action === "get_draft_list_for_table") {
$ret = [];
if (request('program_id') && request('program_id') > 0) {
$travel_program = TravelProgram::find(request('program_id'));
if ($travel_program && count($travel_program->travel_program_drafts)) {
foreach ($travel_program->travel_program_drafts as $travel_program_draft) {
$key = $travel_program_draft->id;
$ret[$key]['name'] = $travel_program_draft->draft->name;
if ($travel_program_draft->travel_class) {
$ret[$key]['travel_class'] = $travel_program_draft->travel_class->name;
} else {
$ret[$key]['travel_class'] = "alle Kategorien";
}
$ret[$key]['weekdays'] = HTMLHelper::getWeekdaysString($travel_program_draft->weekdays);
}
}
}
return response()->json(['success' => $ret], $this->successStatus);
}
if ($action === "create_drafts_from_fewo") {
$data = Request::all();
$start_date = Carbon::parse($data['startDateStr']);
$end_date = Carbon::parse($data['endDateStr']);
$pos = 0;
if (isset($data['priceResult']) && is_array($data['priceResult'])) {
if (isset($data['priceResult']['season']) && is_array($data['priceResult']['season'])) {
foreach ($data['priceResult']['season'] as $season => $values) {
$service = '* Saison: ' . $season . "\n" .
'* Mindestbelegung: ' . $values['minimumStay'] . ' ' . ($values['minimumStay'] < 2 ? 'Nacht' : 'Nächte') . "\n" .
'* Preis: ' . number_format($values['price'], 2, ',', '.') . ' € / ' . $values['numberDays'] . ' ' . ($values['numberDays'] < 2 ? 'Nacht' : 'Nächte') . ' x ' . number_format($values['perNight'], 2, ',', '.') . "\n";
$from_date = Carbon::parse($values['fromDay']);
$to_date = Carbon::parse($values['toDay']);
$to_date->modify('+1 day');
BookingDraftItem::create([
'booking_id' => $data['booking_id'],
'fewo_lodging_id' => $data['fewo_lodging_id'],
'draft_type_id' => 38,
'request_date' => $data['request_date'],
'days_duration' => $values['numberDays'],
'start_date' => $from_date->format("Y-m-d"),
'end_date' => $to_date->format("Y-m-d"),
'service' => $service,
'price' => $values['perNight'],
'pos' => $pos,
'in_pdf' => true,
]);
$pos++;
}
}
if (isset($data['priceResult']['flatPrice'])) {
$service = '* Service-Gebühr: ' . number_format($data['priceResult']['deposit'], 2, ',', '.');
BookingDraftItem::create([
'booking_id' => $data['booking_id'],
'fewo_lodging_id' => $data['fewo_lodging_id'],
'draft_type_id' => 39,
'request_date' => $data['request_date'],
'days_duration' => $data['priceResult']['days'],
'start_date' => $start_date->format("Y-m-d"),
'end_date' => $end_date->format("Y-m-d"),
'service' => $service,
'price' => $data['priceResult']['flatPrice'],
'pos' => $pos,
'in_pdf' => true,
]);
$pos++;
}
if (isset($data['priceResult']['deposit'])) {
$service = '* Kaution: ' . number_format($data['priceResult']['deposit'], 2, ',', '.');
BookingDraftItem::create([
'booking_id' => $data['booking_id'],
'fewo_lodging_id' => $data['fewo_lodging_id'],
'draft_type_id' => 40,
'request_date' => $data['request_date'],
'days_duration' => $data['priceResult']['days'],
'start_date' => $start_date->format("Y-m-d"),
'end_date' => $end_date->format("Y-m-d"),
'service' => $service,
'price' => $data['priceResult']['flatPrice'],
'pos' => $pos,
'in_pdf' => true,
]);
}
}
return response()->json(['success' => $data['booking_id']], $this->successStatus);
}
}
}