import { inject, Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { map } from 'rxjs/operators'; import { handleRequest } from '@/core/helpers/http'; import { HttpPlainResponse, HttpResponse } from '@/core/models/response.interface'; import { AnswerDto, Question, Survey } from './survey.models'; @Injectable() export class SurveyService { private http = inject(HttpClient); private route = 'survey'; getActiveSurveys() { return this.http.get>(this.route).pipe(map(({ data }) => data)); } getSurvey(survey: number) { return this.http .get>(`${this.route}/${survey}`) .pipe(map(({ data }) => data)); } async saveSurvey(session: number, answers: AnswerDto[]) { const { message } = await handleRequest( this.http.post(`${this.route}/${session}`, { answers }) ); return message; } async saveQuestion(session_id: number, question: string) { const request = this.http.post(`live/question`, { session_id, question, }); await handleRequest(request); } } export const injectSurveyService = () => inject(SurveyService);