Как исправить, что пользователь не должен иметь возможность забронировать время, которое прошло - PullRequest
0 голосов
/ 03 мая 2019

Я сейчас работаю над школьным проектом, и мы строим систему бронирования, которая отображает доступное время только на сегодняшний день. (Мы не используем календарь). Мой вопрос: как я могу отображать только доступные часы на сегодня, а не отображать прошедшие часы? Прямо сейчас код отображается все время с 8.00 до 16.00, даже если реальное время 12.00. Если часы равны 12, я хотел бы отображать только часы после 12. Я надеюсь, что вы можете мне помочь, потому что я не нашел решения, которое подходит мне.

Вот так выглядит код в представлении:

@{
    int open = 8;
    decimal inHours = Convert.ToDecimal(Model.service.Duration) / Convert.ToDecimal(60);
    int iterations = (int)Math.Floor(Convert.ToDecimal(open) / Convert.ToDecimal(inHours));
    DateTime startTime = DateTime.Today;
    startTime = startTime.AddHours(8);

    List<DateTime> dt = new List<DateTime>();
    for (int i = 0; i < iterations; i++) 
    {
        DateTime endTime = startTime;
        endTime = endTime.AddMinutes(Model.service.Duration);
        if (!Model.service.Bookings.Any(x => x.StartTime == startTime)) 
        {
            @Html.ActionLink(startTime.ToString("HH:mm") + "-" + endTime.ToString("HH:mm"),  
                "BookService", "Booking", new 
                    { 
                        inBookingSystemId = Model.bookingSystem.BookingSystemId, 
                        inServiceId = Model.service.ServiceId, 
                        inStartTime = startTime.ToString() 
                     }, new { @class = "btn btn-primary" })
        }
        startTime = endTime;
    }
}

1 Ответ

2 голосов
/ 03 мая 2019

Чтобы отобразить только дальнейшие часы дня, вы можете сделать что-то вроде этого:

List<DateTime> dt = new List<DateTime>();

int hoursToAdd = 1;
int hourNow = DateTime.Now.Hour;

for (int i = hourNow ; i <= 23; i++)
{
    dt.Add(DateTime.Now.AddHours(hoursToAdd));
    hoursToAdd++;
}

Это не самый лучший способ, возможно, есть более элегантный способ сделать это, но он будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...