Esempio n. 1
0
 public function executeAssignPassenger(sfWebRequest $request)
 {
     /*$camp_passenger = new CampPilotPassenger();
       $camp_passenger->setCampId($request->getParameter('camp_id'));
       $camp_passenger->setMemberId($request->getParameter('member_id'));
       $camp_passenger->setPassengerId($request->getParameter('pass_id'));
        *
        */
     $this->setLayout(false);
     $this->pilot_req_id = $request->getParameter('pilot_req_id');
     $this->flight_date = $request->getParameter('flight_date');
     $this->message = '';
     if (!$request->getParameter('camp_id') || !$request->getParameter('member_id') || !$request->getParameter('pass_id') || !$request->getParameter('pilot_req_id')) {
         //$this->getUser()->setFlash('error', 'Incomplete data!');
         $this->message = 'Incomplete data!';
     } else {
         $pilot = PilotPeer::getByMemberId($request->getParameter('member_id'));
         if (!$pilot) {
             $this->message = 'Pilot not found!';
             ////$this->getUser()->setFlash('error', 'Pilot not found!');
             return;
         }
         $pilot_request = PilotRequestPeer::retrieveByPK($request->getParameter('pilot_req_id'));
         if (!$pilot_request) {
             $this->message = 'Pilot request not found!';
             return;
         }
         //check if passenger is linked
         $camp_passenger = CampPassengerPeer::retrieveByPK($request->getParameter('camp_id'), $request->getParameter('pass_id'));
         $pass = PassengerPeer::retrieveByPK($request->getParameter('pass_id'));
         $mission = MissionPeer::getByCampPass($request->getParameter('camp_id'), $request->getParameter('pass_id'));
         if (!$camp_passenger || !$pass || !$mission) {
             $this->message = 'Passenger or mission info not found!';
             return;
         }
         $total_weight = $pass->getWeight();
         $num_of_pass = 1;
         $pass_linked = null;
         if ($camp_passenger->getLink() != null) {
             $mission_linked = MissionPeer::getByCampPass($request->getParameter('camp_id'), $camp_passenger->getLink());
             $pass_linked = PassengerPeer::retrieveByPK($camp_passenger->getLink());
             //now check if mission dates are same
             if ($mission_linked && $pass_linked) {
                 if ($mission_linked->getMissionDate('m/d/Y') != $mission->getMissionDate('m/d/Y')) {
                     $this->message = 'Linked passengers mission dates are should be same!';
                     return;
                 } else {
                     $total_weight += $pass_linked->getWeight();
                     $num_of_pass += 1;
                 }
             }
         }
         /*
         //check pilots assigned number of day
         //TODO
         $pilot_assigned_dates = MissionPeer::getCampPilotDates($request->getParameter('camp_id'), $pilot->getId());
         if(sizeof($pilot_assigned_dates) == $pilot_request->getNumberDateAssign()){
             foreach ($pilot_assigned_dates as $key => $value){
                 //if($value==)
             }
         }
         */
         //TODO:check pilots max weight
         //TODO:check pilots number of seats
         //set pilot to passenger's leg
         $camp_mission_legs = MissionLegPeer::getByCampIdPassengerId($request->getParameter('camp_id'), $request->getParameter('pass_id'));
         if ($camp_mission_legs) {
             foreach ($camp_mission_legs as $leg) {
                 $leg->setPilotId($pilot->getId());
                 $leg->save();
             }
         }
         //set pilot to linked passenger's leg if exists a link
         if ($pass_linked) {
             $camp_mission_legs = MissionLegPeer::getByCampIdPassengerId($request->getParameter('camp_id'), $pass_linked->getId());
             if ($camp_mission_legs) {
                 foreach ($camp_mission_legs as $leg) {
                     $leg->setPilotId($pilot->getId());
                     $leg->save();
                 }
             }
         }
     }
 }