Esempio n. 1
0
        private async Task SetState(
            CProfile user,
            CNews news,
            string state,
            string link)
        {
            var isLike = await context
                         .StatisticNews
                         .FirstOrDefaultAsync(sn => sn.Like == user && sn.News == news);

            var isDislike = await context
                            .StatisticNews
                            .FirstOrDefaultAsync(sn => sn.Dislike == user && sn.News == news);

            var isViews = await context
                          .StatisticNews
                          .FirstOrDefaultAsync(sn => sn.ViewBy == user && sn.News == news);

            if (state == "like")
            {
                await SetLike(isLike, isDislike, isViews, user, news, link);
            }
            else if (state == "dislike")
            {
                await SetDislike(isDislike, isLike, isViews, user, news);
            }
            else if (state == "view")
            {
                await SetView(isViews, user, news);
            }
            await context.SaveChangesAsync();
        }
Esempio n. 2
0
        private async Task SetNotificationAsync(CProfile user, CNews news, string link)
        {
            var profileFromName = user.User.UserName;
            var profilFrom      = user.Id;
            var profileTo       = news.Owner;
            var text            = $"Пользователь {profileFromName} оценил вашу";
            var alt             = "статью";

            await notificationService.AddNotification(profileTo, profilFrom, text, link, alt);
        }
Esempio n. 3
0
 private async Task SetView(CStatisticNews isViews, CProfile user, CNews news)
 {
     if (isViews == null)
     {
         await context
         .StatisticNews
         .AddAsync(new CStatisticNews
         {
             News   = news,
             Like   = null,
             ViewBy = user
         });
     }
 }
Esempio n. 4
0
        private async Task SetLike(CStatisticNews isLike, CStatisticNews isDislike, CStatisticNews isViews, CProfile user, CNews news, string link)
        {
            if (isLike == null)
            {
                if (isDislike == null)
                {
                    if (isViews == null)
                    {
                        await context
                        .StatisticNews
                        .AddAsync(new CStatisticNews
                        {
                            News       = news,
                            Like       = user,
                            ViewBy     = user,
                            IsNotifyed = true
                        });

                        if (user.Id != news.Owner.Id)
                        {
                            await SetNotificationAsync(user, news, link);
                        }
                    }
                    else
                    {
                        if (!isViews.IsNotifyed && user.Id != news.Owner.Id)
                        {
                            await SetNotificationAsync(user, news, link);

                            isViews.IsNotifyed = true;
                        }

                        isViews.Like = user;
                        context.StatisticNews.Update(isViews);
                    }
                }
                else
                {
                    if (!isDislike.IsNotifyed && user.Id != news.Owner.Id)
                    {
                        await SetNotificationAsync(user, news, link);

                        isDislike.IsNotifyed = true;
                    }

                    isDislike.Dislike = null;
                    isDislike.Like    = user;
                    context.StatisticNews.Update(isDislike);
                }
            }
            else
            {
                isLike.Like = null;
                context.StatisticNews.Update(isLike);
            }
        }
Esempio n. 5
0
 private async Task SetDislike(CStatisticNews isDislike, CStatisticNews isLike, CStatisticNews isViews, CProfile user, CNews news)
 {
     if (isDislike == null)
     {
         if (isLike == null)
         {
             if (isViews == null)
             {
                 await context
                 .StatisticNews
                 .AddAsync(new CStatisticNews
                 {
                     News    = news,
                     Dislike = user,
                     ViewBy  = user
                 });
             }
             else
             {
                 isViews.Dislike = user;
                 context.StatisticNews.Update(isViews);
             }
         }
         else
         {
             isLike.Like    = null;
             isLike.Dislike = user;
             context.StatisticNews.Update(isLike);
         }
     }
     else
     {
         isDislike.Dislike = null;
         context.StatisticNews.Update(isDislike);
     }
 }