UNPKG

ui5_easy_use

Version:

CLI tool for SAP ui5 and SAPUI5 projects to initialize apps, generate pages, insert form and table components, manage routing, and automate i18n bindings

243 lines (203 loc) 10.5 kB
sap.ui.define([ "sap/ui/core/mvc/Controller", "sap/ui/model/json/JSONModel" ], function (Controller, JSONModel) { "use strict"; return Controller.extend("${ez5.appName}.utilities.UserService", { constructor: function (currentController, userId) { this.userId = userId; this._currentController = currentController; this.userinfoFullObj = null; }, getUserinfoFullObj: async function () { if (!this.userId) { return false; } const mModel = this._currentController.getModel("v21"); try { const userDetailurl = `${mModel.sServiceUrl}/User?$filter=userId eq '${this.userId}'&$expand=manager&$format=json`; const response = await fetch(userDetailurl); const jobData = await response.json(); return jobData.d.results[0]; } catch (error) { console.error("Failed to fetch roles Details", error); } }, getUserInfo: async function () { this.userinfoFullObj = await this.getUserinfoFullObj(); if (!this.userinfoFullObj) { console.error("---------------- ##No User Found!!!!## ----------------"); return false; } this.userInfo = { empId: this.userinfoFullObj?.userId || Number(this.userId), userEmail: this.userinfoFullObj?.username || "Damy Data", userLocation: this.userinfoFullObj?.city || "Damy Data", displayName: `${this.userinfoFullObj?.displayName}` || "Damy Data", // displayName: `${this.userinfoFullObj?.displayName}(${this.userinfoFullObj?.userId})` || "Damy Data", position: this.userinfoFullObj?.title || "Damy Data", grade: this.userinfoFullObj?.payGrade || "Damy Data", division: this.userinfoFullObj?.division || "Damy Data", department: this.userinfoFullObj?.department || "Damy Data", city: this.userinfoFullObj?.city || "Damy Data", managerName: this.userinfoFullObj?.manager?.displayName || "Damy Data", managerId: this.userinfoFullObj?.manager?.userId || "Damy Data", managerEmail: this.userinfoFullObj?.manager?.username || "Damy Data", }; return this.userInfo; }, getTaskDetails: function (userInfo, status, step, sendTo, sendToName) { const isMangeerExist = Boolean(userInfo?.managerName && userInfo?.managerId); status = (!isMangeerExist && status === "Pending") ? "Approved" : status; const namesSendtoXForUni = this.formatSendToNames(userInfo.managerId, userInfo.managerName); const oResourceBundle = this._currentController.getModel("i18n").getResourceBundle(); const statusTextsi18n = { textForwardedTo: oResourceBundle.getText("ForwardedTo"), textApprovedBy: oResourceBundle.getText("ApprovedBy"), textRejectedBy: oResourceBundle.getText("RejectedBy"), textReturnedBy: oResourceBundle.getText("ReturnedBy"), textAssignedBy: oResourceBundle.getText("AssignedBy"), textReAssignedBy: oResourceBundle.getText("ReAssignedBy"), textWorkInProgressBy: oResourceBundle.getText("WorkInProgressBy"), textCompletedBy: oResourceBundle.getText("CompletedBy"), textClosedBy: oResourceBundle.getText("ClosedBy") }; const detailsMap = { "Pending": { statusDisplay: isMangeerExist ? `${statusTextsi18n.textForwardedTo}: ${userInfo.managerName}(${userInfo.managerId})` : `${statusTextsi18n.textForwardedTo}: ${sendToName}(${sendTo})`, sendto: isMangeerExist ? userInfo.managerId : sendTo, sendToName: isMangeerExist ? namesSendtoXForUni : sendToName, steps: 1 }, "Approved": { statusDisplay: `${statusTextsi18n.textApprovedBy}: ${userInfo?.displayName}(${userInfo?.empId})`, sendto: sendTo, sendToName: sendToName, steps: step + 1 }, "Rejected": { statusDisplay: `${statusTextsi18n.textForwardedTo}: ${userInfo?.displayName}(${userInfo?.empId})`, sendto: '', sendToName: '', steps: 100 }, "Returned": { statusDisplay: `${statusTextsi18n.textReturnedBy}: ${userInfo?.displayName}(${userInfo?.empId})`, sendto: sendTo, sendToName: sendToName, steps: 0 }, "Assigned": { statusDisplay: `${statusTextsi18n.textAssignedBy}: ${userInfo?.displayName}(${userInfo?.empId})`, sendto: sendTo, sendToName: sendToName, steps: step + 1 }, "ReAssignee": { statusDisplay: `${statusTextsi18n.textReAssignedBy}: ${userInfo?.displayName}(${userInfo?.empId})`, sendto: sendTo, sendToName: sendToName, steps: step }, "WorkInProgress": { statusDisplay: `${statusTextsi18n.textWorkInProgressBy}: ${userInfo?.displayName}(${userInfo?.empId})`, sendto: sendTo, sendToName: sendToName, steps: step }, "Completed": { statusDisplay: `${statusTextsi18n.textCompletedBy}: ${userInfo?.displayName}(${userInfo?.empId})`, sendto: sendTo, sendToName: sendToName, steps: 99 }, "Closed": { statusDisplay: `${statusTextsi18n.textClosedBy}: ${userInfo?.displayName}(${userInfo?.empId})`, sendto: '', sendToName: '', steps: 100 } }; return detailsMap[status]; }, getRequesteData: async function (obj) { const status = obj?.status; const status2 = obj?.status2 || status; const sendTo = obj?.sendTo; const sendToName = obj?.sendToName; const step = obj?.step; const lastActionBy = obj?.lastActionBy; const userInfo = this.userInfo || {}; const workFlow = this.getTaskDetails(userInfo, status, step, sendTo, sendToName); return { Status: status == "ReAssignee" ? status2 : status, // This will be one of: Pending, Approved, Rejected, Returned, Closed Status2: status2, StatusDisplay: workFlow?.statusDisplay || "", Sendto: workFlow?.sendto, SendtoName: workFlow?.sendToName, Steps: workFlow?.steps, LastActionBy: status == 'WorkInProgress' ? lastActionBy : `${userInfo.displayName || "Unknown"}(${userInfo.empId || "Unknown"})`, LastActionDate: new Date(), AssignedDate: new Date(), // Renamed from assigned_date EscalationId: status == 'Approved' ? obj.escalationId : "", EscalationLevelId: obj.escalationLevelId }; }, getRequesterData: async function () { const userInfo = this.userInfo; return { RequesterId: userInfo?.empId, // Renamed from requester_id RequesterName: userInfo?.displayName, // Renamed from requester_name RequesterPosition: userInfo?.jobCode, // Renamed from requester_position RequesterSection: userInfo?.department, // Renamed from requester_section RequesterDept: userInfo?.division, // Renamed from requester_dept RequesterLocation: userInfo?.city, // Renamed from requester_location } }, getUserInfoWithRequestTamp: async function (obj) { const requesteData = await this.getRequesteData(obj?.RequesteData); const requesterData = obj.RequesteData.status == "Pending" ? await this.getRequesterData() : obj?.RequesterData; return { ...requesteData, ...requesterData }; }, getRequestHistoryObj: async function (Obj) { const userInfo = this.userInfo || {}; if (!userInfo) { return false; } const ProcessedId = userInfo.empId || 'Unknown'; const ProcessedBy = userInfo.displayName || 'Unknown User'; const RequestId = Obj?.RequestId || '0000000000'; const SendtoName = Obj?.SendtoName; const CommentZ = Obj?.Status == "Pending" ? `New Request.` : Obj?.CommentZ || "--"; const SeqId = Obj?.SeqId; const Status = Obj?.Status; const AdjustedStatus = Status === 'Pending' ? 'Submitted' : Status; return { SeqId: SeqId ? SeqId + 1 : 1, RequestId: RequestId, CommentZ: CommentZ, Status: Status, ProcessedId: ProcessedId, ProcessedBy: ProcessedBy, ActionDateTime: new Date(), Action: `${AdjustedStatus} by: ${ProcessedBy}(${ProcessedId})`, SendtoName: SendtoName, }; }, formatSendToNames: function (sIds, sNames) { if (!sIds || !sNames) return ""; const idArray = sIds.split(", "); const nameArray = sNames.split(", "); if (idArray.length !== nameArray.length) return ""; const combinedArray = nameArray.map((name, index) => { const firstNameLastName = name.split(" ").slice(0, 2).join(" "); return `${firstNameLastName} (${idArray[index]})`; }); return combinedArray.join(", "); }, }); });