public IActionResult Register(UserViewModel FormUser) { if (ModelState.IsValid) { User NewUser = new User { FirstName = FormUser.FirstName, LastName = FormUser.LastName, Email = FormUser.Email, Password = FormUser.Password }; //chceck for existingt email, error if so User emailExistsQuery = _context.Users.SingleOrDefault(user => (user.Email == FormUser.Email)); if (emailExistsQuery != null) { ViewBag.ExistsError = "User with this email already exists, please choose a different email"; return(View("LoginReg")); } else { //create new user, hash password, load into db PasswordHasher <User> Hasher = new PasswordHasher <User>(); NewUser.Password = Hasher.HashPassword(NewUser, NewUser.Password); _context.Add(NewUser); _context.SaveChanges(); User results = _context.Users.SingleOrDefault(user => (user.Email == FormUser.Email)); int id = results.UserID; HttpContext.Session.SetInt32("logged_id", id); return(RedirectToAction("ShowDashboard", "Activity")); } } return(View("LoginReg")); }
public IActionResult AddReview(int ActivityID, ReviewViewModel review) { if (ModelState.IsValid) { Review reviewToAdd = new Review { Title = review.Title, Rating = review.Rating, Description = review.Description, ActivityID = ActivityID, ReviewerID = (int)HttpContext.Session.GetInt32("logged_id") }; _context.Reviews.Add(reviewToAdd); _context.SaveChanges(); return(RedirectToAction("ShowReviews", "Review", new { ActivityID = ActivityID })); } //if validation fails, reload page with same activity ViewBag.Activity = _context.Activities.Include(activity => activity.Creator).Include(activity => activity.UsersAttending).ThenInclude(ua => ua.User).SingleOrDefault(activity => activity.ActivityID == ActivityID); return(View("ReviewForm")); }
public IActionResult CreateActivity(ActivityViewModel NewActivityViewModel, string TimeDenomination, TimeSpan StartTime) { ViewBag.OverlapError = ""; if (ModelState.IsValid) { int LoggedID = (int)HttpContext.Session.GetInt32("logged_id"); //convert the denomination into the appropriate number of minutes to be stored in db TimeSpan ActivityDuration = new TimeSpan(0, 0, 0); if (TimeDenomination == "Days") { ActivityDuration += new TimeSpan(24 * NewActivityViewModel.Duration, 0, 0); } else if (TimeDenomination == "Hours") { ActivityDuration += new TimeSpan(1 * NewActivityViewModel.Duration, 0, 0); } else { ActivityDuration += new TimeSpan(0, 1 * NewActivityViewModel.Duration, 0); } Activity NewActivity = new Activity() { Name = NewActivityViewModel.Name, Description = NewActivityViewModel.Description, StreetAddress = NewActivityViewModel.StreetAddress, City = NewActivityViewModel.City, State = NewActivityViewModel.State, ZipCode = NewActivityViewModel.ZipCode, CreatorID = LoggedID, Duration = (int)ActivityDuration.TotalMinutes, StartTime = NewActivityViewModel.StartDate + StartTime }; //query db for all actvivities made by this person List <Activity> CreatedActivities = _context.Activities.Where(activity => activity.CreatorID == LoggedID).ToList(); bool overlapFlag = false; Activity overlappingActivity = new Activity(); DateTime NewActivityStartTime = NewActivity.StartTime; DateTime NewActivityEndTime = NewActivity.StartTime + new TimeSpan(0, NewActivity.Duration, 0); //loop finds overlap if it exists foreach (Activity activity in CreatedActivities) { DateTime ThisActivityStart = activity.StartTime; DateTime ThisActivityEnd = activity.StartTime + new TimeSpan(0, activity.Duration, 0); if (NewActivityStartTime < ThisActivityEnd && ThisActivityStart < NewActivityEndTime) { overlapFlag = true; overlappingActivity = activity; break; } } if (overlapFlag) { ViewBag.OverlapError = $"This activty would overlap with your upcoming activity: '{overlappingActivity.Name}', which begins {overlappingActivity.StartTime} and ends at {overlappingActivity.StartTime + new TimeSpan(0, overlappingActivity.Duration, 0)}. Please chose a different time or cancel the conflicting activity first."; return(View("AddActivityForm")); } _context.Activities.Add(NewActivity); _context.SaveChanges(); //there is where logic for overlap of joined activities goes ******* //it will need to find all useractivites that this user is part of, then see if any overlap, if they do, add them to a list // somehow this list needs to be passed to showactivity page, maybe json into session? // *********** Activity SavedActivity = _context.Activities.SingleOrDefault(activity => activity.Name == NewActivityViewModel.Name && activity.CreatorID == LoggedID); UserActivity NewUserActivity = new UserActivity() { UserID = (int)HttpContext.Session.GetInt32("logged_id"), ActivityID = SavedActivity.ActivityID }; _context.UserActivities.Add(NewUserActivity); _context.SaveChanges(); return(RedirectToAction("ShowActivity", new { ActivityID = SavedActivity.ActivityID })); } return(View("AddActivityForm")); }