private void Update(NewNominationViewModel nomination, string userName)
        {
            var existingNomination = Get(nomination.NominationId.GetValueOrDefault(), userName);

            existingNomination.Reason = nomination.Reason;
            _context.Nominations.Update(existingNomination);
            _context.SaveChanges();
        }
Esempio n. 2
0
        public async Task <IActionResult> Add([FromBody] NewNominationViewModel nomination)
        {
            try
            {
                await _nominationRepository.Add(nomination, User, HttpContext.Session);

                return(Ok());
            }
            catch (Exception ex)
            {
                return(StatusCode(500, ex.Message));
            }
        }
Esempio n. 3
0
        public async Task <Nominee> PopulateNominee(NewNominationViewModel nomination, ClaimsPrincipal user, ISession session)
        {
            var accessToken = await GetAuthToken(user, session);

            var userInfo = await GetUserInfo(nomination.Email, accessToken);

            return(new Nominee
            {
                CategoryID = nomination.CategoryID,
                Email = nomination.Email,
                Name = userInfo.FullName,
                Image = await GetUserPicture(nomination.Email, accessToken),
                Nominations = new List <Nomination>()
            });
        }
        public async Task Add(NewNominationViewModel nomination, ClaimsPrincipal user, ISession session)
        {
            var userName = user.Identity.Name;

            if (nomination.NominationId != null)
            {
                Update(nomination, userName);
                return;
            }
            var existingNominee = _context.Nominees.Include("Nominations").FirstOrDefault(
                o => o.CategoryID == nomination.CategoryID && o.Email == nomination.Email);

            if (existingNominee != null)
            {
                if (existingNominee.Nominations.Any(o => o.Nominator == userName))
                {
                    throw new Exception($"You have already nominated {nomination.Email} in this category");
                }
                var newNomination = new Nomination
                {
                    NomineeID = existingNominee.ID,
                    Nominator = userName,
                    Reason    = nomination.Reason
                };
                _context.Nominations.Add(newNomination);
            }
            else
            {
                var newNominee = await _graphRepository.PopulateNominee(nomination, user, session);

                newNominee.Nominations.Add(new Nomination
                {
                    Nominator = userName,
                    Reason    = nomination.Reason
                });

                _context.Nominees.Add(newNominee);
            }
            _context.SaveChanges();
        }