// Functions public static NewsFeedViewModel CreatePost(CreatePostViewModel creatPostViewModel, HttpPostedFileBase postPhoto) { using (BewanderContext db = new BewanderContext()) { // GET: Models needed for CreatePostViewModel string userID = creatPostViewModel.UserID; User user = db.Users.Find(userID); Image profilePicture = Image.GetProfileImages(userID, FileType.ProfilePicture); Post newPost = new Post { DatePosted = DateTime.Now, Caption = creatPostViewModel.Caption, UserID = userID }; Image postedPhoto = new Image(); if (postPhoto != null) { Image.SavePhotos(user, postPhoto); postedPhoto = (Image)db.Users.Find(userID).Files.Last(); newPost.PhotoID = postedPhoto.ID; } db.Posts.Add(newPost); db.Entry(user).State = EntityState.Modified; db.SaveChanges(); NewsFeedViewModel postDisplayViewModel = new NewsFeedViewModel(user, profilePicture, postedPhoto, newPost); return(postDisplayViewModel); } }
public static List <int> GetNotifications(string userID) { using (BewanderContext db = new BewanderContext()) { List <int> notificationIDs = db.Notifications.Where(i => i.UserID == userID).Select(i => i.MessageID).ToList(); return(notificationIDs); } }
public static List <int> GetRelationshipIDs(string userID) { using (BewanderContext db = new BewanderContext()) { List <int> relationshipIDs = db.Relationships.Where(i => i.UserOneID == userID || i.UserTwoID == userID).Select(i => i.ID).ToList(); return(relationshipIDs); } }
// For test databases only, not for live site. Will only run if the number of users is less than 100 protected void CreateTestUsers() { ApplicationDbContext db = new ApplicationDbContext(); BewanderContext context = new BewanderContext(); var UserManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(db)); // Immediate query of database for number of users List <ApplicationUser> users = db.Users.ToList(); //Number of users wanted for seeding int TestUsers = 100; // In case someone forgets to remove it on the live site if (users.Count < TestUsers) { // Creates new users for (var i = 0; i < TestUsers; i++) { ApplicationUser user = new ApplicationUser(); user.UserName = String.Format("User{0}@gmail.com", i.ToString()); user.Email = String.Format("User{0}@gmail.com", i.ToString()); user.EmailConfirmed = true; string userPWD = "Pass1234!"; var chkUser = UserManager.Create(user, userPWD); //Create new User User newUser = new User(user.Id, String.Format("FirstName User{0}", i.ToString()), String.Format("LastName User{0}", i.ToString())); context.Users.Add(newUser); // Create new UserProfile UserProfile userProfile = new UserProfile { UserID = user.Id, DOB = DateTime.Today, HomeTown = "1" }; context.UserProfiles.Add(userProfile); //Add default User to Role Admin if (chkUser.Succeeded) { var result1 = UserManager.AddToRole(user.Id, "User"); } } context.SaveChanges(); } }
/// <summary> /// Gets posts from the users friends /// </summary> /// <param name="friendsID"></param> /// <param name="ID"></param> /// <returns></returns> public static List <NewsFeedViewModel> GetNewsFeed(List <string> friendsID) { using (BewanderContext db = new BewanderContext()) { List <NewsFeedViewModel> posts = new List <NewsFeedViewModel>(); foreach (string userID in friendsID) { User user = db.Users.Find(userID); Image profilePicture = Image.GetProfileImages(userID, FileType.ProfilePicture); ICollection <Post> userPosts = user.Posts; foreach (Post post in userPosts) { Image postedPicture = (post.PhotoID != null) ? db.Images.Find(post.PhotoID) : new Image(); NewsFeedViewModel newPost = new NewsFeedViewModel(user, profilePicture, postedPicture, post); posts.Add(newPost); } } return(posts.OrderByDescending(i => i.Likes.Count).ToList()); } }
/// <summary> /// Gets the most current photo that has been made into a profile picture or cover photo /// </summary> /// <param name="userID"></param> /// <param name="fileType"></param> /// <returns></returns> public static Image GetProfileImages(string userID, FileType fileType) { try { using (BewanderContext db = new BewanderContext()) { // Parameters for SQL query object[] parameters = new object[] { new SqlParameter("fileType1", (int)fileType), new SqlParameter("fileType2", (fileType == FileType.CoverPhoto) ? (int)FileType.RentedCoverPhoto : (int)fileType), new SqlParameter("userID", userID) }; Image image = db.Images.SqlQuery( "SELECT TOP 1 * FROM[dbo].[File] WHERE (FileType = @fileType1 OR FileType = @fileType2) AND UserID = @userID ORDER BY DateProfilePic DESC", parameters).SingleOrDefault(); if (image.Path == null) { throw new NullReferenceException(); } return(image); } } catch (Exception) { Image image = (fileType == FileType.ProfilePicture || fileType == FileType.AboutPicture) ? new Image { Path = "no-image.png", FileName = "Default" } : new Image { Path = "cover-image.jpg", FileName = "Default" }; return(image); } }
/* * this generates the table based on the search criteria given from the form on the index page. * the search variables will hold data based on what the admin wants to search users by. * the Filter variables are used to hold/store the search variables when a page change is made, this way you don't * lose the search criteria when you change to another page of the table. */ public PartialViewResult _UserSearchResults( string sortOrder, string nameFilter, string hometownFilter, string daysFilter, string lockedOutFilter, string rolesFilter, string searchName, string searchHometown, string searchDays, string searchLockedOut, string searchRoles, int?page) { // Tanvir(23/12/16): Creating Paged List ViewBag.CurrentSort = sortOrder; ApplicationDbContext acSearchResults = new ApplicationDbContext(); BewanderContext bcSearchResults = new BewanderContext(); var Users = from u in bcSearchResults.Users select u; var Places = from p in bcSearchResults.Places select p; int maxDays = 0; //these if's are needed to reset the page to 1 should the search criteria change while on a page other than 1 //I believe you need one for each search criteria if (searchName != null) { page = 1; } else { searchName = nameFilter; } ViewBag.nameFilter = searchName; if (searchHometown != null) { page = 1; } else { searchHometown = hometownFilter; } ViewBag.hometownFilter = searchHometown; if (searchDays != null) { page = 1; } else { searchDays = daysFilter; } ViewBag.daysFilter = searchDays; if (searchLockedOut != null) { page = 1; } else { searchLockedOut = lockedOutFilter; } ViewBag.lockedOutFilter = searchLockedOut; if (searchRoles != null) { page = 1; } else { searchRoles = rolesFilter; } ViewBag.rolesFilter = searchRoles; if (!String.IsNullOrEmpty(searchName)) { Users = Users.Where(u => u.LastName.ToLower().Contains(searchName.ToLower()) || u.FirstName.ToLower().Contains(searchName.ToLower())); } if (!String.IsNullOrEmpty(searchHometown)) { Places = Places.Where(p => p.Name.ToLower().Contains(searchHometown.ToLower())); } if (!String.IsNullOrEmpty(searchDays)) { maxDays = int.Parse(searchDays); } int pageSize = 20; int pageNumber = (page ?? 1); // End of PagedList // Create ViewModel to run list function AdminSearchViewModel vm = new AdminSearchViewModel(); // Assemble lists to be passed to list function List <AdminSearchViewModel> viewModels = new List <AdminSearchViewModel>(); List <ApplicationUser> applicationUsers = acSearchResults.Users.ToList(); List <User> users = Users.ToList(); List <UserProfile> userProfiles = bcSearchResults.UserProfiles.ToList(); List <Place> places = Places.ToList(); List <Review> reviews = bcSearchResults.Reviews.ToList(); List <Post> posts = bcSearchResults.Posts.ToList(); //pass data to list function vm.AdminSearchList(viewModels, users, userProfiles, places, applicationUsers, posts, reviews, searchHometown, maxDays, searchLockedOut, searchRoles ); // for each viewModel, convert Id hash store in Role to name of role foreach (AdminSearchViewModel viewModel in viewModels) { viewModel.Role = acSearchResults.Roles.Where(a => a.Id == viewModel.Role).Select(a => a.Name).FirstOrDefault(); } //SORTING CODE HERE ViewBag.NameSort = String.IsNullOrEmpty(sortOrder) ? "name_desc" : ""; ViewBag.DaysSort = sortOrder == "Days" ? "days_desc" : "Days"; ViewBag.HometownSort = String.IsNullOrEmpty(sortOrder) ? "hometown_desc" : ""; ViewBag.FlaggedPostSort = sortOrder == "Flagged Posts" ? "flagged_post_desc" : "Flagged Posts"; ViewBag.LockedOutSort = sortOrder == "Locked Out" ? "locked_out_desc" : "Locked Out"; ViewBag.RolesSort = sortOrder == "Roles" ? "roles_desc" : "Roles"; switch (sortOrder) { case "name_desc": viewModels = viewModels.OrderByDescending(v => v.LastName).ToList(); break; case "Days": viewModels = viewModels.OrderBy(v => v.DaysAsMember).ToList(); break; case "days_desc": viewModels = viewModels.OrderByDescending(v => v.DaysAsMember).ToList(); break; case "hometown_desc": viewModels = viewModels.OrderByDescending(v => v.HomeTownName).ToList(); break; case "Flagged Posts": viewModels = viewModels.OrderBy(v => v.PostFlag).ToList(); break; case "flagged_post_desc": viewModels = viewModels.OrderByDescending(v => v.PostFlag).ToList(); break; case "Locked Out": viewModels = viewModels.OrderBy(v => v.LockOutEnabled).ToList(); break; case "locked_out_desc": viewModels = viewModels.OrderByDescending(v => v.LockOutEnabled).ToList(); break; case "Roles": viewModels = viewModels.OrderBy(v => v.Role).ToList(); break; case "roles_desc": viewModels = viewModels.OrderByDescending(v => v.Role).ToList(); break; default: viewModels = viewModels.OrderBy(v => v.LastName).ToList(); break; } //END OF SORTING CODE //these need to be here, you get connection to DB issue otherwise acSearchResults.Dispose(); bcSearchResults.Dispose(); //if there are no results, display the PartialView for that. if (viewModels.Count == 0) { return(PartialView("_UserSearchNoResults")); } else //otherwise displays PartialView with results from search { return(PartialView("_UserSearchResults", viewModels.ToPagedList(pageNumber, pageSize))); } }
// In this method we will create default User roles and Admin user for login private void createRolesandUsers() { ApplicationDbContext context = new ApplicationDbContext(); BewanderContext bc = new BewanderContext(); var roleManager = new RoleManager <IdentityRole>(new RoleStore <IdentityRole>(context)); var UserManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(context)); // In Startup I am creating first Admin Role and creating a default Admin User if (!roleManager.RoleExists("Admin")) { // first we create Admin role var role = new IdentityRole(); role.Name = "Admin"; roleManager.Create(role); //Here we create a Admin super user who will maintain the website We will need this for going live. var user = new ApplicationUser(); user.UserName = "******"; user.Email = "*****@*****.**"; user.EmailConfirmed = true; string userPWD = "Pass1234!"; var chkUser = UserManager.Create(user, userPWD); //Add default User to Role Admin if (chkUser.Succeeded) { // Create Place Place place = new Place("1", "New York", 40.7127837, -74.00594130000002); bc.Places.Add(place); //Create new User User newUser = new User { UserID = user.Id, FirstName = "Bewander", LastName = "Bewander", Permission = 0, DateJoined = DateTime.Now }; bc.Users.Add(newUser); // Create new UserProfile UserProfile userProfile = new UserProfile { UserID = user.Id, DOB = DateTime.Today, HomeTown = place.PlaceID }; bc.UserProfiles.Add(userProfile); bc.SaveChanges(); var result1 = UserManager.AddToRole(user.Id, "Admin"); } } // creating Creating Manager role if (!roleManager.RoleExists("PowerUser")) { var role = new IdentityRole(); role.Name = "PowerUser"; roleManager.Create(role); } // creating Creating Employee role if (!roleManager.RoleExists("User")) { var role = new IdentityRole(); role.Name = "User"; roleManager.Create(role); } }