'Filter by date range OR member ID

I am trying to filter the data either by date range or by member ID. Below is what I have tried but it returns page not found.

enter image description here

I been tried many ways but still can't display out the data. The route url to blade is all correct however it just not displaying the blade file. It is something wrong in my controller codes?

Controller

$members = Membership::with(['profile'])
    ->when($request->memberId, function ($query) use ($request) {
        $query->where('id', 'LIKE', '%' . $request->value . '%');
    })
    ->when($request->dateStarted, function ($query) use ($request) {
        $dateS = date('Y-m-d', strtotime($request->dateStarted));
        $query->whereDate('created_at', '>=', $dateS);
    })
    ->when($request->dateEnded, function ($query) use ($request) {
        $dateE = date('Y-m-d', strtotime($request->dateEnded));
        $query->whereDate('created_at', '<=', $dateE);
    })
    ->latest()
    ->paginate(15);

Route

Route::get('/members-listing', [$ControllerClass, 'memberListing'])->('members-listing');

and below is the script to call the api through route url

<script>
            function generate() {
                var route = '{{ route('members-listing') }}';
                var filterBy = $('select[name="filter-by"]').val();
                var memberId = $('input[name="member-id"]').val();
                var dateStarted = $('input[name="date-started"]').val();
                var dateEnded = $('input[name="date-ended"]').val();

                if (filterBy != null && filterBy == "filter-lead-id") {
                    route = route + '&filterBy=' + filterBy + '&leadId=' + leadId;
                } else if (filterBy != null && filterBy == "filter-date") {
                    route = route + '&filterBy=' + filterBy + '?dateStarted=' + dateStarted + '&dateEnded=' + dateEnded;
                }

                window.location.href = route;
            }

            $(document).ready(function() {
                $("#filter-date").hide();
                $('#filter-by').change(function() {
                    $('.filter').hide();
                    $('#' + $(this).val()).show();
                });

            });
        </script>


Solution 1:[1]

$query = Membership::with(['profile']);

if(isset($request->memberId) && !empty($request->memberId))
{
    $query->where('id', 'LIKE', '%' . $request->value . '%');
}

if(isset($request->dateStarted) && !empty($request->dateStarted))
{
    $dateS = date('Y-m-d', strtotime($request->dateStarted));
    $query->whereDate('created_at', '>=', $dateS);
}

if(isset($request->dateEnded) && !empty($request->dateEnded))
{
    $dateE = date('Y-m-d', strtotime($request->dateEnded));
    $query->whereDate('created_at', '<=', $dateE);
    
}

$query->latest()->paginate(15);

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Dip Ghosh