Exemplo n.º 1
0
        public ActionResult Detail(int id, bool zobrazPopis = true)
        {
            BookDao         bookDao   = new BookDao();
            BookLikesDao    palce     = new BookLikesDao();
            KnihovnaUserDao uzivatele = new KnihovnaUserDao();

            KnihovnaUser myUser = uzivatele.GetByLogin(User.Identity.Name);

            Book b = bookDao.GetbyId(id);

            b.PocetReakci[0] = palce.GetBookLikes(b.Id, 0) ?? 0;
            b.PocetReakci[1] = palce.GetBookLikes(b.Id, 1) ?? 0;
            b.PocetReakci[2] = palce.GetBookLikes(b.Id, 2) ?? 0;
            b.PocetReakci[3] = palce.GetBookLikes(b.Id, 3) ?? 0;

            if (User.Identity.IsAuthenticated)
            {
                b.CurrentUserReakce = General.GetBookUserRating(b.Id, myUser.Id);
            }
            else
            {
                b.CurrentUserReakce = -2;
            }



            ViewBag.Zobraz = zobrazPopis;

            KnihovnaKomentareDao      knihovnaKomentareDao = new KnihovnaKomentareDao();
            IList <KnihovnaKomentare> knihovnaKomentare    = knihovnaKomentareDao.GetAll();
            IList <KnihovnaKomentare> filtrovaneKomentare  = new List <KnihovnaKomentare>();

            foreach (KnihovnaKomentare koment in knihovnaKomentare)
            {
                if (koment.TopicId == id)
                {
                    koment.AlreadyRated = CurrentUserRatedComent(koment);

                    if (koment.AlreadyRated)
                    {
                        koment.RatedType = CurrentUserRatedComentType(koment);
                    }
                    else
                    {
                        koment.RatedType = -1;
                    }

                    // Reakce:
                    for (int i = 0; i < 4; i++)
                    {
                        int?pocetReakci = new KnihovnaKomentareLikesDao().GetComentLikes(koment.Id, i);
                        if (pocetReakci.HasValue)
                        {
                            koment.PocetReakci[i] = (int)pocetReakci;
                        }
                        else
                        {
                            koment.PocetReakci[i] = 0;
                        }
                    }

                    filtrovaneKomentare.Add(koment);
                }
            }

            // Seřadíme reply comenty
            IList <KnihovnaKomentare> filtrovaneKomentareBackup = filtrovaneKomentare.ToList();
            IList <KnihovnaKomentare> posledniKomenty           = new List <KnihovnaKomentare>();

            foreach (KnihovnaKomentare koment in filtrovaneKomentareBackup)
            {
                if (koment.ReplyId <= 0)
                {
                    posledniKomenty.Add(koment);
                    // Přidáme všechny subkomenty
                    foreach (KnihovnaKomentare k in filtrovaneKomentareBackup)
                    {
                        if (k.ReplyId == koment.Id)
                        {
                            posledniKomenty.Add(k);
                        }
                    }
                }
            }

            ViewBag.Komentare = posledniKomenty;

            return(View(b));
        }