Пример #1
0
 public static function getByMayInterested($airport = null, $min_efficiency = 85)
 {
     $c = new Criteria();
     $c->add(self::APPT_DATE, null, Criteria::ISNOTNULL);
     $c->add(self::MISSION_DATE, null, Criteria::ISNOTNULL);
     $c->add(self::CANCEL_MISSION, 1);
     $c->add(self::MISSION_DATE, date("Y/m/d", strtotime("now")), Criteria::GREATER_EQUAL);
     $c->addAnd(self::MISSION_DATE, date("Y/m/d", strtotime("+1 year")), Criteria::LESS_EQUAL);
     if ($min_efficiency && $airport) {
         $c->addJoin(self::ID, MissionLegPeer::MISSION_ID, Criteria::INNER_JOIN);
         $c->addJoin(MissionLegPeer::ID, PilotRequestPeer::LEG_ID, Criteria::LEFT_JOIN);
         $c->addJoin(MissionPeer::ITINERARY_ID, ItineraryPeer::ID, Criteria::INNER_JOIN);
         $c->add(MissionLegPeer::MISSION_REPORT_ID, null, Criteria::ISNULL);
         $c->addAlias('from_air', AirportPeer::TABLE_NAME);
         $c->addAlias('to_air', AirportPeer::TABLE_NAME);
         $c->addJoin(MissionLegPeer::FROM_AIRPORT_ID, AirportPeer::alias('from_air', AirportPeer::ID), Criteria::INNER_JOIN);
         $c->addJoin(MissionLegPeer::TO_AIRPORT_ID, AirportPeer::alias('to_air', AirportPeer::ID), Criteria::INNER_JOIN);
         $c->addAnd(MissionPeer::ID, "\n      CEILING(ROUND(ACOS(SIN(RADIANS(from_air.latitude))\n      *SIN(RADIANS(to_air.latitude))+COS(RADIANS(from_air.latitude))\n      *COS(RADIANS(to_air.latitude))*COS(RADIANS(from_air.longitude)-RADIANS(to_air.longitude)))\n      *((180*60)/PI()))/(ROUND(ACOS(SIN(RADIANS(from_air.latitude))\n      *SIN(RADIANS(to_air.latitude))+COS(RADIANS(from_air.latitude))\n      *COS(RADIANS(to_air.latitude))\n      *\n      COS(RADIANS(from_air.longitude)-RADIANS(to_air.longitude))\n        ) * ((180*60)/PI())\n      )\n      +\n      ROUND(\n        ACOS(\n          SIN(RADIANS({$airport->getLatitude()}))\n          *\n          SIN(RADIANS(to_air.latitude))\n          +\n          COS(RADIANS({$airport->getLatitude()}))\n          *\n          COS(RADIANS(to_air.latitude))\n          *\n          COS(RADIANS({$airport->getLongitude()})-RADIANS(to_air.longitude))\n        ) * ((180*60)/PI())\n      )\n      +\n      ROUND(\n        ACOS(\n          SIN(RADIANS({$airport->getLatitude()}))\n          *\n          SIN(RADIANS(from_air.latitude))\n          +\n          COS(RADIANS({$airport->getLatitude()}))\n          *\n          COS(RADIANS(from_air.latitude))\n          *\n          COS(RADIANS({$airport->getLongitude()})-RADIANS(from_air.longitude))\n        ) * ((180*60)/PI()))) * 200) >= " . $min_efficiency, Criteria::CUSTOM);
         $c->add(MissionLegPeer::CANCELLED, null, Criteria::ISNULL);
     }
     $c->setDistinct(self::ID);
     $c->addAscendingOrderByColumn(self::MISSION_DATE);
     $c->setLimit(3);
     return self::doSelect($c);
 }
Пример #2
0
 public static function getPendingPagerPilot($max, $page = 1, $pilot_id, $wing_id = null, $ident = null)
 {
     $c = new Criteria();
     $c->addJoin(self::MISSION_ID, MissionPeer::ID, Criteria::LEFT_JOIN);
     $c->add(self::PILOT_ID, $pilot_id);
     $c->addJoin(self::FROM_AIRPORT_ID, AirportPeer::alias('from_air', AirportPeer::ID), Criteria::LEFT_JOIN);
     $c->addJoin(self::TO_AIRPORT_ID, AirportPeer::alias('to_air', AirportPeer::ID), Criteria::LEFT_JOIN);
     $c->addAlias('from_air', AirportPeer::TABLE_NAME);
     $c->addAlias('to_air', AirportPeer::TABLE_NAME);
     if ($ident) {
         $c1 = $c->getNewCriterion(AirportPeer::alias("from_air", AirportPeer::IDENT), "%{$ident}%", Criteria::LIKE);
         $c2 = $c->getNewCriterion(AirportPeer::alias("to_air", AirportPeer::IDENT), "%{$ident}%", Criteria::LIKE);
         $c->add($c1->addOr($c2));
     }
     if ($wing_id) {
         $c1 = $c->getNewCriterion(AirportPeer::alias("from_air", AirportPeer::WING_ID), $wing_id);
         $c2 = $c->getNewCriterion(AirportPeer::alias("to_air", AirportPeer::WING_ID), $wing_id);
         $c->add($c1->addOr($c2));
     }
     $c->add(MissionPeer::MISSION_DATE, date('Y-m-d') . ' 00:00:00', Criteria::GREATER_EQUAL);
     $c->add(self::CANCELLED, null, Criteria::ISNULL);
     self::addSelectColumns($c);
     $c->addAsColumn("sort_order", "ABS(DATEDIFF(" . MissionPeer::MISSION_DATE . ", NOW()))");
     $c->addAscendingOrderByColumn('sort_order');
     $pager = new sfPropelPager('MissionLeg', $max);
     $pager->setCriteria($c);
     $pager->setPage($page);
     $pager->init();
     return $pager;
 }