diff --git a/apps/frontend/src/app/models/solution.model.ts b/apps/frontend/src/app/models/solution.model.ts index d7d9569..fed9526 100644 --- a/apps/frontend/src/app/models/solution.model.ts +++ b/apps/frontend/src/app/models/solution.model.ts @@ -1,5 +1,8 @@ import { CommentModel } from './comment.model'; export interface SolutionModel { - comments: CommentModel[]; + title: string, + description: string, + comments: CommentModel[], + createdAt: Date } diff --git a/apps/frontend/src/app/modules/solutions/solutions.component.html b/apps/frontend/src/app/modules/solutions/solutions.component.html index c418c67..90e3e1e 100644 --- a/apps/frontend/src/app/modules/solutions/solutions.component.html +++ b/apps/frontend/src/app/modules/solutions/solutions.component.html @@ -1 +1,4 @@ -

solutions works!

+
+ {{solution.title}} +
+gv gvghv \ No newline at end of file diff --git a/apps/frontend/src/app/modules/solutions/solutions.component.ts b/apps/frontend/src/app/modules/solutions/solutions.component.ts index 906aff9..c774346 100644 --- a/apps/frontend/src/app/modules/solutions/solutions.component.ts +++ b/apps/frontend/src/app/modules/solutions/solutions.component.ts @@ -1,10 +1,22 @@ -import { Component } from '@angular/core'; +import { Component, OnInit } from '@angular/core'; +import { Store } from '@ngrx/store'; +import { EMPTY, Observable } from 'rxjs'; +import { SolutionModel } from 'src/app/models/solution.model'; +import { receiveAllIssuesAction } from 'src/app/store/actions/issue.actions'; +import { selectAllSolutions } from 'src/app/store/selectors/issue.selectors'; +import { SolutionsModule } from './solutions.module'; @Component({ selector: 'app-solutions', templateUrl: './solutions.component.html', styleUrls: ['./solutions.component.scss'] }) -export class SolutionsComponent { - +export class SolutionsComponent implements OnInit { + solutions$: Observable = EMPTY + constructor(private store: Store){} + ngOnInit(): void { + this.store.dispatch(receiveAllIssuesAction()) + this.solutions$ = this.store.select(selectAllSolutions) + + } } diff --git a/apps/frontend/src/app/services/solutions.service.ts b/apps/frontend/src/app/services/solutions.service.ts new file mode 100644 index 0000000..1af2224 --- /dev/null +++ b/apps/frontend/src/app/services/solutions.service.ts @@ -0,0 +1,32 @@ +import { HttpClient } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { map } from 'rxjs'; +import { SolutionModel } from '../models/solution.model'; +import { CommentModel } from '../models/comment.model'; + +@Injectable({ + providedIn: 'root', +}) +export class IssueService { + constructor(private http: HttpClient) {} + + getSolutions(id: string) { + return this.http.get('/issue/'+id+'/solution').pipe( + map((solution) => + solution.map((solution) => ({ + title: solution.title, + description: solution.description, + comments: solution.comments, + createdAt: solution.createdAt + })) + ) + ); + } +} + +interface SolutionDto { + title: string, + description: string, + comments: CommentModel[], + createdAt: Date +} diff --git a/apps/frontend/src/app/store/reducer/issue.reducer.ts b/apps/frontend/src/app/store/reducer/issue.reducer.ts index d24f399..3daeb1b 100644 --- a/apps/frontend/src/app/store/reducer/issue.reducer.ts +++ b/apps/frontend/src/app/store/reducer/issue.reducer.ts @@ -24,6 +24,12 @@ const initialState: IssueState = { photos: [], status: 'new', type: 'problem', + solution: { + comments: [], + createdAt: new Date(), + description: "eoooo", + title: "title" + }, comments: [], }, { diff --git a/apps/frontend/src/app/store/selectors/issue.selectors.ts b/apps/frontend/src/app/store/selectors/issue.selectors.ts index 2a566fc..878c4ba 100644 --- a/apps/frontend/src/app/store/selectors/issue.selectors.ts +++ b/apps/frontend/src/app/store/selectors/issue.selectors.ts @@ -1,5 +1,7 @@ import { createFeatureSelector, createSelector } from '@ngrx/store'; import { IssueState } from '../state/issue.state'; +import { SolutionModel } from 'src/app/models/solution.model'; +import { IssueModel } from 'src/app/models/issue.model'; const selectIssueFeatureState = createFeatureSelector('issueState'); @@ -12,3 +14,5 @@ export const selectIssue = (id: string) => createSelector(selectAllIssues, (issues) => issues.find((issue) => issue.id === id) ); + + export const selectAllSolutions = createSelector(selectAllIssues, issues => issues.map(issue => issue.solution).filter(solution => solution !== undefined) as SolutionModel[]) \ No newline at end of file