Доработка бронирования чайных

parent 820cd924
......@@ -7,22 +7,61 @@ if ($_POST['NAME']){
if (closed($_POST['DATE'],$_POST['TIME'],$_POST['QUEST'])>0){
echo "error";
} else {
$el = new CIBlockElement;
$PROP = [];
$PROP = $_POST;
$arLoad = array(
"MODIFIED_BY" => $USER->GetID(), // элемент изменен текущим пользователем
"IBLOCK_SECTION_ID" => false, // элемент лежит в корне раздела
"IBLOCK_ID" => 10,
"PROPERTY_VALUES" => $PROP,
"NAME" => $_POST['NAME'],
"ACTIVE" => "Y",
"PREVIEW_TEXT" => $_POST["COMMENT"]
);
$el->Add($arLoad);
echo "ok";
if ($PROP['TEA'] && $PROP['TIME_BEGIN'] && $PROP['TIME_END']){
$el = new CIBlockElement;
$arLoad = array(
"MODIFIED_BY" => $USER->GetID(), // элемент изменен текущим пользователем
"IBLOCK_SECTION_ID" => false, // элемент лежит в корне раздела
"IBLOCK_ID" => 10,
"PROPERTY_VALUES" => $PROP,
"NAME" => $_POST['NAME'],
"ACTIVE" => "Y",
"PREVIEW_TEXT" => $_POST["COMMENT"]
);
$el->Add($arLoad);
$tbegin=explode(":",$PROP['TIME_BEGIN']);
$hourBegin=(int)$tbegin[0];
$tend=explode(":",$PROP['TIME_END']);
$hourEnd=(int)$tend[0];
if ($hourEnd<$hourBegin){
echo "errortea";
} elseif (closedTea($PROP['DATE'],$PROP['TIME_BEGIN'],$PROP['TEA']) || closedTea($PROP['DATE'],$PROP['TIME_END'],
$PROP['TEA'])) {
echo "errorbrontea";
} else {
$el1 = new CIBlockElement;
$arLoad1 = array(
"MODIFIED_BY" => $USER->GetID(), // элемент изменен текущим пользователем
"IBLOCK_SECTION_ID" => false, // элемент лежит в корне раздела
"IBLOCK_ID" => 13,
"PROPERTY_VALUES" => $PROP,
"NAME" => $_POST['NAME'],
"ACTIVE" => "Y",
);
$el1->Add($arLoad1);
echo "ok";
}
} else {
$el = new CIBlockElement;
$arLoad = array(
"MODIFIED_BY" => $USER->GetID(), // элемент изменен текущим пользователем
"IBLOCK_SECTION_ID" => false, // элемент лежит в корне раздела
"IBLOCK_ID" => 10,
"PROPERTY_VALUES" => $PROP,
"NAME" => $_POST['NAME'],
"ACTIVE" => "Y",
"PREVIEW_TEXT" => $_POST["COMMENT"]
);
$el->Add($arLoad);
echo "ok";
}
}
}
......
......@@ -8,7 +8,7 @@ if (!empty($_POST)){
$res = CIBlockElement::GetByID($_POST['quest']);
if($ar_res = $res->GetNext())
$name=$ar_res['NAME'];
$teas=teaBron($_POST['time'],$_POST['date'],$_POST['quest']);
$teas=teas($_POST['time'],$_POST['date'],$_POST['quest']);
echo json_encode(['name' => $name, 'date' => rusdate($_POST['date']), 'teas'=>$teas]);
}
......
<?
require_once($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");
CModule::IncludeModule("iblock");
?>
<?
if (!empty($_POST)){
$iblockId=13;
$teaId=$_POST['teaid'];
$time="11:00";
$timesBegin=[];
$timesEnd=[];
$date=$_POST['date'];
for ($i = 0; $i <= 24; $i++) {
$ti=explode(":",$time);
$hour=(int)$ti[0];
$min=(int)$ti[1];
if ($i>0){
$min=$min+30;
if ($min==60){
$hour+=1;
$min=0;
}
}
if ($min==0){
$time=$hour.":".$min."0";
} else $time=$hour.":".$min;
$arSelect = array("ID", "IBLOCK_ID", "PROPERTY_*");
$date = date('Y-m-d', strtotime($date));
$arFilter = array(
"IBLOCK_ID" => $iblockId,
"ACTIVE" => "Y",
"PROPERTY_TEA" => $teaId,
"PROPERTY_DATE" => $date
);
$res = CIBlockElement::GetList(array(), $arFilter, false, false, $arSelect);
if ( $res-> SelectedRowsCount()==0) {
$timesBegin[] = $time;
$timesEnd[] = $time;
} else {
while ($ob = $res->GetNextElement()) {
$arItem = $ob->GetFields();
$arItem['PROPERTIES'] = $ob->GetProperties();
$teas[] = $arItem;
}
foreach ($teas as $arItem) {
$hourBeg = explode(':', $arItem['PROPERTIES']['TIME_BEGIN']['VALUE']);
$hourBegin = $hourBeg[0];
$minBegin = $hourBeg[1];
$hourEn = explode(':', $arItem['PROPERTIES']['TIME_END']['VALUE']);
$hourEnd = $hourEn[0];
$minEnd = $hourEn[1];
$hou = explode(':', $time);
$hour = $hou[0];
$min = $hou[1];
// если время брони совпадает
if ($hour < $hourBegin) {
$timesBegin[] = $time;
$timesEnd[] = $time;
}
if ($hour > $hourEnd) {
$timesBegin[] = $time;
$timesEnd[] = $time;
}
}
}
}
$timesBegin=array_unique($timesBegin);
$timesEnd=array_unique($timesEnd);
echo json_encode(['timesBegin' => $timesBegin, 'timesEnd'=>$timesEnd]);
}
?>
......@@ -207,7 +207,7 @@ function sendTelegram($text){
echo $resultQuery;
}
// функция опеределяет какая чайная забронирована, чтобы убрать ее из попопа
function teaBron($time,$date,$questId){
function teas($time,$date,$questId){
$iblockId=13; // инфоблок чайных
$teas=[];
// получаем чайные у квеста
......@@ -230,36 +230,38 @@ function teaBron($time,$date,$questId){
}
// получаем бронирование чайных
$arSelect = Array("ID", "IBLOCK_ID","PROPERTY_*");
$date = date('Y-m-d', strtotime($date));
$arFilter = Array(
"IBLOCK_ID"=>$iblockId,
"ACTIVE"=>"Y",
"PROPERTY_DATE"=>$date,
);
$res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);
while($ob = $res->GetNextElement()){
$arItem = $ob->GetFields();
$arItem['PROPERTIES'] = $ob->GetProperties();
$hourBeg=explode(':',$arItem['PROPERTIES']['TIME_BEGIN']['VALUE']);
$hourBegin=$hourBeg[0];
$minBegin=$hourBeg[1];
$hourEn=explode(':',$arItem['PROPERTIES']['TIME_END']['VALUE']);
$hourEnd=$hourEn[0];
$minEnd=$hourBeg[1];
$hou=explode(':',$time);
$hour=$hou[0];
// если время брони совпадает
if ($hour>=$hourBegin && $hour<=$hourEnd){
unset($teas[$arItem['PROPERTIES']['TEA']['VALUE']]);
}
}
// $arSelect = Array("ID", "IBLOCK_ID","PROPERTY_*");
// $date = date('Y-m-d', strtotime($date));
// $arFilter = Array(
// "IBLOCK_ID"=>$iblockId,
// "ACTIVE"=>"Y",
// "PROPERTY_DATE"=>$date,
// );
// $res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);
// while($ob = $res->GetNextElement()){
// $arItem = $ob->GetFields();
// $arItem['PROPERTIES'] = $ob->GetProperties();
//
// $hourBeg=explode(':',$arItem['PROPERTIES']['TIME_BEGIN']['VALUE']);
// $hourBegin=$hourBeg[0];
// $minBegin=$hourBeg[1];
// $hourEn=explode(':',$arItem['PROPERTIES']['TIME_END']['VALUE']);
// $hourEnd=$hourEn[0];
// $minEnd=$hourBeg[1];
// $hou=explode(':',$time);
// $hour=$hou[0];
// // если время брони совпадает
// if ($hour>=$hourBegin && $hour<=$hourEnd){
// unset($teas[$arItem['PROPERTIES']['TEA']['VALUE']]);
// }
//
//
// }
return $teas;
}
// забронирована ли чайная
function closedTea($date,$time,$teaId)
{
// получаем бронирование чайных
......@@ -371,4 +373,36 @@ function timeend($tim,$teaId,$date)
}
return $times;
}
// При вводе проваеряем забронирована ли чайная
AddEventHandler("iblock", "OnBeforeIBlockElementAdd", "OnBeforeIBlockElementAddHandler");
function OnBeforeIBlockElementAddHandler(&$arFields)
{
// echo "<pre>";
// print_r($arFields);
// echo "</pre>";
// die();
if ($arFields['IBLOCK_ID']==13) {
if (is_array($arFields['PROPERTY_VALUES'][61])){
$timeBegin = current(current($arFields['PROPERTY_VALUES'][61]));
}
if (is_array($arFields['PROPERTY_VALUES'][62])) {
$timeEnd = current(current($arFields['PROPERTY_VALUES'][62]));
}
if (is_array($arFields['PROPERTY_VALUES'][60])) {
$teaId = current(current($arFields['PROPERTY_VALUES'][60]));
}
if (is_array($arFields['PROPERTY_VALUES'][63])) {
$date = current(current($arFields['PROPERTY_VALUES'][63]));
}
if (closedTea($date,$timeBegin,$teaId) || closedTea($date,$timeEnd,$teaId)) {
global $APPLICATION;
$APPLICATION->throwException("Ошибка! На данное время чайная уже забронирована.");
return false;
}
}
}
\ No newline at end of file
......@@ -57,15 +57,15 @@ $kol = 3;
</div>
</div>
<div class="quest__bottom">
<div class="quest__content__description">
<?= $arResult['DETAIL_TEXT'] ?>
</div>
</div>
</div>
</div>
<div class="review-phone">
<div class="quest__content__description">
<?= $arResult['DETAIL_TEXT'] ?>
</div>
<a href="#" data-toggle="modal" data-target="#reviewModal" class="send-review">Оставить отзыв</a>
<div class="reviews">
<? foreach ($arResult["REVIEWS"] as $k => $arItem){
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment