Ejemplo n.º 1
0
		public async Task<IActionResult> CreateReservation(ReserveViewModel rvm)
		{
			//Third the reservation is created.
			if (ModelState.IsValid)
			{
				var teeTime = Mapper.Map<TeeTime>(rvm);
				teeTime.GolfCourse = _gcmRepo.GetGolfCourse();
				teeTime.Member = await _gcmRepo.GetLoggedInMemberAsync(User);
				teeTime.Start = new DateTime(
					rvm.SelectedDate.Year,
					rvm.SelectedDate.Month,
					rvm.SelectedDate.Day,
					rvm.StartTime.Hour,
					rvm.StartTime.Minute,
					rvm.StartTime.Second);

				var success = _gcmRepo.ReserveTeeTime(teeTime);

				if (success)
				{
					//show success page
					var rcvm = new ReservationCreatedViewModel();
					rcvm.Reservations = new List<DateTime>()
					{
						new DateTime(teeTime.Start.Ticks)
					};

					return View(rcvm);
				}

				ModelState.AddModelError("StartTime", "Start Time already reserved.");
				return RedirectToAction("Reserve", new SelectDateViewModel(rvm.SelectedDate));
			}

			//do something..?
			return RedirectToAction("Reserve", new SelectDateViewModel(rvm.SelectedDate));
		}
Ejemplo n.º 2
0
		public async Task<IActionResult> CreateStandingReservation(StandingReservationViewModel srvm)
		{
			var rcvm = new ReservationCreatedViewModel();

			if (srvm.StartDate < DateTime.Now)
			{
				rcvm.FailureReason = "Start Date cannot be in the past.";
				return View(rcvm);
			}

			if (srvm.EndDate < DateTime.Now)
			{
				rcvm.FailureReason = "End Date cannot be in the past.";
				return View(rcvm);
			}

			if (srvm.EndDate <= srvm.StartDate)
			{
				rcvm.FailureReason = "End Date must be after Start Date.";
				return View(rcvm);
			}

			for (var current = srvm.StartDate; current <= srvm.EndDate; current += TimeSpan.FromDays(7))
			{
				var teeTime = Mapper.Map<TeeTime>(srvm);
				teeTime.GolfCourse = _gcmRepo.GetGolfCourse();
				teeTime.Member = await _gcmRepo.GetLoggedInMemberAsync(User);
				teeTime.Start = new DateTime(
					current.Year,
					current.Month,
					current.Day,
					srvm.StartTime.Hour,
					srvm.StartTime.Minute,
					srvm.StartTime.Second);

				var success = _gcmRepo.ReserveTeeTime(teeTime);

				if (success)
				{
					rcvm.Reservations.Add(teeTime.Start);
				}
				else
				{
					rcvm.Failures.Add(teeTime.Start);
				}
			}

			return View(rcvm);
		}