public function buscar(Request $request) { $invernaderos = invernaderoPlantula::select('id', 'nombre')->orderBy('nombre', 'asc')->get(); $cultivos = cultivo::select('id', 'nombre')->orderBy('nombre', 'asc')->get(); /*Ahi se guardaran los resultados de la busqueda*/ $siembras = null; $validator = Validator::make($request->all(), ['fechaInicio' => 'date_format:d/m/Y', 'fechaFin' => 'date_format:d/m/Y', 'invernadero' => 'exists:invernaderoPlantula,id', 'cultivo' => 'exists:cultivo,id', 'status' => 'in:Activo,Terminado']); /*Si validador no falla se pueden realizar busquedas*/ if ($validator->fails()) { } else { /*Busqueda sin parametros*/ if ($request->fechaFin == "" && $request->fechaInicio == "" && $request->invernadero == "" && $request->cultivo == "" && $request->status == "") { $siembras = siembraPlantula::orderBy('fecha', 'desc')->paginate(15); } /*Busqueda solo con invernadero*/ if ($request->fechaFin == "" && $request->fechaInicio == "" && $request->invernadero != "" && $request->cultivo == "" && $request->status == "") { $siembras = siembraPlantula::where('id_invernadero', $request->invernadero)->orderBy('fecha', 'desc')->paginate(15); } /*Busqueda solo con cultivo*/ if ($request->fechaFin == "" && $request->fechaInicio == "" && $request->invernadero == "" && $request->cultivo != "" && $request->status == "") { $siembras = siembraPlantula::where('id_cultivo', $request->cultivo)->orderBy('fecha', 'desc')->paginate(15); } /*Busqueda solo con status*/ if ($request->fechaFin == "" && $request->fechaInicio == "" && $request->invernadero == "" && $request->cultivo == "" && $request->status != "") { $siembras = siembraPlantula::where('status', $request->status)->orderBy('fecha', 'desc')->paginate(15); } /*Busqueda solo con invernadero y cultivo*/ if ($request->fechaFin == "" && $request->fechaInicio == "" && $request->invernadero != "" && $request->cultivo != "" && $request->status == "") { $siembras = siembraPlantula::where('id_invernadero', $request->invernadero)->where('id_cultivo', $request->cultivo)->orderBy('fecha', 'desc')->paginate(15); } /*Busqueda solo con invernadero y status*/ if ($request->fechaFin == "" && $request->fechaInicio == "" && $request->invernadero != "" && $request->cultivo == "" && $request->status != "") { $siembras = siembraPlantula::where('id_invernadero', $request->invernadero)->where('status', $request->status)->orderBy('fecha', 'desc')->paginate(15); } /*Busqueda solo con cultivo y status*/ if ($request->fechaFin == "" && $request->fechaInicio == "" && $request->invernadero == "" && $request->cultivo != "" && $request->status != "") { $siembras = siembraPlantula::where('id_cultivo', $request->cultivo)->where('status', $request->status)->orderBy('fecha', 'desc')->paginate(15); } /*Busqueda con invernadero, cultivo y status*/ if ($request->fechaFin == "" && $request->fechaInicio == "" && $request->invernadero != "" && $request->cultivo != "" && $request->status != "") { $siembras = siembraPlantula::where('id_invernadero', $request->invernadero)->where('id_cultivo', $request->cultivo)->where('status', $request->status)->orderBy('fecha', 'desc')->paginate(15); } /*Pregunta si se mandaron fechas, en caso contrario manda error 404*/ if ($request->fechaFin != "" && $request->fechaInicio != "") { /*Transforma fechas en formato adecuado*/ $fecha = $request->fechaInicio . " 00:00:00"; $fechaInf = Carbon::createFromFormat("d/m/Y H:i:s", $fecha); $fecha = $request->fechaFin . " 23:59:59"; $fechaSup = Carbon::createFromFormat("d/m/Y H:i:s", $fecha); /*Hay 8 posibles casos de busqueda, cada if se basa en un caso */ /*Busqueda sin parametros*/ if ($request->invernadero == "" && $request->cultivo == "" && $request->status == "") { $siembras = siembraPlantula::whereBetween('fecha', array($fechaInf, $fechaSup))->orderBy('fecha', 'desc')->paginate(15); } /*Busqueda solo con invernadero*/ if ($request->invernadero != "" && $request->cultivo == "" && $request->status == "") { $siembras = siembraPlantula::where('id_invernadero', $request->invernadero)->whereBetween('fecha', array($fechaInf, $fechaSup))->orderBy('fecha', 'desc')->paginate(15); } /*Busqueda solo con cultivo*/ if ($request->invernadero == "" && $request->cultivo != "" && $request->status == "") { $siembras = siembraPlantula::where('id_cultivo', $request->cultivo)->whereBetween('fecha', array($fechaInf, $fechaSup))->orderBy('fecha', 'desc')->paginate(15); } /*Busqueda solo con status*/ if ($request->invernadero == "" && $request->cultivo == "" && $request->status != "") { $siembras = siembraPlantula::where('status', $request->status)->whereBetween('fecha', array($fechaInf, $fechaSup))->orderBy('fecha', 'desc')->paginate(15); } /*Busqueda solo con invernadero y cultivo*/ if ($request->invernadero != "" && $request->cultivo != "" && $request->status == "") { $siembras = siembraPlantula::where('id_invernadero', $request->invernadero)->where('id_cultivo', $request->cultivo)->whereBetween('fecha', array($fechaInf, $fechaSup))->orderBy('fecha', 'desc')->paginate(15); } /*Busqueda solo con invernadero y status*/ if ($request->invernadero != "" && $request->cultivo == "" && $request->status != "") { $siembras = siembraPlantula::where('id_invernadero', $request->invernadero)->where('status', $request->status)->whereBetween('fecha', array($fechaInf, $fechaSup))->orderBy('fecha', 'desc')->paginate(15); } /*Busqueda solo con cultivo y status*/ if ($request->invernadero == "" && $request->cultivo != "" && $request->status != "") { $siembras = siembraPlantula::where('id_cultivo', $request->cultivo)->where('status', $request->status)->whereBetween('fecha', array($fechaInf, $fechaSup))->orderBy('fecha', 'desc')->paginate(15); } /*Busqueda con invernadero, cultivo y status*/ if ($request->invernadero != "" && $request->cultivo != "" && $request->status != "") { $siembras = siembraPlantula::where('id_invernadero', $request->invernadero)->where('id_cultivo', $request->cultivo)->where('status', $request->status)->whereBetween('fecha', array($fechaInf, $fechaSup))->orderBy('fecha', 'desc')->paginate(15); } } } if ($siembras != null) { /*Adapta el formato de fecha para poder imprimirlo en la vista adecuadamente*/ $this->adaptaFechas($siembras); /*Si no es nulo puede contar los resultados*/ $num = $siembras->total(); } else { $num = 0; } if ($num <= 0) { Session::flash('error', 'No se encontraron resultados'); } else { Session::flash('message', 'Se encontraron ' . $num . ' resultados'); } /*Regresa la vista*/ return view('Plantula/Siembra/buscar')->with(['invernaderos' => $invernaderos, 'cultivos' => $cultivos, 'siembras' => $siembras]); }