// POST api/<controller> // // Add user to the database // public HttpResponseMessage Post([FromBody] JsonUser value) { if (value == null) { Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Invalid user information"); } Models.Repository repository = new Models.Repository(); MFUser fbUser = new MFUser { UserId = value.UserId, Email = value.Email, FirstName = value.FirstName, LastName = value.LastName, Name = value.Name }; var mfUser = repository.CreateUser(fbUser); repository.SaveChanges(); List <GroupMember> membership = repository.UserMembership(mfUser); if ((membership == null) || (membership.Count == 0)) { Group defaultGroup = repository.FindGroupByCode("JYMF"); repository.DefaultGroup(mfUser, defaultGroup, GroupRoleEnum.member); repository.SaveChanges(); } return(Request.CreateResponse(HttpStatusCode.Created, "User added to application")); }
public static EventParticipant FromUser(MFUser user, string access_code) { EventParticipant p = new EventParticipant() { UserId = user.UserId, FirstName = user.FirstName, LastName = user.LastName, FullName = user.Name, Image = Facebook.FacebookUser.UserImage(user.UserId) }; return(p); }
// GET: MFUsers/Details/5 public ActionResult Details(string id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } MFUser mFUser = db.MFUsers.Find(id); if (mFUser == null) { return(HttpNotFound()); } return(View(mFUser)); }
public BaseController() { PartialRenderer = this; ViewRenderer = this; // Ensure user is in database // if (System.Web.HttpContext.Current.User.Identity.IsAuthenticated) { Repository db = new Repository(); MFUser user = db.GetUserById(System.Web.HttpContext.Current.User.Identity.Name); if (user == null) { user = db.CreateUser((Facebook.FacebookUser)System.Web.HttpContext.Current.User); db.SaveChanges(); } } }
public ActionResult DeleteConfirmed(string id) { MFUser mFUser = db.MFUsers.Find(id); var groups = mFUser.GroupMembers.ToList(); foreach (var group in groups) { db.GroupMembers.Remove(group); } var races = mFUser.Attendings.ToList(); foreach (var race in races) { db.Attendings.Remove(race); } db.MFUsers.Remove(mFUser); db.SaveChanges(); return(RedirectToAction("Index")); }
// GET: /Home/Index // // Main page of the application. Displays the list of events along with participation and also initializes the // event form for adding events. // public virtual ActionResult Index() { IndexViewModel model = new IndexViewModel(); // Current user information // Repository db = new Repository(); MFUser currentUser = db.GetUserById(FacebookUser.CurrentUser.id); if (currentUser == null) { return(RedirectToAction(MVC.Home.Pending())); } // Determine if the user has access to the app through an approved group. // TODO: For now, everyone will get access to JYMF // List <GroupMember> membership = db.UserMembership(currentUser); if ((membership == null) || (membership.Count == 0)) { Group defaultGroup = db.FindGroupByCode("JYMF"); db.DefaultGroup(currentUser, defaultGroup, GroupRoleEnum.member); db.SaveChanges(); membership = db.UserMembership(currentUser); AppUserNotification(currentUser.UserId, defaultGroup.Name); } model.EventForm.GroupId = membership[0].GroupId; // Get all events for the current user // List <Event> events = db.GetUserEvents(currentUser); model.Events = EventInfo.CopyFromModel(events, currentUser.UserId); // Return the view // model.PageMessage = GetTempDataPageMessage(); return(View(model)); }
// GET: MFUsers/Edit/5 public ActionResult Edit(string id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } MFUser mFUser = db.MFUsers.Find(id); if (mFUser == null) { return(HttpNotFound()); } return(View(new MFUserViewModel { UserId = mFUser.UserId, Name = mFUser.Name, FirstName = mFUser.FirstName, LastName = mFUser.LastName, Email = mFUser.Email, })); }
// DELETE api/<controller>/5 // // Removes the user as attending the event // public HttpResponseMessage Delete(int id) { // Make sure the request is valid // if (string.IsNullOrEmpty(UserId)) { return(Request.CreateErrorResponse(HttpStatusCode.Unauthorized, "Not Authorized")); } Repository repository = new Repository(); MFUser user = repository.GetUserById(UserId); Event iEvent = repository.GetEventById(id); if ((user == null) || (iEvent == null)) { return(Request.CreateErrorResponse(HttpStatusCode.NotFound, "Event not found")); } repository.RemoveUserFromEvent(user, iEvent); repository.SaveChanges(); return(Request.CreateResponse(HttpStatusCode.OK)); }
// POST api/Login // // Authenticate the user. Requires groupid=JYMF and ApiKey. Authentication may be by userid or email/password (v2) // public HttpResponseMessage Post([FromBody] LoginAuth auth) { if ((auth == null) || (string.IsNullOrEmpty(auth.groupid)) || (string.IsNullOrEmpty(auth.userid) && (string.IsNullOrEmpty(auth.email))) || (string.IsNullOrEmpty(auth.apikey))) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Missing authentication information")); } else { Repository repository = new Repository(); var fbGroup = repository.FindGroupByCodeAndKey(auth.groupid, auth.apikey); MFUser mfUser = null; if (string.IsNullOrEmpty(auth.password)) { mfUser = repository.GetUserByEmail(auth.email); } else { mfUser = repository.GetUserByAuthentication(auth.email, auth.password); } if (mfUser == null && auth.userid != null && !string.IsNullOrEmpty(auth.userid)) { mfUser = repository.GetUserById(auth.userid); } var groupMember = repository.UserGroupMembership(mfUser ?? new MFUser(), fbGroup ?? new Group()); if (groupMember == null) { if (mfUser == null) { return(Request.CreateErrorResponse(HttpStatusCode.NotFound, "User not found")); } if (fbGroup == null) { return(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "Invalid credentials")); } repository.DefaultGroup(mfUser, fbGroup, GroupRoleEnum.member); repository.SaveChanges(); groupMember = repository.UserGroupMembership(mfUser, fbGroup); if (groupMember == null) { return(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "Invalid credentials")); } } if ((string.IsNullOrEmpty(groupMember.AccessToken)) || ((groupMember.AccessExpiration.HasValue == false) || (groupMember.AccessExpiration.Value < DateTime.Now.ToUniversalTime()))) { groupMember.AccessToken = Guid.NewGuid().ToString(); groupMember.AccessExpiration = DateTime.Now.AddDays(1).ToUniversalTime(); repository.SaveChanges(); } else { groupMember.AccessExpiration = DateTime.Now.AddDays(1).ToUniversalTime(); repository.SaveChanges(); } var result = new AuthResult { token = groupMember.AccessToken, expiration = groupMember.AccessExpiration.Value, role = groupMember.Role, name = mfUser.Name, userid = mfUser.UserId, firstname = mfUser.FirstName, lastname = mfUser.LastName, email = mfUser.Email }; return(Request.CreateResponse(HttpStatusCode.OK, result)); } }
// POST api/<controller> // // Add user to the database // public HttpResponseMessage Post([FromBody] JsonUser value) { if (value == null) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Invalid user information")); } Models.Repository repository = new Models.Repository(); var user = repository.GetUserByEmail(value.Email); if (user != null) { return(Request.CreateErrorResponse(HttpStatusCode.Conflict, "User with same email already exists")); } string groupCode = HttpContext.Current.Request.QueryString["code"]; Models.Group defaultGroup = repository.FindGroupByCode((string.IsNullOrEmpty(groupCode) ? "JYMF" : groupCode)); if (defaultGroup == null) { return(Request.CreateErrorResponse(HttpStatusCode.NotFound, "Group code not found")); } string userid; do { Random random = new Random(); userid = (!string.IsNullOrEmpty(value.UserId) ? value.UserId : System.Web.Security.Membership.GeneratePassword(16, 0)); userid = Regex.Replace(userid, @"[^a-zA-Z0-9]", m => random.Next(0, 9).ToString()); user = repository.GetUserById(userid); } while (user != null); MFUser fbUser = new MFUser { UserId = userid, Email = value.Email, Password = value.Password, FirstName = value.FirstName, LastName = value.LastName, Name = value.Name }; var mfUser = repository.CreateUser(fbUser); repository.SaveChanges(); if (repository.IsUserInGroup(mfUser, defaultGroup) == GroupRoleEnum.empty) { repository.DefaultGroup(mfUser, defaultGroup, GroupRoleEnum.member); repository.SaveChanges(); } // Send an email notification // var smtp = new SmtpClient(); // Settings in config file var message = new MailMessage("*****@*****.**", ConfigurationManager.AppSettings["AdminEmail"]); message.Subject = "JYMF RaceDay New User"; message.IsBodyHtml = true; message.Priority = MailPriority.High; message.Body = File.ReadAllText(HttpContext.Current.Server.MapPath("~/App_Data/NewUser.txt")); message.Body = message.Body.Replace("@FIRSTNAME@", fbUser.FirstName) .Replace("@LASTNAME@", fbUser.LastName) .Replace("@EMAIL@", fbUser.Email); smtp.Send(message); return(Request.CreateResponse(HttpStatusCode.Created, "User added to application")); }
public virtual ActionResult Attending(String EventId, String ClassName) { Repository repository = new Repository(); // Current user must be logged in and found // if (FacebookUser.CurrentUser == null) { return(new HttpStatusCodeResult(400, "User authorization not found")); } MFUser currentUser = repository.GetUserById(FacebookUser.CurrentUser.id); if (currentUser == null) { return(new HttpStatusCodeResult(400, "User record not found")); } // Event Id must be an integer and found // Int32 eventId = 0; if (!Int32.TryParse(EventId, out eventId)) { eventId = 0; } if (eventId == 0) { return(new HttpStatusCodeResult(400, "Invalid event Id")); } Event currentEvent = repository.GetEventById(eventId); if (currentEvent == null) { return(new HttpStatusCodeResult(400, "Event record not found")); } // ClassName must be recognized // if ((ClassName != "glyphicon-check") && (ClassName != "glyphicon-unchecked")) { return(new HttpStatusCodeResult(400, "Unrecognized class name")); } // Switch the attendance // AttendanceResult result = new AttendanceResult(); if (ClassName == "glyphicon-check") { repository.RemoveUserFromEvent(currentUser, currentEvent); repository.SaveChanges(); result.Button = RenderPartialViewToString(MVC.Shared.Views.Partials._NotAttendingButton, EventInfo.CopyFromEvent(false, currentEvent)); } else { repository.AddUserToEvent(currentUser, currentEvent, AttendingEnum.Attending); repository.SaveChanges(); result.Button = RenderPartialViewToString(MVC.Shared.Views.Partials._AttendingButton, EventInfo.CopyFromEvent(true, currentEvent)); } // Rebind the participant list with the change // result.Attendees = String.Empty; return(Json(result)); }