public function create($recipient = null) { $user = Confide::user(); $users = array(); $userModels = null; if ($user->isStaff()) { $userModels = DB::table('doctor_patient')->where('doctor_patient.staff_id', '=', $user->id)->join('user', 'doctor_patient.user_id', '=', 'user.id')->select('user.id', 'first_name', 'last_name')->get(); $users[''] = "-- Select a Patient --"; } else { $userModels = DB::table('doctor_patient')->where('doctor_patient.user_id', '=', $user->id)->join('user', 'doctor_patient.staff_id', '=', 'user.id')->select('user.id', 'first_name', 'last_name')->get(); $users[''] = "-- Select a Doctor --"; } // Create users array foreach ($userModels as $userModel) { if ($user->isStaff()) { $users[$userModel->id] = $userModel->first_name . " " . $userModel->last_name; } else { $users[$userModel->id] = "Dr. " . $userModel->first_name . " " . $userModel->last_name; } } if (Request::isMethod('GET')) { return View::make('home/conversation/create', compact('user', 'users', 'recipient')); } elseif (Request::isMethod('POST')) { $messages = array(); $validator = Validator::make(Input::all(), array('user_id' => 'required', 'subject' => 'required', 'message' => 'required'), array('user_id.required' => 'You must select a recipient.', 'subject.required' => 'You must include a subject.', 'messages.required' => 'You must include a message.')); // Get other errors if ($validator->fails()) { $messageBag = $validator->messages(); foreach ($messageBag->all(':message<br>') as $message) { $messages[] = $message; } } if (empty($messages)) { // Create a new Appointment with the given data $conversation = new Conversation(); $conversation->fill(Input::all()); $conversation->sender = $user->id; $conversation->receiver = Input::get('user_id'); $conversation->save(); return Redirect::route('conversation.show.all'); } else { // Flash data to session vars to repopulate form later Input::flash(); // Compile error messages $messages = implode($messages); return Redirect::route('conversation.create')->with(array('message' => 'Error:<br>' . $messages, 'message_type' => 'error')); } } }