Журнал посещений и оплаты спортивных занятий

Аватар пользователя Lain

Здравствуйте.
Необходимо сделать на сайте (на Drupal 8) функционал журнала посещений и оплаты спортивных занятий. Журнал занятий нужно связать с профилями реализованных модулем Profile (в каждом аккаунте пользователя добавлены один основной профиль и несколько дополнительных для членов семьи).

Тренер заходит на страницу журнала занятий и добавляет занятие, в котором выбирает группу, дату, время начала и завершения занятия. При выборе группы из профилей подтягивается список участников занятия. Напротив фамилии и имени каждого участника стоит поле для проставления присутствия его на занятии и количества часов. При сохранении занятие попадают в базу данных.

Также должна быть страница статистики посещений занятий на которой можно посмотреть количество и дни посещения участника и оплаты его занятий с помощью фильтров (фамилия и имя, за промежуток между конкретными датами).

Можно ли реализовать данный функционал существующими модулями (и какими) или нужно написать свой модуль?
Может есть возможность реализовать с помощью модулей немножко по другому?
Заранее благодарен за помощь!

Тип материала:
Версия Drupal:
0 Thanks

Комментарии

Аватар пользователя bumble
bumble 2 месяца назад
1

Можно попробовать нагородить стандартными, в связке с  Field collection /  Paragraphs + Views.
Группа и занятие - будут типом содержимого.
Может  Rules еще для чего пригодится.

Если писать модуль - то точно получится :)

Аватар пользователя sas@drupal.org
sas@drupal.org 2 месяца назад
1

Я бы не стал писать модуль, так как в D8 можно организовать полноценную модель практически любой ER схемы, paragraphs отлично решает вопрос связей между объектами с хорошими видгетами для поля, и кстати коллекции рекомендуют именно его для 8ки
...
Drupal 8 Versions
Paragraphs is likely to replace field collection for Drupal 8. Field collection is on its way to being deprecated. It is recommended to use paragraphs instead of field collection for Drupal 8 projects.
...

Аватар пользователя gun_dose
gun_dose 2 месяца назад
2

ИМХО, подобную задачу нужно решать через промежуточную сущность "посещение", которая одним полем ссылается на занятие, другим на юзера. Вроде того, как это сделано в Commerce с Order Item. А параграфы тут вообще не нужны. Занятие - нода, группа - нода. Занятие ссылается на группу и юзер ссылается на группу. Таким образом из занятия можно увидеть потенциальных посетителей, а юзер из профиля может увидеть занятия своей группы. Ну и очень много вьюсов.

Аватар пользователя bumble
bumble 2 месяца назад
Lain написал:
Напротив фамилии и имени каждого участника стоит поле для проставления присутствия его на занятии и количества часов.

Вот зачем параграфы, или коллекции.

Аватар пользователя gun_dose
gun_dose 2 месяца назад

Во-первых, коллекции уже морально устарели, о чём писали выше.
Во-вторых, если использовать параграфы для такой цели, то к чему их привязывать? К занятию? Выходит, что при проставлении посещения должна обновляться сущность занятия. А если придёт 300 человек? Придётся все 300 параграфов записывать в ноду. А если записывать эти параграфы в юзера, то спустя N лет у юзера в профиле может быть под тысячу таких параграфов - это очень круто ударит по производительности.

Аватар пользователя bumble
bumble 2 месяца назад

А как иначе отмечать присутствие каждого профиля на каждом занятии?

UPD

gun_dose написал:
К занятию?

Да.

Аватар пользователя gun_dose
gun_dose 2 месяца назад
bumble написал:
А как иначе отмечать присутствие каждого профиля на каждом занятии?
gun_dose написал:
ерез промежуточную сущность "посещение", которая одним полем ссылается на занятие, другим на юзера. Вроде того, как это сделано в Commerce с Order Item.
Аватар пользователя bumble
bumble 2 месяца назад

Ну, да. Если свои сущности - вариант, там многим лучше можно архитектуру построить, чем только контрибными модулями. А если еще и свой тип поля организовать для профиле-посещения - то и работать может оптимальнее.

Аватар пользователя Lain
Lain 2 месяца назад

Очень благодарен Вам за Ваши советы. К сожаленияю мой уровень вовлеченности на данный момент не дает мне возмозможности разобраться так сразу самому как это сделать. Посоветуйте может какие есть обучающие материалы на эту тему. Или может кто сможет помочь в настройке. Если есть время и желание у Вас помочь в настройке то скиньте Ваши ценовые предложения в личку.
Зарание благодарен.

Аватар пользователя bumble
bumble 2 месяца назад

Есть небольшой сборник полезностей, инициированный участниками сообщества. (Кстати, все желающие - присоединяйтесь к формированию поста!)

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

А так - задавайте вопросы тут, чем более предметно - тем больше шансов получить ответ. Полностью, с нуля, все действия вряд ли найдется "бездельник" описать...

Вопросы и ответы на них - бесплатны и на добровольных началах. Если же хотите найти исполнителя на определенный функционал - создайте ТОП в специализированном разделе, кто-нибудь - обязательно откликнется.

Аватар пользователя Lain
Lain 2 месяца назад

Я много чего понимаю как работает. Еще со времен 6 той версии. Тогда больше времени уделял Drupal. Понимаю немного как это будет связано в базе. Но есть пробелы в знаниях которые меня ставят в тупик. Вот что для меня сложно в этом вопросе

gun_dose написал:
Занятие - нода, группа - нода.

это я понимаю

gun_dose написал:
Занятие ссылается на группу и юзер ссылается на группу. Таким образом из занятия можно увидеть потенциальных посетителей, а юзер из профиля может увидеть занятия своей группы.

А вот как это реализовать средствами Drupal не знаю. Это нужно в профиле пользователей добавить поле CCK с возможностью выбирать из созданных групп (нод) по типу ноды? Если так то есть ли какой модуль расширение ССК который дает такую возможность или может это стандартная возможность ССК о которой я не знаю? Тоже самое к тому как связать ноды "группы" и ноды "занятия"? Так же?

gun_dose написал:
Ну и очень много вьюсов.

Я до этого вювсами пользовался только для вывода готовы обработанных данных. Можно ли ими пользоваться для вывода полей в которые эти данные нужно внести? И можно ли их использовать в ноде? Например в ноде "занятия" вывести пользователей в которые привязанные к определенной ноде группы (например Группа 1), и к каждому такому пользователю добавить поле в которое можно ввести количество проведенного времени на занятии (допустим 1 час, два часа, или по умолчанию 0 в случае отсутствия) ? Если такая возможность есть то подскажите как такие вювсы делаються?

Я понимаю что это вопросы чайника. Но от этого уж никуда не деться. Если я этого не знаю то это нужно признать и постараться исправить этот пробел.
Заранее благодарен за помощь и потраченное на меня время.

Аватар пользователя gun_dose
gun_dose 2 месяца назад

Пока вы там делали непонятно что, ццк включили в ядро семёрки, а энтити референс и вьюс включили в ядро восьмёрки))) просто добавляйте поле-ссылку на другую сущность.

Аватар пользователя Lain
Lain 2 месяца назад

То что в ядро включили то я это знаю)))) За этим то я уследил)