repository = $repository; $this->bookRepository = $bookRepository; } /** * Download report * * @return \Illuminate\Http\Response */ public function export(ExportRequest $request) { $books = $this->bookRepository->all(); if($request->filled('book')){ $books = collect(); $books->push($this->bookRepository->find($request->book)); } $books->map(function ($book) use ($request) { $documents = $this->repository->scopeQuery(function($query) use ($request, $book) { $query->where('book_id', $book->id); if($request->filled('type')){ $query->where('type_id', $request->type); } if($request->filled('from')){ $request->to = $request->to ?: date('Y-m-d'); $query->whereBetween('effective_at', [$request->from, $request->to]); } $query ->with(['receivers', 'publisher', 'organizes']) ->orderBy('effective_at') ->orderBy('publisher_id'); return $query; })->all(); return $book->documents = $documents; }); $name = auth()->user()->name . ' ' . date('d-m-Y'); $fileName = $name . '.' . strtolower($request->export); $exporter = new \App\Exports\BooksExport($books, $request->from, $request->to); return \Excel::download($exporter, $fileName, $request->export); } }