fetchCowsCntByStatus method Null safety

Future<CowStatus> fetchCowsCntByStatus(
  1. {required DateTime targetAt,
  2. required int dayAfterBirthStart,
  3. required int dayAfterBirthEnd,
  4. bool joinCowData = false}
)

일령별 소 상태를 가져옵니다.

Implementation

Future<CowStatus> fetchCowsCntByStatus({
  /// 상태를 가져올 타겟 날짜입니다
  required DateTime targetAt,

  /// 시작 일령 값 입니다.
  /// 예를 들어 1일령 이상 15일령 이하 개체들의 개체상태를 가져오고 싶다면
  /// 1일령이 시작 일령 값이고 15일령이 끝 일령 값입니다.
  required int dayAfterBirthStart,

  /// 끝 일령 값 입니다.
  required int dayAfterBirthEnd,

  /// 소데이터와 Join을 할것인지(true) 하지않을것(false)인지를 나타내는 파라메터입니다.
  /// Join을 하게되면 targetAt 날짜에 소데이터가 없는 개체들의 상태는 카운팅하지 않습니다.
  /// 홈화면에서는 이 값이 false이고
  /// 개체현황 화면에서는 이 값이 true입니다.
  bool joinCowData = false,
}) async {
  LogManager().addLog("fetchCowsCntByStatus", screen: runtimeType.toString());
  try {
    final Map<String, dynamic> body = await reqGET(
      path: '/api/cows/count_by_status',
      queryParameters: {
        "farm_id": farmState.currentFarm!.id,
        "target_at": DateFormat(StringConstants.timeYMDDashFormat).format(targetAt),
        "day_after_birth_start": dayAfterBirthStart.toString(),
        "day_after_birth_end": dayAfterBirthEnd.toString(),
        "join_cow_data": joinCowData.toString(),
      },
    );
    CowStatus cowStatus = CowStatus.fromJson(body);
    return cowStatus;
  } catch (e) {
    LogManager().addLog('fetchCowsCntByStatus call failed: $e', screen: runtimeType.toString());
    rethrow;
  }
}