@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.
Files changed (33) hide show
  1. package/lib/components/EarningsTracker/ActiveProjectCard.d.ts +52 -52
  2. package/lib/components/EarningsTracker/ActiveProjectCard.js +161 -161
  3. package/lib/components/EarningsTracker/CenterCardUI.d.ts +13 -13
  4. package/lib/components/EarningsTracker/CenterCardUI.js +134 -134
  5. package/lib/components/EarningsTracker/EarningsTracker.d.ts +52 -52
  6. package/lib/components/EarningsTracker/EarningsTracker.js +504 -504
  7. package/lib/components/EarningsTracker/EditDateModal.d.ts +22 -22
  8. package/lib/components/EarningsTracker/EditDateModal.js +149 -149
  9. package/lib/components/EarningsTracker/EmailModal.d.ts +14 -14
  10. package/lib/components/EarningsTracker/EmailModal.js +79 -79
  11. package/lib/components/EarningsTracker/EndProjectModal.d.ts +56 -56
  12. package/lib/components/EarningsTracker/EndProjectModal.js +221 -221
  13. package/lib/components/EarningsTracker/LeftCardUI.d.ts +18 -18
  14. package/lib/components/EarningsTracker/LeftCardUI.js +189 -189
  15. package/lib/components/EarningsTracker/LogTimeModalAuthenticated.d.ts +52 -52
  16. package/lib/components/EarningsTracker/LogTimeModalAuthenticated.js +358 -358
  17. package/lib/components/EarningsTracker/ProgressBar.d.ts +4 -4
  18. package/lib/components/EarningsTracker/ProgressBar.js +62 -62
  19. package/lib/components/EarningsTracker/ReviewRequestModal.d.ts +17 -17
  20. package/lib/components/EarningsTracker/ReviewRequestModal.js +130 -130
  21. package/lib/components/EarningsTracker/RightCardUI.d.ts +46 -46
  22. package/lib/components/EarningsTracker/RightCardUI.js +231 -231
  23. package/lib/components/EarningsTracker/index.d.ts +1 -1
  24. package/lib/components/EarningsTracker/index.js +5 -5
  25. package/lib/components/ProjectCard/ActiveProjectCard.d.ts +5 -1
  26. package/lib/components/ProjectCard/ActiveProjectCard.js +32 -9
  27. package/lib/components/ProjectCard/EditDateModal.d.ts +3 -1
  28. package/lib/components/ProjectCard/EditDateModal.js +25 -9
  29. package/lib/components/ProjectCard/ProjectDateRequest.d.ts +17 -0
  30. package/lib/components/ProjectCard/ProjectDateRequest.js +132 -0
  31. package/lib/components/ProjectCard/RightCardUI.d.ts +2 -1
  32. package/lib/components/ProjectCard/RightCardUI.js +5 -5
  33. 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 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, }) => {
101
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
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 / ((_d = project === null || project === void 0 ? void 0 : project.rating) === null || _d === void 0 ? void 0 : _d.length)).toFixed(1));
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)((_f = (_e = project === null || project === void 0 ? void 0 : project.rating) === null || _e === void 0 ? void 0 : _e[0]) === null || _f === void 0 ? void 0 : _f.createdAt.replace('Z', '')).format('YYYY-MM-DD HH:mm:ss'), 'hours') > 48;
128
- const freelancerName = (_j = (_h = (_g = project === null || project === void 0 ? void 0 : project.projectScope) === null || _g === void 0 ? void 0 : _g.freelancer) === null || _h === void 0 ? void 0 : _h.name) !== null && _j !== void 0 ? _j : ((_m = (_l = (_k = project === null || project === void 0 ? void 0 : project.projectScope) === null || _k === void 0 ? void 0 : _k.freelancer) === null || _l === void 0 ? void 0 : _l.freelancerProfile) === null || _m === void 0 ? void 0 : _m.firstName) + ' ' + ((_q = (_p = (_o = project === null || project === void 0 ? void 0 : project.projectScope) === null || _o === void 0 ? void 0 : _o.freelancer) === null || _p === void 0 ? void 0 : _p.freelancerProfile) === null || _q === void 0 ? void 0 : _q.lastName);
129
- const displayName = clientPortal ? freelancerName : (_r = project === null || project === void 0 ? void 0 : project.client) === null || _r === void 0 ? void 0 : _r.name;
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" }, `${(_s = project === null || project === void 0 ? void 0 : project.name) !== null && _s !== void 0 ? _s : "Project"} ${(singleProjectData === null || singleProjectData === void 0 ? void 0 : singleProjectData.minFloorHours) ? "WITH" : "WITHOUT"} a min floor.`)),
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
- isAuthenticated ? createChangeRequestMutation({
101
- variables: {
102
- input: changeRequestDetails
103
- },
104
- refetchQueries: [
105
- { query: GetAllProjectIrprDetailsForFreelancerDocument, variables: { freelancerId, projectType: 3, activeTabId: selectedTab } }
106
- ]
107
- }) : yield createChangeRequest(changeRequestDetails);
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" }, clientPortal ? "AE Information" : "Client Contact"),
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 }),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paro.io/expert-shared-components",
3
- "version": "1.9.9",
3
+ "version": "1.9.11",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {