Skip to content

Commit

Permalink
Se agrega consumo demo
Browse files Browse the repository at this point in the history
  • Loading branch information
JamiltonQuintero committed Oct 1, 2024
1 parent a866336 commit 0ecf8cb
Show file tree
Hide file tree
Showing 5 changed files with 56 additions and 33 deletions.
53 changes: 26 additions & 27 deletions src/app/(routes)/demo/[id]/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,9 @@ import { Button } from '@/components/ui/button'
import { Textarea } from '@/components/ui/textarea'
import { cn } from '@/lib/utils'
import { Skeleton } from '@/components/ui/skeleton'

type Question = {
idPregunta: string
pregunta: string
}
import { createInterviewManagerRepositoryAdapter } from '@/modules/interview_manager/infrastructure/adapter/interviewManagerRepositoryAdapter'
import { createInterviewManagerService } from '@/modules/interview_manager/application/service/interviewManagerService'
import { Question } from '@/modules/interview_manager/domain/model/interviewManager'

type Answer = {
idPregunta: string
Expand All @@ -21,6 +19,9 @@ type Form = {
[key: string]: string
}

const interviewManagerRepositoryAdapter = createInterviewManagerRepositoryAdapter();
const interviewManagerService = createInterviewManagerService(interviewManagerRepositoryAdapter);

export default function DemoInterviewPage({ params }: { params: { id: string } }) {
const [questions, setQuestions] = useState<Question[]>([])
const [answers, setAnswers] = useState<Answer[]>([])
Expand All @@ -31,14 +32,27 @@ export default function DemoInterviewPage({ params }: { params: { id: string } }
const [error, setError] = useState(false)

const initializeAnswers = (questions: Question[]): Answer[] => {
return questions.map(question => {
return {
idPregunta: question.idPregunta,
respuesta: ''
}
})
return questions.map(question => ({
idPregunta: question.idPregunta,
respuesta: ''
}))
}

useEffect(() => {
const getQuestions = async () => {
try {
const fetchedQuestions = await interviewManagerService.getQuestionsByRole(params.id);
setQuestions(fetchedQuestions);
setAnswers(initializeAnswers(fetchedQuestions));
setLoading(false);
} catch (error) {
console.error('Error fetching questions: ', error);
setLoading(false);
}
}
getQuestions();
}, [params.id]);

const handleRespuestaChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {
const newAnswers = [...answers]
newAnswers[currentQuestion].respuesta = e.target.value
Expand Down Expand Up @@ -77,21 +91,6 @@ export default function DemoInterviewPage({ params }: { params: { id: string } }
setError(false)
}

useEffect(() => {
const getQuestions = async () => {
try {
const response = await fetch(`${process.env.NEXT_PUBLIC_DEMO_PREGUNTAS}?rol=${params.id}`)
const data: Question[] = await response.json()
setQuestions(data)
setAnswers(initializeAnswers(data))
setLoading(false)
} catch (error) {
console.error('Error fetching questions: ', error)
}
}
getQuestions()
}, [params.id])

if (loading) {
return (
<div className='container mx-auto p-4 flex flex-col justify-center min-h-screen'>
Expand Down Expand Up @@ -173,4 +172,4 @@ export default function DemoInterviewPage({ params }: { params: { id: string } }
</Card>
</div>
)
}
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
import { InterviewManagerRepositoryPort } from '@/modules/interview_manager/domain/port/interviewManagerRepositoryPort';
import { InterviewManager, Question } from '@/modules/interview_manager/domain/model/interviewManager';

export const createInterviewManagerService = (interviewManagerRepositoryPort: InterviewManagerRepositoryPort) => {
return {
getById: async (interviewId: string) => {
getById: async (interviewId: string): Promise<InterviewManager> => {
return interviewManagerRepositoryPort.getById(interviewId);
},
getQuestionsByRole: async (role: string): Promise<Question[]> => {
return interviewManagerRepositoryPort.getQuestionsByRole(role);
}
}
}
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
export type InterviewManager = {
export interface Question {
idPregunta: string;
pregunta: string;
}

export interface InterviewManager {
id: string;
questions: Question[];
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { InterviewManager } from '@/modules/interview_manager/domain/model/interviewManager';
import { InterviewManager, Question } from '../model/interviewManager';

export interface InterviewManagerRepositoryPort {
getById: (id: string) => Promise<InterviewManager>;
getQuestionsByRole: (role: string) => Promise<Question[]>;
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,24 @@
import { InterviewManagerRepositoryPort } from '@/modules/interview_manager/domain/port/interviewManagerRepositoryPort';
import { InterviewManager } from '@/modules/interview_manager/domain/model/interviewManager';
import { InterviewManager, Question } from '@/modules/interview_manager/domain/model/interviewManager';

export const createInterviewManagerRepositoryAdapter = (): InterviewManagerRepositoryPort => {
return {
getById: async (id: string): Promise<InterviewManager> => {
//TODO: Llamar a la API
return { id: "1" };
// TODO: Implementar la lógica real para obtener una entrevista por ID
return { id: "1", questions: [] };
},
getQuestionsByRole: async (role: string): Promise<Question[]> => {
try {
const response = await fetch(`${process.env.NEXT_PUBLIC_DEMO_PREGUNTAS}?rol=${role}`);
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
const data: Question[] = await response.json();
return data;
} catch (error) {
console.error('Error fetching questions: ', error);
throw error;
}
}
}
}

0 comments on commit 0ecf8cb

Please sign in to comment.