Расписание, как лучше сделать логику?

Petja

Новичок
Помогите, пожалуйста придумать красивую логику...

Есть много организаций, у организаций есть собрания, расписание - этих собраний, но есть особенности...

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

Типы собраний могут отличаться, например у одной из организаций:
По средам - собрание на одну тему, а во четвергам - на другую.
И в каждое последнее воскресенье месяца, например, - рабочее собрание.

Вроде бы все, но что-то в голове не укладывается, как это все грамотно организовать...

Заранее благодарю!
 

WMix

герр M:)ller
Партнер клуба
создать табицы Организации и Собрания (тип, тема). сделать связующую табличку между ними под названием Расписание.
 

riff

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

artoodetoo

великий и ужасный
вот! не надо автоматизировать бардак. за расписание должен отвечать ответственный человек. дай ему удобный инструмент (гуглекалендар) и спрашивай с него результат.
 

Petja

Новичок
А как сделать так, чтобы ответственный за организацию мог указать - каждое воскресенье месяца?
Дело в том, что там далекие от интернета люди и заполнять надо своими силами и желательно на всегда до новых изменений...
 

Petja

Новичок
Вроде бы основная сложность получать где-то информацию - какая это неделя месяца или день недели - четное или не четное число...
Есть ли какие-то готовые решения, чтобы сразу получать инфу - все свойства дня или свойства недели этого дня?

создать табицы Организации и Собрания (тип, тема). сделать связующую табличку между ними под названием Расписание.
Можно подробнее про связующую табличку?
 

Petja

Новичок
А еще надо как-то указывать Собранию - что оно проходит, например только в первую неделю месяца по четвергам...
 

riff

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

А как сделать так, чтобы ответственный за организацию мог указать - каждое воскресенье месяца?
Вот возьмёт и тыкнет четыре раза по календарику.

Есть ли какие-то готовые решения, чтобы сразу получать инфу - все свойства дня или свойства недели этого дня?
select * from table where data=сегодня или этой недели
 

Petja

Новичок
Любой понимает календарь. Тыкнуть в ячейку и написать "собрание" семи пядей не нужно, а тебе только останется зафиксировать в базе дату и событие.
Вот возьмёт и тыкнет четыре раза по календарику.
И так каждый месяц тыкать? Или один раз посидеть понатыкать на 10 лет вперед? :)
 

riff

Новичок
Натыкать год, и в конце добавить кнопку "скопировать события на следующий".
 

Petja

Новичок
Натыкать год, и в конце добавить кнопку "скопировать события на следующий".
Нет, надо в свойствах события указывать когда оно идет.
День недели, четная или нечетная неделя, четное или нечетное число.
А потом при выводе просто проверять на то или иное число - какое оно и что ему соответствует.
То, что вы предлагаете - это аморально... Тыкать... Это вообще как-то не по программерски, что ли...
 

Petja

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

riff

Новичок
То, что вы предлагаете - это аморально... Тыкать... Это вообще как-то не по программерски, что ли...
Ты "по программерски" сделай тыкалку удобной.
А иначе
Собрание проходит каждый вторник и четверг, но не проходит в первый вторник и в последний четверг месяца...
Типы собраний могут отличаться, например у одной из организаций:
По средам - собрание на одну тему, а во четвергам - на другую.
И в каждое последнее воскресенье месяца, например, - рабочее собрание.
ты не выплывешь.
 

Petja

Новичок
Ты "по программерски" сделай тыкалку удобной.
А иначе
ты не выплывешь.
Собрание проходит каждый вторник и четверг, но не проходит в первый вторник и в последний четверг месяца...
Типы собраний могут отличаться, например у одной из организаций:
По средам - собрание на одну тему, а во четвергам - на другую.
И в каждое последнее воскресенье месяца, например, - рабочее собрание.
Вот пока такой набросок есть:
Таблицы:
"Организации" <один ко многу> "Собрания"
Или много ко многу, если собрания одинаковые, тут еще не понятно можно ли их стандартизировать...
У Cобрания свойства:
- день недели.
- номер недели
- любой/чет/нечет

Скрипт прогноза:
Обходит все дни на которые прогноз
-> определяет свойства дня: день недели, номер недели, четный-нечетный
Делает выборку по свойствам Собраний и всем собраниям, что совпали - делает привязку в еще одной таблице Календарь...

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

Пока как-то так получается.
 
Сверху