예제 #1
0
 public function executeReverse(sfWebRequest $request)
 {
     $mis1 = MissionPeer::retrieveByPK($request->getParameter('miss_id'));
     $itine_id = $mis1->getItineraryId();
     $mis2 = MissionPeer::retrieveByPK($request->getParameter('mis2_id'));
     $mis1_legs = MissionLegPeer::getbyDesOrderMissId($request->getParameter('miss_id'));
     $legnumber = 1;
     $comcount = 1;
     $aircount = 1;
     $groundcount = 1;
     foreach ($mis1_legs as $mleg) {
         $type = $mleg->getTransportation();
         switch ($type) {
             case 'air_mission':
                 $mission_leg = new MissionLeg();
                 $mission_leg->setMissionId($mis2->getId());
                 $mission_leg->setLegNumber($legnumber);
                 $mission_leg->setFromAirportId($mleg->getToAirportId());
                 $mission_leg->setToAirportId($mleg->getFromAirportId());
                 $mission_leg->setPassOnBoard(0);
                 $mission_leg->setTransportation('air_mission');
                 $mission_leg->setPrefix('air' . $aircount);
                 $mission_leg->setCancelMissionLeg(1);
                 $mission_leg->save();
                 $aircount++;
                 break;
             case 'ground_mission':
                 $mission_leg = new MissionLeg();
                 $mission_leg->setMissionId($mis2->getId());
                 $mission_leg->setLegNumber($legnumber);
                 $mission_leg->setPassOnBoard(0);
                 $mission_leg->setTransportation('ground_mission');
                 $mission_leg->setGroundOrigin($mleg->getGroundDestination());
                 $mission_leg->setGroundDestination($mleg->getGroundOrigin());
                 $mission_leg->setPrefix('g' . $groundcount);
                 $mission_leg->setCancelMissionLeg(1);
                 $mission_leg->save();
                 $groundcount++;
                 break;
             case 'commercial_mission':
                 $mission_leg = new MissionLeg();
                 $mission_leg->setMissionId($mis2->getId());
                 $mission_leg->setLegNumber($legnumber);
                 $mission_leg->setFlightTime($mleg->getFlightTime());
                 //$mission_leg->setBaggageDesc($request->getParameter('baggage_desc'));
                 //$mission_leg->setBaggageWeight($request->getParameter('baggage_weight'));
                 $mission_leg->setAirlineId($mleg->getAirlineId());
                 $mission_leg->setFundId($mleg->getFundId());
                 $mission_leg->setConfirmCode($mleg->getConfirmCode());
                 $mission_leg->setFlightCost($mleg->getFlightCost());
                 $mission_leg->setCommOrigin($mleg->getCommDest());
                 $mission_leg->setCommDest($mleg->getCommOrigin());
                 $mission_leg->setFlightNumber($mleg->getFlightNumber());
                 $mission_leg->setDeparture($mleg->getDeparture());
                 $mission_leg->setTransportation('commercial_mission');
                 $mission_leg->setPrefix('com' . $comcount);
                 $mission_leg->setCancelMissionLeg(1);
                 $mission_leg->save();
                 $comcount++;
                 break;
         }
         $legnumber++;
     }
     $this->getUser()->setFlash('success', 'Successfully reverse.');
     $this->redirect('itinerary/detail?id=' . $itine_id);
 }
예제 #2
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());
         }
     }
 }