herderTicketTypeRange method

num herderTicketTypeRange(
  1. String ticketType,
  2. String herderId, {
  3. DateTime? end,
})

Implementation

num herderTicketTypeRange(String ticketType, String herderId,
    {DateTime? end}) {
  final filterByRange = (end != null)
      ? where((t) => t.date.isBefore(end))
          .where((t) => t.contactIdString == herderId)
          .where((t) => t.status)
      : where((t) => t.status).where((t) => t.contactIdString == herderId);
  switch (TicketType.tryParse(ticketType)) {
    case TicketType.sell:
      return filterByRange.where((t) => t.ticketType == TicketType.sell).fold(
          0, (prev, element) => prev + element.totalPriceTaxAndPromoIncluded);

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

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

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

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

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

    case TicketType.wage:
      return filterByRange
          .where((t) => t.ticketType == TicketType.wage)
          .fold(0.0, (prev, element) => prev + element.received);

    case TicketType.unknown:
      print(
          'rhaaaa unknow ticket type in herderTicketTypeRange, not again !');
      return 0;
    default:
      return 0;
  }
}