微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ruby-on-rails – 可用性日历的最佳数据库模式是什么,它允许安排约会(重复发生和单个)

在我的应用程序中,我有一个提供者,有一个时间表和客户从预定时间预约.我需要以下功能.

提供者:
– 能够指定重复出现的可用性.例如Mon 9-5,Tues 10-3等.
– 能够使数据变黑.例如 – 本周一没有.
– 能够添加单个,而不是重复发生的日期/时间段.例如 – 这个星期六9-5.

顾客:
– 能够预订单人约会.
– 能够预订重复预约. (每周一9-4).

到目前为止,我想出了3个选项:

>将计划划分为30分钟的间隔,并为每个间隔/提供者对创建数据库条目.每个间隔可以是免费的或预订的.当客户预约时,我们将间隔标记为已预订.这种方法的问题在于它浪费了大量空间,而且我不确定搜索性能对于重复出现的预订有多好.
>将每个可用期保存为“事件”.如果它重复出现,请复制该事件.搜索免费插槽时,请搜索预订表以确保没有重叠预订.在这种情况下,搜索重复出现的插槽似乎有点尴尬.要查找明年9月5日可用的所有提供商,我们必须搜索所有匹配的“事件”,并找到所有具有52个匹配事件的提供商.
>将每个可用期保存为“事件”.如果它重复出现,请添加一个标志.当搜索免费插槽时,搜索预订表以确保没有重叠预订.它使搜索重复约会变得更容易.为了“黑掉”假设重复出现的插槽,我们可以插入假预订.

解决方法

1.创建一个事件表:

a)使用基本列eventdate,starttime,endtime以及事件的其他详细信息 – 这些是繁忙时间,因此您在日历上阻止

b)重复事件 – 添加列:
– isrecurring – 认为0
– recurrencetype(每日,每周,每月)
– recurevery(重复发生时的计数)
– 星期一,星期二,星期三,星期四,星期五,坐着,太阳 – 每周复发的日子
– 月和月 – 每月复发

2.在日历上创建定期事件时遇到了挑战:
– 如果你一次创建所有这些(比如说接下来的6个月),每当你编辑一个时,其他的都必须更新
– 如果您只在前一个事件通过时创建了一个事件,那么您需要复杂的逻辑来显示未来日期的日历

3.您还需要规则来处理是否允许事件相互重叠,使用什么资源,事件可以安排到多远

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐