public async Task <IActionResult> CreateGateUsageChart([FromBody] CreateGateUsageChart command) { command.RequestedBy = HttpContext.User.Identity.Name; var result = await _mediator.Send(command); return(StatusCodeResult(result)); }
public async Task <Result <ChartResponse> > Handle(CreateGateUsageChart request, CancellationToken cancellationToken) { try { if (request.From > request.To) { return(Result <ChartResponse> .BadRequest("From date cannot be bigger than To")); } var user = await _userRepository.GetUserByEmail(request.RequestedBy); var logs = await _logService.GetAll(); logs = logs.Where(x => x.UserId == user.Id && x.EventTypeId == 4); var data = new Dictionary <string, int>(); var startDate = request.From; while (startDate < request.To) { data.Add(startDate.ToString("dd.MM.yyyy"), 0); startDate = startDate.AddDays(1); } if (!data.ContainsKey(request.To.ToString("dd.MM.yyyy"))) { data.Add(request.To.ToString("dd.MM.yyyy"), 0); } foreach (var log in logs) { var creationDate = log.CreatedAt.ToString("dd.MM.yyyy"); if (data.ContainsKey(creationDate)) { data[creationDate]++; } } var chartResponse = new ChartResponse { ChartData = data }; return(Result <ChartResponse> .Ok(chartResponse)); } catch (Exception e) { return(Result <ChartResponse> .Failure(e.Message)); } }