lk.zachem.info/app/Modules/Plan7/Http/Livewire/Plan7SelectorLivewire.php

92 lines
2.5 KiB
PHP

<?php
namespace Modules\Plan7\Http\Livewire;
use Livewire\Component;
class Plan7SelectorLivewire extends Component
{
public $mode = 'new';
public $containerId;
public $allObjects;
public $types;
public $access;
public $bs;
public $room;
public $objects = [];
private $api = 'https://plan7.ru/catalog/exp/json/?token=0754c5e6a3824322&zk=614';
public function mount($containerId = 'plan7__selector')
{
$this->containerId = $containerId;
$this->getData();
}
private function getData()
{
$URL = $this->api;
$opt = [];
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $URL);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$fields = http_build_query($opt);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $fields);
$out = curl_exec($curl);
$this->allObjects = json_decode($out, true);
$this->types = $this->allObjects['values']['type'];
$this->access = $this->allObjects['values']['access'];
curl_close($curl);
}
public function setHouse($id)
{
$this->bs = $id;
$this->room = null;
}
public function setRoom($id)
{
$this->room = $this->allObjects['data'][$id];
}
public function start() {
$this->mode = 'select';
$this->getData();
}
public function done() {
$this->mode = 'selected';
$this->bs = null;
$this->room = null;
}
public function render()
{
$objs = [];
if (!$this->bs && !$this->room) {
foreach ($this->allObjects['values']['bs'] as $key => $house) {
$objs[] = [
'mode' => 'bs',
'id' => $house['id'],
'name' => $house['name'],
];
}
} elseif ($this->bs && !$this->room) {
foreach ($this->allObjects['data'] as $key => $room) {
if ($room['access'] != 0) {
$room['mode'] = 'room';
$objs[] = $room;
}
}
} elseif ($this->bs && $this->room) {
foreach ($this->allObjects['data'] as $key => $room) {
if ($room['id'] == $this->room['id']) {
$room['mode'] = 'room';
$objs[] = $room;
}
}
}
return view('plan7::livewire.selector', [
'objs' => $objs
]);
}
}