contactTicketTypeEndDate method

num contactTicketTypeEndDate(
  1. TicketType ticketType,
  2. String contactIdString, {
  3. DateTime? end,
})

Implementation

num contactTicketTypeEndDate(TicketType ticketType, String contactIdString,
    {DateTime? end}) {
  final filterByRange = (end != null)
      ? where((t) => t.status)
          .where((t) => '${t.contactId}' == contactIdString)
          .where((t) => t.date.isBefore(end) || t.date.isAtSameMomentAs(end))
      : where((t) => t.status)
          .where((t) => '${t.contactId}' == contactIdString);

  // print('in filter by range');
  switch (ticketType) {
    case TicketType.sell:
      return filterByRange
          .where((t) => t.ticketType == TicketType.sell)
          .fold(0, (prev, element) => prev + element.total);

    case TicketType.sellDeferred:
      return filterByRange
          .where((t) => t.ticketType == TicketType.sellDeferred)
          .fold(0, (prev, element) => prev + element.total);

    case TicketType.sellCovered:
      return filterByRange
          .where((t) => t.ticketType == TicketType.sellCovered)
          .fold(0, (prev, element) => prev + element.total);

    case TicketType.spend:
      return filterByRange
          .where((t) => t.ticketType == TicketType.spend)
          .fold(0, (prev, element) => prev + element.total);

    case TicketType.spendDeferred:
      return filterByRange
          .where((t) => t.ticketType == TicketType.spendDeferred)
          .fold(0, (prev, element) => prev + element.total);

    case TicketType.spendCovered:
      return filterByRange
          .where((t) => t.ticketType == TicketType.spendCovered)
          .fold(0, (prev, element) => prev + element.total);

    case TicketType.wage:
      return filterByRange
          .where((t) => t.ticketType == TicketType.wage)
          .fold(0, (prev, element) => prev + element.total);
    case TicketType.unknown:
      print(
          'rhaaaa unknow ticket type in contactTicketTypeRangeDate, not again !');
      return 0;
    default:
      return 0;
  }
}