2017-01-10 11 views
-2

すでに予約されているのと同じタイムスロットでセラピストをダブル予約しないようにする方法を知りたいと思います。予約を保存する際に重複を確認してください

シナリオ: 私はアマンダとリサを持っています。彼らは午前9時から午前10時までロレーヌ(セラピスト)を予約したいと思っています。 Amanda Books Lorraineは、午前9時から午前10時までです。リサは2番目に来て、アランダと同じ日に午前9時30分から午前10時30分までロレーヌにリクエストします。

ロレーヌはすでにその時間に予約されているので、どうしたらいいのですか?私は現在、あなたは、このように交差点を検出することができますEnd性質Startを持っているとBookingオブジェクトのコレクション持って考えると私の時間

+3

実際に何かをプログラミングしてコードを投稿する方法は?あなたが試したことと達成したいことのコードを投稿してください。 – NicoRiff

+0

dbCommand =新しいSqlCommand( "Select Time、予定からの日付WHERE TherapistName = '" + cmbEmpName.Text + "'"、dbConn); dbConn.Open(); dbAdapter =新しいSqlDataAdapter(dbCommand); dt = new DataSet(); dbAdapter.Fill(dt、 "Appointments"); DataTable dtExists = dt.Tables ["予定"]; dbConn.Close(); – Anothando

+0

コードを編集してコードを貼り付け、フォーマットしてください。 – NicoRiff

答えて

1

のためのDateTimePickerを使用しています:

public class Booking 
{ 
    public DateTime AppointmentStart { get; set; } 
    public DateTime AppointmentEnd { get; set; } 

    public bool IntersectsWith(Booking otherAppointment) 
    { 
     // between 
     bool case1 = this.AppointmentStart >= otherAppointment.AppointmentStart && this.AppointmentEnd <= otherAppointment.AppointmentEnd; 
     if (case1) return true; 
     // befor-eafter-start 
     bool case2 = this.AppointmentStart <= otherAppointment.AppointmentStart && this.AppointmentEnd >= otherAppointment.AppointmentStart; 
     if (case2) return true; 
     // before-after-end 
     bool case3 = this.AppointmentStart >= otherAppointment.AppointmentStart && this.AppointmentEnd >= otherAppointment.AppointmentEnd; 
     return case3; 
    } 
} 

は、今あなたがいるかどうかを確認するためにLINQを使用することができますがすでに予約されています:

bool alreadyBooked = bookings.Any(booking.IntersectsWith); 
+0

bool alreadyBooked =予約.Any(booking.IntersectsWith); 「Any」は何を表していますか? – Anothando

+0

ありがとう私はそれを考え出した。 – Anothando

関連する問題