public object GetSeriesRiportDiagram(ReportDiagramSerDto diagram) { Report report = _reportRepository.Get(diagram.ReportGUID); if (report == null) { throw new NotFoundException("Report not found by GUID."); } DataTable data = new DataTable(); string sql = $"select {diagram.NameColumn}, {diagram.SeriesNameColumn}, {diagram.ValueColumn} from {report.Query.ResultTableName} order by {diagram.NameColumn}"; string sourceConn = _cfg.GetConnectionString("DefaultConnection"); using (SqlConnection conn = new SqlConnection(sourceConn)) { SqlCommand cmd = new SqlCommand(sql, conn); conn.Open(); data.Load(cmd.ExecuteReader()); } List <SeriesDto> result = new List <SeriesDto>(); string prevName = string.Empty; List <SeriesValueDto> values = new List <SeriesValueDto>(); foreach (DataRow row in data.Rows) { if (prevName != row[diagram.NameColumn].ToString() && !String.IsNullOrEmpty(prevName)) { result.Add(new SeriesDto { Name = prevName, Series = values.ToArray() }); values.Clear(); } prevName = row[diagram.NameColumn].ToString(); DateTime date = (DateTime)(row[diagram.SeriesNameColumn]); values.Add(new SeriesValueDto { Name = date.ToString("yyyy-MM-dd"), Value = double.Parse(row[diagram.ValueColumn].ToString()) }); } //add last ones result.Add(new SeriesDto { Name = prevName, Series = values.ToArray() }); return(result.Take(5).ToArray()); }
public IActionResult GetSeriesReportDiagram([FromBody] ReportDiagramSerDto diagram) { try { if (diagram == null) { throw new BasicException("Invalud input format!"); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var result = _manager.GetSeriesRiportDiagram(diagram); return(Ok(result)); } catch (BasicException ex) { _logger.LogError(ex.Message); return(BadRequest(ex.Message)); } catch (NotFoundException ex) { _logger.LogError(ex.Message); return(NotFound(ex.Message)); } catch (PermissionException ex) { _logger.LogError(ex.Message); return(Unauthorized()); } catch (Exception ex) { _logger.LogError(ex.Message); return(BadRequest()); } }