public ActionResult Create(int resourceId) { var model = new ReservationViewModel { ActivityList = dc.Activities.OrderBy(x => x.Name).AsEnumerable().Select(x => new SelectListItem { Text = x.Name, Value = x.ActivityId.ToString() }) }; return this.View(model); }
public ActionResult Create(int resourceId, ReservationViewModel model) { if (this.ModelState.IsValid) { // Get ID of current user var userId = dc.Users.Single(x => x.UserName.Equals(this.User.Identity.Name)).UserId; // Check if there is some reservation for given date var taken = dc.Bookings.Any(x => x.ResourceId == resourceId && (x.DateBegin >= model.DateBegin && x.DateBegin < model.DateEnd) || (x.DateEnd > model.DateBegin && x.DateEnd <= model.DateEnd) || (x.DateBegin <= model.DateBegin && x.DateEnd >= model.DateEnd)); if (!taken) { var newBooking = new Booking { DateBegin = model.DateBegin, DateEnd = model.DateEnd, ResourceId = resourceId, ActivityId = model.ActivityId, Notes = model.Notes, UserId = userId }; dc.Bookings.Add(newBooking); dc.SaveChanges(); // Send notification if (RuntimeOptions.Current.UseMailing) { var accountUri = new UriBuilder(this.Request.Url) { Path = this.Url.Action("Index", "Account"), Query = "", Fragment = "" }; var recipients = from u in dc.Users where u.UserId != userId && u.IsApproved && u.EmailBookings select u.Email; var resourceName = dc.Resources.Single(x => x.ResourceId == resourceId).Name; Mailer.SendMail(recipients, Properties.Resources.BookingCreateSubject, Properties.Resources.BookingCreateBody, this.User.Identity.Name, // 0 resourceName, // 1 newBooking.DateString, // 2 accountUri); // 3 } return this.RedirectToAction("Index", new { resourceId = resourceId }); } ModelState.AddModelError(string.Empty, "Ve vybraném časovém úseku již je jiná rezervace"); } model.ActivityList = dc.Activities.OrderBy(x => x.Name).AsEnumerable().Select(x => new SelectListItem { Text = x.Name, Value = x.ActivityId.ToString() }); return this.View(model); }