Как установить время между отчетами пользователей? - PullRequest
1 голос
/ 25 сентября 2019

Можно ли добавить таймер между отчетами пользователя? Я хочу добавить 5 минут между отчетами пользователя или отключить кнопку для отчетов на 5 минут, даже если пользователь обновит страницу.возможно?

Вот моя кнопка для отчета

<li class="share-link" style="float: right;left: 20px"><a data-toggle="modal" data-target="#exampleModal" href="javascript:void(0)" ><i class="rounded-x icon-flag"></i></a></li>

и после этого у меня есть модал, который отправляет отчет.

Вот контроллер

   public function careerReportCareerSolution(requ $request)
    {
  $reportExists = \App\Reports::where('user_id', $request['user_id'])
            ->whereDate('created_at', '>', Carbon::now()->subMinutes(5)->toDateTimeString())
            ->exists();

            if($reportExists) {
            // report has been created within 5 minutes
            return Redirect::back()->withErrors(['error', 'Report created within the last 5 minutes']);
        }

        $report = \App\Reports::create([
                        'user_id' => $request['user_id'],
                        'username' => $request['username'],
                        'user_id_posted' => $request['user_id_posted'],
                        'username_posted' => $request['username_posted'],
                        'career_solution_id' =>$request['career_solution_id'],
                        'subject' =>$request['subject'],
                        'why_reporting' =>$request['why_reporting'],
                        'why_reporting_message' =>$request['why_reporting_message'],
                        'additional_message' =>$request['additional_message'],
                        'comment' =>$request['comment'],
                        'comment_user' =>$request['comment_user'],
                        'comment_id' =>$request['comment_id'],
                      ]);
                      $id = $request['career_solution_id']; // looks like this is the ID you ar looking for

                      $career = CareerSolution::findOrfail($id);
                      $career->active = $request['active'];
                      $career->save();



        if($report != ""){
            flash('Career solution report submited', 'success');
        }else{
            flash('Career solution report', 'warning');
        }



        return Redirect::back();


    }


    }

Итак, я должен установить время между отчетами, 3-5 минут, когда пользователь не сможет сделать отчет.

1 Ответ

1 голос
/ 25 сентября 2019

Не проверено, однако, если вы используете временные метки (created_at, updated_at) в таблице Report, вы сможете достичь этого с помощью следующей логики:

$reportExists = \App\Report::where('user_id', $request['user_id'])
    ->whereDate('created_at', '>', now()->subMinutes(5)->toDateTimeString())
    ->exists();

if ($reportExists) {
    // report has been created within 5 minutes
    return Redirect::back()->withErrors(['error', 'Report created within the last 5 minutes');
}

...

Это будетпроверьте, был ли создан отчет для этого пользователя за последние 5 минут с использованием метода ->whereDate() eloquent.

Метод ->exists() используется, чтобы выяснить, имеется ли хотя бы одно вхождениеотчет.

Проверяется, является ли $reportExists верным.Если это так, приложение перенаправит пользователя на ту же страницу с сообщением об ошибке (заполните метод ->withErrors() соответствующим сообщением).

Это должно быть помещено перед всей другой логикой контроллера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...