예제 #1
0
 public function executeReverse(sfWebRequest $request)
 {
     #TODO
     #security
     if ($request->getParameter('id')) {
         $mission_leg = MissionLegPeer::retrieveByPK($request->getParameter('id'));
         $mission = MissionPeer::retrieveByPK($mission_leg->getMissionId());
         if (isset($mission) && $mission->getItineraryId()) {
             $iti = $mission->getItinerary();
         }
         if ($mission_leg->getTransportation() == 'air_mission') {
             if ($mission_leg->getReverseFrom() == $mission_leg->getId()) {
                 //Non reversed leg
                 $orgin = $mission_leg->getFromAirportId();
                 $dest = $mission_leg->getToAirportId();
                 $miss_id = $mission_leg->getMissionId();
                 $leg_id = $mission_leg->getId();
                 $mission_leg->setReverseFrom($mission_leg->getId());
                 $mission_leg->save();
                 $mission_leg = new MissionLeg();
                 $mission_leg->setMissionId($miss_id);
                 $mission_leg->setReverseFrom($leg_id);
                 $mission_leg->setLegNumber(MissionLegPeer::getMaxLegNumber($miss_id) + 1);
                 $mission_leg->setFromAirportId($dest);
                 $mission_leg->setToAirportId($orgin);
                 $mission_leg->setTransportation('air_mission');
                 $mission_leg->save();
                 $this->getUser()->setFlash('success', 'Mission #' . $mission->getId() . '\'s legs have reversed.');
                 $this->redirect('@itinerary_detail?id=' . $iti->getId());
             }
         } elseif ($mission_leg->getTransportation() == 'ground_mission') {
             if ($mission_leg->getGroundOrigin() && $mission_leg->getGroundDestination()) {
                 //Reversed by type which saved : like patient..lodging..
                 if ($mission_leg->getGroundOrigin() == 'patient' && $mission_leg->getGroundDestination() == 'lodging') {
                     $parent = $mission_leg->getGroundOrigin();
                     $lodging = $mission_leg->getGroundDestination();
                     $miss_id = $mission_leg->getMissionId();
                     $leg_id = $mission_leg->getId();
                     $mission_leg = new MissionLeg();
                     $mission_leg->setMissionId($miss_id);
                     $mission_leg->setLegNumber(MissionLegPeer::getMaxLegNumber($miss_id) + 1);
                     $mission_leg->setGroundOrigin($lodging);
                     $mission_leg->setGroundDestination($parent);
                     $mission_leg->setTransportation('ground_mission');
                     $mission_leg->setReverseFrom($leg_id);
                     $mission_leg->save();
                 }
                 if ($mission_leg->getGroundOrigin() == 'lodging' && $mission_leg->getGroundDestination() == 'facility') {
                     $facility = $mission_leg->getGroundDestination();
                     $lodging = $mission_leg->getGroundOrigin();
                     $miss_id = $mission_leg->getMissionId();
                     $leg_id = $mission_leg->getId();
                     $mission_leg = new MissionLeg();
                     $mission_leg->setMissionId($miss_id);
                     $mission_leg->setLegNumber(MissionLegPeer::getMaxLegNumber($miss_id) + 1);
                     $mission_leg->setGroundDestination($lodging);
                     $mission_leg->setGroundOrigin($facility);
                     $mission_leg->setTransportation('ground_mission');
                     $mission_leg->setReverseFrom($leg_id);
                     $mission_leg->save();
                 }
                 $this->getUser()->setFlash('success', 'Missoin #' . $mission->getId() . '\'s legs have reversed.');
                 $this->redirect('@itinerary_detail?id=' . $iti->getId());
             }
         }
         if ($mission_leg->getMissionId()) {
             $mission = MissionPeer::retrieveByPK($mission_leg->getMissionId());
         }
     }
 }