public AwardModel CheckCode(UserCodeModel userCodeModel) { using (var uow = new UnitOfWork(dbContext)) { var code = codeRepository.GetAll().FirstOrDefault(x => x.CodeValue == userCodeModel.Code.CodeValue); if (code == null) { throw new ApplicationException("Invalid Code"); } if (code.IsUsed) { throw new ApplicationException("Code is used"); } var userCode = new UserCode(userCodeModel.FirstName, userCodeModel.LastName, userCodeModel.Email, DateTime.Now, code); userCodeRepository.Insert(userCode); Award award = null; if (code.IsWinning) { award = GetRandomAward(RuffledType.Immediate); var userCodeAward = new UserCodeAward(award, userCode, DateTime.Now); userCodeAwardRepository.Insert(userCodeAward); } code.IsUsed = true; uow.Commit(); return(award?.Map <Award, AwardModel>()); } }
/// <summary> /// Checks if a code is a winner and registers code in database for future ruffles /// </summary> /// <param name="userCodeModel"></param> /// <returns></returns> public AwardModel CheckCode(UserCodeModel userCodeModel) { var codeRepository = new Repository <Code>(new DbContext("LotteryDb")); var code = codeRepository.GetAll().FirstOrDefault(x => x.CodeValue == userCodeModel.Code.CodeValue); if (code == null) { throw new ApplicationException("Invalid code."); } if (code.IsUsed) { throw new ApplicationException("Code is used."); } var userCode = new UserCode { Code = code, Email = userCodeModel.Email, FirstName = userCodeModel.FirstName, LastName = userCodeModel.LastName, SentAt = DateTime.Now }; var userCodeRepository = new Repository <UserCode>(new DbContext("LotteryDb")); userCodeRepository.Insert(userCode); Award award = new Award() { RuffledType = (byte)RuffledType.Immediate, AwardName = "Another 0.5 Bottle", Quantity = 1 }; var userCodeAward = new UserCodeAward { Award = award, UserCode = userCode, WonAt = DateTime.Now }; var userCodeAwardRepository = new Repository <UserCodeAward>(new DbContext("LotteryDb")); userCodeAwardRepository.Insert(userCodeAward); code.IsUsed = true; return(new AwardModel() { AwardName = award.AwardName, AwardDescription = award.AwardDescription }); }
public AwardModel CheckCode(UserCodeModel userCodeModel) { using (var uow = new UnitOfWork(_dbContext)) { var code = _codeRepository.GetAll().FirstOrDefault(x => x.CodeValue == userCodeModel.Code.CodeValue); if (code == null) { throw new ApplicationException("Invalid code."); } if (code.IsUsed) { throw new ApplicationException("Code has already been used."); } var userCode = new UserCode { Code = code, FirstName = userCodeModel.FirstName, LastName = userCodeModel.LastName, EMail = userCodeModel.EMail, SentAt = DateTime.Now }; _userCodeRepository.Insert(userCode); Award award = null; if (code.IsWinning) { award = GetRandomAward(RaffledType.Immediate); var userCodeAward = new UserCodeAward { Award = award, UserCode = userCode, WonAt = DateTime.Now }; _userCodeAwardRepository.Insert(userCodeAward); } code.IsUsed = true; uow.Commit(); return(award?.Map <Award, AwardModel>()); } }