300 lines
15 KiB
PHP
300 lines
15 KiB
PHP
|
|
<?php
|
||
|
|
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||
|
|
|
||
|
|
ini_set('display_errors', 1);
|
||
|
|
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE);
|
||
|
|
|
||
|
|
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/IReservationState.php';
|
||
|
|
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/ImportRecord.php';
|
||
|
|
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/target/DocTarget.php';
|
||
|
|
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Apartment.php';
|
||
|
|
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Block.php';
|
||
|
|
include $_SERVER['DOCUMENT_ROOT'] . '/import/ImporterService.php';
|
||
|
|
include $_SERVER['DOCUMENT_ROOT'] . '/import/helper/Date.php';
|
||
|
|
include $_SERVER['DOCUMENT_ROOT'] . '/import/Clock/Clock.php';
|
||
|
|
include $_SERVER['DOCUMENT_ROOT'] . '/import/Clock/RealtimeClock.php';
|
||
|
|
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/Reservation.php';
|
||
|
|
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/ReservationImage.php';
|
||
|
|
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/ApartmentHistory.php';
|
||
|
|
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/ReservationService.php';
|
||
|
|
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/BaseState.php';
|
||
|
|
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/StateNew.php';
|
||
|
|
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/RoomType.php';
|
||
|
|
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/FlatType.php';
|
||
|
|
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/DecorationType.php';
|
||
|
|
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Building.php';
|
||
|
|
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Builder.php';
|
||
|
|
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/BlockSubway.php';
|
||
|
|
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Region.php';
|
||
|
|
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Mortgage.php';
|
||
|
|
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Bank.php';
|
||
|
|
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/BankProgram.php';
|
||
|
|
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/BankProgramRate.php';
|
||
|
|
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/provider/DocProvider.php';
|
||
|
|
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/ar/Document.php';
|
||
|
|
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/provider/DbDocProvider.php';
|
||
|
|
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/entity/Dir.php';
|
||
|
|
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/entity/RootDir.php';
|
||
|
|
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/entity/File.php';
|
||
|
|
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/entity/DocCollection.php';
|
||
|
|
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/DocumentManager.php';
|
||
|
|
include $_SERVER['DOCUMENT_ROOT'] . '/import/Prefetcher.php';
|
||
|
|
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/presentation/DocumentPrefetcher.php';
|
||
|
|
|
||
|
|
$err = "";
|
||
|
|
|
||
|
|
if ($_SESSION['id'] && isset($_POST)) {
|
||
|
|
$post = clearInputData($_POST);
|
||
|
|
|
||
|
|
$user = new User;
|
||
|
|
$user->get($_SESSION['id']);
|
||
|
|
$service = new ReservationService();
|
||
|
|
$images = [];
|
||
|
|
|
||
|
|
try {
|
||
|
|
|
||
|
|
if (isset($_FILES['passport_main']['name']) && $_FILES['passport_main']['name']) {
|
||
|
|
if ($_FILES['passport_main']['error'] == UPLOAD_ERR_OK) {
|
||
|
|
list($a, $ext) = explode("/", $_FILES['passport_main']['type']);
|
||
|
|
if ($ext == "pjpeg") {
|
||
|
|
$ext = "jpeg";
|
||
|
|
}
|
||
|
|
$ext = mb_strtolower($ext);
|
||
|
|
if ($ext == "jpeg" or $ext == "jpg" or $ext == "png") {
|
||
|
|
$name = md5($_FILES['passport_main']['tmp_name'] . time()) . "." . $ext;
|
||
|
|
$photo = $_SERVER['DOCUMENT_ROOT'] . "/private/" . $name;
|
||
|
|
if (!is_dir($_SERVER['DOCUMENT_ROOT'] . "/private")) {
|
||
|
|
mkdir($_SERVER['DOCUMENT_ROOT'] . "/private");
|
||
|
|
}
|
||
|
|
if (move_uploaded_file($_FILES['passport_main']['tmp_name'], $photo)) {
|
||
|
|
$images['passport_main'] = "/private/" . $name;
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
if (strlen($err) > 0) {
|
||
|
|
$err = $err . "<br/>";
|
||
|
|
}
|
||
|
|
$err .= "Неверный тип файла. Допустимые типы - jpg или png.";
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
if ($_FILES['passport_main']['error'] == UPLOAD_ERR_FORM_SIZE) {
|
||
|
|
if (strlen($err) > 0) {
|
||
|
|
$err = $err . "<br/>";
|
||
|
|
}
|
||
|
|
$err .= "Превышен размер файла. Допустимый размер 8 Mb.";
|
||
|
|
} else {
|
||
|
|
if (strlen($err) > 0) {
|
||
|
|
$err = $err . "<br/>";
|
||
|
|
}
|
||
|
|
$err .= "Ошибка при загрузке: " . $_FILES['passport_main']['error'];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
if (isset($_FILES['passport_prop']['name']) && $_FILES['passport_prop']['name']) {
|
||
|
|
if ($_FILES['passport_prop']['error'] == UPLOAD_ERR_OK) {
|
||
|
|
list($a, $ext) = explode("/", $_FILES['passport_prop']['type']);
|
||
|
|
if ($ext == "pjpeg") {
|
||
|
|
$ext = "jpeg";
|
||
|
|
}
|
||
|
|
$ext = mb_strtolower($ext);
|
||
|
|
if ($ext == "jpeg" or $ext == "jpg" or $ext == "png") {
|
||
|
|
$name = md5($_FILES['passport_prop']['tmp_name'] . time()) . "." . $ext;
|
||
|
|
$photo = $_SERVER['DOCUMENT_ROOT'] . "/private/" . $name;
|
||
|
|
if (!is_dir($_SERVER['DOCUMENT_ROOT'] . "/private")) {
|
||
|
|
mkdir($_SERVER['DOCUMENT_ROOT'] . "/private");
|
||
|
|
}
|
||
|
|
if (move_uploaded_file($_FILES['passport_prop']['tmp_name'], $photo)) {
|
||
|
|
$images['passport_prop'] = "/private/" . $name;
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
if (strlen($err) > 0) {
|
||
|
|
$err = $err . "<br/>";
|
||
|
|
}
|
||
|
|
$err .= "Неверный тип файла. Допустимые типы - jpg или png.";
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
if ($_FILES['passport_prop']['error'] == UPLOAD_ERR_FORM_SIZE) {
|
||
|
|
if (strlen($err) > 0) {
|
||
|
|
$err = $err . "<br/>";
|
||
|
|
}
|
||
|
|
$err .= "Превышен размер файла. Допустимый размер 8 Mb.";
|
||
|
|
} else {
|
||
|
|
if (strlen($err) > 0) {
|
||
|
|
$err = $err . "<br/>";
|
||
|
|
}
|
||
|
|
$err .= "Ошибка при загрузке: " . $_FILES['passport_prop']['error'];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
if (strlen($err) == 0) {
|
||
|
|
$apartment = Apartment::findOne($post['object_id']);
|
||
|
|
|
||
|
|
$roomType = RoomType::findOne($apartment->room_type_id);
|
||
|
|
$decorationType = DecorationType::findOne($apartment->decoration_id);
|
||
|
|
$flatType = FlatType::findOne($apartment->flat_type_id);
|
||
|
|
$block = Block::findOne($apartment->block_id);
|
||
|
|
$building = Building::findOne($apartment->building_id);
|
||
|
|
$builder = Builder::findOne($block->builder_id);
|
||
|
|
$region = Region::findOne($block->region_id);
|
||
|
|
$subways = BlockSubway::createStringsForBlock($block->id);
|
||
|
|
$imagesFromBlock = Block::getAllImagesUrl($block->id);
|
||
|
|
|
||
|
|
$mortgageList = Mortgage::findByBuildingId($apartment->building_id);
|
||
|
|
$programIds = array();
|
||
|
|
foreach ($mortgageList as $mortgage) {
|
||
|
|
$programIds[] = $mortgage->program_id;
|
||
|
|
}
|
||
|
|
$bankPrograms = array();
|
||
|
|
if ($programIds && count($programIds) > 0) {
|
||
|
|
$bankPrograms = BankProgram::find($programIds);
|
||
|
|
|
||
|
|
foreach ($bankPrograms as $bankProgram) {
|
||
|
|
$bankProgram->bank = Bank::findOne($bankProgram->bank_id);
|
||
|
|
$bankProgram->bankProgramRates = BankProgramRate::findByProgramId($bankProgram->id);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
$manager = new DocumentManager($block);
|
||
|
|
$docs = (new DocumentPrefetcher($manager))->prefetch();
|
||
|
|
|
||
|
|
$object_desc = "Тип: " . $roomType->name . " Площадь: " . $apartment->space_total . " Этаж: " . $apartment->flat_floor .
|
||
|
|
" Цена: " . number_format($apartment->discount_price, 0, ',', ' ') . " Цена базовая: " . number_format($apartment->base_price, 0, ',', ' ') .
|
||
|
|
" ЖК: " . $block->name . " Очередь: " . $building->line . " Корпус: " . $building->corp .
|
||
|
|
" Сдача: " . Date::getFormatedEndingPeriod($building->deadline) . " Этажей: " . $building->floors .
|
||
|
|
" Адрес: " . $block->address . " Застройщик: " . $builder->name;
|
||
|
|
|
||
|
|
|
||
|
|
$reservation = new Reservation();
|
||
|
|
$reservation->bank = $post["bank"];
|
||
|
|
$reservation->secondname = $post["secondname"];
|
||
|
|
$reservation->firstname = $post["firstname"];
|
||
|
|
$reservation->surname = $post["surname"];
|
||
|
|
$reservation->birth_date = Date::dateTimeToMysql(strtotime($post["birth_date"]));
|
||
|
|
$reservation->phone = $post["phone"];
|
||
|
|
$reservation->payment = $post["payment"];
|
||
|
|
$reservation->passport_series = $post["passport_series"];
|
||
|
|
$reservation->passport_num = $post["passport_num"];
|
||
|
|
$reservation->passport_date = Date::dateTimeToMysql(strtotime($post["passport_date"]));
|
||
|
|
$reservation->passport_place = $post["passport_place"];
|
||
|
|
$reservation->passport_address = $post["passport_address"];
|
||
|
|
$reservation->info = $post["info"];
|
||
|
|
$reservation->user_id = $_SESSION['id'];
|
||
|
|
$reservation->object_id = $apartment->id;
|
||
|
|
$reservation->object_desc = $object_desc;
|
||
|
|
$reservation->apartment_number = $apartment->number;
|
||
|
|
|
||
|
|
if ($apartment) {
|
||
|
|
$block = Block::findOne($apartment->block_id);
|
||
|
|
|
||
|
|
$reservation->full_price = $reservation->full_price ?: $apartment->discount_price;
|
||
|
|
$reservation->base_price = $reservation->base_price ?: $apartment->base_price;
|
||
|
|
|
||
|
|
if ($flatType->name == 'Переуступка') {
|
||
|
|
if ($builder && (float)$builder->discount_fee) {
|
||
|
|
$reservation->fee = $reservation->fee ?: $builder->discount_fee;
|
||
|
|
} else {
|
||
|
|
$reservation->fee = (float)(new ImporterService())->getDefaultFee();
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
$reservation->fee = $reservation->fee ?: $block->getCalculatedFee();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
$service->reservate($reservation, $images);
|
||
|
|
|
||
|
|
// сохраняем данные
|
||
|
|
$apartmentSerialized = serialize($apartment);
|
||
|
|
$roomTypeSerialized = serialize($roomType);
|
||
|
|
$blockSerialized = serialize($block);
|
||
|
|
$buildingSerialized = serialize($building);
|
||
|
|
$builderSerialized = serialize($builder);
|
||
|
|
$decorationTypeSerialized = serialize($decorationType);
|
||
|
|
$regionSerialized = serialize($region);
|
||
|
|
$subwaysSerialized = serialize($subways);
|
||
|
|
$imagesSerialized = serialize($imagesFromBlock);
|
||
|
|
$banksSerialized = serialize($bankPrograms);
|
||
|
|
$docsSerialized = serialize($docs);
|
||
|
|
$flatTypeSerialized = serialize($flatType);
|
||
|
|
|
||
|
|
$apartmentHistory = new ApartmentHistory();
|
||
|
|
$apartmentHistory->saveDataForReservation($reservation->id, $apartmentSerialized, $blockSerialized,
|
||
|
|
$buildingSerialized, $builderSerialized, $roomTypeSerialized, $decorationTypeSerialized,
|
||
|
|
$regionSerialized, $subwaysSerialized, $imagesSerialized, $banksSerialized, $docsSerialized, $flatTypeSerialized);
|
||
|
|
|
||
|
|
$f1 = file("https://joywork.ru/template_mail/reservation_admin.html");
|
||
|
|
$text = implode("", $f1);
|
||
|
|
|
||
|
|
$text = str_replace("<%apartment_number%>", $apartment->number, $text);
|
||
|
|
$text = str_replace("<%user_name%>", $user->fio, $text);
|
||
|
|
$text = str_replace("<%apartment_description%>", $object_desc, $text);
|
||
|
|
|
||
|
|
mailClientFromJoywork("JoyWork2016@mail.ru", "Пользователь забронировал квартиру на JoyWork", $text);
|
||
|
|
mailClientFromJoywork("joywork@list.ru", "Пользователь забронировал квартиру на JoyWork", $text);
|
||
|
|
|
||
|
|
$f1 = file("https://joywork.ru/template_mail/reservation_client.html");
|
||
|
|
$text = implode("", $f1);
|
||
|
|
|
||
|
|
$text = str_replace("<%apartment_number%>", $apartment->number, $text);
|
||
|
|
$text = str_replace("<%user_name%>", $user->fio, $text);
|
||
|
|
$text = str_replace("<%reservation_status%>", $reservation->getStateName(), $text);
|
||
|
|
$text = str_replace("<%room_type%>", $roomType->name, $text);
|
||
|
|
$text = str_replace("<%space_total%>", $apartment->space_total, $text);
|
||
|
|
$text = str_replace("<%flat_floor%>", $apartment->flat_floor, $text);
|
||
|
|
$text = str_replace("<%discount_price%>", number_format($reservation->full_price, 0, ',', ' '), $text);
|
||
|
|
$text = str_replace("<%base_price%>", number_format($reservation->base_price, 0, ',', ' '), $text);
|
||
|
|
$text = str_replace("<%block_name%>", $block->name, $text);
|
||
|
|
$text = str_replace("<%building_line%>", $building->line, $text);
|
||
|
|
$text = str_replace("<%building_corp%>", $building->corp, $text);
|
||
|
|
$text = str_replace("<%building_deadline%>", Date::getFormatedEndingPeriod($building->deadline), $text);
|
||
|
|
$text = str_replace("<%building_floors%>", $building->floors, $text);
|
||
|
|
$text = str_replace("<%block_address%>", $block->address, $text);
|
||
|
|
$text = str_replace("<%builder_name%>", $builder->name, $text);
|
||
|
|
$text = str_replace("<%reservation_client_name%>", $reservation->getFullname(), $text);
|
||
|
|
$text = str_replace("<%reservation_client_phone%>", $reservation->phone, $text);
|
||
|
|
|
||
|
|
$style = "";
|
||
|
|
switch( $reservation->status ) {
|
||
|
|
case 1:
|
||
|
|
$style = "background: #d0d0d0; color: #757575;";
|
||
|
|
break;
|
||
|
|
case 2:
|
||
|
|
$style = "background: #ffc107; color: #ffffff;";
|
||
|
|
break;
|
||
|
|
case 3:
|
||
|
|
$style = "background: #d0d0d0; color: #757575;";
|
||
|
|
break;
|
||
|
|
case 4:
|
||
|
|
$style = "background: #4caf50;color: #ffffff;";
|
||
|
|
break;
|
||
|
|
case 5:
|
||
|
|
$style = "background: #d0d0d0; color: #757575;";
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
|
||
|
|
$text = str_replace("<%reservation_status_style%>", $style, $text);
|
||
|
|
|
||
|
|
mailClientFromJoywork($user->email, "Вы забронировали квартиру", $text);
|
||
|
|
}
|
||
|
|
|
||
|
|
} catch (\Exception $e) {
|
||
|
|
var_dump($e);
|
||
|
|
if (strlen($err) > 0) {
|
||
|
|
$err = $err . "<br/>";
|
||
|
|
}
|
||
|
|
$err .= "Произошла непредвиденная ошибка: " . $e->getMessage();
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
?>
|
||
|
|
<script type="text/javascript">
|
||
|
|
<?php if ($err) {?>
|
||
|
|
parent.document.getElementById('errorBlock').innerHTML = '<?php echo $err; ?>';
|
||
|
|
parent.document.getElementById('flat_booking_modal_title').scrollIntoView();
|
||
|
|
<?php } else { ?>
|
||
|
|
parent.successReservation();
|
||
|
|
<?php }?>
|
||
|
|
parent.document.getElementById('reservationSaveLoader').style.display = "none";
|
||
|
|
parent.document.getElementById('reservationSaveButton').disabled = false;
|
||
|
|
</script>
|