Commit dbbe60b5 authored by Internship UKSW 2019's avatar Internship UKSW 2019

Initial commit

parent 1b813cfe
...@@ -41,13 +41,16 @@ body { ...@@ -41,13 +41,16 @@ body {
} }
.background-grey2 { .background-grey2 {
background: rgb(85, 85, 85); background: rgb(85, 85, 85);
width: 100%; height: 100%;
} }
.scrolling-wrapper { .scrolling-wrapper {
overflow-x: scroll; overflow-x: scroll;
overflow-y: hidden; overflow-y: hidden;
white-space: nowrap; white-space: nowrap;
} }
.border-bottom{
border-bottom: 1px solid black;
}
.headerPreview { .headerPreview {
width: 21cm; width: 21cm;
margin: 0 auto; margin: 0 auto;
...@@ -66,30 +69,23 @@ body { ...@@ -66,30 +69,23 @@ body {
/* overflow-y: scroll; */ /* overflow-y: scroll; */
box-sizing: border-box; box-sizing: border-box;
font-size: 12pt; font-size: 12pt;
} page-break-after: always;
}
@media print { .A4-2 {
.page-break { background: white;
display: block; width: 21cm;
page-break-before: always; /* height: 29.7cm; */
}
}
@media print {
body {
margin: 0;
padding: 0;
}
.A4 {
box-shadow: none;
margin: 0;
width: auto;
height: auto;
}
.noprint {
display: none;
}
.enable-print {
display: block; display: block;
} margin: 0 auto;
} padding: 50px 70px;
\ No newline at end of file margin-bottom: 0.5cm;
/* box-shadow: 0 0 0.5cm rgba(0, 0, 0, 0.5); */
/* overflow-y: scroll; */
box-sizing: border-box;
font-size: 12pt;
page-break-after: always;
}
.footer-page {
position: absolute;
top: 29cm;
}
\ No newline at end of file
This diff is collapsed.
...@@ -745,6 +745,7 @@ class FormCreate extends Component { ...@@ -745,6 +745,7 @@ class FormCreate extends Component {
parseString(responseDataManager.data, function (err, result) { parseString(responseDataManager.data, function (err, result) {
dataApprover = result.VU_EmployeeMACCollection.VU_EmployeeMAC; dataApprover = result.VU_EmployeeMACCollection.VU_EmployeeMAC;
}) })
if (dataApprover != undefined) {
let information = { let information = {
purpose: this.state.purpose, purpose: this.state.purpose,
scopes: this.state.scopes, scopes: this.state.scopes,
...@@ -872,27 +873,29 @@ class FormCreate extends Component { ...@@ -872,27 +873,29 @@ class FormCreate extends Component {
} }
let postDataTrail = js2xmlparser.parse("_posttrailinsert", dataTrail); let postDataTrail = js2xmlparser.parse("_posttrailinsert", dataTrail);
let responseInsertTrail = await axios.post(process.env.REACT_APP_MAIN_APIURL + '/DocumentManagement/trailinsert', postDataTrail, { headers: { 'Content-Type': 'text/xml' } }) let responseInsertTrail = await axios.post(process.env.REACT_APP_MAIN_APIURL + '/DocumentManagement/trailinsert', postDataTrail, { headers: { 'Content-Type': 'text/xml' } })
// //Send Email Notification //Send Email Notification
// let postdataEmail = { let postdataEmail = {
// "subject": "Permintaan Review dan Approval Dokumen", "subject": "Permintaan Review dan Approval Dokumen",
// "emailcc": JSON.parse(localStorage.getItem("dataLogin")).email[0], "emailcc": JSON.parse(localStorage.getItem("dataLogin")).email[0],
// "emailsend": dataApprover[0].EMail[0], "emailsend": dataApprover[0].EMail[0],
// "message": "<p>Dengan hormat,</p> \ "message": "<p>Dengan hormat,</p> \
// <p>Terdapat pengajuan dokumen dengan No." + this.state.businessUnit + "-" + this.state.documentType + "-" + this.state.revisionCode + " " + this.state.subject + " yang diajukan oleh " + JSON.parse(localStorage.getItem("user"))["Full Name"] + ".<br /> Untuk review dan approval silahkan klik link berikut ini <a href='http://10.10.86.48:3000' target='_blank'>Link Dokumen</a></p> \ <p>Terdapat pengajuan dokumen dengan No." + this.state.businessUnit + "-" + this.state.documentType + "-" + this.state.revisionCode + " " + this.state.subject + " yang diajukan oleh " + JSON.parse(localStorage.getItem("user"))["Full Name"] + ".<br /> Untuk review dan approval silahkan klik link berikut ini <a href='http://10.10.86.48:3000' target='_blank'>Link Dokumen</a></p> \
// <p>Terimakasih</p> \ <p>Terimakasih</p> \
// <p>Regards, \ <p>Regards,</p> \
// <p>Admin</p><br /> \ <p>Admin</p><br /> \
// <p><i>Ini adalah email otomatis, harap jangan me-reply ke alamat email ini</i></p>" <p><i>Ini adalah email otomatis, harap jangan me-reply ke alamat email ini</i></p>"
// } }
// //process.env.REACT_APP_MAIN_APIURL let responseSendEmail = await fetch(process.env.REACT_APP_MAIN_APIURL + '/email', {
// let responseSendEmail = await fetch('http://localhost:9000/email', { headers: { 'Content-Type': 'application/json' },
// headers: { 'Content-Type': 'application/json' }, method: 'POST',
// method: 'POST', body: JSON.stringify(postdataEmail)
// body: JSON.stringify(postdataEmail) })
// })
await this.setState({ submitForm: false }); await this.setState({ submitForm: false });
alert("Document has been successfully submited"); alert("Document has been successfully submited");
this.props.history.push("/yourdocument"); this.props.history.push("/yourdocument");
} else {
alert("Error: Data approver doesnot exist");
}
} catch (error) { } catch (error) {
this.state.validPage[3] = true; this.state.validPage[3] = true;
await this.setState({ submitForm: false, validPage: this.state.validPage }); await this.setState({ submitForm: false, validPage: this.state.validPage });
...@@ -912,7 +915,7 @@ class FormCreate extends Component { ...@@ -912,7 +915,7 @@ class FormCreate extends Component {
{({ getRootProps, getInputProps }) => ( {({ getRootProps, getInputProps }) => (
<section> <section>
<div {...getRootProps()} className="p-4 text-center" style={{ height: "250px", backgroundColor: "lightgrey", border: "1px solid black", borderRadius: "20px", borderStyle: "dashed" }}> <div {...getRootProps()} className="p-4 text-center" style={{ height: "250px", backgroundColor: "lightgrey", border: "1px solid black", borderRadius: "20px", borderStyle: "dashed" }}>
<input {...getInputProps()} accept=".doc,.docx,.xls,.xlsx"/> <input {...getInputProps()} accept=".doc,.docx,.xls,.xlsx" />
{ {
this.state.contentForm.title == "" && this.state.contentForm.title == "" &&
<div> <div>
...@@ -1391,7 +1394,8 @@ class FormCreate extends Component { ...@@ -1391,7 +1394,8 @@ class FormCreate extends Component {
{ {
this.state.submitForm && this.state.submitForm &&
<img src="data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==" /> <img src="data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==" />
}&nbsp;&nbsp;</Button>&nbsp; }&nbsp;&nbsp;
</Button>&nbsp;
</div> </div>
</div> </div>
<div className="container scrolling-wrapper col-xl-12 col-lg-12 col-md-12 col-sm-12 border" id="divToSave"> <div className="container scrolling-wrapper col-xl-12 col-lg-12 col-md-12 col-sm-12 border" id="divToSave">
......
...@@ -77,13 +77,18 @@ class FormPublish extends Component { ...@@ -77,13 +77,18 @@ class FormPublish extends Component {
let responseDataAuditTrail = await axios.get(process.env.REACT_APP_MAIN_APIURL + '/DocumentManagement/trailkey/' + doc_id, { headers: { 'Content-Type': 'application/xml' } }) let responseDataAuditTrail = await axios.get(process.env.REACT_APP_MAIN_APIURL + '/DocumentManagement/trailkey/' + doc_id, { headers: { 'Content-Type': 'application/xml' } })
let dataAuditTrail = responseDataAuditTrail.data.trailCollection.trail; let dataAuditTrail = responseDataAuditTrail.data.trailCollection.trail;
// Check is user valid to open the document // Check is user valid to open the document
if (dataRevision[dataRevision.length - 1].status == "Waiting for Publish" || dataAuditTrail[dataAuditTrail.length-1].trail_status == "Document Published") { if (dataRevision[dataRevision.length - 1].status == "Waiting for Publish" || dataAuditTrail[dataAuditTrail.length - 1].trail_status == "Document Published") {
isDocFound = true; isDocFound = true;
let creator_name, creator_email; let creator_name, creator_email;
let responseDataUser = await axios.get(process.env.REACT_APP_MAIN_APIURL + '/DocumentManagement/userkeyid/' + user_id, { headers: { 'Content-Type': 'application/xml' } }) let responseDataUser = await axios.get(process.env.REACT_APP_MAIN_APIURL + '/DocumentManagement/userkeyid/' + user_id, { headers: { 'Content-Type': 'application/xml' } })
let dataUser = responseDataUser.data.user_dataCollection.user_data; let dataUser = responseDataUser.data.user_dataCollection.user_data;
if (dataUser != undefined) {
creator_name = dataUser[0].user_name; creator_name = dataUser[0].user_name;
creator_email = dataUser[0].email; creator_email = dataUser[0].email;
} else {
creator_name = "";
creator_email = "";
}
if (dataRevision[dataRevision.length - 1].status == "Document Published") { if (dataRevision[dataRevision.length - 1].status == "Document Published") {
await this.setState({ statusPublish: true }); await this.setState({ statusPublish: true });
} }
...@@ -191,25 +196,62 @@ class FormPublish extends Component { ...@@ -191,25 +196,62 @@ class FormPublish extends Component {
await this.setState({ submitForm: true, validSubmitPublish: false }); await this.setState({ submitForm: true, validSubmitPublish: false });
var js2xmlparser = require('js2xmlparser'); var js2xmlparser = require('js2xmlparser');
var parseString = require('xml2js').parseString; var parseString = require('xml2js').parseString;
let responseDataAllUser = await axios.get(process.env.REACT_APP_MAIN_APIURL + '/DocumentManagement/user', { headers: { 'accept': 'application/xml' } })
let dataAllUser;
parseString(responseDataAllUser.data, function (err, result) {
dataAllUser = result.user_dataCollection.user_data;
})
let dataComplianceOfficer = {
"user_name": "",
"email": ""
};
let dataManagementRepresentative = [];
for (let i = 0; i < dataAllUser.length; i++) {
if (dataAllUser[i].user_role[0].includes("Compliance Officer")) {
dataComplianceOfficer.user_name = dataAllUser[i].user_name[0];
dataComplianceOfficer.email = dataAllUser[i].email[0];
}
if (dataAllUser[i].user_role[0].includes("Management Representative")) {
let dataRowManagementRepresentative = {
"user_name": dataAllUser[i].user_name[0],
"email": dataAllUser[i].email[0]
}
dataManagementRepresentative.push(dataRowManagementRepresentative);
}
}
if (actionPublish == "Publish Document") { if (actionPublish == "Publish Document") {
// //Send Email Notification let sendEmailPublish = this.state.creator_email;
// let postdataEmailPublish = { if (!sendEmailPublish.includes(JSON.parse(this.state.approver).Email)) {
// "subject": "Dokumen " + this.state.businessUnit + "-" + this.state.documentType + "-" + this.state.revisionCode + "-" + this.state.subject + " Sudah Dipublish", if (sendEmailPublish != "") {
// "emailcc": JSON.parse(localStorage.getItem("dataLogin")).email[0], sendEmailPublish = sendEmailPublish + ", " + JSON.parse(this.state.approver).Email;
// "emailsend": this.state.creator_email, } else {
// "message": "<p>Dengan hormat,</p> \ sendEmailPublish = JSON.parse(this.state.approver).Email;
// <p>Terdapat pengajuan dokumen dengan No." + this.state.businessUnit + "-" + this.state.documentType + "-" + this.state.revisionCode + " " + this.state.subject + " yang diajukan oleh " + this.state.creator_name + " telah dipublish.<br /> Untuk melihat dokumen, silahkan klik link berikut <a href='http://10.10.86.48:3000' target='_blank'>Link Dokumen</a></p> \ }
// <p>Terimakasih</p> \ }
// <p>Regards, \ if (dataManagementRepresentative.length != 0) {
// <p>Admin</p><br /> \ for (let i = 0; i < dataManagementRepresentative.length; i++) {
// <p><i>Ini adalah email otomatis, harap jangan me-reply ke alamat email ini</i></p>" if (!sendEmailPublish.includes(dataManagementRepresentative[i].email)) {
// } sendEmailPublish = sendEmailPublish + ", " + JSON.parse(this.state.approver).Email;
// // process.env.REACT_APP_MAIN_APIURL + }
// let responseSendEmailPublish = await fetch('http://localhost:9000/email', { }
// headers: { 'Content-Type': 'application/json' }, }
// method: 'POST', //Send Email Notification After Publish
// body: JSON.stringify(postdataEmailPublish) let postdataEmailAfterPublish = {
// }) "subject": "Dokumen " + this.state.businessUnit + "-" + this.state.documentType + "-" + this.state.revisionCode + "-" + this.state.subject + " Sudah Dipublish",
"emailcc": JSON.parse(localStorage.getItem("dataLogin")).email[0],
"emailsend": sendEmailPublish,
"message": "<p>Dengan hormat,</p> \
<p>Dokumen dengan No." + this.state.businessUnit + "-" + this.state.documentType + "-" + this.state.revisionCode + " " + this.state.subject + " yang diajukan oleh " + this.state.creator_name + " telah dipublish.<br /> Untuk melihat dokumen, silahkan klik link berikut <a href='http://10.10.86.48:3000' target='_blank'>Link Dokumen</a></p> \
<p>Terimakasih</p> \
<p>Regards,</p> \
<p>Admin</p><br /> \
<p><i>Ini adalah email otomatis, harap jangan me-reply ke alamat email ini</i></p>"
}
let responseSendEmailAfterPublish = await fetch(process.env.REACT_APP_MAIN_APIURL + '/email', {
headers: { 'Content-Type': 'application/json' },
method: 'POST',
body: JSON.stringify(postdataEmailAfterPublish)
})
} }
let responseDataRevision = await axios.get(process.env.REACT_APP_MAIN_APIURL + '/DocumentManagement/revisionkey/' + this.state.doc_id, { headers: { 'Content-Type': 'application/xml' } }) let responseDataRevision = await axios.get(process.env.REACT_APP_MAIN_APIURL + '/DocumentManagement/revisionkey/' + this.state.doc_id, { headers: { 'Content-Type': 'application/xml' } })
let dataRevision = responseDataRevision.data.revisionCollection.revision; let dataRevision = responseDataRevision.data.revisionCollection.revision;
......
This diff is collapsed.
...@@ -71,7 +71,7 @@ class YourDocument extends Component { ...@@ -71,7 +71,7 @@ class YourDocument extends Component {
if ((dataRevision[dataRevision.length - 1].status.includes("Waiting for Approval") || dataRevision[dataRevision.length - 1].status.includes("Waiting for Approver") || dataRevision[dataRevision.length - 1].status.includes("Additional Approver")) && dataAllDocument[i].doc_status[0] == "New") { if ((dataRevision[dataRevision.length - 1].status.includes("Waiting for Approval") || dataRevision[dataRevision.length - 1].status.includes("Waiting for Approver") || dataRevision[dataRevision.length - 1].status.includes("Additional Approver")) && dataAllDocument[i].doc_status[0] == "New") {
if ( if (
(dataRevision[dataRevision.length - 1].status == "Waiting for Approval - " + JSON.parse(localStorage.getItem("dataLogin")).user_name[0] && JSON.parse(localStorage.getItem('dataLogin')).user_role[0].includes("Approver")) || (dataRevision[dataRevision.length - 1].status == "Waiting for Approval - " + JSON.parse(localStorage.getItem("dataLogin")).user_name[0] && JSON.parse(localStorage.getItem('dataLogin')).user_role[0].includes("Approver")) ||
(dataRevision[dataRevision.length - 1].status == "Waiting for Approval - " + JSON.parse(localStorage.getItem("dataLogin")).user_name[0] && JSON.parse(localStorage.getItem('dataLogin')).user_role[0].includes("Compliance Officer")) || ((dataRevision[dataRevision.length - 1].status == "Waiting for Approval - " + JSON.parse(localStorage.getItem("dataLogin")).user_name[0] || dataRevision[dataRevision.length - 1].status == "Waiting for Approval - Compliance Officer") && JSON.parse(localStorage.getItem('dataLogin')).user_role[0].includes("Compliance Officer")) ||
(dataRevision[dataRevision.length - 1].status == "Waiting for Approval - Management Representative" && JSON.parse(localStorage.getItem('dataLogin')).user_role[0].includes("Management Representative")) || (dataRevision[dataRevision.length - 1].status == "Waiting for Approval - Management Representative" && JSON.parse(localStorage.getItem('dataLogin')).user_role[0].includes("Management Representative")) ||
(dataRevision[dataRevision.length - 1].status == "Waiting for Additional Approver" && JSON.parse(localStorage.getItem('dataLogin')).user_role[0].includes("Compliance Officer") || (dataRevision[dataRevision.length - 1].status == "Waiting for Additional Approver" && JSON.parse(localStorage.getItem('dataLogin')).user_role[0].includes("Compliance Officer") ||
(dataRevision[dataRevision.length - 1].status.includes(JSON.parse(localStorage.getItem('dataLogin')).user_name[0])) && JSON.parse(localStorage.getItem('dataLogin')).user_role[0].includes("Additional Approver")) (dataRevision[dataRevision.length - 1].status.includes(JSON.parse(localStorage.getItem('dataLogin')).user_name[0])) && JSON.parse(localStorage.getItem('dataLogin')).user_role[0].includes("Additional Approver"))
......
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