orka
Новичок
Как лучше спроектировать приложение
Всем привет!
Проектирую PHP-приложение, решил посоветоваться с профессионалами.
Суть:
Система общения арендаторов бизнес-центра с техническим и прочим персоналом.
Функции:
1. Запросы
Если у арендатора возникает проблема или вопрос, он заходит в систему под своим логином и паролем и отправляет запрос в группу, соответствующую его проблеме. Примеры групп: электрики, водопроводчики, бухгалтерия, рекламный отдел. Далее, менеджер данной группы заходит в систему, видит этот запрос и принимает его к выполнению, выставляя дату предполагаемого завершения. Когда запрос выполнен, менеджер снова заходит и помечает этот запрос как "выполненный".
Моменты:
1. Ответственность.
Для менеджеров должно существовать три уровня: 1, 2 и 3. Если в течение определённого времени менеджер уровня 1 не отреагировал на входящий запрос, то отправляется оповещение менеджеру уровня 2. Далее, соответственно, к делу подключается менеджер уровня 3.
Думаю, как лучше спроектировать MVC-структуру. При разработке использую фреймворк CodeIgniter.
Пока что остановился на следующем:
Собственно, вопрос: разумно ли всё это? Или я слишком усложнил? Или наоборот не учёл чего-то?
Буду благодарен за пространные ответы.
Всем привет!
Проектирую PHP-приложение, решил посоветоваться с профессионалами.
Суть:
Система общения арендаторов бизнес-центра с техническим и прочим персоналом.
Функции:
1. Запросы
Если у арендатора возникает проблема или вопрос, он заходит в систему под своим логином и паролем и отправляет запрос в группу, соответствующую его проблеме. Примеры групп: электрики, водопроводчики, бухгалтерия, рекламный отдел. Далее, менеджер данной группы заходит в систему, видит этот запрос и принимает его к выполнению, выставляя дату предполагаемого завершения. Когда запрос выполнен, менеджер снова заходит и помечает этот запрос как "выполненный".
Моменты:
1. Ответственность.
Для менеджеров должно существовать три уровня: 1, 2 и 3. Если в течение определённого времени менеджер уровня 1 не отреагировал на входящий запрос, то отправляется оповещение менеджеру уровня 2. Далее, соответственно, к делу подключается менеджер уровня 3.
Думаю, как лучше спроектировать MVC-структуру. При разработке использую фреймворк CodeIgniter.
Пока что остановился на следующем:
PHP:
// Фабрика запросов
class Request_Factory
{
public function __construct($request_id)
{
$request = ... // вытаскиваем параметры запроса из БД
switch ($request->status) // статус: входящий, принятый или выполненный
{
case 'incoming': // входящий
return new Incoming_Request($request_id);
break;
case 'accepted': // принятый
return new Accepted_Request($request_id);
break;
// ... и так далее
}
}
}
// Модели:
class Request extends Model // базовый класс "Запрос"
{
public function __construct($id)
{
// вытаскиваем из БД все параметры данного запроса
}
public function display()
{
// вывести запрос на экран
}
}
class Incoming_Request extends Request // дочерний класс "Входящий запрос"
{
public function accept()
{
// установить в БД флаг "принят к выполнению" и дату предполагаемого выполнения
}
}
class Accepted_Request extends Request // дочерний класс "Запрос, принятый к выполнению"
{
public function complete()
{
// установить в БД флаг "выполнен" и фактическую дату выполнения
}
}
/*** Пример обращения из контроллера ***/
$request_id = my_clean_function($_GET['request_id']);
$request = new Request_Factory($request_id);
if ($request) {
$request->display();
} else {
show_error('No such request');
}
// или
$request_id = my_clean_function($_GET['request_id']);
$request = new Request_Factory($request_id);
$request->accept();
Буду благодарен за пространные ответы.