upd: division

Deskripsi:
- tambah divisi

No Issues
This commit is contained in:
amel
2025-05-28 10:52:40 +08:00
parent 51f8cb78f5
commit 749afcf0eb
4 changed files with 29 additions and 16 deletions

View File

@@ -53,7 +53,7 @@ export default function CreateDivision() {
} }
function handleSetData() { function handleSetData() {
dispatch(setFormCreateDivision({ data: dataForm })) dispatch(setFormCreateDivision({ ...update, data: dataForm }))
router.push(`./create/add-member`) router.push(`./create/add-member`)
} }

View File

@@ -2,6 +2,8 @@ import ButtonBackHeader from "@/components/buttonBackHeader";
import ButtonSaveHeader from "@/components/buttonSaveHeader"; import ButtonSaveHeader from "@/components/buttonSaveHeader";
import ImageUser from "@/components/imageNew"; import ImageUser from "@/components/imageNew";
import Styles from "@/constants/Styles"; import Styles from "@/constants/Styles";
import { apiCreateDivision } from "@/lib/api";
import { setFormCreateDivision } from "@/lib/divisionCreate";
import { setUpdateDivision } from "@/lib/divisionUpdate"; import { setUpdateDivision } from "@/lib/divisionUpdate";
import { useAuthSession } from "@/providers/AuthProvider"; import { useAuthSession } from "@/providers/AuthProvider";
import { AntDesign } from "@expo/vector-icons"; import { AntDesign } from "@expo/vector-icons";
@@ -21,8 +23,9 @@ export default function CreateDivisionAddAdmin() {
const { id } = useLocalSearchParams<{ id: string }>() const { id } = useLocalSearchParams<{ id: string }>()
const [dataOld, setDataOld] = useState<Props[]>([]) const [dataOld, setDataOld] = useState<Props[]>([])
const [data, setData] = useState<Props[]>([]) const [data, setData] = useState<Props[]>([])
const [selectMember, setSelectMember] = useState<any[]>([]) const [selectMember, setSelectMember] = useState<string[]>([])
const update = useSelector((state: any) => state.divisionCreate) const update = useSelector((state: any) => state.divisionCreate)
const updateDivision = useSelector((state: any) => state.divisionUpdate)
const dispatch = useDispatch() const dispatch = useDispatch()
async function handleLoadMember() { async function handleLoadMember() {
@@ -33,21 +36,30 @@ export default function CreateDivisionAddAdmin() {
handleLoadMember() handleLoadMember()
}, []) }, [])
function onChoose(val: string, label: string, img?: string) { function onChoose(val: string) {
if (selectMember.some((i: any) => i.idUser == val)) { if (selectMember.some((i: any) => i == val)) {
setSelectMember(selectMember.filter((i: any) => i.idUser != val)) setSelectMember(selectMember.filter((i: any) => i != val))
} else { } else {
setSelectMember([...selectMember, { idUser: val, name: label, img }]) setSelectMember([...selectMember, val])
} }
} }
async function handleAddMember() { async function handleAddMember() {
try { try {
dispatch(setUpdateDivision({ ...update, admin: selectMember })) dispatch(setFormCreateDivision({ ...update, admin: selectMember }))
// router.push(`./add-admin-division`) 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) { } catch (error) {
console.error(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', headerTitleAlign: 'center',
headerRight: () => ( headerRight: () => (
<ButtonSaveHeader <ButtonSaveHeader
category="update" category="create"
disable={selectMember.length > 0 ? false : true} disable={selectMember.length > 0 ? false : true}
onPress={() => { onPress={() => {
handleAddMember() handleAddMember()
@@ -81,10 +93,10 @@ export default function CreateDivisionAddAdmin() {
key={index} key={index}
style={[Styles.itemSelectModal]} style={[Styles.itemSelectModal]}
onPress={() => { onPress={() => {
!found && onChoose(item.id, item.name, item.img) !found && onChoose(item.idUser)
}} }}
> >
<View style={[Styles.rowItemsCenter]}> <View style={[Styles.rowItemsCenter, Styles.w70]}>
<ImageUser src={`https://wibu-storage.wibudev.com/api/files/${item.img}`} border /> <ImageUser src={`https://wibu-storage.wibudev.com/api/files/${item.img}`} border />
<View style={[Styles.ml10]}> <View style={[Styles.ml10]}>
<Text style={[Styles.textDefault]} numberOfLines={1} ellipsizeMode="tail">{item.name}</Text> <Text style={[Styles.textDefault]} numberOfLines={1} ellipsizeMode="tail">{item.name}</Text>
@@ -94,7 +106,7 @@ export default function CreateDivisionAddAdmin() {
</View> </View>
</View> </View>
{ {
selectMember.some((i: any) => i.idUser == item.id) && <AntDesign name="check" size={20} /> selectMember.some((i: any) => i == item.idUser) && <AntDesign name="check" size={20} />
} }
</Pressable> </Pressable>
) )

View File

@@ -5,6 +5,7 @@ import ImageWithLabel from "@/components/imageWithLabel";
import InputSearch from "@/components/inputSearch"; import InputSearch from "@/components/inputSearch";
import Styles from "@/constants/Styles"; import Styles from "@/constants/Styles";
import { apiGetUser } from "@/lib/api"; import { apiGetUser } from "@/lib/api";
import { setFormCreateDivision } from "@/lib/divisionCreate";
import { setUpdateDivision } from "@/lib/divisionUpdate"; import { setUpdateDivision } from "@/lib/divisionUpdate";
import { useAuthSession } from "@/providers/AuthProvider"; import { useAuthSession } from "@/providers/AuthProvider";
import { AntDesign } from "@expo/vector-icons"; import { AntDesign } from "@expo/vector-icons";
@@ -52,7 +53,7 @@ export default function CreateDivisionAddMember() {
} }
async function handleAddMember() { async function handleAddMember() {
dispatch(setUpdateDivision({ ...update, member: selectMember })) dispatch(setFormCreateDivision({ ...update, member: selectMember }))
router.push(`./add-admin-division`) router.push(`./add-admin-division`)
} }
@@ -110,7 +111,7 @@ export default function CreateDivisionAddMember() {
!found && onChoose(item.id, item.name, item.img) !found && onChoose(item.id, item.name, item.img)
}} }}
> >
<View style={[Styles.rowItemsCenter]}> <View style={[Styles.rowItemsCenter, Styles.w70]}>
<ImageUser src={`https://wibu-storage.wibudev.com/api/files/${item.img}`} border /> <ImageUser src={`https://wibu-storage.wibudev.com/api/files/${item.img}`} border />
<View style={[Styles.ml10]}> <View style={[Styles.ml10]}>
<Text style={[Styles.textDefault]} numberOfLines={1} ellipsizeMode="tail">{item.name}</Text> <Text style={[Styles.textDefault]} numberOfLines={1} ellipsizeMode="tail">{item.name}</Text>

View File

@@ -399,7 +399,7 @@ export const apiGetDivisionMember = async ({ user, id, search }: { user: string,
return response.data; 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) const response = await api.post(`/mobile/division`, data)
return response.data; return response.data;
}; };