mein-sterntours/app/Repositories/IQ/TravelRepository.php
2021-08-20 18:21:38 +02:00

163 lines
No EOL
5.2 KiB
PHP

<?php
namespace App\Repositories\IQ;
use App\Models\IQTravelGroup;
use App\Models\IQTravelGroupItem;
use App\Models\IQTravelItem;
use App\Models\IQTravelItemPlace;
use App\Models\IQTravelProgram;
use App\Models\IQTravelProgramItem;
use App\Repositories\BaseRepository;
class TravelRepository extends BaseRepository {
public function __construct()
{
$this->model = null;
}
public function updateTravelProgram($id, $data)
{
$data['travel_country_id'] = $data['travel_country_id'] ? $data['travel_country_id'] : null;
if($id == "new"){
$this->model = IQTravelProgram::create($data);
}
else{
$this->model = IQTravelProgram::findOrFail($id);
$this->model->fill($data);
$this->model->save();
}
return $this->model;
}
public function createTravelProgramItems($id, $data)
{
$this->model = IQTravelProgram::findOrFail($id);
$data['pos'] = isset($data['pos']) ? intval($data['pos']) : 0;
$data['typ'] = isset($data['typ']) ? intval($data['typ']) : 0;
$data['i_q_travel_program_id'] = $data['iq_travel_program_id'];
$pos = $this->sortPosTravelProgramItems($this->model);
if($data['iq_travel_program_item_id'] == "new"){
if(isset($data['i_q_travel_item_ids']) && is_array($data['i_q_travel_item_ids'])){
foreach($data['i_q_travel_item_ids'] as $key=>$i_q_travel_item_id){
IQTravelProgramItem::create([
'i_q_travel_program_id' => $this->model->id,
'i_q_travel_item_id' => intval($i_q_travel_item_id),
'i_q_travel_group_id' => null,
'typ' => $data['typ'],
'pos' => $pos,
]);
$pos++;
}
}
if(isset($data['i_q_travel_group_ids']) && is_array($data['i_q_travel_group_ids'])){
foreach($data['i_q_travel_group_ids'] as $key=>$i_q_travel_group_id){
$IQTravelGroup = IQTravelGroup::findOrFail($i_q_travel_group_id);
if($IQTravelGroup->i_q_travel_group_items){
foreach($IQTravelGroup->i_q_travel_group_items as $IQTravelGroupItem){
IQTravelProgramItem::create([
'i_q_travel_program_id' => $this->model->id,
'i_q_travel_item_id' => $IQTravelGroupItem->i_q_travel_item_id,
'i_q_travel_group_id' => $IQTravelGroupItem->i_q_travel_group_id,
'typ' => $data['typ'],
'pos' => $pos,
]);
$pos++;
}
}
}
}
}
return $this->model;
}
public function sortPosTravelProgramItems($IQTravelProgram){
$pos = 1;
if($IQTravelProgram->i_q_travel_program_items){
foreach ($IQTravelProgram->i_q_travel_program_items as $IQTravelProgramItem){
$IQTravelProgramItem->pos = $pos;
$IQTravelProgramItem->save();
$pos++;
}
}
return $pos;
}
public function updateTravelGroup($id, $data)
{
if($id == "new"){
$this->model = IQTravelGroup::create($data);
}
else{
$this->model = IQTravelGroup::findOrFail($id);
$this->model->fill($data);
$this->model->save();
}
return $this->model;
}
public function updateTravelGroupItem($id, $data)
{
$data['pos'] = $data['pos'] ? intval($data['pos']) : 0;
$data['i_q_travel_group_id'] = $data['iq_travel_group_id'];
if($data['iq_travel_group_item_id'] == "new"){
$this->model = IQTravelGroupItem::create($data);
}
else{
$this->model = IQTravelGroupItem::findOrFail($data['iq_travel_group_item_id']);
$this->model->fill($data);
$this->model->save();
}
return $this->model;
}
public function updateTravelItem($id, $data)
{
$data['draft_type_id'] = $data['draft_type_id'] ? $data['draft_type_id'] : null;
$data['travel_country_id'] = $data['travel_country_id'] ? $data['travel_country_id'] : null;
if($id == "new"){
$this->model = IQTravelItem::create($data);
}
else{
$this->model = IQTravelItem::findOrFail($id);
$this->model->fill($data);
$this->model->save();
}
return $this->model;
}
public function updateTravelItemPlace($id, $data)
{
$data['pos'] = $data['pos'] ? intval($data['pos']) : 0;
$data['i_q_travel_item_id'] = $data['iq_travel_item_id'];
if($data['iq_travel_item_place_id'] == "new"){
$this->model = IQTravelItemPlace::create($data);
}
else{
$this->model = IQTravelItemPlace::findOrFail($data['iq_travel_item_place_id']);
$this->model->fill($data);
$this->model->save();
}
return $this->model;
}
}