@cetrarka

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

Всем привет. Использую стандартный фасад Auth. В каком направлении двигаться что бы реализовать награды для пользователя? Например пользователь написал 10 статей, и ему дана медаль на сайте. Понимаю что нужна таблица с наградами, отношение многие ко многим и т.п. Но как и где сделать проверку на выполнение условий и где реализовать сам код приписания награды?
  • Вопрос задан
  • 554 просмотра
Решения вопроса 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.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы