예제 #1
0
        //Get:/{username}
        public ActionResult Username(string username = "")
        {
            var model = userService.GetBy(x => x.Username == username);

            if (model == null)
            {
                return(Redirect("~/"));
            }

            //Viewbag.username
            ViewBag.username = username;


            //Login olan user name
            string user = SessionSet <Users> .CurrentUser("login").Username;


            //ViewBag Users Fullname
            Users user1 = userService.GetBy(x => x.Username == user); //Burda Sessiondan Ben Kendi Hesabımla Giriş Yaptığım için beni yakalıyo

            ViewBag.Fullname = user1.Name + " " + user1.LastName;


            int userId = user1.Id;


            //Viewbag Userıd
            ViewBag.UserId = userId;



            Users user2 = userService.GetBy(x => x.Username == username); //Burda Furkanın sayfasına yönlendirildiğim için furkanı yakalıyo ve onu getiriyo

            ViewBag.ViewingFullName = user2.Name + " " + user2.LastName;


            //Get usernams ımage
            ViewBag.userimage = model.Id + ".jpg";


            string userType = "guest";

            if (username == user) //Parametre olarak gelen username ile Sessiomdaki username aynı ise kişi owner Değil seguest yani guest durumu:
            {                     //Merrtcan Frukanın sayfasında geziyo gibi
                userType = "owner";
            }

            ViewBag.userType = userType;



            if (userType == "guest")
            {
                Users u1  = userService.GetBy(x => x.Username == user); //Burası yine sessiondaki kulanıcı yani Mertcan
                int   id1 = u1.Id;


                Users u2  = userService.GetBy(x => x.Username == username); //Burasıda sayfasını açtığım kişi yani furkan
                int   id2 = u2.Id;


                UserFriend f1 = userFriendService.GetBy(x => x.UserId == id1 && x.FriendId == id2); //mertcan furkanla ilişki
                UserFriend f2 = userFriendService.GetBy(x => x.FriendId == id1 && x.UserId == id2); //furkan mertcanla ilişki

                if (f1 == null && f2 == null)                                                       //İkiside null sa arkadaş değiller
                {
                    ViewBag.NotFirends = "True";
                }


                if (f1 != null) //Sadece ilk sorgu varsa mertcan isteği atmış furkanı bekliyo
                {
                    if (!f1.Active)
                    {
                        ViewBag.NotFirends = "Pending";
                    }
                }



                if (f2 != null) //Sadece ikincisi varsa Furkan atmış mertcani bekliyo
                {
                    if (!f2.Active)
                    {
                        ViewBag.NotFirends = "Pending";
                    }
                }
            }



            var friendCount = userFriendService.Query <UserFriend>().Count(x => x.FriendId == userId && x.Active == false);   //Bana Gelen Arkadaşlık istekllerinin sayısı için UserFriend tablosunda FriendId si Benim Idme eşit olan kayıtları yakaladık

            //ZAten eğerki benim Id im  UserFriend Tablosunda Bir FriendId değeriyle Eşleişiyorsa bana bir istek Atılmış Demektir.
            //Or neğin 2 - 1  burada bir ben 2 furkan , furkan bana istekte bulunmuş demektir.
            if (friendCount > 0)
            {
                ViewBag.FrCount = friendCount;
            }


            Users u          = userService.GetBy(x => x.Username == user); //Sessiondaki kullanıcıya erişildi
            int   usernameId = u.Id;



            var friendCount2 = userFriendService.Query <UserFriend>().Count(x => x.FriendId == usernameId && x.Active == true /*|| x.UserId==usernameId && x.Active==true*/); //Arkadaş olduklarının sayısı alındı


            ViewBag.FCount = friendCount2;



            //ViewBag MessageCount
            var messageCount = userService.Query <Messages>().Count(x => x.ToId == usernameId);

            ViewBag.MsgCount = messageCount;



            //Viewbag user wall

            ViewBag.WallMessage = wallservice.GetAll(x => x.Id == userId).Select(x => x.Message).FirstOrDefault();


            //Viewbag friend walls

            List <int> friendlist = userFriendService.GetAll(x => x.UserId == userId && x.Active == true).ToArray().Select(x => x.FriendId).ToList();


            List <int> friendlist2 = userFriendService.GetAll(x => x.FriendId == userId && x.Active == true).ToArray().Select(x => x.UserId).ToList();


            List <int> allfriendsIds = friendlist.Concat(friendlist2).ToList();


            //List<WallViewModel> wallList = wallservice.GetAll(x => allfriendsIds.Contains(x.UserId)).ToArray().OrderByDescending(x => x.DateEdited).Select(x => new WallViewModel(x)).ToList();

            //List<PostListViewModel> postlist = postService.GetAll(x => x.UserId == userId).Select(x => new PostListViewModel
            //{

            //    CreatedDate = x.CreatedDate,
            //    Text = x.Text,
            //    LikeCount = x.LikeCount,
            //    //username=x.User.Username,
            //    // UserId=x.UserId


            //}).ToList();


            List <PostListViewModel> postlist = (from use in userService.Query <Users>() join post in userService.Query <Post>() on use.Id equals post.UserId where use.Id == userId select new PostListViewModel {
                username = use.Username,
                Text = post.Text,
                LikeCount = post.LikeCount,
                UserId = use.Id,
                CreatedDate = post.CreatedDate,
                postId = post.Id
            }).ToList();



            //List<PostListViewModel> postlist2 = postService.GetAll(x => allfriendsIds.Contains(x.UserId)).Select(x => new PostListViewModel(x)).ToList();


            var postlist2 = (from uf in userFriendService.Query <UserFriend>()
                             join p in userFriendService.Query <Post>() on uf.FriendId equals p.UserId
                             join use in userFriendService.Query <Users>() on p.UserId equals use.Id
                             where uf.UserId == userId && uf.Active == true
                             select new PostListViewModel
            {
                Text = p.Text,
                CreatedDate = p.CreatedDate,
                username = use.Username,
                LikeCount = p.LikeCount,
                UserId = use.Id,
                postId = p.Id
            }).ToList();;


            List <PostListViewModel> wallList = postlist.Concat(postlist2).OrderByDescending(x => x.CreatedDate).ToList();


            ViewBag.Walls = wallList;

            return(View());
        }