upd: nama divisi

Deskripsi:
- update check nama divisi ketika ada yg sama pada 1 group dan desa

No Issuese
This commit is contained in:
2025-10-07 11:59:24 +08:00
parent 9dde198d5e
commit 5e1ed12ca8
2 changed files with 45 additions and 7 deletions

View File

@@ -1,22 +1,28 @@
import AlertKonfirmasi from "@/components/alertKonfirmasi";
import ButtonBackHeader from "@/components/buttonBackHeader"; import ButtonBackHeader from "@/components/buttonBackHeader";
import ButtonNextHeader from "@/components/buttonNextHeader"; import ButtonNextHeader from "@/components/buttonNextHeader";
import { InputForm } from "@/components/inputForm"; import { InputForm } from "@/components/inputForm";
import ModalSelect from "@/components/modalSelect"; import ModalSelect from "@/components/modalSelect";
import SelectForm from "@/components/selectForm"; import SelectForm from "@/components/selectForm";
import Styles from "@/constants/Styles"; import Styles from "@/constants/Styles";
import { apiCheckDivisionName } from "@/lib/api";
import { setFormCreateDivision } from "@/lib/divisionCreate"; import { setFormCreateDivision } from "@/lib/divisionCreate";
import { useAuthSession } from "@/providers/AuthProvider";
import { router, Stack } from "expo-router"; import { router, Stack } from "expo-router";
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import { SafeAreaView, ScrollView, View } from "react-native"; import { SafeAreaView, ScrollView, View } from "react-native";
import Toast from "react-native-toast-message";
import { useDispatch, useSelector } from "react-redux"; import { useDispatch, useSelector } from "react-redux";
export default function CreateDivision() { export default function CreateDivision() {
const [isSelect, setSelect] = useState(false); const { token, decryptToken } = useAuthSession()
const [chooseGroup, setChooseGroup] = useState({ val: "", label: "" }); const [isSelect, setSelect] = useState(false)
const dispatch = useDispatch(); const [chooseGroup, setChooseGroup] = useState({ val: "", label: "" })
const update = useSelector((state: any) => state.divisionCreate); const dispatch = useDispatch()
const update = useSelector((state: any) => state.divisionCreate)
const entityUser = useSelector((state: any) => state.user) const entityUser = useSelector((state: any) => state.user)
const userLogin = useSelector((state: any) => state.entities) const userLogin = useSelector((state: any) => state.entities)
const [loadingBtn, setLoadingBtn] = useState(false)
const [error, setError] = useState({ const [error, setError] = useState({
idGroup: false, idGroup: false,
name: false, name: false,
@@ -54,7 +60,35 @@ export default function CreateDivision() {
} }
} }
function handleSetData() { async function handleCheckName() {
try {
setLoadingBtn(true)
const hasil = await decryptToken(String(token?.current))
const response = await apiCheckDivisionName({ data: { ...dataForm }, user: hasil })
if (response.success) {
if (!response.available) {
AlertKonfirmasi({
title: 'Peringatan',
desc: 'Nama divisi sudah ada. Apakah anda yakin ingin membuat divisi dengan nama yang sama?',
onPress: () => {
handleSetData()
}
})
} else {
handleSetData()
}
} else {
Toast.show({ type: 'small', text1: response.message, })
}
} catch (error) {
console.error(error)
Toast.show({ type: 'small', text1: 'Terjadi kesalahan', })
} finally {
setLoadingBtn(false)
}
}
async function handleSetData() {
dispatch(setFormCreateDivision({ ...update, data: dataForm })) dispatch(setFormCreateDivision({ ...update, data: dataForm }))
router.push(`./create/add-member`) router.push(`./create/add-member`)
} }
@@ -80,8 +114,8 @@ export default function CreateDivision() {
headerTitleAlign: "center", headerTitleAlign: "center",
headerRight: () => ( headerRight: () => (
<ButtonNextHeader <ButtonNextHeader
onPress={() => { handleSetData() }} onPress={() => { handleCheckName() }}
disable={error.idGroup || error.name || chooseGroup.val == "" || chooseGroup.val == "null" || dataForm.name == "" || dataForm.name == "null"} disable={loadingBtn || error.idGroup || error.name || chooseGroup.val == "" || chooseGroup.val == "null" || dataForm.name == "" || dataForm.name == "null"}
/> />
), ),
}} }}

View File

@@ -425,6 +425,10 @@ export const apiCreateDivision = async (data: { data: { idGroup: string, name: s
return response.data; return response.data;
}; };
export const apiCheckDivisionName = async (data: { data: { idGroup: string, name: string, desc: string }, user: string }) => {
const response = await api.put(`/mobile/division`, data)
return response.data;
};
export const apiGetDiscussion = async ({ user, search, division, active, page }: { user: string, search: string, division: string, active?: string, page?: number }) => { export const apiGetDiscussion = async ({ user, search, division, active, page }: { user: string, search: string, division: string, active?: string, page?: number }) => {
const response = await api.get(`mobile/discussion?user=${user}&active=${active}&search=${search}&division=${division}&page=${page}`); const response = await api.get(`mobile/discussion?user=${user}&active=${active}&search=${search}&division=${division}&page=${page}`);