public async Task <IActionResult> GenerateObservers([FromForm] int count) { if (!ControllerExtensions.ValidateGenerateObserversNumber(count)) { return(BadRequest("Incorrect parameter supplied, please check that paramter is between boundaries: " + ControllerExtensions.LOWER_OBS_VALUE + " - " + ControllerExtensions.UPPER_OBS_VALUE)); } var command = new ObserverGenerateCommand(count, NgoId); var result = await _mediator.Send(command); return(Ok(result)); }
public async Task <IAsyncResult> GenerateObservers([FromForm] int count) { if (!ControllerExtensions.ValidateGenerateObserversNumber(count)) { return(Task.FromResult(new BadRequestObjectResult("Incorrect parameter supplied, please check that paramter is between boundaries: " + ControllerExtensions.LOWER_OBS_VALUE + " - " + ControllerExtensions.UPPER_OBS_VALUE))); } ObserverGenerateCommand command = new ObserverGenerateCommand(count, ControllerExtensions.GetIdOngOrDefault(this, 0)); var result = _mediator.Send(command); return(Task.FromResult(new OkObjectResult(result.Result))); }
public async Task <List <GeneratedObserver> > Handle(ObserverGenerateCommand request, CancellationToken cancellationToken) { List <Entities.Observer> dbObservers = new List <Entities.Observer>(); List <GeneratedObserver> generatedObservers = new List <GeneratedObserver>(); for (int i = 0; i < request.NrObservers; ++i) { dbObservers.Add(RandomObserverBuilder.Instance(_hashService).Build(request.IdNgo)); } try { using (var tran = await _voteMonitorContext.Database.BeginTransactionAsync(cancellationToken)) { int latestId = _voteMonitorContext.Observers .OrderByDescending(o => o.Id) .First() .Id; dbObservers = dbObservers .Select(o => { o.Id = ++latestId; return(o); }) .ToList(); _voteMonitorContext.Observers.AddRange(dbObservers.ToArray()); await _voteMonitorContext.SaveChangesAsync(cancellationToken); tran.Commit(); return(dbObservers .Select(o => _mapper.Map <GeneratedObserver>(o)) .ToList()); } } catch (Exception ex) { _logger.LogError("Error during generation of random observers", ex, ex.Message); } return(await Task.FromResult(generatedObservers)); }