From d2dd80b147e9be23e9579c9b14a9f5790046c98b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D8=AD=D8=B3=DB=8C=D9=86=20=D9=85=D8=B9=D8=B5=D9=88=D9=85?= =?UTF-8?q?=DB=8C=20=D9=BE=D9=88=D8=B1?= Date: Sat, 21 Oct 2023 15:57:05 +0330 Subject: [PATCH] update user and delte --- components/EmployeesComponent/Users/page.jsx | 12 +- .../BottomSheetCreateEmployees.jsx | 164 ++++++++++++++---- plugins/Buttonbriz/page.jsx | 3 +- plugins/DatePickerIran/page.jsx | 20 ++- src/app/layout.jsx | 88 ++++++++++ 5 files changed, 241 insertions(+), 46 deletions(-) diff --git a/components/EmployeesComponent/Users/page.jsx b/components/EmployeesComponent/Users/page.jsx index 496d5d9..1376768 100644 --- a/components/EmployeesComponent/Users/page.jsx +++ b/components/EmployeesComponent/Users/page.jsx @@ -8,6 +8,12 @@ const UsersEmployees = () => { const CTX = useContext(AppContext); const usersData = CTX.state.usersData; + const goToEditUser = (id) => { + CTX.setGoToEditUser(true); + CTX.setBottomSheetCreateEmployeesOpen(true); + CTX.setIdEditUser(id); + }; + return ( <> {usersData.length > 0 ? ( @@ -30,10 +36,10 @@ const UsersEmployees = () => {

صندوق دار

-
+
goToEditRole(e.id)} + className="w-[35px] h-[35px] bg-secondaryLighter-100 rounded-full pt-[3px]" + onClick={() => goToEditUser(e.userId)} > { @@ -17,7 +18,7 @@ const BottomSheetCreateEmployees = (props) => { const [lastName, setLastName] = useState(""); const [phoneNumber, setPhoneNumber] = useState(""); const [nationalId, setNationalId] = useState(""); - const [gender, setGender] = useState(0); + const [gender, setGender] = useState(parseInt(0)); const [birthDate, setBirthDate] = useState(null); const [roleSelectCurrntData, setRoleSelectCurrntData] = useState(""); const [roleSelectData, setRoleSelectData] = useState([]); @@ -39,12 +40,15 @@ const BottomSheetCreateEmployees = (props) => { ); const rolesChoose = CTX.state.rolesChoose; const rolesData = CTX.state.rolesData; + const goToEditUser = CTX.state.goToEditUser; + const idEditUser = CTX.state.idEditUser; + const userData = CTX.state.userData; const body = { phoneNumber, firstName, lastName, - birthDate: + birthDateTimeStamp: birthDate && moment .utc( @@ -57,11 +61,62 @@ const BottomSheetCreateEmployees = (props) => { roleIds: rolesChoose, }; - const handleCreateUser = () => { - if (validator.current.allValid()) { - CTX.CreateUser(body); + const bodyUpdate = { + phoneNumber, + firstName, + lastName, + birthDateTimeStamp: + birthDate && + moment + .utc( + [birthDate.year, birthDate.month, birthDate.day], + "jYYYY-jMM-jDDTHH" + ) + .unix(), + gender: parseInt(gender), + nationalId, + roleIds: rolesChoose, + userId: userData.id, + }; + + console.log(bodyUpdate); + + const clear = () => { + setFirstName(""); + setLastName(""); + setPhoneNumber(""); + setNationalId(""); + setGender(""); + setBirthDate(""); + setRoleSelectCurrntData(""); + setRoleSelectData([]); + CTX.setRolesChoose([]); + }; + + const handleCreateUser = (update) => { + if (validateIranPhone(phoneNumber)) { + if (validator.current.allValid()) { + if (update == "UPDATE") { + CTX.UpdateUser(bodyUpdate); + } else { + CTX.CreateUser(body); + } + } else { + toast.error("پرکردن همه ی فیلد ها واجب است", { + position: "bottom-right", + autoClose: 2000, + hideProgressBar: false, + closeOnClick: true, + pauseOnHover: true, + draggable: true, + progress: undefined, + }); + + validator.current.showMessages(); + forceUpdate(1); + } } else { - toast.error("پرکردن همه ی فیلد ها واجب است", { + toast.error("شماره تماس را درست وارد کنید", { position: "bottom-right", autoClose: 2000, hideProgressBar: false, @@ -70,9 +125,6 @@ const BottomSheetCreateEmployees = (props) => { draggable: true, progress: undefined, }); - - validator.current.showMessages(); - forceUpdate(1); } }; @@ -80,20 +132,56 @@ const BottomSheetCreateEmployees = (props) => { CTX.setRolesChoose(rolesChoose.filter((el) => el !== id)); }; + const handleBottomSheetCreateEmployeesOpen = (e) => { + setRoleSelectData( + rolesData.map((item) => ({ + key: item.persianName, + value: item.id, + })) + ); + + console.log(idEditUser); + + if (e.type == "OPEN") { + CTX.GetRoles(); + if (goToEditUser) { + CTX.GetUser(idEditUser); + } + } else if (e.type == "CLOSE") { + clear(); + CTX.setGoToEditUser(false); + CTX.setIdEditUser(null); + CTX.setUserData([]); + } + }; + + useEffect(() => { + if (goToEditUser) { + const date = moment + .unix(userData.birthDateTimeStamp) + .locale("fa") + .format("YYYY/MM/DD") + .split("/"); + + setFirstName(userData.firstName); + setLastName(userData.lastName); + setPhoneNumber(userData.phoneNumber); + setNationalId(userData.nationalId); + setGender(userData.gender); + setBirthDate({ + day: parseInt(date[2]), + month: parseInt(date[1]), + year: parseInt(date[0]), + }); + // setRoleSelectCurrntData(""); + CTX.setRolesChoose(userData.roleIds); + console.log("userData2", userData); + } + }, [userData]); + return ( { - if (e.type == "OPEN") { - CTX.GetRoles(); - } - - setRoleSelectData( - rolesData.map((item) => ({ - key: item.persianName, - value: item.id, - })) - ); - }} + onSpringStart={(e) => handleBottomSheetCreateEmployeesOpen(e)} open={CTX.state.BottomSheetCreateEmployeesOpen} onDismiss={() => CTX.setBottomSheetCreateEmployeesOpen(false)} > @@ -153,15 +241,8 @@ const BottomSheetCreateEmployees = (props) => { value={gender} inputEvent={(e) => { setGender(e.target.value); - validator.current.showMessageFor("gender"); }} style="text-right" - validator={true} - validatorData={validator.current.message( - "gender", - gender, - "required" - )} select={true} selectData={[ { key: "مرد", value: 0 }, @@ -257,12 +338,25 @@ const BottomSheetCreateEmployees = (props) => {
))}
- handleCreateUser()} - /> + + {goToEditUser ? ( + handleCreateUser("UPDATE")} + subButton={true} + subButtonTitle="حذف کاربر" + subButtonEvent={() => CTX.DeleteUser(idEditUser)} + /> + ) : ( + handleCreateUser()} + /> + )}
); diff --git a/plugins/Buttonbriz/page.jsx b/plugins/Buttonbriz/page.jsx index f7f0b41..c220004 100644 --- a/plugins/Buttonbriz/page.jsx +++ b/plugins/Buttonbriz/page.jsx @@ -105,8 +105,7 @@ const Buttonbriz = ({ subButtonAction ? "text-white font-semibold" : "text-red-500" } `} > - {" "} - {subButtonTitle}{" "} + {subButtonTitle}

)} diff --git a/plugins/DatePickerIran/page.jsx b/plugins/DatePickerIran/page.jsx index 6a151ae..181a1ed 100644 --- a/plugins/DatePickerIran/page.jsx +++ b/plugins/DatePickerIran/page.jsx @@ -1,16 +1,24 @@ "use client"; -import React, { useEffect, useState } from "react"; +import React, { useContext, useEffect, useState } from "react"; import "@hassanmojab/react-modern-calendar-datepicker/lib/DatePicker.css"; import DatePicker from "@hassanmojab/react-modern-calendar-datepicker"; import Buttonbriz from "plugins/Buttonbriz/page"; import { Calendar } from "react-modern-calendar-datepicker"; +import AppContext from "@ctx/AppContext"; const DatePickerIran = ({ datePickerEvent, date }) => { - const [selectedDay, setSelectedDay] = useState(null); + const CTX = useContext(AppContext); - useEffect(() => { - setSelectedDay(date); - }, [date]); + const [selectedDay, setSelectedDay] = useState(null); + const goToEditUser = CTX.state.goToEditUser; + + console.log("date", date); + + // useEffect(() => { + // if (goToEditUser) { + // setSelectedDay(date); + // } + // }, []); return (
@@ -21,7 +29,7 @@ const DatePickerIran = ({ datePickerEvent, date }) => {
{ + setLoading(true); + try { + const data = await Chapar.put( + `${process.env.NEXT_PUBLIC_API_URL}/user`, + body, + + { + headers: { + Authorization: getToken(), + }, + } + ); + toast.success(`کاربر ویرایش شد`, { + position: "bottom-right", + closeOnClick: true, + }); + setBottomSheetCreateEmployeesOpen(false); + setLoading(false); + GetUsers(); + } catch ({ error, status }) { + toast.error(`${error.response.data.message}`, { + position: "bottom-right", + closeOnClick: true, + }); + setLoading(false); + } + }; const GetUsers = async () => { setLoading(true); try { @@ -359,6 +390,54 @@ export default function RootLayout({ children }) { setLoading(false); } }; + const GetUser = async (id) => { + setLoading(true); + try { + const data = await Chapar.get( + `${process.env.NEXT_PUBLIC_API_URL}/user/${id}`, + + { + headers: { + Authorization: getToken(), + }, + } + ); + console.log("GetUsersalam", data); + + setUserData(data); + setLoading(false); + } catch ({ error, status }) { + toast.error(`${error.response.data.message}`, { + position: "bottom-right", + closeOnClick: true, + }); + setLoading(false); + } + }; + const DeleteUser = async (id) => { + setLoading(true); + try { + const data = await Chapar.delete( + `${process.env.NEXT_PUBLIC_API_URL}/user/${id}`, + + { + headers: { + Authorization: getToken(), + }, + } + ); + setBottomSheetCreateEmployeesOpen(false); + setLoading(false); + + GetUsers(); + } catch ({ error, status }) { + toast.error(`${error.response.data.message}`, { + position: "bottom-right", + closeOnClick: true, + }); + setLoading(false); + } + }; // useEffect(() => { // GetPermissions(); @@ -387,6 +466,9 @@ export default function RootLayout({ children }) { goToEditRole, roleData, idEditRole, + idEditUser, + goToEditUser, + userData, }, setBottomSheetCreateRoleOpen, setBottomSheetCreateEmployeesOpen, @@ -418,6 +500,12 @@ export default function RootLayout({ children }) { setIdEditRole, DeleteRole, UpdateRole, + setIdEditUser, + setGoToEditUser, + setUserData, + DeleteUser, + GetUser, + UpdateUser, }} >