I am developing a Booking system for the washing machine in my dorm. It is going to be an ASP.NET MVC application. I am having a class WashingTime who should be placed in a table so the users can click them and book a washing time.
The WashingTime class looks like this:
public class WashTime
{
    public int ID { get; set; }
    public DateTime Time { get; set; }
    public bool IsBooked { get; set; }
    public string Machine { get; set; }
    public int RoomNumber { get; set; }
}
I am using a MS SQL Database as the backend. I have got the time-table and booking system to work but I know my way of doing this is not the smartest so the view (time-table) takes quite a while to load. In the view I use a awful lot of Razor to check to see if the model-object is booked - is there a smarter way for doing this, I was thinking there must be a way of checking this with JavaScript. My code for the view is:
@for (int i = 6; i < 24; i++)
{
<tr>
<th>@i.ToString():00 - @(1 + i):00</th>
<td>
    <table class="col-xs-12">
        <div class="inner-table">
            <td>
                <div class="rid">
                    <div id="ID" style="display: none;" data-value="@Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Monday && d.Machine == "Left").ID"></div>
                    @if (Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Monday && d.Machine == "Left").IsBooked == true)
                    {
                        <div class="booked">
                            @Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Monday && d.Machine == "Left").RoomNumber
                        </div>
                    }
                    else
                    {
                        <div class="not-booked">
                            @Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Monday && d.Machine == "Left").Machine
                        </div>
                    }
                </div>
            </td>
            <td class="">
                <div class="rid">
                    <div id="ID" style="display: none;" data-value="@Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Monday && d.Machine == "Right").ID"></div>
                    @if (Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Monday && d.Machine == "Right").IsBooked == true)
                    {
                        <div class="booked">
                            @Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Monday && d.Machine == "Right").RoomNumber
                        </div>
                    }
                    else
                    {
                        <div class="not-booked">
                            @Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Monday && d.Machine == "Right").Machine
                        </div>
                    }
                </div>
            </td>
        </div>
    </table>
</td>
<td>
    <table class="no-padding col-xs-12">
        <div class="inner-table">
            <td>
                <div class="rid">
                    <div id="ID" style="display: none;" data-value="@Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Tuesday && d.Machine == "Left").ID"></div>
                    @if (Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Tuesday && d.Machine == "Left").IsBooked == true)
                    {
                        <div class="booked">
                            @Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Tuesday && d.Machine == "Left").RoomNumber
                        </div>
                    }
                    else
                    {
                        <div class="not-booked">
                            @Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Tuesday && d.Machine == "Left").Machine
                        </div>
                    }
                </div>
            </td>
            <td class="">
                <div class="rid">
                    <div id="ID" style="display: none;" data-value="@Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Tuesday && d.Machine == "Right").ID"></div>
                    @if (Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Tuesday && d.Machine == "Right").IsBooked == true)
                    {
                        <div class="booked">
                            @Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Tuesday && d.Machine == "Right").RoomNumber
                        </div>
                    }
                    else
                    {
                        <div class="not-booked">
                            @Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Tuesday && d.Machine == "Right").Machine
                        </div>
                    }
                </div>
            </td>
        </div>
    </table>
</td>
<td>
    <table class="no-padding col-xs-12">
        <div class="inner-table">
            <td>
                <div class="rid">
                    <div id="ID" style="display: none;" data-value="@Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Wednesday && d.Machine == "Left").ID"></div>
                    @if (Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Wednesday && d.Machine == "Left").IsBooked == true)
                    {
                        <div class="booked">
                            @Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Wednesday && d.Machine == "Left").RoomNumber
                        </div>
                    }
                    else
                    {
                        <div class="not-booked">
                            @Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Wednesday && d.Machine == "Left").Machine
                        </div>
                    }
                </div>
            </td>
            <td class="">
                <div class="rid">
                    <div id="ID" style="display: none;" data-value="@Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Wednesday && d.Machine == "Right").ID"></div>
                    @if (Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Wednesday && d.Machine == "Right").IsBooked == true)
                    {
                        <div class="booked">
                            @Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Wednesday && d.Machine == "Right").RoomNumber
                        </div>
                    }
                    else
                    {
                        <div class="not-booked">
                            @Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Wednesday && d.Machine == "Right").Machine
                        </div>
                    }
                </div>
            </td>
        </div>
    </table>
</td>
<td>
    <table class="no-padding col-xs-12">
        <div class="inner-table">
            <td>
                <div class="rid">
                    <div id="ID" style="display: none;" data-value="@Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Thursday && d.Machine == "Left").ID"></div>
                    @if (Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Thursday && d.Machine == "Left").IsBooked == true)
                    {
                        <div class="booked">
                            @Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Thursday && d.Machine == "Left").RoomNumber
                        </div>
                    }
                    else
                    {
                        <div class="not-booked">
                            @Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Thursday && d.Machine == "Left").Machine
                        </div>
                    }
                </div>
            </td>
            <td class="">
                <div class="rid">
                    <div id="ID" style="display: none;" data-value="@Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Thursday && d.Machine == "Right").ID"></div>
                    @if (Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Thursday && d.Machine == "Right").IsBooked == true)
                    {
                        <div class="booked">
                            @Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Thursday && d.Machine == "Right").RoomNumber
                        </div>
                    }
                    else
                    {
                        <div class="not-booked">
                            @Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Thursday && d.Machine == "Right").Machine
                        </div>
                    }
                </div>
            </td>
        </div>
    </table>
</td>
<td>
    <table class="no-padding col-xs-12">
        <div class="inner-table">
            <td>
                <div class="rid">
                    <div id="ID" style="display: none;" data-value="@Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Friday && d.Machine == "Left").ID"></div>
                    @if (Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Friday && d.Machine == "Left").IsBooked == true)
                    {
                        <div class="booked">
                            @Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Friday && d.Machine == "Left").RoomNumber
                        </div>
                    }
                    else
                    {
                        <div class="not-booked">
                            @Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Friday && d.Machine == "Left").Machine
                        </div>
                    }
                </div>
            </td>
            <td class="">
                <div class="rid">
                    <div id="ID" style="display: none;" data-value="@Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Friday && d.Machine == "Right").ID"></div>
                    @if (Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Friday && d.Machine == "Right").IsBooked == true)
                    {
                        <div class="booked">
                            @Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Friday && d.Machine == "Right").RoomNumber
                        </div>
                    }
                    else
                    {
                        <div class="not-booked">
                            @Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Friday && d.Machine == "Right").Machine
                        </div>
                    }
                </div>
            </td>
        </div>
    </table>
</td>
<td>
    <table class="no-padding col-xs-12">
        <div class="inner-table">
            <td>
                <div class="rid">
                    <div id="ID" style="display: none;" data-value="@Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Saturday && d.Machine == "Left").ID"></div>
                    @if (Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Saturday && d.Machine == "Left").IsBooked == true)
                    {
                        <div class="booked">
                            @Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Saturday && d.Machine == "Left").RoomNumber
                        </div>
                    }
                    else
                    {
                        <div class="not-booked">
                            @Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Saturday && d.Machine == "Left").Machine
                        </div>
                    }
                </div>
            </td>
            <td>
                <div class="rid">
                    <div id="ID" style="display: none;" data-value="@Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Saturday && d.Machine == "Right").ID"></div>
                    @if (Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Saturday && d.Machine == "Right").IsBooked == true)
                    {
                        <div class="booked">
                            @Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Saturday && d.Machine == "Right").RoomNumber
                        </div>
                    }
                    else
                    {
                        <div class="not-booked">
                            @Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Saturday && d.Machine == "Right").Machine
                        </div>
                    }
                </div>
            </td>
        </div>
    </table>
</td>
<td>
    <table class="no-padding col-xs-12">
        <div class="inner-table">
            <td>
                <div class="rid">
                    <div id="ID" style="display: none;" data-value="@Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Sunday && d.Machine == "Left").ID"></div>
                    @if (Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Sunday && d.Machine == "Left").IsBooked == true)
                    {
                        <div class="booked">
                            @Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Sunday && d.Machine == "Left").Machine
                        </div>
                    }
                    else
                    {
                        <div class="not-booked">
                            @Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Sunday && d.Machine == "Left").Machine
                        </div>
                    }
                </div>
            </td>
            <td>
                <div class="rid">
                    <div id="ID" style="display: none;" data-value="@Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Sunday && d.Machine == "Right").ID"></div>
                    @if (Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Sunday && d.Machine == "Right").IsBooked == true)
                    {
                        <div class="booked">
                            @Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Sunday && d.Machine == "Right").Machine
                        </div>
                    }
                    else
                    {
                        <div class="not-booked">
                            @Model.First(d => d.Time.Hour == i && d.Time.DayOfWeek == DayOfWeek.Sunday && d.Machine == "Right").Machine
                        </div>
                    }
                </div>
            </td>
        </div>
    </table>
</td>
</tr>
}
As you can see I am doing 252 checks with Razor and I thinking it must be slowing my page down a lot.
The controller calling the view looks like this:
public ActionResult Index()
    {
        List<WashTime> times = db.WashTimes.Where(x => x.Time.Year == DateTime.Today.Year).ToList();
        List<WashTime> thisWeek = times.Where(time => HelperFunctions.GetIso8601WeekOfYear(time.Time) == HelperFunctions.GetIso8601WeekOfYear(DateTime.Today)).ToList();
        if (thisWeek.Count<(126*2))
        {
            FillWeek();
            times = db.WashTimes.Where(x => x.Time.Year == DateTime.Today.Year).ToList();
            thisWeek = times.Where(time => HelperFunctions.GetIso8601WeekOfYear(time.Time) == HelperFunctions.GetIso8601WeekOfYear(DateTime.Today)).ToList();
        }
        ViewBag.Weeknumber = HelperFunctions.GetIso8601WeekOfYear(DateTime.Now);
        return View(thisWeek.ToList());
    }
I am looking forward to your comments.
 
     
    