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 . "
"; } $err .= "Неверный тип файла. Допустимые типы - jpg или png."; } } else { if ($_FILES['passport_main']['error'] == UPLOAD_ERR_FORM_SIZE) { if (strlen($err) > 0) { $err = $err . "
"; } $err .= "Превышен размер файла. Допустимый размер 8 Mb."; } else { if (strlen($err) > 0) { $err = $err . "
"; } $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 . "
"; } $err .= "Неверный тип файла. Допустимые типы - jpg или png."; } } else { if ($_FILES['passport_prop']['error'] == UPLOAD_ERR_FORM_SIZE) { if (strlen($err) > 0) { $err = $err . "
"; } $err .= "Превышен размер файла. Допустимый размер 8 Mb."; } else { if (strlen($err) > 0) { $err = $err . "
"; } $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 . "
"; } $err .= "Произошла непредвиденная ошибка: " . $e->getMessage(); } } ?>