예제 #1
0
파일: Grid.php 프로젝트: kazmij/demo
 protected function _prepareCollection()
 {
     /* @var $collection Monogo_ApplicationMultiFb_Model_Resource_Applicationmultifb_Collection */
     $collection = Mage::getModel('monogo_applicationmultifb/applicationmultifb')->getCollection();
     $resource = Mage::getModel('core/resource');
     $applicationTable = $resource->getTableName('monogo_application/application_entity');
     $isCoordinator = null;
     $isOwner = null;
     if (Monogo_Application_Model_Config::hasRole(Monogo_Application_Model_Config::ROLE_RKS)) {
         $regions = array();
         $agencies = array();
         $collection_regions = Mage::getModel('monogo_rks/rks_user_to_set')->getCollection()->addFieldToFilter('user_id', Mage::getSingleton('admin/session')->getUser()->getId());
         foreach ($collection_regions as $item) {
             $regions[] = $item->getSetId();
         }
         $collection_agencies = Mage::getModel('monogo_agency/agency')->getCollection()->addFieldToFilter('region_id', array('in' => $regions));
         foreach ($collection_agencies as $item) {
             $agencies[] = $item->getAgencyId();
         }
         if (empty($agencies)) {
             $agencies = array(0);
         }
         $collection->getSelect()->joinLeft(array('user_under' => $resource->getTableName('monogo_agency/under')), 'user_under.agency_id IN (' . implode(',', $agencies) . ')', array())->joinLeft(array('user_above' => $resource->getTableName('monogo_agency/above')), 'user_above.agency_id IN (' . implode(',', $agencies) . ')', array())->where('user_under.user_id IS NOT NULL OR user_above.user_id IS NOT NULL');
     } else {
         if (($isOwner = Monogo_Application_Model_Config::hasRole(Monogo_Application_Model_Config::ROLE_OWNER)) || Monogo_Application_Model_Config::hasRole(Monogo_Application_Model_Config::ROLE_TRADER) || ($isCoordinator = Monogo_Application_Model_Config::hasRole(Monogo_Application_Model_Config::ROLE_COORDINATOR))) {
             $userAgency = Mage::getModel('monogo_agency/agency')->getAgencyForUser(Monogo_Application_Model_Config::getLoggedUser()->getId());
             $resource = Mage::getModel('core/resource');
             if ($isOwner || $isCoordinator) {
                 //all application with logged owner agency id
                 $collection->getSelect()->where('main_table.entity_id IN (SELECT app.entity_id FROM ' . $resource->getTableName('monogo_applicationmultifb/applicationmultifb') . ' app WHERE app.user_id IN ( ' . ' SELECT above.user_id FROM ' . $resource->getTableName('monogo_agency/above') . ' above WHERE above.agency_id = ' . ($userAgency->getId() ? $userAgency->getId() : 0) . ' ' . ' UNION ' . ' SELECT under.user_id FROM ' . $resource->getTableName('monogo_agency/under') . ' under WHERE under.agency_id = ' . ($userAgency->getId() ? $userAgency->getId() : 0) . ' ' . '))');
             } else {
                 $collection->addFieldToFilter('main_table.user_id', Monogo_Application_Model_Config::getLoggedUser()->getId());
             }
         } else {
             if (Monogo_Application_Model_Config::hasRole(Monogo_Application_Model_Config::ROLE_PARTNER)) {
                 $partnerUser = Monogo_Application_Model_Config::getLoggedUser();
                 $partnerAvailableProducts = Mage::getModel('monogo_partner/partner_user_to_set')->getSetsForUser($partnerUser->getUserId());
                 $arrProducts = array();
                 foreach ($partnerAvailableProducts as $product) {
                     $arrProducts[] = $product->getSetId();
                 }
                 if (empty($arrProducts)) {
                     $arrProducts = array(0);
                 }
                 $collection->getSelect()->join(array('application' => $resource->getTableName('monogo_application/application_entity')), 'application.entity_id = main_table.selected_id AND application.attribute_set_id IN (' . implode(',', $arrProducts) . ')', array());
             }
         }
     }
     $this->customerSubquery = "CONCAT((SELECT ce.value FROM customer_entity_varchar ce JOIN eav_attribute ceav ON ceav.attribute_id = ce.attribute_id WHERE ce.entity_id = customer.entity_id AND ceav.attribute_code = 'firstname'  LIMIT 1), ' ', (SELECT ce.value FROM customer_entity_varchar ce JOIN eav_attribute ceav ON ceav.attribute_id = ce.attribute_id WHERE ce.entity_id = customer.entity_id AND ceav.attribute_code = 'lastname'  LIMIT 1))";
     $collection->addExpressionFieldToSelect('cnt', '(SELECT COUNT(app.entity_id) FROM ' . $applicationTable . ' app WHERE app.application_multi_id = main_table.entity_id)', array('app.entity_id'))->getSelect()->join(array('user' => $resource->getTableName('admin/user')), "main_table.user_id = user.user_id ", array('userName' => "CONCAT(user.firstname, ' ', user.lastname)"))->join(array('customer' => $resource->getTableName('customer_entity')), "main_table.customer_id = customer.entity_id ", array('customerName' => $this->customerSubquery))->join(array('status_table' => $collection->getTable('monogo_application/application_status_history')), "main_table.entity_id = status_table.application_multi_id AND status_table.entity_id = (SELECT MAX(statuses3.entity_id) FROM " . $collection->getTable('monogo_application/application_status_history') . " statuses3 WHERE statuses3.application_multi_id = main_table.entity_id) AND status_table.created_at = (SELECT MAX(statuses2.created_at) FROM " . $collection->getTable('monogo_application/application_status_history') . " statuses2 WHERE statuses2.application_multi_id = main_table.entity_id)", array())->joinLeft(array('status_origin' => $collection->getTable('monogo_application/application_status')), "status_origin.entity_id = status_table.status_id ", array('status_origin.color_hex', 'status_origin.status_name'));
     $this->setCollection($collection);
     return parent::_prepareCollection();
 }
예제 #2
0
파일: Status.php 프로젝트: kazmij/demo
 /**
  * if $notes is true then return array with notes
  * @param type $notes
  * @return array
  */
 public function getOptions($type = 'application', $notes = false)
 {
     //logged user role
     $roleId = Monogo_Application_Model_Config::getLoggedUserRoleID();
     /* @var $collection Monogo_Application_Model_Resource_Application_Status_Collection */
     $collection = $this->getCollection();
     $collection->addFieldToFilter('type', $type);
     $arr = array();
     $arr[''] = Mage::helper('monogo_application')->__('-- Select status --');
     foreach ($collection as $row) {
         $arr[$row->getId()] = $row->getStatusName();
         if ($notes) {
             $arr[$row->getId()] = $row->getNotes();
         }
     }
     return $arr;
 }