diff --git a/src/views/Master/RoleProject/index.js b/src/views/Master/RoleProject/index.js index f30ccdb..0cea817 100644 --- a/src/views/Master/RoleProject/index.js +++ b/src/views/Master/RoleProject/index.js @@ -271,7 +271,7 @@ export default class index extends Component { "orders": { "columns": ["id"], "ascending": false } } const result = await axios - .post(PROJECT_ROLE_SEARCH, payload) + .post(PROJECT_ROLE_SEARCH, payload, config) .then(res => res) .catch((error) => error.response); if (result && result.data && result.statusText == "OK") { diff --git a/src/views/SimproV2/ResourceMaterial/DialogForm.js b/src/views/SimproV2/ResourceMaterial/DialogForm.js index 1d23327..2957798 100644 --- a/src/views/SimproV2/ResourceMaterial/DialogForm.js +++ b/src/views/SimproV2/ResourceMaterial/DialogForm.js @@ -1,427 +1,443 @@ -import React, { useEffect, useState } from 'react' -import { - Modal, ModalHeader, ModalBody, ModalFooter, - Button, Form, FormGroup, Label, Input, Col, Row -} from 'reactstrap'; -import { DatePicker, Tooltip, Select } from 'antd'; -import { formatRupiah, formatNumber } from '../../../const/CustomFunc' -import moment from 'moment'; -import 'antd/dist/antd.css'; -const { Option } = Select - -const DialogForm = ({openDialog, closeDialog, toggleDialog, typeDialog, dataEdit}) => { - const [id, setId] = useState(0) - const [materialName, setMaterialName] = useState('') - const [uom, setUom] = useState('') - const [description, setDescription] = useState('') - const [unitPrice, setUnitPrice] = useState('') - const [priceReq, setPriceReq] = useState('') - const [status, setStatus] = useState('') - - const [requiredDate, setRequiredDate] = useState(null) - const [qty, setQty] = useState('') - const [qtyReceived, setQtyReceived] = useState('') - const [fomDate, setFomDate] = useState(null) - const [prDate, setPrDate] = useState(null) - const [poDate, setPoDate] = useState(null) - const [receivedDate, setReceivedDate] = useState(null) - const [deliveryDate, setDeliveryDate] = useState(null) - - - - - useEffect(()=> { - if(typeDialog==="Edit"){ - console.log("cel data Edit", dataEdit) - setId(dataEdit.id) - setQty(dataEdit.qty) - setDescription(dataEdit.description) - setUnitPrice(dataEdit.unit_price) - setUom(dataEdit.uom) - setMaterialName(dataEdit.name) - setStatus(dataEdit.status) - } - else if (typeDialog === 'EditMatReq') { - console.log("cel data EditMatReq", dataEdit) - setId(dataEdit.id) - setDescription(dataEdit.description) - setUnitPrice(dataEdit.unit_price) - setUom(dataEdit.uom) - setStatus(dataEdit.status) - setRequiredDate(dataEdit.required_date ? moment(dataEdit.required_date) : null) - setQty(dataEdit.qty) - setQtyReceived(dataEdit.qty_received) - setFomDate(dataEdit.fom_date ? moment(dataEdit.fom_date) : null) - setPrDate(dataEdit.pr_date ? moment(dataEdit.pr_date) : null) - setPoDate(dataEdit.po_date ? moment(dataEdit.po_date) : null) - setReceivedDate(dataEdit.received_date ? moment(dataEdit.received_date) : null) - setDeliveryDate(dataEdit.delivery_date ? moment(dataEdit.delivery_date) : null) - } - else if (typeDialog === 'EditMatDelv') { - console.log("cel data EditMatDelv", dataEdit) - setId(dataEdit.id) - setDescription(dataEdit.description) - setUnitPrice(dataEdit.unit_price) - setUom(dataEdit.uom) - setStatus(dataEdit.status) - setRequiredDate(dataEdit.required_date ? moment(dataEdit.required_date) : null) - setQty(dataEdit.qty) - setQtyReceived(dataEdit.qty_received) - setFomDate(dataEdit.fom_date ? moment(dataEdit.fom_date) : null) - setPrDate(dataEdit.pr_date ? moment(dataEdit.pr_date) : null) - setPoDate(dataEdit.po_date ? moment(dataEdit.po_date) : null) - setReceivedDate(dataEdit.received_date ? moment(dataEdit.received_date) : null) - setDeliveryDate(dataEdit.delivery_date ? moment(dataEdit.delivery_date) : null) - } - else if (typeDialog === 'Save'){ - setId(0) - } - },[dataEdit,openDialog]) - - const handleSave = () => { - let data = ''; - if(typeDialog==="Save"){ - data = { - name: materialName, - qty, - uom, - description, - unit_price: typeof(unitPrice) === 'string' && unitPrice !== '' && unitPrice.includes('.') ? parseInt(unitPrice.replace(/\./g,'')) : unitPrice, - status - } - - closeDialog('save', data); - } - else if (typeDialog === 'Edit') { - console.log('typeof', typeof(unitPrice)); - data = { - id, - name: materialName, - qty, - uom, - description, - unit_price: typeof(unitPrice) === 'string' && unitPrice !== '' && unitPrice.includes('.') ? parseInt(unitPrice.replace(/\./g,'')) : unitPrice, - status - } - closeDialog('edit', data); - } - else if (typeDialog === 'EditMatReq') { - data = { - id, - uom, - description, - status, - required_date: requiredDate, - qty, - qty_received: qtyReceived, - fom_date: fomDate, - pr_date: prDate, - po_date: poDate, - received_date: receivedDate, - delivery_date: deliveryDate, - price: typeof(priceReq) === 'string' && priceReq !== '' && priceReq.includes('.') ? parseInt(priceReq.replace(/\./g,'')) : priceReq, - } - closeDialog('EditMatReq', data); - } - else if (typeDialog === 'EditMatDelv') { - data = { - id, - uom, - description, - status, - required_date: requiredDate, - qty, - qty_received: qtyReceived, - fom_date: fomDate, - pr_date: prDate, - po_date: poDate, - received_date: receivedDate, - delivery_date: deliveryDate - } - closeDialog('EditMatDelv', data); - } - setId(0) - setDescription('') - - } - - const handleCancel = () => { - closeDialog('cancel', 'none') - setId(0) - setDescription('') - } - - - - - - - const renderForm = () => { - if (typeDialog === 'Save' || typeDialog === 'Edit') { - return( -
- - - - - setMaterialName(e.target.value)} placeholder={`Input material name...`}/> - - - - - - - - setQty(e.target.value)} placeholder={`Input qty...`} /> - - - - - - setUom(e.target.value)} placeholder={`Input uom...`} /> - - - - - - - - setUnitPrice(formatNumber(e.target.value))} placeholder={`Unit Price...`} /> - - - - - - setStatus(e.target.value)} placeholder={`Status ...`} /> - - - - - - - - setDescription(e.target.value)} placeholder={`Description ...`} /> - - - -
- ) - } - else if (typeDialog === 'EditMatReq') { - return ( -
- - - - - - - - - - - setPriceReq(formatNumber(e.target.value))} placeholder={`Input Price ...`} /> - - - - - - - - setDescription(e.target.value)} placeholder={`Description ...`} /> - - - - - - setRequiredDate(date)} /> - - - - - - - - setQty(e.target.value)} placeholder={`Input QTY...`} disabled /> - - - - - - setUom(e.target.value)} placeholder={`Input UOM...`} disabled /> - - - - - - - - setQtyReceived(e.target.value)} placeholder={`Input QTY Received...`} /> - - - - - - setFomDate(date)} /> - - - - - - - - setPrDate(date)} /> - - - - - - setPoDate(date)} /> - - - - - - - - setReceivedDate(date)} /> - - - - - - setDeliveryDate(date)} /> - - - - -
- ) - } - else if (typeDialog === 'EditMatDelv') { - return ( -
- - - - - - - - - - - - - setDescription(e.target.value)} placeholder={`Description ...`} /> - - - - - - setRequiredDate(date)} /> - - - - - - - - setQty(e.target.value)} placeholder={`Input QTY...`} disabled /> - - - - - - setUom(e.target.value)} placeholder={`Input UOM...`} disabled /> - - - - - - - - setQtyReceived(e.target.value)} placeholder={`Input QTY Received...`} /> - - - - - - setFomDate(date)} /> - - - - - - - - setPrDate(date)} /> - - - - - - setPoDate(date)} /> - - - - - - - - setReceivedDate(date)} /> - - - - - - setDeliveryDate(date)} /> - - - -
- ) - } - } - - - return ( - <> - - {typeDialog=="Save" ? `Add` : "Edit"} Resource - - {renderForm()} - - - {' '} - - - - - {/* toggleMapDialog} - dataEdit={dataEdit} - workArea_={workArea} - lat_={lat} - lon_={lon} - radius_={radius} - /> */} - - ) - -} - -export default DialogForm; \ No newline at end of file +import React, { useEffect, useState } from 'react' +import { + Modal, ModalHeader, ModalBody, ModalFooter, + Button, Form, FormGroup, Label, Input, Col, Row +} from 'reactstrap'; +import { DatePicker, Tooltip, Select } from 'antd'; +import { formatRupiah, formatNumber } from '../../../const/CustomFunc' +import moment from 'moment'; +import 'antd/dist/antd.css'; +const { Option } = Select + +const DialogForm = ({ openDialog, closeDialog, toggleDialog, typeDialog, dataEdit, dataUom }) => { + const [id, setId] = useState(0) + const [materialName, setMaterialName] = useState('') + const [uom, setUom] = useState('') + const [description, setDescription] = useState('') + const [unitPrice, setUnitPrice] = useState('') + const [priceReq, setPriceReq] = useState('') + const [status, setStatus] = useState('') + + const [requiredDate, setRequiredDate] = useState(null) + const [qty, setQty] = useState('') + const [qtyReceived, setQtyReceived] = useState('') + const [fomDate, setFomDate] = useState(null) + const [prDate, setPrDate] = useState(null) + const [poDate, setPoDate] = useState(null) + const [receivedDate, setReceivedDate] = useState(null) + const [deliveryDate, setDeliveryDate] = useState(null) + + + + + useEffect(() => { + if (typeDialog === "Edit") { + console.log("cel data Edit", dataEdit) + setId(dataEdit.id) + setQty(dataEdit.qty) + setDescription(dataEdit.description) + setUnitPrice(dataEdit.unit_price) + setUom(dataEdit.uom) + setMaterialName(dataEdit.name) + setStatus(dataEdit.status) + } + else if (typeDialog === 'EditMatReq') { + console.log("cel data EditMatReq", dataEdit) + setId(dataEdit.id) + setDescription(dataEdit.description) + setUnitPrice(dataEdit.unit_price) + setUom(dataEdit.uom) + setStatus(dataEdit.status) + setRequiredDate(dataEdit.required_date ? moment(dataEdit.required_date) : null) + setQty(dataEdit.qty) + setQtyReceived(dataEdit.qty_received) + setFomDate(dataEdit.fom_date ? moment(dataEdit.fom_date) : null) + setPrDate(dataEdit.pr_date ? moment(dataEdit.pr_date) : null) + setPoDate(dataEdit.po_date ? moment(dataEdit.po_date) : null) + setReceivedDate(dataEdit.received_date ? moment(dataEdit.received_date) : null) + setDeliveryDate(dataEdit.delivery_date ? moment(dataEdit.delivery_date) : null) + } + else if (typeDialog === 'EditMatDelv') { + console.log("cel data EditMatDelv", dataEdit) + setId(dataEdit.id) + setDescription(dataEdit.description) + setUnitPrice(dataEdit.unit_price) + setUom(dataEdit.uom) + setStatus(dataEdit.status) + setRequiredDate(dataEdit.required_date ? moment(dataEdit.required_date) : null) + setQty(dataEdit.qty) + setQtyReceived(dataEdit.qty_received) + setFomDate(dataEdit.fom_date ? moment(dataEdit.fom_date) : null) + setPrDate(dataEdit.pr_date ? moment(dataEdit.pr_date) : null) + setPoDate(dataEdit.po_date ? moment(dataEdit.po_date) : null) + setReceivedDate(dataEdit.received_date ? moment(dataEdit.received_date) : null) + setDeliveryDate(dataEdit.delivery_date ? moment(dataEdit.delivery_date) : null) + } + else if (typeDialog === 'Save') { + setId(0) + } + }, [dataEdit, openDialog]) + + const handleSave = () => { + let data = ''; + if (typeDialog === "Save") { + data = { + name: materialName, + qty, + uom, + description, + unit_price: typeof (unitPrice) === 'string' && unitPrice !== '' && unitPrice.includes('.') ? parseInt(unitPrice.replace(/\./g, '')) : unitPrice, + status + } + + closeDialog('save', data); + } + else if (typeDialog === 'Edit') { + console.log('typeof', typeof (unitPrice)); + data = { + id, + name: materialName, + qty, + uom, + description, + unit_price: typeof (unitPrice) === 'string' && unitPrice !== '' && unitPrice.includes('.') ? parseInt(unitPrice.replace(/\./g, '')) : unitPrice, + status + } + closeDialog('edit', data); + } + else if (typeDialog === 'EditMatReq') { + data = { + id, + uom, + description, + status, + required_date: requiredDate, + qty, + qty_received: qtyReceived, + fom_date: fomDate, + pr_date: prDate, + po_date: poDate, + received_date: receivedDate, + delivery_date: deliveryDate, + price: typeof (priceReq) === 'string' && priceReq !== '' && priceReq.includes('.') ? parseInt(priceReq.replace(/\./g, '')) : priceReq, + } + closeDialog('EditMatReq', data); + } + else if (typeDialog === 'EditMatDelv') { + data = { + id, + uom, + description, + status, + required_date: requiredDate, + qty, + qty_received: qtyReceived, + fom_date: fomDate, + pr_date: prDate, + po_date: poDate, + received_date: receivedDate, + delivery_date: deliveryDate + } + closeDialog('EditMatDelv', data); + } + setId(0) + setDescription('') + + } + + const handleCancel = () => { + closeDialog('cancel', 'none') + setId(0) + setDescription('') + } + + const setupSelectUom = () => { + return ( + <> + {dataUom.map((val, index) => { + return ( + + ) + })} + + ) + } + + + + + const renderForm = () => { + if (typeDialog === 'Save' || typeDialog === 'Edit') { + return ( +
+ + + + + setMaterialName(e.target.value)} placeholder={`Input material name...`} /> + + + + + + + + setQty(e.target.value)} placeholder={`Input qty...`} /> + + + + + + + + + + + + + + + + + + setUnitPrice(formatNumber(e.target.value))} placeholder={`Unit Price...`} /> + + + + + + setStatus(e.target.value)} placeholder={`Status ...`} /> + + + + + + + + setDescription(e.target.value)} placeholder={`Description ...`} /> + + + +
+ ) + } + else if (typeDialog === 'EditMatReq') { + return ( +
+ + + + + + + + + + + setPriceReq(formatNumber(e.target.value))} placeholder={`Input Price ...`} /> + + + + + + + + setDescription(e.target.value)} placeholder={`Description ...`} /> + + + + + + setRequiredDate(date)} /> + + + + + + + + setQty(e.target.value)} placeholder={`Input QTY...`} disabled /> + + + + + + setUom(e.target.value)} placeholder={`Input UOM...`} disabled /> + + + + + + + + setQtyReceived(e.target.value)} placeholder={`Input QTY Received...`} /> + + + + + + setFomDate(date)} /> + + + + + + + + setPrDate(date)} /> + + + + + + setPoDate(date)} /> + + + + + + + + setReceivedDate(date)} /> + + + + + + setDeliveryDate(date)} /> + + + + +
+ ) + } + else if (typeDialog === 'EditMatDelv') { + return ( +
+ + + + + + + + + + + + + setDescription(e.target.value)} placeholder={`Description ...`} /> + + + + + + setRequiredDate(date)} /> + + + + + + + + setQty(e.target.value)} placeholder={`Input QTY...`} disabled /> + + + + + + setUom(e.target.value)} placeholder={`Input UOM...`} disabled /> + + + + + + + + setQtyReceived(e.target.value)} placeholder={`Input QTY Received...`} /> + + + + + + setFomDate(date)} /> + + + + + + + + setPrDate(date)} /> + + + + + + setPoDate(date)} /> + + + + + + + + setReceivedDate(date)} /> + + + + + + setDeliveryDate(date)} /> + + + +
+ ) + } + } + + + return ( + <> + + {typeDialog == "Save" ? `Add` : "Edit"} Resource + + {renderForm()} + + + {' '} + + + + + {/* toggleMapDialog} + dataEdit={dataEdit} + workArea_={workArea} + lat_={lat} + lon_={lon} + radius_={radius} + /> */} + + ) + +} + +export default DialogForm; diff --git a/src/views/SimproV2/ResourceMaterial/index.js b/src/views/SimproV2/ResourceMaterial/index.js index 9704a52..e566aa5 100644 --- a/src/views/SimproV2/ResourceMaterial/index.js +++ b/src/views/SimproV2/ResourceMaterial/index.js @@ -14,7 +14,7 @@ import { PROYEK_ADD, PROYEK_SEARCH, PROYEK_EDIT, PROYEK_DELETE, MATERIAL_RESOURCE_ADD, MATERIAL_RESOURCE_EDIT, MATERIAL_RESOURCE_DELETE, MATERIAL_RESOURCE_SEARCH, REQUEST_MATERIAL_SEARCH, REQUEST_MATERIAL_EDIT, - REQUEST_MATERIAL_UPDATE_WAREHOUSE_SITE + REQUEST_MATERIAL_UPDATE_WAREHOUSE_SITE, SATUAN_SEARCH } from '../../../const/ApiConst'; const { TabPane } = Tabs; @@ -52,6 +52,7 @@ const Resource = ({ params }) => { const [dataExport, setDataExport] = useState([]) const [dataReqMaterial, setDataReqMaterial] = useState([]) const [dataTable, setDatatable] = useState([]) + const [dataSatuan, setDatasatuan] = useState([]) const [idDelete, setIdDelete] = useState(0) const [openDialog, setOpenDialog] = useState(false) const [rowsPerPage, setRowsPerPage] = useState(10) @@ -62,6 +63,7 @@ const Resource = ({ params }) => { useEffect(() => { getDataReqMaterial() + getDataSatuan() }, []) useEffect(() => { @@ -71,7 +73,9 @@ const Resource = ({ params }) => { useEffect(() => { const cekData = dataExport || [] if (cekData.length > 0) { - exportExcel() + exportExcelRequestMaterial() + exportExcelMaterialResource() + } }, [dataExport]) @@ -159,6 +163,53 @@ const Resource = ({ params }) => { } } + const getDataSatuan = async () => { + + let start = 0; + + if (currentPage !== 1 && currentPage > 1) { + start = (currentPage * rowsPerPage) - rowsPerPage + } + + const payload = { + "columns": [ + { + "name": "name", + "logic_operator": "ilike", + "value": search, + "operator": "AND" + }, + { + "name": "description", + "logic_operator": "ilike", + "value": search, + "operator": "AND" + } + ], + "orders": { + "ascending": true, + "columns": [ + 'id' + ] + }, + "paging": { + "length": rowsPerPage, + "start": start + } + } + + const result = await axios + .post(SATUAN_SEARCH, payload, HEADER) + .then(res => res) + .catch((error) => error.response); + if (result && result.data && result.data.code == 200) { + setDatasatuan(result.data.data); + setTotalPage(result.data.totalRecord); + } else { + NotificationManager.error('Gagal Mengambil Data!!', 'Failed'); + } + } + const handleSearch = e => { const value = e.target.value setSearch(value); @@ -170,9 +221,9 @@ const Resource = ({ params }) => { setTypeDialog(type) } - const exportExcel = () => { + const exportExcelRequestMaterial = () => { const dataExcel = dataExport || []; - const fileName = `Data ${pageName}.xlsx`; + const fileName = `Data Request Material.xlsx`; const ws = XLSX.utils.json_to_sheet(dataExcel); const wb = XLSX.utils.book_new(); XLSX.utils.book_append_sheet(wb, ws, `Data ${pageName}`); @@ -180,24 +231,72 @@ const Resource = ({ params }) => { setDataExport([]) } + const exportExcelMaterialResource = () => { + const dataExcel = dataExport || []; + const fileName = `Data MaterialResource.xlsx`; + const ws = XLSX.utils.json_to_sheet(dataExcel); + const wb = XLSX.utils.book_new(); + XLSX.utils.book_append_sheet(wb, ws, `Data ${pageName}`); + XLSX.writeFile(wb, fileName); + setDataExport([]) + } - const handleExportExcel = async () => { + const handleExportExcelMaterialDel = async () => { const payload = { - "paging": { "start": 0, "length": -1 }, - "joins": [], - "orders": { "columns": ["id"], "ascending": false } + "columns": [ + { "name": "description", "logic_operator": "ilike", "value": "", "operator": "AND" }, + ], + "joins": [ + { "name": "m_proyek", "column_join": "proyek_id", "column_results": ["kode_sortname", "nama"] } + ], + "orders": { "columns": ["id"], "ascending": true }, + "paging": { "start": 0, "length": -1 } } - if (parseInt(role_id) !== 1) { - payload["columns"] = [ - { "name": "id", "logic_operator": "=", "value": proyek_id, "operator": "AND" } - ] + + const result = await axios + .post(REQUEST_MATERIAL_SEARCH, payload, HEADER) + .then(res => res) + .catch((error) => error.response); + + + if (result && result.data && result.data.code == 200) { + let resData = result.data.data; + const excelData = []; + resData.map((n, index) => { + let dataRow = { + "Nama Material": n.description, + "Quantity": n.qty, + "Status": n.status, + "Price": n.price, + "Uom": n.uom, + + } + excelData.push(dataRow) + }) + await setDataExport(excelData); + } else { + NotificationManager.error('Gagal Export Data!!', 'Failed'); + } + } + + const handleExportExcelRequestMaterial = async () => { + + const payload = { + "columns": [ + { "name": "description", "logic_operator": "ilike", "value": "", "operator": "AND" }, + ], + "joins": [ + { "name": "m_proyek", "column_join": "proyek_id", "column_results": ["kode_sortname", "nama"] } + ], + "orders": { "columns": ["id"], "ascending": true }, + "paging": { "start": 0, "length": -1 } } const result = await axios - .post(PROYEK_SEARCH, payload, HEADER) + .post(REQUEST_MATERIAL_SEARCH, payload, HEADER) .then(res => res) .catch((error) => error.response); @@ -207,12 +306,68 @@ const Resource = ({ params }) => { const excelData = []; resData.map((n, index) => { let dataRow = { - "Nama Proyek": n.nama, - "Biaya": n.biaya, - "Color Progress": n.color_progress, - "Jumlah Pekerja": n.jumlah_pekerja, - "Tanggal Mulai": n.mulai_proyek ? moment(n.mulai_proyek).format(format) : "-", - "Tanggal Selesai": n.akhir_proyek ? moment(n.akhir_proyek).format(format) : "-", + "Nama Material": n.description, + "Quantity": n.qty, + "Status": n.status, + "Price": n.price, + "Uom": n.uom, + + } + excelData.push(dataRow) + }) + await setDataExport(excelData); + } else { + NotificationManager.error('Gagal Export Data!!', 'Failed'); + } + } + + const handleExportExcelMatResource = async () => { + + let start = 0; + + if (currentPage !== 1 && currentPage > 1) { + start = (currentPage * rowsPerPage) - rowsPerPage + } + + const payload = { + "columns": [ + { + "name": "name", + "logic_operator": "ilike", + "value": search, + "operator": "AND" + } + ], + "orders": { + "ascending": true, + "columns": [ + 'id' + ] + }, + "paging": { + "length": -1, + "start": start + } + } + + + const result = await axios + .post(MATERIAL_RESOURCE_SEARCH, payload, HEADER) + .then(res => res) + .catch((error) => error.response); + + + if (result && result.data && result.data.code == 200) { + let resData = result.data.data; + const excelData = []; + resData.map((n, index) => { + let dataRow = { + "Nama Material": n.name, + "Quantity": n.qty, + "Status": n.status, + "Unit Price": n.unit_price, + "Uom": n.uom, + } excelData.push(dataRow) }) @@ -507,7 +662,7 @@ const Resource = ({ params }) => { - + @@ -540,7 +695,7 @@ const Resource = ({ params }) => { - + @@ -565,7 +720,7 @@ const Resource = ({ params }) => { - + {/* */} @@ -603,6 +758,7 @@ const Resource = ({ params }) => { dataEdit={dataEdit} clickOpenModal={clickOpenModal} dataParent={allDataMenu} + dataUom={dataSatuan} /> diff --git a/src/views/SimproV2/ResourceWorker/index.js b/src/views/SimproV2/ResourceWorker/index.js index 49c300d..b311491 100644 --- a/src/views/SimproV2/ResourceWorker/index.js +++ b/src/views/SimproV2/ResourceWorker/index.js @@ -231,23 +231,92 @@ const ResourceWorker = ({ params }) => { const handleExportExcel = async () => { - const payload = { - "paging": { "start": 0, "length": -1 }, - "columns": [ - { "name": "name", "logic_operator": "ilike", "value": search, "operator": "AND" } - ], - "joins": [], - "orders": { "columns": ["id"], "ascending": false } - } + let start = 0; - if (parseInt(role_id) !== 1) { - payload["columns"] = [ - { "name": "id", "logic_operator": "=", "value": proyek_id, "operator": "AND" } - ] + if (currentPage !== 1 && currentPage > 1) { + start = (currentPage * rowsPerPage) - rowsPerPage } + const payload = { + "paging": { + "start": start, + "length": -1 + }, + "columns": [], + "group_column": { + "operator": "AND", + "group_operator": "OR", + "where": [ + { + "name": "name", + "logic_operator": "~*", + "value": search + }, + { + "name": "ktp_number", + "logic_operator": "~*", + "value": search + }, + { + "name": "name", + "logic_operator": "~*", + "value": search, + "table_name": "m_divisi" + }, + { + "name": "employee_type", + "logic_operator": "~*", + "value": search + }, + { + "name": "name", + "logic_operator": "~*", + "value": search, + "table_name": "m_roles" + }, + { + "name": "phone_number", + "logic_operator": "~*", + "value": search + }, + { + "name": "email", + "logic_operator": "~*", + "value": search + }, + { + "name": "status_resource", + "logic_operator": "~*", + "value": search + }, + ] + }, + "joins": [ + { + "name": "m_roles", + "column_join": "role_id", + "column_results": [ + "name", + "description" + ] + }, + { + "name": "m_divisi", + "column_join": "divisi_id", + "column_results": [ + "name" + ] + } + ], + "orders": { + "columns": [ + "id" + ], + "ascending": false + } + } const result = await axios - .post(PROYEK_SEARCH, payload, HEADER) + .post(USER_SEARCH, payload, HEADER) .then(res => res) .catch((error) => error.response); @@ -256,12 +325,12 @@ const ResourceWorker = ({ params }) => { const excelData = []; resData.map((n, index) => { let dataRow = { - "Nama Proyek": n.nama, - "Biaya": n.biaya, - "Color Progress": n.color_progress, - "Jumlah Pekerja": n.jumlah_pekerja, - "Tanggal Mulai": n.mulai_proyek ? moment(n.mulai_proyek).format(format) : "-", - "Tanggal Selesai": n.akhir_proyek ? moment(n.akhir_proyek).format(format) : "-", + "NIK (Nomor Induk Karyawan)": n.ktp_number, + "Employee Name": n.name, + "Divisi": n.join_second_name, + "Employee Type": n.employee_type, + "Role": n.join_first_name, + "Phone No": n.phone_number, } excelData.push(dataRow) })