feat : update image

Deskripsi:
- update image calender
- update image discussion
- update image division
- update image project
- update image task
- update image user
- update api image

No Issue
This commit is contained in:
lukman
2024-09-02 15:39:15 +08:00
parent cbd999678d
commit 71451229c2
28 changed files with 92 additions and 66 deletions

View File

@@ -66,17 +66,17 @@ export async function GET(request: Request, context: { params: { id: string } })
select: {
id: true,
name: true,
email: true
email: true,
img: true
}
}
}
})
const fixMember = member.map((v: any) => ({
..._.omit(v, ["User"]),
name: v.User.name,
email: v.User.email,
img: v.User.img
}))

View File

@@ -43,7 +43,8 @@ export async function GET(request: Request, context: { params: { id: string } })
createdAt: true,
User: {
select: {
name: true
name: true,
img: true
}
},
DivisionDisscussionComment: {
@@ -53,7 +54,8 @@ export async function GET(request: Request, context: { params: { id: string } })
createdAt: true,
User: {
select: {
name: true
name: true,
img: true
}
}
}
@@ -63,16 +65,17 @@ export async function GET(request: Request, context: { params: { id: string } })
const { ...userMember } = data
const username = data?.User.name
const user_img = data?.User.img
const createdAt = moment(data?.createdAt).format("LL")
const result = { ...userMember, username, createdAt }
const result = { ...userMember, username, createdAt, user_img }
const omitData = _.omit(result, ["User"])
const comments = omitData.DivisionDisscussionComment.map((comment: any) => {
return { ...comment, username: comment.User.name };
return { ...comment, username: comment.User.name, img: comment.User.img };
});

View File

@@ -53,7 +53,8 @@ export async function GET(request: Request) {
createdAt: true,
User: {
select: {
name: true
name: true,
img: true
}
},
DivisionDisscussionComment: {
@@ -69,6 +70,7 @@ export async function GET(request: Request) {
const fixData = data.map((v: any) => ({
..._.omit(v, ["User", "DivisionDisscussionComment", "createdAt"]),
user_name: v.User.name,
img: v.User.img,
total_komentar: v.DivisionDisscussionComment.length,
createdAt: moment(v.createdAt).format("LL")
}))

View File

@@ -160,6 +160,7 @@ export async function GET(request: Request, context: { params: { id: string } })
id: true,
name: true,
email: true,
img: true
}
})
@@ -167,7 +168,7 @@ export async function GET(request: Request, context: { params: { id: string } })
idUser: v.id,
name: v.name,
email: v.email,
img: v.img
}))
const dataFix = {

View File

@@ -108,9 +108,10 @@ export async function GET(request: Request, context: { params: { id: string } })
User: {
select: {
name: true,
email: true
email: true,
img: true
}
}
},
}
})
@@ -118,6 +119,7 @@ export async function GET(request: Request, context: { params: { id: string } })
..._.omit(v, ["User"]),
name: v.User.name,
email: v.User.email,
img: v.User.img
}))
allData = fix

View File

@@ -112,7 +112,8 @@ export async function GET(request: Request, context: { params: { id: string } })
User: {
select: {
name: true,
email: true
email: true,
img: true
}
}
}
@@ -123,6 +124,7 @@ export async function GET(request: Request, context: { params: { id: string } })
..._.omit(v, ["User"]),
name: v.User.name,
email: v.User.email,
img: v.User.img
}))
allData = fix

View File

@@ -37,6 +37,7 @@ export interface IDataDetailByIdMember {
idUser: string
name: string
email: string
img: string
}
export interface IFormCreateCalender {
@@ -56,6 +57,7 @@ export interface IFormMemberCalender {
idUser: {
id: string
name: string
img: string
}[]
}

View File

@@ -49,7 +49,7 @@ export default function CreateUserCalender({ onClose }: { onClose: (val: any) =>
if (selectedFiles.some((i: any) => i.idUser == isData[index].idUser)) {
setSelectedFiles(selectedFiles.filter((i: any) => i.idUser != isData[index].idUser))
} else {
setSelectedFiles([...selectedFiles, { idUser: isData[index].idUser, name: isData[index].name }])
setSelectedFiles([...selectedFiles, { idUser: isData[index].idUser, name: isData[index].name, img: isData[index].img }])
}
};
@@ -61,7 +61,7 @@ export default function CreateUserCalender({ onClose }: { onClose: (val: any) =>
for (let index = 0; index < isData.length; index++) {
if (!selectedFiles.some((i: any) => i.idUser == isData[index].idUser)) {
const newArr = {
idUser: isData[index].idUser, name: isData[index].name
idUser: isData[index].idUser, name: isData[index].name, img: isData[index].img
}
setSelectedFiles((selectedFiles: any) => [...selectedFiles, newArr])
}
@@ -111,7 +111,7 @@ export default function CreateUserCalender({ onClose }: { onClose: (val: any) =>
<Box mb={15} key={i} onClick={() => handleFileClick(i)}>
<Flex justify={"space-between"} align={"center"}>
<Group>
<Avatar src={"v.image"} alt="it's me" size="lg" />
<Avatar src={`/api/file/img?cat=user&file=${v.img}`} alt="it's me" size="lg" />
<Text style={{
cursor: 'pointer',
display: 'flex',

View File

@@ -172,7 +172,7 @@ export default function DetailEventDivision() {
key={i}
>
<Group>
<Avatar src={""} alt="it's me" size="lg" />
<Avatar src={`/api/file/img?cat=user&file=${v.img}`} alt="it's me" size="lg" />
<Box>
<Text c={WARNA.biruTua} fw={"bold"}>
{v.name}

View File

@@ -18,8 +18,8 @@ export default function NavbarCreateDivisionCalender() {
const [value, setValue] = useState<Date | null>(null);
const router = useRouter()
const [isModal, setModal] = useState(false)
const memberUser = useHookstate(globalCalender)
const memberValue = memberUser.get() as IFormMemberCalender[]
const member = useHookstate(globalCalender)
const memberValue = member.get() as IFormMemberCalender[]
const [openMember, setOpenMember] = useState(false)
const param = useParams<{ id: string, detail: string }>()
const [touched, setTouched] = useState({
@@ -63,7 +63,7 @@ export default function NavbarCreateDivisionCalender() {
setModal(false)
router.push(`/division/${param.id}/calender`)
toast.success(response.message)
memberUser.set([])
member.set([])
} else {
toast.error(response.message)
setModal(false)
@@ -244,11 +244,11 @@ export default function NavbarCreateDivisionCalender() {
</Group>
</Box>
{
memberUser.length > 0 &&
member.length > 0 &&
<Box pt={30} mb={60}>
<Group justify="space-between">
<Text c={WARNA.biruTua}>Anggota Terpilih</Text>
<Text c={WARNA.biruTua}>Total {memberUser.length} Anggota</Text>
<Text c={WARNA.biruTua}>Total {member.length} Anggota</Text>
</Group>
<Box pt={10}>
<Box mb={20}>
@@ -260,28 +260,34 @@ export default function NavbarCreateDivisionCalender() {
px={20}
py={10}
>
{memberUser.get().map((v: any, i: any) => {
return (
<Flex
justify={"space-between"}
align={"center"}
mt={20}
key={i}
>
<Group>
<Avatar src={"v.image"} alt="it's me" size="lg" />
<Box>
<Text c={WARNA.biruTua} fw={"bold"}>
{v.name}
</Text>
</Box>
</Group>
<Text c={WARNA.biruTua} fw={"bold"}>
Anggota
</Text>
</Flex>
);
})}
{member.length == 0 ?
<Box style={{ display: 'flex', justifyContent: 'center', alignItems: 'center', height: '10vh' }}>
<Text c="dimmed" ta={"center"} fs={"italic"}>Tidak ada Anggota</Text>
</Box>
:
member.get().map((v: any, i: any) => {
return (
<Flex
justify={"space-between"}
align={"center"}
mt={20}
key={i}
>
<Group>
<Avatar src={`/api/file/img?cat=user&file=${v.img}`} alt="it's me" size="lg" />
<Box>
<Text c={WARNA.biruTua} fw={"bold"}>
{v.name}
</Text>
</Box>
</Group>
<Text c={WARNA.biruTua} fw={"bold"}>
Anggota
</Text>
</Flex>
);
})}
</Box>
</Box>
</Box>

View File

@@ -339,7 +339,7 @@ export default function UpdateDivisionCalender() {
key={i}
>
<Group>
<Avatar src={"v.image"} alt="it's me" size="lg" />
<Avatar src={`/api/file/img?cat=user&file=${v.img}`} alt="it's me" size="lg" />
<Box>
<Text c={WARNA.biruTua} fw={"bold"}>
{v.name}

View File

@@ -145,7 +145,7 @@ export default function UpdateListUsers({ onClose }: { onClose: (val: any) => vo
<Box mb={15} key={i} onClick={() => handleFileClick(i)}>
<Flex justify={"space-between"} align={"center"}>
<Group>
<Avatar src={"v.image"} alt="it's me" size="lg" />
<Avatar src={`/api/file/img?cat=user&file=${v.img}`} alt="it's me" size="lg" />
<Text style={{
cursor: 'pointer',
display: 'flex',

View File

@@ -2,6 +2,7 @@ export interface IDataDiscussion {
id: string
title: string
desc: string
img: string
status: number
createdAt: string
user_name: string
@@ -26,6 +27,7 @@ export interface IDetailDiscussion {
createdAt: string
DivisionDisscussionComment: IAllComents[]
username: string
user_img: string
totalComments: number
}
@@ -33,7 +35,8 @@ export interface IDetailDiscussion {
id: string
comment: string
createdAt: string
User: User
User: User
img: string
username: string
}

View File

@@ -103,7 +103,7 @@ export default function DetailDiscussion({ id, idDivision }: { id: string, idDiv
>
{isData?.username ?
<Group>
<Avatar src={'https://i.pravatar.cc/1000?img=5'} alt="it's me" size="lg" />
<Avatar src={`/api/file/img?cat=user&file=${isData?.user_img}`} alt="it's me" size="lg" />
<Box>
<Text c={WARNA.biruTua} fw={"bold"}>
{isData?.username}
@@ -142,7 +142,7 @@ export default function DetailDiscussion({ id, idDivision }: { id: string, idDiv
>
{isData?.username ?
<Group>
<Avatar src={'https://i.pravatar.cc/1000?img=5'} alt="it's me" size="lg" />
<Avatar src={`/api/file/img?cat=user&file=${isData?.user_img}`} alt="it's me" size="lg" />
<Box>
<Text c={WARNA.biruTua} fw={"bold"}>
{isData?.username}
@@ -216,7 +216,7 @@ export default function DetailDiscussion({ id, idDivision }: { id: string, idDiv
align={"center"}
>
<Group>
<Avatar alt="it's me" size="md" />
<Avatar alt="it's me" size="md" src={`/api/file/img?cat=user&file=${v.img}`} />
<Box>
<Text c={WARNA.biruTua} fw={"bold"} fz={15}>
{v.username}

View File

@@ -110,7 +110,7 @@ export default function ListDiscussion({ id }: { id: string }) {
}}
>
<Group>
<Avatar alt="it's me" size="lg" />
<Avatar alt="it's me" src={`/api/file/img?cat=user&file=${v.img}`} size="lg" />
<Box>
<Text c={WARNA.biruTua} fw={"bold"}>
{v.user_name}

View File

@@ -112,7 +112,7 @@ export default function CreateAnggotaDivision() {
</Box>
))
:
<Box mt={20} mb={60}>
<Box mt={20} mb={100}>
{dataMember.map((v: any, index: any) => {
const isSelected = selectedFiles.some((i: any) => i.idUser == dataMember[index].id)
const found = memberDb.some((i: any) => i.idUser == v.id)
@@ -120,7 +120,7 @@ export default function CreateAnggotaDivision() {
<Box my={10} key={index} onClick={() => (!found) ? handleFileClick(index) : null}>
<Group justify='space-between' align='center'>
<Group>
<Avatar src={"v.img"} alt="it's me" size="lg" />
<Avatar src={`/api/file/img?cat=user&file=${v.img}`} alt="it's me" size="lg" />
<Stack align="flex-start" justify="flex-start">
<Text>{v.name}</Text>
<Text c={"dimmed"}>{(found) ? "sudah menjadi anggota divisi" : ""}</Text>

View File

@@ -191,7 +191,7 @@ export default function InformationDivision() {
onClick={() => { onClickMember(v.id, (v.isAdmin) ? true : false), setChooseMemberName(v.name) }}
>
<Group>
<Avatar src={"v.img"} alt="it's me" size="lg" />
<Avatar src={`/api/file/img?cat=user&file=${v.img}`} alt="it's me" size="lg" />
<Box>
<Text c={WARNA.biruTua} fw={"bold"}>
{v.name}

View File

@@ -89,7 +89,7 @@ export default function NavbarCreateUsers({ grup, onClose }: { grup?: string, on
.fill(null)
.map((_, i) => (
<Box key={i}>
<Skeleton width={"100%"} height={100} radius={"md"} />
<Skeleton width={"100%"} height={130} radius={"md"} />
</Box>
))}
</SimpleGrid>
@@ -114,7 +114,7 @@ export default function NavbarCreateUsers({ grup, onClose }: { grup?: string, on
onClick={() => handleFileClick(index)}
>
<Center>
<Avatar src={"https://i.pravatar.cc/1000?img=37"} alt="it's me" size="xl" />
<Avatar src={`/api/file/img?cat=user&file=${v.img}`} alt="it's me" size="xl" />
</Center>
<Text mt={20} ta="center">
{v.name}

View File

@@ -26,6 +26,7 @@ export interface IDataMemberProject {
idUser: string
name: string
email: string
img: string
}
export interface IFormProject {
@@ -44,7 +45,8 @@ export interface IFormDateProject {
export interface IFormMemberProject {
idUser: string,
name: string
name: string,
img: string
}
@@ -63,7 +65,8 @@ export interface IDataMemberProjectDetail {
id: string,
idUser: string,
isLeader: string,
name: string
name: string,
img: string
}
export interface IListFileTaskProject {

View File

@@ -133,7 +133,7 @@ export default function AddMemberDetailProject() {
<Box mb={15} key={i} onClick={() => (!found) ? handleFileClick(i) : null}>
<Flex justify={"space-between"} align={"center"}>
<Group>
<Avatar src={"v.image"} alt="it's me" size="lg" />
<Avatar src={`/api/file/img?cat=user&file=${v.img}`} alt="it's me" size="lg" />
<Stack align="flex-start" justify="flex-start">
<Text style={{
cursor: 'pointer',

View File

@@ -78,7 +78,7 @@ export default function ViewDateEndTask({ onClose }: { onClose: (val: IFormDateP
</Group>
</Box>
<Box>
<Text c={WARNA.biruTua}>Tanggal Berakhir</Text>
<Text>Tanggal Berakhir</Text>
<Group
justify="center"
bg={"white"}
@@ -89,7 +89,7 @@ export default function ViewDateEndTask({ onClose }: { onClose: (val: IFormDateP
</Group>
</Box>
</SimpleGrid>
<Stack pt={15}>
<Stack pt={15} pb={100}>
<TextInput
styles={{
input: {

View File

@@ -289,7 +289,7 @@ export default function CreateProject() {
key={i}
>
<Group>
<Avatar src={"v.image"} alt="it's me" size="lg" />
<Avatar src={`/api/file/img?cat=user&file=${v.img}`} alt="it's me" size="lg" />
<Box>
<Text c={WARNA.biruTua} fw={"bold"}>
{v.name}

View File

@@ -24,7 +24,7 @@ export default function CreateUsersProject({ grup, onClose }: { grup?: string, o
if (selectedFiles.some((i: any) => i.idUser == dataMember[index].id)) {
setSelectedFiles(selectedFiles.filter((i: any) => i.idUser != dataMember[index].id))
} else {
setSelectedFiles([...selectedFiles, { idUser: dataMember[index].id, name: dataMember[index].name }])
setSelectedFiles([...selectedFiles, { idUser: dataMember[index].id, name: dataMember[index].name, img: dataMember[index].img }])
}
};
@@ -114,7 +114,7 @@ export default function CreateUsersProject({ grup, onClose }: { grup?: string, o
onClick={() => handleFileClick(index)}
>
<Center>
<Avatar src={"https://i.pravatar.cc/1000?img=37"} alt="it's me" size="xl" />
<Avatar src={`/api/file/img?cat=user&file=${v.img}`} alt="it's me" size="xl" />
</Center>
<Text mt={20} ta="center">
{v.name}

View File

@@ -100,7 +100,7 @@ export default function ListAnggotaDetailProject() {
}}
>
<Group>
<Avatar src={""} alt="it's me" size="lg" />
<Avatar src={`/api/file/img?cat=user&file=${v.img}`} alt="it's me" size="lg" />
<Box>
<Text c={WARNA.biruTua} fw={"bold"}>
{v.name}

View File

@@ -60,6 +60,7 @@ export interface IDataMemberTaskDivision {
idUser: string
name: string
email: string
img: string
}
export interface IDataFileTaskDivision {

View File

@@ -150,7 +150,7 @@ export default function AddMemberDetailTask() {
<Box mb={15} key={i} onClick={() => (!found) ? handleFileClick(i) : null}>
<Flex justify={"space-between"} align={"center"}>
<Group>
<Avatar src={"v.image"} alt="it's me" size="lg" />
<Avatar src={`/api/file/img?cat=user&file=${v.img}`} alt="it's me" size="lg" />
<Stack align="flex-start" justify="flex-start">
<Text style={{
cursor: 'pointer',

View File

@@ -102,7 +102,7 @@ export default function ListAnggotaDetailTask() {
}}
>
<Group>
<Avatar src={""} alt="it's me" size="lg" />
<Avatar src={`/api/file/img?cat=user&file=${v.img}`} alt="it's me" size="lg" />
<Box>
<Text c={WARNA.biruTua} fw={"bold"}>
{v.name}

View File

@@ -7,5 +7,6 @@ export type TypeUser = {
gender: string
isActive: boolean,
group: string,
img: string
position: string
}[]