diff --git a/src/KBBoard/BoardAPI.js b/src/KBBoard/BoardAPI.js index a40c181..3f3c307 100644 --- a/src/KBBoard/BoardAPI.js +++ b/src/KBBoard/BoardAPI.js @@ -30,4 +30,16 @@ export const deleteTaskAPI = async (taskId) => { return axios.delete('/api/boards/categories/tasks/delete', { data: { id: taskId } }); +}; + +export const assignMemberAPI = async (updateData) => { + return axios.put('/api/boards/categories/tasks/assign', updateData); +}; + +export const unassignMemberAPI = async (updateData) => { + return axios.put('/api/boards/categories/tasks/unassign', updateData); +}; + +export const addMemberAPI = async (updateData) => { + return axios.post('/api/boards/members/add', updateData); }; \ No newline at end of file diff --git a/src/KBBoard/BoardLogic.js b/src/KBBoard/BoardLogic.js index b974a3a..0b857b2 100644 --- a/src/KBBoard/BoardLogic.js +++ b/src/KBBoard/BoardLogic.js @@ -7,7 +7,10 @@ import { updateTaskAPI, updateCategoryAPI, deleteCategoryAPI, - deleteTaskAPI + deleteTaskAPI, + assignMemberAPI, + unassignMemberAPI, + addMemberAPI } from './BoardAPI'; export const useBoardLogic = (id, setError, setInfo, setCategories, setLoading) => { @@ -88,6 +91,7 @@ export const useBoardLogic = (id, setError, setInfo, setCategories, setLoading) update_method: 'category', value: Number(taskCategory) }); + await loadBoardData(); modalEditTask({}, null)(); } catch (err) { @@ -147,6 +151,45 @@ export const useBoardLogic = (id, setError, setInfo, setCategories, setLoading) } }, [loadBoardData, setLoading, setError]); + const assignMember = useCallback(async (editedTaskId, memberId, act, modalAssignMember) => { + setLoading(true); + try { + if (act) { + await assignMemberAPI({ + id: editedTaskId, + member_id: memberId + }); + } else if (!act) { + await unassignMemberAPI({ + id: editedTaskId, + member_id: memberId + }); + } + await loadBoardData(); + modalAssignMember(); + } catch { + setError('Ошибка'); + } finally{ + setLoading(false); + } + }, [loadBoardData, setLoading, setError]); + + const addMember = useCallback(async (username, boardId, modalAddMember) => { + setLoading(true); + try { + await addMemberAPI({ + username: username, + board_id: boardId + }); + await loadBoardData(); + modalAddMember(); + } catch { + setError('Ошибка'); + } finally{ + setLoading(false); + } + }, [loadBoardData, setLoading, setError]); + return { loadBoardData, createTask, @@ -154,6 +197,8 @@ export const useBoardLogic = (id, setError, setInfo, setCategories, setLoading) editTask, editCategory, deleteCategory, - deleteTask + deleteTask, + assignMember, + addMember }; }; \ No newline at end of file diff --git a/src/KBBoard/KBBoard.js b/src/KBBoard/KBBoard.js index 944357f..5783b9c 100644 --- a/src/KBBoard/KBBoard.js +++ b/src/KBBoard/KBBoard.js @@ -17,6 +17,9 @@ const KBBoard = () => { const [edCateg, setEdCateg] = useState(false); const [delTask, setDelTask] = useState(false); const [delCateg, setDelCateg] = useState(false); + const [asgnMember, setAsgnMember] = useState(false); + const [assignAction, setAssignAction] = useState(false); + const [addMemb, setAddMemb] = useState(false); const [categoryTitle, setCategoryTitle] = useState(''); const [taskTitle, setTaskTitle] = useState(''); @@ -27,6 +30,10 @@ const KBBoard = () => { const [editedCateg, setEditedCateg] = useState({}); const [taskPosition, setTaskPosition] = useState(null); const [categoryPosition, setCategoryPosition] = useState(null); + const [assignedMember, setAssignedMember] = useState(0); + const [addedUsername, setAddedUsername] = useState(''); + + const { loadBoardData, @@ -35,7 +42,9 @@ const KBBoard = () => { editTask, editCategory, deleteCategory, - deleteTask + deleteTask, + assignMember, + addMember } = useBoardLogic(id, setError, setInfo, setCategories, setLoading); useEffect(() => { @@ -60,6 +69,7 @@ const KBBoard = () => { setTaskDescription(task.description); setTaskPosition(task.position); setTaskCategory(task.category_id); + //setAssignedMember(task.assigned_users.id) } const modalEditCateg = (categ) => () => { setEdCateg(!edCateg); @@ -73,7 +83,15 @@ const KBBoard = () => { const modalDelCateg = () => { setDelCateg(!delCateg); } + const modalAssignMember = (action) => () => { + setAsgnMember(!asgnMember); + setAssignAction(action) + } + const modalAddMember = () => { + setAddMemb(!addMemb); + } + const handleCreateCategory = async (e) => { e.preventDefault(); await createCategory(categoryTitle, modalCrCateg); @@ -98,6 +116,16 @@ const KBBoard = () => { e.preventDefault(); await deleteCategory(editedCateg.id, modalDelCateg, modalEditCateg); }; + const handleAssignMember = async (e) => { + e.preventDefault(); + await assignMember(editedTask.id, assignedMember, assignAction, modalAssignMember); + }; + const handleAddMember = async (e) => { + e.preventDefault(); + await addMember(addedUsername, id, modalAddMember); + }; + + return (
SetingPanel:В разработке
+