diff --git a/app/(application)/division/create.tsx b/app/(application)/division/create.tsx index 29166e1..2792e85 100644 --- a/app/(application)/division/create.tsx +++ b/app/(application)/division/create.tsx @@ -53,7 +53,7 @@ export default function CreateDivision() { } function handleSetData() { - dispatch(setFormCreateDivision({ data: dataForm })) + dispatch(setFormCreateDivision({ ...update, data: dataForm })) router.push(`./create/add-member`) } diff --git a/app/(application)/division/create/add-admin-division.tsx b/app/(application)/division/create/add-admin-division.tsx index 58fe5d2..1056d4c 100644 --- a/app/(application)/division/create/add-admin-division.tsx +++ b/app/(application)/division/create/add-admin-division.tsx @@ -2,6 +2,8 @@ import ButtonBackHeader from "@/components/buttonBackHeader"; import ButtonSaveHeader from "@/components/buttonSaveHeader"; import ImageUser from "@/components/imageNew"; import Styles from "@/constants/Styles"; +import { apiCreateDivision } from "@/lib/api"; +import { setFormCreateDivision } from "@/lib/divisionCreate"; import { setUpdateDivision } from "@/lib/divisionUpdate"; import { useAuthSession } from "@/providers/AuthProvider"; import { AntDesign } from "@expo/vector-icons"; @@ -21,8 +23,9 @@ export default function CreateDivisionAddAdmin() { const { id } = useLocalSearchParams<{ id: string }>() const [dataOld, setDataOld] = useState([]) const [data, setData] = useState([]) - const [selectMember, setSelectMember] = useState([]) + const [selectMember, setSelectMember] = useState([]) const update = useSelector((state: any) => state.divisionCreate) + const updateDivision = useSelector((state: any) => state.divisionUpdate) const dispatch = useDispatch() async function handleLoadMember() { @@ -33,21 +36,30 @@ export default function CreateDivisionAddAdmin() { handleLoadMember() }, []) - function onChoose(val: string, label: string, img?: string) { - if (selectMember.some((i: any) => i.idUser == val)) { - setSelectMember(selectMember.filter((i: any) => i.idUser != val)) + function onChoose(val: string) { + if (selectMember.some((i: any) => i == val)) { + setSelectMember(selectMember.filter((i: any) => i != val)) } else { - setSelectMember([...selectMember, { idUser: val, name: label, img }]) + setSelectMember([...selectMember, val]) } } async function handleAddMember() { try { - dispatch(setUpdateDivision({ ...update, admin: selectMember })) - // router.push(`./add-admin-division`) + dispatch(setFormCreateDivision({ ...update, admin: selectMember })) + const hasil = await decryptToken(String(token?.current)) + const response = await apiCreateDivision({ ...update, user: hasil }) + if (response.success) { + ToastAndroid.show('Berhasil membuat divisi', ToastAndroid.SHORT) + dispatch(setFormCreateDivision({ admin: [], member: [], data: { idGroup: '', name: '', desc: '' } })) + dispatch(setUpdateDivision(!updateDivision)) + router.replace(`/division/`) + } else { + ToastAndroid.show(response.message, ToastAndroid.SHORT) + } } catch (error) { console.error(error) - ToastAndroid.show('Gagal menambahkan anggota', ToastAndroid.SHORT) + ToastAndroid.show('Gagal membuat divisi', ToastAndroid.SHORT) } } @@ -61,7 +73,7 @@ export default function CreateDivisionAddAdmin() { headerTitleAlign: 'center', headerRight: () => ( 0 ? false : true} onPress={() => { handleAddMember() @@ -81,10 +93,10 @@ export default function CreateDivisionAddAdmin() { key={index} style={[Styles.itemSelectModal]} onPress={() => { - !found && onChoose(item.id, item.name, item.img) + !found && onChoose(item.idUser) }} > - + {item.name} @@ -94,7 +106,7 @@ export default function CreateDivisionAddAdmin() { { - selectMember.some((i: any) => i.idUser == item.id) && + selectMember.some((i: any) => i == item.idUser) && } ) diff --git a/app/(application)/division/create/add-member.tsx b/app/(application)/division/create/add-member.tsx index 689665c..c98e890 100644 --- a/app/(application)/division/create/add-member.tsx +++ b/app/(application)/division/create/add-member.tsx @@ -5,6 +5,7 @@ import ImageWithLabel from "@/components/imageWithLabel"; import InputSearch from "@/components/inputSearch"; import Styles from "@/constants/Styles"; import { apiGetUser } from "@/lib/api"; +import { setFormCreateDivision } from "@/lib/divisionCreate"; import { setUpdateDivision } from "@/lib/divisionUpdate"; import { useAuthSession } from "@/providers/AuthProvider"; import { AntDesign } from "@expo/vector-icons"; @@ -52,7 +53,7 @@ export default function CreateDivisionAddMember() { } async function handleAddMember() { - dispatch(setUpdateDivision({ ...update, member: selectMember })) + dispatch(setFormCreateDivision({ ...update, member: selectMember })) router.push(`./add-admin-division`) } @@ -110,7 +111,7 @@ export default function CreateDivisionAddMember() { !found && onChoose(item.id, item.name, item.img) }} > - + {item.name} diff --git a/lib/api.ts b/lib/api.ts index ded905d..2a7593b 100644 --- a/lib/api.ts +++ b/lib/api.ts @@ -399,7 +399,7 @@ export const apiGetDivisionMember = async ({ user, id, search }: { user: string, return response.data; }; -export const apiCreateDivision = async (data: { data: { idGroup: string, name: string, desc: string }, member: [], admin: string[] }) => { +export const apiCreateDivision = async (data: { data: { idGroup: string, name: string, desc: string }, member: [], admin: string[], user:string }) => { const response = await api.post(`/mobile/division`, data) return response.data; };