Skip to content

Commit 9ab2fd9

Browse files
committed
update org owner
1 parent 398a3cb commit 9ab2fd9

File tree

5 files changed

+126
-121
lines changed

5 files changed

+126
-121
lines changed

src/app/core/models/organization.model.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ export type OrganizationInfo = {
55
id: string;
66
name: string;
77
description: string | null;
8+
ownerId: string;
89
address: string;
910
email: string;
1011
phone: string;
@@ -45,6 +46,7 @@ export type OrganizationResponse = {
4546
id: string;
4647
name: string;
4748
description: string;
49+
ownerId: string;
4850
logoUrl: string | null;
4951
email: string;
5052
phone: string;
Lines changed: 114 additions & 120 deletions
Original file line numberDiff line numberDiff line change
@@ -1,130 +1,124 @@
11
<div class="org-header">
22
<div class="org-header__container">
33
@if (!isLoading && organization) {
4-
<div class="org-header__content">
5-
<div class="org-header__logo">
6-
@if (organization.logoUrl && !isEditing) {
7-
<img
8-
[src]="organization.logoUrl"
9-
[alt]="organization.name"
10-
class="org-logo"
11-
/>
12-
} @else {
13-
<div class="org-logo-fallback">
14-
{{ organization.name.charAt(0) }}
15-
</div>
16-
}
17-
@if (isEditing) {
18-
<div class="org-logo__edit">
19-
<input type="file" (change)="onFileChange($event)" />
20-
@if (!organization.logoUrl) {
21-
<div class="org-logo-fallback">
22-
{{ organization.name.charAt(0) }}
23-
</div>
24-
}
25-
</div>
26-
}
4+
<div class="org-header__content">
5+
<div class="org-header__logo">
6+
@if (organization.logoUrl && !isEditing) {
7+
<img
8+
[src]="organization.logoUrl"
9+
[alt]="organization.name"
10+
class="org-logo"
11+
/>
12+
} @else {
13+
<div class="org-logo-fallback">
14+
{{ organization.name.charAt(0) }}
2715
</div>
28-
<div class="org-header__info">
29-
<div class="org-header__main">
30-
<h1 class="org-name">{{ organization.name }}</h1>
31-
@if (!isEditing) {
32-
<span
33-
class="org-status"
34-
[class]="getStatusClass(organization.status)"
35-
>
36-
{{ getStatusLabel(organization.status) }}
37-
</span>
38-
} @else {
39-
<div class="org-select-wrapper">
40-
<select [(ngModel)]="editForm.status" class="org-select">
41-
<option value="active">Active</option>
42-
<option value="inactive">Inactive</option>
43-
<option value="pending">Pending</option>
44-
<option value="unknown">Unknown</option>
45-
</select>
46-
</div>
47-
}
48-
@if (!isEditing) {
49-
<button
50-
(click)="enableEdit()"
51-
class="btn btn-edit"
52-
>
53-
<i class="fas fa-edit"></i> Chỉnh sửa
54-
</button>
55-
}
16+
} @if (isEditing) {
17+
<div class="org-logo__edit">
18+
<input type="file" (change)="onFileChange($event)" />
19+
@if (!organization.logoUrl) {
20+
<div class="org-logo-fallback">
21+
{{ organization.name.charAt(0) }}
5622
</div>
23+
}
24+
</div>
25+
}
26+
</div>
27+
<div class="org-header__info">
28+
<div class="org-header__main">
29+
<h1 class="org-name">{{ organization.name }}</h1>
5730
@if (!isEditing) {
58-
<div class="view-mode-details">
59-
@if (organization.description) {
60-
<p class="org-description">
61-
{{ organization.description }}
62-
</p>
63-
}
64-
<div class="org-meta">
65-
<div class="org-meta__item">
66-
<i class="fas fa-map-marker-alt"></i>
67-
<span>{{ organization.address }}</span>
68-
</div>
69-
<div class="org-meta__item">
70-
<i class="fas fa-envelope"></i>
71-
<span>{{ organization.email }}</span>
72-
</div>
73-
<div class="org-meta__item">
74-
<i class="fas fa-phone"></i>
75-
<span>{{ organization.phone }}</span>
76-
</div>
77-
</div>
78-
</div>
31+
<span
32+
class="org-status"
33+
[class]="getStatusClass(organization.status)"
34+
>
35+
{{ getStatusLabel(organization.status) }}
36+
</span>
37+
} @else {
38+
<div class="org-select-wrapper">
39+
<select [(ngModel)]="editForm.status" class="org-select">
40+
<option value="active">Active</option>
41+
<option value="inactive">Inactive</option>
42+
<option value="pending">Pending</option>
43+
<option value="unknown">Unknown</option>
44+
</select>
45+
</div>
46+
} @if (!isEditing && myId === organization.ownerId) {
47+
<button (click)="enableEdit()" class="btn btn-edit">
48+
<i class="fas fa-edit"></i> Chỉnh sửa
49+
</button>
7950
}
80-
@if (isEditing) {
81-
<div class="edit-mode-form">
82-
<div class="form-group">
83-
<label for="org-description">Mô tả</label>
84-
<textarea
85-
id="org-description"
86-
[(ngModel)]="editForm.description"
87-
placeholder="Mô tả"
88-
></textarea>
89-
</div>
90-
<div class="form-group">
91-
<label for="org-address">Địa chỉ</label>
92-
<input
93-
id="org-address"
94-
[(ngModel)]="editForm.address"
95-
placeholder="Địa chỉ"
96-
/>
97-
</div>
98-
<div class="form-group">
99-
<label for="org-email">Email</label>
100-
<input
101-
id="org-email"
102-
[(ngModel)]="editForm.email"
103-
placeholder="Email"
104-
/>
105-
</div>
106-
<div class="form-group">
107-
<label for="org-phone">Số điện thoại</label>
108-
<input
109-
id="org-phone"
110-
[(ngModel)]="editForm.phone"
111-
placeholder="Số điện thoại"
112-
/>
113-
</div>
114-
<div class="form-actions">
115-
<button class="btn btn-cancel" (click)="cancelEdit()">Hủy</button>
116-
<button
117-
class="btn btn-save"
118-
(click)="saveEdit()"
119-
[disabled]="isSaving"
120-
>
121-
Lưu
122-
</button>
123-
</div>
124-
</div>
125-
}
126-
</div>
127-
</div>
51+
</div>
52+
@if (!isEditing) {
53+
<div class="view-mode-details">
54+
@if (organization.description) {
55+
<p class="org-description">
56+
{{ organization.description }}
57+
</p>
12858
}
59+
<div class="org-meta">
60+
<div class="org-meta__item">
61+
<i class="fas fa-map-marker-alt"></i>
62+
<span>{{ organization.address }}</span>
63+
</div>
64+
<div class="org-meta__item">
65+
<i class="fas fa-envelope"></i>
66+
<span>{{ organization.email }}</span>
67+
</div>
68+
<div class="org-meta__item">
69+
<i class="fas fa-phone"></i>
70+
<span>{{ organization.phone }}</span>
71+
</div>
72+
</div>
73+
</div>
74+
} @if (isEditing) {
75+
<div class="edit-mode-form">
76+
<div class="form-group">
77+
<label for="org-description">Mô tả</label>
78+
<textarea
79+
id="org-description"
80+
[(ngModel)]="editForm.description"
81+
placeholder="Mô tả"
82+
></textarea>
83+
</div>
84+
<div class="form-group">
85+
<label for="org-address">Địa chỉ</label>
86+
<input
87+
id="org-address"
88+
[(ngModel)]="editForm.address"
89+
placeholder="Địa chỉ"
90+
/>
91+
</div>
92+
<div class="form-group">
93+
<label for="org-email">Email</label>
94+
<input
95+
id="org-email"
96+
[(ngModel)]="editForm.email"
97+
placeholder="Email"
98+
/>
99+
</div>
100+
<div class="form-group">
101+
<label for="org-phone">Số điện thoại</label>
102+
<input
103+
id="org-phone"
104+
[(ngModel)]="editForm.phone"
105+
placeholder="Số điện thoại"
106+
/>
107+
</div>
108+
<div class="form-actions">
109+
<button class="btn btn-cancel" (click)="cancelEdit()">Hủy</button>
110+
<button
111+
class="btn btn-save"
112+
(click)="saveEdit()"
113+
[disabled]="isSaving"
114+
>
115+
Lưu
116+
</button>
117+
</div>
129118
</div>
119+
}
130120
</div>
121+
</div>
122+
}
123+
</div>
124+
</div>

src/app/features/organization/organization-component/details-organization/details-organization.component.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { finalize } from 'rxjs/internal/operators/finalize';
1010
import { FormsModule } from '@angular/forms';
1111
import { sendNotification } from '../../../../shared/utils/notification';
1212
import { Store } from '@ngrx/store';
13+
import { getUserId } from '../../../../shared/utils/userInfo';
1314

1415
@Component({
1516
selector: 'app-details-organization',
@@ -27,13 +28,17 @@ export class DetailsOrganizationComponent implements OnInit {
2728

2829
isSaving = false;
2930

31+
myId = '';
32+
3033
constructor(
3134
private route: ActivatedRoute,
3235
private organizationService: OrganizationService,
3336
private store: Store
3437
) {}
3538

3639
ngOnInit() {
40+
this.myId = getUserId();
41+
3742
this.route.params.subscribe((params) => {
3843
const id = params['orgId'];
3944
this.loadOrganization(id);

src/app/features/organization/pages/organization-management/organization-management.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ <h4>{{ org.name }}</h4>
7676
<span class="status-badge" [ngClass]="org.status.toLowerCase()">
7777
{{ org.status }}
7878
</span>
79-
@if(org.id === myOrgId){
79+
@if(org.ownerId === myId){
8080
<button class="btn-icon danger" (click)="confirmDelete(org.id)">
8181
<i class="fa fa-trash"></i>
8282
</button>

src/app/features/organization/pages/organization-management/organization-management.component.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import {
3333
} from '../../../../shared/store/loading-state/loading.action';
3434
import { decodeJWT } from '../../../../shared/utils/stringProcess';
3535
import { AuthService } from '../../../../core/services/api-service/auth.service';
36+
import { getUserId } from '../../../../shared/utils/userInfo';
3637

3738
@Component({
3839
selector: 'app-organization-management',
@@ -58,6 +59,8 @@ export class OrganizationManagementComponent implements OnInit, OnDestroy {
5859
lottieOptions = lottieOptions2;
5960
lottieOptionsLoading = lottieOptionsLoading1;
6061
myOrgId = '';
62+
ownerOrgId = '';
63+
myId = '';
6164

6265
// Pagination state
6366
page = 1;
@@ -82,6 +85,7 @@ export class OrganizationManagementComponent implements OnInit, OnDestroy {
8285

8386
ngOnInit() {
8487
this.myOrgId = decodeJWT(localStorage.getItem('token')).payload.org_id;
88+
this.myId = getUserId();
8589

8690
this.initCreateForm();
8791
this.loadOrgs();

0 commit comments

Comments
 (0)