public async Task <ActionResult <dynamic> > Availability(AvailabilityViewModel reservationIn) { if (!ModelState.IsValid) { return(BadRequest(new ValidationProblemDetails(ModelState))); } if (string.IsNullOrWhiteSpace(reservationIn.CronoExpression)) { var freeResources = await _reservationService.Availability(reservationIn.Start, reservationIn.End, reservationIn.ResourceType, reservationIn.ResourceSubTypes, null); return(freeResources); } else { var expression = CronExpression.Parse(reservationIn.CronoExpression); var occurrences = expression.GetOccurrences( reservationIn.Start, reservationIn.End, fromInclusive: true, toInclusive: true); if (occurrences == null) { return(null); } var freeResources = await _reservationService.Availability(reservationIn.Start, reservationIn.End, reservationIn.ResourceType, reservationIn.ResourceSubTypes, occurrences); return(freeResources); } }