2012-12-24 27 views
1

我嘗試創建一個iPhone應用程序,您可以在其中設置約會。一切都保存到MySQL數據庫,我目前通過JSON獲取數據到我的應用程序。這是一個工作流程創建約會和檢測與iPhone的碰撞

  1. 用戶1定義他工作的時間。例如。上午8點 - 下午4點。
  2. 用戶2想要與用戶1預約,例如, 8 am-9am。

當沒有當前的預約時,可以保存。如果已經有一個,例如早上8.15 - 上午8時45分,會顯示錯誤。

你能給我一個提示如何做到這一點?我正在考慮與NSDate「startDate」和「endDate」類,但我不知道如何檢測到這些約會衝突。

非常感謝,每一個提示都表示讚賞。

+0

你想檢查上午8點到上午9點之間是否有預約? –

回答

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鎖定讀取,以防止併發事務中的的問題。

+0

謝謝你的回答。你爲什麼使用user_id來加入表格? User1應該能夠與user2進行約會。我不知道它是否像這樣工作。你能幫我嗎? – doonot