{"version":3,"file":"ProcentBar.VD5SoAXm.js","sources":["../../src/data/keikka/processClass.js","../../src/pages/steps/StepProcess/components/ProcentBar.jsx"],"sourcesContent":["import { hashCode, isValidDate } from \"src/components/js/statics1\";\r\nimport { sendTilausvahvistus_exported } from \"./handleKeikka\";\r\nimport mailClass from \"../system/mailClass\";\r\nimport stepLogClass from \"../stepLog/stepLogClass\";\r\nimport { deleteStepLogMessagesByType, confirmStepLogType } from \"../stepLog/stepLogMessageClass\";\r\n\r\nexport default class ProcessClass {\r\n constructor(keikkaData, personId) {\r\n this.personId = personId;\r\n this.keikkaData = keikkaData;\r\n this.stepLog = new stepLogClass(keikkaData.keikkaId);\r\n this.isImported = { confirmDate: null, isConfirmed: false };\r\n\r\n this._pumppuVarattu = undefined;\r\n this._betoniVarattu = undefined;\r\n this._tilausLähetetty = undefined;\r\n this._betonitoimijaTilausVastaanotettu = undefined;\r\n this._tyomaaOsoiteHyväksytty = undefined;\r\n this._asiakasHyväksytty = undefined;\r\n this._tilausToimitettu = undefined;\r\n this._kellonaikaVahvistettu = undefined;\r\n this._tilausvahvistusLähetetty = undefined;\r\n this.socket = undefined;\r\n }\r\n async initProcess(token, socket) {\r\n this.socket = socket;\r\n await this.stepLog.init(token, socket);\r\n // isImported = jos on tuotu pumi.fi:stä\r\n this.isImported = this.stepLog.isImported;\r\n }\r\n // #region tilaus:luonti aloitettu\r\n get luontiAloitettu() {\r\n if (this._luontiAloitettu === undefined) {\r\n this._luontiAloitettu = this.stepLog.getStepLogTypeStatus(15);\r\n this._luontiAloitettu.isConfirmed = true;\r\n }\r\n return this._luontiAloitettu;\r\n }\r\n // #endregion\r\n // #region kellonaika valittu -> käsittely:Toimitusajankohta hyväksytty\r\n // tilaus:kellonaika valitu\r\n get kellonaikaValittu() {\r\n return { isConfirmed: isValidDate(this.keikkaData.pumppu.pumppuAika) };\r\n }\r\n // käsittely: Toimitusajankohta hyväksytty\r\n get kellonaikaVahvistettu() {\r\n if (this.isImported.isConfirmed) {\r\n return { isConfirmed: true, confirmDate: this.isImported.confirmDate };\r\n }\r\n if (this._kellonaikaVahvistettu === undefined) {\r\n this._kellonaikaVahvistettu = this.stepLog.getStepLogTypeStatus(17);\r\n }\r\n return this._kellonaikaVahvistettu;\r\n }\r\n kellonAikaVahvista() {\r\n confirmStepLogType(this.keikkaData.keikkaId, 17, this.socket, true);\r\n this._kellonaikaVahvistettu.isConfirmed = true;\r\n this._kellonaikaVahvistettu.confirmDate = new Date();\r\n }\r\n kellonAikaHylkää() {\r\n deleteStepLogMessagesByType(this.keikkaData.keikkaId, 17, this.socket);\r\n this._kellonaikaVahvistettu.isConfirmed = false;\r\n this._kellonaikaVahvistettu.confirmDate = null;\r\n }\r\n // #endregion\r\n // #region asiakas valittu -> käsittely:Asiakas hyväksytty\r\n get asiakasValittu() {\r\n return { isConfirmed: this.keikkaData.asiakas.asiakasId > 0 ? true : false };\r\n }\r\n asiakasHyväksy() {\r\n confirmStepLogType(this.keikkaData.keikkaId, 19, this.socket, true);\r\n this._asiakasHyväksytty.isConfirmed = true;\r\n this._asiakasHyväksytty.confirmDate = new Date();\r\n }\r\n asiakasHylkää() {\r\n deleteStepLogMessagesByType(this.keikkaData.keikkaId, 19, this.socket);\r\n this._asiakasHyväksytty.isConfirmed = false;\r\n this._asiakasHyväksytty.confirmDate = null;\r\n }\r\n get asiakasHyväksytty() {\r\n if (this._asiakasHyväksytty === undefined)\r\n this._asiakasHyväksytty = this.stepLog.getStepLogTypeStatus(19);\r\n return this._asiakasHyväksytty;\r\n }\r\n // #endregion\r\n // #region osoite valittu -> käsittely:Työmaaosoite hyväksytty -> tilaus:betoinitoimijat valittu\r\n get toimitusOsoiteValittu() {\r\n return { isConfirmed: this.keikkaData.tyomaa.tyomaaOsoite1 ? true : false };\r\n }\r\n get tyomaaOsoiteHyväksytty() {\r\n if (this._tyomaaOsoiteHyväksytty === undefined)\r\n this._tyomaaOsoiteHyväksytty = this.stepLog.getStepLogTypeStatus(18);\r\n return this._tyomaaOsoiteHyväksytty;\r\n }\r\n async toimitusOsoiteHyväksy() {\r\n await confirmStepLogType(this.keikkaData.keikkaId, 18, this.socket, true);\r\n }\r\n toimitusOsoiteHylkää() {\r\n deleteStepLogMessagesByType(this.keikkaData.keikkaId, 18, this.socket);\r\n }\r\n get betoniToimijatValittu() {\r\n return {\r\n isConfirmed:\r\n this.keikkaData.betoniToimittaja.asiakasId > 0 &&\r\n this.keikkaData.pumppuToimittaja.asiakasId > 0,\r\n };\r\n }\r\n // #endregion\r\n // #region puomi ja linja valittu\r\n get puomiValittu() {\r\n return {\r\n isConfirmed: this.keikkaData.pumppu.puomiError() ? false : true,\r\n };\r\n }\r\n get linjaValittu() {\r\n return {\r\n isConfirmed: this.keikkaData.pumppu.linjaError() ? false : true,\r\n };\r\n }\r\n // #endregion\r\n // #region betonimäärä valittu\r\n get betoniMääräTäytetty() {\r\n if (this.keikkaData.betoni.length === 0) return { isConfirmed: false };\r\n for (let i = 0; i < this.keikkaData.betoni.length; i++) {\r\n if (this.keikkaData.betoni[i].m3 == null) return { isConfirmed: false };\r\n }\r\n return { isConfirmed: true };\r\n }\r\n // #endregion\r\n // #region betonilaatu valittu\r\n get betoniTiedotTäytetty() {\r\n if (this.keikkaData.betoni.length === 0) return { isConfirmed: false };\r\n for (let i = 0; i < this.keikkaData.betoni.length; i++) {\r\n if (this.keikkaData.betoni[i].betoniError()) return { isConfirmed: false };\r\n }\r\n return { isConfirmed: true };\r\n }\r\n // #endregion\r\n // #region tilaus lähetetty\r\n get tilausLähetetty() {\r\n if (this._tilausLähetetty === undefined)\r\n this._tilausLähetetty = this.stepLog.getStepLogTypeStatus(1);\r\n return this._tilausLähetetty;\r\n }\r\n // #endregion\r\n\r\n // #region käsittely:tilaus vastaanotettu\r\n get betonitoimijaTilausVastaanotettu() {\r\n if (this._betonitoimijaTilausVastaanotettu === undefined)\r\n this._betonitoimijaTilausVastaanotettu = this.stepLog.getStepLogTypeStatus(2);\r\n return this._betonitoimijaTilausVastaanotettu;\r\n }\r\n // #endregion\r\n // #region käsittely:Pumppu varattu\r\n get pumppuVarattu() {\r\n if (this.isImported.isConfirmed) return { isConfirmed: true };\r\n if (this._pumppuVarattu === undefined)\r\n this._pumppuVarattu = this.stepLog.getStepLogTypeStatus(6);\r\n return this._pumppuVarattu;\r\n }\r\n pumppuHyväksy() {\r\n confirmStepLogType(this.keikkaData.keikkaId, 6, this.socket, true);\r\n this._pumppuVarattu.isConfirmed = true;\r\n this._pumppuVarattu.confirmDate = new Date();\r\n }\r\n pumppuHylkää() {\r\n deleteStepLogMessagesByType(this.keikkaData.keikkaId, 6, this.socket);\r\n this._pumppuVarattu.isConfirmed = false;\r\n this._pumppuVarattu.confirmDate = null;\r\n }\r\n // #endregion\r\n // #region käsittely:Betoni varattu\r\n get betoniVarattu() {\r\n if (this.isImported.isConfirmed) return { isConfirmed: true };\r\n if (this._betoniVarattu === undefined)\r\n this._betoniVarattu = this.stepLog.getStepLogTypeStatus(5);\r\n return this._betoniVarattu;\r\n }\r\n betoniHyväksy() {\r\n confirmStepLogType(this.keikkaData.keikkaId, 5, this.socket, true);\r\n this._betoniVarattu.isConfirmed = true;\r\n this._betoniVarattu.confirmDate = new Date();\r\n }\r\n betoniHylkää() {\r\n deleteStepLogMessagesByType(this.keikkaData.keikkaId, 5, this.socket);\r\n this._betoniVarattu.isConfirmed = false;\r\n this._betoniVarattu.confirmDate = null;\r\n }\r\n // #endregion\r\n // #region toimitus:tilaus on toimitusvalmis\r\n get tilausHyväksytty() {\r\n if (this._tilausHyväksytty === undefined)\r\n this._tilausHyväksytty = this.stepLog.getStepLogTypeStatus(3);\r\n return this._tilausHyväksytty;\r\n }\r\n tilausHyväksy() {\r\n // pumppuToimittajaHyväksyyTilauksen(this.keikkaData, this.personId, token);\r\n confirmStepLogType(this.keikkaData.keikkaId, 3, this.socket, true);\r\n this._tilausHyväksytty.isConfirmed = true;\r\n this._tilausHyväksytty.confirmDate = new Date();\r\n }\r\n tilausHylkää() {\r\n deleteStepLogMessagesByType(this.keikkaData.keikkaId, 3, this.socket);\r\n this._tilausHyväksytty.isConfirmed = false;\r\n this._tilausHyväksytty.confirmDate = null;\r\n }\r\n // #endregion\r\n // #region toimitus:tilausvahvistus lähetetty\r\n get tilausvahvistusLähetetty() {\r\n if (this._tilausvahvistusLähetetty === undefined)\r\n this._tilausvahvistusLähetetty = this.stepLog.isTilausvahvistusLähetetty;\r\n return this._tilausvahvistusLähetetty;\r\n }\r\n\r\n tilausvahvistusLähetä(token, socket) {\r\n const thisMail = new mailClass(this.keikkaData);\r\n thisMail.emailToEmail = this.keikkaData.pumppuToimittaja.asiakasContactPersonEmail;\r\n sendTilausvahvistus_exported(thisMail, this.keikkaData, this.personId, token, socket);\r\n }\r\n\r\n tilausvahvistusHyväksy() {\r\n confirmStepLogType(this.keikkaData.keikkaId, 20, this.socket, true);\r\n this._tilausvahvistusLähetetty.isConfirmed = true;\r\n this._tilausvahvistusLähetetty.confirmDate = new Date();\r\n }\r\n tilausvahvistusHylkää() {\r\n deleteStepLogMessagesByType(this.keikkaData.keikkaId, 20, this.socket);\r\n this._tilausvahvistusLähetetty.isConfirmed = false;\r\n this._tilausvahvistusLähetetty.confirmDate = null;\r\n }\r\n // #endregion\r\n // #region toimitus:tilaus on toimitettu\r\n get tilausToimitettu() {\r\n if (this._tilausToimitettu === undefined) {\r\n this._tilausToimitettu = this.stepLog.getStepLogTypeStatus(21);\r\n if (!this._tilausToimitettu.isConfirmed && this.keikkaData.tila.keikkaTilaId == 9)\r\n this._tilausToimitettu.isConfirmed = true;\r\n }\r\n return this._tilausToimitettu;\r\n }\r\n //#endregion\r\n\r\n // #region percentages\r\n get asiakasLuoTilaustaPercent() {\r\n let cnt = 9;\r\n let done = 0;\r\n\r\n /* luonti aloitettu */\r\n if (this.luontiAloitettu.isConfirmed) done++;\r\n /* asiakas valittu */\r\n if (this.keikkaData.asiakas.asiakasId > 0) done++;\r\n /* Toimitusosoite valittu */\r\n if (this.keikkaData.tyomaa.tyomaaId > 0) done++;\r\n /* betonivalmistaja valittu */\r\n if (this.keikkaData.betoniToimittaja.asiakasId > 0) done++;\r\n /* pumpputpimittaja valittu */\r\n if (this.keikkaData.betoniToimittaja.asiakasId > 0) done++;\r\n /* puomi valittu */\r\n if (this.keikkaData.pumppu.isPuomiSelected) done++;\r\n /* linja valittu */\r\n if (this.keikkaData.pumppu.isLinjaSelected) done++;\r\n /* kellonaika valittu */\r\n if (this.kellonaikaValittu.isConfirmed) done++;\r\n /* betonitiedot valittu */\r\n for (let i = 0; i < this.keikkaData.betoni.length; i++) {\r\n const betoni = this.keikkaData.betoni[i];\r\n cnt++;\r\n if (betoni.m3 > 0) done++;\r\n cnt++;\r\n if (betoni.laatuError() === null) done++;\r\n cnt++;\r\n if (betoni.rasitusError() === null) done++;\r\n }\r\n /* tilaus lähetetty */\r\n if (this.tilausLähetetty.isConfirmed) done++;\r\n\r\n const c = Math.round((done / cnt) * 100);\r\n return c;\r\n }\r\n get betoniToimijaKäsitteleeTilaustaPercent() {\r\n const cnt = 8;\r\n let done = 0;\r\n\r\n if (this.betonitoimijaTilausVastaanotettu.isConfirmed) done++;\r\n if (this.tyomaaOsoiteHyväksytty.isConfirmed) done++;\r\n if (this.asiakasHyväksytty.isConfirmed) done++;\r\n if (this.tilausHyväksytty.isConfirmed) done++;\r\n if (this.pumppuVarattu.isConfirmed) done++;\r\n if (this.betoniVarattu.isConfirmed) done++;\r\n if (this.kellonaikaVahvistettu.isConfirmed) done++;\r\n if (this.tilausvahvistusLähetetty.isFound) done++;\r\n return Math.round((done / cnt) * 100);\r\n }\r\n get tilausToimitetaanPercent() {\r\n const cnt = 2;\r\n let done = 0;\r\n if (this.tilausHyväksytty.isConfirmed) done++;\r\n if (this.tilausToimitettu.isConfirmed) done++;\r\n return Math.round((done / cnt) * 100);\r\n }\r\n // #endregion\r\n get hash() {\r\n let _json = \"\";\r\n _json += JSON.stringify(this._pumppuVarattu);\r\n _json += JSON.stringify(this._betoniVarattu);\r\n _json += JSON.stringify(this._tilausLähetetty);\r\n _json += JSON.stringify(this._betonitoimijaTilausVastaanotettu);\r\n _json += JSON.stringify(this._tyomaaOsoiteHyväksytty);\r\n _json += JSON.stringify(this._asiakasHyväksytty);\r\n _json += JSON.stringify(this._tilausToimitettu);\r\n _json += JSON.stringify(this._tilausHyväksytty);\r\n _json += JSON.stringify(this._kellonaikaVahvistettu);\r\n _json += JSON.stringify(this._tilausVas);\r\n _json += JSON.stringify(this._tilausvahvistusLähetetty);\r\n _json += JSON.stringify(this._luontiAloitettu);\r\n _json += JSON.stringify(this._kellonaikaValittu);\r\n const _hash = hashCode(_json);\r\n return _hash;\r\n }\r\n}\r\n","import { useEffect, useState } from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { LinearProgress, Typography } from \"@mui/material\";\r\n\r\nconst styles = {\r\n fullWidth: { width: \"100%\" },\r\n maxSize: { width: \"100%\", height: \"100%\" },\r\n};\r\n\r\nexport default function ProcentBar(props) {\r\n const [procent, setProgress] = useState(props.procent || 0);\r\n\r\n useEffect(() => {\r\n setProgress(props.procent);\r\n }, [props.procent]);\r\n\r\n return (\r\n