Exemple #1
0
 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);
 }
Exemple #2
0
        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);
        }