public async Task <IActionResult> Details(int?id) { IActionResult actionResult = null; var viewModel = new UserDetailsViewModel(); var attendee = id.HasValue ? await this.DatabaseContext.Attendee .FirstOrDefaultAsync(m => m.UserID == id) : null; if (attendee == null) { actionResult = this.NotFound(); } else { viewModel.User = attendee; viewModel.PointsBalance = PointsUtils.GetPointsForUser( attendee.UserID, this.DatabaseContext); actionResult = this.View(viewModel); } return(actionResult); }
public async Task <IActionResult> CheckBalance(string UserNumber) { var viewModel = new CheckBalanceJsonViewModel(); try { //validate var user = await _context.User.FirstOrDefaultAsync(i => i.UserNumber == UserNumber); if (user == null) { throw new ApplicationException("User not found."); } viewModel.ResponseData.PointsBalance = PointsUtils.GetPointsForUser(user.UserID, _context); viewModel.ResponseData.UserNumber = user.UserNumber; viewModel.ResponseData.ExternalID = user.ExternalID; } catch (Exception ex) { viewModel.ErrorMessage = ex.Message; viewModel.ResponseData = null; } return(new JsonResult(viewModel)); }
public async Task <IActionResult> LogAction(string AwardNumber, string UserNumber) { var viewModel = new LogActionJsonViewModel(); try { //validate var award = await _context.Award.FirstOrDefaultAsync(i => i.AwardNumber == AwardNumber); if (award == null) { throw new ApplicationException("Award not found."); } var user = await _context.User.FirstOrDefaultAsync(i => i.UserNumber == UserNumber); if (user == null) { throw new ApplicationException("User not found."); } var existingAwardLogByThisUser = await _context.AwardLog.FirstOrDefaultAsync(i => i.UserID == user.UserID && i.AwardID == award.AwardID); if (existingAwardLogByThisUser != null) { throw new ApplicationException($"User has already been Awarded points for this action. User has {PointsUtils.GetPointsForUser(user.UserID, _context)} points."); } //good to go! var awardLog = new AwardLog(); awardLog.AwardID = award.AwardID; awardLog.CreatedDate = DateTime.UtcNow; awardLog.ModifiedDate = awardLog.CreatedDate; awardLog.Points = award.Points; awardLog.UserID = user.UserID; _context.Add(awardLog); await _context.SaveChangesAsync(); viewModel.ResponseData.PointsAwarded = awardLog.Points; viewModel.ResponseData.PointsBalance = PointsUtils.GetPointsForUser(user.UserID, _context); viewModel.ResponseData.UserNumber = user.UserNumber; viewModel.ResponseData.ExternalID = user.ExternalID; } catch (Exception ex) { viewModel.ErrorMessage = ex.Message; viewModel.ResponseData = null; } return(new JsonResult(viewModel)); }
// GET: User/Details/5 public async Task <IActionResult> Details(int?id) { var viewModel = new UserDetailsViewModel(); if (id == null) { return(NotFound()); } var atendee = await _context.User .SingleOrDefaultAsync(m => m.UserID == id); if (atendee == null) { return(NotFound()); } viewModel.User = atendee; viewModel.PointsBalance = PointsUtils.GetPointsForUser(atendee.UserID, _context); return(View(viewModel)); }
public async Task <IActionResult> LogAction(string RedemptionNumber, string UserNumber) { var viewModel = new LogRedemptionJsonViewModel(); try { //validate var redemption = await _context.Redemption.FirstOrDefaultAsync(i => i.RedemptionNumber == RedemptionNumber); if (redemption == null) { throw new ApplicationException("Redemption not found."); } var user = await _context.User.FirstOrDefaultAsync(i => i.UserNumber == UserNumber); if (user == null) { throw new ApplicationException("User not found."); } var existingRedemptionByUser = await _context.RedemptionLog.FirstOrDefaultAsync(i => i.UserID == user.UserID && i.RedemptionID == redemption.RedemptionID); if (existingRedemptionByUser != null) { throw new ApplicationException($"User has already Redeemed this. User has {PointsUtils.GetPointsForUser(user.UserID, _context)} points."); } //check if we have enough points int pointsShort = 0; int userPoints = PointsUtils.GetPointsForUser(user.UserID, _context); int pointsRequired = redemption.PointsRequired; bool hasEnoughPoints = false; pointsShort = pointsRequired - userPoints; if (pointsShort <= 0) { hasEnoughPoints = true; pointsShort = 0; } if (hasEnoughPoints) { //good to go! var redemptionLog = new RedemptionLog(); redemptionLog.RedemptionID = redemption.RedemptionID; redemptionLog.CreatedDate = DateTime.UtcNow; redemptionLog.ModifiedDate = redemptionLog.CreatedDate; redemptionLog.UserID = user.UserID; _context.Add(redemptionLog); await _context.SaveChangesAsync(); } viewModel.ResponseData.PointsShort = pointsShort; viewModel.ResponseData.Success = hasEnoughPoints; viewModel.ResponseData.PointsBalance = PointsUtils.GetPointsForUser(user.UserID, _context); viewModel.ResponseData.UserNumber = user.UserNumber; viewModel.ResponseData.ExternalID = user.ExternalID; } catch (Exception ex) { viewModel.ErrorMessage = ex.Message; viewModel.ResponseData = null; } return(new JsonResult(viewModel)); }