back to desktop pc
This commit is contained in:
@@ -25,7 +25,7 @@ import { useState } from 'react';
|
||||
import IngresoCard from '../components/Ingresos/IngresoCard';
|
||||
import SolicitudCard from '../components/Solicitudes/SolicitudCard';
|
||||
import CustomModal from '../components/CustomModal';
|
||||
import PreUserForm from '../components/Solicitudes/PreUserForm';
|
||||
import NewUserForm from '../components/Solicitudes/NewUserForm';
|
||||
import NotificationModal from '../components/NotificationModal';
|
||||
import { Button, Col, Row } from 'react-bootstrap';
|
||||
import AnimatedDropdown from '../components/AnimatedDropdown';
|
||||
@@ -69,9 +69,6 @@ const Perfil = () => {
|
||||
baseUrl: `${config.apiConfig.baseUrl}${config.apiConfig.endpoints.users.me}`,
|
||||
myIncomesUrl: buildUrl(config.apiConfig.baseUrl, config.apiConfig.endpoints.incomes.mine),
|
||||
requestUrl: buildUrl(config.apiConfig.baseUrl, config.apiConfig.endpoints.requests.all),
|
||||
preUsersUrl: buildUrl(config.apiConfig.baseUrl, config.apiConfig.endpoints.preUsers.all),
|
||||
requestWithPreUserUrl: buildUrl(config.apiConfig.baseUrl, config.apiConfig.endpoints.requests.withPreUser),
|
||||
preUserValidationUrl: buildUrl(config.apiConfig.baseUrl, config.apiConfig.endpoints.preUsers.validate),
|
||||
myRequestsUrl: buildUrl(config.apiConfig.baseUrl, config.apiConfig.endpoints.requests.mine),
|
||||
changePasswordUrl: buildUrl(config.apiConfig.coreUrl, config.apiConfig.endpoints.auth.changePassword),
|
||||
loginValidateUrl: buildUrl(config.apiConfig.coreUrl, config.apiConfig.endpoints.auth.loginValidate),
|
||||
@@ -89,8 +86,10 @@ const PerfilContent = ({ config }) => {
|
||||
const { logout } = useAuth();
|
||||
|
||||
const identity = JSON.parse(localStorage.getItem("identity"));
|
||||
|
||||
const myRequests = data?.requests ?? [];
|
||||
const incomes = data?.payments ?? [];
|
||||
|
||||
const hasCollaborator = data?.hasCollaborator ?? false;
|
||||
const hasCollaboratorRequest = data?.hasCollaboratorRequest ?? false;
|
||||
const hasGreenHouse = data?.hasGreenhouse ?? false;
|
||||
@@ -101,6 +100,44 @@ const PerfilContent = ({ config }) => {
|
||||
const [feedbackModal, setFeedbackModal] = useState(null);
|
||||
const closeFeedback = () => setFeedbackModal(null);
|
||||
|
||||
const baseMetadata = {
|
||||
displayName: identity.user.displayName,
|
||||
dni: identity.metadata.dni,
|
||||
phone: identity.metadata.phone,
|
||||
email: identity.account.email,
|
||||
memberNumber: identity.metadata.memberNumber,
|
||||
plotNumber: identity.metadata.plotNumber,
|
||||
type: identity.metadata.type,
|
||||
role: identity.metadata.role
|
||||
};
|
||||
|
||||
const sendSimpleRequest = async (type) => {
|
||||
const requestOf = type == 1 ? "baja" : type == 2 ? "adición de colaborador" :
|
||||
type == 3 ? "eliminación de colaborador" : type == 4 ? "adición de invernadero" :
|
||||
type == 5 ? "eliminación de invernadero" : "desconocido";
|
||||
try {
|
||||
await postData(config.requestUrl, {
|
||||
type,
|
||||
status: CONSTANTS.REQUEST_PENDING,
|
||||
userId: identity.user.userId,
|
||||
metadata: baseMetadata
|
||||
});
|
||||
setFeedbackModal({
|
||||
title: 'Solicitud enviada',
|
||||
message: `Se ha enviado la solicitud de ${requestOf} correctamente.`,
|
||||
variant: 'success',
|
||||
onClick: closeFeedback
|
||||
});
|
||||
} catch (err) {
|
||||
setFeedbackModal({
|
||||
title: 'Error',
|
||||
message: err.message,
|
||||
variant: 'danger',
|
||||
onClick: closeFeedback
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
const [validationErrors, setValidationErrors] = useState({});
|
||||
|
||||
const [newPasswordData, setNewPasswordData] = useState({
|
||||
@@ -113,75 +150,6 @@ const PerfilContent = ({ config }) => {
|
||||
const [showNew, setShowNew] = useState(false);
|
||||
const [showConfirm, setShowConfirm] = useState(false);
|
||||
|
||||
const handleRequestUnregister = async () => {
|
||||
try {
|
||||
await postData(config.requestUrl, {
|
||||
type: CONSTANTS.REQUEST_TYPE_UNREGISTER,
|
||||
status: CONSTANTS.REQUEST_PENDING,
|
||||
requestedBy: identity.user.userId
|
||||
});
|
||||
setFeedbackModal({
|
||||
title: 'Solicitud enviada',
|
||||
message: 'Se ha enviado la solicitud de baja correctamente.',
|
||||
variant: 'success',
|
||||
onClick: closeFeedback
|
||||
});
|
||||
} catch (err) {
|
||||
setFeedbackModal({
|
||||
title: 'Error',
|
||||
message: err.message,
|
||||
variant: 'danger',
|
||||
onClick: closeFeedback
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
const handleRequestGreenHouse = async () => {
|
||||
try {
|
||||
await postData(config.requestUrl, {
|
||||
type: CONSTANTS.REQUEST_TYPE_ADD_GREENHOUSE,
|
||||
status: CONSTANTS.REQUEST_PENDING,
|
||||
requestedBy: identity.user.userId
|
||||
});
|
||||
setFeedbackModal({
|
||||
title: 'Solicitud enviada',
|
||||
message: 'Se ha enviado la solicitud de invernadero correctamente.',
|
||||
variant: 'success',
|
||||
onClick: closeFeedback
|
||||
});
|
||||
} catch (err) {
|
||||
setFeedbackModal({
|
||||
title: 'Error',
|
||||
message: err.message,
|
||||
variant: 'danger',
|
||||
onClick: closeFeedback
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
const handleRemoveGreenHouse = async () => {
|
||||
try {
|
||||
await postData(config.requestUrl, {
|
||||
type: CONSTANTS.REQUEST_TYPE_REMOVE_GREENHOUSE,
|
||||
status: CONSTANTS.REQUEST_PENDING,
|
||||
requestedBy: identity.user.userId
|
||||
});
|
||||
setFeedbackModal({
|
||||
title: 'Solicitud enviada',
|
||||
message: 'Se ha enviado la solicitud de baja de invernadero correctamente.',
|
||||
variant: 'success',
|
||||
onClick: closeFeedback
|
||||
});
|
||||
} catch (err) {
|
||||
setFeedbackModal({
|
||||
title: 'Error',
|
||||
message: err.message,
|
||||
variant: 'danger',
|
||||
onClick: closeFeedback
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
const handleChange = (e) => {
|
||||
setNewPasswordData({
|
||||
...newPasswordData,
|
||||
@@ -263,27 +231,42 @@ const PerfilContent = ({ config }) => {
|
||||
{({ closeDropdown }) => (
|
||||
<>
|
||||
{!hasGreenHouse && !hasGreenHouseRequest && (
|
||||
<div className="dropdown-item d-flex align-items-center" onClick={() => { handleRequestGreenHouse(); closeDropdown(); }}>
|
||||
<div className="dropdown-item d-flex align-items-center" onClick={() => {
|
||||
sendSimpleRequest(CONSTANTS.REQUEST_TYPE_ADD_GREENHOUSE);
|
||||
closeDropdown();
|
||||
}}>
|
||||
<FontAwesomeIcon icon={faSeedling} className="me-2" />Solicitar invernadero
|
||||
</div>
|
||||
)}
|
||||
{!hasCollaborator && !hasCollaboratorRequest && (
|
||||
<div className="dropdown-item d-flex align-items-center" onClick={() => { setShowAddCollaboratorModal(true); closeDropdown(); }}>
|
||||
<div className="dropdown-item d-flex align-items-center" onClick={() => {
|
||||
setShowAddCollaboratorModal(true);
|
||||
closeDropdown();
|
||||
}}>
|
||||
<FontAwesomeIcon icon={faUserPlus} className="me-2" />Añadir un colaborador
|
||||
</div>
|
||||
)}
|
||||
<hr className="dropdown-divider" />
|
||||
{hasGreenHouse && !hasGreenHouseRequest && (
|
||||
<div className="dropdown-item d-flex align-items-center text-danger" onClick={() => { handleRemoveGreenHouse(); closeDropdown(); }}>
|
||||
<div className="dropdown-item d-flex align-items-center text-danger" onClick={() => {
|
||||
sendSimpleRequest(CONSTANTS.REQUEST_TYPE_REMOVE_GREENHOUSE);
|
||||
closeDropdown();
|
||||
}}>
|
||||
<FontAwesomeIcon icon={faArrowRightFromBracket} className="me-2" />Dejar invernadero
|
||||
</div>
|
||||
)}
|
||||
{hasCollaborator && !hasCollaboratorRequest && (
|
||||
<div className="dropdown-item d-flex align-items-center text-danger" onClick={() => { setShowRemoveCollaboratorModal(true); closeDropdown(); }}>
|
||||
<div className="dropdown-item d-flex align-items-center text-danger" onClick={() => {
|
||||
setShowRemoveCollaboratorModal(true);
|
||||
closeDropdown();
|
||||
}}>
|
||||
<FontAwesomeIcon icon={faUserSlash} className="me-2" />Quitar colaborador
|
||||
</div>
|
||||
)}
|
||||
<div className="dropdown-item d-flex align-items-center text-danger" onClick={() => { handleRequestUnregister(); closeDropdown(); }}>
|
||||
<div className="dropdown-item d-flex align-items-center text-danger" onClick={() => {
|
||||
sendSimpleRequest(CONSTANTS.REQUEST_TYPE_UNREGISTER);
|
||||
closeDropdown();
|
||||
}}>
|
||||
<FontAwesomeIcon icon={faUserSlash} className="me-2" />Darse de baja
|
||||
</div>
|
||||
</>
|
||||
@@ -431,48 +414,34 @@ const PerfilContent = ({ config }) => {
|
||||
setValidationErrors({});
|
||||
}}
|
||||
>
|
||||
<PreUserForm
|
||||
<NewUserForm
|
||||
userType={3}
|
||||
plotNumber={identity.metadata.plotNumber}
|
||||
errors={validationErrors}
|
||||
onSubmit={async (formData) => {
|
||||
setValidationErrors({});
|
||||
await postData(config.requestUrl, {
|
||||
type: CONSTANTS.REQUEST_TYPE_ADD_COLLABORATOR,
|
||||
status: CONSTANTS.REQUEST_PENDING,
|
||||
userId: identity.user.userId,
|
||||
metadata: {
|
||||
displayName: formData.displayName,
|
||||
dni: formData.dni,
|
||||
phone: formData.phone,
|
||||
email: formData.email,
|
||||
memberNumber: formData.memberNumber,
|
||||
plotNumber: formData.plotNumber,
|
||||
type: formData.type,
|
||||
role: formData.role
|
||||
}
|
||||
});
|
||||
|
||||
const { _, errors } = await postDataValidated(config.preUserValidationUrl, formData);
|
||||
if (errors) {
|
||||
setValidationErrors(errors);
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
await postData(config.requestWithPreUserUrl, {
|
||||
request: {
|
||||
type: CONSTANTS.REQUEST_TYPE_ADD_COLLABORATOR,
|
||||
status: CONSTANTS.REQUEST_PENDING,
|
||||
requestedBy: identity.user.userId
|
||||
},
|
||||
preUser: {
|
||||
...formData
|
||||
}
|
||||
});
|
||||
|
||||
setValidationErrors({});
|
||||
setShowAddCollaboratorModal(false);
|
||||
setFeedbackModal({
|
||||
title: "Colaborador añadido",
|
||||
message: "Tu solicitud de colaborador ha sido enviada correctamente.",
|
||||
variant: "success",
|
||||
onClick: closeFeedback
|
||||
});
|
||||
} catch (err) {
|
||||
setValidationErrors({});
|
||||
setFeedbackModal({
|
||||
title: "Error",
|
||||
message: err.message,
|
||||
variant: "danger",
|
||||
onClick: closeFeedback
|
||||
});
|
||||
}
|
||||
setShowAddCollaboratorModal(false);
|
||||
setFeedbackModal({
|
||||
title: 'Solicitud enviada',
|
||||
message: 'El colaborador ha sido solicitado correctamente.',
|
||||
variant: 'success',
|
||||
onClick: closeFeedback
|
||||
});
|
||||
}}
|
||||
/>
|
||||
</CustomModal>
|
||||
|
||||
Reference in New Issue
Block a user