public void CancelTeeTimeHandler(string teeTime, string userId, ISession session, string sessionKey, UserManager <ApplicationUser> userManager, ClaimsPrincipal user) { bool confirmation = false; var allTeeTimes = session.Get <IEnumerable <TeeTime> >(sessionKey); if (long.TryParse(teeTime, out long teeTimeTicks)) { TeeTime teeTimeToCancel = allTeeTimes?.FirstOrDefault(t => t.Datetime.Ticks == teeTimeTicks); Domain.CBS requestDirector = new Domain.CBS(userId, Startup.ConnectionString); if (teeTimeToCancel != null) { if ((user.IsInRole("Golfer") && teeTimeToCancel.Golfers.Exists(q => q.UserId == userManager.GetUserId(user))) || teeTimeToCancel.Golfers.Exists(q => q.UserId == userId)) { confirmation = requestDirector.CancelTeeTime(new DateTime(teeTimeTicks)); } } if (confirmation) { session.SetString("success", $"{(teeTimeToCancel.ReservedBy == userId ? "Tee Time cancelled" : "Golfer removed ")} successfully"); } } else { session.SetString("danger", "Tee time could not be canceled"); } }
public IActionResult OnPostGetMembershipApplications([FromForm] string startDate, [FromForm] string endDate) { Domain.CBS requestDirector = new Domain.CBS(Startup.ConnectionString); if (!DateTime.TryParse(startDate, out DateTime startDateDate) || !DateTime.TryParse(endDate, out DateTime endDateDate)) { MembershipApplications = HttpContext.Session.Get <List <MembershipApplication> >(nameof(MembershipApplications)); } else { if (startDateDate.Ticks == 0 || endDateDate.Ticks == 0) { if (startDateDate.Ticks == 0) { ModelState.AddModelError(string.Empty, "Please select a valid start date"); } if (EndDate.Ticks == 0) { ModelState.AddModelError(string.Empty, "Please select a valid start date"); } return(Page()); } StartDate = startDateDate; EndDate = endDateDate; MembershipApplications = requestDirector.GetMembershipApplications(StartDate, EndDate); } HttpContext.Session.Put(nameof(MembershipApplications), MembershipApplications); TempData.Keep(); return(Partial("_MembershipApplicationsPartial", MembershipApplications)); }
public void OnPostView(string startDate, string endDate) { if (DateTime.TryParse(startDate, out DateTime sd) && DateTime.TryParse(endDate, out DateTime ed)) { StartDate = sd; if ((DateTime.Today.AddDays(8) - StartDate).Days > 0) { ErrorMessages.Add($"Start Date must be beyond { DateTime.Today.AddDays(7).ToLongDateString()}"); } if (ed.Ticks > 0) { EndDate = ed; if (StartDate.DayOfWeek != EndDate.DayOfWeek) { ErrorMessages.Add($"Day of week for Start Date ({StartDate.DayOfWeek.ToString()}) does not match day of week for End Date({EndDate.DayOfWeek.ToString()})"); } } else { ErrorMessages.Add("Please select an End Date"); } if (!(ErrorMessages?.Any() ?? false)) { TempData[nameof(StartDate)] = StartDate; TempData[nameof(EndDate)] = EndDate; Domain.CBS requestDirector = new Domain.CBS(userManager.FindByNameAsync(User.Identity.Name).GetAwaiter().GetResult().Id, Startup.ConnectionString); STTRequests = requestDirector.ViewStandingTeeTimeRequests(StartDate, EndDate); TempData.Put("PermissableTimes", from time in STTRequests where time.Members is null select time.RequestedTime.ToString("HH:mm")); return; } } TempData.Put(nameof(ErrorMessages), ErrorMessages); }
private void GetReservedTeeTimes(string userId) { Domain.CBS requestDirector = new Domain.CBS(userId ?? "", Startup.ConnectionString); reservedTeeTimes = requestDirector.FindReservedTeeTimes(); HttpContext.Session.Put(nameof(reservedTeeTimes), reservedTeeTimes); }
public IActionResult OnGet() { Domain.CBS requestDirector = new Domain.CBS(Startup.ConnectionString); if (requestDirector.FindStandingTeeTimeRequest(userManager.GetUserId(User)) is null) { return(NotFound()); } return(Page()); }
public void OnGet() { StartDate = DateTime.Today.AddDays(-30); EndDate = DateTime.Today; Domain.CBS requestDirector = new Domain.CBS(Startup.ConnectionString); MembershipApplications = requestDirector.GetMembershipApplications(StartDate, EndDate); HttpContext.Session.Put(nameof(MembershipApplications), MembershipApplications); TempData.Keep(); }
public void UpdateTeeTimeHelper(string[] golfers, bool checkedIn, TeeTime teeTimeToUpdate, UserManager <ApplicationUser> userManager, string phone, int numberOfCarts, out bool confirmation, out string message) { Domain.CBS requestDirector = new Domain.CBS(Startup.ConnectionString); List <string> updatedGolfers = golfers.Length > 4 - teeTimeToUpdate.Golfers.Count ? golfers.ToList() .GetRange(0, 4 - teeTimeToUpdate.Golfers.Count) : golfers.ToList(); updatedGolfers = (from user in userManager.Users where updatedGolfers.Contains(user.MemberNumber) select user.Id).ToList(); confirmation = requestDirector.UpdateTeeTime(teeTimeToUpdate.Datetime, phone, numberOfCarts, updatedGolfers, checkedIn, out message); }
public IActionResult OnPostSelect(string selectedTime) { Domain.CBS requestDirector = new Domain.CBS(Startup.ConnectionString); if (requestDirector.FindStandingTeeTimeRequest(userManager.GetUserId(User)) != null) { return(Redirect("/MaxStandingTeeTimeRequest")); } Confirmation = false; TempData["selectedTime"] = selectedTime; return(Redirect($"/StandingTeeTimeRequests?selectedTime={System.Web.HttpUtility.UrlEncode(selectedTime)}")); }
public IActionResult OnPostView() { foreach (var item in ModelState) { if (item.Key == nameof(Date) && item.Value.ValidationState == Microsoft.AspNetCore.Mvc.ModelBinding.ModelValidationState.Invalid) { ErrorMessages.Add(item.Value.Errors.FirstOrDefault().ErrorMessage); TempData.Put(nameof(ErrorMessages), ErrorMessages); return(Redirect(Request.Headers["Referer"].ToString())); } } Confirmation = false; Domain.CBS requestDirector = null; if (!User.IsInRole("Golfer")) { requestDirector = new Domain.CBS(Startup.ConnectionString); } else { requestDirector = new Domain.CBS(GetUserId(), Startup.ConnectionString); } DailyTeeSheet = requestDirector.ViewDailyTeeSheet(Date); if (User.IsInRole("Golfer")) { DailyTeeSheet.TeeTimes = requestDirector.FilterDailyTeeSheet(Date, DailyTeeSheet.TeeTimes).ToList(); } HttpContext.Session.Put("AllTeeTimes", DailyTeeSheet.TeeTimes); IEnumerable <TeeTime> reservedTeeTimes = null; if (User.IsInRole("Golfer")) { reservedTeeTimes = requestDirector.FindReservedTeeTimes().Where(t => (t.Datetime.Date - DateTime.Today).TotalDays > 0); } else { reservedTeeTimes = from teeTime in DailyTeeSheet.TeeTimes where !(teeTime.Golfers is null) && (teeTime.Datetime - DateTime.Now).TotalDays > 0 select teeTime; } HttpContext.Session.Put(nameof(reservedTeeTimes), reservedTeeTimes); TempData.Put("PermissableTimes", (from teeTime in DailyTeeSheet.TeeTimes where (teeTime.Golfers is null || teeTime.Golfers.Count != 4) && teeTime.Reservable && IsValidDate(teeTime.Datetime) select teeTime.Datetime).Except(from time in reservedTeeTimes select time.Datetime)); return(Page()); }
public IActionResult OnPost() { if (!ModelState.IsValid) { return(Page()); } Domain.CBS requestDirector = new Domain.CBS(Startup.ConnectionString); #region CreateMembershipApplication MembershipApplication membershipApplication = new MembershipApplication(Startup.ConnectionString); membershipApplication.ProspectiveMemberContactInfo = new ContactInformation() { LastName = LastName, FirstName = FirstName, Address = ApplicantAddress, City = ApplicantCity, PostalCode = ApplicantPostalCode, PrimaryPhone = ApplicantPhone, AlternatePhone = ApplicantAlternatePhone, Email = Email }; membershipApplication.DateOfBirth = DateOfBirth; membershipApplication.MembershipType = MembershipType; membershipApplication.Occupation = Occupation; membershipApplication.EmploymentDetails = new ContactInformation() { CompanyName = CompanyName, Address = EmployerAddress, City = EmployerCity, PostalCode = EmployerPostalCode, PrimaryPhone = EmployerPhone }; membershipApplication.ProspectiveMemberCertification = ProspectiveMemberCertification; membershipApplication.Shareholder1 = Shareholder1; membershipApplication.Shareholder1SigningDate = Shareholder1SigningDate; membershipApplication.Shareholder2 = Shareholder2; membershipApplication.Shareholder2SigningDate = Shareholder2SigningDate; membershipApplication.ShareholderCertification = ShareholderCertification; #endregion if (requestDirector.RecordMembershipApplication(membershipApplication)) { HttpContext.Session.SetString("success", "Membership application recorded successfully"); return(RedirectToPage()); } ModelState.AddModelError(string.Empty, "Membership application could not be recorded"); return(Page()); }
public void CheckInHelper(string teeTime, string userId, ISession session) { if (long.TryParse(teeTime, out long teeTimeTicks)) { Domain.CBS requestDirector = new Domain.CBS(userId, Startup.ConnectionString); if (requestDirector.UpdateTeeTime(new DateTime(teeTimeTicks), null, null, new List <string>(), true, out string message)) { session.SetString("success", "Tee time checked in successfully"); } } else { session.SetString("danger", "Failed to check in tee time"); } }
public IActionResult OnPostCancel() { FoundStandingTeeTime = HttpContext.Session.Get <StandingTeeTime>(nameof(FoundStandingTeeTime)); Domain.CBS requestDirector = new Domain.CBS(Startup.ConnectionString); if (requestDirector.CancelStandingTeeTime(FoundStandingTeeTime.StartDate, FoundStandingTeeTime.EndDate, FoundStandingTeeTime.RequestedTime)) { HttpContext.Session.SetString("success", "Standing tee time request cancelled succcessfully"); } else { HttpContext.Session.SetString("danger", "Standing tee time request could not be cancelled"); } return(LocalRedirect("/")); }
public void OnGet() { Domain.CBS requestDirector = new Domain.CBS(Startup.ConnectionString); if (User.IsInRole("Golfer")) { FoundHandicapReport = requestDirector.GetHandicapReport(User.Identity.Name, ReportDate); } var allHandicapReports = requestDirector.GetAllHandicapReports(); if (allHandicapReports != null) { HttpContext.Session.Put("AllHandicapReports", from report in allHandicapReports select new { report.MemberName, report.Email, report.HandicapFactor, report.Average, report.BestOfTenAverage, report.LastUpdated }); FilteredHandicapReports = HttpContext.Session.Get <IEnumerable <dynamic> >("AllHandicapReports").Where(r => r["LastUpdated"].Value.Month == ReportDate.Month && r["LastUpdated"].Value.Year == ReportDate.Year && r["Email"].Value != User.Identity.Name); } }
public IActionResult OnPost(string email, DateTime lastUpdated) { Domain.CBS requestDirector = new Domain.CBS(Startup.ConnectionString); FoundHandicapReport = requestDirector.GetHandicapReport(email, lastUpdated); if (FoundHandicapReport is null) { return(NotFound()); } BestOfLabel = "Best of " + (new int[] { 5, 6 }.Contains(FoundHandicapReport.PreviousRounds.Length) ? "1" : new int[] { 7, 8 }.Contains(FoundHandicapReport.PreviousRounds.Length) ? "2" : new int[] { 9, 10 }.Contains(FoundHandicapReport.PreviousRounds.Length) ? "3" : new int[] { 11, 12 }.Contains(FoundHandicapReport.PreviousRounds.Length) ? "4" : new int[] { 13, 14 }.Contains(FoundHandicapReport.PreviousRounds.Length) ? "5" : new int[] { 15, 16 }.Contains(FoundHandicapReport.PreviousRounds.Length) ? "6" : FoundHandicapReport.PreviousRounds.Length == 17 ? "7" : FoundHandicapReport.PreviousRounds.Length == 18 ? "8" : FoundHandicapReport.PreviousRounds.Length == 19 ? "9" : "10") + " rounds:"; return(Page()); }
public IActionResult OnPost() { if (!ModelState.IsValid) { HoleByHoleScores = new int?[18]; return(Page()); } if (NumberOfHoles != 18 && NumberOfHoles != 9) { ModelState.AddModelError(string.Empty, "Holes per round must be 9 or 18"); return(Page()); } ScoreCard providedScores = new ScoreCard(Course, CourseRating, CourseSlope, Date, User.Identity.Name, HoleByHoleScores.Where(s => !(s is null)).Cast <int>().ToList()); if (providedScores.HoleByHoleScore.Count != NumberOfHoles) { ModelState.AddModelError(string.Empty, $"Exactly {NumberOfHoles} scores must be recored for a {NumberOfHoles} round of golf. {providedScores.HoleByHoleScore.Count} scores were provided. " + $"If a hole is not played, record par plus any handicap to which you are entitled for the remaining holes."); return(Page()); } bool confirmation = new Domain.CBS(Startup.ConnectionString).RecordScores(providedScores, out string message); if (confirmation) { HttpContext.Session.SetString("success", $"Scores recorded successfully{(string.IsNullOrWhiteSpace(message) ? ". Handicap report updated successfully" : "")}"); if (!string.IsNullOrWhiteSpace(message)) { HttpContext.Session.SetString("warning", message); } return(RedirectToPage()); } ModelState.AddModelError(string.Empty, message.Contains("PRIMARY KEY") ? $"Cannot add duplicate socrecard entry. A scorecard already exists on {Date.ToString("dd-MMM-yyyy")}" : message); return(Page()); }
public PartialViewResult OnPostFilter([FromForm] int?applicationStatus) { MembershipApplications = new Domain.CBS(Startup.ConnectionString).GetMembershipApplications(StartDate, EndDate); TempData.Keep(); if (applicationStatus is null) { return(Partial("_MembershipApplicationsPartial", MembershipApplications)); } try { (from int enumValue in Enum.GetValues(typeof(TechnicalServices.ApplicationStatus)) where enumValue == applicationStatus select enumValue).First(); } catch (InvalidOperationException) { return(Partial("_MembershipApplicationsPartial", MembershipApplications)); } MembershipApplications = HttpContext.Session.Get <List <MembershipApplication> >(nameof(MembershipApplications)); MembershipApplications = new Domain.CBS(Startup.ConnectionString) .FilterMembershipApplications(MembershipApplications, (TechnicalServices.ApplicationStatus)applicationStatus); return(Partial("_MembershipApplicationsPartial", MembershipApplications)); }
public IActionResult OnPostReserve(string[] golfers) { if (!ModelState.IsValid) { foreach (var e in from err in ModelState.Values where err.Errors.Count > 0 select err) { ErrorMessages.Add(e.Errors.FirstOrDefault()?.ErrorMessage); } TempData.Put(nameof(ErrorMessages), ErrorMessages); return(Redirect(Request.Headers["Referer"].ToString())); } Confirmation = false; Domain.CBS requestDirector = null; string userId = ""; if (User.IsInRole("Golfer")) { userId = GetUserId(); } else { userId = GetUserId(golfers.FirstOrDefault()); if (userId is null) { ErrorMessages.Add($"Supplied member Number {golfers.FirstOrDefault()} does not exist"); Confirmation = false; TempData.Put(nameof(ErrorMessages), ErrorMessages); return(Redirect(Request.Headers["Referer"].ToString())); } requestDirector = new Domain.CBS(userId, Startup.ConnectionString); var filteredTeeTimes = requestDirector.FilterDailyTeeSheet((DateTime)TempData.Peek(nameof(Date)), HttpContext.Session.Get <IEnumerable <TeeTime> >("AllTeeTimes")); if (!filteredTeeTimes.FirstOrDefault(t => t.Datetime == (DateTime)TempData.Peek(nameof(Date)))?.Reservable ?? false) { ErrorMessages.Add($"Cannot reserve tee time for member {golfers.FirstOrDefault()} due to membership level conflict."); Confirmation = false; TempData.Put(nameof(ErrorMessages), ErrorMessages); return(Redirect(Request.Headers["Referer"].ToString())); } } requestDirector = new Domain.CBS(userId, Startup.ConnectionString); //Gather the names, UserId's and member number together. Need to see of the userId was not found, indicating an invalid entry var golfersToAdd = from suppliedMember in golfers join user in UserManager.Users on suppliedMember equals user.MemberNumber into foundMembers from subMember in foundMembers.DefaultIfEmpty() where subMember?.Id != userId select(subMember?.MemberName, UserId : subMember?.Id, SuppliedNumber : suppliedMember); //Check for invalid members if (golfersToAdd.Any(g => g.UserId is null)) { ErrorMessages.Add("One or more supplied members do not exist"); Confirmation = false; TempData.Put(nameof(ErrorMessages), ErrorMessages); return(Redirect(Request.Headers["Referer"].ToString())); } //Ensure that signed in user is added to this tee time var teeTimeOwner = UserManager.FindByIdAsync(userId).GetAwaiter().GetResult(); golfersToAdd = golfersToAdd.Append((teeTimeOwner.MemberName, teeTimeOwner.Id, teeTimeOwner.MemberNumber)); if (!requestDirector.ReserveTeeTime(new TeeTime() { Golfers = (from golfer in golfersToAdd select(golfer.MemberName, golfer.UserId ?? golfer.SuppliedNumber)).ToList(), Datetime = (DateTime)TempData.Peek(nameof(Date)), NumberOfCarts = NumberOfCarts, Phone = Phone, ReservedBy = userId }, out string error))
public void OnGet() { Domain.CBS requestDirector = new Domain.CBS(Startup.ConnectionString); FoundStandingTeeTime = requestDirector.FindStandingTeeTimeRequest(userManager.GetUserId(User)); HttpContext.Session.Put(nameof(FoundStandingTeeTime), FoundStandingTeeTime); }
public IActionResult OnPostSubmit() { Domain.CBS requestDirector = new Domain.CBS(Startup.ConnectionString); if (requestDirector.FindStandingTeeTimeRequest(userManager.GetUserId(User)) != null) { return(Redirect("/MaxStandingTeeTimeRequest")); } ErrorMessages.Clear(); bool isError = false; var errors = from error in ModelState where (error.Key == nameof(SuppliedMemberNumbers) || error.Key == nameof(StartDate) || error.Key == nameof(EndDate)) && error.Value.ValidationState == Microsoft.AspNetCore.Mvc.ModelBinding.ModelValidationState.Invalid && error.Value.Errors.Any() select error.Value.Errors; if (errors.Any()) { ErrorMessages.AddRange(from errorMessage in errors select errorMessage into messages from m in messages select m.ErrorMessage); isError = true; } var signedInMember = userManager.FindByNameAsync(User.Identity.Name).GetAwaiter().GetResult(); requestDirector = new Domain.CBS(signedInMember.Id, Startup.ConnectionString); StartDate = (DateTime)TempData.Peek(nameof(StartDate)); EndDate = (DateTime)TempData.Peek(nameof(EndDate)); StandingTeeTime requestedStandingTeeTime = new StandingTeeTime() { StartDate = StartDate, EndDate = EndDate, RequestedTime = DateTime.Parse(TempData.Peek("selectedTime").ToString()) }; SuppliedMemberNumbers = SuppliedMemberNumbers.Where(s => !string.IsNullOrEmpty(s)).ToArray(); for (int i = 0; i < SuppliedMemberNumbers.Length; i++) { SuppliedMemberNumbers[i] = SuppliedMemberNumbers[i].Trim(); } var userIds = (from user in dbContext.Users where SuppliedMemberNumbers.Contains(user.MemberNumber) select user.Id).ToList(); if (userIds.Count() != SuppliedMemberNumbers.Count()) { ErrorMessages.Add("One or more supplied member numbers do not exist"); isError = true; } if (SuppliedMemberNumbers.Contains(signedInMember.MemberNumber)) { ErrorMessages.Add("Do not enter your own member number"); isError = true; } if (StartDate.DayOfWeek != EndDate.DayOfWeek) { ErrorMessages.Add($"Day of week for start date ({StartDate.DayOfWeek}) must match day of week for end date ({EndDate.DayOfWeek})"); isError = true; } string currentUser = userManager.GetUserId(User); requestedStandingTeeTime.Members = userIds.Append(currentUser).ToList(); requestedStandingTeeTime.SubmittedBy = userManager.GetUserId(User); if (isError) { TempData.Put(nameof(ErrorMessages), ErrorMessages); return(Redirect(Request.Headers["Referer"])); } if (!requestDirector.RequestStandingTeeTime(requestedStandingTeeTime, out string message)) { ErrorMessages.Add(message); TempData.Put(nameof(ErrorMessages), ErrorMessages); return(Redirect(Request.Headers["Referer"])); } Confirmation = true; return(Page()); }