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()); } } }