eeg_portal/eeg_frontend/src/app/services/membership.ts
Bernhard Müller 20787395ab refactor(frontend): replace hardcoded localhost URLs with environment config
- Create environment.ts with apiUrl constant
- Update all 6 services to use environment.apiUrl
- Update forgot-password and reset-password pages
- Update app.config.ts BASE_PATH provider
2026-07-22 07:50:38 +02:00

71 lines
2.0 KiB
TypeScript

import {inject, Injectable} from '@angular/core';
import {HttpClient} from '@angular/common/http';
import {Observable} from 'rxjs';
import {environment} from '../../environments/environment';
export interface EligibleCommunity {
id: string;
name: string;
type: string;
edaEcId: string;
}
export interface MembershipRequest {
meteringPointId: string;
energyCommunityId: string;
priorityLevel: number;
}
export interface MembershipResponse {
id: string;
meteringPointId: string;
atNumber: string;
energyCommunityId: string;
communityName: string;
priorityLevel: number;
status: string;
validFrom: string | null;
validTo: string | null;
}
export interface PendingMembershipResponse {
id: string;
userEmail: string;
firstName: string;
lastName: string;
atNumber: string;
communityName: string;
priorityLevel: number;
status: string;
}
@Injectable({providedIn: 'root'})
export class MembershipService {
private http = inject(HttpClient);
private apiUrl = `${environment.apiUrl}/api/community`;
getEligibleCommunities(meteringPointId: string): Observable<EligibleCommunity[]> {
return this.http.get<EligibleCommunity[]>(`${this.apiUrl}/metering-points/${meteringPointId}/eligible-communities`);
}
requestMembership(request: MembershipRequest): Observable<string> {
return this.http.post<string>(`${this.apiUrl}/memberships/request`, request);
}
getOwnMemberships(): Observable<MembershipResponse[]> {
return this.http.get<MembershipResponse[]>(`${this.apiUrl}/memberships/me`);
}
getPendingMemberships(): Observable<PendingMembershipResponse[]> {
return this.http.get<PendingMembershipResponse[]>(`${this.apiUrl}/admin/memberships/pending`);
}
approveMembership(id: string): Observable<void> {
return this.http.put<void>(`${this.apiUrl}/admin/memberships/${id}/approve`, {});
}
rejectMembership(id: string): Observable<void> {
return this.http.put<void>(`${this.apiUrl}/admin/memberships/${id}/reject`, {});
}
}