public ActionResult Message(MainPageViewModel model) { var UserId = System.Web.HttpContext.Current.User.Identity.GetUserId(); UserToActivityModel userToActivity = db.UserToActivity.Include(n => n.Activity).Where(n => n.UserId == UserId).Where(n => n.Activity.Active == true).First(); userToActivity.Message = model.UserId; //UserId is a holder for message here. db.SaveChanges(); return(RedirectToAction("ViewActivities")); }
public ActionResult JoinActivities(int id) { UserToActivityModel joinedActivity = db.UserToActivity.Where(n => n.ActivityId == id).Where(n => n.UserId == null).First(); joinedActivity.ActivityId = id; joinedActivity.UserId = System.Web.HttpContext.Current.User.Identity.GetUserId(); db.SaveChanges(); return(RedirectToAction("ViewActivities", new { id })); }
public ActionResult LeaveActivity(int id) { var UserId = System.Web.HttpContext.Current.User.Identity.GetUserId(); UserToActivityModel joinedActivity = db.UserToActivity.Where(n => n.ActivityId == id).Where(n => n.UserId == UserId).First(); joinedActivity.UserId = null; db.SaveChanges(); joinedActivity.ActivityId = 0; return(RedirectToAction("ViewActivities")); }
public ActionResult CreateActivity(ActivityModel model) { var UserId = System.Web.HttpContext.Current.User.Identity.GetUserId(); ActivityModel newActivity = new ActivityModel(); newActivity.Name = model.Name; newActivity.CostPerUser = model.CostPerUser; if (model.CostPerUser == 0) { newActivity.CostPerUser = 0; } newActivity.Invitees = model.Invitees; newActivity.CreatorId = UserId; newActivity.Description = model.Description; newActivity.TimeStart = DateTime.Now; newActivity.TimeEnd = DateTime.Now.AddMinutes(model.ActivityLength); newActivity.Area = DistanceFinder.ConvertInviteeArea(model.Area); newActivity.Active = true; newActivity.Latitude = (from x in db.Checkin where x.UserId == UserId && x.Active == true select x.Latitude).First(); newActivity.Longitude = (from x in db.Checkin where x.UserId == UserId && x.Active == true select x.Longitude).First(); //User can only have one created activity at a time try { foreach (var row in db.Activity) { if (row.CreatorId == UserId && row.Active == true) { row.Active = false; } } } catch { } //create null entries in db.UserToActivity for each invitee for (int i = 0; i < model.Invitees; i++) { UserToActivityModel userToActivity = new UserToActivityModel(); userToActivity.ActivityId = model.Id; userToActivity.UserId = null; db.UserToActivity.Add(userToActivity); } db.Activity.Add(newActivity); db.SaveChanges(); return(RedirectToAction("ViewActivities")); }
public ActionResult ViewActivities(UserToActivityModel model) { //inactivate checkins over an hour old foreach (var row in db.Checkin.Where(n => n.Active == true)) { if (DateTime.Now >= row.CheckinTime.AddHours(1)) { row.Active = false; } } //inactivate activities past their expiration times foreach (var row in db.Activity.Where(n => n.Active == true)) { if (DateTime.Now >= row.TimeEnd) { row.Active = false; } } db.SaveChanges(); var UserId = System.Web.HttpContext.Current.User.Identity.GetUserId(); MainPageViewModel main = new MainPageViewModel(); main.Messages = new List <string>(); main.ActivityJoined = model.Id; main.UserId = UserId; // find out if user is checked in foreach (var checkin in db.Checkin.Where(n => n.Active)) { if (checkin.UserId == UserId) { main.CheckedIn = true; break; } else { main.CheckedIn = false; } } // create available activities main.Activities_Invitees = new List <Activity_InviteesViewModel>(); main.UserToActivity = new List <UserToActivityModel>(); foreach (var row in db.UserToActivity.Where(n => n.UserId == UserId)) { main.UserToActivity.Add(row); } ActivitiesViewModel activities = new ActivitiesViewModel(); activities.Activities = new List <ActivityModel>(); foreach (var activity in db.Activity.Where(n => n.Active == true)) { activities.Activities.Add(activity); } try { double userLatitude = (from x in db.Checkin where x.UserId == UserId && x.Active == true select x.Latitude).First(); double userLongitude = (from x in db.Checkin where x.UserId == UserId && x.Active == true select x.Longitude).First(); foreach (var activity in activities.Activities) { //find activites within creator's specified area double activityDistance = DistanceFinder.FindActivitiesDistance(userLatitude, userLongitude, activity.Latitude, activity.Longitude); if (activityDistance <= activity.Area) { Activity_InviteesViewModel activity_Invitees = new Activity_InviteesViewModel(); activity_Invitees.Activity = activity; activity_Invitees.Distance = DistanceFinder.ConvertActivityDistance(activityDistance); activity_Invitees.timeStart = activity_Invitees.Activity.TimeStart.ToShortTimeString(); activity_Invitees.timeEnd = activity_Invitees.Activity.TimeEnd.ToShortTimeString(); //find users that joined that same activity. List <string> invitees = new List <string>(); foreach (var invitee in db.UserToActivity.Include(n => n.User)) { if (invitee.ActivityId == activity.Id && invitee.UserId != null) { //Ratings Joiner joiner = new Joiner(invitee.User.FirstName, invitee.User.Rating, invitee.User.RatingCount, invitee.Message); string listInvitee = joiner.CreateRatingString(); invitees.Add(listInvitee); //Messages if (invitee.Message != null) { string message = joiner.CreateMessageString(); main.Messages.Add(message); } } } activity_Invitees.Invitees = new SelectList(invitees); main.Activities_Invitees.Add(activity_Invitees); ViewData["Joined"] = new SelectList(invitees); foreach (var row in main.UserToActivity) { if (row.ActivityId == activity.Id) { main.ActivityJoined = row.ActivityId; } } } } } catch { } return(View(main)); }