Сервисный вызов Angular 6 с параметром даты - PullRequest
0 голосов
/ 15 октября 2018

Моя цель - отобразить во внешнем интерфейсе все результаты таблицы, учитывая следующие параметры: агентство (ID), startDate и endDate.

My C # back-endвыполняет большую часть работы:

[HttpGet("~/api/agencies/{agency}/housewatches/")]
public async Task<ActionResult> GetAllAsync(int agency, DateTime? startDate = null, DateTime? endDate = null)
{

var housewatches = _context.HouseWatchMaster.Where(
    s => s.Agency.Equals(agency)
        && !s.Retired.Equals("Y"));

if (startDate != null && endDate != null)
    housewatches = housewatches.Where(
        s => (s.StartDate >= startDate && s.EndDate <= endDate)
            || (s.StartDate <= startDate && s.EndDate >= endDate)
            || (endDate >= s.StartDate && endDate <= s.EndDate)
            || (startDate >= s.StartDate && startDate <= s.EndDate));

return Ok(await housewatches
    .AsQueryable()
    .ToListAsync());
}

Это то, что у меня есть для моего вызова службы:

// Get all house watches with the given agency, and optional start and end date
getHouseWatchesWithDates(
  agency: number | string,
  startDate?: Date,
  endDate?: Date
): Observable<HousewatchModel[]> {
return this.http
  .get<HousewatchModel[]>(
    `${this.apiUrl}/agencies/${agency}/housewatches`
  )
  .pipe(
    tap(houseWatches => console.log(`fetched house watches!`)),
    catchError(e => throwError(e))
  );
}

Любая помощь по продвижению вперед, включая startDate и endDateпараметры в моем сервисном звонке будет принята с благодарностью!Также, пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

1 Ответ

0 голосов
/ 15 октября 2018

Что бы я сделал, чтобы сделать ваши параметры даты C # как [FromQuery], например:

public async Task<ActionResult> GetAllAsync(int agency, 
    [FromQuery(Name="startDate")] DateTime? startDate = null, 
    [FromQuery(Name="endDate")] DateTime? endDate = null)

В службе Angular проверьте, не являются ли они нулевыми или неопределенными, и передайте их как параметры запроса.

getHouseWatchesWithDates(
    agency: number | string,
    startDate?: Date,
    endDate?: Date
): Observable<HousewatchModel[]> {
    let link = `${this.apiUrl}/agencies/${agency}/housewatches`;
    let params = '';

    if (startDate) {
        params = 'startDate=' + startDate.toISOString() + '&'
    }

    if (endDate) {
        params += 'endDate=' + endDate.toISOString();
    }

    if (params) {
        link += `?${params}`;
    }

    return this.http
        .get<HousewatchModel[]>(link)
        .pipe(
            tap(houseWatches => console.log(`fetched house watches!`)),
            catchError(e => throwError(e))
        );
}

Это должно передать параметры, если таковые имеются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...