select('survey_feedback.*') ->leftJoin('customers', 'survey_feedback.customer_id', 'customers.id') ->leftJoin('survey', 'survey_feedback.survey_id', 'survey.id') ->when(@$params["filter"]['start'], function($query) use ($params){ $query->whereDate("survey_feedback.time", '>=', $params['filter']['start']); }) ->when(@$params["filter"]['end'], function($query) use ($params){ $query->whereDate("survey_feedback.time", '<=', $params['filter']['end']); }) ->when(@$params["filter"]['survey_id'], function($query) use ($params){ $query->where("survey_id", $params['filter']['survey_id']); }) ->when(@$params["filter"]['status'], function($query) use ($params){ if($params['filter']['status'] == 'BELUM DIISI') { $query->whereNull("survey_feedback.time"); } if($params['filter']['status'] == 'SUDAH DIISI') { $query->whereNotNull("survey_feedback.time"); } }) ->when(@$params["search"], function($query) use ($params){ $query->where(function($query) use ($params) { $query->where("survey.name","ilike","%". $params["search"] . "%") ->orWhere("customers.name","ilike","%". $params["search"] . "%"); }); }) ->where("survey_feedback.customer_id", auth()->user()->customer->id) ->orderBy($sortColumn, $sortDir) ->paginate($limit); return $results; } }