private void Update(NewNominationViewModel nomination, string userName) { var existingNomination = Get(nomination.NominationId.GetValueOrDefault(), userName); existingNomination.Reason = nomination.Reason; _context.Nominations.Update(existingNomination); _context.SaveChanges(); }
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)); } }
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(); }