public IActionResult GetBooks([FromQuery] int pageNumber = 1, [FromQuery] int?pageSize = null, [FromQuery] DateTime?loanDate = null, [FromQuery] int?duration = null) { try { if (!loanDate.HasValue && !duration.HasValue) { var books = bookService.GetBooks(pageNumber, pageSize); return(Ok(books)); } else { var report = reportingService.GetBooksReport(pageNumber, pageSize, loanDate, duration); return(Ok(report)); } } catch (Exception ex) { var error = new ErrorDTO { Code = 500, Message = ex.Message }; return(StatusCode(error.Code, error)); } }