Travel Group / Programms

This commit is contained in:
Kevin Adametz 2021-08-20 18:21:38 +02:00
parent 9baa1a6233
commit a718baf971
23 changed files with 808 additions and 89 deletions

View file

@ -6,6 +6,8 @@ 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 {
@ -17,6 +19,78 @@ class TravelRepository extends BaseRepository {
}
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;
}