Дипломная работа: Автоматизация процесса взаимодействия с клиентами (CRM) на примере агенства недвижимости

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
106
private $uri;
private $controller;
private $action;
private $params;
public function __construct($uri)
{
if ($uri) {
$uri = str_replace("/api", "", $uri);
$this->uri = $uri;
$this->getRoute();
}
}
private function getRoute()
{
$this->parseRoute();
$class = "\\controllers\\" . $this->controller . 'Controller';
$action = $this->action;
if (class_exists($class)) {
$controller = new $class();
if (method_exists($controller, $action)) {
$controller->$action();
} else {
echo "Метод не найден";
}
} else {
echo "Класс не найден";
}
}
private function parseRoute()
{
$uri = explode("/", $this->uri);
$this->controller = $uri[1] != null ? ucfirst($uri[1]) : "Index";
$this->action = $uri[2] != null ? ucfirst($uri[2]) : "Index";
$this->params = $uri[3];
}
}
objectRepository.php
<?php
namespace BL;
107
use classes\DBquery;
use classes\UploadFiles;
use core\BaseRepository;
class ObjectRepository extends BaseRepository
{
public static function Get()
{
$filepath = __DIR__ . "/sql/objects/getObjects.sql";
$db = new DBquery();
return $db->queryRowsFile($filepath);
}
public function GetId()
{
$request = $this->Request();
$filepath = __DIR__."/sql/objects/getObjectId.sql";
$db = new DBquery();
$params = [
"id" => $request->id
];
return $db->queryRowFile($filepath, $params);
}
public function AddObject()
{
$request = $_POST;
$addr = json_decode($request["address"], true);
$paramsAddr = [
"street" => $addr["data"]["street"],
"house" => $addr["data"]["house"],
"flat" => $addr["data"]["flat"],
"full_address" => $addr["unrestricted_value"]
];
$paramsOwner = [
"surname" => $request["surname"],
"first_name" => $request["firstName"],
"patronymic" => $request["patronymic"],
"phone" => $request["phone"],
"email" => $request["email"]
];
$addr = $this->db->insert('ro_addr', $paramsAddr);
$owner = $this->db->insert('ro_owner', $paramsOwner);
$paramsObject = [
108
"address_id" => $addr,
"square" => $request["square"],
"number_room" => $request["number_room"],
"floor" => $request["floor"],
"rental_time" => $request["rental_time"],
"photo" => UploadFiles::UploadToPath($_FILES["photo"]),
"owner_id" => $owner,
"price" => $request["price"],
"description" => $request["description"]
];
return $this->db->insert('ro_object', $paramsObject);
}
}
getObjects.sql
select
o.object_id,
o.square,
o.number_room,
o.floor,
LEFT(o.photo, INSTR(o.photo, '$#%#') - 1) AS photo,
o.photo as images,
o.description,
o.rental_time,
o.price,
concat('ул ',ra.street,' д.',ra.house,' кв.',ra.flat) as address,
ra.latitude, longitude, flex,
ro.surname, first_name, patronymic, phone, email
from
ro_object o
join ro_addr ra on o.address_id = ra.addr_id
join ro_owner ro on o.owner_id = ro.owner_id
join ro_rental_time rrt on o.rental_time = rrt.id
objects.vue
<template>
<div>
fluid
class="py-0"
>
v-model="select"
:loading="loading"
:items="search"
109
cache-items
flat
hide-no-data
hide-details
clearable
label="Введите адрес квартиры"
></v-autocomplete>
</v-flex>
<dialog-fullscreen-for-objects text-btn="Добавить обьект"></dialog-fullscreen-for-objects>
</v-layout>
</v-container>
fluid
grid-list-md
>
v-for="object in objectsComp"
:key="object.object_id"
v-bind="{ [`md${object.flex}`]: true }"
>
:src="pathImage + object.photo"
height="300px"
>
fill-height
fluid
pa-2
class="resp"
>
md-center>
<p class="headline white--text">{{object.number_room |
numberRoomString}}</p>
<p class="headline white--text" v-text="object.address"></p>
<p class="headline white--text" v-text="'Площадь '+object.square"></p>
<p class="headline white--text">Стоимость: {{ object.price }}р. {{ object.rental_time |
rentalTimePriceString }}</p>
</v-flex>
</v-layout>
</v-container>
110
</v-img>
открыть
</v-btn>
</v-card-actions>
</v-card>
</v-flex>
</v-layout>
</v-container>
</v-flex>
</v-layout>
</div>
</template>
<script>
import DialogFullscreenForObjects from "../components/DialogFullScreenForObjects";
export default {
name: "Objects",
components: {DialogFullscreenForObjects},
data() {
return {
loading: false,
items: [],
select: null,
objects: [],
pathImage: process.env.VUE_APP_ROOT_IMAGES,
/*[
{
id: 1,
number_rooms: 1,
address: "ул. Курчатова 1 д 12",
image: "https://www.nastol.com.ua/pic/201303/1920x1080/nastol.com.ua-44866.jpg",
description: "Описание квартиры.",
flex: 4
},
{
id: 2,
number_rooms: 1,
address: "ул. Курчатова 2 д 12",
image: "https://www.nastol.com.ua/pic/201303/1920x1080/nastol.com.ua-44866.jpg",
description: "Описание квартиры.",
flex: 4
},
Источник: https://baza.diplomsite.ru/previewfile/2068