public void DiscreteLogarithmCreateDtoTest() { var dateTime = DateTime.Now; var dto = new DiscreteLogarithmCreateDto { Generator = 1, Modulus = 2, Result = 3, StartTime = dateTime }; Assert.AreEqual(1, dto.Generator); Assert.AreEqual(2, dto.Modulus); Assert.AreEqual(3, dto.Result); Assert.AreEqual(dateTime, dto.StartTime); }
public IActionResult CreateResource([FromBody] DiscreteLogarithmCreateDto createDto) { var result = base.CreateResource <DiscreteLogarithmCreateDto, DiscreteLogarithmGetDto>(createDto); if (CreatedResource == null) { return(result); } if (User.Identity.IsAuthenticated) { CreatedResource.SubscriberId = User.Claims.First(claim => claim.Type == JwtClaimTypes.Subject).Value; } CreatedResource.JobId = CreatedResource.StartJobService(); ResourceDataService.Update(CreatedResource); ResourceDataService.SaveChanges(); ExecutionLogger.SetExecutionId(CreatedResource.Id); ExecutionLogger.Info("Enqueued for execution."); return(result); }
public async Task <IActionResult> Solve(SolveViewModel model) { if (model.Problem == Problem.IntegerFactorization) { if (ModelState[nameof(SolveViewModel.Number)].Errors.Any()) { model.IsValid = false; ModelState.Clear(); return(View(model)); } try { var httpClient = await _quantumAlgorithmsHttpClient.GetClient(User.Identity.IsAuthenticated); var request = new IntegerFactorizationCreateDto { Number = model.Number }; var response = await httpClient.PostAsync("Api/IntegerFactorization", new StringContent( JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json")); if (!response.IsSuccessStatusCode) { model.ApiRequestFailed = true; ModelState.Clear(); return(View(model)); } var responseString = await response.Content.ReadAsStringAsync().ConfigureAwait(false); var executionId = JsonConvert.DeserializeObject <IntegerFactorizationGetDto>(responseString).Id; return(RedirectToAction("IntegerFactorization", "Solve", new { Id = executionId })); } catch (Exception) { return(RedirectToAction("Logout", "Authentication")); } } if (model.Problem == Problem.DiscreteLogarithm) { if (ModelState[nameof(SolveViewModel.Result)].Errors.Any() || ModelState[nameof(SolveViewModel.Generator)].Errors.Any() || ModelState[nameof(SolveViewModel.Modulus)].Errors.Any()) { model.IsValid = false; ModelState.Clear(); return(View(model)); } try { var httpClient = await _quantumAlgorithmsHttpClient.GetClient(User.Identity.IsAuthenticated); var request = new DiscreteLogarithmCreateDto { Result = model.Result, Generator = model.Generator, Modulus = model.Modulus }; var response = await httpClient.PostAsync("Api/DiscreteLogarithm", new StringContent( JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json")); if (!response.IsSuccessStatusCode) { model.ApiRequestFailed = true; ModelState.Clear(); return(View(model)); } var responseString = await response.Content.ReadAsStringAsync().ConfigureAwait(false); var executionId = JsonConvert.DeserializeObject <IntegerFactorizationGetDto>(responseString).Id; return(RedirectToAction("DiscreteLogarithm", "Solve", new { Id = executionId })); } catch (Exception) { return(RedirectToAction("Logout", "Authentication")); } } return(View()); }