public async Task <IActionResult> ClearMobs(string needDifferentSignature) { var user = await _userManager.GetUserAsync(HttpContext.User); var lastRequest = _userRepository.GetLastUtilityRequestByType(UtilityRequestType.ClearMobs, user.Id); DateTime?lastUsed = lastRequest?.RequestTime; if (lastUsed == null || lastUsed.Value.AddSeconds(SystemConstants.CLEAR_MOBS_COOLDOWN) < DateTime.UtcNow) { if (user.GamerTag != null) { var newRequest = new UtilityRequest { RequestTime = DateTime.UtcNow, UserId = user.Id, UtilityRequestType = UtilityRequestType.ClearMobs }; _userRepository.SaveUtilityRequestAsync(newRequest); lastUsed = DateTime.UtcNow; foreach (var mob in _applicationSettings.MobsToClear) { var command = $"execute {user.GamerTag} ~ ~ ~ kill @e[r=65, type={mob}, name=!KEEPME]"; _wrapper.SendInput(command, null); // These guys area special because they need to be killed several times, and it takes some time before the smaller ones spawn. if (mob == "slime" || mob == "magma_cube") { Thread.Sleep(1000); } } ViewBag.Status = "Request processed."; } else { if (string.IsNullOrEmpty(user.GamerTag)) { ViewBag.Status = SystemConstants.NO_GAMERTAG_ERROR; } } } return(View(lastUsed)); }
public async void SaveUtilityRequestAsync(UtilityRequest newRequest) { _context.UtilityRequest.Add(newRequest); await _context.SaveChangesAsync(); }