Пример #1
0
        public async Task <VoteDuoViewModel> GetDuo(int id, ApplicationUser currentLogedInUser)
        {
            var VoteDuoData = await _context.VotesDb.FirstOrDefaultAsync(r => r.Id == id) ??
                              await _context.VotesDb.FirstOrDefaultAsync(r => r.Id == _nextDuoService.DefaultDuoId);

            bool duoIsAlreadyVotedByUser = await didUserVotedThisDuo(VoteDuoData.Id, currentLogedInUser);

            var model = new VoteDuoViewModel
            {
                Id                      = VoteDuoData.Id,
                DuoFirst                = VoteDuoData.DuoFirst,
                DuoFirstVotes           = VoteDuoData.DuoFirstVotes,
                DuoSecond               = VoteDuoData.DuoSecond,
                DuoSecondVotes          = VoteDuoData.DuoSecondVotes,
                DuoTotalVotes           = VoteDuoData.DuoTotalVotes,
                DuoIsAlreadyVotedByUser = duoIsAlreadyVotedByUser
            };

            if (duoIsAlreadyVotedByUser)
            {
                model = new VoteDuoViewModel
                {
                    Id                      = VoteDuoData.Id,
                    DuoFirst                = VoteDuoData.DuoFirst,
                    DuoFirstVotes           = VoteDuoData.DuoFirstVotes,
                    DuoSecond               = VoteDuoData.DuoSecond,
                    DuoSecondVotes          = VoteDuoData.DuoSecondVotes,
                    DuoTotalVotes           = VoteDuoData.DuoTotalVotes,
                    DuoIsAlreadyVotedByUser = true,
                    DuoVotedByCurrentUserDb = _duoVotedByCurrentUser
                };
                return(model);
            }

            return(model);
        }
Пример #2
0
        public async Task <VoteDuoViewModel> VoteCast(int id, string votedDuoName, ApplicationUser currentLogedInUser)
        {
            var VoteDuoData = await _context.VotesDb.FirstOrDefaultAsync(r => r.Id == id);

            var userVotingData =
                await _context.UserVotingDbs.FirstOrDefaultAsync(r => r.UserID == currentLogedInUser.Id);


            bool duoIsAlreadyVotedByUser = await didUserVotedThisDuo(id, currentLogedInUser);

            var model = new VoteDuoViewModel();

            if (VoteDuoData != null)
            {
                if (!duoIsAlreadyVotedByUser && userVotingData.TotallVotingRights != 0)
                {
                    userVotingData.TotallCastedVotes  += 1;
                    userVotingData.TotallVotingRights -= 1;

                    VoteDuoData.DuoTotalVotes = VoteDuoData.DuoFirstVotes + VoteDuoData.DuoSecondVotes + 1;

                    if (votedDuoName == VoteDuoData.DuoFirst)
                    {
                        VoteDuoData.DuoFirstVotes += 1;
                    }
                    else if (votedDuoName == VoteDuoData.DuoSecond)
                    {
                        VoteDuoData.DuoSecondVotes += 1;
                    }

                    var duoVotedByCurrentUserData = new DuoVotedByUserDb
                    {
                        DuoID          = id,
                        UserVotingDbID = userVotingData.ID,
                        VotingTime     = DateTime.UtcNow
                    };

                    await _context.DuoVotedByUserDbs.AddAsync(duoVotedByCurrentUserData);

                    await _context.SaveChangesAsync();

                    model = new VoteDuoViewModel
                    {
                        Id                      = VoteDuoData.Id,
                        DuoFirst                = VoteDuoData.DuoFirst,
                        DuoFirstVotes           = VoteDuoData.DuoFirstVotes,
                        DuoSecond               = VoteDuoData.DuoSecond,
                        DuoSecondVotes          = VoteDuoData.DuoSecondVotes,
                        DuoTotalVotes           = VoteDuoData.DuoTotalVotes,
                        DuoIsAlreadyVotedByUser = true,
                        DuoVotedByCurrentUserDb = duoVotedByCurrentUserData
                    };

                    return(model);
                }


                if (userVotingData.TotallVotingRights == 0)
                {
                    duoIsAlreadyVotedByUser = false;
                    _duoVotedByCurrentUser  = new DuoVotedByUserDb();
                }

                model = new VoteDuoViewModel
                {
                    Id                      = VoteDuoData.Id,
                    DuoFirst                = VoteDuoData.DuoFirst,
                    DuoFirstVotes           = VoteDuoData.DuoFirstVotes,
                    DuoSecond               = VoteDuoData.DuoSecond,
                    DuoSecondVotes          = VoteDuoData.DuoSecondVotes,
                    DuoTotalVotes           = VoteDuoData.DuoTotalVotes,
                    DuoIsAlreadyVotedByUser = duoIsAlreadyVotedByUser,
                    DuoVotedByCurrentUserDb = _duoVotedByCurrentUser
                };
            }
            return(model);
        }