我想知道如何防止用户在已预订的同一时段内双重预约治疗师。
方案: 我有Amanda和Lisa。他们都希望在上午9点至上午10点预订洛林(治疗师)。 Amanda Books Lorraine首先在上午9点到10点。丽莎排在第二位,并在阿曼达的同一天上午9:30至上午10:30请求Lorraine。
现在我如何防止这种情况发生,因为Lorraine已经在那个时候预订了。我目前正在使用dateTimePicker
答案 0 :(得分:1)
考虑到您拥有包含属性Booking
和Start
的{{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;
}
}