@cetrarka

Как реализовать систему «наград» на сайте?

Всем привет. Использую стандартный фасад Auth. В каком направлении двигаться что бы реализовать награды для пользователя? Например пользователь написал 10 статей, и ему дана медаль на сайте. Понимаю что нужна таблица с наградами, отношение многие ко многим и т.п. Но как и где сделать проверку на выполнение условий и где реализовать сам код приписания награды?
  • Вопрос задан
  • 523 просмотра
Решения вопроса 1
Wolfnsex
@Wolfnsex
Если не хочешь быть первым - не вставай в очередь!
Но как и где сделать проверку на выполнение условий

Очевидно, что награду за
Например пользователь написал 10 статей
нужно проверять там же, где пользователь сохраняет написанную статью. В Laravel среди прочего, так есть система событий.

Но как и где сделать проверку на выполнение условий

Там, где условие может измениться в какой-то момент времени, например - я написал выше.

и где реализовать сам код приписания награды?

В отдельно классе-хелпере, как вариант. А вообще это примерно на 99% зависит от архитектуры приложения.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
wielski
@wielski
✔ Совет: Вам помогли? Отметьте ответы решением.
1. В папке app создайте папку Helpers, в котором разместите класс Awards.php
2. При каждом добавлении новости / комментария / прочего вызывайте определенный эвент (news_added, comment_added), в котором передавайте пользователя.
3. В хэлпере слушайте эти эвенты (создайте листенеры), в котором будете проверять. Если добавленная новость десятая - выдавать награду (создавать экземпляр модели Award с user_id равным юзеру).
4. Создайте Middleware который будет "слушать" эти ивенты, вызывая хэлпер Awards.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы