Esempio n. 1
0
 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"));
 }
Esempio n. 2
0
 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"));
        }