/** * * @param $payer_email * @param $description * @param $rate * @return Project */ public function createProject($payer_email, $description, $rate) { $project = new Project(['description' => $description, 'rate_per_hour' => $rate]); // @TODO Check if the user was added as payer before!! :) $payer = User::whereEmail($payer_email)->firstOrFail(); $payee = Auth::user(); $project->payer()->associate($payer); $project->payee()->associate($payee); $project->save(); //Pusher $pusher = new Pusher(env('PUSHER_PUBLIC_KEY'), env('PUSHER_SECRET_KEY'), env('PUSHER_APP_ID')); $data = ['payee_id' => Auth::user()->id, 'payer_id' => $payer->id, 'project' => $project, 'message' => Auth::user()->name . ' would like to start a new project with you, with the description \'' . $project->description . ',\' and at $' . $rate . '/hour. Is this ok?']; $pusher->trigger('channel', 'insertProject', $data); return $project; }