public async Task <IActionResult> ShowProfile(string id) { var user = await userManager.FindByIdAsync(id); if (user != null) { var model = new ShowProfileViewModel() { UserId = user.Id, UserName = user.UserName, Bio = user.Bio, PhotoPath = user.PhotoPath, Feed = mumblrRepository.getFeed(id) }; return(View(model)); } else { ViewBag.ErrorMessage = "The requested profile could not be found. It may have been deleted"; return(View("NotFound")); } }
public ActionResult Show(string userId) { var user = db.Profiles .Include(p => p.County) .Include(p => p.City) .Include(p => p.Albums) .Where(p => p.Id == userId) .FirstOrDefault(); if (user == null) { return(View("NotFound")); } var model = new ShowProfileViewModel(); model.Id = user.Id; model.FirstName = user.FirstName; model.LastName = user.LastName; model.ProfilePhotoId = user.ProfilePhotoId; model.CountyName = user.County != null ? user.County.Name : "Not available"; model.CityName = user.City != null ? user.City.Name : "Not available"; model.GenderType = user.IsMale ? "Male" : "Female"; model.Birthdate = user.Birthday; model.IsAvailableToView = true; foreach (var album in model.Albums) { album.FirstPhotoId = db.Photos.Where(u => u.AlbumId == album.Id) .Select(u => u.Id) .FirstOrDefault(); album.NumberOfPhotos = db.Photos.Where(u => u.AlbumId == album.Id) .Count(); } return(View("~/Views/Profile/Show.cshtml", model)); }
public ActionResult Show(string userId) { var user = db.Profiles .Include(p => p.County) .Include(p => p.City) .Include(p => p.Albums) .Where(p => p.Id == userId && !p.IsDeletedByAdmin) .FirstOrDefault(); if (user == null) { return(View("NotFound")); } var model = new ShowProfileViewModel(); var currentUserId = User.Identity.GetUserId(); //verificam daca user-ul curent(autentificat) este prieten cu cel al carui profil incercam sa-l accesam var isFriendWith = db.Friends.Any(f => f.ReceiverId == currentUserId && f.SenderId == userId || f.ReceiverId == userId && f.SenderId == currentUserId); if (!user.IsPublic && //daca user-ul al carui profil dorim sa-l accesam este privat !isFriendWith && //si nu suntem prieteni deja currentUserId != user.Id) //si cazul in care nu cumva ne uitam chiar pe profilul nostru { //atunci vom afisa doar un set limitate de date despre acel utilizator model.Id = user.Id; model.FirstName = user.FirstName; model.LastName = user.LastName; model.ProfilePhotoId = user.ProfilePhotoId; } else { model.Id = user.Id; model.FirstName = user.FirstName; model.LastName = user.LastName; model.ProfilePhotoId = user.ProfilePhotoId; model.CountyName = user.County != null ? user.County.Name : "Not available"; model.CityName = user.City != null ? user.City.Name : "Not available"; model.GenderType = user.IsMale ? "Male" : "Female"; model.Birthdate = user.Birthday; model.Albums = user.Albums.Select(album => new ShowAlbumViewModel { Id = album.Id, Name = album.Name, NumberOfPhotos = album.Photos.Count, FirstPhotoId = album.Photos.FirstOrDefault()?.Id, IsEditable = false }) .ToList(); model.IsAvailableToView = true; /*foreach (var album in model.Albums) * { * album.FirstPhotoId = db.Photos.Where(u => u.AlbumId == album.Id) * .Select(u => u.Id) * .FirstOrDefault(); * album.NumberOfPhotos = db.Photos.Where(u => u.AlbumId == album.Id) * .Count(); * }*/ } var isPendingForUser = db.FriendRequests .Any(u => u.RequestedProfileId == userId && u.RequesterProfileId == currentUserId && u.Status == (int)FriendRequestStatusTypes.Pending || u.RequestedProfileId == currentUserId && u.RequesterProfileId == userId && u.Status == (int)FriendRequestStatusTypes.Pending); var isRejectedByUser = db.FriendRequests .Any(u => u.RequestedProfileId == userId && u.RequesterProfileId == currentUserId && u.Status == (int)FriendRequestStatusTypes.Rejected); model.CanSendFriendRequest = currentUserId != userId && !isFriendWith && !isPendingForUser && //exista o cerere de prietenie intre noi in asteptare (de a fi acceptata sau nu) !isRejectedByUser; //daca persoana pe care vrem sa o vedem ne-a refuzat cererea de prietenie, nu vom mai putem trimite alta model.IsPendingForUser = isPendingForUser; return(View(model)); }