update user and delte
parent
ac5cf24c28
commit
d2dd80b147
|
@ -8,6 +8,12 @@ const UsersEmployees = () => {
|
||||||
const CTX = useContext(AppContext);
|
const CTX = useContext(AppContext);
|
||||||
const usersData = CTX.state.usersData;
|
const usersData = CTX.state.usersData;
|
||||||
|
|
||||||
|
const goToEditUser = (id) => {
|
||||||
|
CTX.setGoToEditUser(true);
|
||||||
|
CTX.setBottomSheetCreateEmployeesOpen(true);
|
||||||
|
CTX.setIdEditUser(id);
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{usersData.length > 0 ? (
|
{usersData.length > 0 ? (
|
||||||
|
@ -30,10 +36,10 @@ const UsersEmployees = () => {
|
||||||
</h4>
|
</h4>
|
||||||
<p className="mb-0 text-[11px]">صندوق دار</p>
|
<p className="mb-0 text-[11px]">صندوق دار</p>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex ">
|
<div className="flex">
|
||||||
<div
|
<div
|
||||||
className="w-[35px] h-[35px] bg-secondaryLighter-100 rounded-full"
|
className="w-[35px] h-[35px] bg-secondaryLighter-100 rounded-full pt-[3px]"
|
||||||
onClick={() => goToEditRole(e.id)}
|
onClick={() => goToEditUser(e.userId)}
|
||||||
>
|
>
|
||||||
<svg
|
<svg
|
||||||
width="13"
|
width="13"
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import React, { useContext, useRef, useState } from "react";
|
import React, { useContext, useEffect, useRef, useState } from "react";
|
||||||
import { BottomSheet } from "react-spring-bottom-sheet";
|
import { BottomSheet } from "react-spring-bottom-sheet";
|
||||||
import Input from "plugins/Input/page";
|
import Input from "plugins/Input/page";
|
||||||
import AppContext from "@ctx/AppContext";
|
import AppContext from "@ctx/AppContext";
|
||||||
|
@ -9,6 +9,7 @@ import { toast } from "react-toastify";
|
||||||
import Buttonbriz from "plugins/Buttonbriz/page";
|
import Buttonbriz from "plugins/Buttonbriz/page";
|
||||||
import DatePickerIran from "plugins/DatePickerIran/page";
|
import DatePickerIran from "plugins/DatePickerIran/page";
|
||||||
import moment from "jalali-moment";
|
import moment from "jalali-moment";
|
||||||
|
import validateIranPhone from "plugins/IranPhoneRegex";
|
||||||
const jalaliMoment = require("jalali-moment");
|
const jalaliMoment = require("jalali-moment");
|
||||||
|
|
||||||
const BottomSheetCreateEmployees = (props) => {
|
const BottomSheetCreateEmployees = (props) => {
|
||||||
|
@ -17,7 +18,7 @@ const BottomSheetCreateEmployees = (props) => {
|
||||||
const [lastName, setLastName] = useState("");
|
const [lastName, setLastName] = useState("");
|
||||||
const [phoneNumber, setPhoneNumber] = useState("");
|
const [phoneNumber, setPhoneNumber] = useState("");
|
||||||
const [nationalId, setNationalId] = useState("");
|
const [nationalId, setNationalId] = useState("");
|
||||||
const [gender, setGender] = useState(0);
|
const [gender, setGender] = useState(parseInt(0));
|
||||||
const [birthDate, setBirthDate] = useState(null);
|
const [birthDate, setBirthDate] = useState(null);
|
||||||
const [roleSelectCurrntData, setRoleSelectCurrntData] = useState("");
|
const [roleSelectCurrntData, setRoleSelectCurrntData] = useState("");
|
||||||
const [roleSelectData, setRoleSelectData] = useState([]);
|
const [roleSelectData, setRoleSelectData] = useState([]);
|
||||||
|
@ -39,12 +40,15 @@ const BottomSheetCreateEmployees = (props) => {
|
||||||
);
|
);
|
||||||
const rolesChoose = CTX.state.rolesChoose;
|
const rolesChoose = CTX.state.rolesChoose;
|
||||||
const rolesData = CTX.state.rolesData;
|
const rolesData = CTX.state.rolesData;
|
||||||
|
const goToEditUser = CTX.state.goToEditUser;
|
||||||
|
const idEditUser = CTX.state.idEditUser;
|
||||||
|
const userData = CTX.state.userData;
|
||||||
|
|
||||||
const body = {
|
const body = {
|
||||||
phoneNumber,
|
phoneNumber,
|
||||||
firstName,
|
firstName,
|
||||||
lastName,
|
lastName,
|
||||||
birthDate:
|
birthDateTimeStamp:
|
||||||
birthDate &&
|
birthDate &&
|
||||||
moment
|
moment
|
||||||
.utc(
|
.utc(
|
||||||
|
@ -57,11 +61,62 @@ const BottomSheetCreateEmployees = (props) => {
|
||||||
roleIds: rolesChoose,
|
roleIds: rolesChoose,
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleCreateUser = () => {
|
const bodyUpdate = {
|
||||||
if (validator.current.allValid()) {
|
phoneNumber,
|
||||||
CTX.CreateUser(body);
|
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 {
|
} else {
|
||||||
toast.error("پرکردن همه ی فیلد ها واجب است", {
|
toast.error("شماره تماس را درست وارد کنید", {
|
||||||
position: "bottom-right",
|
position: "bottom-right",
|
||||||
autoClose: 2000,
|
autoClose: 2000,
|
||||||
hideProgressBar: false,
|
hideProgressBar: false,
|
||||||
|
@ -70,9 +125,6 @@ const BottomSheetCreateEmployees = (props) => {
|
||||||
draggable: true,
|
draggable: true,
|
||||||
progress: undefined,
|
progress: undefined,
|
||||||
});
|
});
|
||||||
|
|
||||||
validator.current.showMessages();
|
|
||||||
forceUpdate(1);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -80,20 +132,56 @@ const BottomSheetCreateEmployees = (props) => {
|
||||||
CTX.setRolesChoose(rolesChoose.filter((el) => el !== id));
|
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 (
|
return (
|
||||||
<BottomSheet
|
<BottomSheet
|
||||||
onSpringStart={(e) => {
|
onSpringStart={(e) => handleBottomSheetCreateEmployeesOpen(e)}
|
||||||
if (e.type == "OPEN") {
|
|
||||||
CTX.GetRoles();
|
|
||||||
}
|
|
||||||
|
|
||||||
setRoleSelectData(
|
|
||||||
rolesData.map((item) => ({
|
|
||||||
key: item.persianName,
|
|
||||||
value: item.id,
|
|
||||||
}))
|
|
||||||
);
|
|
||||||
}}
|
|
||||||
open={CTX.state.BottomSheetCreateEmployeesOpen}
|
open={CTX.state.BottomSheetCreateEmployeesOpen}
|
||||||
onDismiss={() => CTX.setBottomSheetCreateEmployeesOpen(false)}
|
onDismiss={() => CTX.setBottomSheetCreateEmployeesOpen(false)}
|
||||||
>
|
>
|
||||||
|
@ -153,15 +241,8 @@ const BottomSheetCreateEmployees = (props) => {
|
||||||
value={gender}
|
value={gender}
|
||||||
inputEvent={(e) => {
|
inputEvent={(e) => {
|
||||||
setGender(e.target.value);
|
setGender(e.target.value);
|
||||||
validator.current.showMessageFor("gender");
|
|
||||||
}}
|
}}
|
||||||
style="text-right"
|
style="text-right"
|
||||||
validator={true}
|
|
||||||
validatorData={validator.current.message(
|
|
||||||
"gender",
|
|
||||||
gender,
|
|
||||||
"required"
|
|
||||||
)}
|
|
||||||
select={true}
|
select={true}
|
||||||
selectData={[
|
selectData={[
|
||||||
{ key: "مرد", value: 0 },
|
{ key: "مرد", value: 0 },
|
||||||
|
@ -257,12 +338,25 @@ const BottomSheetCreateEmployees = (props) => {
|
||||||
</div>
|
</div>
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
<Buttonbriz
|
|
||||||
title="ثبت کاربر "
|
{goToEditUser ? (
|
||||||
color="INFO"
|
<Buttonbriz
|
||||||
icon="CHECK"
|
title="ویرایش کاربر"
|
||||||
buttonEvent={() => handleCreateUser()}
|
color="INFO"
|
||||||
/>
|
icon="CHECK"
|
||||||
|
buttonEvent={() => handleCreateUser("UPDATE")}
|
||||||
|
subButton={true}
|
||||||
|
subButtonTitle="حذف کاربر"
|
||||||
|
subButtonEvent={() => CTX.DeleteUser(idEditUser)}
|
||||||
|
/>
|
||||||
|
) : (
|
||||||
|
<Buttonbriz
|
||||||
|
title="ثبت کاربر"
|
||||||
|
color="PRIMARY"
|
||||||
|
icon="CHECK"
|
||||||
|
buttonEvent={() => handleCreateUser()}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
</BottomSheet>
|
</BottomSheet>
|
||||||
);
|
);
|
||||||
|
|
|
@ -105,8 +105,7 @@ const Buttonbriz = ({
|
||||||
subButtonAction ? "text-white font-semibold" : "text-red-500"
|
subButtonAction ? "text-white font-semibold" : "text-red-500"
|
||||||
} `}
|
} `}
|
||||||
>
|
>
|
||||||
{" "}
|
{subButtonTitle}
|
||||||
{subButtonTitle}{" "}
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
|
@ -1,16 +1,24 @@
|
||||||
"use client";
|
"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 "@hassanmojab/react-modern-calendar-datepicker/lib/DatePicker.css";
|
||||||
import DatePicker from "@hassanmojab/react-modern-calendar-datepicker";
|
import DatePicker from "@hassanmojab/react-modern-calendar-datepicker";
|
||||||
import Buttonbriz from "plugins/Buttonbriz/page";
|
import Buttonbriz from "plugins/Buttonbriz/page";
|
||||||
import { Calendar } from "react-modern-calendar-datepicker";
|
import { Calendar } from "react-modern-calendar-datepicker";
|
||||||
|
import AppContext from "@ctx/AppContext";
|
||||||
|
|
||||||
const DatePickerIran = ({ datePickerEvent, date }) => {
|
const DatePickerIran = ({ datePickerEvent, date }) => {
|
||||||
const [selectedDay, setSelectedDay] = useState(null);
|
const CTX = useContext(AppContext);
|
||||||
|
|
||||||
useEffect(() => {
|
const [selectedDay, setSelectedDay] = useState(null);
|
||||||
setSelectedDay(date);
|
const goToEditUser = CTX.state.goToEditUser;
|
||||||
}, [date]);
|
|
||||||
|
console.log("date", date);
|
||||||
|
|
||||||
|
// useEffect(() => {
|
||||||
|
// if (goToEditUser) {
|
||||||
|
// setSelectedDay(date);
|
||||||
|
// }
|
||||||
|
// }, []);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="">
|
<div className="">
|
||||||
|
@ -21,7 +29,7 @@ const DatePickerIran = ({ datePickerEvent, date }) => {
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<DatePicker
|
<DatePicker
|
||||||
value={selectedDay}
|
value={date}
|
||||||
onChange={datePickerEvent}
|
onChange={datePickerEvent}
|
||||||
shouldHighlightWeekends
|
shouldHighlightWeekends
|
||||||
inputClassName={`peer w-full border-b placeholder:text-transparent relative !text-right ${
|
inputClassName={`peer w-full border-b placeholder:text-transparent relative !text-right ${
|
||||||
|
|
|
@ -62,6 +62,9 @@ export default function RootLayout({ children }) {
|
||||||
// createUser/ user
|
// createUser/ user
|
||||||
const [usersData, setUsersData] = useState([]);
|
const [usersData, setUsersData] = useState([]);
|
||||||
const [rolesChoose, setRolesChoose] = useState([]);
|
const [rolesChoose, setRolesChoose] = useState([]);
|
||||||
|
const [userData, setUserData] = useState([]);
|
||||||
|
const [goToEditUser, setGoToEditUser] = useState(false);
|
||||||
|
const [idEditUser, setIdEditUser] = useState(null);
|
||||||
|
|
||||||
const pathname = usePathname();
|
const pathname = usePathname();
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
@ -335,6 +338,34 @@ export default function RootLayout({ children }) {
|
||||||
setLoading(false);
|
setLoading(false);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
const UpdateUser = async (body) => {
|
||||||
|
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 () => {
|
const GetUsers = async () => {
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
try {
|
try {
|
||||||
|
@ -359,6 +390,54 @@ export default function RootLayout({ children }) {
|
||||||
setLoading(false);
|
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(() => {
|
// useEffect(() => {
|
||||||
// GetPermissions();
|
// GetPermissions();
|
||||||
|
@ -387,6 +466,9 @@ export default function RootLayout({ children }) {
|
||||||
goToEditRole,
|
goToEditRole,
|
||||||
roleData,
|
roleData,
|
||||||
idEditRole,
|
idEditRole,
|
||||||
|
idEditUser,
|
||||||
|
goToEditUser,
|
||||||
|
userData,
|
||||||
},
|
},
|
||||||
setBottomSheetCreateRoleOpen,
|
setBottomSheetCreateRoleOpen,
|
||||||
setBottomSheetCreateEmployeesOpen,
|
setBottomSheetCreateEmployeesOpen,
|
||||||
|
@ -418,6 +500,12 @@ export default function RootLayout({ children }) {
|
||||||
setIdEditRole,
|
setIdEditRole,
|
||||||
DeleteRole,
|
DeleteRole,
|
||||||
UpdateRole,
|
UpdateRole,
|
||||||
|
setIdEditUser,
|
||||||
|
setGoToEditUser,
|
||||||
|
setUserData,
|
||||||
|
DeleteUser,
|
||||||
|
GetUser,
|
||||||
|
UpdateUser,
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
|
|
Loading…
Reference in New Issue