- 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
71 lines
2.0 KiB
TypeScript
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`, {});
|
|
}
|
|
}
|