diff --git a/app/Http/Controllers/CreateProjectController.php b/app/Http/Controllers/CreateProjectController.php index eb4a62d4..701d1456 100644 --- a/app/Http/Controllers/CreateProjectController.php +++ b/app/Http/Controllers/CreateProjectController.php @@ -6,6 +6,9 @@ use Illuminate\Support\Facades\DB; use PhpOffice\PhpSpreadsheet\IOFactory; +use PhpOffice\PhpSpreadsheet\Writer\Xlsx; +use Symfony\Component\HttpFoundation\StreamedResponse; + use App\Models\User; use App\Models\CompanyProject; @@ -30,10 +33,58 @@ class CreateProjectController extends Controller { + // public function receiveUnitsForExcelTemplate($numberProject) + // { + // $receveCompanyProject = CompanyProject::where('company_projects_id',$numberProject)->first(); + // $recevePlant = Plant::where('plant_id', $receveCompanyProject->plant_id)->first(); + // $receveUnits = Unit::where('plant_id',$recevePlant->plant_id)->get(); + // // dd($receveUnits); + // $filePath = public_path('templateExcel/TestTemplate.xlsx'); + // $fileName = 'Valves_Template.xlsx'; + // return response()->download($filePath, $fileName); + // } + + public function receiveUnitsForExcelTemplate($numberProject) + { + $receveCompanyProject = CompanyProject::where('company_projects_id', $numberProject)->first(); + $recevePlant = Plant::where('plant_id', $receveCompanyProject->plant_id)->first(); + $receveUnits = Unit::where('plant_id', $recevePlant->plant_id)->get(); + $filePath = public_path('templateExcel/TestTemplate.xlsx'); + // Load the spreadsheet + $spreadsheet = IOFactory::load($filePath); + // Get the second sheet + $sheet = $spreadsheet->getSheet(1); // Sheet index starts from 0 + $row = 1; // Row number where you want to start inserting data + foreach ($receveUnits as $unit) { + // Set value for column D + $sheet->setCellValue('D' . $row, $unit->unit_name); + $row++; + } + // Generate and return the download response + return $this->createDownloadResponse($spreadsheet, 'Valves_Template.xlsx'); + } + + protected function createDownloadResponse($spreadsheet, $filename) + { + // Create a writer object + $writer = new Xlsx($spreadsheet); + // Create a StreamedResponse with a callback + $response = new StreamedResponse( + function () use ($writer) { + $writer->save('php://output'); + } + ); + // Set headers to indicate we're sending an Excel file + $response->headers->set('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); + $response->headers->set('Content-Disposition', 'attachment;filename="' . $filename . '"'); + $response->headers->set('Cache-Control', 'max-age=0'); + + return $response; + } + public function finishCreatingProject($numberProject) { - $project = CompanyProject::find($numberProject); $project->order_project = 2; $project->save(); @@ -86,11 +137,6 @@ public function deleteWorkstation($name) return back()->with('danger', 'Posto de Trabalho não encontrado!'); } - - - - - public function AddNomenclatureWorkstation(Request $request) { foreach ($request->nameWorkstations as $key => $value) { diff --git a/public/templateExcel/TestTemplate.xlsx b/public/templateExcel/TestTemplate.xlsx new file mode 100644 index 00000000..26f23f52 Binary files /dev/null and b/public/templateExcel/TestTemplate.xlsx differ diff --git a/resources/views/projectsClients/articulated_2.blade.php b/resources/views/projectsClients/articulated_2.blade.php index dd26c417..d5aa1994 100644 --- a/resources/views/projectsClients/articulated_2.blade.php +++ b/resources/views/projectsClients/articulated_2.blade.php @@ -1165,9 +1165,9 @@ class="fas fa-plus">
- Baixar - Template -
+ Baixar Template + {{-- Baixar Template --}} +
download($filePath, $fileName); +// })->name('download'); + +// Route::get('/Template/{numberProject}')->name('download'); +Route::get('/template1/{numberProject}',[CreateProjectController::class,'receiveUnitsForExcelTemplate'])->name('download'); + + - return response()->download($filePath, $fileName); -})->name('download'); /*