// GET: User/Delete/5
 public ActionResult Delete(int? id)
 {
     if (id == null)
     {
         return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
     }
     Reservation reservation = db.Reservations.Find(id);
     if (reservation == null)
     {
         return HttpNotFound();
     }
     if (reservation.UserID != User.Identity.GetUserId()) //rezervace neni nase
     {
         return RedirectToAction("Index");
     }
     else
     {
         ReservationContent firstHour = reservation.ReservationContents.OrderBy(i => i.ReservationHour).First();
         DateTime firstHourTime = DateTime.MinValue;
         if (firstHour.ReservationHour < 3) //9 - 12
             firstHourTime = new DateTime(reservation.ReservationDay.Year, reservation.ReservationDay.Month, reservation.ReservationDay.Day, firstHour.ReservationHour + 9, 0, 0);
         else if (firstHour.ReservationHour >= 3 && firstHour.ReservationHour <= 7)
             firstHourTime = new DateTime(reservation.ReservationDay.Year, reservation.ReservationDay.Month, reservation.ReservationDay.Day, firstHour.ReservationHour + 10, 0, 0);
         else
             firstHourTime = new DateTime(reservation.ReservationDay.Year, reservation.ReservationDay.Month, reservation.ReservationDay.Day, 21, 0, 0);
         if (DateTime.Now.AddHours(2) < firstHourTime) //pokud odted za 2 hodiny bude jeste drive nez zacina prvni rezervace (tedy pokud je jeste vic jak 2 hodiny do zacatku prvni rezervace)
         {
             UserReservationDetail model = new UserReservationDetail();
             model.ReservationDate = reservation.ReservationDay;
             var result = reservation.ReservationContents
                     .Select(x => new { DeviceID = x.Device.DeviceID, Hour = x.ReservationHour })
                     .AsEnumerable()
                     .Select(x => new KeyValuePair<int, int>(x.DeviceID, x.Hour))
                     .ToList();
             model.Reservations = new HashSet<KeyValuePair<int, int>>(result);
             model.Price = reservation.Price;
             model.ReservationCreateDate = reservation.ReservationCreateDate;
             model.Devices = db.Devices.OrderBy(x => x.Type).ThenBy(x => x.DeviceID).ToArray();
             return View(model);
         }
         else //uz je po limitu, bylo by vhodne zobrazit nejakou chybovou hlasku
         {
             TempData["Success"] = false;
             TempData["Message"] = "Smazání už není dostupné";
             return RedirectToAction("Index");
         }
     }
 }
 // GET: User/Detail/5
 public ActionResult Detail(int? id)
 {
     if (id == null)
     {
         return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
     }
     Reservation reservation = db.Reservations.Find(id);
     if (reservation == null)
     {
         return HttpNotFound();
     }
     if(reservation.UserID != User.Identity.GetUserId()) //rezervace neni nase
     {
         return RedirectToAction("Index");
     }
     else
     {
         UserReservationDetail model = new UserReservationDetail();
         model.ReservationDate = reservation.ReservationDay;
         var result = reservation.ReservationContents
                 .Select(x => new { DeviceID = x.Device.DeviceID, Hour = x.ReservationHour })
                 .AsEnumerable()
                 .Select(x => new KeyValuePair<int, int>(x.DeviceID, x.Hour))
                 .ToList();
         model.Reservations = new HashSet<KeyValuePair<int, int>>(result);
         model.Price = reservation.Price;
         model.ReservationCreateDate = reservation.ReservationCreateDate;
         model.Devices = db.Devices.OrderBy(x => x.Type).ThenBy(x => x.DeviceID).ToArray();
         return View(model);
     }
 }