/**
  * Projects Arhive
  *
  * @param void
  * @return null
  */
 function archive()
 {
     if ($this->request->isApiCall()) {
         $this->serveData(Projects::findByUser($this->logged_user), 'projects');
     }
     // if
     $per_page = 10;
     $page = (int) $this->request->get('page');
     if ($page < 1) {
         $page = 1;
     }
     // if
     if (!$this->logged_user->isOwner()) {
         $group_by = 'group';
     } else {
         $group_by = $this->request->get('group_by');
         if ($group_by != 'client') {
             $group_by = 'group';
         }
         // if
     }
     // if
     $filter_by_status = $this->request->get('filter');
     if (is_null($filter_by_status)) {
         $filter_by_status = 'all';
     }
     // if
     switch ($filter_by_status) {
         case 'all':
             $statuses = array(PROJECT_STATUS_COMPLETED, PROJECT_STATUS_CANCELED, PROJECT_STATUS_PAUSED);
             break;
         case 'completed':
             $statuses = array(PROJECT_STATUS_COMPLETED);
             break;
         case 'paused':
             $statuses = array(PROJECT_STATUS_PAUSED);
             break;
         case 'canceled':
             $statuses = array(PROJECT_STATUS_CANCELED);
             break;
         default:
             $statuses = array(PROJECT_STATUS_COMPLETED, PROJECT_STATUS_CANCELED, PROJECT_STATUS_PAUSED);
             break;
     }
     // switch project status filter
     $this->smarty->assign(array('group_by' => $group_by, 'filter' => $filter_by_status));
     if ($group_by == 'group') {
         $group = null;
         $group_id = $this->request->getId('group_id');
         if ($group_id) {
             $group = ProjectGroups::findById($group_id);
         }
         // if
         if (instance_of($group, 'ProjectGroup')) {
             list($projects, $pagination) = Projects::paginateByUserAndGroup($this->logged_user, $group, $statuses, $page, $per_page, true);
         } else {
             list($projects, $pagination) = Projects::paginateByUser($this->logged_user, $statuses, $page, $per_page, true);
         }
         // if
         $this->smarty->assign(array('projects' => $projects, 'pagination' => $pagination, 'groups' => ProjectGroups::findAll($this->logged_user), 'selected_group' => $group));
     } else {
         $company = null;
         $company_id = $this->request->getId('company_id');
         if ($company_id) {
             $company = Companies::findById($company_id);
         }
         // if
         if (!instance_of($company, 'Company')) {
             $company = $this->owner_company;
         }
         // if
         list($projects, $pagination) = Projects::paginateByUserAndCompany($this->logged_user, $company, $statuses, $page, $per_page, true);
         $this->smarty->assign(array('projects' => $projects, 'pagination' => $pagination, 'companies' => Companies::findClients($this->logged_user), 'selected_company' => $company));
     }
     // if
 }