public async Task <IActionResult> Get(int lotId) { var lot = await _repository.Find(lotId); if (lot != null) { // lot.EndAt = lot.EndAt.AddMinutes(this.GetTimezoneOffset()); var isOwner = HttpContext.User.Identity.IsAuthenticated && (lot.AppUserId == HttpContext.UserId() || User.IsInRole(Constants.AdminRole)); if (lot.IsAvailable || isOwner) { await _repository.LoadRates(lot); ViewBag.Time = lot.EndAt.AddMinutes(this.GetTimezoneOffset()); ViewData["UserId"] = HttpContext.UserId(); ViewData["Funded"] = lot.Rates?.OrderByDescending(c => c.CreatedAt).FirstOrDefault()?.Amount ?? 0m; return(View(lot)); } } ViewBag.Message = $"Lot with Id {lotId} not found"; return(NotFound()); }
public async Task Find_Rates_Test() { var lot = await repository.Find(1); Assert.Equal(Lots[0], lot); Assert.Equal(Lots[0].Id, lot.Id); await repository.LoadRates(lot); Assert.Equal(Rates, lot.Rates); Assert.Equal(Rates.Count, lot.Rates.Count); }
private async Task <Rate> SaveBet(int lotId, decimal bet) { var lot = await _lotRepository.Find(lotId); if (lot != null) { await _lotRepository.LoadRates(lot); if ((lot.Rates.Count == 0 || bet > lot.Rates.Max(i => i.Amount)) && bet >= lot.MinPrice) { var rate = new Rate { Amount = bet, CreatedAt = DateTime.UtcNow, LotId = lotId, AppUserId = Context.UserIdentifier }; return(await _repository.Add(rate)); } } return(null); }