@paro.io/expert-shared-components 1.9.9 → 1.9.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/EarningsTracker/ActiveProjectCard.d.ts +52 -52
- package/lib/components/EarningsTracker/ActiveProjectCard.js +161 -161
- package/lib/components/EarningsTracker/CenterCardUI.d.ts +13 -13
- package/lib/components/EarningsTracker/CenterCardUI.js +134 -134
- package/lib/components/EarningsTracker/EarningsTracker.d.ts +52 -52
- package/lib/components/EarningsTracker/EarningsTracker.js +504 -504
- package/lib/components/EarningsTracker/EditDateModal.d.ts +22 -22
- package/lib/components/EarningsTracker/EditDateModal.js +149 -149
- package/lib/components/EarningsTracker/EmailModal.d.ts +14 -14
- package/lib/components/EarningsTracker/EmailModal.js +79 -79
- package/lib/components/EarningsTracker/EndProjectModal.d.ts +56 -56
- package/lib/components/EarningsTracker/EndProjectModal.js +221 -221
- package/lib/components/EarningsTracker/LeftCardUI.d.ts +18 -18
- package/lib/components/EarningsTracker/LeftCardUI.js +189 -189
- package/lib/components/EarningsTracker/LogTimeModalAuthenticated.d.ts +52 -52
- package/lib/components/EarningsTracker/LogTimeModalAuthenticated.js +358 -358
- package/lib/components/EarningsTracker/ProgressBar.d.ts +4 -4
- package/lib/components/EarningsTracker/ProgressBar.js +62 -62
- package/lib/components/EarningsTracker/ReviewRequestModal.d.ts +17 -17
- package/lib/components/EarningsTracker/ReviewRequestModal.js +130 -130
- package/lib/components/EarningsTracker/RightCardUI.d.ts +46 -46
- package/lib/components/EarningsTracker/RightCardUI.js +231 -231
- package/lib/components/EarningsTracker/index.d.ts +1 -1
- package/lib/components/EarningsTracker/index.js +5 -5
- package/lib/components/ProjectCard/ActiveProjectCard.d.ts +5 -1
- package/lib/components/ProjectCard/ActiveProjectCard.js +32 -9
- package/lib/components/ProjectCard/EditDateModal.d.ts +3 -1
- package/lib/components/ProjectCard/EditDateModal.js +25 -9
- package/lib/components/ProjectCard/ProjectDateRequest.d.ts +17 -0
- package/lib/components/ProjectCard/ProjectDateRequest.js +132 -0
- package/lib/components/ProjectCard/RightCardUI.d.ts +2 -1
- package/lib/components/ProjectCard/RightCardUI.js +5 -5
- package/package.json +1 -1
|
@@ -40,6 +40,7 @@ const LeftCardUI_1 = require("./LeftCardUI");
|
|
|
40
40
|
const CenterCardUI_1 = require("./CenterCardUI");
|
|
41
41
|
const utc_1 = __importDefault(require("dayjs/plugin/utc"));
|
|
42
42
|
const timezone_1 = __importDefault(require("dayjs/plugin/timezone"));
|
|
43
|
+
const ProjectDateRequest_1 = __importDefault(require("./ProjectDateRequest"));
|
|
43
44
|
dayjs_1.default.extend(utc_1.default);
|
|
44
45
|
dayjs_1.default.extend(timezone_1.default);
|
|
45
46
|
exports.useStyles = (0, styles_1.makeStyles)({
|
|
@@ -97,8 +98,13 @@ const checkProjectRateType = (freelanceRateTypeId) => {
|
|
|
97
98
|
}
|
|
98
99
|
return projectType;
|
|
99
100
|
};
|
|
100
|
-
const
|
|
101
|
-
|
|
101
|
+
const getDays = (oldValue, newValue) => {
|
|
102
|
+
const oldDate = (0, dayjs_1.default)(oldValue);
|
|
103
|
+
const newDate = (0, dayjs_1.default)(newValue);
|
|
104
|
+
return newDate.diff(oldDate, 'day');
|
|
105
|
+
};
|
|
106
|
+
const ActiveProjectCard = ({ project, projectsData, expertName, freelancerId, freelancerEmail, isAuthenticated, activeProject, adhocProject, upcomingProject, selectedTab, projectTagsMap, updateProjectStatusMutation, GetAllProjectIrprDetailsForFreelancerDocument, updateParoProjectTagsMutation, GetParoProjectsDocument, updateProjectTagReviewStatusMutation, updateProjectStatus, updateProjectTags, getSowLazyQuery, sendParoSupportEmail, createChangeRequestMutation, createChangeRequest, createOrUpdateRatingRequestMutation, updateProjectTaskMutation, updateProjectTask, submitProjectHoursMutation, getAuth0Roles, submitProjectHoursLambda, createOrUpdateRating, getParoProjectsByClientIdDocument, user, internalPortal = false, csmUserGroup = false, clientPortal = false, signedSow = false, isStageProd, isRequestReviewEnabled = false, changeRequests, GetAllChangeRequestsForFreelancerDocument, updateProjectRequestStatus, updateDBProjectRequestStatus, }) => {
|
|
107
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
|
|
102
108
|
const [editEndDate, setEditEndDate] = (0, react_1.useState)(false);
|
|
103
109
|
const [editStartDate, setEditStartDate] = (0, react_1.useState)(false);
|
|
104
110
|
const [showTimeModal, setShowTimeModal] = (0, react_1.useState)(false);
|
|
@@ -110,8 +116,8 @@ const ActiveProjectCard = ({ project, projectsData, expertName, freelancerId, fr
|
|
|
110
116
|
const checkStartDate = (0, dayjs_1.default)(project === null || project === void 0 ? void 0 : project.startDate).isSame((0, dayjs_1.default)(), 'day') || (0, dayjs_1.default)(project === null || project === void 0 ? void 0 : project.startDate).isAfter((0, dayjs_1.default)());
|
|
111
117
|
const classes = (0, exports.useStyles)();
|
|
112
118
|
let sumOfRatingValuesOfSingleProject = 0;
|
|
113
|
-
project === null || project === void 0 ? void 0 : project.rating.forEach((rating) => sumOfRatingValuesOfSingleProject += rating.overallRating);
|
|
114
|
-
const [ratingValue, setRatingValue] = (0, react_1.useState)((sumOfRatingValuesOfSingleProject / ((
|
|
119
|
+
(_d = project === null || project === void 0 ? void 0 : project.rating) === null || _d === void 0 ? void 0 : _d.forEach((rating) => sumOfRatingValuesOfSingleProject += rating.overallRating);
|
|
120
|
+
const [ratingValue, setRatingValue] = (0, react_1.useState)((sumOfRatingValuesOfSingleProject / ((_e = project === null || project === void 0 ? void 0 : project.rating) === null || _e === void 0 ? void 0 : _e.length)).toFixed(1));
|
|
115
121
|
(0, react_1.useEffect)(() => {
|
|
116
122
|
setSingleProjectData(projectsData.find((projectData) => projectData.id === (project === null || project === void 0 ? void 0 : project.id)));
|
|
117
123
|
}, [projectsData, project]);
|
|
@@ -124,10 +130,27 @@ const ActiveProjectCard = ({ project, projectsData, expertName, freelancerId, fr
|
|
|
124
130
|
if ((project === null || project === void 0 ? void 0 : project.ratingRequest.length) > 1) {
|
|
125
131
|
project.ratingRequest = sortRatingsAndRequests(project.ratingRequest);
|
|
126
132
|
}
|
|
127
|
-
const showRating = ratingValue && (0, dayjs_1.default)((0, dayjs_1.default)().tz('America/Los_Angeles').format('YYYY-MM-DD HH:mm:ss')).diff((0, dayjs_1.default)((
|
|
128
|
-
const freelancerName = (
|
|
129
|
-
const displayName = clientPortal ? freelancerName : (
|
|
133
|
+
const showRating = ratingValue && (0, dayjs_1.default)((0, dayjs_1.default)().tz('America/Los_Angeles').format('YYYY-MM-DD HH:mm:ss')).diff((0, dayjs_1.default)((_g = (_f = project === null || project === void 0 ? void 0 : project.rating) === null || _f === void 0 ? void 0 : _f[0]) === null || _g === void 0 ? void 0 : _g.createdAt.replace('Z', '')).format('YYYY-MM-DD HH:mm:ss'), 'hours') > 48;
|
|
134
|
+
const freelancerName = (_k = (_j = (_h = project === null || project === void 0 ? void 0 : project.projectScope) === null || _h === void 0 ? void 0 : _h.freelancer) === null || _j === void 0 ? void 0 : _j.name) !== null && _k !== void 0 ? _k : ((_o = (_m = (_l = project === null || project === void 0 ? void 0 : project.projectScope) === null || _l === void 0 ? void 0 : _l.freelancer) === null || _m === void 0 ? void 0 : _m.freelancerProfile) === null || _o === void 0 ? void 0 : _o.firstName) + ' ' + ((_r = (_q = (_p = project === null || project === void 0 ? void 0 : project.projectScope) === null || _p === void 0 ? void 0 : _p.freelancer) === null || _q === void 0 ? void 0 : _q.freelancerProfile) === null || _r === void 0 ? void 0 : _r.lastName);
|
|
135
|
+
const displayName = clientPortal ? freelancerName : (_s = project === null || project === void 0 ? void 0 : project.client) === null || _s === void 0 ? void 0 : _s.name;
|
|
130
136
|
return (react_1.default.createElement("div", { className: "w-full mb-8" },
|
|
137
|
+
internalPortal && changeRequests && changeRequests.length > 0 && (react_1.default.createElement("div", null, changeRequests
|
|
138
|
+
.filter((cr) => cr.entityId === project.id)
|
|
139
|
+
.map((changerequest) => {
|
|
140
|
+
const { oldValue, newValue, status, changeType, entityId, ID, dateSubmitted, changeReason } = changerequest;
|
|
141
|
+
const dateInfo = {
|
|
142
|
+
currentDate: oldValue,
|
|
143
|
+
newDate: newValue,
|
|
144
|
+
daysDifference: getDays(oldValue, newValue),
|
|
145
|
+
changeType: changeType,
|
|
146
|
+
entityId: entityId,
|
|
147
|
+
ID: ID,
|
|
148
|
+
status: status,
|
|
149
|
+
dateSubmitted: dateSubmitted,
|
|
150
|
+
changeReason: changeReason
|
|
151
|
+
};
|
|
152
|
+
return (status === "New" && csmUserGroup && (react_1.default.createElement(ProjectDateRequest_1.default, { key: ID, dateInfo: dateInfo, userVal: user, project: project, expertName: expertName, freelancerId: freelancerId, freelancerEmail: freelancerEmail, updateProjectRequestStatus: updateProjectRequestStatus, GetAllProjectIrprDetailsForFreelancerDocument: GetAllProjectIrprDetailsForFreelancerDocument, GetAllChangeRequestsForFreelancerDocument: GetAllChangeRequestsForFreelancerDocument, changeType: changeType, isStageProd: isStageProd, selectedTab: selectedTab })));
|
|
153
|
+
}))),
|
|
131
154
|
react_1.default.createElement("h1", { className: "font-bold text-lg m-2" },
|
|
132
155
|
displayName,
|
|
133
156
|
":",
|
|
@@ -137,7 +160,7 @@ const ActiveProjectCard = ({ project, projectsData, expertName, freelancerId, fr
|
|
|
137
160
|
react_1.default.createElement("div", { className: "flex flex-col-reverse justify-between w-full mt-3 md:flex-row gap-y-4" },
|
|
138
161
|
react_1.default.createElement("div", { className: "flex flex-col" },
|
|
139
162
|
react_1.default.createElement("h1", null, displayName),
|
|
140
|
-
react_1.default.createElement("p", { className: "font-bold text-md mt-1" }, `${(
|
|
163
|
+
react_1.default.createElement("p", { className: "font-bold text-md mt-1" }, `${(_t = project === null || project === void 0 ? void 0 : project.name) !== null && _t !== void 0 ? _t : "Project"} ${(singleProjectData === null || singleProjectData === void 0 ? void 0 : singleProjectData.minFloorHours) ? "WITH" : "WITHOUT"} a min floor.`)),
|
|
141
164
|
react_1.default.createElement("div", { className: "flex flex-row gap-x-2 items-center ml-auto" },
|
|
142
165
|
showRating && react_1.default.createElement("div", { className: "flex flex-auto items-center justify-between" },
|
|
143
166
|
react_1.default.createElement(lab_1.Rating, { name: "read-only", value: Number(ratingValue), precision: 0.5, size: "large", readOnly: true, emptyIcon: react_1.default.createElement(Star_1.default, { fontSize: "inherit" }) })),
|
|
@@ -157,6 +180,6 @@ const ActiveProjectCard = ({ project, projectsData, expertName, freelancerId, fr
|
|
|
157
180
|
react_1.default.createElement(LeftCardUI_1.LeftCardUI, { projectData: singleProjectData, projectFrequencyType: projectFrequencyType, projectRateType: projectRateType, project: project, isAuthenticated: isAuthenticated, adhocProject: adhocProject, activeProject: activeProject, freelancerId: freelancerId, selectedTab: selectedTab, updateProjectTaskMutation: updateProjectTaskMutation, GetAllProjectIrprDetailsForFreelancerDocument: GetAllProjectIrprDetailsForFreelancerDocument, updateProjectTask: updateProjectTask, clientPortal: clientPortal }),
|
|
158
181
|
react_1.default.createElement("div", { className: "flex flex-col flex-grow md:flex-row gap-x-0 justify-around" },
|
|
159
182
|
react_1.default.createElement(CenterCardUI_1.CenterCardUI, { startDate: project === null || project === void 0 ? void 0 : project.startDate, endDate: project === null || project === void 0 ? void 0 : project.endDate, projectData: singleProjectData, projectRateType: projectRateType, project: project, projectFrequencyType: projectFrequencyType, adhocProject: adhocProject, clientPortal: clientPortal }),
|
|
160
|
-
react_1.default.createElement(RightCardUI_1.RightCardUI, { project: project, expertName: expertName, freelancerEmail: freelancerEmail, freelancerId: freelancerId, isAuthenticated: isAuthenticated, editEndDate: editEndDate, setEditEndDate: setEditEndDate, editStartDate: editStartDate, setEditStartDate: setEditStartDate, showTimeModal: showTimeModal, setShowTimeModal: setShowTimeModal, setSingleProjectData: setSingleProjectData, projectData: singleProjectData, checkStartDate: checkStartDate, activeProject: activeProject, projectRateType: projectRateType, projectFrequencyType: projectFrequencyType, upcomingProject: upcomingProject, selectedTab: selectedTab, showRating: !!showRating, projectTagsMap: projectTagsMap, updateProjectStatusMutation: updateProjectStatusMutation, GetAllProjectIrprDetailsForFreelancerDocument: GetAllProjectIrprDetailsForFreelancerDocument, updateParoProjectTagsMutation: updateParoProjectTagsMutation, GetParoProjectsDocument: GetParoProjectsDocument, updateProjectTagReviewStatusMutation: updateProjectTagReviewStatusMutation, updateProjectStatus: updateProjectStatus, updateProjectTags: updateProjectTags, getSowLazyQuery: getSowLazyQuery, sendParoSupportEmail: sendParoSupportEmail, createChangeRequestMutation: createChangeRequestMutation, createChangeRequest: createChangeRequest, createOrUpdateRatingRequestMutation: createOrUpdateRatingRequestMutation, submitProjectHoursMutation: submitProjectHoursMutation, getAuth0Roles: getAuth0Roles, submitProjectHoursLambda: submitProjectHoursLambda, createOrUpdateRating: createOrUpdateRating, getParoProjectsByClientIdDocument: getParoProjectsByClientIdDocument, user: user, internalPortal: internalPortal, csmUserGroup: csmUserGroup, clientPortal: clientPortal, signedSow: signedSow, isStageProd: isStageProd, isRequestReviewEnabled: isRequestReviewEnabled }))))));
|
|
183
|
+
react_1.default.createElement(RightCardUI_1.RightCardUI, { project: project, expertName: expertName, freelancerEmail: freelancerEmail, freelancerId: freelancerId, isAuthenticated: isAuthenticated, editEndDate: editEndDate, setEditEndDate: setEditEndDate, editStartDate: editStartDate, setEditStartDate: setEditStartDate, showTimeModal: showTimeModal, setShowTimeModal: setShowTimeModal, setSingleProjectData: setSingleProjectData, projectData: singleProjectData, checkStartDate: checkStartDate, activeProject: activeProject, projectRateType: projectRateType, projectFrequencyType: projectFrequencyType, upcomingProject: upcomingProject, selectedTab: selectedTab, showRating: !!showRating, projectTagsMap: projectTagsMap, updateProjectStatusMutation: updateProjectStatusMutation, GetAllProjectIrprDetailsForFreelancerDocument: GetAllProjectIrprDetailsForFreelancerDocument, updateParoProjectTagsMutation: updateParoProjectTagsMutation, GetParoProjectsDocument: GetParoProjectsDocument, updateProjectTagReviewStatusMutation: updateProjectTagReviewStatusMutation, updateProjectStatus: updateProjectStatus, updateProjectTags: updateProjectTags, getSowLazyQuery: getSowLazyQuery, sendParoSupportEmail: sendParoSupportEmail, createChangeRequestMutation: createChangeRequestMutation, createChangeRequest: createChangeRequest, createOrUpdateRatingRequestMutation: createOrUpdateRatingRequestMutation, submitProjectHoursMutation: submitProjectHoursMutation, getAuth0Roles: getAuth0Roles, submitProjectHoursLambda: submitProjectHoursLambda, createOrUpdateRating: createOrUpdateRating, getParoProjectsByClientIdDocument: getParoProjectsByClientIdDocument, user: user, internalPortal: internalPortal, csmUserGroup: csmUserGroup, clientPortal: clientPortal, signedSow: signedSow, isStageProd: isStageProd, isRequestReviewEnabled: isRequestReviewEnabled, updateDBProjectRequestStatus: updateDBProjectRequestStatus }))))));
|
|
161
184
|
};
|
|
162
185
|
exports.ActiveProjectCard = ActiveProjectCard;
|
|
@@ -17,6 +17,8 @@ interface EditDateModalProps {
|
|
|
17
17
|
GetAllProjectIrprDetailsForFreelancerDocument: any;
|
|
18
18
|
createChangeRequest?: any;
|
|
19
19
|
isTestEnv: boolean;
|
|
20
|
+
updateDBProjectRequestStatus: any;
|
|
21
|
+
internalPortal: boolean;
|
|
20
22
|
}
|
|
21
|
-
export declare const EditDateModal: ({ freelancerId, freelancerEmail, project, previousDate, editDate, setEditDate, setIsDateInvalid, validateDate, isDateInvalid, changeType, expertName, isAuthenticated, selectedTab, createChangeRequestMutation, GetAllProjectIrprDetailsForFreelancerDocument, createChangeRequest, isTestEnv }: EditDateModalProps) => React.JSX.Element;
|
|
23
|
+
export declare const EditDateModal: ({ freelancerId, freelancerEmail, project, previousDate, editDate, setEditDate, setIsDateInvalid, validateDate, isDateInvalid, changeType, expertName, isAuthenticated, selectedTab, createChangeRequestMutation, GetAllProjectIrprDetailsForFreelancerDocument, createChangeRequest, isTestEnv, updateDBProjectRequestStatus, internalPortal, }: EditDateModalProps) => React.JSX.Element;
|
|
22
24
|
export {};
|
|
@@ -67,7 +67,7 @@ const options = [
|
|
|
67
67
|
value: 'Other',
|
|
68
68
|
}
|
|
69
69
|
];
|
|
70
|
-
const EditDateModal = ({ freelancerId, freelancerEmail, project, previousDate, editDate, setEditDate, setIsDateInvalid, validateDate, isDateInvalid, changeType, expertName, isAuthenticated, selectedTab, createChangeRequestMutation, GetAllProjectIrprDetailsForFreelancerDocument, createChangeRequest, isTestEnv }) => {
|
|
70
|
+
const EditDateModal = ({ freelancerId, freelancerEmail, project, previousDate, editDate, setEditDate, setIsDateInvalid, validateDate, isDateInvalid, changeType, expertName, isAuthenticated, selectedTab, createChangeRequestMutation, GetAllProjectIrprDetailsForFreelancerDocument, createChangeRequest, isTestEnv, updateDBProjectRequestStatus, internalPortal, }) => {
|
|
71
71
|
const [date, setDate] = (0, react_1.useState)(null);
|
|
72
72
|
const [loading, setLoading] = (0, react_1.useState)(false);
|
|
73
73
|
const [reason, setReason] = (0, react_1.useState)('');
|
|
@@ -97,14 +97,30 @@ const EditDateModal = ({ freelancerId, freelancerEmail, project, previousDate, e
|
|
|
97
97
|
amEmail: isTestEnv ? "admin@paro.io" : (_a = project === null || project === void 0 ? void 0 : project.paroContact) === null || _a === void 0 ? void 0 : _a.email,
|
|
98
98
|
entityId: Number(project === null || project === void 0 ? void 0 : project.id),
|
|
99
99
|
};
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
100
|
+
if (internalPortal) {
|
|
101
|
+
updateDBProjectRequestStatus({
|
|
102
|
+
variables: {
|
|
103
|
+
input: {
|
|
104
|
+
changeType: changeType,
|
|
105
|
+
newValue: (0, dayjs_1.default)(date).format('MM/DD/YYYY'),
|
|
106
|
+
projectId: parseInt(project === null || project === void 0 ? void 0 : project.id),
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
refetchQueries: [
|
|
110
|
+
{ query: GetAllProjectIrprDetailsForFreelancerDocument, variables: { freelancerId, projectType: 3, activeTabId: selectedTab } }
|
|
111
|
+
]
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
isAuthenticated ? createChangeRequestMutation({
|
|
116
|
+
variables: {
|
|
117
|
+
input: changeRequestDetails
|
|
118
|
+
},
|
|
119
|
+
refetchQueries: [
|
|
120
|
+
{ query: GetAllProjectIrprDetailsForFreelancerDocument, variables: { freelancerId, projectType: 3, activeTabId: selectedTab } }
|
|
121
|
+
]
|
|
122
|
+
}) : yield createChangeRequest(changeRequestDetails);
|
|
123
|
+
}
|
|
108
124
|
(0, react_hot_toast_1.default)(react_1.default.createElement(base_ui_1.Alert, { color: "success", icon: "success", label: `Succesfully submitted ${changeType.charAt(0).toUpperCase() + changeType.slice(1)} Date Change Request` }), {
|
|
109
125
|
position: 'bottom-right',
|
|
110
126
|
style: { borderRadius: '8px' },
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface ProjectDateRequestProps {
|
|
3
|
+
freelancerId: number;
|
|
4
|
+
expertName: string;
|
|
5
|
+
dateInfo: any;
|
|
6
|
+
project: any;
|
|
7
|
+
freelancerEmail: string;
|
|
8
|
+
updateProjectRequestStatus: any;
|
|
9
|
+
userVal: any;
|
|
10
|
+
changeType: string;
|
|
11
|
+
GetAllChangeRequestsForFreelancerDocument: any;
|
|
12
|
+
isStageProd: string;
|
|
13
|
+
GetAllProjectIrprDetailsForFreelancerDocument: any;
|
|
14
|
+
selectedTab: number;
|
|
15
|
+
}
|
|
16
|
+
declare const ProjectDateRequest: ({ freelancerId, expertName, dateInfo, project, freelancerEmail, updateProjectRequestStatus, userVal, changeType, GetAllChangeRequestsForFreelancerDocument, isStageProd, GetAllProjectIrprDetailsForFreelancerDocument, selectedTab, }: ProjectDateRequestProps) => React.JSX.Element;
|
|
17
|
+
export default ProjectDateRequest;
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
35
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
|
+
};
|
|
37
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
+
const react_1 = __importStar(require("react"));
|
|
39
|
+
const base_icons_1 = require("@paro.io/base-icons");
|
|
40
|
+
const base_ui_1 = require("@paro.io/base-ui");
|
|
41
|
+
const dayjs_1 = __importDefault(require("dayjs"));
|
|
42
|
+
const ProjectDateRequest = ({ freelancerId, expertName, dateInfo, project, freelancerEmail, updateProjectRequestStatus, userVal, changeType, GetAllChangeRequestsForFreelancerDocument, isStageProd, GetAllProjectIrprDetailsForFreelancerDocument, selectedTab, }) => {
|
|
43
|
+
const [approveLoading, setApproveLoading] = (0, react_1.useState)(false);
|
|
44
|
+
const [declineLoading, setDeclineLoading] = (0, react_1.useState)(false);
|
|
45
|
+
const isTestEnv = isStageProd !== "prod";
|
|
46
|
+
const hanldeSubmit = (status) => __awaiter(void 0, void 0, void 0, function* () {
|
|
47
|
+
var _a;
|
|
48
|
+
if (status === "Approved") {
|
|
49
|
+
setApproveLoading(true);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
setDeclineLoading(true);
|
|
53
|
+
}
|
|
54
|
+
;
|
|
55
|
+
try {
|
|
56
|
+
yield updateProjectRequestStatus({
|
|
57
|
+
variables: {
|
|
58
|
+
input: {
|
|
59
|
+
projectId: parseInt(project === null || project === void 0 ? void 0 : project.id),
|
|
60
|
+
changeType: dateInfo.changeType,
|
|
61
|
+
dateSubmitted: dateInfo.dateSubmitted,
|
|
62
|
+
changeReason: dateInfo.changeReason,
|
|
63
|
+
entityName: project === null || project === void 0 ? void 0 : project.name,
|
|
64
|
+
freelancerId: freelancerId,
|
|
65
|
+
oldValue: (0, dayjs_1.default)(dateInfo.currentDate).format('MM/DD/YYYY'),
|
|
66
|
+
newValue: (0, dayjs_1.default)(dateInfo.newDate).format('MM/DD/YYYY'),
|
|
67
|
+
status: (status === 'Approved') ? 'Approved' : 'Denied',
|
|
68
|
+
freelancerName: expertName,
|
|
69
|
+
email: isTestEnv ? "admin@paro.io" : freelancerEmail,
|
|
70
|
+
amEmail: isTestEnv ? "admin@paro.io" : (_a = project === null || project === void 0 ? void 0 : project.paroContact) === null || _a === void 0 ? void 0 : _a.email,
|
|
71
|
+
csmEmail: isTestEnv ? "admin@paro.io" : project === null || project === void 0 ? void 0 : project.csmEmail,
|
|
72
|
+
changeRequestId: dateInfo.ID,
|
|
73
|
+
completedBy: userVal === null || userVal === void 0 ? void 0 : userVal.nickname
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
refetchQueries: [
|
|
77
|
+
{ query: GetAllProjectIrprDetailsForFreelancerDocument, variables: { freelancerId, projectType: 3, activeTabId: selectedTab } },
|
|
78
|
+
{ query: GetAllChangeRequestsForFreelancerDocument, variables: { freelancerId } }
|
|
79
|
+
]
|
|
80
|
+
});
|
|
81
|
+
setApproveLoading(false);
|
|
82
|
+
setDeclineLoading(false);
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
setApproveLoading(false);
|
|
86
|
+
setDeclineLoading(false);
|
|
87
|
+
console.log(`Error updating ${dateInfo.changeType}`, error);
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
const calculateDateDifference = (startDate, endDate) => {
|
|
91
|
+
const startMoment = (0, dayjs_1.default)(startDate);
|
|
92
|
+
const endMoment = (0, dayjs_1.default)(endDate);
|
|
93
|
+
const differenceInDays = endMoment === null || endMoment === void 0 ? void 0 : endMoment.diff(startMoment, 'days');
|
|
94
|
+
if (differenceInDays === 0) {
|
|
95
|
+
return 'Same day';
|
|
96
|
+
}
|
|
97
|
+
else if (differenceInDays > 0) {
|
|
98
|
+
return `${differenceInDays} ${differenceInDays === 1 ? 'day' : 'days'} later`;
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
return `${-differenceInDays} ${differenceInDays > 1 || differenceInDays < -1 ? 'days' : 'day'} earlier`;
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
const getProjectRequestType = (type) => {
|
|
105
|
+
if (type === "End Project") {
|
|
106
|
+
return react_1.default.createElement("p", { className: "flex flex-wrap gap-x-1" },
|
|
107
|
+
"The Expert has requested to End the project ", project === null || project === void 0 ? void 0 :
|
|
108
|
+
project.name);
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
return react_1.default.createElement("p", { className: "flex flex-wrap gap-x-1" },
|
|
112
|
+
"Expert is requesting to move this project's ",
|
|
113
|
+
react_1.default.createElement("span", { className: "font-bold" }, dateInfo.changeType),
|
|
114
|
+
" from",
|
|
115
|
+
' ',
|
|
116
|
+
`${(0, dayjs_1.default)(dateInfo.currentDate).format('MM/DD/YYYY')} to ${(0, dayjs_1.default)(dateInfo.newDate).format('MM/DD/YYYY')}`,
|
|
117
|
+
" (",
|
|
118
|
+
calculateDateDifference(dateInfo === null || dateInfo === void 0 ? void 0 : dateInfo.currentDate, dateInfo === null || dateInfo === void 0 ? void 0 : dateInfo.newDate),
|
|
119
|
+
")");
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
return (react_1.default.createElement("div", { className: "border border-solid border-danger rounded-lg w-max p-3 flex flex-row w-max-full flex-wrap gap-x-4 items-center my-2" },
|
|
123
|
+
react_1.default.createElement(base_icons_1.IconExclamation
|
|
124
|
+
//@ts-ignore
|
|
125
|
+
, {
|
|
126
|
+
//@ts-ignore
|
|
127
|
+
stroke: "#EF5360" }),
|
|
128
|
+
getProjectRequestType(changeType),
|
|
129
|
+
react_1.default.createElement(base_ui_1.Button, { label: "Approve", color: "danger", isLoading: approveLoading, onClick: () => { hanldeSubmit("Approved"); } }),
|
|
130
|
+
react_1.default.createElement(base_ui_1.Button, { label: "Decline", color: "", isLoading: declineLoading, onClick: () => { hanldeSubmit("Denied"); } })));
|
|
131
|
+
};
|
|
132
|
+
exports.default = ProjectDateRequest;
|
|
@@ -45,6 +45,7 @@ interface RightCardUIProps {
|
|
|
45
45
|
signedSow: boolean;
|
|
46
46
|
isStageProd: string;
|
|
47
47
|
isRequestReviewEnabled: boolean;
|
|
48
|
+
updateDBProjectRequestStatus: any;
|
|
48
49
|
}
|
|
49
|
-
export declare const RightCardUI: ({ project, expertName, freelancerId, freelancerEmail, isAuthenticated, editEndDate, setEditEndDate, editStartDate, setEditStartDate, showTimeModal, setShowTimeModal, setSingleProjectData, projectData, checkStartDate, activeProject, projectFrequencyType, projectRateType, upcomingProject, selectedTab, showRating, projectTagsMap, updateProjectStatusMutation, GetAllProjectIrprDetailsForFreelancerDocument, updateParoProjectTagsMutation, GetParoProjectsDocument, updateProjectTagReviewStatusMutation, updateProjectStatus, updateProjectTags, getSowLazyQuery, sendParoSupportEmail, createChangeRequestMutation, createChangeRequest, createOrUpdateRatingRequestMutation, submitProjectHoursMutation, getAuth0Roles, submitProjectHoursLambda, createOrUpdateRating, getParoProjectsByClientIdDocument, user, internalPortal, csmUserGroup, clientPortal, signedSow, isStageProd, isRequestReviewEnabled, }: RightCardUIProps) => React.JSX.Element;
|
|
50
|
+
export declare const RightCardUI: ({ project, expertName, freelancerId, freelancerEmail, isAuthenticated, editEndDate, setEditEndDate, editStartDate, setEditStartDate, showTimeModal, setShowTimeModal, setSingleProjectData, projectData, checkStartDate, activeProject, projectFrequencyType, projectRateType, upcomingProject, selectedTab, showRating, projectTagsMap, updateProjectStatusMutation, GetAllProjectIrprDetailsForFreelancerDocument, updateParoProjectTagsMutation, GetParoProjectsDocument, updateProjectTagReviewStatusMutation, updateProjectStatus, updateProjectTags, getSowLazyQuery, sendParoSupportEmail, createChangeRequestMutation, createChangeRequest, createOrUpdateRatingRequestMutation, submitProjectHoursMutation, getAuth0Roles, submitProjectHoursLambda, createOrUpdateRating, getParoProjectsByClientIdDocument, user, internalPortal, csmUserGroup, clientPortal, signedSow, isStageProd, isRequestReviewEnabled, updateDBProjectRequestStatus, }: RightCardUIProps) => React.JSX.Element;
|
|
50
51
|
export {};
|
|
@@ -61,7 +61,7 @@ const TicketModal = ({ ticketModal, setTicketModal }) => {
|
|
|
61
61
|
react_1.default.createElement("p", { className: "font-bold text-md mb-2" }, "Thank you for reaching out to Paro Support, we will contact you within the next business day to follow up on your request."),
|
|
62
62
|
react_1.default.createElement(base_ui_1.Button, { type: "button", onClick: () => { setTicketModal(false); }, label: "OK", className: "mt-4", color: "primary" })));
|
|
63
63
|
};
|
|
64
|
-
const RightCardUI = ({ project, expertName, freelancerId, freelancerEmail, isAuthenticated, editEndDate, setEditEndDate, editStartDate, setEditStartDate, showTimeModal, setShowTimeModal, setSingleProjectData, projectData, checkStartDate, activeProject, projectFrequencyType, projectRateType, upcomingProject, selectedTab, showRating, projectTagsMap, updateProjectStatusMutation, GetAllProjectIrprDetailsForFreelancerDocument, updateParoProjectTagsMutation, GetParoProjectsDocument, updateProjectTagReviewStatusMutation, updateProjectStatus, updateProjectTags, getSowLazyQuery, sendParoSupportEmail, createChangeRequestMutation, createChangeRequest, createOrUpdateRatingRequestMutation, submitProjectHoursMutation, getAuth0Roles, submitProjectHoursLambda, createOrUpdateRating, getParoProjectsByClientIdDocument, user, internalPortal, csmUserGroup, clientPortal, signedSow, isStageProd, isRequestReviewEnabled, }) => {
|
|
64
|
+
const RightCardUI = ({ project, expertName, freelancerId, freelancerEmail, isAuthenticated, editEndDate, setEditEndDate, editStartDate, setEditStartDate, showTimeModal, setShowTimeModal, setSingleProjectData, projectData, checkStartDate, activeProject, projectFrequencyType, projectRateType, upcomingProject, selectedTab, showRating, projectTagsMap, updateProjectStatusMutation, GetAllProjectIrprDetailsForFreelancerDocument, updateParoProjectTagsMutation, GetParoProjectsDocument, updateProjectTagReviewStatusMutation, updateProjectStatus, updateProjectTags, getSowLazyQuery, sendParoSupportEmail, createChangeRequestMutation, createChangeRequest, createOrUpdateRatingRequestMutation, submitProjectHoursMutation, getAuth0Roles, submitProjectHoursLambda, createOrUpdateRating, getParoProjectsByClientIdDocument, user, internalPortal, csmUserGroup, clientPortal, signedSow, isStageProd, isRequestReviewEnabled, updateDBProjectRequestStatus, }) => {
|
|
65
65
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u;
|
|
66
66
|
const [expandClient, setExpandClient] = (0, react_1.useState)(false);
|
|
67
67
|
const [expandSupport, setExpandSupport] = (0, react_1.useState)(false);
|
|
@@ -213,9 +213,9 @@ const RightCardUI = ({ project, expertName, freelancerId, freelancerEmail, isAut
|
|
|
213
213
|
}, isLoading: sowLoading }),
|
|
214
214
|
signedSow &&
|
|
215
215
|
react_1.default.createElement(base_ui_1.Button, { label: "SUBMIT REVIEW", size: "sm", className: "w-full", onClick: () => setOpenReviewModal(true) })),
|
|
216
|
-
react_1.default.createElement("div", { className: "gap-y-1 mt-4" },
|
|
216
|
+
!clientPortal && react_1.default.createElement("div", { className: "gap-y-1 mt-4" },
|
|
217
217
|
react_1.default.createElement("div", { className: "flex flex-row justify-between" },
|
|
218
|
-
react_1.default.createElement("h1", { className: "font-bold text-lg mb-2" },
|
|
218
|
+
react_1.default.createElement("h1", { className: "font-bold text-lg mb-2" }, "Client Contact"),
|
|
219
219
|
react_1.default.createElement("button", { onClick: () => { setExpandClient(!expandClient); }, className: "font-bold text-md mb-2" }, expandClient ? react_1.default.createElement(base_icons_1.IconChevronUp, null) : react_1.default.createElement(base_icons_1.IconChevronDown, null))),
|
|
220
220
|
expandClient && react_1.default.createElement("div", { className: "m-1 overflow-auto" },
|
|
221
221
|
react_1.default.createElement("p", null, (_g = project === null || project === void 0 ? void 0 : project.client) === null || _g === void 0 ? void 0 : _g.name),
|
|
@@ -233,8 +233,8 @@ const RightCardUI = ({ project, expertName, freelancerId, freelancerEmail, isAut
|
|
|
233
233
|
react_1.default.createElement("p", null, (_s = project === null || project === void 0 ? void 0 : project.paroContact) === null || _s === void 0 ? void 0 : _s.phone)),
|
|
234
234
|
react_1.default.createElement(base_ui_1.Button, { label: "CONTACT SUPPORT", size: "sm", className: "max-w-max mt-2", onClick: () => setEmailModal(true) })))),
|
|
235
235
|
react_1.default.createElement(LogTimeModalAuthenticated_1.LogTimeModalAuthenticated, { project: project, freelancerId: freelancerId, showTimeModal: showTimeModal, setShowTimeModal: setShowTimeModal, validateDate: validateDate, setIsDateInvalid: setIsDateInvalid, isDateInvalid: isDateInvalid, setSingleProjectData: setSingleProjectData, projectData: projectData, selectedTab: selectedTab, isAuthenticated: isAuthenticated, submitProjectHoursMutation: submitProjectHoursMutation, GetAllProjectIrprDetailsForFreelancerDocument: GetAllProjectIrprDetailsForFreelancerDocument, getAuth0Roles: getAuth0Roles, submitProjectHoursLambda: submitProjectHoursLambda, user: user }),
|
|
236
|
-
react_1.default.createElement(EditDateModal_1.EditDateModal, { freelancerId: freelancerId, freelancerEmail: freelancerEmail, project: project, previousDate: project === null || project === void 0 ? void 0 : project.startDate, editDate: editStartDate, setEditDate: setEditStartDate, validateDate: validateDate, setIsDateInvalid: setIsDateInvalid, isDateInvalid: isDateInvalid, changeType: "start", expertName: expertName, isAuthenticated: isAuthenticated, selectedTab: selectedTab, createChangeRequestMutation: createChangeRequestMutation, GetAllProjectIrprDetailsForFreelancerDocument: GetAllProjectIrprDetailsForFreelancerDocument, createChangeRequest: createChangeRequest, isTestEnv: isTestEnv }),
|
|
237
|
-
react_1.default.createElement(EditDateModal_1.EditDateModal, { freelancerId: freelancerId, freelancerEmail: freelancerEmail, project: project, previousDate: project === null || project === void 0 ? void 0 : project.endDate, editDate: editEndDate, setEditDate: setEditEndDate, validateDate: validateDate, setIsDateInvalid: setIsDateInvalid, isDateInvalid: isDateInvalid, changeType: "end", expertName: expertName, isAuthenticated: isAuthenticated, selectedTab: selectedTab, createChangeRequestMutation: createChangeRequestMutation, GetAllProjectIrprDetailsForFreelancerDocument: GetAllProjectIrprDetailsForFreelancerDocument, createChangeRequest: createChangeRequest, isTestEnv: isTestEnv }),
|
|
236
|
+
react_1.default.createElement(EditDateModal_1.EditDateModal, { freelancerId: freelancerId, freelancerEmail: freelancerEmail, project: project, previousDate: project === null || project === void 0 ? void 0 : project.startDate, editDate: editStartDate, setEditDate: setEditStartDate, validateDate: validateDate, setIsDateInvalid: setIsDateInvalid, isDateInvalid: isDateInvalid, changeType: "start", expertName: expertName, isAuthenticated: isAuthenticated, selectedTab: selectedTab, createChangeRequestMutation: createChangeRequestMutation, GetAllProjectIrprDetailsForFreelancerDocument: GetAllProjectIrprDetailsForFreelancerDocument, createChangeRequest: createChangeRequest, isTestEnv: isTestEnv, internalPortal: internalPortal, updateDBProjectRequestStatus: updateDBProjectRequestStatus }),
|
|
237
|
+
react_1.default.createElement(EditDateModal_1.EditDateModal, { freelancerId: freelancerId, freelancerEmail: freelancerEmail, project: project, previousDate: project === null || project === void 0 ? void 0 : project.endDate, editDate: editEndDate, setEditDate: setEditEndDate, validateDate: validateDate, setIsDateInvalid: setIsDateInvalid, isDateInvalid: isDateInvalid, changeType: "end", expertName: expertName, isAuthenticated: isAuthenticated, selectedTab: selectedTab, createChangeRequestMutation: createChangeRequestMutation, GetAllProjectIrprDetailsForFreelancerDocument: GetAllProjectIrprDetailsForFreelancerDocument, createChangeRequest: createChangeRequest, isTestEnv: isTestEnv, internalPortal: internalPortal, updateDBProjectRequestStatus: updateDBProjectRequestStatus }),
|
|
238
238
|
react_1.default.createElement(EndProjectModal_1.EndProjectModal, { freelancerId: freelancerId, project: project, expertName: expertName, showConfirmationModal: showConfirmationModal, setShowConfirmationModal: setShowConfirmationModal, projectType: projectType, isAuthenticated: isAuthenticated, selectedTab: selectedTab, projectTagsMap: projectTagsMap, updateProjectStatusMutation: updateProjectStatusMutation, GetAllProjectIrprDetailsForFreelancerDocument: GetAllProjectIrprDetailsForFreelancerDocument, updateParoProjectTagsMutation: updateParoProjectTagsMutation, GetParoProjectsDocument: GetParoProjectsDocument, updateProjectTagReviewStatusMutation: updateProjectTagReviewStatusMutation, updateProjectStatus: updateProjectStatus, updateProjectTags: updateProjectTags }),
|
|
239
239
|
react_1.default.createElement(EmailModal_1.EmailModal, { emailModal: emailModal, setEmailModal: setEmailModal, emailText: emailText, setEmailText: setEmailText, setTicketModal: setTicketModal, project: project, expertName: expertName, sendParoSupportEmail: sendParoSupportEmail, isTestEnv: isTestEnv }),
|
|
240
240
|
react_1.default.createElement(TicketModal, { ticketModal: ticketModal, setTicketModal: setTicketModal }),
|