Merge branch 'milestone/ff-admin-unit' into unit/#102-base-management
# Conflicts: # src/data-source.ts
This commit is contained in:
commit
e056db053b
68 changed files with 1807 additions and 1521 deletions
49
src/service/club/member/memberEducationService.ts
Normal file
49
src/service/club/member/memberEducationService.ts
Normal file
|
@ -0,0 +1,49 @@
|
|||
import { dataSource } from "../../../data-source";
|
||||
import { memberEducations } from "../../../entity/club/member/memberEducations";
|
||||
import DatabaseActionException from "../../../exceptions/databaseActionException";
|
||||
import InternalException from "../../../exceptions/internalException";
|
||||
|
||||
export default abstract class MemberEducationService {
|
||||
/**
|
||||
* @description get all by member id
|
||||
* @param {string} memberId
|
||||
* @returns {Promise<Array<memberEducations>>}
|
||||
*/
|
||||
static async getAll(memberId: string): Promise<Array<memberEducations>> {
|
||||
return await dataSource
|
||||
.getRepository(memberEducations)
|
||||
.createQueryBuilder("memberEducations")
|
||||
.leftJoinAndSelect("memberEducations.education", "education")
|
||||
.where("memberEducations.memberId = :memberId", { memberId: memberId })
|
||||
.orderBy("education.education", "ASC")
|
||||
.getMany()
|
||||
.then((res) => {
|
||||
return res;
|
||||
})
|
||||
.catch((err) => {
|
||||
throw new DatabaseActionException("SELECT", "memberEducations", err);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @description get by memberId and recordId
|
||||
* @param {string} memberId
|
||||
* @param {number} recordId
|
||||
* @returns {Promise<Array<member>>}
|
||||
*/
|
||||
static async getById(memberId: string, recordId: number): Promise<memberEducations> {
|
||||
return await dataSource
|
||||
.getRepository(memberEducations)
|
||||
.createQueryBuilder("memberEducations")
|
||||
.leftJoinAndSelect("memberEducations.education", "education")
|
||||
.where("memberEducations.memberId = :memberId", { memberId: memberId })
|
||||
.andWhere("memberEducations.id = :recordId", { recordId: recordId })
|
||||
.getOneOrFail()
|
||||
.then((res) => {
|
||||
return res;
|
||||
})
|
||||
.catch((err) => {
|
||||
throw new DatabaseActionException("SELECT", "memberEducations", err);
|
||||
});
|
||||
}
|
||||
}
|
|
@ -1,9 +1,8 @@
|
|||
import { Brackets, Like, Not, SelectQueryBuilder } from "typeorm";
|
||||
import { Brackets, ILike, Not, SelectQueryBuilder } from "typeorm";
|
||||
import { dataSource } from "../../../data-source";
|
||||
import { member } from "../../../entity/club/member/member";
|
||||
import DatabaseActionException from "../../../exceptions/databaseActionException";
|
||||
import { memberView } from "../../../views/memberView";
|
||||
import { DB_TYPE } from "../../../env.defaults";
|
||||
|
||||
export default abstract class MemberService {
|
||||
/**
|
||||
|
@ -30,10 +29,12 @@ export default abstract class MemberService {
|
|||
|
||||
if (searchBits.length < 2) {
|
||||
query = query.where(
|
||||
`member.firstname LIKE :searchQuery OR member.lastname LIKE :searchQuery OR member.internalId LIKE :searchQuery`,
|
||||
{
|
||||
searchQuery: `%${searchBits[0]}%`,
|
||||
}
|
||||
new Brackets((qb) =>
|
||||
qb
|
||||
.where({ firstname: ILike(`%${searchBits[0]}%`) })
|
||||
.orWhere({ lastname: ILike(`%${searchBits[0]}%`) })
|
||||
.orWhere({ internalId: ILike(`%${searchBits[0]}%`) })
|
||||
)
|
||||
);
|
||||
} else {
|
||||
searchBits
|
||||
|
@ -42,12 +43,12 @@ export default abstract class MemberService {
|
|||
query = query
|
||||
.orWhere(
|
||||
new Brackets((qb) =>
|
||||
qb.where({ firstname: Like(`%${term[0]}%`) }).andWhere({ lastname: Like(`%${term[1]}%`) })
|
||||
qb.where({ firstname: ILike(`%${term[0]}%`) }).andWhere({ lastname: ILike(`%${term[1]}%`) })
|
||||
)
|
||||
)
|
||||
.orWhere(
|
||||
new Brackets((qb) =>
|
||||
qb.where({ firstname: Like(`%${term[1]}%`) }).andWhere({ lastname: Like(`%${term[0]}%`) })
|
||||
qb.where({ firstname: ILike(`%${term[1]}%`) }).andWhere({ lastname: ILike(`%${term[0]}%`) })
|
||||
)
|
||||
);
|
||||
});
|
||||
|
@ -192,17 +193,13 @@ export default abstract class MemberService {
|
|||
"member.firstMembershipEntry",
|
||||
"member.memberships",
|
||||
"membership_first",
|
||||
DB_TYPE == "postgres"
|
||||
? 'membership_first.memberId = member.id AND membership_first.start = (SELECT MIN("m_first"."start") FROM "membership" "m_first" WHERE "m_first"."memberId" = "member"."id")'
|
||||
: "membership_first.memberId = member.id AND membership_first.start = (SELECT MIN(m_first.start) FROM membership m_first WHERE m_first.memberId = member.id)"
|
||||
'membership_first.memberId = member.id AND membership_first.start = (SELECT MIN("m_first"."start") FROM "membership" "m_first" WHERE "m_first"."memberId" = "member"."id")'
|
||||
)
|
||||
.leftJoinAndMapOne(
|
||||
"member.lastMembershipEntry",
|
||||
"member.memberships",
|
||||
"membership_last",
|
||||
DB_TYPE == "postgres"
|
||||
? 'membership_last.memberId = member.id AND membership_last.start = (SELECT MAX("m_last"."start") FROM "membership" "m_last" WHERE "m_last"."memberId" = "member"."id")'
|
||||
: "membership_last.memberId = member.id AND membership_last.start = (SELECT MAX(m_last.start) FROM membership m_last WHERE m_last.memberId = member.id)"
|
||||
'membership_last.memberId = member.id AND membership_last.start = (SELECT MAX("m_last"."start") FROM "membership" "m_last" WHERE "m_last"."memberId" = "member"."id")'
|
||||
)
|
||||
.leftJoinAndSelect("membership_first.status", "status_first")
|
||||
.leftJoinAndSelect("membership_last.status", "status_last")
|
||||
|
|
|
@ -2,7 +2,7 @@ import { dataSource } from "../../../data-source";
|
|||
import { membership } from "../../../entity/club/member/membership";
|
||||
import DatabaseActionException from "../../../exceptions/databaseActionException";
|
||||
import InternalException from "../../../exceptions/internalException";
|
||||
import { membershipView } from "../../../views/membershipsView";
|
||||
import { membershipTotalView, membershipView } from "../../../views/membershipsView";
|
||||
|
||||
export default abstract class MembershipService {
|
||||
/**
|
||||
|
@ -66,4 +66,23 @@ export default abstract class MembershipService {
|
|||
throw new DatabaseActionException("SELECT", "membershipView", err);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @description get membership total statistics by memberId
|
||||
* @param {string} memberId
|
||||
* @returns {Promise<Array<membershipTotalView>>}
|
||||
*/
|
||||
static async getTotalStatisticsById(memberId: string): Promise<membershipTotalView> {
|
||||
return await dataSource
|
||||
.getRepository(membershipTotalView)
|
||||
.createQueryBuilder("membershipTotalView")
|
||||
.where("membershipTotalView.memberId = :memberId", { memberId: memberId })
|
||||
.getOneOrFail()
|
||||
.then((res) => {
|
||||
return res;
|
||||
})
|
||||
.catch((err) => {
|
||||
throw new DatabaseActionException("SELECT", "membershipTotalView", err);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,6 +12,7 @@ export default abstract class NewsletterService {
|
|||
return await dataSource
|
||||
.getRepository(newsletter)
|
||||
.createQueryBuilder("newsletter")
|
||||
.orderBy("createdAt", "DESC")
|
||||
.offset(offset)
|
||||
.limit(count)
|
||||
.getManyAndCount()
|
||||
|
|
41
src/service/configuration/education.ts
Normal file
41
src/service/configuration/education.ts
Normal file
|
@ -0,0 +1,41 @@
|
|||
import { dataSource } from "../../data-source";
|
||||
import { education } from "../../entity/configuration/education";
|
||||
import DatabaseActionException from "../../exceptions/databaseActionException";
|
||||
|
||||
export default abstract class EducationService {
|
||||
/**
|
||||
* @description get all educations
|
||||
* @returns {Promise<Array<education>>}
|
||||
*/
|
||||
static async getAll(): Promise<Array<education>> {
|
||||
return await dataSource
|
||||
.getRepository(education)
|
||||
.createQueryBuilder("education")
|
||||
.orderBy("education", "ASC")
|
||||
.getMany()
|
||||
.then((res) => {
|
||||
return res;
|
||||
})
|
||||
.catch((err) => {
|
||||
throw new DatabaseActionException("SELECT", "education", err);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @description get education by id
|
||||
* @returns {Promise<education>}
|
||||
*/
|
||||
static async getById(id: number): Promise<education> {
|
||||
return await dataSource
|
||||
.getRepository(education)
|
||||
.createQueryBuilder("education")
|
||||
.where("education.id = :id", { id: id })
|
||||
.getOneOrFail()
|
||||
.then((res) => {
|
||||
return res;
|
||||
})
|
||||
.catch((err) => {
|
||||
throw new DatabaseActionException("SELECT", "education", err);
|
||||
});
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue