2010-05-07 37 views
1

我正在寻找最优雅和最安全的方法来执行以下操作。我有日历和用户组。用户生成/用户特定功能

用户可以将事件添加到日历上的特定日子,并指定每个事件持续多长时间。

我已经从用户数请求添加为他们定义特定长度的事件包括休息了一定的时间,或者需要特定的时间量事件之间留的能力。

例如,如果事件大于2小时,则包括20分钟的休息时间。对于每个事件,需要在下一个事件开始前30分钟。

已要求的> 2小时事件以包括20分钟断裂相同的基团,也可以要求一个事件>3小时包括一个30分钟的休息。

最后,用户试图得到的是一个经过的时间,不包括为他们计算的休息时间。目前我为他们提供了一段总时间,但他们正在寻找一段跑步时间。

但是,这些请求中的每一个对于每个组都是不同的。在一个2小时的活动期间,一个小组可能需要30分钟的休息时间,而另一个小组可能每个3小时的活动只需要10分钟。

我有点想我可以将函数写入每个组的php文件,然后包含该文件并通过php进行计算,然后向用户返回一个计算出的总数,但有关这一点并不对跟我。

另一种方法是将groups函数输出到javascript,并让它运行在客户端,因为我已经返回了事件的持续时间,但是当用户属于多个不同规则的组的一部分时,这似乎可能变得相当混乱。

我目前在数据库中存储起始和结束时间,但没有“持续时间”,我不认为我应该将计算的总计存储在数据库中,因为如果一个组决定更改计算,我需要在整个数据库中进行更改。

是否有这样做的更好的办法? 我只是将变量存储在mysql中,但我没有看到我怎么可以然后说根据这些变量来计算mysql。

我真的迷失在这里。有什么建议么?我希望有人做了类似的事情,可以提供一些有关最佳方向的见解。

如果有帮助,我的表包含

 
eventid, user, group, startDate, startTime, endDate, endTime, type 

为此我返回给用户该事件的JSON是

 
{"eventid":"'.$eventId.'", "user":"'.$userId.'","group":"'.$groupId.'","type":"'.$type.'","startDate":".$startDate.'","startTime":"'.$startTime.'","endDate":"'.$endDate.'","endTime":"'.$endTime.'","durationLength":"'.$duration.'", "durationHrs":"'.$durationHrs.'"} 

其中例如,持续时间长度为2.5和持续时间小时是2 :30。

回答

1

仅存储的开始时间和结束时间的情况下,并命名为notes BLOB字段。

我对这些各种各样的需求的功能蔓延,直到遭遇的代码和数据建模成为什么,但例外情况下,一个不可维护的集合几个系统的工作。向代码添加新的排列是很多工作,通常这些情况只能使用一次。

如果您需要强制执行注释字段中描述的规则和条件,那么聘用事件协调员实际上更具成本效益,而不是试图使软件中的所有内容自动化。面向细节的人类可以更快地适应异常情况,而不是通过调整代码来处理异常情况。

+0

谢谢比尔,这是我最初的过程,但用户坚持认为计算时间反映了他们制定的规则。我想如果他们知道一个2小时的事件包括20分钟的休息时间,这就足够了,但是因为他们总共获得了一天中的总计时间,他们需要知道发生了多少休息时间。 我完全同意你的看法,并且努力保持它尽可能简单,但是这样不断突然冒出来,需要一个解决方案。 – pedalpete 2010-05-07 17:19:14

+0

给他们一个估算你需要花费的时间和工资,以软件实现这个系统,并向他们展示用户界面的样子。我敢打赌,他们会改变主意。 – 2010-05-07 17:22:30