public ActionResult <Contest> Post([FromBody] ContestViewModel contest) { var newContest = new Contest { Id = contest.Id, Description = contest.Description, IsOpen = true }; rocketDbContext.Contests.Add(newContest); rocketDbContext.SaveChanges(); return(CreatedAtAction(nameof(Post), new { id = newContest.Id }, newContest)); }
public ActionResult <Bet> Post([FromBody] BetViewModel bet) { var user = rocketDbContext.Users.Find(bet.UserId); var contest = rocketDbContext.Contests.Find(bet.ContestId); if (user == null || contest == null) { throw new KeyNotFoundException(); } if (contest.IsOpen == false) { throw new Exception("Contest is not open !"); } var duplicateExists = rocketDbContext.Bets.Where(x => x.UserId == bet.UserId && x.ContestId == bet.ContestId).SingleOrDefault(); if (duplicateExists != null) { throw new Exception("Duplicate found !"); } var newBet = new Bet { Id = bet.Id, User = user, Contest = contest, Amount = bet.Amount, Outcome = bet.Outcome, Timestamp = DateTimeOffset.Now }; rocketDbContext.Bets.Add(newBet); var newTransaction = new Transaction { Type = 1, Amount = bet.Amount, Comment = $"Placed a bet of {bet.Amount}", UserId = user.Id }; rocketDbContext.Transactions.Add(newTransaction); rocketDbContext.SaveChanges(); return(CreatedAtAction(nameof(Post), new { id = newBet.Id }, newBet)); }
public ActionResult <Models.Transaction> Post([FromBody] TransactionViewModel transaction) { var user = rocketDbContext.Users.Find(transaction.UserId); var newTransaction = new Models.Transaction { Id = transaction.Id, Type = transaction.Type, Amount = transaction.Amount, Comment = transaction.Comment, User = user }; rocketDbContext.Transactions.Add(newTransaction); rocketDbContext.SaveChanges(); return(CreatedAtAction(nameof(Post), new { id = newTransaction.Id }, newTransaction)); }