Пример #1
0
 /**
  * Ritorna la lista degli abbracci effettuati dall'utente.
  * Gestisce anche la paginazione automaticamente.
  *
  * @param Request $request
  *
  * @return \Illuminate\Http\JsonResponse
  */
 public function getList(Request $request)
 {
     $user = $this->getAuthenticatedUser();
     $hugs = Hug::where(function ($query) use($request) {
         /**
          * @var Builder $query
          */
         $query->whereNull('closed_at')->orWhere(function ($query) {
             /**
              * @var Builder $query
              */
             $query->whereNotNull('closed_at')->where('closed_at', '>=', Carbon::now()->subHours(24)->toDateTimeString());
             // Abbracci conclusi
         });
     })->where(function ($query) use($user) {
         /**
          * @var Builder $query
          */
         $query->where('user_seeker_id', '=', $user->id)->orWhere('user_sought_id', '=', $user->id);
     })->paginate(20);
     $response = json_decode($hugs->toJson());
     $response->list = $response->data;
     unset($response->data);
     return parent::response($response);
 }
Пример #2
0
 public function update()
 {
     $user = $this->getAuthenticatedUser();
     /**
      * @var User $user
      */
     return parent::response(["user" => $user]);
 }
Пример #3
0
 public function get($id)
 {
     try {
         $user = User::findOrFail($id);
     } catch (\Exception $e) {
         return parent::response(['success' => false, 'error' => "User not found"]);
     }
     return $user;
 }
Пример #4
0
 /**
  * @param Request $request
  * @return mixed
  */
 public function store(Request $request)
 {
     $isUser = $this->isValid($request);
     if ($isUser === false) {
         return Controller::response(Controller::error(22), 401);
     }
     $request->session()->push('user', $isUser);
     return Controller::response($isUser, 200);
 }
Пример #5
0
 public function getMonthVipList(Request $request)
 {
     try {
         $this->validate($request, ['month' => 'required|integer|between:1,12', 'year' => 'required|integer|between:2016,3000']);
     } catch (ValidationException $e) {
         $errors = $e->getErrors();
         return parent::response(['validation' => false, 'errors' => $errors]);
     }
     //todo: da continuare
     $vipList = \DB::table('user_hug_feedbacks')->select('user_id', 'users.username', \DB::raw('sum(result) as feedback_result'))->join('hugs', 'user_hug_feedbacks.hug_id', '=', 'hugs.id')->join('users', 'users.id', '=', 'hugs.user_seeker_id')->whereMonth('hugs.created_at', "=", $request->get('month'))->whereYear('hugs.created_at', "=", $request->get('year'))->groupBy('user_id')->orderBy('feedback_result', 'desc')->limit(10)->get();
     return parent::response(["vipList" => $vipList]);
 }
Пример #6
0
 /**
  * @param Request $request
  * @return mixed
  */
 public function store(Request $request)
 {
     $validate = ['email' => 'required|email', 'password' => 'required'];
     $validator = Controller::validator($request, $validate);
     if ($validator !== true) {
         return Controller::response(Controller::error(38), 400);
     }
     $isValid = $this->isValid($request);
     if ($isValid !== true) {
         return Controller::response(Controller::error(21), 400);
     }
     if ($request->hasFile('upload')) {
         $file = $request->file('upload');
         $name = uniqid(rand(), true) . "." . $file->getClientOriginalExtension();
         $file->move('storage/', $name);
         $request['picture'] = url('/storage') . "/" . $name;
     }
     $response = $this->user->pushUser($request);
     return Controller::response($response, 200);
 }
Пример #7
0
 public function authenticate(Request $request)
 {
     $credentials = $request->only('email', 'password', 'fid');
     $token = null;
     try {
         if (!($token = JWTAuth::attempt($credentials))) {
             return Controller::response(Controller::error(13), 401);
         }
         if (!empty($request->input('fid'))) {
             $user = $this->user->authFacebook($request);
         }
         if (!empty($request->input('email'))) {
             $user = $this->user->authEmail($request);
         }
         $hash = compact('token');
         $user['token'] = $hash['token'];
         return Controller::response($user, 200);
     } catch (JWTException $e) {
         return Controller::response(Controller::error(14), 500);
     }
 }
Пример #8
0
 /**
  * Remove the specified resource from storage.
  *
  * @param  int  $id
  * @return \Illuminate\Http\Response
  */
 public function destroy($id)
 {
     $user = JWTAuth::parseToken()->authenticate();
     if (!JWTAuth::parseToken()->authenticate()) {
         return Controller::response(Controller::error(13), 401);
     }
     if ($user->id != $id && !Controller::supreme($user->role)) {
         return Controller::response(Controller::error(13), 401);
     }
     $user = json_decode($this->user->pullUser($id));
     if (!empty($user) || !collect($user)->isEmpty()) {
         if ($user[0]->picture) {
             $picture = str_replace(url('/storage') . "/", "", $user[0]->picture);
             $target = public_path('storage/') . $picture;
             @chmod($target, 0777 & ~umask());
             File::delete($target);
         }
     }
     $response = $this->user->deletePicture($id);
     return Controller::response($response, 204);
 }
Пример #9
0
 /**
  * Permette di caricare fino ad un massimo di 3 file
  *
  * @param Request $request
  * @param         $id
  *
  * @return \Illuminate\Http\JsonResponse
  */
 public function sendSelfies(Request $request, $id)
 {
     // TODO: Da terminare
     $user = $this->getAuthenticatedUser();
     /**
      * @var Hug $hug
      */
     $hug = Hug::whereId($id)->whereNull('closed_at')->where(function ($query) use($user) {
         /**
          * @var Builder $query
          */
         $query->where('user_seeker_id', '=', $user->id)->orWhere('user_sought_id', '=', $user->id);
     })->firstOrFail();
     $selfie = new UserHugSelfie();
     $selfie->file_name = 'test.jpg';
     $selfie->hug_id = $hug->id;
     $selfie->user_id = $user->id;
     $selfie->file_path = 'test/test2/test.jpg';
     $selfie->file_size = 99121;
     $selfie->save();
     return parent::response([]);
 }
Пример #10
0
 /**
  * Gestisce le risposte degli utenti in seguito ad una richista di abbraccio.
  *
  * @param Request $request
  *
  * @return \Illuminate\Http\JsonResponse
  */
 public function userResponse(Request $request)
 {
     $responseType = last(explode('.', $request->route()->getName()));
     if (!in_array($responseType, ['accept', 'reject', 'noResponse'])) {
         // Risposta invalida
         abort(404, 'Invalid response');
     }
     try {
         $this->validate($request, ['id' => 'required|numeric|exists:searches,id']);
     } catch (ValidationException $e) {
         $errors = $e->getErrors();
         return parent::response([], $errors);
     }
     $user = $this->getAuthenticatedUser();
     /**
      * @var Search $search
      */
     $search = Search::whereId($request->input('id'))->whereNull('finished_at')->first();
     if ($user->id != $search->getLastFetchedUserId()) {
         // Non può rispondere a questa ricerca
         // TODO: Forse bisognerebbe prevedere qualcosa, soprattuto nell'accept. (oppure gestirlo nell'app?)
         abort(403);
     }
     switch ($responseType) {
         case 'accept':
             $this->userResponseAccept($search, $user);
             // Termino la ricerca
             $this->finish($search, self::FINISH_STATUS_SUCCESSFUL);
             // salvo alcuni dati utili
             $search->setFoundUserId($user->id);
             $search->save();
             // Notifico l'utente che ha avviato la ricerca
             $this->notifyTheSearcher($search);
             break;
         case 'reject':
             $this->userResponseReject($search, $user);
             // Continuo la ricerca
             $this->process($search);
             break;
         case 'noResponse':
             $this->userResponseNoResponse($search, $user);
             // Continuo la ricerca
             $this->process($search);
             break;
         default:
     }
     return parent::response([]);
 }
Пример #11
0
 /**
  * Remove the specified resource from storage.
  *
  * @param  int  $id
  * @return \Illuminate\Http\Response
  */
 public function destroy($id)
 {
     $user = JWTAuth::parseToken()->authenticate();
     if (!Controller::supreme($user->role)) {
         return Controller::response(Controller::error(13), 401);
     }
     $response = $this->newsletter->deleteNewsletter($id);
     return Controller::response($response, 204);
 }
Пример #12
0
 protected function processLogin(User $user, $token)
 {
     if (!empty($user->activation_code)) {
         return parent::response(['success' => false, 'error' => 'Your account is not active']);
     }
     if ($user->blocked) {
         return parent::response(['success' => false, 'error' => 'Your account is blocked']);
     }
     $user->last_login = Carbon::now();
     $user->save();
     return parent::response(['token' => $token]);
 }