public function findOnlyWithBranchOffice(\FabricaDeBolo\Domain\Specifications\ISpecification $specification)
 {
     $options = array('joins' => array('INNER JOIN states      ON (addresses.state_id = states.state_id)', 'INNER JOIN branchoffices   ON (addresses.address_id = branchoffices.address_id)'), 'group' => 'addresses.neighborhood', 'order' => 'states.priority asc', 'conditions' => '');
     if (isset($specification)) {
         $options['conditions'] = $specification->SatisfiedBy();
     }
     return Address::all($options);
 }
 public function find(\FabricaDeBolo\Domain\Specifications\ISpecification $specification, \FabricaDeBolo\Infrastructure\SortingCollection $sorting = null)
 {
     $options = array('joins' => array('INNER JOIN addresses   ON (addresses.address_id = branchoffices.address_id)', 'INNER JOIN states      ON (addresses.state_id = states.state_id)'), 'order' => 'states.priority', 'conditions' => '');
     if (isset($specification)) {
         $options['conditions'] = $specification->SatisfiedBy();
     }
     return BranchOffice::find('all', $options);
 }
 public function find(ISpecification $specification, SortingCollection $sorting = null)
 {
     $options = array('order' => 'name asc', 'conditions' => '');
     if (!isset($sorting)) {
         $options['order'] = 'name asc';
     } else {
         foreach ($sorting as $k => $s) {
             if ($k > 0) {
                 $options['order'] .= ", ";
             }
             $options['order'] .= $s->ColumnName . " " . ($s->Ascending ? "asc" : "desc");
         }
     }
     if (isset($specification)) {
         $options['conditions'] = $specification->SatisfiedBy();
     }
     return State::find('all', $options);
 }