Add stat for agegroups

This commit is contained in:
Philipp Lang 2023-08-20 10:26:51 +02:00
parent f4c57c3fa7
commit affa31a05d
4 changed files with 18 additions and 7 deletions

View File

@ -32,8 +32,8 @@ class Jsonfile extends CmsCompoundObject
return json_decode($this->content, true);
}
public function getVar(string $var)
public function getVar(string $var, $default = null)
{
return array_get($this->markup(), $var);
return array_get($this->markup(), $var, $default);
}
}

View File

@ -102,9 +102,17 @@ class ProcessSubmitJob implements ShouldQueue
private function addStat(Spreadsheet $s): Spreadsheet
{
$groupBy = $this->event->loadConfig('groupBy');
$stat = Participant::where('event_id', $this->event->id)->get()->groupBy(fn ($p) => data_get($p->payload, $groupBy))->map(fn ($p) => $p->count())->map(fn ($key, $value) => [$value, $key])->values();
$s->sheet('Statistik', $stat->toArray());
$payload = collect([]);
foreach ($this->event->loadConfig('stat') as $stat) {
$stat = Participant::where('event_id', $this->event->id)
->get()
->groupBy(fn ($p) => data_get($p->payload, $stat))
->mapWithKeys(fn ($participants, $groupKey) => [$groupKey => [$groupKey, $participants->count()]])
->values();
$payload = $payload->merge($stat);
}
$s->sheet('Statistik', $payload->toArray());
return $s;
}

View File

@ -84,12 +84,12 @@ class Event extends Model
return static::pluck('name', 'id')->toArray();
}
public function loadConfig($v)
public function loadConfig($v, $default = null)
{
$file = $this->slug.'.json';
throw_unless(Jsonfile::find($file), Exception::class, 'Datei '.$file.' nicht gefunden.');
return Jsonfile::find($file)->getVar($v);
return Jsonfile::find($file)->getVar($v, $default);
}
public function transformInputs($input)

View File

@ -3,6 +3,9 @@
# ===================================
columns:
id:
label: ID
firstname:
label: Vorname