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));
 | 
						|
    }
 | 
						|
}
 |