patches v1.3.2 #60

Merged
jkeffects merged 4 commits from develop into main 2025-02-08 08:31:01 +00:00
7 changed files with 26 additions and 8 deletions
Showing only changes of commit 2e69f87578 - Show all commits

View file

@ -0,0 +1,14 @@
import { DB_TYPE } from "../../../../env.defaults";
export default abstract class DateMappingHelper {
static mapDate(entry: any) {
switch (DB_TYPE) {
case "postgres":
return `${entry.years} years ${entry.months} months ${entry.days} days`;
case "mysql":
return entry.toString();
case "sqlite":
return entry;
}
}
}

View file

@ -3,6 +3,7 @@ import { MemberStatisticsViewModel, MemberViewModel } from "../../../../viewmode
import { memberView } from "../../../../views/memberView"; import { memberView } from "../../../../views/memberView";
import SalutationFactory from "../../settings/salutation"; import SalutationFactory from "../../settings/salutation";
import CommunicationFactory from "./communication"; import CommunicationFactory from "./communication";
import DateMappingHelper from "./dateMappingHelper";
import MembershipFactory from "./membership"; import MembershipFactory from "./membership";
export default abstract class MemberFactory { export default abstract class MemberFactory {
@ -59,7 +60,7 @@ export default abstract class MemberFactory {
birthdate: record.birthdate, birthdate: record.birthdate,
todayAge: record.todayAge, todayAge: record.todayAge,
ageThisYear: record.ageThisYear, ageThisYear: record.ageThisYear,
exactAge: record.exactAge, exactAge: DateMappingHelper.mapDate(record.exactAge),
}; };
} }
} }

View file

@ -4,6 +4,7 @@ import {
MembershipViewModel, MembershipViewModel,
} from "../../../../viewmodel/admin/club/member/membership.models"; } from "../../../../viewmodel/admin/club/member/membership.models";
import { membershipView } from "../../../../views/membershipsView"; import { membershipView } from "../../../../views/membershipsView";
import DateMappingHelper from "./dateMappingHelper";
export default abstract class MembershipFactory { export default abstract class MembershipFactory {
/** /**
@ -40,7 +41,7 @@ export default abstract class MembershipFactory {
return { return {
durationInDays: record.durationInDays, durationInDays: record.durationInDays,
durationInYears: record.durationInYears, durationInYears: record.durationInYears,
exactDuration: record.exactDuration.toString(), exactDuration: DateMappingHelper.mapDate(record.exactDuration),
status: record.status, status: record.status,
statusId: record.statusId, statusId: record.statusId,
memberId: record.memberId, memberId: record.memberId,

View file

@ -336,7 +336,7 @@ export const member_executive_positions_view_postgres = new View({
"member"."birthdate" AS "memberBirthdate", "member"."birthdate" AS "memberBirthdate",
"salutation"."salutation" AS "memberSalutation", "salutation"."salutation" AS "memberSalutation",
SUM(COALESCE("memberExecutivePositions"."end", CURRENT_DATE) - "memberExecutivePositions"."start") AS "durationInDays", SUM(COALESCE("memberExecutivePositions"."end", CURRENT_DATE) - "memberExecutivePositions"."start") AS "durationInDays",
SUM(EXTRACT(YEAR FROM CURRENT_DATE) - EXTRACT(YEAR FROM member.birthdate)) AS "durationInYears", SUM(EXTRACT(YEAR FROM AGE(COALESCE("memberExecutivePositions"."end", CURRENT_DATE), "memberExecutivePositions"."start"))) AS "durationInYears",
SUM(AGE(COALESCE("memberExecutivePositions"."end", CURRENT_DATE), "memberExecutivePositions"."start")) AS "exactDuration" SUM(AGE(COALESCE("memberExecutivePositions"."end", CURRENT_DATE), "memberExecutivePositions"."start")) AS "exactDuration"
FROM "member_executive_positions" "memberExecutivePositions" FROM "member_executive_positions" "memberExecutivePositions"
LEFT JOIN "executive_position" "executivePosition" ON "executivePosition"."id"="memberExecutivePositions"."executivePositionId" LEFT JOIN "executive_position" "executivePosition" ON "executivePosition"."id"="memberExecutivePositions"."executivePositionId"
@ -415,7 +415,8 @@ export const member_qualifications_view_postgres = new View({
"member"."birthdate" AS "memberBirthdate", "member"."birthdate" AS "memberBirthdate",
"salutation"."salutation" AS "memberSalutation", "salutation"."salutation" AS "memberSalutation",
SUM(COALESCE("memberQualifications"."end", CURRENT_DATE) - "memberQualifications"."start") AS "durationInDays", SUM(COALESCE("memberQualifications"."end", CURRENT_DATE) - "memberQualifications"."start") AS "durationInDays",
SUM(AGE(COALESCE("memberQualifications"."end", CURRENT_DATE), "memberQualifications"."start")) AS "durationInYears" SUM(EXTRACT(YEAR FROM AGE(COALESCE("memberQualifications"."end", CURRENT_DATE), "memberQualifications"."start"))) AS "durationInYears",
SUM(AGE(COALESCE("memberQualifications"."end", CURRENT_DATE), "memberQualifications"."start")) AS "exactDuration"
FROM "member_qualifications" "memberQualifications" FROM "member_qualifications" "memberQualifications"
LEFT JOIN "qualification" "qualification" ON "qualification"."id"="memberQualifications"."qualificationId" LEFT JOIN "qualification" "qualification" ON "qualification"."id"="memberQualifications"."qualificationId"
LEFT JOIN "member" "member" ON "member"."id"="memberQualifications"."memberId" LEFT JOIN "member" "member" ON "member"."id"="memberQualifications"."memberId"
@ -493,7 +494,8 @@ export const membership_view_postgres = new View({
"member"."birthdate" AS "memberBirthdate", "member"."birthdate" AS "memberBirthdate",
"salutation"."salutation" AS "memberSalutation", "salutation"."salutation" AS "memberSalutation",
SUM(COALESCE("membership"."end", CURRENT_DATE) - "membership"."start") AS "durationInDays", SUM(COALESCE("membership"."end", CURRENT_DATE) - "membership"."start") AS "durationInDays",
SUM(AGE(COALESCE("membership"."end", CURRENT_DATE), "membership"."start")) AS "durationInYears" SUM(EXTRACT(YEAR FROM AGE(COALESCE("membership"."end", CURRENT_DATE), "membership"."start"))) AS "durationInYears",
SUM(AGE(COALESCE("membership"."end", CURRENT_DATE), "membership"."start")) AS "exactDuration"
FROM "membership" "membership" FROM "membership" "membership"
LEFT JOIN "membership_status" "status" ON "status"."id"="membership"."statusId" LEFT JOIN "membership_status" "status" ON "status"."id"="membership"."statusId"
LEFT JOIN "member" "member" ON "member"."id"="membership"."memberId" LEFT JOIN "member" "member" ON "member"."id"="membership"."memberId"

View file

@ -7,7 +7,7 @@ let durationInYears: string;
let exactDuration: string; let exactDuration: string;
if (DB_TYPE == "postgres") { if (DB_TYPE == "postgres") {
durationInDays = `SUM(COALESCE("memberExecutivePositions"."end", CURRENT_DATE) - "memberExecutivePositions"."start")`; durationInDays = `SUM(COALESCE("memberExecutivePositions"."end", CURRENT_DATE) - "memberExecutivePositions"."start")`;
durationInYears = `SUM(EXTRACT(YEAR FROM CURRENT_DATE) - EXTRACT(YEAR FROM member.birthdate))`; durationInYears = `SUM(EXTRACT(YEAR FROM AGE(COALESCE("memberExecutivePositions"."end", CURRENT_DATE), "memberExecutivePositions"."start")))`;
exactDuration = `SUM(AGE(COALESCE("memberExecutivePositions"."end", CURRENT_DATE), "memberExecutivePositions"."start"))`; exactDuration = `SUM(AGE(COALESCE("memberExecutivePositions"."end", CURRENT_DATE), "memberExecutivePositions"."start"))`;
} else if (DB_TYPE == "mysql") { } else if (DB_TYPE == "mysql") {
durationInDays = `SUM(DATEDIFF(COALESCE(memberExecutivePositions.end, CURDATE()), memberExecutivePositions.start))`; durationInDays = `SUM(DATEDIFF(COALESCE(memberExecutivePositions.end, CURDATE()), memberExecutivePositions.start))`;

View file

@ -7,7 +7,7 @@ let durationInYears: string;
let exactDuration: string; let exactDuration: string;
if (DB_TYPE == "postgres") { if (DB_TYPE == "postgres") {
durationInDays = `SUM(COALESCE("memberQualifications"."end", CURRENT_DATE) - "memberQualifications"."start") `; durationInDays = `SUM(COALESCE("memberQualifications"."end", CURRENT_DATE) - "memberQualifications"."start") `;
durationInYears = `SUM(EXTRACT(YEAR FROM CURRENT_DATE) - EXTRACT(YEAR FROM member.birthdate))`; durationInYears = `SUM(EXTRACT(YEAR FROM AGE(COALESCE("memberQualifications"."end", CURRENT_DATE), "memberQualifications"."start")))`;
exactDuration = `SUM(AGE(COALESCE("memberQualifications"."end", CURRENT_DATE), "memberQualifications"."start"))`; exactDuration = `SUM(AGE(COALESCE("memberQualifications"."end", CURRENT_DATE), "memberQualifications"."start"))`;
} else if (DB_TYPE == "mysql") { } else if (DB_TYPE == "mysql") {
durationInDays = `SUM(DATEDIFF(COALESCE(memberQualifications.end, CURDATE()), memberQualifications.start))`; durationInDays = `SUM(DATEDIFF(COALESCE(memberQualifications.end, CURDATE()), memberQualifications.start))`;

View file

@ -7,7 +7,7 @@ let durationInYears: string;
let exactDuration: string; let exactDuration: string;
if (DB_TYPE == "postgres") { if (DB_TYPE == "postgres") {
durationInDays = `SUM(COALESCE("membership"."end", CURRENT_DATE) - "membership"."start") `; durationInDays = `SUM(COALESCE("membership"."end", CURRENT_DATE) - "membership"."start") `;
durationInYears = `SUM(EXTRACT(YEAR FROM CURRENT_DATE) - EXTRACT(YEAR FROM member.birthdate))`; durationInYears = `SUM(EXTRACT(YEAR FROM AGE(COALESCE("membership"."end", CURRENT_DATE), "membership"."start")))`;
exactDuration = `SUM(AGE(COALESCE("membership"."end", CURRENT_DATE), "membership"."start"))`; exactDuration = `SUM(AGE(COALESCE("membership"."end", CURRENT_DATE), "membership"."start"))`;
} else if (DB_TYPE == "mysql") { } else if (DB_TYPE == "mysql") {
durationInDays = `SUM(DATEDIFF(COALESCE(membership.end, CURDATE()), membership.start))`; durationInDays = `SUM(DATEDIFF(COALESCE(membership.end, CURDATE()), membership.start))`;