Как лучше спроектировать приложение

orka

Новичок
Как лучше спроектировать приложение

Всем привет!

Проектирую 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();
Собственно, вопрос: разумно ли всё это? Или я слишком усложнил? Или наоборот не учёл чего-то?
Буду благодарен за пространные ответы.
 

dimagolov

Новичок
Возьми любой фревый баг-трекер или менеджер проектов и пользуйся на здоровье. Куда здоровее и функциональнее, чем что-то писать самому под подобную задачу. Я пользуюсь баг-трекером mantis, и мне кажеться что все, что тебе надо и даже много большее, что тебе понадобиться в ближайшем будущем, но ты пока еще этого не понял, уже там реализованно.
 

spiverg

Новичок
Удобный багтрекер flyspray, пользуюсь давно во всем устраивает
 
Сверху