Compare commits

..

No commits in common. "1116b507738c53104d048adf80a0c50b6175f8f6" and "c803c2a58314c1959241b19f96294c7d57b8f0cc" have entirely different histories.

10 changed files with 4 additions and 47 deletions

View file

@ -6,7 +6,7 @@ Administration für Feuerwehren und Vereine (Backend).
Dieses Projekt, `ff-admin-server`, ist das Backend zur Verwaltung von Mitgliederdaten. Die zugehörige Webapp ist im Repository [ff-admin-ui](https://forgejo.jk-effects.cloud/Ehrenamt/ff-admin) zu finden.
Eine Demo zusammen mit der `ff-admin` finden Sie unter [https://admin-demo.ff-admin.de](https://admin-demo.ff-admin.de).
Eine Demo zusammen mit der `ff-admin` finden Sie unter [ff-admin-demo.jk-effects.cloud](ff-admin-demo.jk-effects.cloud).
## Installation

View file

@ -6,5 +6,4 @@ export interface SynchronizeProtocolPresenceCommand {
export interface ProtocolPresenceCommand {
memberId: number;
absent: boolean;
excused: boolean;
}

View file

@ -74,7 +74,6 @@ export default abstract class ProtocolPresenceCommandHandler {
.update(protocolPresence)
.set({
absent: member.absent,
excused: member.excused,
})
.where("memberId = :memberId", { memberId: member.memberId })
.andWhere("protocolId = :protocolId", { protocolId })

View file

@ -260,9 +260,7 @@ export async function createProtocolPrintoutById(req: Request, res: Response): P
agenda,
decisions,
presence: presence.filter((p) => !p.absent).map((p) => p.member),
absent: presence.filter((p) => p.absent).map((p) => ({ ...p.member, excused: p.excused })),
excused_absent: presence.filter((p) => p.absent && p.excused).map((p) => p.member),
unexcused_absent: presence.filter((p) => p.absent && !p.excused).map((p) => p.member),
absent: presence.filter((p) => p.absent).map((p) => p.member),
votings,
},
});
@ -391,7 +389,6 @@ export async function synchronizeProtocolPrecenseById(req: Request, res: Respons
members: presence.map((p) => ({
memberId: p.memberId,
absent: p.absent,
excused: p.excused,
})),
protocolId,
};

View file

@ -67,7 +67,6 @@ import { ProtocolAbsent1736072179716 } from "./migrations/1736072179716-protocol
import { Memberlist1736079005086 } from "./migrations/1736079005086-memberlist";
import { ExtendViewValues1736084198860 } from "./migrations/1736084198860-extendViewValues";
import { FinishInternalIdTransfer1736505324488 } from "./migrations/1736505324488-finishInternalIdTransfer";
import { ProtocolPresenceExcuse1737287798828 } from "./migrations/1737287798828-protocolPresenceExcuse";
const dataSource = new DataSource({
type: DB_TYPE as any,
@ -145,7 +144,6 @@ const dataSource = new DataSource({
Memberlist1736079005086,
ExtendViewValues1736084198860,
FinishInternalIdTransfer1736505324488,
ProtocolPresenceExcuse1737287798828,
],
migrationsRun: true,
migrationsTransactionMode: "each",

View file

@ -13,9 +13,6 @@ export class protocolPresence {
@Column({ type: "boolean", default: false })
absent: boolean;
@Column({ type: "boolean", default: true })
excused: boolean;
@ManyToOne(() => member, {
nullable: false,
onDelete: "CASCADE",

View file

@ -12,7 +12,6 @@ export default abstract class ProtocolPresenceFactory {
return {
memberId: record.member.id,
absent: record.absent,
excused: record.excused,
protocolId: record.protocolId,
};
}

View file

@ -1,21 +0,0 @@
import { MigrationInterface, QueryRunner, TableColumn } from "typeorm";
export class ProtocolPresenceExcuse1737287798828 implements MigrationInterface {
name = "ProtocolPresenceExcuse1737287798828";
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.addColumn(
"protocol_presence",
new TableColumn({
name: "excused",
type: "tinyint",
default: "1",
isNullable: false,
})
);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.dropColumn("protocol_presence", "excused");
}
}

View file

@ -14,19 +14,9 @@
<br />
<br />
<h2>Anwesenheit ({{presence.length}})</h2>
<p>
{{#each presence}}{{this.firstname}} {{this.lastname}}{{#unless @last}}, {{/unless}}{{/each}}{{#unless
presence.length}}---{{/unless}}
</p>
<p>{{#each presence}} {{this.firstname}} {{this.lastname}}{{#unless @last}}, {{/unless}} {{/each}}</p>
<h2>Abwesenheit ({{absent.length}})</h2>
<p>
entschuldigt: {{#each excused_absent}}{{this.firstname}} {{this.lastname}}{{#unless @last}},
{{/unless}}{{/each}}{{#unless excused_absent.length}}---{{/unless}}
</p>
<p>
unentschuldigt: {{#each unexcused_absent}}{{this.firstname}} {{this.lastname}}{{#unless @last}},
{{/unless}}{{/each}}{{#unless unexcused_absent.length}}---{{/unless}}
</p>
<p>{{#each absent}} {{this.firstname}} {{this.lastname}}{{#unless @last}}, {{/unless}} {{/each}}</p>
<br />
<h2>Agenda</h2>
{{#each agenda}}

View file

@ -3,6 +3,5 @@ import { MemberViewModel } from "../member/member.models";
export interface ProtocolPresenceViewModel {
memberId: number;
absent: boolean;
excused: boolean;
protocolId: number;
}