Как получить конкретные отчеты по идентификатору в C # - PullRequest
0 голосов
/ 02 января 2019

Код генерирует все события определенного производителя, так что работает. Но проблема в том, что когда я возвращаю новый ApiListModel (), он переходит в класс ApiListModel, а затем он говорит: «status_code»: 200, «data»: null.

Как сгенерировать, выполнив следующий URL: / api / dashboard / 1, значение вместо «status_code»: 200, «data»: null?

DashboardController.cs

    [HttpGet("{id}")]
    public async Task<ApiListModel<EventPerYearReport>> GetEventPerYearReport(int id)
    {
        return await _dashboardService.GetEventPerYearReport(id);
    }

DashboardService.cs

    public async Task<ApiListModel<EventPerYearReport>> GetEventPerYearReport(int id)
    {
        var results = _dbContext.Events
            .Where(p => p.ProducerId == id)
            .GroupBy(e => e.DateStartEvent.ToString("yyyy"), (year, values) => new EventPerYear
            {
                year = year,
                total = values.Count(),
            }).ToList();

        var report = new EventPerYearReport()
        {
            eventsPerYear = results
        };
        return new ApiListModel<EventPerYearReport>();
    }

ApiListModel.cs

public class ApiListModel<T>
{
    [JsonProperty(PropertyName = "status_code")]
    public int StatusCode = 200;

    [JsonProperty(PropertyName = "data")]
    public List<T> Data;
}

EventPerYearReport.cs

public class EventPerYearReport
{
    public List<EventPerYear> eventsPerYear { get; set; }
}

1 Ответ

0 голосов
/ 02 января 2019

Ваш DashboardService.cs возвращает new ApiListModel<EventPerYearReport>();, это всегда будет иметь нулевые данные.

Чтобы исправить это, вам нужно использовать следующее

    public async Task<ApiListModel<EventPerYearReport>> GetEventPerYearReport(int id)
        {
            var results = _dbContext.Events
                .Where(p => p.ProducerId == id)
                .GroupBy(e => e.DateStartEvent.ToString("yyyy"), (year, values) 
    => new EventPerYear
                {
                    year = year,
                    total = values.Count(),
                }).ToList();
        return new ApiListModel<EventPerYearReport>()
        {
            Data = new EventPerYearRaport()
            {
                eventsPerYear = results
            }
        };
    }
...