创建约会&检测与iPhone的冲突

时间:2012-12-24 09:57:36

标签: iphone mysql ios appointment

我尝试为iPhone创建一个可以设置约会的应用程序。一切都保存到MySQL数据库中,我目前通过JSON将数据导入我的应用程序。这是一个工作流程

  1. User1定义他何时工作。例如。上午8点 - 下午4点。
  2. User2希望与user1进行约会,例如8 am-9am。
  3. 当没有现有的约会时,可以保存。如果已经存在,例如上午8点15分 - 上午8点45分,将显示错误。

    你能否告诉我如何做到这一点?我正在考虑使用NSDate“startDate”和“endDate”的课程,但我不确定如何检测那些约会碰撞。

    非常感谢,每个提示都很受欢迎。

1 个答案:

答案 0 :(得分:0)

如果符合以下条件,则约会有效:

  • 约会在用户的工作时间内;以及

  • 它不会与现有的约会冲突,这可能以三种可能的方式发生:

    • 在新任命期间开始冲突任命;和/或

    • 冲突的约会在新任命期间结束;或

    • 冲突约会在新约会之前和之后开始。

您可以在纯SQL中使用以下内容进行查询:

SELECT EXISTS (
  SELECT *
  FROM   appointments a JOIN workhours h USING (user_id)
  WHERE  user_id = 1
     AND h.start <= '08:00:00' AND h.end >= '09:00:00'
     AND (
               a.start BETWEEN '08:00:00'  AND  '09:00:00'
           OR  a.end   BETWEEN '08:00:00'  AND  '09:00:00'
           OR (a.start < '08:00:00' AND a.end > '09:00:00')
         )
  LIMIT  1
)

请注意在事务中使用锁定读取执行此SELECT以防止并发问题。