diff --git a/src/views/User/UserActivities.jsx b/src/views/User/UserActivities.jsx
index 25918b5..62ee3e1 100644
--- a/src/views/User/UserActivities.jsx
+++ b/src/views/User/UserActivities.jsx
@@ -259,26 +259,31 @@ const UserActivites = () => {
}
const generateHistoryPieChartData = history => {
- const totalCompleted = history.filter(
- item => item.dueDate > item.completedAt,
- ).length
- const totalLate = history.filter(
- item => item.dueDate < item.completedAt,
- ).length
+ const totalCompleted =
+ history.filter(item => item.dueDate > item.completedAt).length || 0
+ const totalLate =
+ history.filter(item => item.dueDate < item.completedAt).length || 0
+ const totalNoDueDate = history.filter(item => !item.dueDate).length || 0
return [
{
label: `On time`,
value: totalCompleted,
- color: '#4ec1a2',
+ color: TASK_COLOR.COMPLETED,
id: 1,
},
{
label: `Late`,
value: totalLate,
- color: '#f6ad55',
+ color: TASK_COLOR.LATE,
id: 2,
},
+ {
+ label: `Completed`,
+ value: totalNoDueDate,
+ color: TASK_COLOR.ANYTIME,
+ id: 3,
+ },
]
}
if (isChoresHistoryLoading || isChoresLoading) {
diff --git a/src/views/User/UserPoints.jsx b/src/views/User/UserPoints.jsx
index 133f581..e97fa31 100644
--- a/src/views/User/UserPoints.jsx
+++ b/src/views/User/UserPoints.jsx
@@ -7,10 +7,11 @@ import {
YAxis,
} from 'recharts'
-import { Toll } from '@mui/icons-material'
+import { CreditCard, Toll } from '@mui/icons-material'
import {
Avatar,
Box,
+ Button,
Card,
Chip,
Container,
@@ -27,11 +28,17 @@ import LoadingComponent from '../components/Loading.jsx'
import { useChoresHistory } from '../../queries/ChoreQueries.jsx'
import { useCircleMembers } from '../../queries/UserQueries.jsx'
+import { RedeemPoints } from '../../utils/Fetcher.jsx'
+import RedeemPointsModal from '../Modals/RedeemPointsModal'
const UserPoints = () => {
const [tabValue, setTabValue] = useState(7)
+ const [isRedeemModalOpen, setIsRedeemModalOpen] = useState(false)
- const { data: circleMembersData, isLoading: isCircleMembersLoading } =
- useCircleMembers()
+ const {
+ data: circleMembersData,
+ isLoading: isCircleMembersLoading,
+ handleRefetch: handleCircleMembersRefetch,
+ } = useCircleMembers()
const {
data: choresHistoryData,
@@ -208,7 +215,7 @@ const UserPoints = () => {
return yearlyAggregated
}
- if (isChoresHistoryLoading || isCircleMembersLoading) {
+ if (isChoresHistoryLoading || isCircleMembersLoading || !userProfile) {
return
}
@@ -233,6 +240,8 @@ const UserPoints = () => {
sx={{
gap: 1,
my: 2,
+ display: 'flex',
+ justifyContent: 'start',
}}
>
+ {circleUsers.find(user => user.userId === userProfile.id)?.role ===
+ 'admin' && (
+ }
+ onClick={() => {
+ setIsRedeemModalOpen(true)
+ }}
+ >
+ Redeem Points
+
+ )}
{
+ {
+ setIsRedeemModalOpen(false)
+ },
+ isOpen: isRedeemModalOpen,
+ available: circleUsers.find(user => user.userId === selectedUser)
+ ?.points,
+ user: circleUsers.find(user => user.userId === selectedUser),
+ onSave: ({ userId, points }) => {
+ RedeemPoints(userId, points, userProfile.circleID)
+ .then(res => {
+ setIsRedeemModalOpen(false)
+ handleCircleMembersRefetch()
+ })
+ .catch(err => {
+ console.log(err)
+ })
+ },
+ }}
+ />
)
}