Commit 2371ffb9 authored by Internship UKSW 2019's avatar Internship UKSW 2019

Initial commit

parent abecd44b
...@@ -8767,6 +8767,11 @@ ...@@ -8767,6 +8767,11 @@
"resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
"integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w=="
}, },
"konva": {
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/konva/-/konva-2.5.1.tgz",
"integrity": "sha512-YdHEWqmbWPieqIZuLx7JFGm9Ui08hSUaSJ2k2Ml8o5giFgJ0WmxAS0DPXIM+Ty2ADRagOHZfXSJ/skwYqqlwgQ=="
},
"last-call-webpack-plugin": { "last-call-webpack-plugin": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz", "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz",
...@@ -11614,6 +11619,14 @@ ...@@ -11614,6 +11619,14 @@
"whatwg-fetch": "^3.0.0" "whatwg-fetch": "^3.0.0"
} }
}, },
"react-avatar-edit": {
"version": "0.8.3",
"resolved": "https://registry.npmjs.org/react-avatar-edit/-/react-avatar-edit-0.8.3.tgz",
"integrity": "sha512-QEedh6DjDCSI7AUsUHHtfhxApCWC5hJAoywxUA5PtUdw03iIjEurgVqPOIt1UBHhU/Zk/9amElRF3oepN9JZSg==",
"requires": {
"konva": "2.5.1"
}
},
"react-dev-utils": { "react-dev-utils": {
"version": "10.0.0", "version": "10.0.0",
"resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-10.0.0.tgz", "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-10.0.0.tgz",
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
"node-gyp": "^6.1.0", "node-gyp": "^6.1.0",
"query-string": "^6.10.1", "query-string": "^6.10.1",
"react": "^16.10.2", "react": "^16.10.2",
"react-avatar-edit": "^0.8.3",
"react-dom": "^16.10.2", "react-dom": "^16.10.2",
"react-expand-collapse": "^0.2.0", "react-expand-collapse": "^0.2.0",
"react-loading": "^2.0.3", "react-loading": "^2.0.3",
......
...@@ -7,7 +7,7 @@ const CreateDocumentRoute = ({ component: Component, ...rest }) => { ...@@ -7,7 +7,7 @@ const CreateDocumentRoute = ({ component: Component, ...rest }) => {
{...rest} {...rest}
render={ render={
props => props =>
localStorage.getItem("user") && localStorage.getItem("loginUserRole").includes("Creator") ? ( localStorage.getItem("user") && JSON.parse(localStorage.getItem('dataLogin')).user_role[0].includes("Creator") ? (
<Component {...props} /> <Component {...props} />
) : ( ) : (
<Redirect to={{ pathname: '/', state: { from: props.location } }} /> <Redirect to={{ pathname: '/', state: { from: props.location } }} />
......
import React, { Component } from 'react';
import axios from 'axios';
const $ = require('jquery');
$.DataTable = require('datatables.net');
export class DataTableApprovalDocument extends Component {
componentDidMount = () => {
this.$el = $(this.el)
var table = this.$el.DataTable({
data: this.props.data,
columns: [
{ title: "No", width: 30 },
{ title: "Code" },
{ title: "Subject" },
{ title: "Status" },
{ title: "Tracking" },
{ title: "Creator" },
],
columnDefs: [
{
searchable: false,
orderable: false,
targets: 0
},
{
orderable: false,
targets: 1,
render: function (data, type, row) {
return "<a class='text-decoration-none' href='#'>" + data + "</a>";
}
},
{
orderable: false,
targets: 2
},
{
orderable: false,
targets: 3
},
{
orderable: false,
targets: 4
},
{
orderable: false,
targets: 5
},
],
order: [[1, "asc"]],
lengthMenu: [[25, 50, 75, 100], [25, 50, 75, 100]]
})
table.on("order.dt search.dt", function () {
table.column(0, { search: "applied", order: "applied" }).nodes().each(function (cell, i) {
cell.innerHTML = i + 1;
});
}).draw();
table.on("click", "a", function (e) {
e.preventDefault();
let data = table.row($(this).parents("tr")).data();
window.open("http://10.10.86.48:3000/previewdocument?subject=" + data[2], "_blank");
})
}
componentWillUnmount = () => {
this.$el.DataTable.destroy(true);
}
render() {
return (
<div>
<table className="display" width="100%" ref={el => this.el = el}></table>
</div>
)
}
}
\ No newline at end of file
...@@ -4,7 +4,7 @@ import axios from 'axios'; ...@@ -4,7 +4,7 @@ import axios from 'axios';
const $ = require('jquery'); const $ = require('jquery');
$.DataTable = require('datatables.net'); $.DataTable = require('datatables.net');
export class DataTableYourDocument extends Component { export class DataTableMyDocument extends Component {
componentDidMount = () => { componentDidMount = () => {
this.$el = $(this.el) this.$el = $(this.el)
var table = this.$el.DataTable({ var table = this.$el.DataTable({
...@@ -16,7 +16,7 @@ export class DataTableYourDocument extends Component { ...@@ -16,7 +16,7 @@ export class DataTableYourDocument extends Component {
{ title: "Status" }, { title: "Status" },
{ title: "Tracking" }, { title: "Tracking" },
{ title: "Creator" }, { title: "Creator" },
{ title: "Withdraw" } { title: "Withdraw", width: 50 }
], ],
columnDefs: [ columnDefs: [
{ {
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
width: 90px; width: 90px;
} }
.button-2 { .button-2 {
width: 100px; width: 120px;
} }
.background-grey { .background-grey {
background: rgb(50, 50, 50); background: rgb(50, 50, 50);
......
This diff is collapsed.
...@@ -17,6 +17,7 @@ class FormCreateUpdateRole extends Component { ...@@ -17,6 +17,7 @@ class FormCreateUpdateRole extends Component {
username: "", username: "",
department: "", department: "",
managername: "", managername: "",
managerloginname: "",
roles: [], roles: [],
email: "", email: "",
rotateClass: true, rotateClass: true,
...@@ -43,7 +44,7 @@ class FormCreateUpdateRole extends Component { ...@@ -43,7 +44,7 @@ class FormCreateUpdateRole extends Component {
} }
this.setState({ this.setState({
userid: dataEdit[0].user_id[0], username: dataEdit[0].user_name[0], userid: dataEdit[0].user_id[0], username: dataEdit[0].user_name[0],
department: dataEdit[0].user_dpt[0], managername: dataEdit[0].manager_name[0], department: dataEdit[0].user_dpt[0], managername: dataEdit[0].manager_name[0], managerloginname: dataEdit[0].manager_loginname[0],
roles: datarow, email: dataEdit[0].email[0], isFetched: true, isEdit: true, validFormUser: true roles: datarow, email: dataEdit[0].email[0], isFetched: true, isEdit: true, validFormUser: true
}) })
} else { } else {
...@@ -140,13 +141,17 @@ class FormCreateUpdateRole extends Component { ...@@ -140,13 +141,17 @@ class FormCreateUpdateRole extends Component {
"user_role": userRole1, "user_role": userRole1,
"manager_name": this.state.managername, "manager_name": this.state.managername,
"email": this.state.email, "email": this.state.email,
"user_id": this.state.userid "user_id": this.state.userid,
"manager_loginname": this.state.managerloginname,
} }
let postDataEdit = js2xmlparser.parse("_putuserupdate_user_id", dataEdit); let postDataEdit = js2xmlparser.parse("_putuserupdate_user_id", dataEdit);
axios.put(process.env.REACT_APP_MAIN_APIURL + '/DocumentManagement/userupdate/' + this.state.userid, postDataEdit, { headers: { 'Content-Type': 'text/xml' } }) axios.put(process.env.REACT_APP_MAIN_APIURL + '/DocumentManagement/userupdate/' + this.state.userid, postDataEdit, { headers: { 'Content-Type': 'text/xml' } })
.then(res => { .then(res => {
if (this.state.email == localStorage.getItem('loginEmail')) { if (this.state.email == JSON.parse(localStorage.getItem('dataLogin')).email[0]) {
localStorage.setItem('loginUserRole', userRole1); let tempData = JSON.parse(localStorage.getItem('dataLogin'));
tempData.user_role.splice(0, 1);
tempData.user_role.push(userRole1);
localStorage.setItem('dataLogin', JSON.stringify(tempData));
} }
alert("User role has been successfully edited"); alert("User role has been successfully edited");
this.props.history.push("/manageuser") this.props.history.push("/manageuser")
...@@ -164,19 +169,14 @@ class FormCreateUpdateRole extends Component { ...@@ -164,19 +169,14 @@ class FormCreateUpdateRole extends Component {
checkDataUser = result.user_dataCollection.user_data; checkDataUser = result.user_dataCollection.user_data;
}) })
if (checkDataUser == undefined) { if (checkDataUser == undefined) {
let uri_email = encodeURIComponent(this.state.email); let responseEmployeeProfile = await axios.get(process.env.REACT_APP_MAIN_APIURL + '/MIP_VN/employee/' + this.state.email, { headers: { 'accept': 'application/xml' } })
let API_token = "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IlpqUm1ZVE13TlRKak9XVTVNbUl6TWpnek5ESTNZMkl5TW1JeVkyRXpNamRoWmpWaU1qYzBaZz09In0.eyJhdWQiOiJodHRwOlwvXC9vcmcud3NvMi5hcGltZ3RcL2dhdGV3YXkiLCJzdWIiOiJhZG1pbkBjYXJib24uc3VwZXIiLCJhcHBsaWNhdGlvbiI6eyJvd25lciI6ImFkbWluIiwidGllciI6IjEwUGVyTWluIiwibmFtZSI6ImFwcGwiLCJpZCI6MTMsInV1aWQiOm51bGx9LCJzY29wZSI6ImFtX2FwcGxpY2F0aW9uX3Njb3BlIGRlZmF1bHQiLCJpc3MiOiJodHRwczpcL1wvMTAuMTAuODguMTI6OTQ0M1wvb2F1dGgyXC90b2tlbiIsInRpZXJJbmZvIjp7IlVubGltaXRlZCI6eyJzdG9wT25RdW90YVJlYWNoIjp0cnVlLCJzcGlrZUFycmVzdExpbWl0IjowLCJzcGlrZUFycmVzdFVuaXQiOm51bGx9fSwia2V5dHlwZSI6IlBST0RVQ1RJT04iLCJzdWJzY3JpYmVkQVBJcyI6W3sic3Vic2NyaWJlclRlbmFudERvbWFpbiI6ImNhcmJvbi5zdXBlciIsIm5hbWUiOiJlbXBsb3llZV9wcm9maWxlIiwiY29udGV4dCI6IlwvZW1weWxcLzEuMC4wIiwicHVibGlzaGVyIjoiYWRtaW4iLCJ2ZXJzaW9uIjoiMS4wLjAiLCJzdWJzY3JpcHRpb25UaWVyIjoiVW5saW1pdGVkIn1dLCJjb25zdW1lcktleSI6ImlqMHNnaWVLVVprdFBTbElkcl9mU2tFanI1a2EiLCJleHAiOjE2MzUyOTk3NDYsImlhdCI6MTU4MDk3ODc0NiwianRpIjoiNDFlM2FlMGYtMmYzZC00NWIzLTllN2YtMjI5YjRiNTkwOWE1In0.ZZ1_-3Z2bnsa5ar7b-QnuNGy95Olh5rQSMifJCTnW09T9omU1Zzql1Wllaey7veC9xy6yi-WxPpPeRee_-UtZdloGE9PCd99rMdNLsNuXWxmN0MvyXjMYqUvOYe9lbXzirE99yQhywa7LzVxpJVccGl42a5HhJ-BHF85IXiSSKK_-ykssK2WNfQhyUySJoz-lUj44-Eur2svbEWTVX6sOaejdwdv3xBFya8WoAAXPaelaE0Fm2SONQdh4DZZx0OdJS794fcYGNKshdTJiAG7Kau1jQMjy6-Pa3fv8wpFxV7GQuQy24TeTBo3jNxX2Fu5b2-P_YFIgA1KuqSM9Fnp2Q";
fetch('http://10.10.88.12:8280/empyl/1.0.0/employee/' + uri_email, {
headers: { 'Authorization': API_token }
})
.then(response => response.text())
.then(text => {
let dataEmployee; let dataEmployee;
parseString(text, function (err, result) { parseString(responseEmployeeProfile.data, function (err, result) {
dataEmployee = result.VU_EmployeeMACCollection.VU_EmployeeMAC; dataEmployee = result.VU_EmployeeMACCollection.VU_EmployeeMAC;
}) })
if (dataEmployee != undefined) { if (dataEmployee != undefined) {
let userRole2 = ""; let userRole2 = "";
let manager_loginname = dataEmployee[0].ManagerLoginName[0] + "";
for (let i = 0; i < this.state.roles.length; i++) { for (let i = 0; i < this.state.roles.length; i++) {
if (i > 0) { if (i > 0) {
userRole2 = userRole2 + ", "; userRole2 = userRole2 + ", ";
...@@ -184,10 +184,12 @@ class FormCreateUpdateRole extends Component { ...@@ -184,10 +184,12 @@ class FormCreateUpdateRole extends Component {
userRole2 = userRole2 + this.state.roles[i]; userRole2 = userRole2 + this.state.roles[i];
} }
let dataUsers = { let dataUsers = {
"user_id": dataEmployee[0].MIPEmpNo[0],
"user_name": dataEmployee[0].EmpFullName[0], "user_name": dataEmployee[0].EmpFullName[0],
"user_dpt": dataEmployee[0].Department[0], "user_dpt": dataEmployee[0].Department[0],
"user_role": userRole2, "user_role": userRole2,
"manager_name": dataEmployee[0].ManagerName[0], "manager_name": dataEmployee[0].ManagerName[0],
"manager_loginname": manager_loginname.toLowerCase(),
"email": this.state.email "email": this.state.email
} }
let postDataUsers = js2xmlparser.parse("_postuserinsert", dataUsers); let postDataUsers = js2xmlparser.parse("_postuserinsert", dataUsers);
...@@ -197,11 +199,30 @@ class FormCreateUpdateRole extends Component { ...@@ -197,11 +199,30 @@ class FormCreateUpdateRole extends Component {
alert("User role has been successfully added"); alert("User role has been successfully added");
this.props.history.push("/manageuser") this.props.history.push("/manageuser")
}) })
.catch(err => {
this.setState({ submitForm: false })
alert(err + "");
})
} else { } else {
this.setState({ submitForm: false }) this.setState({ submitForm: false })
alert("Email is invalid!") alert("Email is invalid!")
} }
}) // let uri_email = encodeURIComponent(this.state.email);
// let API_token = "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IlpqUm1ZVE13TlRKak9XVTVNbUl6TWpnek5ESTNZMkl5TW1JeVkyRXpNamRoWmpWaU1qYzBaZz09In0.eyJhdWQiOiJodHRwOlwvXC9vcmcud3NvMi5hcGltZ3RcL2dhdGV3YXkiLCJzdWIiOiJhZG1pbkBjYXJib24uc3VwZXIiLCJhcHBsaWNhdGlvbiI6eyJvd25lciI6ImFkbWluIiwidGllciI6IjEwUGVyTWluIiwibmFtZSI6ImFwcGwiLCJpZCI6MTMsInV1aWQiOm51bGx9LCJzY29wZSI6ImFtX2FwcGxpY2F0aW9uX3Njb3BlIGRlZmF1bHQiLCJpc3MiOiJodHRwczpcL1wvMTAuMTAuODguMTI6OTQ0M1wvb2F1dGgyXC90b2tlbiIsInRpZXJJbmZvIjp7IlVubGltaXRlZCI6eyJzdG9wT25RdW90YVJlYWNoIjp0cnVlLCJzcGlrZUFycmVzdExpbWl0IjowLCJzcGlrZUFycmVzdFVuaXQiOm51bGx9fSwia2V5dHlwZSI6IlBST0RVQ1RJT04iLCJzdWJzY3JpYmVkQVBJcyI6W3sic3Vic2NyaWJlclRlbmFudERvbWFpbiI6ImNhcmJvbi5zdXBlciIsIm5hbWUiOiJlbXBsb3llZV9wcm9maWxlIiwiY29udGV4dCI6IlwvZW1weWxcLzEuMC4wIiwicHVibGlzaGVyIjoiYWRtaW4iLCJ2ZXJzaW9uIjoiMS4wLjAiLCJzdWJzY3JpcHRpb25UaWVyIjoiVW5saW1pdGVkIn1dLCJjb25zdW1lcktleSI6ImlqMHNnaWVLVVprdFBTbElkcl9mU2tFanI1a2EiLCJleHAiOjE2MzUyOTk3NDYsImlhdCI6MTU4MDk3ODc0NiwianRpIjoiNDFlM2FlMGYtMmYzZC00NWIzLTllN2YtMjI5YjRiNTkwOWE1In0.ZZ1_-3Z2bnsa5ar7b-QnuNGy95Olh5rQSMifJCTnW09T9omU1Zzql1Wllaey7veC9xy6yi-WxPpPeRee_-UtZdloGE9PCd99rMdNLsNuXWxmN0MvyXjMYqUvOYe9lbXzirE99yQhywa7LzVxpJVccGl42a5HhJ-BHF85IXiSSKK_-ykssK2WNfQhyUySJoz-lUj44-Eur2svbEWTVX6sOaejdwdv3xBFya8WoAAXPaelaE0Fm2SONQdh4DZZx0OdJS794fcYGNKshdTJiAG7Kau1jQMjy6-Pa3fv8wpFxV7GQuQy24TeTBo3jNxX2Fu5b2-P_YFIgA1KuqSM9Fnp2Q";
// fetch('http://10.10.88.12:8280/empyl/1.0.0/employee/' + uri_email, {
// headers: { 'Authorization': API_token }
// })
// .then(response => response.text())
// .then(text => {
// let dataEmployee;
// parseString(text, function (err, result) {
// dataEmployee = result.VU_EmployeeMACCollection.VU_EmployeeMAC;
// })
// console.log("dataEmployee", dataEmployee)
// })
// .catch(err => {
// alert(err + "");
// })
} else { } else {
this.setState({ submitForm: false }) this.setState({ submitForm: false })
alert("Email is already exist"); alert("Email is already exist");
......
...@@ -14,6 +14,7 @@ class FormLogin extends Component { ...@@ -14,6 +14,7 @@ class FormLogin extends Component {
submitted: false, submitted: false,
loggingIn: false, loggingIn: false,
isLoginFailed: false, isLoginFailed: false,
pictures: [],
errMessage: "" errMessage: ""
} }
} }
...@@ -49,9 +50,15 @@ class FormLogin extends Component { ...@@ -49,9 +50,15 @@ class FormLogin extends Component {
dataUser = result.user_dataCollection.user_data; dataUser = result.user_dataCollection.user_data;
}) })
if (dataUser != undefined) { if (dataUser != undefined) {
localStorage.setItem('loginUserDpt', dataUser[0].user_dpt[0]); let responseDataProfile = await axios.get('/profile', {
localStorage.setItem('loginEmail', dataUser[0].email[0]); params: {
localStorage.setItem('loginUserRole', dataUser[0].user_role[0]); uid: responseDataLoginLDAP.data["Login Name"],
token: responseDataLoginLDAP.data["Token"],
}
})
if (responseDataProfile != undefined) {
localStorage.setItem('dataProfile', JSON.stringify(responseDataProfile.data));
localStorage.setItem('dataLogin', JSON.stringify(dataUser[0]));
let store = createStore(sessionReducer); let store = createStore(sessionReducer);
let todoAction = { type: "add_session", payload: responseDataLoginLDAP.data }; let todoAction = { type: "add_session", payload: responseDataLoginLDAP.data };
store.dispatch(todoAction); store.dispatch(todoAction);
...@@ -59,6 +66,9 @@ class FormLogin extends Component { ...@@ -59,6 +66,9 @@ class FormLogin extends Component {
} else { } else {
this.setState({ isLoginFailed: true, loggingIn: false, errMessage: "Your account is not Registered!" }) this.setState({ isLoginFailed: true, loggingIn: false, errMessage: "Your account is not Registered!" })
} }
} else {
this.setState({ isLoginFailed: true, loggingIn: false, errMessage: "Your account is not Registered!" })
}
} }
} catch (error) { } catch (error) {
this.setState({ isLoginFailed: true, loggingIn: false, errMessage: "" + error }) this.setState({ isLoginFailed: true, loggingIn: false, errMessage: "" + error })
......
...@@ -7,7 +7,7 @@ const ManageUserRoute = ({ component: Component, ...rest }) => { ...@@ -7,7 +7,7 @@ const ManageUserRoute = ({ component: Component, ...rest }) => {
{...rest} {...rest}
render={ render={
props => props =>
localStorage.getItem("user") && localStorage.getItem("loginUserRole").includes("Admin") ? ( localStorage.getItem("user") && JSON.parse(localStorage.getItem('dataLogin')).user_role[0].includes("Admin") ? (
<Component {...props} /> <Component {...props} />
) : ( ) : (
<Redirect to={{ pathname: '/', state: { from: props.location } }} /> <Redirect to={{ pathname: '/', state: { from: props.location } }} />
......
This diff is collapsed.
...@@ -2,41 +2,70 @@ import React, { Component } from 'react'; ...@@ -2,41 +2,70 @@ import React, { Component } from 'react';
import { Button } from 'reactstrap'; import { Button } from 'reactstrap';
import axios from 'axios'; import axios from 'axios';
import Navbar1 from './Navbar'; import Navbar1 from './Navbar';
import { DataTableYourDocument } from './DataTableYourDocument'; import { DataTableMyDocument } from './DataTableMyDocument';
import { DataTableApprovalDocument } from './DataTableApprovalDocument';
class YourDocument extends Component { class YourDocument extends Component {
constructor(props) { constructor(props) {
super(props) super(props)
this.state = { this.state = {
fetchStatus: false, fetchStatus: false,
dataDocument: [] dataDocument: [],
dataApprovalDocument: [],
} }
} }
componentDidMount = async () => { componentDidMount = async () => {
try { try {
let response1 = await axios.get(process.env.REACT_APP_MAIN_APIURL + '/DocumentManagement/userkey/' + JSON.parse(localStorage.getItem("user")).Email, { headers: { 'accept': 'application/xml' } });
var parseString = require('xml2js').parseString; var parseString = require('xml2js').parseString;
let user_id; let user_id = JSON.parse(localStorage.getItem("dataLogin")).user_id[0];
parseString(response1.data, function (err, result) { let responseMyDocument = await axios.get(process.env.REACT_APP_MAIN_APIURL + '/DocumentManagement/mydocument/' + user_id, { headers: { 'accept': 'application/xml' } });
user_id = result.user_dataCollection.user_data[0].user_id[0]; let dataMyDocument;
parseString(responseMyDocument.data, function (err, result) {
dataMyDocument = result.documentCollection.document;
}) })
let response2 = await axios.get(process.env.REACT_APP_MAIN_APIURL + '/DocumentManagement/yourdocument/' + user_id, { headers: { 'accept': 'application/xml' } }); if (dataMyDocument != undefined) {
let data; for (let i = 0; i < dataMyDocument.length; i++) {
parseString(response2.data, function (err, result) {
data = result.documentCollection.document;
})
if (data != undefined) {
for (let i = 0; i < data.length; i++) {
let datarow = []; let datarow = [];
datarow.push(""); datarow.push("");
datarow.push(data[i].doc_code[0]); datarow.push(dataMyDocument[i].doc_code[0]);
datarow.push(data[i].subject[0]); datarow.push(dataMyDocument[i].subject[0]);
datarow.push(data[i].doc_status[0]); datarow.push(dataMyDocument[i].doc_status[0]);
datarow.push(data[i].tracking[0]); datarow.push(dataMyDocument[i].tracking[0] + " - " + JSON.parse(dataMyDocument[i].approver[0]).EmpFullName);
datarow.push(JSON.parse(localStorage.getItem("user"))["Full Name"]) datarow.push(JSON.parse(localStorage.getItem("user"))["Full Name"])
this.state.dataDocument.push(datarow); this.state.dataDocument.push(datarow);
} }
} }
let responseDataUser = await axios.get(process.env.REACT_APP_MAIN_APIURL + '/DocumentManagement/user', { headers: { 'accept': 'application/xml' } });
let dataUser;
parseString(responseDataUser.data, function (err, result) {
dataUser = result.user_dataCollection.user_data;
})
let responseApprovalDocument = await axios.get(process.env.REACT_APP_MAIN_APIURL + '/DocumentManagement/approvaldocument', { headers: { 'accept': 'application/xml' } });
let dataApprovalDocument;
parseString(responseApprovalDocument.data, function (err, result) {
dataApprovalDocument = result.documentCollection.document;
})
if (dataApprovalDocument != undefined) {
for (let i = 0; i < dataApprovalDocument.length; i++) {
if (JSON.parse(localStorage.getItem("dataProfile")).LoginName == JSON.parse(dataApprovalDocument[i].approver[0]).LoginName) {
let datarow = [];
let user_name;
for (let j = 0; j < dataUser.length; j++) {
if (dataUser[i].user_id[0] == dataApprovalDocument[i].user_id[0]) {
user_name = dataUser[i].user_name[0];
break;
}
}
datarow.push("");
datarow.push(dataApprovalDocument[i].doc_code[0]);
datarow.push(dataApprovalDocument[i].subject[0]);
datarow.push(dataApprovalDocument[i].doc_status[0]);
datarow.push(dataApprovalDocument[i].tracking[0] + " - " + JSON.parse(dataApprovalDocument[i].approver[0]).EmpFullName);
datarow.push(user_name)
this.state.dataApprovalDocument.push(datarow);
}
}
}
this.setState({ fetchStatus: true }) this.setState({ fetchStatus: true })
} catch (error) { } catch (error) {
this.setState({ fetchStatus: true }) this.setState({ fetchStatus: true })
...@@ -51,12 +80,30 @@ class YourDocument extends Component { ...@@ -51,12 +80,30 @@ class YourDocument extends Component {
<div className="container-fluid"> <div className="container-fluid">
<div className="form-group row"> <div className="form-group row">
<div className="col-xl-12 col-lg-12 col-md-12 col-sm-12"> <div className="col-xl-12 col-lg-12 col-md-12 col-sm-12">
<Button className="center-block" color="primary" href="/formcreatedocument" disabled={ !localStorage.getItem("loginUserRole").includes("Creator") }>Create New Document</Button> <Button className="center-block" color="primary" href="/formcreatedocument" disabled={!JSON.parse(localStorage.getItem('dataLogin')).user_role[0].includes("Creator")}>Create New Document</Button>
</div>
</div>
{
this.state.fetchStatus == true && JSON.parse(localStorage.getItem('dataLogin')).user_role[0].includes("Creator") &&
<div>
<div className="form-group row">
<div className="col-xl-12 col-lg-12 col-md-12 col-sm-12">
<h3>My Document</h3>
</div>
</div> </div>
<DataTableMyDocument data={this.state.dataDocument}></DataTableMyDocument>
</div> </div>
}
{ {
this.state.fetchStatus == true && this.state.fetchStatus == true && JSON.parse(localStorage.getItem('dataLogin')).user_role[0].includes("Approver") &&
<DataTableYourDocument data={this.state.dataDocument}></DataTableYourDocument> <div>
<div className="form-group row">
<div className="col-xl-12 col-lg-12 col-md-12 col-sm-12">
<h3>Approval Document</h3>
</div>
</div>
<DataTableApprovalDocument data={this.state.dataApprovalDocument}></DataTableApprovalDocument>
</div>
} }
</div> </div>
</div> </div>
......
...@@ -7,10 +7,11 @@ const YourDocumentRoute = ({ component: Component, ...rest }) => { ...@@ -7,10 +7,11 @@ const YourDocumentRoute = ({ component: Component, ...rest }) => {
{...rest} {...rest}
render={ render={
props => props =>
localStorage.getItem("user") && (localStorage.getItem("loginUserRole").includes("Approver") || localStorage.getItem("user") && (
localStorage.getItem("loginUserRole").includes("Compliance Officer") || JSON.parse(localStorage.getItem('dataLogin')).user_role[0].includes("Approver") ||
localStorage.getItem("loginUserRole").includes("Creator") || JSON.parse(localStorage.getItem('dataLogin')).user_role[0].includes("Compliance Officer") ||
localStorage.getItem("loginUserRole").includes("Manager Representative")) ? ( JSON.parse(localStorage.getItem('dataLogin')).user_role[0].includes("Creator") ||
JSON.parse(localStorage.getItem('dataLogin')).user_role[0].includes("Manager Representative")) ? (
<Component {...props} /> <Component {...props} />
) : ( ) : (
<Redirect to={{ pathname: '/', state: { from: props.location } }} /> <Redirect to={{ pathname: '/', state: { from: props.location } }} />
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment