Beispiel #1
0
 public function executeAutoAddMissionsOnCamp(sfWebRequest $request)
 {
     // see if there is airport exist with this name
     $airport_name = $request->getParameter('airportname');
     $airport = AirportPeer::getBySpecificAirportName($airport_name);
     // If there is no airport then insert it into airport table
     if (!$airport) {
         // @TODO Set default airport fields values
         $airport = new Airport();
         $airport->setName($airport_name);
         $airport->save();
     }
     $pass_id = $request->getParameter('passenger');
     $camp_id = $request->getParameter('camp_id');
     $camp_passenger = new CampPassenger();
     $camp_passenger->setCampId($camp_id);
     $camp_passenger->setPassengerId($pass_id);
     if (CampPassengerPeer::doCount($camp_passenger->buildCriteria())) {
         $passenger = PassengerPeer::retrieveByPK($pass_id);
         $this->getUser()->setFlash('warning', 'Passenger "' . $passenger->getPerson()->getName() . '" has already been added!');
         return $this->redirect('camp/view?id=' . $request->getParameter('camp_id'));
     }
     $camp = CampPeer::retrieveByPK($camp_id);
     $this->forward404Unless($camp);
     $note = $request->getParameter('note');
     //$camp_passenger->setAirportId($camp->getAirportId ()); // Camp Location Id
     $camp_passenger->setNote($note);
     //if ($camp_passenger->save()){
     //return $this->renderText($airport->getId());
     //}
     $mission_type = MissionTypePeer::getByName('normal');
     if (!$mission_type instanceof MissionType) {
         $mission_type = MissionTypePeer::doSelectOne(new Criteria());
         $this->forward404Unless($mission_type);
     }
     $airport = AirportPeer::getBySpecificAirportName($airport_name);
     $camp_location = $camp->getAirport();
     $itinerary = new Itinerary();
     $itinerary->setCampId($camp->getId());
     $itinerary->setPassengerId($pass_id);
     $itinerary->setDateRequested(time());
     $itinerary->setApointTime('unspecified');
     $itinerary->setMissionTypeId($mission_type->getId());
     $itinerary->setAgencyId($camp->getAgencyId());
     $itinerary->setCancelItinerary(1);
     $itinerary->save();
     // Mission 1
     $mission1 = new Mission();
     $mission1->setItineraryId($itinerary->getId());
     $mission1->setCampId($camp->getId());
     $mission1->setCancelMission(1);
     $mission1->setPassengerId($pass_id);
     $mission1->setMissionCount(1);
     $mission1->setDateRequested(time());
     $mission1->setExternalId($this->getLatestExternalId());
     $mission1->setMissionTypeId($mission_type->getId());
     $mission1->save();
     $camp_passenger->setReturnAirportId(NULL);
     // this indicates that return airport id would be camp airport id
     $camp_passenger->setAirportId($airport->getId());
     $camp_passenger->setMissionId($mission1->getId());
     $camp_passenger->save();
     $mission1_leg1 = new MissionLeg();
     $mission1_leg1->setFromAirportId($airport->getId());
     $mission1_leg1->setLegNumber(1);
     $mission1_leg1->setMissionId($mission1->getId());
     if ($camp_location) {
         $mission1_leg1->setToAirportId($camp_location->getId());
     } else {
         $mission1_leg1->setToAirportId(NULL);
     }
     $mission1_leg1->setCancelMissionLeg(1);
     $mission1_leg1->save();
     // Mission 2
     $mission2 = new Mission();
     $mission2->setItineraryId($itinerary->getId());
     $mission2->setCampId($camp->getId());
     $mission2->setCancelMission(1);
     $mission2->setPassengerId($pass_id);
     $mission2->setMissionCount(2);
     // From treatment to hme
     $mission2->setDateRequested(time());
     $mission2->setExternalId($this->getLatestExternalId());
     $mission2->setMissionTypeId($mission_type->getId());
     $mission2->save();
     $camp_passenger2 = new CampPassenger();
     $camp_passenger2->setCampId($camp_id);
     $camp_passenger2->setPassengerId($pass_id);
     $camp_passenger2->setMissionId($mission2->getId());
     $camp_passenger2->setAirportId(NULL);
     // this indicates that return airport id would be camp airport id
     $camp_passenger2->setReturnAirportId($airport->getId());
     $camp_passenger2->setNote($note);
     $camp_passenger2->save();
     $mission2_leg2 = new MissionLeg();
     if ($camp_location) {
         $mission2_leg2->setFromAirportId($camp_location->getId());
     } else {
         $mission2_leg2->setFromAirportId(NULL);
     }
     $mission2_leg2->setLegNumber(1);
     $mission2_leg2->setMissionId($mission2->getId());
     $mission2_leg2->setToAirportId($airport->getId());
     $mission2_leg2->setCancelMissionLeg(1);
     $mission2_leg2->save();
     return $this->redirect('camp/view?id=' . $camp->getId());
 }