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