Example #1
0
        public IActionResult Details(int id)
        {
            _logger.LogInformation(DateTime.Now.ToString("dd.MM.yyyy, HH:mm:ss"));
            var campaign    = _context.Campaigns.Find(id);
            var achieveGood = new UserAchievementsModel
            {
                UserId        = _userManager.GetUserId(this.User),
                AchievementId = _context.Achievements.Where(x => x.Name == "Good start").First().Id,
                GetDate       = DateTime.Now
            };
            var achieveSad = new UserAchievementsModel
            {
                UserId        = _userManager.GetUserId(this.User),
                AchievementId = _context.Achievements.Where(x => x.Name == "It could be worse...").First().Id,
                GetDate       = DateTime.Now
            };
            var isUserHasAcvhieveGood = _context.UserAchievements.Where(x => x.UserId == achieveGood.UserId && x.AchievementId == achieveGood.AchievementId).Any();
            var isUserHasAcvhieveSad  = _context.UserAchievements.Where(x => x.UserId == achieveSad.UserId && x.AchievementId == achieveSad.AchievementId).Any();

            if (campaign.EndTime < DateTime.Now)
            {
                campaign.Ended = true;
                var isGoodEnd = campaign.RemainSum >= campaign.TotalSum;
                if (!isUserHasAcvhieveGood && isGoodEnd)
                {
                    _context.UserAchievements.Add(achieveGood);
                    _notyfService.Success("You got new achievement!");
                }
                else if (!isUserHasAcvhieveSad && !isGoodEnd)
                {
                    _context.UserAchievements.Add(achieveSad);
                    _notyfService.Success("You got new achievement!");
                }
                _context.SaveChanges();
            }
            var commentVm = new CommentViewModel
            {
                Campaign = _context.Campaigns.Find(id),
                Comments = _context.Comments.ToList(),
                Rating   = new Rating
                {
                    CampaignId = id
                }
            };

            return(View(commentVm));
        }
        public async Task <IActionResult> CreateAsync(Campaign campaign)
        {
            if (ModelState.IsValid)
            {
                if (campaign.ImageFile != null)
                {
                    var    file     = campaign.ImageFile;
                    string filePath = await _cloudStorage.GetFilePathAsync(file);

                    var uri = _cloudStorage.UploadImage(filePath);
                    campaign.ImageUrl = uri.ToString();
                }
                else
                {
                    campaign.ImageUrl = "https://res.cloudinary.com/dwivxsl5s/image/upload/v1621205266/no-img_if8frz.jpg";
                }

                campaign.Author    = _userManager.GetUserName(this.User);
                campaign.UserId    = _userManager.GetUserId(this.User);
                campaign.BeginTime = DateTime.Now;
                campaign.RemainSum = 0;
                var achieve = new UserAchievementsModel
                {
                    UserId        = _userManager.GetUserId(this.User),
                    AchievementId = _context.Achievements.Where(x => x.Name == "That's only the beginning!").First().Id,
                    GetDate       = DateTime.Now
                };
                var campaignsCurrentUserCount = _context.Campaigns.Where(x => x.Author == campaign.Author).Count();
                var isUserHasAcvhieve         = _context.UserAchievements.Where(x => x.UserId == achieve.UserId && x.AchievementId == achieve.AchievementId).Any();
                if (!isUserHasAcvhieve && campaignsCurrentUserCount < 1)
                {
                    _context.UserAchievements.Add(achieve);
                    _notyfService.Success("You got new achievement!");
                }
                _context.Campaigns.Add(campaign);
                _context.SaveChanges();
            }
            return(RedirectPermanent("~/Home/Index"));
        }