Skip to content

Commit 402a355

Browse files
authored
Merge pull request #174 from Maua-Dev/homolog
Merge branch homolog -> prod - Criado Automatico
2 parents c8ebef3 + 7456c49 commit 402a355

39 files changed

Lines changed: 1924 additions & 443 deletions

curl_post_output.txt

5.32 KB
Binary file not shown.

src/@clean/modules/member/domain/repositories/member_repository_interface.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import { ACTIVE } from '../../../../shared/domain/enums/active_enum'
33
import { COURSE } from '../../../../shared/domain/enums/course_enum'
44
import { ROLE } from '../../../../shared/domain/enums/role_enum'
55
import { STACK } from '../../../../shared/domain/enums/stack_enum'
6+
import { Strike, type StrikeCreationResponse } from '../../../../shared/domain/entities/strike'
7+
import { STRIKE_CATEGORY } from '../../../../shared/domain/enums/strike_category_enum'
68

79
export interface IMemberRepository {
810
createMember(
@@ -15,6 +17,16 @@ export interface IMemberRepository {
1517
course: COURSE
1618
): Promise<Member>
1719

20+
createStrike(
21+
memberUserId: string,
22+
reason: STRIKE_CATEGORY,
23+
comment: string,
24+
date: number,
25+
ownerUserId: string // qual admin deu o strike
26+
): Promise<StrikeCreationResponse>
27+
28+
deleteStrike(strikeId: string): Promise<void>
29+
1830
getMember(): Promise<Member>
1931

2032
getAllMembers(): Promise<Member[]>
@@ -35,4 +47,7 @@ export interface IMemberRepository {
3547
): Promise<Member>
3648

3749
deleteMember(): Promise<Member>
50+
51+
getStrike(strikeId: string): Promise<Strike>
52+
getStrike(strikeId: string): Promise<Strike>
3853
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import type { IMemberRepository } from '../domain/repositories/member_repository_interface'
2+
3+
export class CreateStrikeUsecase {
4+
constructor(private readonly memberRepository: IMemberRepository) {}
5+
6+
async execute(
7+
memberUserId: string,
8+
reason: string,
9+
comment: string,
10+
date: number
11+
) {
12+
return await this.memberRepository.createStrike(
13+
memberUserId,
14+
reason,
15+
comment,
16+
date
17+
)
18+
}
19+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { IMemberRepository } from '../../member/domain/repositories/member_repository_interface'
2+
3+
export class GetStrikeUsecase {
4+
constructor(private repo: IMemberRepository) {}
5+
6+
async execute(strikeId: string) {
7+
return await this.repo.getStrike(strikeId);
8+
}
9+
}

src/@clean/shared/domain/entities/member.ts

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ export type JsonProps = {
1616
course: string
1717
hired_date: number
1818
deactivated_date?: number | null
19+
strikes?: number | null
20+
strikes_id?: string[]
21+
strikes_allowed?: number | null
1922
active: string
2023
user_id: string
2124
hours_worked: number | undefined
@@ -33,6 +36,9 @@ export type MemberProps = {
3336
role: ROLE // ENUM
3437
stack: STACK // ENUM
3538
year: number
39+
strikes: number | null
40+
strikesId: string[]
41+
strikes_allowed: number | null
3642
cellphone: string
3743
course: COURSE // ENUM
3844
hiredDate: number
@@ -53,6 +59,9 @@ export class Member {
5359
private _stack: STACK
5460
private _year: number
5561
private _cellphone: string
62+
private _strikes: number | null
63+
private _strikesId: string[]
64+
private _strikes_allowed: number | null
5665
private _course: COURSE
5766
private _hiredDate: number
5867
private _deactivatedDate?: number | null
@@ -72,6 +81,9 @@ export class Member {
7281
year,
7382
cellphone,
7483
course,
84+
strikes,
85+
strikesId,
86+
strikes_allowed,
7587
hiredDate,
7688
deactivatedDate,
7789
active,
@@ -89,6 +101,9 @@ export class Member {
89101
this._year = year
90102
this._cellphone = cellphone
91103
this._course = course
104+
this._strikes = strikes
105+
this._strikesId = strikesId || []
106+
this._strikes_allowed = strikes_allowed
92107
this._hiredDate = hiredDate
93108
this._deactivatedDate = deactivatedDate
94109
this._active = active
@@ -229,6 +244,28 @@ export class Member {
229244
set photo(photo: string | null) {
230245
this._photo = photo
231246
}
247+
get strikes(): number {
248+
if (this._strikes == null) return 0
249+
return this._strikes
250+
}
251+
set strikes(strikes: number | null) {
252+
this._strikes = strikes
253+
}
254+
255+
get strikesId(): string[] {
256+
return this._strikesId
257+
}
258+
set strikesId(strikesId: string[]) {
259+
this._strikesId = strikesId
260+
}
261+
262+
get strikes_allowed(): number {
263+
if (this._strikes_allowed == null) return 0
264+
return this._strikes_allowed as number
265+
}
266+
set strikes_allowed(strikes_allowed: number) {
267+
this._strikes_allowed = strikes_allowed
268+
}
232269

233270
// JSON conversion
234271

@@ -245,6 +282,9 @@ export class Member {
245282
course: this.course,
246283
hired_date: this.hiredDate,
247284
deactivated_date: this.deactivatedDate,
285+
strikes: this.strikes,
286+
strikes_id: this.strikesId,
287+
strikes_allowed: this.strikes_allowed,
248288
active: this.active,
249289
user_id: this.userId,
250290
hours_worked: this.hoursWorked,
@@ -254,13 +294,19 @@ export class Member {
254294
}
255295

256296
static fromJSON(json: JsonProps) {
297+
if (json.member.strikes_id && json.member.strikes_id.length > 0) {
298+
console.log(`Member ${json.member.name} has strikes_id:`, json.member.strikes_id)
299+
}
257300
return new Member({
258301
name: json.member.name,
259302
emailDev: json.member.email_dev,
260303
email: json.member.email,
261304
ra: json.member.ra,
262305
role: roleToEnum(json.member.role),
263306
stack: stackToEnum(json.member.stack),
307+
strikesId: json.member.strikes_id || [],
308+
strikes: json.member.strikes ?? null,
309+
strikes_allowed: json.member.strikes_allowed ?? null,
264310
year: json.member.year,
265311
cellphone: json.member.cellphone,
266312
course: courseToEnum(json.member.course),

src/@clean/shared/domain/entities/project.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ export class Project {
228228
return false
229229
} else if (typeof code !== 'string') {
230230
return false
231-
} else if (code.length !== 2) {
231+
} else if (code.length < 2) {
232232
return false
233233
} else if (code !== code.toUpperCase()) {
234234
return false
@@ -263,7 +263,7 @@ export class Project {
263263
return false
264264
} else if (typeof userId !== 'string') {
265265
return false
266-
} else if (userId.length !== 36) {
266+
} else if (userId.length > 36) {
267267
return false
268268
}
269269
return true
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
import { STRIKE_CATEGORY } from "../enums/strike_category_enum"
2+
3+
export type StrikeCreationResponse = {
4+
strike_id: string
5+
owner_user_id: string
6+
target_user_id: string
7+
applier_user_id: string
8+
occurred_date: number
9+
category: STRIKE_CATEGORY
10+
description: string
11+
case_number: number
12+
message: string
13+
}
14+
15+
export type StrikeProps = {
16+
strikeId: string
17+
ownerUserId: string
18+
targetUserId: string
19+
applierUserId: string
20+
occurredDate: number
21+
category: STRIKE_CATEGORY
22+
description: string
23+
}
24+
25+
export class Strike {
26+
constructor(public props: StrikeProps) {}
27+
28+
get strikeId() {
29+
return this.props.strikeId
30+
}
31+
get ownerUserId() {
32+
return this.props.ownerUserId
33+
}
34+
get targetUserId() {
35+
return this.props.targetUserId
36+
}
37+
get occurredDate() {
38+
return this.props.occurredDate
39+
}
40+
get category() {
41+
return this.props.category
42+
}
43+
get description() {
44+
return this.props.description
45+
}
46+
47+
static fromJSON(json: any): Strike {
48+
return new Strike({
49+
strikeId: json.strike_id || json.strikeId || json.id || '',
50+
ownerUserId: json.owner_user_id || json.ownerUserId || '',
51+
targetUserId: json.target_user_id || json.targetUserId || '',
52+
applierUserId: json.applier_user_id || json.applierUserId || '',
53+
occurredDate: json.occurred_date || json.occurredDate || json.date || 0,
54+
category: json.category || json.reason,
55+
description: json.description || json.message || json.comment || ''
56+
})
57+
}
58+
}

src/@clean/shared/domain/enums/active_enum.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,6 @@ export function activeToEnum(value: string): ACTIVE {
1616
case 'DISCONNECTED':
1717
return ACTIVE.DISCONNECTED
1818
default:
19-
throw new Error('Invalid value')
19+
throw new Error(`Invalid active value: ${value}`)
2020
}
2121
}

src/@clean/shared/domain/enums/course_enum.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
export enum COURSE {
2+
ADS = 'ADS',
23
ADM = 'ADM',
34
ARQ = 'ARQ',
45
DSG = 'DSG',
@@ -51,15 +52,19 @@ export function courseToEnum(value: string): COURSE {
5152
return COURSE.RIN
5253
case 'ARQ':
5354
return COURSE.ARQ
55+
case 'ADS':
56+
return COURSE.ADS
5457
default:
55-
throw new Error('Invalid value')
58+
throw new Error(`Invalid course value: ${value}`)
5659
}
5760
}
5861

5962
export function translateCourse(value: string): string {
6063
switch (value) {
6164
case 'ADM':
6265
return 'Administração'
66+
case 'ADS':
67+
return 'Ánalise e Desenvolvimento de Sistemas'
6368
case 'DSG':
6469
return 'Design'
6570
case 'ARQ':

src/@clean/shared/domain/enums/role_enum.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ export enum ROLE {
55
INTERNAL = 'INTERNAL',
66
PO = 'PO',
77
SCRUM = 'SCRUM',
8-
DESIGNER = 'DESIGNER'
8+
DESIGNER = 'DESIGNER',
9+
EXTERNAL = 'EXTERNAL'
910
}
1011

1112
export function roleToEnum(value: string): ROLE {
@@ -24,8 +25,10 @@ export function roleToEnum(value: string): ROLE {
2425
return ROLE.SCRUM
2526
case 'DESIGNER':
2627
return ROLE.DESIGNER
28+
case 'EXTERNAL':
29+
return ROLE.EXTERNAL
2730
default:
28-
throw new Error('Invalid value')
31+
throw new Error(`Invalid role value: ${value}`)
2932
}
3033
}
3134

@@ -45,6 +48,8 @@ export function translateRole(value: string): string {
4548
return 'Scrum Master'
4649
case 'DESIGNER':
4750
return 'Designer'
51+
case 'EXTERNAL':
52+
return 'Externo'
4853
default:
4954
return 'Invalid value'
5055
}

0 commit comments

Comments
 (0)