42 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
| <?php
 | |
| 
 | |
| namespace App\Form\Actions;
 | |
| 
 | |
| use App\Form\Models\Form;
 | |
| use App\Group;
 | |
| use Lorisleiva\Actions\Concerns\AsAction;
 | |
| 
 | |
| class ExportSyncAction
 | |
| {
 | |
|     use AsAction;
 | |
| 
 | |
|     public Form $form;
 | |
| 
 | |
|     public function handle(Form $form): void
 | |
|     {
 | |
|         if (!$form->export->root) {
 | |
|             return;
 | |
|         }
 | |
| 
 | |
|         $storage = $form->export->root->getStorage();
 | |
| 
 | |
|         $storage->put($form->export->root->resource . '/Anmeldungen ' . $form->name . '.xlsx', CreateExcelDocumentAction::run($form, $form->participants));
 | |
| 
 | |
|         if ($form->export->toGroupField) {
 | |
|             foreach ($form->participants->groupBy(fn ($participant) => $participant->data[$form->export->toGroupField]) as $groupId => $participants) {
 | |
|                 $group = Group::find($groupId);
 | |
|                 if (!$group?->fileshare) {
 | |
|                     continue;
 | |
|                 }
 | |
| 
 | |
|                 $group->fileshare->getStorage()->put($group->fileshare->resource . '/Anmeldungen ' . $form->name . '.xlsx', CreateExcelDocumentAction::run($form, $participants));
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public function asJob(int $formId): void
 | |
|     {
 | |
|         $this->handle(Form::find($formId));
 | |
|     }
 | |
| }
 |