Skip to content

Commit cd688fc

Browse files
committed
Amout scholaship
1 parent cd0916e commit cd688fc

File tree

3 files changed

+25
-6
lines changed

3 files changed

+25
-6
lines changed

apps/nextjs/app/[lang]/[pathPrefix]/page.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export default function Page({ params }: PageProps) {
2929
const parameters = use(params)
3030
const { lang, pathPrefix } = parameters
3131

32-
const { course, loading, error, percentageCompleted } = useGuideData({
32+
const { course, loading, error, percentageCompleted, amountScholarship } = useGuideData({
3333
lang,
3434
pathPrefix,
3535
})
@@ -121,6 +121,12 @@ export default function Page({ params }: PageProps) {
121121
{lang === 'es' ? 'Total de guías aprovadas: ' : 'Total de guías aprovadas: '}
122122
{course.guias.filter(g => g.completed).length}
123123
</div>
124+
{amountScholarship !== null && (
125+
<div className="text-sm text-gray-600 font-medium">
126+
{lang === 'es' ? 'Total en USDT ganado: ' : 'Total USDT earned: '}
127+
${amountScholarship.toFixed(2)} USDT
128+
</div>
129+
)}
124130
</div>
125131
</div>
126132
)}

apps/nextjs/app/api/scholarship/route.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -100,18 +100,24 @@ export async function GET(req: NextRequest) {
100100
let canSubmit = false
101101
let amountPerGuide = 0
102102
let percentageCompleted = null
103+
let amountScholarship = null
103104

104105
// Obtener porcentaje completado del curso si hay usuario y curso válido
105106
if (retMessage === '' && billeteraUsuario && billeteraUsuario.usuario_id && !isNaN(courseIdNumber)) {
106107
try {
107108
const courseUsuario = await db
108109
.selectFrom('course_usuario')
109-
.select('percentagecompleted')
110+
.select(['percentagecompleted', 'amountscholarship'])
110111
.where('usuario_id', '=', billeteraUsuario.usuario_id)
111112
.where('proyectofinanciero_id', '=', courseIdNumber)
112113
.executeTakeFirst()
113-
if (courseUsuario && courseUsuario.percentagecompleted !== null) {
114-
percentageCompleted = Number(courseUsuario.percentagecompleted)
114+
if (courseUsuario) {
115+
if (courseUsuario.percentagecompleted !== null) {
116+
percentageCompleted = Number(courseUsuario.percentagecompleted)
117+
}
118+
if (courseUsuario.amountscholarship !== null) {
119+
amountScholarship = Number(courseUsuario.amountscholarship)
120+
}
115121
}
116122
} catch (error) {
117123
console.error('Error fetching percentage completed:', error)
@@ -206,6 +212,7 @@ export async function GET(req: NextRequest) {
206212
console.log('** Normal exit with amountPerGuide=', amountPerGuide)
207213
console.log('** Normal exit with canSubmit=', canSubmit)
208214
console.log('** Normal exit with percentageCompleted=', percentageCompleted)
215+
console.log('** Normal exit with amountScholarship=', amountScholarship)
209216
console.log('** Normal exit with message=', retMessage)
210217
return NextResponse.json(
211218
{
@@ -215,6 +222,7 @@ export async function GET(req: NextRequest) {
215222
amountPerGuide: amountPerGuide,
216223
canSubmit: canSubmit,
217224
percentageCompleted: percentageCompleted,
225+
amountScholarship: amountScholarship,
218226
message: retMessage,
219227
},
220228
{ status: 200 },

apps/nextjs/lib/hooks/useGuideData.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ export function useGuideData({
5454
const [previousGuidePath, setPreviousGuidePath] = useState('')
5555
const [coursePath, setCoursePath] = useState('')
5656
const [percentageCompleted, setPercentageCompleted] = useState<number | null>(null)
57+
const [amountScholarship, setAmountScholarship] = useState<number | null>(null)
5758

5859
useEffect(() => {
5960
const fetchGuideData = async () => {
@@ -107,16 +108,19 @@ export function useGuideData({
107108
const detailResponse = await axios.get(detailUrl)
108109
const detailedCourse = detailResponse.data
109110

110-
// Fetch percentage completed
111+
// Fetch percentage completed and scholarship amount
111112
if (session && address && detailedCourse.id) {
112113
try {
113114
const scholarshipUrl = `/api/scholarship?courseId=${detailedCourse.id}&walletAddress=${address}&token=${csrfToken}`
114115
const scholarshipRes = await axios.get(scholarshipUrl)
115116
if (scholarshipRes.data.percentageCompleted !== null) {
116117
setPercentageCompleted(Number(scholarshipRes.data.percentageCompleted))
117118
}
119+
if (scholarshipRes.data.amountScholarship !== null) {
120+
setAmountScholarship(Number(scholarshipRes.data.amountScholarship))
121+
}
118122
} catch (err) {
119-
console.error('Error fetching percentage completed:', err)
123+
console.error('Error fetching scholarship data:', err)
120124
// Don't fail the whole request
121125
}
122126
}
@@ -189,6 +193,7 @@ export function useGuideData({
189193
previousGuidePath,
190194
coursePath,
191195
percentageCompleted,
196+
amountScholarship,
192197
}
193198
}
194199

0 commit comments

Comments
 (0)