public ActionResult <SlotResponse> CalculateWin([FromForm] decimal amount) { /*var slotUser = _slotMachineService.Get(name);*/ var slotUser = _slotMachineService.Get(GetUserId()); if (slotUser == null) { return(NotFound("User not found")); } if (slotUser.Balance < amount) { return(BadRequest("Not enough balance")); } var configData = _configService.Get("5fede93d67fed1af36bfc647"); if (configData == null) { return(NotFound()); } int[] bet = new int[configData.ArraySize]; Random randNum = new Random(); for (int i = 0; i < bet.Length; i++) { bet[i] = randNum.Next(0, 10); } int winAmount = bet[0]; int prev = bet[0]; for (int i = 1; i < bet.Length; i++) { if (bet[i] == prev) { winAmount += bet[0]; } else { break; } } decimal finalWin = winAmount * amount; var finalResponse = new SlotResponse(); finalResponse.Balance = slotUser.Balance - amount + finalWin; finalResponse.spinArray = bet; finalResponse.UserId = slotUser.UserId; finalResponse.WinAmount = finalWin; slotUser.Balance = slotUser.Balance - amount + finalWin; _slotMachineService.Update(slotUser.UserId, slotUser); return(finalResponse); }
private static Resource FindSlot(TempAddAppointmentRequest request, SlotResponse slots) { return(slots.entry .Select(e => e.resource) .Where(r => r.resourceType == "Slot") .First(s => s.start >= request.Start.Subtract(new TimeSpan(0, 0, 1)) && s.end <= request.End.AddSeconds(1))); }
private static string GetLocaationId(SlotResponse slots, string scheduleId) { var locationId = slots.entry.Select(e => e.resource) .Where(r => r.resourceType == "Schedule") .First(s => s.id == scheduleId) .actor.First(a => a.reference.StartsWith("Location/")).reference; return(locationId); }