保存约会时检查重复项

时间:2017-01-10 13:51:45

标签: c#

我想知道如何防止用户在已预订的同一时段内双重预约治疗师。

方案: 我有Amanda和Lisa。他们都希望在上午9点至上午10点预订洛林(治疗师)。 Amanda Books Lorraine首先在上午9点到10点。丽莎排在第二位,并在阿曼达的同一天上午9:30至上午10:30请求Lorraine。

现在我如何防止这种情况发生,因为Lorraine已经在那个时候预订了。我目前正在使用dateTimePicker

1 个答案:

答案 0 :(得分:1)

考虑到您拥有包含属性BookingStart的{​​{1}}个对象集合,您可以通过以下方式检测交叉点:

End

现在您可以使用LINQ检查是否已经预订:

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;
    }
}