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() {
dispatch(setFormCreateDivision({ data: dataForm }))
dispatch(setFormCreateDivision({ ...update, data: dataForm }))
router.push(`./create/add-member`)
}

View File

@@ -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<Props[]>([])
const [data, setData] = useState<Props[]>([])
const [selectMember, setSelectMember] = useState<any[]>([])
const [selectMember, setSelectMember] = useState<string[]>([])
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: () => (
<ButtonSaveHeader
category="update"
category="create"
disable={selectMember.length > 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)
}}
>
<View style={[Styles.rowItemsCenter]}>
<View style={[Styles.rowItemsCenter, Styles.w70]}>
<ImageUser src={`https://wibu-storage.wibudev.com/api/files/${item.img}`} border />
<View style={[Styles.ml10]}>
<Text style={[Styles.textDefault]} numberOfLines={1} ellipsizeMode="tail">{item.name}</Text>
@@ -94,7 +106,7 @@ export default function CreateDivisionAddAdmin() {
</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>
)

View File

@@ -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)
}}
>
<View style={[Styles.rowItemsCenter]}>
<View style={[Styles.rowItemsCenter, Styles.w70]}>
<ImageUser src={`https://wibu-storage.wibudev.com/api/files/${item.img}`} border />
<View style={[Styles.ml10]}>
<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;
};
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;
};