Skip to content

Commit

Permalink
conflict
Browse files Browse the repository at this point in the history
  • Loading branch information
ShivanshPlays committed Nov 9, 2024
2 parents d6fc144 + be4ef4b commit 97095c1
Show file tree
Hide file tree
Showing 27 changed files with 1,047 additions and 32 deletions.
51 changes: 51 additions & 0 deletions .github/ISSUE_TEMPLATE/bug.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: ​🐞 Bug
description: Report an issue to help us improve the project.
title: '[BUG] '
labels: ["bug"]
body:
- type: textarea
attributes:
label: Description
id: description
description: A brief description of the issue or bug you are facing, also include what you tried and what didn't work.
validations:
required: false
- type: textarea
attributes:
label: Screenshots
id: screenshots
description: Please add screenshots if applicable
validations:
required: false
- type: textarea
attributes:
label: Any additional information?
id: extrainfo
description: Any additional information or Is there anything we should know about this bug?
validations:
required: false
- type: dropdown
id: browsers
attributes:
label: What browser are you seeing the problem on?
multiple: true
options:
- Firefox
- Chrome
- Safari
- Microsoft Edge
- type: checkboxes
id: no-duplicate-issues
attributes:
label: 'Checklist'
options:
- label: 'I have checked the existing issues'
required: true

- label: 'I have read the [Contributing Guidelines](https://github.com/alo7lika/Alimento/blob/dev/CONTRIBUTING.md)'
required: true
- label: "I'm a GSSoC'24-Extd contributor"
- label: "I'm a Hacktoberfest'24 contributor"

- label: 'I am willing to work on this issue (optional)'
required: false
32 changes: 0 additions & 32 deletions .github/ISSUE_TEMPLATE/bug_report.md

This file was deleted.

5 changes: 5 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
blank_issues_enabled: true
contact_links:
- name: Questions or need suggestions?
url: https://github.com/Vimall03/Alimento/discussions/new?category=q-a
about: You can create a Q&A discussion and ask for clarifications
79 changes: 79 additions & 0 deletions alimento-nextjs/actions/forum/Answer.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
"use server"

import prismadb from "@/lib/prismadb";
import { Answer } from "@prisma/client";
import { UUID } from "crypto";

type CreateAnswerResponse = {
success: boolean;
data?: Answer
error?: string;
};

export async function createAnswer(
questionId: string,
content: string
): Promise<CreateAnswerResponse> {
try {

const newAnswer = await prismadb.answer.create({
data: {
content,
questionId,
},
});

await prismadb.question.update({
where: { id: questionId },
data: { answered: true },
});

return {
success: true,
data: newAnswer
};
} catch (error) {
console.error("Error creating answer:", error);
return {
success: false,
error: "Failed to create answer",
};
}
}




type DeleteAnswerResponse = {
success: boolean;
data?: Answer;
error?: string;
};

export async function deleteSpecificAnswer(answerId: string): Promise<DeleteAnswerResponse> {
try {
const deletedAnswer = await prismadb.answer.delete({
where: {
id: answerId,
},
});

if (!deletedAnswer) {
return {
success: false,
error: "Error in deleting the answer",
};
}

return {
success: true,
data: deletedAnswer,
};
} catch (error) {
console.error("Error deleting specific answer:", error);
return {
success: false,
error: "Failed to delete specific answer",
};
}
}
141 changes: 141 additions & 0 deletions alimento-nextjs/actions/forum/Question.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
'use server';

import prismadb from '@/lib/prismadb';
import { Answer, Question } from '@prisma/client';
import { UUID } from 'crypto';

interface QuestionWithAnswer extends Question{
answers?:Answer[]
}

type QuestionResponse = {
success: boolean;
data?: Question;
error?: string;
};

type getQuestionsResponse = {
success: boolean;
data?: QuestionWithAnswer[];
error?: string;
};


export async function createQuestion(
content: string
): Promise<QuestionResponse> {
try {
const newQuestion = await prismadb.question.create({
data: {
content,
},
});

return {
success: true,
data: newQuestion,
};
} catch (error) {
console.error('Error creating question:', error);
return {
success: false,
error: 'Failed to create question',
};
}
}

export async function getUnansweredQuestions(
): Promise<getQuestionsResponse> {
try {
const unAnsweredQuestions = await prismadb.question.findMany({
where: {
answered: false,
},
});

if (!unAnsweredQuestions.length) {
return {
success: false,
error: 'No unanswered questions!',
};
}

return {
success: true,
data: unAnsweredQuestions,
};
} catch (error) {
console.error('Error fetching unanswered questions', error);
return {
success: false,
error: 'Failed to fetch unanswered questions',
};
}
}


export async function getAnsweredQuestions(
): Promise<getQuestionsResponse> {
try {
const AnsweredQuestions = await prismadb.question.findMany({
where: {
answered: true,
},
include:{
answers:true
}
});

if (!AnsweredQuestions.length) {
return {
success: false,
error: 'No unanswered questions!',
};
}

return {
success: true,
data: AnsweredQuestions,
};
} catch (error) {
console.error('Error fetching answered questions', error);
return {
success: false,
error: 'Failed to fetch answered questions',
};
}
}

// This will be only accessible by the admin

// deletes a question and all its related answers if present

export async function deleteQuestion(
questionId: string,
): Promise<QuestionResponse> {
try {
const deletedQuestion = await prismadb.question.delete({
where: {
id:questionId
},
});

if (!deletedQuestion) {
return {
success: false,
error: 'error in deleting the question',
};
}

return {
success: true,
data: deletedQuestion,
};
} catch (error) {
console.error('Error deleting specific question', error);
return {
success: false,
error: 'Failed to delete specific question',
};
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
'use client';

import { createQuestion } from '@/actions/forum/Question';
import { Button } from '@/components/ui/button';
import { Label } from '@/components/ui/label';
import { Spinner } from '@/components/ui/spinner';
import { Textarea } from '@/components/ui/textarea';
import { useSession } from 'next-auth/react';
import { SyntheticEvent, useEffect, useState } from 'react';

const NewQuestionForm = () => {
const [questionContent, setQuestionContent] = useState('');
const [submissionError, setSubmissionError] = useState('');

const [isMounted, setIsMounted] = useState(false);
const [isAuthenticated, setIsAuthenticated] = useState(false);

const session = useSession();

useEffect(() => {
setIsMounted(true);
if (!(session.status === 'loading')) {
if (session.status === 'authenticated') {
setIsAuthenticated(true);
// console.log("hereeeeeeeeee"+isAuthenticated+session.status)
}
}
}, [session.status]);

if (!isMounted) {
return <Spinner />;
}

const handleSubmit = async (e: SyntheticEvent) => {
// e.preventDefault();
try {
const response = await createQuestion(questionContent);
if (!response.success && response.error) {
setSubmissionError(response.error);
} else {
setQuestionContent('');
setSubmissionError('');
}
} catch (error) {
setSubmissionError(
'An error occurred while submitting your question. Please try again.'
);
}
};

return (
<>
{isAuthenticated ? (
<form onSubmit={handleSubmit} className="space-y-4">
<Label htmlFor="new-question" className="text-gray-700 font-medium">
Your Question
</Label>
<Textarea
id="new-question"
value={questionContent}
onChange={e => setQuestionContent(e.target.value)}
placeholder="Type your question here..."
className="resize-none w-full rounded-md border-gray-300 focus:border-indigo-500"
required
/>
{submissionError && <p className="text-red-600">{submissionError}</p>}
<Button type="submit" className="w-full bg-green-500 text-white">
Submit Question
</Button>
</form>
) : (
<p className="text-red-500 text-sm">
Please authenticate yourself to post a question.
</p>
)}
</>
);
};

export default NewQuestionForm;
Loading

0 comments on commit 97095c1

Please sign in to comment.