{"version":3,"sources":["component/sign/user/client/ClientDashboard.js","component/header/HeaderLang.js","component/header/Upheader.js","assets/img/logo.png","services/authentication/auth.service.js","services/authentication/useAuth.js","component/sign/user/ConnectionButton.js","component/header/Header.js","assets/img/gallery-1.jpg","assets/img/steg.png","assets/img/anme.png","assets/img/atfp.png","component/footer/Footer.js","assets/img/gallery-2.jpg","assets/img/gallery-3.jpg","assets/img/gallery-4.jpg","assets/img/gallery-5.jpg","assets/img/gallery-6.jpg","assets/img/feature.jpg","component/home/Valeur.js","component/home/Background.js","component/home/Map.js","component/home/Home.js","component/about/Title.js","component/about/Stat.js","assets/img/about1.jpg","component/about/Presentation.js","component/about/TeamMemebers.js","assets/img/zouhaier.jpg","assets/img/fille.jpg","assets/img/homme.jpg","component/about/About.js","assets/img/emna.jpg","assets/img/manel.jpg","assets/img/wissal.jpg","assets/img/syrine.jpg","assets/img/carousel-5.png","assets/img/carousel-6.png","assets/img/carousel-7.png","component/project/CarouselPub.js","assets/img/img-600x400-lome.jpg","assets/img/img-600x400-SbikhaPompage.jpg","assets/img/img-600x400-AichaHotel.jpg","assets/img/IMG-600x400-MairieMidoun.jpg","assets/img/img-600x400-ResidenceYassin.jpg","component/project/Projects.js","component/project/Project.js","services/public.service.js","component/unstructuredComponents/CaptchaFormulaire.js","component/unstructuredComponents/SendCheck.js","component/contact/ContactFormulaire.js","component/contact/ContactMap.js","component/contact/ContactStruct.js","component/contact/Contact.js","component/sign/SignIn.js","component/devis/SiForm.js","component/devis/PompageForm.js","component/devis/SummaryForm.js","component/devis/Devis.js","component/recruitment/CandidatureSpontanee.js","component/recruitment/Recruitment.js","component/services/Services.js","assets/img/img-600x400-1.jpg","assets/img/img-600x400-4.jpg","assets/img/img-600x400-2.jpg","assets/img/img-600x400-3.jpg","assets/img/img-600x400-5.jpg","assets/img/img-600x400-6.jpg","component/services/ServicesList.js","component/services/servicesList/PanneauxSolaires.js","component/download/DownloadFiles.js","services/authentication/RequireAuth.js","component/sign/user/Dashboard.js","component/sign/SignInForm.js","component/sign/user/Documents.js","component/sign/user/Profil.js","component/sign/user/PlantDetails.js","component/sign/user/admin/Admin.js","services/admin.service.js","component/sign/user/admin/Devis/AdminDevis.js","component/sign/user/admin/User/AdminUser.js","component/sign/user/admin/Contact/AdminContact.js","component/sign/user/admin/User/AdminAddUser.js","App.js","reportWebVitals.js","index.js","services/authentication/auth-header.js","services/user.service.js"],"names":["ClientDashboard","useState","plantList","setPlantList","useEffect","UserService","getUserPlantList","r","TotalDashboardHeaderList","PlantList","props","CurrPac","EToday","Htotal","ETotal","IncomeTotal","AllLight","green","yellow","red","gray","total","setTotal","length","accTotal","reduce","acc","item","eval","data","name","value","toFixed","icon","nameTotal","valueTotal","Object","keys","t","className","map","index","style","color","fluid","TotalDashboardHeaderElement","fontSize","xs","sm","md","lg","xxl","xl","undefined","navigate","useNavigate","light","bordered","responsive","hover","onClick","GroupAutoId","AutoID","provider","Light","GoodsTypeName","SetUpTime","LastUpdate","translations","getTranslation","lang","text","Upheader","split","href","API_URL","process","AUTH_PATH","AuthService","login","username","password","callback","axios","post","then","response","message","alert","authorization","localStorage","setItem","JSON","stringify","roles","logout","clear","register","email","checkUser","user","get","headers","authHeader","res","status","catch","error","AuthContextType","role","signin","signout","AuthContext","createContext","AuthProvider","children","setUser","setRole","parse","getItem","Provider","useAuth","useContext","ConnectionButtonHeader","auth","Dropdown","align","Toggle","Menu","DropdownMenu","to","ConnectionButtonOffCanvas","title","closeOffCanvas","includes","Item","as","NavLink","React","forwardRef","ref","activeClassName","isActive","filter","Boolean","join","Header","show","setShow","openOffCanvas","checkIfClickedOutside","e","srcElement","document","addEventListener","removeEventListener","expand","Navbar","bg","variant","Container","Brand","fontFamily","id","src","logo","alt","width","height","Nav","Offcanvas","placement","backdrop","closeButton","Title","Body","textShadow","Footer","StegLogo","AnmeLogo","AtfpLogo","Valeur","Button","size","minHeight","featurePicture","objectFit","Background","camera","position","Stars","useRef","random","Float32Array","radius","sphere","useFrame","state","delta","current","rotation","x","y","Math","PI","Points","positions","stride","frustumCulled","PointMaterial","transparent","sizeAttenuation","depthWrite","MapStyle","styled","div","Pin","UnivNabeul","UnivDjerba","UnivTataouine","WeatherStyle","Map","background","top","JsonToSvg","UnivLocationPins","WeatherPins","tunisiaMap","setMap","target","svgRect","right","bottom","left","objRect","getBoundingClientRect","clickedLayer","layers","elem","attributes","console","log","transform","xmlns","viewBox","d","url","weatherPins","setWeatherPins","isLoaded","setIsLoaded","getWeatherInfo","Promise","all","fetch","window","location","protocol","replace","json","a","temp","temp_c","iconUrl","condition","backgroundImage","Home","useLocation","titles","about","service","recruitment","contact","solarPanels","pathname","splice","stats","Stat","countDoneProjects","setCountDoneProjects","countExperts","timer","setTimeout","clearTimeout","Presentation","AboutPicture","objectPosition","textAlign","textJustify","TeamMemebers","prevIcon","type","nextIcon","Carousel","slide","createCarouselInner","team","listNumber","Array","ceil","i","zIndex","photo","facebook","linkedin","linkedIn","Tel","link","tel","Email","listTeam","key","rel","setValue","navigator","clipboard","writeText","FillePicture","HommePicture","About","maxWidth","CarsouselPub","carouselPicture5","carouselPicture6","carouselPicture7","projectType","projects","description","country","pictures","Lome","SbikhaPompage","AichaHotel","MairieMidoun","ResidenceYassin","Projects","activeType","SetActiveType","ProjectType","active","findIndex","innerText","activeHandlerType","CreateProjectList","toString","CreateProjectItem","Project","API_PUBLIC","PublicService","options","err","CaptchaFormulaire","svg","setSvg","onBlur","handleCaptcha","SendCheck","Row","Col","Spinner","animation","ContactFormulaire","contactState","setContactState","captcha","sendStatus","setSendStatus","formState","setFormState","success","Form","handleInfo","event","form","currentTarget","preventDefault","checkValidity","stopPropagation","prev","classList","remove","onChange","placeholder","htmlFor","ContactMap","frameBorder","tabIndex","ContactStruct","margin","Contact","SignIn","SiForm","handleChange","previousState","deleteItem","itemIndex","handleConsommation","consommation","count","deviceName","timeUse","power","isArray","scope","Total","parseInt","PompageForm","powerHorse","powerKhw","powerPv","required","readOnly","SummaryForm","vide","client","Card","border","information","societyName","firstName","lastName","phone","projectSector","stegRef","projectLocationType","street","city","zip","concat","Text","remark","Devis","validated","setValidated","handleProjectInformation","push","Logo","onSubmit","noValidate","ClientInformation","handleEndInput","ProjectInformation","RemarkInformation","Captcha","ProgressForm","defaultValue","ProgressBar","animated","striped","label","now","visibleRefSteg","setVisibleRefSteg","visibleNoProject","setvisibleNoProject","currentProjectType","setCurrentProjectType","setConsommation","visibilityProjectType","val","Select","disabled","list","items","rows","CandidatureSpontanee","CandidatureFormulaire","candidature","setCandidature","setCaptcha","submit","setSubmit","getBase64","file","resolve","baseURL","reader","FileReader","readAsDataURL","onload","result","onFileChange","files","bytesToMb","getElementById","bytes","span","offset","InputGroup","Control","nom","Feedback","prenom","telephone","padding","cv","display","accept","lettreDeMotivation","Recruitment","Services","ServicesList","Pic1","Pic6","Pic4","Pic5","PanneauxSolaires","DownloadFiles","RequireAuth","from","Dashboard","Loading","SignInForm","identifiant","setIdentifiant","handleIdentifiant","handleConnect","Documents","Profil","PlantDetails","PlantDetailsTotal","Chart","plantId","useParams","plantTotal","setPlantTotal","TotalDashboardHeaderElementV2","GoodsKWP","lineData","setLineData","Date","date","setDate","calendarMode","setCalendarMode","setOptions","showDate","setShowDate","ChartJS","CategoryScale","LinearScale","PointElement","LineElement","BarElement","Tooltip","Filler","Legend","controlDatePicker","handleCalendarMode","mode","dateWillTransmitted","getFullYear","getMonth","slice","getDate","today","getPlantDetail","labels","tunisUTC","toLocaleString","timeZone","parisUTC","diffUTC","getUTCHours","inTime","getHours","getMinutes","inTimetoTunisiaInTime","datasets","fill","pac","borderColor","backgroundColor","lineTension","scales","min","ticks","grid","plugins","legend","toLocaleDateString","year","month","inDate","inMonth","weekday","day","minDate","maxDetail","maxDate","Admin","reduceSideBar","setReduceSideBar","setting","setSetting","Style","AdminSettingList","onChangeSetting","activated","DropdownButton","drop","eventKey","Divider","listSvg","home","path","dashboard","orders","products","customers","API_USR","AdminService","put","delete","capitalize","str","toUpperCase","AdminDevis","mountedRef","search","setSearch","devisList","setDevisList","devisDetails","setDevisDetails","modalShow","setModalShow","toLowerCase","DevisListCard","handleDevisDetails","find","_id","seen","oldItem","DeleteDevis","onHide","number","createdIn","progress","modalAttributes","Modal","centered","AdminUser","userList","setUserList","userDetails","setUserDetails","AdminUserDetails","updatedUser","users","AdminUserListCard","handleAdminUserDetails","createdBy","synergy","growatt","edit","setEdit","connection","setConnection","setProvider","handleInput","newProvider","providers","connected","providerName","pwd","onDoubleClick","AdminContact","contactList","setContactList","contactDetails","setContactDetails","ContactListCard","handleContactDetails","ContactDetails","subject","sujet","AdminAddUser","isLoading","setLoading","account","setAccount","checked","handleProviders","handleProvidersInfo","clearData","FloatingLabel","controlId","Check","Input","Label","defaultChecked","senergy","fonction","handleFonctionEmploye","agence","handleAgenceEmploye","CenteredModal","App","this","exact","element","Construction","NotFound","Component","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","StrictMode","accessToken","lastReFetch","reFetch","monotoring","getUserTotal","GroupAutoID","detail","setMinutes"],"mappings":"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","file":"static/js/main.74006db0.chunk.js","sourcesContent":["import React ,{useEffect,useState} from \"react\";\nimport { UserService } from \"../../../../services/user.service\";\nimport Table from 'react-bootstrap/Table';\nimport Container from 'react-bootstrap/Container';\nimport Row from 'react-bootstrap/Row';\nimport Col from 'react-bootstrap/Col';\nimport {\n useNavigate\n} from \"react-router-dom\";\n\n\nexport default function ClientDashboard (){\n const [plantList,setPlantList] = useState([]);\n\n\n \n useEffect(()=>{\n UserService.getUserPlantList((r)=>{\n setPlantList(r)\n })\n },[])\n\n return( \n <>\n \n \n \n )\n}\n \n \n function TotalDashboardHeaderList(props){\n const [total,setTotal] = useState({\n CurrPac : 0,\n EToday :0,\n Htotal:0,\n ETotal:0,\n IncomeTotal:0,\n AllLight:{green:0,yellow:0,red:0,gray:0}\n })\n\n useEffect(()=>{\n if(props.plantList.length > 0){\n const accTotal = props.plantList.reduce((acc,item)=>{\n acc.CurrPac = eval(acc.CurrPac) + eval(item.CurrPac)\n acc.EToday = acc.EToday+ item.EToday\n acc.ETotal = acc.ETotal + item.ETotal\n acc.AllLight.green = acc.AllLight.green + item.AllLight.green\n acc.AllLight.yellow = acc.AllLight.yellow + item.AllLight.yellow\n acc.AllLight.red = acc.AllLight.red + item.AllLight.red\n acc.AllLight.gray = acc.AllLight.gray + item.AllLight.gray\n return acc\n })\n if(accTotal.CurrPac)\n setTotal(accTotal)\n }\n },[props.plantList])\n \n const data = [\n {name:\"Power\", value:(total.CurrPac/1000).toFixed(2) + 'k W',icon:\"bi bi-power\",nameTotal:\"E-total\", valueTotal:(total.Htotal/1000).toFixed(2) + 'k Hrs'},\n {name:\"E-Today\", value:(total.EToday/1000).toFixed(2) +\" kwh\",icon:\"bi bi-battery-charging\",nameTotal:\"E-Total\", valueTotal:(total.ETotal/1000000).toFixed(2) +\" MWh\"},\n {name:\"Daily income\", value:((total.EToday/1000) * 0.471).toFixed(3) + \" Dt\",icon:\"bi bi-wallet2\",nameTotal:\"Total income\", valueTotal:(total.ETotal/1000* 0.471).toFixed(3) + \" Dt\"},\n {name:\"Total plant\", value:Object.keys(total.AllLight).reduce((t,item)=> t += total.AllLight[item],0) + \" units\",icon:\"bi bi-pie-chart\",nameTotal:\"statistics\", valueTotal:\n
\n {Object.keys(total.AllLight).map((item,index)=>{ return
{total.AllLight[item]}
})}
}\n ]\n return (\n \n \n {data.map((item,index)=>{\n return } \n nameTotal={item.nameTotal} \n valueTotal={item.valueTotal} \n key={index}\n />\n })}\n \n \n \n );\n }\n \n function TotalDashboardHeaderElement(props){\n return (\n \n \n \n
{props.name}
{props.value}
\n {props.icon}\n
\n { props.nameTotal !== undefined ? \n
\n
\n
\n \n {props.valueTotal}\n
\n \n
: ''}\n
\n \n );\n }\n \n \n \n \n function PlantList(props) {\n let navigate = useNavigate();\n\n const light = {1:\"green\",3:\"red\",2:\"yellow\",4:\"grey\"}\n \n const handleItem = (GroupAutoId,provider)=>{\n navigate(\"/user/plantDetails/\" + provider + \"/\"+ GroupAutoId);\n }\n \n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {props.plantList.length ? props.plantList.map((item,index)=>{\n return (\n handleItem(item.AutoID,item.provider)}>\n \n \n \n \n \n \n \n \n \n )\n }) : }\n \n
SatusPlantNameE-TodayE-TotalStart TimeUpdatePowerProvider
{item.GoodsTypeName}{(item.EToday/1000).toFixed(2) + ' kwh'}{(item.ETotal/1000).toFixed(2) + ' kwh'}{item.SetUpTime}{item.LastUpdate}{(item.CurrPac/1000).toFixed(2) + ' W'}{item.provider}
\n \n
\n
\n );\n }","/*const languages = [\n { code: 'en', name: 'English'},\n { code: 'ar', name: 'عربي'},\n { code: 'fr', name: 'Français'}\n]*/\n\nconst translations = {\n 'fr': {\n 'location': '12 Av Farhat Hached, 4116 Midoun-Djerba, Tunisie',\n 'availability': 'Lundi - Vendredi : 08h - 17h | Samedi : 08h - 14h',\n 'home':'Acceuil',\n 'about':'A propos',\n 'service':'Service',\n 'project':'Projets',\n 'signin':'Se connecter',\n 'recruitment':'Recrutement',\n 'devis':'Devis'\n },\n 'ar': {\n 'location': '12 شارع فرحات حشاد، 4116 ميدون-جربة، تونس',\n 'availability': '',\n 'home':'',\n 'about':'',\n 'service':'',\n 'project':'',\n 'signin':''\n },\n 'en': {\n 'location': '12 Av Farhat Hached, 4116 Midoun-Djerba, Tunisie',\n 'availability': 'Monday - Friday : 8am - 5pm | Sunday : 8am - 2pm',\n 'home':'Home',\n 'about':'About',\n 'service':'Service',\n 'project':'Projects',\n 'signin':'Sign in',\n 'recruitment':'Recruitment',\n 'devis':'Quote'\n }\n }\n \n export default function getTranslation (lang, text) {\n return translations[lang][text];\n }","import React from \"react\";\nimport getTranslation from \"./HeaderLang\";\n\n\nexport default function Upheader(props) {\n return (\n
\n
\n
\n
\n \n {getTranslation(props.lang,'location')}\n
\n
\n \n {getTranslation(props.lang,'availability').split('|')[0]} \n    {getTranslation(props.lang,'availability').split('|')[1]} \n
\n
\n
\n
\n \n +216 28 994 313\n
\n
\n \n +216 28 994 918\n
\n
\n \n \n
\n
\n
\n
\n );\n}\n","export default __webpack_public_path__ + \"static/media/logo.2f9ef2f5.png\";","import axios from \"axios\";\nimport authHeader from \"./auth-header\";\nconst API_URL = process.env.REACT_APP_API ||\"http://localhost:3000\";\nconst AUTH_PATH = \"/api/auth/\";\n\nconst AuthService = {\n login(username, password , callback) {\n return axios\n .post(API_URL + AUTH_PATH+\"signin\", { username, password })\n .then((response) => {\n if(response.data.message)\n alert(response.data.message)\n if (response.data.authorization) {\n localStorage.setItem(\"accessToken\", JSON.stringify(response.data.authorization));\n localStorage.setItem(\"username\", JSON.stringify(response.data.username));\n localStorage.setItem(\"roles\", JSON.stringify(response.data.roles));\n \n callback()\n }\n return response.data;\n });\n },\n logout(callback,username) {\n localStorage.clear();\n axios\n .post(API_URL + AUTH_PATH+\"signout\", { username: username})\n .then((response) => {\n //logout with success\n });\n callback();\n },\n register(username, email, password) {\n return axios.post(API_URL + AUTH_PATH + \"signup\", {\n username,\n email,\n password,\n });\n },\n checkUser(callback,user){\n \n return axios.get(API_URL +AUTH_PATH+'user', {\n headers: authHeader()\n })\n .then((res) => {\n if(res.status === 300){\n this.logout(callback,user)\n }\n })\n .catch((error) => {\n callback()\n })\n }\n}\n\n\nexport { AuthService };\n","import React,{useContext,useState,createContext,useEffect} from \"react\";\nimport {AuthService} from \"./auth.service.js\"\n\nexport const AuthContextType = {\n user: undefined,\n role:undefined,\n signin: undefined,\n signout: undefined\n}\n\n\nlet AuthContext = createContext(AuthContextType);\n\nexport const AuthProvider = ({ children }) => {\n let [user, setUser] = useState(null);\n let [role,setRole] = useState(null);\n \n useEffect(()=>{\n if(JSON.parse(localStorage.getItem('accessToken')) !== null){\n setUser(JSON.parse(localStorage.getItem('username')));\n setRole(JSON.parse(localStorage.getItem('roles')))\n AuthService.checkUser(()=>{\n setUser(undefined);\n setRole(undefined)\n },user)\n }\n },[])\n\n let signin = (username,password, callback) => {\n return AuthService.login(username,password,() => {\n setUser(username);\n setRole(JSON.parse(localStorage.getItem('roles')))\n callback();\n });\n };\n \n let signout = () => {\n return AuthService.logout(() => {\n setUser(undefined);\n setRole(undefined)\n },user);\n };\n \n\n let value = { user,role, signin, signout };\n \n return {children};\n }\n \n\n\nexport default function useAuth () {\n return useContext(AuthContext);\n}","import React from \"react\";\nimport Dropdown from 'react-bootstrap/Dropdown';\nimport useAuth from \"../../../services/authentication/useAuth\";\nimport getTranslation from \"../../header/HeaderLang\";\nimport {\n useNavigate,\n Link\n } from \"react-router-dom\";\n\n\n \nexport default function ConnectionButtonHeader(props){\n const auth = useAuth()\n return (\n <>\n {(auth.user ) ? \n \n \n {auth.user}\n \n\n \n \n \n :\n \n {getTranslation(props.lang,'signin')}\n \n \n }\n \n );\n}\n\n\nexport const ConnectionButtonOffCanvas = (props) => {\n const auth = useAuth()\n return (\n <>\n {(auth.user) ? \n \n \n {auth.user}\n \n\n \n \n \n :\n \n {getTranslation(props.lang,'signin')}\n \n }\n \n );\n}\n\n\nfunction DropdownMenu(){\n let navigate = useNavigate();\n const auth = useAuth()\n if(auth.role.includes('ROLE_ADMIN'))\n return (\n <>\n navigate(\"/user\")}>Dashboard\n navigate(\"/user/profil\")}>Profil\n {navigate(\"/\");auth.signout()}}>Log out\n \n );\n else\n return (\n <>\n navigate(\"/user\")}>Dashboard\n navigate(\"/user/profil\")}>Profil\n navigate(\"/user/documents\")}>Documents\n {navigate(\"/\");auth.signout()}}>Log out\n \n );\n \n}","import React, {useEffect, useState} from \"react\";\nimport logo from \"../../assets/img/logo.png\"\nimport getTranslation from \"./HeaderLang\";\nimport Container from 'react-bootstrap/Container';\nimport Nav from 'react-bootstrap/Nav';\nimport Navbar from 'react-bootstrap/Navbar';\nimport Offcanvas from 'react-bootstrap/Offcanvas';\nimport ConnectionButtonHeader, {ConnectionButtonOffCanvas} from \"../sign/user/ConnectionButton\";\n\n\nimport {\n NavLink as BaseNavLink\n} from \"react-router-dom\";\n\n// This site has 3 pages, all of which are rendered\n// dynamically in the browser (not server rendered).\n//\n// Although the page does not ever refresh, notice how\n// React Router keeps the URL up to date as you navigate\n// through the site. This preserves the browser history,\n// making sure things like the back button and bookmarks\n// work properly.\nconst NavLink = React.forwardRef(\n ({ activeClassName,...props}, ref) => {\n return (\n \n [\n props.className,\n isActive ? \"active\" : null,\n ]\n .filter(Boolean)\n .join(\" \")\n }\n />\n );\n }\n);\n\nexport default function Header(props) {\n const [show,setShow] = useState(false);\n \n const closeOffCanvas = () => {setShow(false)}\n\n const openOffCanvas = () => show === false ? setShow(true) : setShow(false) ;\n\n const checkIfClickedOutside = e => {\n if (e.srcElement.className !== \"offcanvas-body\" && e.srcElement.className !== \"navbar-toggler-icon\" && e.srcElement.title !== \"userDropdown\" ) {\n closeOffCanvas()\n }\n }\n\n useEffect(() => { \n document.addEventListener(\"mousedown\", checkIfClickedOutside,false)\n\n return () => { \n document.removeEventListener(\"mousedown\", checkIfClickedOutside,false)\n }\n })\n\n return (\n\n
\n {['xl'].map((expand) => (\n \n \n \n\n \n

Universal Energy

\n
\n \n \n \n \n \n \n \n \n \n \n

Menu

\n \n
\n \n
\n
\n ))}\n \n
\n\n\n );\n}\n\n","export default \"data:image/jpeg;base64,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\"","export default __webpack_public_path__ + \"static/media/steg.d74606fd.png\";","export default __webpack_public_path__ + \"static/media/anme.c3868c05.png\";","export default __webpack_public_path__ + \"static/media/atfp.ad9e2d49.png\";","import React from \"react\";\nimport gallery1 from \"../../assets/img/gallery-1.jpg\"\nimport gallery2 from \"../../assets/img/gallery-2.jpg\"\nimport gallery3 from \"../../assets/img/gallery-3.jpg\"\nimport gallery4 from \"../../assets/img/gallery-4.jpg\"\nimport gallery5 from \"../../assets/img/gallery-5.jpg\"\nimport gallery6 from \"../../assets/img/gallery-6.jpg\"\nimport StegLogo from \"../../assets/img/steg.png\"\nimport AnmeLogo from \"../../assets/img/anme.png\"\nimport AtfpLogo from \"../../assets/img/atfp.png\"\n\nimport {\n Link\n} from \"react-router-dom\";\n\n\nexport default function Footer(props) {\n return (\n <>\n \n
\n
\n
\n
\n
Address
\n

12 Av Farhat Hached, 4116 Midoun-Djerba, Tunisie

\n

+216 75 733 119

\n

contact@universal-energy.tn

\n
\n \n
\n
\n
\n
Quick Links
\n Acceuil\n Contact\n Service\n Termes & Conditions\n Téléchargement\n
\n
\n
Project Gallery
\n
\n
\n \"\"\n
\n
\n \"\"\n
\n
\n \"\"\n
\n
\n \"\"\n
\n
\n \"\"\n
\n
\n \"\"\n
\n
\n
\n
\n
\n
\n
Nos Partenaires
\n
\n
\n
\n \"no \n
\n
\n
\n
\n \"no\n
\n
\n
\n
\n \"no\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n © Universal Energy, All Rights Reserved.\n
\n
\n
\n
\n
\n\n );\n}\n\n\n ","export default \"data:image/jpeg;base64,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\"","export default \"data:image/jpeg;base64,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\"","export default \"data:image/jpeg;base64,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\"","export default \"data:image/jpeg;base64,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\"","export default \"data:image/jpeg;base64,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\"","export default __webpack_public_path__ + \"static/media/feature.44869d5d.jpg\";","import React from \"react\";\nimport featurePicture from \"../../assets/img/feature.jpg\"\nimport { Link } from \"react-router-dom\";\nimport { Button } from \"react-bootstrap\";\n\n\nexport default function Valeur(props) {\n return (\n
\n
\n
\n
\n
\n
Facture à zéro, énergie à fond. prêt pour le changement ?
\n

Etude de projet, Installation et une garantie de 2 ans aprés l'installation

\n

\n

\n Universal energy vous guide vers l'autosuffisance énergétique. 2 ans de garantie et de services gratuits après la réalisation de votre installation photovoltaïque.\nContrôlez et suivez votre production à distance avec nos outils intelligents.\nBienvenue dans le future de l’énergie avec confiance.\n \n Nous sommes là pour vous aider !

\n
\n
\n
\n
\n \n
\n
\n

Garantie de service

\n
2 ans
\n
\n
\n
\n
\n
\n
\n \n
\n
\n

Control et monotoring

\n
illimité
\n
\n
\n
\n
\n
\n
\n \n
\n
\n

Mobilité

\n
Tunisie et Afrique
\n
\n
\n
\n
\n
\n
\n \n
\n
\n

SAV

\n
réactif
\n
\n
\n
\n
\n
\n
\n \n
\n
\n

Etude de projet

\n
Gratuit
\n
\n
\n
\n
\n
\n
\n \n
\n
\n

Demande de devis

\n
Gratuit
\n
\n
\n
\n
\n
\n
\n \n \n \n
\n
\n\n\n
\n
\n
\n
\n
\n \"\"\n
\n
\n
\n
\n
\n );\n}\n","import { useState, useRef } from 'react'\nimport { Canvas, useFrame } from '@react-three/fiber'\nimport { Points, PointMaterial } from '@react-three/drei'\nimport * as random from 'maath/random/dist/maath-random.esm'\n\nexport default function Background(props) {\n return (\n \n \n \n )\n}\n\nfunction Stars(props) {\n const ref = useRef()\n const [sphere] = useState(() => random.inSphere(new Float32Array(5000), { radius: 0.55 }))\n useFrame((state, delta) => {\n ref.current.rotation.x -= delta / 10\n ref.current.rotation.y -= delta / 15\n })\n return (\n \n \n \n \n \n \n \n \n )\n}","import React, { useEffect, useState} from \"react\";\nimport { VectorMap } from '@south-paw/react-vector-maps';\nimport tunisiaMap from \"../../assets/map/tunisia.json\"\nimport styled from 'styled-components'\nimport Background from \"./Background\"\n\n\nconst MapStyle = styled.div`\nsvg {\n stroke: #fff;\n\n // All layers are just path elements\n path {\n fill: #32C36C;\n cursor: pointer;\n outline: none;\n\n // When a layer is hovered\n &:hover {\n fill: yellow;\n }\n\n // When a layer is focused.\n &:focus {\n fill: rgba(168,43,43,0.6);\n }\n\n // When a layer is 'checked' (via checkedLayers prop).\n &[aria-checked='true'] {\n fill: rgba(56,43,168,1);\n }\n\n // When a layer is 'selected' (via currentLayers prop).\n &[aria-current='true'] {\n fill: #32C36C;\n }\n\n // You can also highlight a specific layer via it's id\n &[id=\"nz-can\"] {\n fill: rgba(56,43,168,0.6);\n }\n }\n}\n\n.two {\n transition: all 2s ease-in-out 0.5s;\n -webkit-transition: all 2s ease-in-out 0.5s;\n}\n.grow {\n transform: scale(1);\n -ms-transform: translate(840,1082) scale(3);\n -webkit-transform: translate(840,1082) scale(3);\n}\n`;\nconst Pin = styled.div`\nposition:absolute;\ncursor: not-allowed;\n.vl {\n display:none;\n margin-left: -15px;\n margin-top:-230px;\n position:absolute;\n transform-origin: 50% 50%;\n transform: rotate(45deg);\n border-left: 1px solid blue;\n height: 75px;\n width: 150px;\n}\n.hl {\n display:none;\n margin-left: 34px;\n position: absolute;\n margin-top:-272px;\n \n border-top: 1px solid blue;\n height: 1px;\n width: 150px;\n}\n\n.text {\n position:absolute;\n margin-top:-285px;\n font-size:18px;\n width:250px;\n margin-left: 200px;\n color:#000000;\n font-weight: bold;\n}\n@media only screen and (max-width: 535px) {\n .text {\n width:150px;\n }\n}\nfont-family: \"Helvetica Neue Light\", \"HelveticaNeue-Light\", \"Helvetica Neue\", Calibri, Helvetica, Arial, sans-serif;\n`;\n\nconst UnivNabeul = styled.div`\n position: relative;\n margin-left:-70px;\n margin-top:-82px;\n pointer-events : none;\n\n`;\n\nconst UnivDjerba =styled.div`\n position: relative;\n margin-left:-65px;\n margin-top:75px;\n pointer-events : none;\n\n`;\n\nconst UnivTataouine = styled.div`\n position: relative;\n margin-left:-100px;\n margin-top:170px;\n pointer-events : none;\n\n`;\n\nconst WeatherStyle = styled.div`\nposition:relative;\ncursor: default;\n.map-pin {\n\n width: 65px;\n height: 55px;\n position: absolute;\n top: -259px;\n left: -40px;\n background-size: 40px 40px;\n background-repeat: no-repeat;\n text-align: center;\n background-position: 3px 5px;\n color: #888;\n font-weight: 100;\n font-size: 7px;\n animation-name: move;\n animation-duration: 10s;\n animation-iteration-count: infinite;\n}\n \n.map-pin > span {\n font-family: \"Helvetica Neue Light\", \"HelveticaNeue-Light\", \"Helvetica Neue\", Calibri, Helvetica, Arial, sans-serif;\n position: absolute;\n bottom: -0px;\n width: 100%;\n font-weight: bold;\n color:#050505;\n text-align: center;\n font-size: 15px;\n left: -5px;\n}\n\n@keyframes move {\n 0% {background-position: 5px 5px;}\n 25% {background-position: -4px 5px;}\n 50% {background-position: 5px 5px;}\n 75% {background-position: 15px 5px;}\n 100% {background-position: 5px 5px;}\n}\n\n#kr {\n margin-left:130px;\n margin-top:-59px;\n pointer-events : none;\n}\n#tu {\n margin-left:148px;\n margin-top:-130px;\n pointer-events : none;\n}\n#kf {\n margin-left:75px;\n margin-top:-90px;\n pointer-events : none;\n}\n#kb {\n margin-left:85px;\n margin-top:65px;\n pointer-events : none;\n}\n#me {\n margin-left:185px;\n margin-top:80px;\n pointer-events : none;\n}\n`;\nexport default function Map(props) {\n \n\n return (\n <>\n \n
\n \n {/*

Universal Energy Map

\n */}\n
\n \n
\n

مادام الشمس بلاش، الفاتورة علاش؟

\n
\n
\n

أحدث تكنولوجيا الألواح الشمسية-

\n

خدمة ما بعد البيع مجانية لمدة عامين-

\n

تسهيلات في الدفع-

\n
\n
\n
\n \n \n
\n \n \n \n \n \n {/* \n \n \n \n */}\n
\n
\n
\n \n
\n \n
\n \n \n );\n}\n\n\nfunction JsonToSvg(){\n const [map,setMap] = useState(tunisiaMap);\n\n \n const onClick = ({ target }) => {\n\n var svgRect = { x: 406, y: 146.5, width: 200, height: 400, top: 146.5, right: 606, bottom: 546.5, left: 406 } \n var objRect = target.getBoundingClientRect()\n /* const viewBox = map.viewBox.split(\" \");\n var svgRect = { x: 406, y: 146.5, width: 200, height: 400, top: 146.5, right: 606, bottom: 546.5, left: 406 } \n var objRect = target.getBoundingClientRect()\n var scaleX = objRect.width / 200 , scaleY = objRect.height / 400;\n var newX = (svgRect.left - objRect.left) / scaleX;\n var newY = (svgRect.top - objRect.top) / scaleY;\n var xScale = svgRect.width / objRect.width;\n var yScale = svgRect.height / objRect.height;\n console.log(\"matrix(\" + xScale + \" 0 0 \" + yScale + \" \" + newX * xScale + \" \" + newY * yScale + \")\")*/\n const clickedLayer = map.layers.filter((elem)=>{\n if(elem.name === target.attributes[\"aria-label\"].value){\n console.log(objRect)\n console.log(svgRect)\n elem.style= {transform:\"translate(0px, 529px)\"}//{transformOrigin: (objRect.x + objRect.width/2) + \"px \" + (objRect.y + objRect.height/2) +\"px\" } \n elem.transform = \"\"\n return elem\n }\n return false;\n })\n if(clickedLayer.length !== 0){\n setMap({...map, layers :clickedLayer})\n }\n }\n\n useEffect(()=>{\n // console.log(map)\n },[map])\n return(\n \n \n {\n map.layers.map((item,index)=>{\n return \n \n })\n }\n \n \n )\n}\n\nfunction UnivLocationPins(){\n\n return (\n <>\n \n \n
\n
\n
\n
Universal energy à Nabeul
\n
\n
\n
\n \n \n
\n
\n
\n
Universal energy à Djerba
\n
\n
\n
\n \n \n
\n
\n
\n
Universal energy à Tataouine
\n
\n
\n
\n \n );\n}\n\nfunction WeatherPins(){\n const [weatherPins,setWeatherPins] = useState([ \n {\n id:\"kr\",\n url:\"://api.weatherapi.com/v1/current.json?key=225b3f7c578c481c9f4134507223006&q=Kairouan&aqi=yes\"\n },\n {\n id:\"tu\",\n url:\"://api.weatherapi.com/v1/current.json?key=225b3f7c578c481c9f4134507223006&q=Tunis&aqi=yes\"\n },\n {\n id:\"kb\",\n url:\"://api.weatherapi.com/v1/current.json?key=225b3f7c578c481c9f4134507223006&q=kebili&aqi=yes\"\n },\n {\n id:\"me\",\n url:\"://api.weatherapi.com/v1/current.json?key=225b3f7c578c481c9f4134507223006&q=medenine&aqi=yes\"\n },\n {\n id:\"kf\",\n url:\"://api.weatherapi.com/v1/current.json?key=225b3f7c578c481c9f4134507223006&q=el kef&aqi=yes\"\n },\n ])\n const [isLoaded, setIsLoaded] = useState(false);\n\n const getWeatherInfo = async ()=>{\n \n try{\n await Promise.all( weatherPins.map( (item,index)=>{\n return fetch(window.location.protocol.replace(':','') + item.url)\n .then(response => response.json())\n .then(data => {\n setWeatherPins((a)=>[...a,{id:item.id,url:item.url,temp:data.current.temp_c,iconUrl:(window.location.protocol + data.current.condition.icon )}])\n if(index === weatherPins.length -1 )\n setIsLoaded(true)\n })\n }))\n }catch(e){\n console.log(e)\n }\n }\n useEffect(()=>{\n getWeatherInfo()\n // eslint-disable-next-line react-hooks/exhaustive-deps\n },[])\n \n\n\n return(\n \n { \n isLoaded === false ? '' : weatherPins.map((item)=>{ \n if(item.temp){\n return
{item.temp}°
\n }else \n return ''\n }) \n }\n
\n );\n}","import React from \"react\";\nimport Valeur from \"./Valeur\"\nimport Map from \"./Map\";\n\nexport default function Home(props) {\n return (\n <> \n \n \n \n );\n}\n","import React from \"react\";\nimport {Link,useLocation} from \"react-router-dom\";\n\nexport default function Title(props) {\n let location = useLocation();\n let titles = {about:\"A propos Universal Energy\", service:\"Nos services\", recruitment:\"Les Offres d'emploies\",contact:\"Contact\", solarPanels : \"Panneaux solaire\"}\n\n return (\n
\n
\n
\n {location.pathname.split('/').splice(1,3).map((item,index)=>{\n if(location.pathname.split('/').splice(1,3).length === 1 ){\n return (\n
\n

{titles[item]}

\n
\n )\n }else if(location.pathname.split('/').splice(1,3).length >= 1){\n return (\n
\n
\n
\n

{titles[item]}

\n
\n { location.pathname.split('/').splice(1,3).length -1 >= index && (location.pathname.split('/').splice(1,3)[index+1] === \"\" || location.pathname.split('/').splice(1,3)[index+1] === undefined)? '' :
\n

>

\n
}\n
\n
\n );\n }\n return \"\"\n })}\n
\n
\n
\n );\n}","import React , {useState,useEffect} from \"react\";\n\nconst stats = {satisfiedClients:324,doneProjects:600,experts:15}\nexport default function Stat(props) {\n const [countDoneProjects,setCountDoneProjects] = useState(0);\n const [countSatisfiedClients,setCountSatisfiedClients] = useState(0);\n const [countExperts,setCountExperts ] = useState(0);\n useEffect(()=>{\n const timer = setTimeout(() => {\n if(countDoneProjects < stats.doneProjects){\n setCountDoneProjects((countDoneProjects) => countDoneProjects + 1);\n }\n /* if(countSatisfiedClients < stats.satisfiedClients){\n setCountSatisfiedClients((countSatisfiedClients) => countSatisfiedClients + 1);\n }\n if(countExperts < stats.experts){\n setCountExperts((countExperts) => countExperts + 1);\n }*/\n }, 10);\n return () => clearTimeout(timer)\n },[countDoneProjects,countExperts])\n return (\n
\n
\n
\n\n
\n
\n
\n \n
\n

{countDoneProjects}

\n
\n
Projets effectués
\n \n
\n\n {/*
\n
\n
\n \n
\n

{countSatisfiedClients}

\n
\n
Clients Satisfait
\n \n
\n \n
\n
\n
\n \n
\n

{countExperts}

\n
\n
Experts et Ingénieur
\n \n
*/}\n
\n
\n
\n );\n}","export default __webpack_public_path__ + \"static/media/about1.f8704c01.jpg\";","import React from \"react\";\nimport AboutPicture from \"../../assets/img/about1.jpg\"\n\nexport default function Presentation(props) {\n return (\n
\n
\n
\n
\n
\n \"\"\n
\n
\n
\n
\n

6+ Années D'Experience En Solaire & En Energie renouvelable

\n

Universal Energy est présente sur le marché des énergie renouvelables depuis 2017, sise à Djerba et ayant d'autres bureau d'étude sises à Tataouine et Nabeul. la société est spécialisée dans le développement des projets dans le domaine des énergies renouvelables avec un focus sur l’énergie solaire. Son centre de compétence est bâti autour d’un pool d’ingénieurs qui sont spécialisés en conception de projet énergétique pour les secteurs privée et public.

\n

Nous sommes essaimée par la STEG

\n

Agréé par l’Agence Nationale de Maitrise de l’Energie (ANME)

\n

Portée par son succès et une croissance remarquable, notre société est composée à 80% de cadres supérieurs. Dans une perspective d'expansion continue, nous avons l'intention d'embaucher 10 nouveaux collaborateurs au cours des deux prochaines années.

\n
\n
\n
\n
\n
\n );\n}","import React,{useState} from \"react\";\nimport Carousel from 'react-bootstrap/Carousel'\n\n\n\nexport default function TeamMemebers(props) {\n const{nextIcon,prevIcon} = {prevIcon : ,\n nextIcon :\n } \n return (\n \n {\n createCarouselInner( props.team, props.listNumber)\n }\n \n );\n }\n\n\nfunction listTeam (team,listNumber){\n return team.map((item)=>{\n \n return
\n
\n
\n \"\"\n
\n {facebook(item.facebook)}\n {linkedin(item.linkedIn)}\n \n \n
\n
\n
\n
{item.name}
\n {item.position}\n
\n
\n
\n \n })\n}\nfunction createCarouselInner(team,listNumber){\n const innerCount = [...Array(Math.ceil(team.length/listNumber)).keys()]\n return innerCount.map((i)=>{\n return createCarouselItem(listTeam(team,listNumber).splice(i*listNumber,listNumber),i)\n })\n\n}\nfunction createCarouselItem (elem,key){\n return (\n
\n
\n
\n \n {elem[0]}\n {elem[1] ? elem[1] : '' }\n {elem[2] ? elem[2] : '' }\n
\n
\n
\n
); \n}\n\nfunction facebook (link){\n if( link !== undefined)\n return (\n \n );\n}\nfunction linkedin(link){\n if( link !== undefined)\n return (\n \n );\n}\nfunction Email (props){\n const [value,setValue] = useState()\n const copy = (e)=>{\n navigator.clipboard.writeText(props.link);\n setValue(\"Copié\")\n setTimeout(function(){setValue() }, 1000)\n }\n if( props.link !== undefined)\n return (\n \n );\n else \n return ('');\n}\nfunction Tel(props){\n const [value,setValue] = useState()\n const copy = (e)=>{\n navigator.clipboard.writeText(props.link);\n setValue(\"Copié\")\n setTimeout(function(){setValue() }, 1000)\n }\n if (props.link !== undefined)\n return (\n \n );\n else\n return ('');\n}\n\n\n","export default __webpack_public_path__ + \"static/media/zouhaier.4ad9b6e4.jpg\";","export default \"data:image/jpeg;base64,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\"","export default \"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD//gAfQ29tcHJlc3NlZCBieSBqcGVnLXJlY29tcHJlc3P/2wCEAAUFBQUGBQYHBwYJCQgJCQ0MCwsMDRMODw4PDhMdEhUSEhUSHRofGRcZHxouJCAgJC41LSotNUA5OUBRTVFqao4BBQUFBQYFBgcHBgkJCAkJDQwLCwwNEw4PDg8OEx0SFRISFRIdGh8ZFxkfGi4kICAkLjUtKi01QDk5QFFNUWpqjv/CABEIArwCWAMBIgACEQEDEQH/xAAcAAEAAgMBAQEAAAAAAAAAAAAABQYBBAcCAwj/2gAIAQEAAAAA/ZYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYefn9fQAAAAAAAAAAHmKiYvT8Y3OigAAAAAAAAAGNWFh9D5B7uU4AAAAAAAAAB8oKv6OAF2mwAAAAAAAAAeKvXPAAX+SAAAAAAAAAGISpa4AHu6TQAAAAAAAADzTIMAALHbgAAAAAAAAeaFGgAAT9yAAAAAAAACkwgAABN3XIAAAAAAACpVsAAALVZwAAAAAAAI2g4AAABdZwAAAAAAAMUCOAAAA2OjewAAAAAABoc9AAAALDcAAAAAAABV6sAAAAfXpgAAAAAAAoMYAAAAOk7AAAAAAABz3QAAAAF/kgAAAAAADnmiAAAALtNgAAAAAAHPNEAAAAXSdAAAAAAAOd6QAAAAuk6AAAAAAAxzX4gAAAC6ToAAAAAADHNPkAAAALpOgAAAAAAHMvmAAAALpOgAAAAAAHMfAAAAAuk6AAAAAAAcx8AAAAC6ToAAAAAADHMfIAAAAuk6AAAAAAAxzHyAAAALpOgAAAAAAMcx8gAAAC6ToAAAAAADHMvAAAAAuc8AAAAAAAxzP5gAAAC5zwAAAAAADHM/mAAAALnPAAAAAAAa1A1gAAAAmbhsAAAAAAAj+fAAAAAWyygAAAAAA1eb5AAAABbLKAAAAAADW5tkAAAAFwsIAAAAAAPjzQAAAAC42AAAAAAAGOY+QAAAAX2UAAAAAABjmvxAAAAB0TdAAAAAAA53pAAAAA6f6AAAAAAAp9eAAAADY6RkAAAAAACKoYAAAATt0AAAAAAAYosSAAAAe+jbAAAAAAABEUUAAAAn7kAAAAAAAPlzMAAAAuU+AAAAAAAMc1+IAAADoW+AAAAAAAFCiwAAAPr0wAAAAAAAFPrwAAAEpfQAAAAAAAQlJAAAAt9iAAAAAAAB55v8AAAA99H+4AAAAAAAFYqoAAATt0AAAAAAAAY55pAAAHrou0AAAAAAAAaHP/ACAAAn7kAAAAAAAAHPdAAABdJ0AAAAAAAAOZ/IAABdpsAAAAAAAAOYeQAAF1nAAAAAAAAB45iAAAXeaAAAAAAAAHz5kAAAXiZAAAAAAAAGpzkAAAu80AAAAAAAAIajgAAF2mwAAAAAAACGrkUAAASdz2wAAAAAAAImiAAAA3OiZAAAAAAABT68AAAB0/0AAAAAAACiRIAAAMdE3gAAAAAAAxzfXAAAAuNgAAAAAAACHowAAADd6IAAAAAAAFIhQAAADoW+AAAAAAARFJ+YAAABNXT2AAAAAACFrMcAAAAD6Tlq+4AAAAAGK/XtAAAAAAepq07gAAAABiEq+kAAAAAAzK2qRAAAADEHV9MAAAAAACWte/kAAACDrOgAAAAAAAElapUAAAxDVmOAAAAAAAAJC2SoAANSnRQAAAAAAAAEnbJIAB8qnA+QAAAAAAAADMxbtoAYq9c+QAAAAAAAAAGbDbsgRVQ0gAAAAAAAAAA+9psIVOt4AAAAAAAAAAASdx3dWlRoAAAAAAAAAAAer1TtQAAAAAAAAAAAD34AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/8QAGQEBAQEBAQEAAAAAAAAAAAAAAAQDAgEF/9oACAECEAAAAAAAAAAAAAAAAAAAAdadpgAAAAOttu/UmAAAAAdU7ehJgAAAANLOgE8oAAADq7oATTAAAAW6gAjxAAADu8ADiAAAAN6wAHz+QAABvWAAg4AAAFFQACDgAAAUVAAIOAAABTSAAg4AAAFNIACDgAAAU0gAIOAAABTSAAg4AAAOr/QAE8oAAB1f6AAyiAAAPfoegAMYwAAB9DoABPKAAALdQAEmAAAA0uAA5g8AAAHv0PQAYxgAAAv7ABJgAAACqgAPIOQAAAdX+gDGMAAABTSAIcwAAAFNIAg4AAAAVUACDgAAABXuAIOAAAAN6egBjGAAABf2AD5/IAAAdX+gAiyAAACioADKPwAABrToAAcYYeAADWnQAADnCfwAGtOgAAAc4T+AO6tQAAADnCfwe07+gAAAA5lxaV9gAAAADKP6HoAAAAAPPQAAAAAAAAAAAB//xAAYAQEBAQEBAAAAAAAAAAAAAAAAAwIBBP/aAAgBAxAAAAAAAAAAAAAAAAAAAAHM5VAAAAA5PHOLUAAAADkscC1AAAABmHAFagAAAOefgArUAAACGAAX2AAAGfOABr0AAABOIAD09AAAE4gAPRoAAATiAA9GgAABOIAD0aAAAEpAAPRoAAASkAA9GgAABKQAD0aAAAEpAAPRoAAA55+AAKWAAAOeYAA3cAAA55+AAN3AAAHm4AArUAAAQwAAtQAAAZ84AHfSAAAHPPwAFLAAAA8+QAWoAAACMwA76OgAAA55+ADdwAAAEpAC+wAAAE4gD0aAAAARmAPRoAAABGYA9GgAAAJy4AN3AAAA8+QAenoAAAc8/AAX2AAAE4gAbuAAAYngAA1TfQABieAAAO0p0AGJ4AAADtKdAZlgAAAA7XfRyWOAAAAA7bbMcgAAAADdvPwAAAAAHeAAAAAAAAAAAAD/xAA3EAACAQMCBAMGBAYCAwAAAAABAgMABBEFUAYhMUASIjIzQVFhcXITMDRgEBQgI2KAFUKBgpH/2gAIAQEAAT8A/wBVSQOpoyxDkXX/AO097awgFpBz+FDV9PUYDmre9tZs+Bx+wycVLdQxIWZhgVNrlrHGTGct7hVzxFcSgBUC1Lql5KMGQ4pppWOS5Josx6k/w09nF3DjPqH7ALAdTipdVs7d8O2fpUvEZUsI0BGan1e8lBHjKg+6mnmf1OT/AFRxtI4VRkmtM0gQMJZPVjfpr62hAJcZNXuvqCViGeXWp9Su5hhpDiixJyT+TounJFEJ5ACT6d9nvLe3U+JxV/rniDJD0+NPI7nLEn8sdRWjX8Elt4HIHh6fPeyQBkmtR1hI0KxHLVPcyzsWY/nRyMjAg1pmto6eCQ4IwBSsrDIII3i4uIokJdgABWoavJP5E5CiST2AJFaPqrQyBHPlpXRxlWBG7TzpBGWY4ArUb57mU8/L2mkas1vIqN6SedJIkgyrAjdHdUUsTgCtX1E3EvhQ+QdtpWpvbSBSfKTSOrKGU5B3PWdTZ2MMZwB17jQ9TWPxJKfktAgjcddvPwIQqsQx6UzFmJJ5nuASCCK0PUy4ETEk7gxABJrU7pri5bnyHTurWdoZlYHFWV9HcQeJB0wNv1idobNiOQblR7vQLox3HgJOCMAbfxIxV0j8X/jvIZGjkVgcEGrWUSwRsPht2rsWvpMnoe90JvFp0Z+Z27VDm+n+7veHp1NiqDqpOTt2p/rp/vPe8MkCF9u1L9dP9573hggRS527Uv11x9573hggRy7bJ6H+hq4JM8h/y73hggRy7bJ7N/tNT+2f697wwQI5dtl9m/2mpvav9e94YIEcu2y+yf7TUvtH+ve8MECOXbZfZSfaak5u3173hggRy7bN7GT7TT+tvr3vDBAjl22b2Mn2mn9bfXveGCBHLts3sZPtNP62+ve8MECOXbZR/ak+01ICHYfPveFyBHLtsns3+01N7V/r3vC5ASbbZXjEcg8Q9JqX2r/XveFyAk22atNJbWhZGwakvLh2JLnnR73TNVNijgID4q0rU47yNhjDL12viP8AQf8AtsHCp/vXH2ja9dQPZMPhz2DhUf3bg/4ja9b/AEbgfDYOFvVP9Nr1aAmxl8PuBzsHCw9sfltd3ztph/iacYdh8+/4cRVsS5HPJ2t18SMPiKuV8M8o+DHv+HxixH12zUY2ju5Qwxlie+HWrDwJZQ4Az4BnbOI4yLsNjAIx31pGJLiNT0LCkQIiqOgGNs16xkltlZeZXvtDshPP4jkBTkHbSAQRWrWP8tNkeljy7yONpHCqMk1pNgLa3XPUjJ27iSJBaoQvMHr3nD0CS3nm9wzt+sqrWEoIBOKPd8M26lJJfeDjb3AKMCMjFXK+GeQfPu9Cj/BsQxPq57hrKBdRnAGBnuoEDzIvxNQRLFCiL0A3DiK3Md2HyPP3WkQLNeIG6DceJLYmJJB0XljuuHbcLG0xAJPIbjdw/iW0qYBJWrmAwTNGTkjuIozJIqDqTWn24trZUHXHM7lr+msjfjJzX39xodqJZi7DKruc8KzRMjdDV/ZvazsjD6dsil3Vfia022S3gBC4YjnumtaZ/MoZF9YqRGR2U9R2ugWsc915x05jdtTZGv5ynpLcu14Z8Kwykj37q/ob6GpzmZz8+14ZYLBKT8d1k5Rv9pqQ5dj8+14ZYCCUn47rqKeGzk588Uep7Xhohbdyd11chLGQ9tw2wFs+d116VEsXUnmenbcNMFt3J3XidsQRD4ntuGnVbeTPuO5k4q716O3kKxoHIrUdUa9Cgp4QO2sNUms+SeknJFWOrRXUaoPLJuWu3f4EHgVsO1EknJ7ixuWt7hHB99I6uiuvQjO48RXBkuwmPQMd1pMqvYwgf9VAO463j/kJsHPPuuHjmy3CVwiMx6AVdyfi3Ej/ABPdcOXqqhgPvO4a3diGAoOrd3p85huo2zjnSsGUEHIO365dGe7YEeg47zQ7oPYAcsry21mVRliAKudct4lcJzfoDU0hlldz1Y57zSNU/k3w3NDVrqltcAkNjamdEGWIFXmuRRco+bA1cancz5BYhe/jleM5ViKs9dniPnOas9RtJQWDgfI7M7ogyzACrvXlRnVBn3CrjUbmcYZsCiSdiV2Q5Bq11y6iZc8xVtq9tOqqG8JxQIIyNhlmjiGXYCr3iCNV8MQyauL+4myGc4+GzqzKcg4q21e5hK5OQKs9cglRQxw1KysMqcjvXkRBl2AFXutxRnwocj34q5vp7g+ZuQ6bWCQastXuLbwjOVFWWt28owSFPzoEEAg5B7lnVBliAKvNbiiBEfNqutRuLgnxNgE9NvBIq21S6gK4fIHuNWWvwyKokGHpHVxlSCO1JCjJOBV7rUMBKx+ZquNTuZlKlsKTRJO5walcQgAN5RVjr8MgVZORJpWVgCpyD2V9rNvbrgHJ+VXmrXFw5IJA+FEknJ3e11SeEqCxKirLWoJSqOcMff8An3N7BAp8bgcuQ95q/wBcklykXlXNO7Ocsd6BKkEVaa1dQPzbIq11e0uAHJ8JHuNdfypp44ULswAFX+vu7ERclqWeWVsuxJ35WZTkGtN1x7ckSZZatryC4QFHBOMkfkX2tQ2+VTzNip7+eYtlvKfd+woLmaBso2KsOIcKElHm+NI6uoZTkH+iWaOJCzEACtU1tpvJEcCixY5Jz+xbLVJ7Zx5iRVlrFvOoHIEdB/C7vYrUZc8/hV5qU9wzAt5Sf2QjsjBlOCK0bVVnj/Ck9Qq7vJblyzn9lRyPG2VJB/14/8QAKhEAAgEEAAQGAgMBAAAAAAAAAQIDABEwQAQhMTISQUJQYXEgIhBSYFH/2gAIAQIBAT8A/wA+FY9BQgc0IPmjAAOvsCozdBSwf9NCNB5fhLKTyG8qljypIQOZ/OSIjmN2NC5+KVQosMMsV+Y20QsbUqhRYY5o/UNqJPCuWZLG46bEYu4zOviUjYg7jnfuOvB3H6zyd514BzOeTvOvw/nnk7zr8P6s8nedfh/Vnk7zr8P6s8nedfh/PPJ3nWQXYUABnmRfCW89ZO4fehN2HWHUUM8x/TXU3Azzn9QNeFroPjPObsBrxMQ4zM3hUmiSTfXBsRQyzmybMZugyznmBswNytlc3YnZRirA0CCL45nstvM7cDHmMcpu52+H9WOTvbb4foccne23AP0xyd7bUUQYXNBQosMckQIJ89qMWRcrizHYUXYCgLDLMtm+9iFDe5GaVSy0QRqrCxpYlXQZFbqKaA+VEEdRopCx+KWNV1CoPUU8H9aII6jKsTNSxquwQD1FNAPTRUjqMKxs1JEq/J3CAetPB/WiCOo/EKSbAUkIHM+wMoYc6eEjpz/lIy31SoFHL2N4lb7oqQbGgAB7LYH/ABv/xAAlEQEAAQMEAgICAwAAAAAAAAABAgAwQAMRMTJBUSBQIWAQE2H/2gAIAQMBAT8A/X1CnUK/s/yjU+gZBTqeqZL8IQzlCmb4+cZ5spbUq2Yz8OWuxSrbhLw5U3duwluZEnYb0XZyNTi/Hgx9Ti/DqY+pwX4dTH1PF+HUx9Txfh1MfU8X4dTH1PF+HUx9Txfh1MZ4cCEncMZ4cCHbGeMCHbHeW/p8uPM2b+mfjHmbl4N3Ib0O2TLs3dMydQ/O92JsGTI3LkDdy9Q824dcvU8W4dTL1OS3HqZepzbj1MqctuKVbcZplS7N04Mhdi9B3MiabXoOzjMwpmuAKUanuhwWYUyXEFKNT3QjdZhTNcgUo1PdCNlkFM1zBSifuh+KhUp+voBSozHn+ZSClX6MmlCP027+m//Z\"","import React from \"react\";\nimport Title from \"./Title\"\nimport Stat from \"./Stat\"\nimport Presentation from \"./Presentation\"\nimport TeamMemebers from \"./TeamMemebers\"\nimport StegLogo from \"../../assets/img/steg.png\"\nimport AnmeLogo from \"../../assets/img/anme.png\"\nimport AtfpLogo from \"../../assets/img/atfp.png\"\n\nimport ZouhaierPicutre from '../../assets/img/zouhaier.jpg'\nimport EmnaPicture from '../../assets/img/emna.jpg'\nimport ManelPicture from '../../assets/img/manel.jpg'\nimport WissalPicture from '../../assets/img/wissal.jpg'\nimport SyrinePicture from '../../assets/img/syrine.jpg'\nimport FillePicture from '../../assets/img/fille.jpg'\nimport HommePicture from '../../assets/img/homme.jpg'\n\nvar team = [\n {\n id:100,\n name:\"BEN MAAMAR Zouhaier\",\n position:\"Gérant et manager\",\n facebook:'https://www.facebook.com/benmaamar',\n linkedIn :'https://www.linkedin.com/in/ben-maamer-zouhaier-05501071/',\n email:'dg@universal-energy.tn',\n photo:ZouhaierPicutre\n },\n {\n id:101,\n name:\"LASOUED maroua\",\n position:\"Directrice des opérations\",\n tel:'+21692781700',\n email:'direction@universal-energy.tn',\n photo:FillePicture\n },\n {\n id:102,\n name:\"AFDHAL Abir\",\n position:\"Ingénieur d'étude\",\n tel:'+21628994919',\n email:'tech@universal-energy.tn',\n photo:FillePicture\n },\n {\n id:103,\n name:\"LABESSI Khalil\",\n position:\"Responsable Commercial Sud\",\n tel:'+21628994918',\n email:'commercial@universal-energy.tn',\n photo:HommePicture \n },\n {\n id:104,\n name:\"HLAILI Emna\",\n position:\"Responsable Commercial Nord\",\n tel:'+21629461007',\n email:'contact.nabeul@universal-energy.tn',\n photo:EmnaPicture \n },\n {\n id:105,\n name:\"FELHI Fakhri\",\n position:\"Responsable Service aprés vente\",\n photo:HommePicture \n },\n {\n id:106,\n name:\"KERKNI Chaima\",\n position:\"Gestionnaire financier\",\n tel:'+21629461067',\n email:'contact@universal-energy.tn',\n photo:FillePicture \n },\n {\n id:107,\n name:\"HAJ BRAHIM Hichem\",\n position:\"Chef d'équipe\",\n tel:'+21628994919',\n photo:HommePicture \n },\n {\n id:108,\n name:\"BOUGUILA Manel\",\n position:\"Technico-commerciale\",\n tel:'+21628994915',\n email:'contact.tataouine@universal-energy.tn',\n photo:ManelPicture\n },\n {\n id:109,\n name:\"BELAID Wissal\",\n position:\"Technico-commerciale\",\n tel:'+216228994215',\n photo:WissalPicture\n },\n {\n id:110,\n name:\"MJAHED Syrine\",\n position:\"Commerciale\",\n tel:'+21628994920',\n photo:SyrinePicture\n }\n]\nexport default function About(props) {\n return (\n <>\n \n <Stat/>\n <Presentation/>\n\n <div className=\"container-xxl py-5\">\n <div className=\"container\">\n <div className=\"text-center mx-auto mb-5\" style={{maxWidth: '600px'}}>\n <h1 className=\"mb-4\" style={{textShadow: \"0px 5px 5px #ffc107\",color:\"#318af2\"}}>Nos Partenaires</h1>\n </div>\n <div className=\"row\">\n <div className=\"col-sm-6 col-md-4 col-6 \">\n <div className=\"d-flex justify-content-center \">\n <img src={StegLogo} style={{width:\"200px\",height:\"160px\"}} alt=\"first\"></img> \n </div>\n </div>\n <div className=\"col-sm-6 col-md-4 col-6 \">\n <div className=\"d-flex justify-content-center \">\n <img src={AnmeLogo} style={{width:\"200px\",height:\"160px\"}} alt=\"second\"></img>\n </div>\n </div>\n <div className=\"col-sm-12 col-md-4 col-12 \">\n <div className=\"d-flex justify-content-center\">\n <img src={AtfpLogo} style={{width:\"200px\",height:\"160px\"}} alt=\"third\"></img>\n </div>\n </div>\n </div> \n </div>\n </div>\n <div className=\"container-xxl py-5\" id=\"team_component\">\n <div className=\"container\">\n\n <div className=\"text-center mx-auto mb-5\" style={{maxWidth: '600px'}}>\n <h1 className=\"mb-4\" style={{textShadow: \"0px 5px 5px #ffc107\",color:\"#318af2\"}}>Les membres de l'équipe</h1>\n </div>\n\n <TeamMemebers\n team={team}\n listNumber={3}\n /> \n \n </div>\n </div>\n \n </> \n );\n}","export default __webpack_public_path__ + \"static/media/emna.52d69406.jpg\";","export default __webpack_public_path__ + \"static/media/manel.324e315e.jpg\";","export default __webpack_public_path__ + \"static/media/wissal.4fcc9651.jpg\";","export default __webpack_public_path__ + \"static/media/syrine.5a7a7296.jpg\";","export default __webpack_public_path__ + \"static/media/carousel-5.8dd52a63.png\";","export default __webpack_public_path__ + \"static/media/carousel-6.9fdb77d1.png\";","export default __webpack_public_path__ + \"static/media/carousel-7.44e93cfb.png\";","import React from \"react\";\nimport carouselPicture5 from '../../assets/img/carousel-5.png'\nimport carouselPicture6 from '../../assets/img/carousel-6.png'\nimport carouselPicture7 from '../../assets/img/carousel-7.png'\nimport Carousel from 'react-bootstrap/Carousel'\n\n\nexport default function CarsouselPub(props) {\n return (\n <div className=\"container-fluid p-0 pb-5 \" id=\"carousel_component\" >\n \n <Carousel >\n \n <Carousel.Item className=\"owl-carousel-item position-relative\" >\n <img className=\"img-fluid\" src={carouselPicture5} alt=\"\" ></img>\n <div className=\"owl-carousel-inner\">\n <div className=\"container\">\n <div className=\"row justify-content-start\">\n <div className=\"col-10 col-lg-8\">\n <h1 className=\"display-2 text-white animated slideInDown\">Universal Energy intervient meme à Lomé, Togo</h1>\n <p className=\"fs-5 fw-medium text-white mb-4 pb-3 pt-5\">Nous suivons la soleil, nous sommes ou elle brille. En effet Togo est un pays généralement ensoleillé et l'exploitation solaire est son atout et nous avons déjà intervenu à Lomé pour un projet de site isolé.</p>\n \n </div>\n </div>\n </div>\n </div>\n </Carousel.Item>\n <Carousel.Item className=\"owl-carousel-item position-relative\" >\n <img className=\"img-fluid\" src={carouselPicture6} alt=\"\" ></img>\n <div className=\"owl-carousel-inner\">\n <div className=\"container\">\n <div className=\"row justify-content-start\">\n <div className=\"col-10 col-lg-8\">\n <h1 className=\"display-2 text-white animated slideInDown\">Universal Energy s'interesse au energies verte</h1>\n <p className=\"fs-5 fw-medium text-white mb-4 pb-3 pt-5\">L'energie solaire est notre atout. En plus, nous travaillons aussi sur l'exploitation des energie hydrolique et aerienne. Toutes nos projet sont bien étudié et conçue exactement pour subvenir les besoins de clients et atteindre ses objectifs energétique. </p>\n \n </div>\n </div>\n </div>\n </div>\n </Carousel.Item>\n <Carousel.Item className=\"owl-carousel-item position-relative\">\n <img className=\"img-fluid\" src={carouselPicture7} alt=\"\" ></img>\n <div className=\"owl-carousel-inner\">\n <div className=\"container\">\n <div className=\"row justify-content-start\">\n <div className=\"col-10 col-lg-8\">\n <h1 className=\"display-2 text-white animated slideInDown\">Universal energy au Maghreb</h1>\n <p className=\"fs-5 fw-medium text-white mb-4 pb-3 pt-5\">Nous sommes à l'écoute pour toutes les demandes d'installation photovoltaique au Maghreb entier, Nous intervenons sur place et assez rapidement. Vous faire profiter de la soleil est notre spécialité.</p>\n \n </div>\n </div>\n </div>\n </div>\n </Carousel.Item>\n </Carousel>\n</div>\n );\n}\n","export default __webpack_public_path__ + \"static/media/img-600x400-lome.ddf08e0a.jpg\";","export default __webpack_public_path__ + \"static/media/img-600x400-SbikhaPompage.67dea08e.jpg\";","export default __webpack_public_path__ + \"static/media/img-600x400-AichaHotel.afad8e79.jpg\";","export default __webpack_public_path__ + \"static/media/IMG-600x400-MairieMidoun.9294cd6a.jpg\";","export default __webpack_public_path__ + \"static/media/img-600x400-ResidenceYassin.939f0127.jpg\";","import React, {useState} from \"react\";\nimport Lome from \"../../assets/img/img-600x400-lome.jpg\"\nimport SbikhaPompage from \"../../assets/img/img-600x400-SbikhaPompage.jpg\"\nimport AichaHotel from \"../../assets/img/img-600x400-AichaHotel.jpg\"\nimport MairieMidoun from \"../../assets/img/IMG-600x400-MairieMidoun.jpg\"\nimport ResidenceYassin from \"../../assets/img/img-600x400-ResidenceYassin.jpg\"\n\nconst projectType = [\n \"Tout\",\n \"Site isolé\",\n \"Pompage d'eau\",\n \"Connecté aux réseaux\"\n]\n\nconst projects = [\n {\n id :0,\n name : \"Projet à Lomé\",\n description : \"Site isolé d'une puissance 5.25 kwc à Lomé, Togo\",\n location : 'Lomé',\n country : 'Togo',\n pictures : [Lome],\n type:'Site isolé'\n },\n {\n id :1,\n name : \"Projet à Sbikha\",\n description : \"Installation photovoltaique pour pompage de 20 chevaux A Sbikha, Kairouane\",\n location : 'Sbikha',\n country : 'Tunisie',\n pictures : [SbikhaPompage],\n type:\"Pompage d'eau\"\n },\n {\n id :2,\n name : \"Projet à Djerba\",\n description : \"Installation photovoltaique connecté au réseau 12,4 kwc à Djerba, Tunisie\",\n location : 'Djerba',\n country : 'Tunisie',\n pictures : [AichaHotel],\n type:\"Connecté aux réseaux\"\n },\n {\n id :3,\n name : \"Projet à Djerba\",\n description : \"Installation photovoltaique connecté au réseau à mairie midoun 35 KWC en Tunisie\",\n location : 'Djerba',\n country : 'Tunisie',\n pictures : [MairieMidoun],\n type:\"Connecté aux réseaux\"\n },\n {\n id :4,\n name : \"Projet à Djerba\",\n description : \"Installation photovoltaique connecté au réseau de 15 kwc pour une résidence privée à Djerba, Tunisie.\",\n location : 'Djerba',\n country : 'Tunisie',\n pictures : [ResidenceYassin],\n type:\"Connecté aux réseaux\"\n }\n]\n\nexport default function Projects(props) {\n const [activeType,SetActiveType] = useState(0);\n\n const activeHandlerType =(e)=>{\n SetActiveType(projectType.findIndex((item)=> {return item === e.target.innerText}));\n }\n return (\n <div className=\"container-xxl py-5\" id=\"project_component\">\n <div className=\"container\">\n <div className=\"text-center mx-auto mb-5 \" style={{maxWidth: '600px'}}>\n <h6 className=\"text-primary\">Nos Projets</h6>\n <h1 className=\"mb-4\">Visitez nos derniers projets solaire et d'energie renouvelable </h1>\n </div>\n <div className=\"row mt-n2 \">\n <div className=\"col-12 text-center\">\n <ul className=\"list-inline mb-5\" id=\"portfolio-flters\">\n <ProjectType projectType={projectType} active={activeType} onClick={(e)=> activeHandlerType(e)}/>\n </ul>\n </div>\n </div>\n <div className=\"row g-4 portfolio-container \">\n { \n <CreateProjectList activeType={activeType}/>\n }\n </div>\n </div>\n </div>\n );\n}\n\nfunction ProjectType(props){\n return props.projectType.map((item, index)=>{\n return <li className={index === props.active ? \"mx-2 active\" : \"mx-2\"} onClick={props.onClick} key={index}>{item}</li>\n })\n}\n\nfunction CreateProjectList(props){\n return projects.filter((item)=>{\n return (projectType[props.activeType] === item.type || projectType[props.activeType] ==='Tout')\n }).map((item)=>{return CreateProjectItem(item)}) \n}\n\nfunction CreateProjectItem(item){\n return (\n <div className=\"col-lg-4 col-md-6 portfolio-item first\" key={item.id.toString()}>\n <div className=\"portfolio-img rounded overflow-hidden\">\n <img className=\"img-fluid\" src={item.pictures[0]} alt=\"\"></img>\n <div className=\"portfolio-btn\">\n <a className=\"btn btn-lg-square btn-outline-light rounded-circle mx-1\" href={item.pictures[0]} data-lightbox=\"portfolio\"><i className=\"fa fa-eye\"></i></a>\n </div>\n </div>\n <div className=\"pt-3\">\n <p className=\"text-primary mb-0\">{item.name}</p>\n <hr className=\"text-primary w-25 my-2\"></hr>\n <h5 className=\"lh-base\"> {item.description}</h5>\n </div>\n </div>\n );\n}","import React from \"react\";\nimport CarsouselPub from \"./CarouselPub\";\nimport Projects from \"./Projects\";\nimport Stat from \"../about/Stat\";\n\nexport default function Project(props) {\n return (\n <>\n <CarsouselPub/>\n <Stat/>\n <Projects/>\n </> \n );\n}\n","import axios from 'axios';\nconst API_URL = process.env.REACT_APP_API ||'http://localhost:3001';\nconst API_PUBLIC = \"/api/public/\"\nconst PublicService = {\n setNewDevis(options) {\n return axios.post(API_URL +API_PUBLIC+ 'newDevis',options)\n .then(res => {\n return res.data;\n }).catch((err)=>{\n return err.response.data;\n })\n },\n setNewContact(options) {\n return axios.post(API_URL + API_PUBLIC+'newContact',options)\n .then(res => {\n return res.data;\n }).catch((err)=>{\n return err.response.data;\n })\n },\n getCaptcha(){\n return axios.get(API_URL + API_PUBLIC+'captcha')\n .then(res => {\n return res.data;\n }).catch((err)=>{\n return err.response.data;\n })\n },\n setNewCandidature(options){\n return axios.post(API_URL + API_PUBLIC+'newCandidature',options)\n .then(res => {\n return res.data;\n }).catch((err)=>{\n return err.response.data;\n })\n }\n}\nexport {PublicService};\n","\nimport React, { useState, useEffect } from \"react\";\nimport parse from 'html-react-parser';\nimport { PublicService } from \"../../services/public.service\";\n\n\nexport default function CaptchaFormulaire (props) {\n const [svg,setSvg] = useState(<div></div>)\n useEffect(()=>{\n PublicService.getCaptcha().then((res)=>{setSvg(res)})\n },[])\n \n const reload = ()=>{\n PublicService.getCaptcha().then((res)=>{setSvg(res)})\n }\n return (\n <>\n <h4 className=\"mb-3 text-center\">Captcha</h4> \n <div className=\"mb-5\">\n <div className=\"row justify-content-center\">\n <div className='col-auto text-center'> \n {parse(svg + \"\")}\n <br></br>\n <input onBlur={(e)=>props.handleCaptcha(e.target.value)}></input> <button onClick={reload}>reload</button>\n </div>\n </div>\n </div>\n </>)\n}","import React from \"react\";\nimport Container from 'react-bootstrap/Container';\nimport Row from 'react-bootstrap/Row';\nimport Col from 'react-bootstrap/Col';\nimport Spinner from 'react-bootstrap/Spinner';\nimport {Link} from \"react-router-dom\";\n\nexport default function SendCheck (props) {\n return (\n <>\n <Container className=\"py-5\">\n <Row className=\"justify-content-center\">\n {props.status === undefined ?\n <Col xs={12} className=\"text-center\">\n <Spinner animation=\"border\" className=\"text-center\" variant=\"success\" /> \n </Col>\n : ''}\n {props.status !== undefined ?\n <Col xs={12} className=\"text-center\">\n {props.status === false ? <i className=\"bi bi-x-circle text-danger\" style={{fontSize: \"40px\"}} ></i> : <i className=\"bi bi-check-circle text-success\" style={{fontSize: \"40px\"}} ></i> }\n {props.status === false ? <h3 className=\"text-danger text-center\">Formulaire non envoyé!</h3> : <h3 className=\"text-success text-center\">Demande envoyé avec succes</h3> }\n </Col>\n : ''}\n <Col lg=\"12\" className=\"text-center pt-5 \">\n <Link to=\"/\"className=\"btn btn-outline-primary\" >Acceuil</Link>\n </Col>\n </Row>\n </Container>\n </>\n );\n }","import React,{useState,useEffect} from \"react\";\nimport { PublicService } from \"../../services/public.service\";\nimport CaptchaFormulaire from \"../unstructuredComponents/CaptchaFormulaire\";\nimport SendCheck from \"../unstructuredComponents/SendCheck\";\n\nexport default function ContactFormulaire(props) {\n\n const [contactState,setContactState] = useState({})\n const contact={\n captcha:\"\"\n }\n \n const [sendStatus, setSendStatus] = useState(undefined)\n const [formState, setFormState] = useState(0);\n const handleInfo = (e)=>{\n contact[e.target.id]=e.target.value;\n }\n\n\n const handleContact = (event) => {\n const form = event.currentTarget;\n event.preventDefault();\n if (form.checkValidity() === false) {\n event.stopPropagation();\n }\n if(formState === 0 )\n setContactState(contact)\n if(formState === 1 )\n setContactState((prev)=>({...prev,captcha:contact.captcha}))\n setFormState(()=> formState +1);\n setTimeout(function(){form.classList.remove('was-validated');}, 1050);\n };\n\n const handleCaptcha = (captcha)=>{\n contact.captcha= captcha\n }\n\n useEffect(()=>{\n if (formState === 2){\n PublicService.setNewContact(contactState).then(res =>{\n if(res && res.message === \"captchaError\"){\n setTimeout(function(){setFormState(1)}, 2050);\n return;\n }\n if(res && res.success === 200){\n setSendStatus(true)\n setTimeout(function(){setFormState(0)}, 10050);\n }else{\n setSendStatus(false)\n setTimeout(function(){setFormState(1)}, 2050);\n } \n })\n }\n\n },[formState,contactState])\n\n return (\n <div className=\"container\">\n <div className=\"row justify-content-md-center\">\n <div className=\"col-8\">\n <h1 className=\"mb-4\">Contactez nous!</h1>\n <p className=\"mb-4\">Vous recevez une réponse dans un délai de 48 heures aprés l'envoie de message. Renseigner bien votre mail ou numéro de téléphone pour vous contacter.</p>\n <form>\n <div className=\"row g-3\">\n \n {formState === 0 ? <Form handleInfo={handleInfo}/> : ''}\n {formState === 1 ? <CaptchaFormulaire handleCaptcha={handleCaptcha}/> : ''}\n {formState === 2 ? <SendCheck status={sendStatus} /> : ''}\n <div className=\"col-12\">\n {formState < 2 ? <button className=\"btn btn-primary rounded-pill py-3 px-5\" onClick={handleContact}>Envoyer</button> : '' }\n </div>\n </div>\n </form>\n </div>\n </div>\n </div>\n );\n\n}\n\nfunction Form (props){\n return (\n <>\n <div className=\"col-md-6\">\n <div className=\"form-floating\">\n <input type=\"text\" className=\"form-control\" id=\"name\" onChange={props.handleInfo} placeholder=\"Nom\"></input>\n <label htmlFor=\"name\">Nom</label>\n </div>\n </div>\n <div className=\"col-md-6\">\n <div className=\"form-floating\">\n <input type=\"email\" className=\"form-control\" id=\"email\" onChange={props.handleInfo} placeholder=\"Email\"></input>\n <label htmlFor=\"email\">Email ou Tel</label>\n </div>\n </div>\n <div className=\"col-12\">\n <div className=\"form-floating\">\n <input type=\"text\" className=\"form-control\" id=\"subject\" onChange={props.handleInfo} placeholder=\"Sujet\"></input>\n <label htmlFor=\"subject\">Sujet</label>\n </div>\n </div>\n <div className=\"col-12\">\n <div className=\"form-floating\">\n <textarea className=\"form-control\" placeholder=\"Leave a message here\" id=\"message\" onChange={props.handleInfo} style={{height: \"100px\"}}></textarea>\n <label htmlFor=\"message\">Message</label>\n </div>\n </div>\n </>);\n}\n","import React from \"react\";\n\n\n\nexport default function ContactMap(props) {\n return ( \n <div className=\"position-relative h-100\">\n <iframe className=\"position-absolute w-100 h-100\" style={{objectFit: \"cover\"}} title=\"location universal energy\"\n src=\"https://maps.google.com/maps?q=universal%20energy%20djerba&t=&z=13&ie=UTF8&iwloc=&output=embed\"\n frameBorder=\"0\" aria-hidden=\"false\"\n tabIndex=\"0\" >\n </iframe> \n </div>\n\n );\n\n}\n","import React from \"react\";\nimport ContactFormulaire from \"./ContactFormulaire\";\nimport ContactMap from \"./ContactMap\";\n\nexport default function ContactStruct(props) {\n\n\n return (\n <div className=\"container-fluid bg-light overflow-hidden px-lg-0\" style={{margin: \"6rem 0\"}}>\n <div className=\"container contact px-lg-0\">\n <div className=\"row g-0 mx-lg-0\">\n <div className=\"col-lg-6 text-center py-5\">\n <ContactFormulaire/>\n </div>\n <div className=\"col-lg-6 pe-lg-0\" style={{minHeight: '400px'}}>\n <ContactMap/>\n </div>\n \n </div>\n </div>\n </div>\n );\n\n}\n\n","import React from \"react\";\nimport Title from \"../about/Title\";\nimport ContactStruct from \"./ContactStruct\";\n\nexport default function Contact(props) {\n return (\n <>\n <Title title=\"Contact\"/>\n <ContactStruct/>\n </>\n );\n}","import React from \"react\";\nimport {\n Outlet\n} from \"react-router-dom\";\n\nexport default function SignIn() {\n return (\n <>\n <Outlet />\n </>\n );\n}\n","import React , { useState } from \"react\";\n\n\nexport default function SiForm(props) {\n const [item,setItem] = useState('');\n\n const handleChange = (e) => {\n setItem(previousState => {\n return { ...previousState, [e.target.title]:e.target.value }\n })\n }\n const addItem = () => {\n if(Array.isArray(props.consommation))\n props.handleConsommation([...props.consommation,item])\n else\n props.handleConsommation([item])\n setItem('');\n }\n const ItemsList = () => {\n if(props.consommation !== undefined && Array.isArray(props.consommation))\n return (\n props.consommation.map((item,index)=>{\n return (\n <tr key={index}>\n <th scope='row' >{index}</th>\n <td>{item.deviceName}</td>\n <td>{item.count}</td>\n <td>{item.timeUse}</td>\n <td>{item.power}</td>\n <td><button className=\"btn btn-danger\" onClick={(e)=> deleteItem(index,e)}>-</button></td> \n </tr>\n );\n })\n );\n return null;\n }\n \n const deleteItem = (itemIndex,e) => {\n e.preventDefault()\n props.handleConsommation(props.consommation.filter((item,index) => {return index !== itemIndex}))\n setItem('');\n }\n\n return (\n <>\n <h4 className='mb-3 text-center'>Consommation</h4>\n <div className='col-md-2'>\n <label htmlFor='nombre_equipement' className='form-label'>Nb equipement </label>\n <input type='number' value={item.count === undefined ? \"\" : item.count} onChange={(e)=>{handleChange(e)}} title=\"count\" className='form-control text-dark' placeholder=''></input>\n </div>\n <div className='col-md-4'> \n <label htmlFor='equipement' className='form-label'>Equipement</label>\n <input type='text' value={item.deviceName === undefined ? \"\" : item.deviceName }onChange={(e)=>{handleChange(e)}} title=\"deviceName\" className='form-control text-dark' placeholder=''></input>\n </div>\n <div className='col-md-2'> \n <label htmlFor='heures_equipement' className='form-label'>durée utilisation</label> \n <input type='text' value={item.timeUse === undefined ? \"\" : item.timeUse } onChange={(e)=>{handleChange(e)}} title=\"timeUse\" className='form-control text-dark' placeholder=''></input>\n </div>\n <div className='col-md-2'> \n <label htmlFor='puissance_equipement' className='form-label'>Puissance (kwh)</label> \n <input type='text' value={item.power === undefined ? \"\" : item.power} onChange={(e)=>{handleChange(e)}} title=\"power\" className='form-control text-dark' placeholder=''></input> \n </div>\n <div className='col-md-2 '>\n <div className='row justify-content-md-center'>\n <div className='col-12' align='center'><label htmlFor='nombre_equipement' className='form-label '>Ajouter</label></div>\n <div className='col-12' align='center'><button className='btn btn-primary btn-lg' type='button' onClick={addItem} ><i className='fa fa-plus'></i></button></div>\n </div>\n </div>\n \n <div className='table-responsive'>\n <table className='table'>\n <thead>\n <tr>\n <th scope='col'>#</th>\n <th scope='col'>Equipement</th>\n <th scope='col'>Nombre d'equipement</th>\n <th scope='col'>Heures d'utilisation</th>\n <th scope='col'>Puissance</th>\n <th scope='col'>Edit</th>\n </tr>\n </thead>\n <tbody id='added'>\n {ItemsList()}\n { <Total consommation={props.consommation}/>}\n </tbody>\n </table>\n </div>\n </>\n );\n}\n\n\n\nfunction Total(props){\n return (\n <tr className='table-info'>\n <th scope='row' >Total</th>\n <td></td>\n <td >{props.consommation.length > 0 ? props.consommation.reduce((total,item)=>{return total + parseInt(item.count)},0) : 0}</td>\n <td></td>\n <td >{props.consommation.length > 0 ? props.consommation.reduce(( total,item)=> {return total +(parseInt(item.power) * parseInt(item.count) * parseInt(item.timeUse))} , 0) : 0}</td>\n <td></td>\n </tr>\n );\n}\n","import React from \"react\";\n\n\nexport default function PompageForm(props) {\n \n const handleChange = (e)=>{\n props.handleConsommation(new Array({powerHorse:e.target.value,powerKhw:(parseInt(e.target.value)* 0.74569987).toFixed(2) + ' Kwh',powerPv:(parseInt(e.target.value)* 0.74569987 *1.5).toFixed(2) + ' Kwc' }))\n }\n return (\n <>\n <h4 className='mb-3 text-center'>Consommation</h4>\n <div className='col-md-6'> \n <label htmlFor='puissance_pompage' className='form-label'>Puissance de pompage</label>\n <input className='form-control text-dark' placeholder='Nombre de cheveaux' value ={props.consommation.length === 0 || props.consommation[0].powerHorse === undefined ? 0 : props.consommation[0].powerHorse} onChange={e => {handleChange(e)}} required></input>\n <div className='invalid-feedback'>Puissance non valide. </div>\n </div>\n <div className='col-3'>\n <div className='row'><label htmlFor='total_puissance' className='col-sm-12 dark col-form-label '>Puissance</label>\n <div className='col-sm-12'>\n <input type='text' value ={props.consommation.length === 0 || props.consommation[0].powerKhw === undefined ? 0 : props.consommation[0].powerKhw} className='form-control-plaintext text-dark' readOnly></input>\n </div>\n </div>\n </div>\n <div className='col-3'>\n <div className='row'><label htmlFor='total_puissance_pv' className='col-sm-12 dark col-form-label '>PV</label>\n <div className='col-sm-12'>\n <input type='text' value ={props.consommation.length === 0 || props.consommation[0].powerPv === undefined ? 0 : props.consommation[0].powerPv} className='form-control-plaintext text-dark' readOnly></input>\n </div>\n </div>\n </div>\n </>\n );\n}\n","import React from \"react\";\nimport Row from 'react-bootstrap/Row';\nimport Col from 'react-bootstrap/Col';\nimport Card from 'react-bootstrap/Card';\n\nexport default function SummaryForm (props){\n const vide = \" \";\n const client = props.client;\n const ItemsList = (consommation) => {\n if(consommation !== undefined)\n return (\n consommation.map((item,index)=>{\n return (\n <tr key={index}>\n <th scope='row' >{index}</th>\n <td>{item.deviceName}</td>\n <td>{item.count}</td>\n <td>{item.timeUse}</td>\n <td>{item.power}</td>\n </tr>\n );\n })\n );\n return null;\n }\n const Total = (consommation) => {\n return (\n <tr className='table-info'>\n <th scope='row' >Total</th>\n <td></td>\n <td >{consommation.length > 0 ? consommation.reduce((total,item)=>{return total + parseInt(item.count)},0) : 0}</td>\n <td></td>\n <td >{consommation.length > 0 ? consommation.reduce(( total,item)=> {return total +(parseInt(item.power) * parseInt(item.count) * parseInt(item.timeUse))} , 0) : 0}</td>\n </tr>\n );\n }\n return (\n <>\n <h4 className=\"mb-3 text-center\">Récapitulatif</h4>\n <Col xs=\"12\">\n \n <Row className=\"justify-content-center\">\n <Col xs =\"11\">\n \n <Card border=\"secondary\" >\n <Card.Header className=\"text-center text-primary fw-bolder\" >Coordonnées</Card.Header>\n <Card.Body>\n \n \n \n <Row >\n <label className=\"col-sm-3 py-2 text-dark fw-bolder\">Nom de la société :</label>\n <Col xs=\"12\" sm=\"3\" className=\"py-2\">\n <p className=\"text-danger\">{client.information.societyName || vide} </p>\n </Col>\n <label className=\"col-sm-3 py-2 text-dark fw-bolder\">Nom :</label>\n <Col xs=\"12\" sm=\"3\" className=\"py-2\">\n <p className=\"text-danger\">{client.information.firstName|| vide}</p>\n </Col>\n <label className=\"col-sm-3 py-2 text-dark fw-bolder\">Prenom :</label>\n <Col xs=\"12\" sm=\"3\" className=\"py-2\">\n <p className=\"text-danger\">{client.information.lastName|| vide}</p>\n </Col>\n <label className=\"col-sm-3 py-2 text-dark fw-bolder\">Téléphone :</label>\n <Col xs=\"12\" sm=\"3\" className=\"py-2\">\n <p className=\"text-danger\">{client.information.phone|| vide}</p>\n </Col>\n <label className=\"col-sm-3 py-2 text-dark fw-bolder\">Email :</label>\n <Col xs=\"12\" sm=\"3\" className=\"py-2\">\n <p className=\"text-danger\">{client.information.email|| vide}</p>\n </Col>\n </Row>\n \n \n </Card.Body>\n </Card>\n </Col>\n \n <Col xs =\"11\" className=\"py-5\">\n \n <Card border=\"secondary\" >\n <Card.Header className=\"text-center text-primary fw-bolder\" >Projet</Card.Header>\n <Card.Body>\n \n \n \n <Row >\n <label className=\"col-sm-3 text-dark fw-bolder\">Secteur :</label>\n <Col xs=\"12\" sm=\"3\" >\n <p className=\"text-danger\">{ client.projects[0].projectSector }</p>\n </Col>\n <label className=\"col-sm-3 text-dark fw-bolder\">Type de projet :</label>\n <Col xs=\"12\" sm=\"3\" >\n <p className=\"text-danger\">{ client.projects[0].projectType === \"SI\" ? \"Site isolé\" : client.projects[0].projectType === \"CR\"? \"Connecté au reseaux\" : \"Pompage solaire\" } </p>\n </Col>\n <label className=\"col-sm-3 py-2 text-dark fw-bolder\">référence de steg :</label>\n <Col xs=\"12\" sm=\"3\" className=\"py-2\">\n <p className=\"text-danger\"> { client.projects[0].stegRef}</p>\n </Col>\n <label className=\"col-sm-3 py-2 text-dark fw-bolder\">Lieu d'installation :</label>\n <Col xs=\"12\" sm=\"3\" className=\"py-2\">\n <p className=\"text-danger\">{ client.projects[0].projectLocationType}</p>\n </Col>\n <label className=\"col-sm-3 py-2 text-dark fw-bolder\">Addresse :</label>\n <Col xs=\"12\" sm=\"3\" className=\"py-2\">\n <p className=\"text-danger\">{ client.projects[0].street}</p>\n </Col>\n <label className=\"col-sm-3 py-2 text-dark fw-bolder\">Pays:</label>\n <Col xs=\"12\" sm=\"3\" className=\"py-2\" >\n <p className=\"text-danger\">{client.projects[0].country}</p>\n </Col>\n <label className=\"col-sm-3 py-2 text-dark fw-bolder\">Ville :</label>\n <Col xs=\"12\" sm=\"3\" className=\"py-2\">\n <p className=\"text-danger\">{ client.projects[0].city}</p>\n </Col>\n <label className=\"col-sm-3 py-2 text-dark fw-bolder\">Code postale :</label>\n <Col xs=\"12\" sm=\"3\" className=\"py-2\">\n <p className=\"text-danger\">{client.projects[0].zip}</p>\n </Col>\n </Row>\n \n \n </Card.Body>\n </Card>\n </Col>\n \n \n { client.projects[0].projectType === \"SI\" || client.projects[0].projectType === \"PS\"? \n <Col xs =\"11\" className=\"py-2\">\n \n <Card border=\"secondary\" >\n <Card.Header className=\"text-center text-primary fw-bolder \" >Consommation</Card.Header>\n <Card.Title className=\"text-center\"> {client.projects[0].projectType === \"PS\" ? \"\" : \"Liste des equipements\"}</Card.Title>\n <Card.Body>\n \n \n { client.projects[0].projectType === \"PS\" ?\n <Row >\n <label className=\"col-4 text-dark fw-bolder\">Puissance de pompage :</label>\n <Col xs=\"2\" >\n <p className=\"text-danger\">{ client.projects[0].consommation[0].powerHorse.toString().concat(\" Ph\") }</p>\n </Col>\n <label className=\"col-3 text-dark fw-bolder\">Puissance :</label>\n <Col xs=\"3\" >\n <p className=\"text-danger\">{ client.projects[0].consommation[0].powerKhw } </p>\n </Col>\n <label className=\"col-4 py-2 text-dark fw-bolder\">référence de steg :</label>\n <Col xs=\"3\" className=\"py-2\">\n <p className=\"text-danger\"> { client.projects[0].consommation[0].powerPv }</p>\n </Col>\n \n </Row>\n : \n <Row >\n <Col xs=\"12\" >\n <div className='table-responsive'>\n <table className='table'>\n <thead>\n <tr>\n <th scope='col'>#</th>\n <th scope='col'>Equipement</th>\n <th scope='col'>Nombre d'equipement</th>\n <th scope='col'>Heures d'utilisation</th>\n <th scope='col'>Puissance</th>\n </tr>\n </thead>\n <tbody id='added'>\n {ItemsList(client.projects[0].consommation)}\n {Total (client.projects[0].consommation)}\n </tbody>\n </table>\n </div>\n </Col>\n \n \n </Row>\n }\n \n </Card.Body>\n </Card>\n </Col> : \" \"}\n \n \n <Col xs =\"11\" className=\"py-5\">\n \n <Card border=\"secondary\" >\n <Card.Header className=\"text-center text-primary fw-bolder\">Remarque</Card.Header>\n <Card.Body>\n \n <Card.Text>\n {client.projects[0].remark}\n </Card.Text>\n \n </Card.Body>\n </Card>\n </Col>\n </Row>\n </Col>\n </>\n );\n }","import React, { useState, useEffect } from \"react\";\nimport Logo from \"../../assets/img/logo.png\"\nimport SiForm from \"./SiForm\";\nimport PompageForm from \"./PompageForm\";\nimport SummaryForm from \"./SummaryForm\"\nimport Form from 'react-bootstrap/Form'\nimport {Link} from \"react-router-dom\";\nimport ProgressBar from 'react-bootstrap/ProgressBar';\nimport Container from 'react-bootstrap/Container';\nimport Row from 'react-bootstrap/Row';\nimport Col from 'react-bootstrap/Col';\nimport Spinner from 'react-bootstrap/Spinner';\nimport { PublicService } from \"../../services/public.service\";\nimport parse from 'html-react-parser';\nvar client = {\n information : {},\n projects : []\n};\n\n\nexport default function Devis(props) {\n const [validated, setValidated] = useState(false);\n const [formState, setFormState] = useState(0);\n const [sendStatus, setSendStatus] = useState(undefined)\n const handleProjectInformation = (e) => {\n client.projects[0][e.target.title] = e.target.value \n }\n const handleCaptcha = (captcha)=>{\n client.captcha = captcha;\n }\n \n useEffect (() => {\n \n if(validated ){\n if(formState === 0 \n && (client.information[\"lastName\"] !== \"\") && client.information[\"lastName\"]\n && (client.information[\"firstName\"] !== \"\") && client.information[\"firstName\"]\n && (client.information[\"phone\"] !== \"\") && client.information[\"phone\"] ){\n setValidated(false);\n setFormState(()=> formState +1);\n if(client.projects.length === 0)\n client.projects.push({})\n\n }else if ( formState === 1\n && client.projects[0].projectSector && client.projects.projectSector !== \"\"\n && client.projects[0].projectType && client.projects.projectType !== \"\"\n && client.projects[0].country && client.projects.country !== \"\"\n && client.projects[0].city && client.projects.city !== \"\") {\n setValidated(false);\n setFormState(()=> formState +1);\n }else if (formState >= 2){\n setValidated(false);\n setFormState(()=> formState +1);\n }\n }\n if(formState === 5){\n PublicService.setNewDevis(client).then(res=>{\n if(res && res.message === \"captcha error\"){\n setFormState(4)\n return;\n }\n if(res && res.success === 200){\n setSendStatus(true)\n }else{\n setSendStatus(false)\n } \n })\n }\n },[validated,formState])\n\n const handleEndInput = (e) => {\n client.information[e.target.title] = e.target.value;\n }\n\n const handleSubmit = (event) => {\n const form = event.currentTarget;\n event.preventDefault();\n if (form.checkValidity() === false) {\n event.stopPropagation();\n }\n setValidated(true);\n setTimeout(function(){form.classList.remove('was-validated');setValidated(false);}, 1050);\n };\n\n return (\n <> \n <div className=\"container-sm py-5 \">\n <div className=\"py-5 text-center \">\n <img className=\"d-block mx-auto mb-4\" src={Logo} alt=\"\" width=\"192\" height=\"165\"></img>\n <h2 className=\"text-primary \" style={{textShadow: \"0px 5px 5px #ffc107\",color:\"#318af2\"}} >Devis gratuit</h2>\n <span className=\"lead \">{ formState < 3 ? \"Remplissez le formulaire soigneusement, toutes les données sont nécéssaire pour effectuer un devis aproximatif\" : \n formState === 3 ? \"Verifiez vos données avant de valider le formulaire.\" : \" \"}</span> \n </div>\n <Form className=\"needs-validation\" validated={validated} onSubmit={handleSubmit} noValidate >\n <div className=\"row g-3 \">\n \n { formState === 0 ? <ClientInformation handleEndInput={handleEndInput} /> : ''}\n { formState === 1 ? <ProjectInformation handleProjectInformation={handleProjectInformation} /> : ''}\n { formState === 2 ? <RemarkInformation handleProjectInformation={handleProjectInformation} /> : ''}\n { formState === 3 ? <SummaryForm client={client}/>: ''}\n { formState === 4 ? <Captcha handleCaptcha={handleCaptcha}/> : ''}\n { formState === 5 ? <SendCheck status={sendStatus} /> : ''}\n \n <div className=\"d-grid gap-2 d-md-flex justify-content-md-center\">\n { formState <= 4 && formState >= 1 ? <button className=\"btn btn-primary \" onClick={(e)=>{e.preventDefault();setFormState(()=> formState - 1) ;}} > Retour </button> : \"\"} \n { formState !== 5 ? <button className=\"btn btn-primary \" >{formState === 0 || formState === 1? \"Suivant\" : \"Valider\"}</button> : ''}\n </div>\n </div>\n </Form>\n { formState <= 3 ?<ProgressForm state={formState}/> : ''}\n </div>\n </>\n );\n}\n\nfunction ClientInformation (props){\n const handleEndInput = props.handleEndInput;\n return (<>\n <h4 className=\"mb-3 text-center\">Coordonnées</h4>\n \n <div className=\"col-sm-4\">\n <label htmlFor=\"nom_societe\" className=\"form-label text-dark\">Nom de la société</label>\n <input type=\"text\" className=\"form-control\" title=\"societyName\" placeholder=\"\" defaultValue = {\"\" || client.information.societyName} onBlur={(e)=>handleEndInput(e)} ></input>\n <div className=\"invalid-feedback\">\n Le nom de la société ne peut pas etre vide.\n </div>\n </div>\n \n <div className=\"col-sm-4\">\n <label htmlFor=\"Nom\" className=\"form-label text-dark\">Nom*</label>\n <input type=\"text\" className=\"form-control\" title=\"firstName\" placeholder=\"\" defaultValue = {\"\" || client.information.firstName} onBlur={(e)=>handleEndInput(e)} required></input>\n <div className=\"invalid-feedback\">\n Le Nom ne peut pas etre vide.\n </div>\n </div>\n \n <div className=\"col-sm-4\">\n <label htmlFor=\"Prenom\" className=\"form-label text-dark\">Prenom*</label>\n <input type=\"text\" className=\"form-control\" title=\"lastName\" placeholder=\"\" defaultValue = {\"\" || client.information.lastName} onBlur={(e)=>handleEndInput(e)} required></input>\n <div className=\"invalid-feedback\">\n Le prenom ne peut pas etre vide.\n </div>\n </div>\n \n <div className=\"col-5\">\n <label htmlFor=\"tel\" className=\"form-label text-dark\">Téléphone* </label>\n <input type=\"tel\" className=\"form-control\" title=\"phone\" placeholder=\"\" defaultValue ={\"\" || client.information.phone} onBlur={(e)=>handleEndInput(e)} required></input>\n <div className=\"invalid-feedback\">\n Entrer un numero valide.\n </div>\n </div>\n \n <div className=\"col-7\">\n <label htmlFor=\"email\" className=\"form-label text-dark\">Email</label>\n <input type=\"email\" className=\"form-control\" title=\"email\" placeholder=\"\" defaultValue ={\"\" || client.information.email} onBlur={(e)=>handleEndInput(e)} ></input>\n <div className=\"invalid-feedback\">\n Entrer un mail valide.\n </div>\n </div>\n\n <hr className=\"my-4\"></hr>\n </>\n \n );\n}\n\nfunction ProgressForm(props) {\n return (\n <>\n <Container className=\"py-5\">\n <Row className=\"justify-content-md-center\">\n <Col xs lg=\"6\">\n <ProgressBar animated striped variant=\"success\" label={`${props.state}/3`} now={props.state * 100/3 || 0} />\n </Col>\n </Row>\n </Container>\n </>\n );\n}\n\nfunction SendCheck (props) {\n return (\n <>\n <Container className=\"py-5\">\n <Row className=\"justify-content-center\">\n {props.status === undefined ?\n <Col xs={12} className=\"text-center\">\n <Spinner animation=\"border\" className=\"text-center\" variant=\"success\" /> \n </Col>\n : ''}\n {props.status !== undefined ?\n <Col xs={12} className=\"text-center\">\n {props.status === false ? <i className=\"bi bi-x-circle text-danger\" style={{fontSize: \"40px\"}} ></i> : <i className=\"bi bi-check-circle text-success\" style={{fontSize: \"40px\"}} ></i> }\n {props.status === false ? <h3 className=\"text-danger text-center\">Formulaire non envoyé!</h3> : <h3 className=\"text-success text-center\">Demande envoyé avec succes</h3> }\n </Col>\n : ''}\n <Col lg=\"12\" className=\"text-center pt-5 \">\n <Link to=\"/\"className=\"btn btn-outline-primary\" >Acceuil</Link>\n </Col>\n </Row>\n </Container>\n </>\n );\n}\n\nfunction ProjectInformation (props){\n const handleProjectInformation = props.handleProjectInformation;\n\n const [visibleRefSteg,setVisibleRefSteg] = useState(true);\n const [visibleNoProject, setvisibleNoProject] = useState(true);\n const [currentProjectType, setCurrentProjectType] = useState(client.projects[0].projectType);\n const [consommation,setConsommation] = useState(client.projects[0].consommation)\n\n\n useEffect(()=>{\n visibilityProjectType(currentProjectType)\n },[currentProjectType])\n \n const handleConsommation = (data) => {\n client.projects[0].consommation = data;\n setConsommation(data) \n }\n\n const handleProjectType = (e) => {\n setCurrentProjectType(e.target.value)\n handleProjectInformation(e);\n }\n\n const visibilityProjectType = (val)=>{\n\n if (val === undefined || val === \"\"){\n setvisibleNoProject(true)\n } else {\n setvisibleNoProject(false)\n }\n\n if (val === 'CR'){\n setVisibleRefSteg(false)\n }else{\n setVisibleRefSteg(true)\n } \n }\n\n return(\n <>\n <h4 className=\"mb-3 text-center\">Projets</h4> \n <div className=\"col-12\" >\n <div className=\"row\">\n\n <div className=\"col-md-5\">\n <label htmlFor=\"projectSector\" className=\"form-label\">Secteurs</label>\n <Form.Select className=\"form-select\" value={ client.projects[0].projectSector } title=\"projectSector\" onChange={(e=>{handleProjectInformation(e) })} required>\n <option value=\"\" >Selectionner le secteur</option>\n <option value=\"privee\" >Privée</option>\n <option value=\"public\">Public</option>\n </Form.Select>\n <div className=\"invalid-feedback\">\n Secteur est requis.\n </div>\n </div>\n \n <div className=\"col-md-4\">\n <label htmlFor=\"projectType\" className=\"form-label\">Type de projet</label>\n <Form.Select className=\"form-select\" value={client.projects[0].projectType} onChange={handleProjectType} title=\"projectType\" required>\n <option value=\"\" >Selectionner le type de projet</option>\n <option value=\"SI\">Site isolé</option>\n <option value=\"CR\">Connecté au reseaux</option>\n <option value=\"PS\">Pompage solaire</option>\n </Form.Select>\n <div className=\"invalid-feedback\">\n Type de projet est requis.\n </div>\n </div>\n \n <div className=\"col-md-3\">\n <label htmlFor=\"stegRef\" className=\"form-label\">Référence de Steg</label>\n <input type=\"text\" className=\"form-control\" onChange={(e=>{handleProjectInformation(e) })} title=\"stegRef\" defaultValue = {\"\" ||client.projects[0].stegRef} placeholder=\"\" disabled={ visibleRefSteg}></input>\n <div className=\"invalid-feedback\">\n La référence de steg est requis.\n </div>\n </div>\n \n <div className=\"col-12\">\n <label htmlFor=\"projectLocationType\" className=\"form-label\">Lieu d'installation</label>\n <input type=\"text\" className=\"form-control\" onChange={(e=>{handleProjectInformation(e) })} title=\"projectLocationType\" defaultValue = {\"\" ||client.projects[0].projectLocationType } list=\"datalistOptions\" placeholder=\"Commercial, Domestique, Agricol, industriel\" disabled={visibleNoProject}></input>\n <datalist id=\"datalistOptions2\">\n <option value=\"Commercial\" ></option>\n <option value=\"Domestique\"></option>\n <option value=\"Agricol\"></option>\n <option value=\"industriel\"></option>\n </datalist>\n </div>\n \n <div className=\"col-12\">\n <label htmlFor=\"street\" className=\"form-label\">Address</label>\n <input type=\"text\" className=\"form-control\" onChange={(e=>{handleProjectInformation(e) })} title=\"street\" defaultValue = {\"\" ||client.projects[0].street} placeholder=\"\" disabled={ visibleNoProject}></input>\n <div className=\"invalid-feedback\">\n L'adresse est obligatoire.\n </div>\n </div>\n \n <div className=\"col-md-5\">\n <label htmlFor=\"country\" className=\"form-label\">Pays</label>\n <input className=\"form-control\" onChange={(e=>{handleProjectInformation(e) })} list=\"datalistOptions\" title=\"country\" defaultValue = {\"\" ||client.projects[0].country } placeholder=\"\" disabled={visibleNoProject} required ></input>\n <datalist id=\"datalistOptions\">\n <option value=\"Tunisie\" ></option>\n <option value=\"Algerie\"></option>\n <option value=\"Maroc\"></option>\n <option value=\"Lybie\"></option>\n <option value=\"egypt\"></option>\n </datalist>\n <div className=\"invalid-feedback\">\n Le pays est requis.\n </div>\n </div>\n \n <div className=\"col-md-4\">\n <label htmlFor=\"city\" className=\"form-label\">Ville</label>\n <input className=\"form-control\" onChange={(e=>{handleProjectInformation(e) })} list=\"datalistOptions1\" title=\"city\" defaultValue = {\"\" ||client.projects[0].city } placeholder=\"\" disabled={visibleNoProject} required></input>\n <datalist id=\"datalistOptions1\">\n <option defaultValue=\"Djerba\" ></option>\n <option defaultValue=\"Mednine\"></option>\n <option defaultValue=\"Nabeul\"></option>\n <option defaultValue=\"Guellala\"></option>\n <option defaultValue=\"tataouine\"></option>\n </datalist>\n <div className=\"invalid-feedback\">\n Please provide a valid state.\n </div>\n </div>\n \n <div className=\"col-md-3\">\n <label htmlFor=\"zip\" className=\"form-label\">Code postale</label>\n <input type=\"text\" onChange={(e=>{handleProjectInformation(e) })} className=\"form-control\" title=\"zip\" defaultValue = {\"\" ||client.projects[0].zip } placeholder=\"\" disabled={ visibleNoProject} ></input>\n <div className=\"invalid-feedback\">\n Code postale est requis\n </div>\n </div>\n\n </div>\n </div>\n\n <hr className=\"my-4\"></hr>\n\n { currentProjectType === 'SI' ? <SiForm consommation={consommation === undefined ? [] : consommation} handleConsommation={items => {handleConsommation(items)}}/> : '' }\n { currentProjectType === 'PS' ? <PompageForm consommation={consommation === undefined ? [] : consommation} handleConsommation={items => {handleConsommation(items)}} /> : ''}\n \n </>\n );\n}\n\nfunction RemarkInformation (props){\n const handleProjectInformation = props.handleProjectInformation;\n return (\n <>\n <h4 className=\"mb-3 text-center\">Remarque</h4> \n <div className=\"mb-3\">\n <label htmlFor=\"remarque\" className=\"form-label\">Information complémenaire de projet </label>\n <textarea className=\"form-control\" onBlur={(e=>{handleProjectInformation(e) })} defaultValue={client.projects[0].remark} title=\"remark\" rows=\"3\" ></textarea>\n </div>\n </>\n );\n}\n\nfunction Captcha (props) {\n const [svg,setSvg] = useState(<div></div>)\n useEffect(()=>{\n PublicService.getCaptcha().then((res)=>{setSvg(res)})\n },[])\n\n return (\n <>\n <h4 className=\"mb-3 text-center\">Captcha</h4> \n <div className=\"mb-5\">\n <div className=\"row justify-content-center\">\n <div className='col-auto text-center'> \n {parse(svg + \"\")}\n <br></br>\n <input onChange={(e)=>props.handleCaptcha(e.target.value)}></input>\n </div>\n </div>\n </div>\n </>)\n}","import React, { useEffect, useRef, useState } from \"react\";\nimport { Button, Col, Container, Form, InputGroup, Row } from \"react-bootstrap\";\nimport { PublicService } from \"../../services/public.service\";\nimport CaptchaFormulaire from \"../unstructuredComponents/CaptchaFormulaire\";\nimport SendCheck from \"../unstructuredComponents/SendCheck\";\n\n\nexport default function CandidatureSpontanee(props) {\n\n\n return (\n <Container className=\" overflow-hidden \" fluid>\n <Row className=\"justify-content-sm-center\">\n <Col md={8}>\n <h1 className=\"mb-4 text-center break-word \">Candidature Spontanée</h1>\n\n <br></br> \n\n <p className=\"mb-4 pb-2 text-dark\">\n Universal Energy est une entreprise spécialisée dans les énergies renouvelables, \n notamment l'énergie solaire. Nous nous engageons à fournir des solutions énergétiques \n innovantes qui contribuent à un monde plus propre et plus respectueux de l'environnement.\n </p>\n\n <br></br> \n \n <p className=\"mb-4 pb-2 text-dark fw-bold fs-4\">\n Notre mission\n </p>\n\n <p className=\"mb-4 pb-2 text-dark\">\n Notre mission est de contribuer à la transition énergétique en proposant des solutions solaires abordables et efficaces. \n Nous nous engageons à accompagner nos clients tout au long de leur projet, de l'étude de faisabilité à l'installation et \n la maintenance de leurs panneaux solaires.\n </p>\n\n <br></br> \n\n <p className=\"mb-4 pb-2 text-dark fw-bold fs-4\">\n Nos valeurs\n </p>\n\n <p className=\"mb-4 pb-2 text-dark\">\n Nous sommes animés par les valeurs suivantes :\n\n <br></br><br></br>\n\n <strong className=\"fw-bold\">L'innovation :</strong> nous nous engageons à proposer des solutions solaires innovantes et performantes.\n \n <br></br><br></br>\n\n <strong className=\"fw-bold\">La durabilité : </strong>nous sommes convaincus que les énergies renouvelables sont la solution pour un avenir énergétique durable.\n \n <br></br><br></br>\n \n <strong className=\"fw-bold\">L'engagement :</strong> nous nous engageons à accompagner nos clients dans leur projet solaire.\n </p>\n \n <br></br> \n\n <p className=\"mb-4 pb-2 text-dark fw-bold fs-4\">\n Nos activités\n </p>\n\n <p className=\"mb-4 pb-2 text-dark\">\n Nous proposons une large gamme de services liés à l'énergie solaire, notamment :\n\n <br></br><br></br>\n\n <strong className=\"fw-bold\">L'étude de faisabilité : </strong>nous étudions vos besoins et vos possibilités pour vous proposer une solution solaire adaptée.\n\n <br></br><br></br>\n \n <strong className=\"fw-bold\">L'installation : </strong> nous installons vos panneaux solaires dans les règles de l'art, en respectant les normes de sécurité.\n\n <br></br><br></br>\n \n <strong className=\"fw-bold\">La maintenance : </strong> nous assurons la maintenance de vos panneaux solaires pour garantir leur bon fonctionnement.\n Notre équipe\n\n <br></br><br></br>\n\n Notre équipe est composée de professionnels expérimentés et passionnés par les énergies renouvelables.\n </p> \n\n <br></br> \n\n <p className=\"mb-4 pb-2 text-dark fw-bold fs-4\">\n Postulez dès aujourd'hui\n </p>\n\n <p className=\"mb-4 pb-2 text-dark\">\n Si vous êtes motivé(e) par le challenge de contribuer à un avenir énergétique durable, \n nous vous invitons à déposer votre CV. Nous recherchons des personnes passionnées par \n les énergies renouvelables, avec un esprit d'équipe et un sens du service client.\n\n <br></br><br></br>\n Pour postuler, merci d'envoyer votre CV et votre lettre de motivation ci-dessous\n <br></br><br></br>\n Nous vous remercions de votre intérêt pour Universal Energy.\n </p>\n\n <br></br><br></br>\n\n </Col>\n </Row>\n\n <h1 className=\"mb-4 text-center break-word fs-3 \">Formulaire de candidature</h1>\n \n <br></br><br></br>\n <CandidatureFormulaire/>\n \n </Container>\n );\n}\n\n\nfunction CandidatureFormulaire(){\n const [candidature, setCandidature ] = useState({})\n const [validated, setValidated] = useState(false);\n const [captcha,setCaptcha] = useState(false);\n const [submit,setSubmit] = useState(false);\n const [sendStatus, setSendStatus] = useState(undefined)\n\n const getBase64 = async (file) => {\n return new Promise(resolve => {\n let baseURL = \"\";\n\n let reader = new FileReader();\n\n reader.readAsDataURL(file);\n\n reader.onload = () => {\n baseURL = reader.result;\n resolve(baseURL);\n };\n });\n };\n const onFileChange =async (e) => {\n if(e.target.id === \"cv\" || e.target.id === \"lettreDeMotivation\"){\n const file = {file:await getBase64 (e.target.files[0]),name:e.target.files[0].name,type:e.target.files[0].type,size:e.target.files[0].size}\n if(bytesToMb(file.size ) <= 1){\n setCandidature((prev)=>({...prev, [e.target.id]:file}));\n document.getElementById(e.target.id+\"Size\").className += \" bg-success\"\n }else{\n document.getElementById(e.target.id+\"Size\").className += \" bg-danger\"\n }\n }else {\n setCandidature((prev)=>({...prev, [e.target.id]:e.target.value}));\n }\n };\n\n const bytesToMb = (bytes)=>{\n bytes = (bytes / 1048576).toFixed(2);\n return bytes;\n }\n\n const handleSubmit = (event) => {\n const form = event.currentTarget;\n event.preventDefault();\n if(form.checkValidity() === true){\n setCaptcha(true);\n }\n if (form.checkValidity() === false) {\n event.stopPropagation();\n }\n setValidated(true);\n };\n\n const handleCaptcha = (captcha)=>{\n setCandidature((prev)=>({...prev,captcha:captcha}));\n }\n\n useEffect(()=>{\n if(submit=== true){\n PublicService.setNewCandidature(candidature).then(res=>{\n if(res && res.message === \"captchaError\"){\n setSubmit(false);\n setCaptcha(true);\n return;\n }\n if(res && res.success === 200){\n setSendStatus(true)\n }else{\n setSendStatus(false);\n setTimeout(()=>{setCaptcha(true);setSubmit(false);}, 4050);\n } \n })\n\n }\n },[submit])\n\n if(submit){\n return(\n <Container>\n <SendCheck status={sendStatus} /> \n </Container>\n )\n }\n if(captcha){\n return( \n <Container fluid>\n <CaptchaFormulaire handleCaptcha={handleCaptcha}/>\n\n <Row className=\"justify-content-center\">\n <Col xs=\"auto\">\n <Button className=\"btn btn-primary rounded-pill py-3 px-5\" onClick={()=>{ setCaptcha(false);setSubmit(true)}} >Valider</Button> \n </Col>\n </Row>\n\n </Container>\n )\n }\n return(\n <Container fluid>\n <Form noValidate validated={validated} onSubmit={handleSubmit}>\n <Row className=\"justify-content-sm-center\">\n\n <Col md={{ span: 3, offset: 0 }} sm={{ span: 6, offset: 0 }}>\n <InputGroup className=\"mb-3\">\n <InputGroup.Text className=\"text-dark\">Nom</InputGroup.Text>\n <Form.Control id=\"nom\" defaultValue = {\"\" || candidature.nom} onBlur={onFileChange} required />\n <Form.Control.Feedback type=\"invalid\">\n Merci de renseigner votre nom.\n </Form.Control.Feedback>\n </InputGroup>\n </Col>\n\n <Col md={{ span: 3, offset: 0 }} sm={{ span: 6, offset: 0 }}>\n <InputGroup className=\"mb-3\">\n <InputGroup.Text className=\" text-dark\">Prenom</InputGroup.Text>\n <Form.Control id=\"prenom\" defaultValue = {\"\" || candidature.prenom} onBlur={onFileChange} required/>\n <Form.Control.Feedback type=\"invalid\">\n Merci de renseigner votre prenom.\n </Form.Control.Feedback>\n </InputGroup>\n </Col>\n\n </Row>\n\n <Row className=\"justify-content-sm-center\">\n\n <Col md={{ span: 3, offset: 0 }} sm={{ span: 6, offset: 0 }}>\n <InputGroup className=\"mb-3\">\n <InputGroup.Text className=\" text-dark\">Email</InputGroup.Text>\n <Form.Control id=\"email\" defaultValue = {\"\" || candidature.email} onBlur={onFileChange} required/>\n <Form.Control.Feedback type=\"invalid\">\n Merci de renseigner votre mail.\n </Form.Control.Feedback>\n </InputGroup>\n </Col>\n\n <Col md={{ span: 3, offset: 0 }} sm={{ span: 6, offset: 0 }}>\n <InputGroup className=\"mb-3\">\n <InputGroup.Text className=\" text-dark\">Tel</InputGroup.Text>\n <Form.Control id=\"telephone\" defaultValue = {\"\" || candidature.telephone} onBlur={onFileChange} required/>\n <Form.Control.Feedback type=\"invalid\">\n Merci de renseigner votre numéro de téléphone.\n </Form.Control.Feedback>\n </InputGroup>\n </Col>\n\n </Row>\n\n \n <Row className=\"justify-content-sm-center\">\n \n <Col md={{ span: 3, offset: 0 }} sm={{ span: 6, offset: 0 }}>\n <InputGroup className=\"mb-3\">\n <InputGroup.Text className=\"text-dark p-0\" data-bs-toggle=\"tooltip\" data-bs-placement=\"bottom\" data-bs-title=\"Selectionner un cv en pdf\">\n <label htmlFor=\"cv\" style={{padding:\".375rem .75rem\"}}>\n <i className=\"bi bi-file-earmark-arrow-down\"></i>\n </label>\n </InputGroup.Text>\n <Form.Control aria-label=\"cv\" className=\"text-center bg-white\" placeholder={ candidature?.cv?.name || \"cv\"} disabled/>\n <input className=\"bg-white text-dark\" onChange={onFileChange } id=\"cv\" style={{ display: \"none\" }} type=\"file\" accept=\".pdf\" required />\n <InputGroup.Text id=\"cvSize\" className=\"text-dark \">1mb</InputGroup.Text>\n <Form.Control.Feedback type=\"invalid\">\n Merci d'importer votre cv'.\n </Form.Control.Feedback>\n </InputGroup >\n </Col>\n\n <Col md={{ span: 3, offset: 0 }} sm={{ span: 6, offset: 0 }}>\n <InputGroup className=\"mb-3\" >\n <InputGroup.Text className=\"text-dark p-0\" >\n <label htmlFor=\"lettreDeMotivation\" style={{padding:\".375rem .75rem\"}} >\n <i className=\"bi bi-file-earmark-arrow-down\" ></i>\n </label>\n </InputGroup.Text>\n <Form.Control aria-label=\"LettreDeMotivation\" className=\"text-center bg-white\" placeholder={ candidature?.lettreDeMotivation?.name || \"Lettre de motivation\" } disabled/>\n <input className=\"bg-white text-dark\" onChange={onFileChange} id=\"lettreDeMotivation\" style={{ display: \"none\" }} type=\"file\" accept=\".pdf\" />\n <InputGroup.Text id=\"lettreDeMotivationSize\" className=\"text-dark \" >1mb</InputGroup.Text>\n </InputGroup >\n </Col>\n\n </Row>\n\n <br></br><br></br>\n\n <Row className=\"justify-content-center\">\n <Col xs=\"auto\">\n <Button className=\"btn btn-primary rounded-pill py-3 px-5\" type=\"submit\" >Envoyer</Button> \n </Col>\n </Row>\n\n </Form>\n </Container>\n )\n}","import React from \"react\";\nimport Title from \"../about/Title\"\nimport CandidatureSpontanee from \"./CandidatureSpontanee\";\n\nexport default function Recruitment(props) {\n return (\n <>\n <Title title=\"Les Offres d'emploies\"/>\n <CandidatureSpontanee/>\n </>\n );\n}","import React from \"react\";\nimport Title from \"../about/Title\"\nimport {\n Outlet\n} from \"react-router-dom\";\nexport default function Services(props) {\n return (\n <>\n <Title/>\n <Outlet/>\n </>\n );\n}","export default __webpack_public_path__ + \"static/media/img-600x400-1.132cc97e.jpg\";","export default __webpack_public_path__ + \"static/media/img-600x400-4.c44a31de.jpg\";","export default __webpack_public_path__ + \"static/media/img-600x400-2.722a3039.jpg\";","export default __webpack_public_path__ + \"static/media/img-600x400-3.b794075d.jpg\";","export default __webpack_public_path__ + \"static/media/img-600x400-5.7b820e0a.jpg\";","export default __webpack_public_path__ + \"static/media/img-600x400-6.9c5ae3e8.jpg\";","import React from \"react\";\nimport Pic1 from \"../../assets/img/img-600x400-1.jpg\"\nimport Pic2 from \"../../assets/img/img-600x400-2.jpg\"\nimport Pic3 from \"../../assets/img/img-600x400-3.jpg\"\nimport Pic4 from \"../../assets/img/img-600x400-4.jpg\"\nimport Pic5 from \"../../assets/img/img-600x400-5.jpg\"\nimport Pic6 from \"../../assets/img/img-600x400-6.jpg\"\nimport {\n Link\n } from \"react-router-dom\";\n\nexport default function ServicesList(props) {\n\n return (\n <>\n <div className=\"container-xxl py-5\">\n <div className=\"container\">\n <div className=\"text-center mx-auto mb-5\" style={{maxWidth: \"600px\"}}>\n <h1 className=\"mb-4\" style={{textShadow: \"0px 5px 5px #ffc107\",color:\"#318af2\"}}>Découvrez nos divers services énérgétiques</h1>\n </div>\n <div className=\"row g-4\">\n \n <div className=\"col-md-6 col-lg-4 \" >\n <div className=\"service-item rounded overflow-hidden\">\n <img className=\"img-fluid\" src={Pic1} alt=\"\"></img>\n <div className=\"position-relative p-4 pt-0\">\n <div className=\"service-icon\">\n <i className=\"fa fa-solar-panel fa-3x\"></i>\n </div>\n <h4 className=\"mb-3\">Panneaux solaire</h4>\n <p>Nous vous accompagnons dans tout type de vous projets solaires.</p>\n <Link to=\"solarPanels\" className=\"small fw-medium\" >Voir plus<i className=\"fa fa-arrow-right ms-2\"></i></Link>\n </div>\n </div>\n </div>\n\n <div className=\"col-md-6 col-lg-4 \">\n <div className=\"service-item rounded overflow-hidden\">\n <img className=\"img-fluid\" src={Pic6} alt=\"\"></img>\n <div className=\"position-relative p-4 pt-0\">\n <div className=\"service-icon\">\n <i className=\"bi bi-tools fa-3x\"></i>\n </div>\n <h4 className=\"mb-3\">Maintenance</h4>\n <p>Nous sommes experts dans plusieurs domaines liée à la production et l'economié d'energie.</p>\n <Link to=\"maintenance\" className=\"small fw-medium\" >Voir plus<i className=\"fa fa-arrow-right ms-2\"></i></Link>\n </div>\n </div>\n </div>\n\n\n {/*<div className=\"col-md-6 col-lg-4 \">\n <div className=\"service-item rounded overflow-hidden\">\n <img className=\"img-fluid\" src={Pic2} alt=\"\"></img>\n <div className=\"position-relative p-4 pt-0\">\n <div className=\"service-icon\">\n <i className=\"bi bi-water fa-3x\"></i>\n </div>\n <h4 className=\"mb-3\">Economiseur d'eau</h4>\n <p>Réduisez vos facture d'eau jusuq'a la moité.</p>\n <Link to=\"waterSaving\" className=\"small fw-medium\" >Voir plus<i className=\"fa fa-arrow-right ms-2\"></i></Link>\n </div>\n </div>\n </div>\n <div className=\"col-md-6 col-lg-4 \">\n <div className=\"service-item rounded overflow-hidden\">\n <img className=\"img-fluid\" src={Pic3} alt=\"\"></img>\n <div className=\"position-relative p-4 pt-0\">\n <div className=\"service-icon\">\n <i className=\"fa fa-lightbulb fa-3x\"></i>\n </div>\n <h4 className=\"mb-3\">Economiseur éléctrique</h4>\n <p>Economisez vos factures d'éléctricité gràce a nos films protectrice</p>\n <Link to=\"electricitySaving\" className=\"small fw-medium\" >Voir plus<i className=\"fa fa-arrow-right ms-2\"></i></Link>\n </div>\n </div>\n </div> */}\n\n <div className=\"col-md-6 col-lg-4 \">\n <div className=\"service-item rounded overflow-hidden\">\n <img className=\"img-fluid\" src={Pic4} alt=\"\"></img>\n <div className=\"position-relative p-4 pt-0\">\n <div className=\"service-icon\">\n <i className=\"bi bi-graph-up fa-3x\"></i>\n </div>\n <h4 className=\"mb-3\">Côntrole et monotoring</h4>\n <p>Controlez et suivez vos projet solaires avec notre outils.</p>\n <Link to=\"controlAndMonotoring\" className=\"small fw-medium\" >Voir plus<i className=\"fa fa-arrow-right ms-2\"></i></Link>\n </div>\n </div>\n </div>\n\n <div className=\"col-md-6 col-lg-4 \">\n <div className=\"service-item rounded overflow-hidden\">\n <img className=\"img-fluid\" src={Pic5} alt=\"\"></img>\n <div className=\"position-relative p-4 pt-0\">\n <div className=\"service-icon\">\n <i className=\"fa fa-wind fa-3x\"></i>\n </div>\n <h4 className=\"mb-3\">Eolienne</h4>\n <p>Exploitez le vent et produisez de l'elecricité.</p>\n <Link to=\"windTurbin\" className=\"small fw-medium\">voir plus<i className=\"fa fa-arrow-right ms-2\"></i></Link>\n </div>\n </div>\n </div>\n \n </div>\n </div>\n </div>\n </>\n );\n}\n\n","import React from \"react\";\n\n\nimport {\n Link\n } from \"react-router-dom\";\n\n\nexport default function PanneauxSolaires(props) {\n\n return (\n <>\n <div className=\"container-xxl py-5\">\n <div className=\"container\">\n <div className=\"text-center mx-auto mb-5\" style={{maxWidth: \"600px\"}}>\n <h1 className=\"mb-4\" style={{textShadow: \"0px 5px 5px #ffc107\",color:\"#318af2\"}}>Choisissez selon votre status</h1>\n </div>\n <div className=\"row g-4\">\n <div className=\"col-md-6 col-lg-4 \" >\n <div className=\"service-item rounded overflow-hidden\" >\n \n <div className=\"position-relative text-center p-4 pt-5\">\n <div className=\" mt-3 \">\n <i className=\"bi bi-house-door text-primary fa-3x\"></i>\n </div>\n <h4 className=\"mb-3\">Particulier</h4>\n <p>Réduisez vos factures de Steg en installant du photovoltaique. Découvrez toutes les démarches et les aides...</p>\n <Link to=\"particular\" className=\"small fw-medium\" >Voir plus<i className=\"fa fa-arrow-right ms-2\"></i></Link>\n </div>\n </div>\n </div>\n <div className=\"col-md-6 col-lg-4 \">\n <div className=\"service-item rounded overflow-hidden\">\n \n <div className=\"position-relative text-center p-4 pt-5\">\n <div className=\" mt-3\">\n <i className=\"bi bi-building text-primary fa-3x\"></i>\n </div>\n <h4 className=\"mb-3\">Professionnel</h4>\n <p>Vous cherchez à réduires vos charges d'éléctricité, et générer plus de revenus.</p>\n <Link to=\"Professional\" className=\"small fw-medium\" href=\"\">Voir plus<i className=\"fa fa-arrow-right ms-2\"></i></Link>\n </div>\n </div>\n </div>\n <div className=\"col-md-6 col-lg-4 \">\n <div className=\"service-item rounded overflow-hidden\">\n \n <div className=\"position-relative text-center p-4 pt-5\">\n <div className=\" mt-3\">\n <i className=\"bi bi-tree text-primary fa-3x\"></i>\n </div>\n <h4 className=\"mb-3\">Agriculteur</h4>\n <p>Vous avez aucun raccordement de Steg, vous pouvez générer d'éléctricité pour pomper de l'eau et allumer les divers machines.</p>\n <Link to=\"farmer\" className=\"small fw-medium\" href=\"\">Voir plus<i className=\"fa fa-arrow-right ms-2\"></i></Link>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </>\n );\n}","import React from \"react\";\n\n\nexport default function DownloadFiles(props) {\n\n return (\n <div className=\"container-xxl py-5\">\n <div className=\"container\">\n <div className=\"text-center mx-auto mb-5\" style={{maxWidth: \"600px\"}}>\n <h1 className=\"mb-4 pt-5\" style={{textShadow: \"0px 5px 5px #ffc107\",color:\"black\"}}>Les documents photovoltaiques fournis par le steg</h1>\n </div>\n <div className=\"row g-4 pt-5\">\n <div className=\"col-md-12 col-lg-12 \" >\n <h4 ><a target=\"_blank\" className=\"text-primary\" rel=\"noopener noreferrer\" href=\"http://www.steg.com.tn/$J@5YgwRAxGwKxAzozh-Oy2I8d3zMjvNqbbmaxU9IQsel2yoZL6VYriRnY?tknfv=ce105e2c0-d7bb-48ab-abb5-83a3f4ebp99pvv5\">\n <i className=\"bi bi-file-earmark-arrow-down\"></i> Contrat d’achat par la steg de l’excedent de l'energie éléctrique produite à partir \n d'energies renouvelables et livrée sur le réseau basse tension (Programme PROSOL ELEC III)</a></h4>\n <ul className=\"text-dark pt-2\">\n <li><a style={{display: \"flow-root list-item\"}} target=\"_blank\" className=\"nav-item nav-link\" rel=\"noopener noreferrer\" href=\"http://www.steg.com.tn/$J@5YiQAEhGgRgA4ABTMtuwgwmvedb5ORbkKhor-zX-lHIkAdT7BqnSMyTW5d-1slZ5eAFAVsmDKLpgimW3yCacbFFQra5AK9wN9g?tknfv=ce105e2c0-d7bb-48ab-abb5-83a3f4ebp99pvv5\">\n Avenant au contrat d’achat par la STEG de l’excédent de l’energie électrique produite a partir de l’énergie \n solaire photovoltaïque par le producteur résidentiel en basse tension (Bénéficiaire du programme PROSOL ELEC) <i className=\"bi bi-file-earmark-arrow-down\"></i></a>\n </li>\n </ul>\n <h4 className=\"pt-4\"><a target=\"_blank\" className=\"text-primary\" rel=\"noopener noreferrer\" href=\"http://www.steg.com.tn/$J@5YgQRAxGwQRAzozh-Oy2I8d3zMjvNqbbmVGWLFg6XJMPubOt2TN34gtUULKgB7M--KwY-AImNXWh?tknfv=ce105e2c0-d7bb-48ab-abb5-83a3f4ebp99pvv5\">\n <i className=\"bi bi-file-earmark-arrow-down\"></i> Contrat d’achat par la steg de l’excedent de l’energie electrique produite a partir \n d’energies renouvelables et livree sur le reseau basse tension (hors programme prosol)</a></h4>\n <ul className=\"text-dark pt-2\">\n <li><a style={{display: \"flow-root list-item\"}} target=\"_blank\" className=\"nav-item nav-link\" rel=\"noopener noreferrer\" href=\"https://www.steg.com.tn//$J@5YiQAEhGgRgA4ABTMtuwgwmvedb5ORbkKiIOEVbSPPuCa6A8GPhrxI6pE7ZAAJKeAAC9jC8rsVJFtZyTgKp_xKFOHUZYtFGOkg?tknfv=ce105e2c0-d7bb-48ab-abb5-83a3f4ebp99pvv5\">\n Avenant au contrat d’achat par la STEG de l’excédent de l’energie électrique produite a partir de l’énergie \n solaire photovoltaïque par le producteur résidentiel en basse tension (Hors Programme PROSOL) <i className=\"bi bi-file-earmark-arrow-down\"></i></a>\n </li>\n </ul>\n <h4 className=\"pt-4 text-primary\">\n Demande de l’historique de consommation</h4>\n <ul className=\"text-dark pt-2 \">\n <li><a style={{display: \"flow-root list-item\"}} target=\"_blank\" className=\"nav-item nav-link\" rel=\"noopener noreferrer\" href=\"https://www.steg.com.tn/$J@5cxQBEhCwUBAs7Rc0rePr0tthjKAbGudiX_IJNJiqpOsTxkly6jDPu7qs10q37sOl2F_pjb92hE0?tknfv=ce105e2c0-d7bb-48ab-abb5-83a3f4ebp99pvv5\">\n Version arabe <i className=\"bi bi-file-earmark-arrow-down\"></i></a>\n </li>\n <li><a style={{display: \"flow-root list-item\"}} target=\"_blank\" className=\"nav-item nav-link\" rel=\"noopener noreferrer\" href=\"https://www.steg.com.tn/$J@5cxQBEhCwUBAs7Rc0rePr0tthjKAbGudiUkgvyMVEVcngB0ifyaWTGR7wldUsztmY5qsprEImKVK?tknfv=ce105e2c0-d7bb-48ab-abb5-83a3f4ebp99pvv5\">\n Version française <i className=\"bi bi-file-earmark-arrow-down\"></i></a>\n </li>\n </ul>\n <h4 className=\"pt-4 text-primary\">\n Demande d’Adhésion au Programme PROSOL-ELEC et de souscription à un crédit bancaire</h4>\n <ul className=\"pt-2 \">\n {/*<li className=\"d-flex align-items-center d-list-items \" >\n <a style={{display: \"flow-root list-item\"}} className=\"nav-item nav-link me-auto\" target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.steg.com.tn/$J@5cgQRAgGxQAEVkahf3Ztj4L5VWPcsWtgwWlYTAWyudzg93L92uOqHHwOsfuUvByvxTFZq2bAdfA3?tknfv=678B2868STUVWXYZBCDEFGHIJKLM4171\">\n Puissance strictement inférieure à 1.5 <i className=\"bi bi-file-earmark-arrow-down\"></i></a>\n <span className=\"badge bg-primary rounded-pill\">3500 DT</span>\n </li>\n <li className=\"d-flex align-items-center\">\n <a style={{display: \"flow-root list-item\"}} className=\"nav-item nav-link me-auto\" target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.steg.com.tn/$J@5cgQRAgGxQAEVkahf3Ztj4L5VWPcsWtgwWlYTAWyudzg93L92uOqHHwaAdYS96kgacwsrDIYYSUd?tknfv=678B2868STUVWXYZBCDEFGHIJKLM4171\">\n Puissance strictement inférieure à 1.5 <i className=\"bi bi-file-earmark-arrow-down\"></i></a>\n <span className=\"badge bg-primary rounded-pill\">5000 DT</span>\n </li>\n <li className=\" d-flex align-items-center\">\n <a style={{display: \"flow-root list-item\"}} className=\"nav-item nav-link me-auto\" target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.steg.com.tn/$J@5cgQRAgGxQAEVkahf3Ztj4L5VWPcsWtgwWlYTAWyudzg93L92uOqHHyjDKFjcC0E1gWTIt01OhR0?tknfv=678B2868STUVWXYZBCDEFGHIJKLM4171\">\n Puissance supérieure à 1.5 et strictement inferieure à 2 <i className=\"bi bi-file-earmark-arrow-down\"></i></a>\n <span className=\"badge bg-primary rounded-pill\">6500 DT</span>\n </li>*/}\n <li className=\" d-flex align-items-center\">\n <a style={{display: \"flow-root list-item\"}} className=\"nav-item nav-link me-auto\" target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.steg.com.tn/$J@5cgQRAgGxQAEVkahf3Ztj4L5VWPcsWtgwWlYTAWyudzg93L92uOqHHzEGjtnqdJrRnBOa_sDuA0B?tknfv=ce105e2c0-d7bb-48ab-abb5-83a3f4ebp99pvv5\">\n Puissance supérieure à 2 et strictement inferieure à 3 <i className=\"bi bi-file-earmark-arrow-down\"></i></a>\n <span className=\"badge bg-primary rounded-pill\">7500 DT</span>\n </li>\n <li className=\"d-flex align-items-center\">\n <a style={{display: \"flow-root list-item\"}} className=\"nav-item nav-link me-auto\" target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.steg.com.tn/$J@5ciQRAgGxRgEVkahf3Ztj4L5VWPcsWtgwWlYTAWyudzg93L92uOqHHz60YoZ5I0Z-QbGmY60OPNtLDgxiNYa6H3XwldH5MzuBA?tknfv=ce105e2c0-d7bb-48ab-abb5-83a3f4ebp99pvv5\">\n Puissance superieure à 3 <i className=\"bi bi-file-earmark-arrow-down\"></i></a>\n <span className=\"badge bg-primary rounded-pill\">10000 DT</span>\n </li>\n </ul>\n\n <div style={{height:\"50px\"}}></div>\n \n <h4 ><a target=\"_blank\" className=\"text-primary\" rel=\"noopener noreferrer\" href=\"http://www.steg.com.tn/$J@5YxUREgGgkBAZ7HoFZaxOEOE3GFQzdNbg-QFXeb9T3X6PTJCc3t-o7nJlOXOoW2P0dFYtOomkRhU8s12IRowT34C2WptvociJ9VdD-yLq4RrvM_2c2pN0rCCqrZ46FiEPKxwEvWhzk4g?tknfv=ce105e2c0-d7bb-48ab-abb5-83a3f4ebp99pvv5\">\n <i className=\"bi bi-file-earmark-arrow-down\"></i> Liste des panneaux PV acceptés par l’ANME</a>\n </h4>\n\n <div style={{height:\"50px\"}}></div>\n\n <h4 ><a target=\"_blank\" className=\"text-primary\" rel=\"noopener noreferrer\" href=\"http://www.steg.com.tn//$J@5YyQQEwCgRwELUhY-RBYYUICHTNf_22LiHrdZygBGQ36XrHyGo9vQhHaReR9soiTBdAZ_Dv-ZO03jGKkCtQDC1RUVH3rjT06SQ?tknfv=ce105e2c0-d7bb-48ab-abb5-83a3f4ebp99pvv5\">\n <i className=\"bi bi-file-earmark-arrow-down\"></i> Liste des onduleurs acceptés par la STEG pour le raccordement au réseau BT</a>\n </h4>\n\n </div>\n </div>\n </div>\n </div>\n );\n}","import React from \"react\";\nimport useAuth from \"./useAuth.js\"\nimport {\n useLocation,\n Navigate\n} from \"react-router-dom\";\n\n\n\n\nexport default function RequireAuth({children}) {\n let auth = useAuth();\n let location = useLocation();\n\n if (!auth.user) {\n // Redirect them to the /login page, but save the current location they were\n // trying to go to when they were redirected. This allows us to send them\n // along to that page after they login, which is a nicer user experience\n // than dropping them off on the home page.\n return <Navigate to=\"/user/signin\" state={{ from: location }} replace />;\n }\n \n return children;\n }\n ","import React, {useEffect,useState} from \"react\";\nimport useAuth from \"../../../services/authentication/useAuth\";\nimport Spinner from 'react-bootstrap/Spinner';\nimport {\n Navigate\n} from \"react-router-dom\";\n\nexport default function Dashboard () {\n const [role,setRole] = useState(undefined)\n const auth = useAuth();\n useEffect(()=>{\n if(auth.role && auth.role[0] !== undefined){\n setRole(auth.role[0])\n }\n },[auth])\n if(role === undefined)\n return ( <Loading/>)\n else if(role === \"ROLE_CLIENT\") {\n return <Navigate to=\"/user/dashboard\"/>;\n }else if ( role === \"ROLE_ADMIN\") {\n return <Navigate to=\"/user/admin/dashboard\"/>;\n\n }\n \n\n}\n\n\nfunction Loading(){\n return(\n <div className=\"d-flex justify-content-center\">\n <Spinner animation=\"border\" role=\"status\" >\n <span className=\"visually-hidden\">Loading...</span>\n </Spinner>\n </div>\n )\n}\n\n\n","import React, {useState,useEffect} from \"react\";\nimport Logo from \"../../assets/img/logo.png\"\nimport \"../../assets/css/signin.css\"\nimport useAuth from \"../../services/authentication/useAuth\"\n\nimport {\n useNavigate,\n useLocation,\n Link\n} from \"react-router-dom\";\n\nexport default function SignInForm(props) {\n let navigate = useNavigate();\n let location = useLocation();\n let auth = useAuth();\n const [identifiant,setIdentifiant] = useState({username:'',password:''})\n let from = location.state?.from?.pathname || \"/\";\n const handleIdentifiant = (e) => {\n if(e.target.title === \"username\"){\n setIdentifiant((prev)=>{\n return {...prev, username:e.target.value}\n })\n }else{\n setIdentifiant((prev)=>{\n return {...prev, password:e.target.value}\n })\n }\n }\n useEffect(()=>{\n if(auth.user){\n navigate(from, { replace: true }); \n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n },[auth])\n const handleConnect = (e) => {\n e.preventDefault();\n auth.signin(identifiant.username,identifiant.password, () => {\n // Send them back to the page they tried to visit when they were\n // redirected to the login page. Use { replace: true } so we don't create\n // another entry in the history stack for the login page. This means that\n // when they get to the protected page and click the back button, they\n // won't end up back on the login page, which is also really nice for the\n // user experience.\n navigate(from, { replace: true });\n })\n }\n\n return (\n <div className=\"container-fluid bg-light pt-5 p-0 pb-5\" id=\"about_component\">\n \n <div className=\"form-signin w-100 m-auto\">\n <div className=\"text-center\">\n <form>\n <img className=\"mb-4\" src={Logo} alt=\"\" width=\"180\" height=\"150\"></img>\n <h1 className=\"h3 mb-3 fw-normal\">Espace Client</h1>\n\n <div className=\"form-floating\">\n <input defaultValue=\"\" type=\"text\" className=\"form-control\" title=\"username\" placeholder=\"identifiant\"onChange={handleIdentifiant}></input>\n <label htmlFor=\"floatingInput\">Username</label>\n </div>\n <div className=\"form-floating\">\n <input defaultValue=\"\" type=\"password\" className=\"form-control\" title=\"password\" placeholder=\"Mot de passe\" onChange={handleIdentifiant}></input>\n <label htmlFor=\"floatingPassword\">Mot de passe</label>\n </div>\n <button className=\"w-100 btn btn-lg btn-primary\" onClick={(e)=>{handleConnect(e)}} type=\"submit\">Sign in</button>\n <Link className=\"btn btn-link text-info\" to=\"/createAcount\">Create new account</Link >\n <p className=\"mt-5 mb-3 text-muted\">© 2017 - 2023</p>\n </form>\n </div>\n </div>\n\n </div>\n );\n}","import React from \"react\";\n\nexport default function Documents () {\n\n return (\n <>\n <div>Documents</div>\n </>\n \n );\n}","import React from \"react\";\n\nexport default function Profil() {\n\n return (\n <>\n <div>Profil</div>\n </>\n \n );\n}","import React, { useEffect,useState } from \"react\";\nimport { useParams, useNavigate} from 'react-router-dom';\nimport {\n Chart as ChartJS,\n CategoryScale,\n LinearScale,\n PointElement,\n LineElement,\n BarElement,\n Title,\n Tooltip,\n Filler,\n Legend,\n } from 'chart.js';\n import { Line,Bar } from 'react-chartjs-2';\nimport { UserService } from \"../../../services/user.service\";\nimport {Spinner,Container,Row,Col,Button} from 'react-bootstrap';\nimport Calendar from 'react-calendar';\nimport 'react-calendar/dist/Calendar.css';\n\n\nexport default function PlantDetails(){\n return (\n <>\n <PlantDetailsTotal/>\n <Chart/>\n </>\n )\n}\nfunction PlantDetailsTotal(){\n let navigate = useNavigate();\n let { plantId } = useParams();\n const [plantTotal,setPlantTotal] = useState({})\n useEffect(()=>{\n UserService.getUserPlantList((r)=>{\n if(r.status !== undefined || r.status !== false ){\n setPlantTotal(r.filter((item) => item.AutoID === (plantId).toString())[0])\n }\n })\n // eslint-disable-next-line react-hooks/exhaustive-deps\n },[])\n return (\n <>\n <Container>\n <Row className=\"justify-content-center\">\n <i className=\"bi bi-x text-dark text-end\" onClick={()=>{navigate(\"/user\")}} style={{fontSize:\"38px\"}}></i>\n </Row>\n </Container>\n\n <Container>\n \n <div className=\"text-center mx-auto mb-5\" style={{maxWidth: '600px'}}>\n <h1 className=\"mb-4\" style={{textShadow: \"0px 5px 5px #ffc107\",color:\"#318af2\"}}>{plantTotal.GoodsTypeName} </h1>\n </div>\n </Container>\n \n <Container fluid className=\" bg-light \">\n <Row className=\"justify-content-center\">\n \n <TotalDashboardHeaderElementV2 \n name=\"Power\"\n value={(plantTotal.CurrPac/1000).toFixed(2) + ' W'}\n />\n <TotalDashboardHeaderElementV2 \n name=\"E-Today\"\n value={(plantTotal.EToday/1000).toFixed(2) + ' kwh'}\n />\n <TotalDashboardHeaderElementV2 \n name=\"E-Total\"\n value={(plantTotal.ETotal/1000).toFixed(2) + 'k kwh'}\n />\n <TotalDashboardHeaderElementV2 \n name=\"Total Income\"\n value={((plantTotal.ETotal/1000) * 0.475).toFixed(3) + \" Dt\"}\n />\n <TotalDashboardHeaderElementV2 \n name=\"H-Total\"\n value={(plantTotal.Htotal/1000).toFixed(2) + 'k Hrs'}\n />\n <TotalDashboardHeaderElementV2 \n name=\"Capacity\"\n value={(plantTotal.GoodsKWP/1000).toFixed(2) + 'k Wp'}\n />\n </Row>\n </Container>\n </>\n );\n}\n\nfunction TotalDashboardHeaderElementV2(props){\n return (\n <Col className=\" m-1 position-relative mx-auto text-center\" xs={10} sm={5} md={2} lg={1} xxl xl>\n <span className=\"pt-4 text-dark text-nowrap text-center\">{props.name}</span> <br></br> <span className=\"text-primary text-nowrap text-center\">{props.value}</span>\n </Col>\n );\n}\n\nfunction Chart(){\n let { provider, plantId } = useParams();\n const [lineData,setLineData] = useState({})\n const [date, setDate] = useState(new Date());\n const [calendarMode,setCalendarMode] = useState(\"month\")\n const [options,setOptions] = useState({})\n const [showDate,setShowDate] = useState(false)\n ChartJS.register(\n CategoryScale,\n LinearScale,\n PointElement,\n LineElement,\n BarElement,\n Title,\n Tooltip,\n Filler,\n Legend\n );\n\n const inTimetoTunisiaInTime = (today,data) =>{\n const pad = (d) => {\n return (d < 10) ? '0' + d.toString() : d.toString();\n }\n const tunisUTC = new Date(new Date().toLocaleString('en-US', { timeZone: 'Africa/Tunis' }))\n const parisUTC = new Date(new Date().toLocaleString('en-US', { timeZone: 'Europe/Paris' }))\n const diffUTC = parisUTC.getUTCHours() - tunisUTC.getUTCHours() ;\n return data.filter((item)=>{\n if(today)\n return parseInt(item.inTime.split(':')[0]) < parisUTC.getHours() || ((item.inTime.split(':')[0]) === parisUTC.getHours() && parseInt(item.inTime.split(':')[1]) <= parisUTC.getMinutes() )\n else \n return item;\n }).map((item)=>{\n return item.inTime = (pad(parseInt(item.inTime.split(':')[0]) !== 0 ? (parseInt(item.inTime.split(':')[0]) - diffUTC)%24 : (24 - diffUTC) % 24 ) + \":\" + item.inTime.split(':')[1])\n })\n }\n const controlDatePicker = ()=>{\n setShowDate(!showDate)\n }\n const handleCalendarMode = (e)=>{\n setCalendarMode(e.target.title)\n }\n const handleDate = (e)=>{\n setDate(e)\n controlDatePicker()\n }\n useEffect(()=>{\n\n var mode = calendarMode===\"month\"?\"day\" : calendarMode ===\"decade\" ? \"year\" : \"month\";\n var dateWillTransmitted = date.getFullYear() + \"\"\n if(mode === \"month\")\n dateWillTransmitted= dateWillTransmitted + \"-\"+(\"0\"+parseInt(date.getMonth()+1)).slice(-2)\n if(mode === \"day\")\n dateWillTransmitted= dateWillTransmitted +\"-\"+(\"0\"+parseInt((date.getMonth() + 1))).slice(-2)+\"-\"+(\"0\"+parseInt(date.getDate())).slice(-2)\n var today = new Date()\n if(today.getFullYear() === date.getFullYear() \n && date.getMonth() === today.getMonth()\n && date.getDate() === today.getDate()\n && calendarMode === \"month\")\n today = true;\n else\n today = false;\n UserService.getPlantDetail(provider,plantId ,dateWillTransmitted ,mode,today,(r)=>{\n if(r.status !== undefined || r.status !== false){\n var labels;\n if(calendarMode === \"month\"){\n\n labels = inTimetoTunisiaInTime(today,r.data);\n setLineData({\n labels,\n datasets: [\n {\n fill: true,\n label: 'Production',\n data: r.data.map((item,index)=> item.pac ).slice(0,labels.length),\n borderColor: 'rgb(53, 162, 235)',\n backgroundColor: 'rgba(53, 162, 235, 0.5)',\n lineTension: 0.5, \n radius: 3 \n },\n ],\n })\n setOptions({\n scales: {\n y: {\n min: 0,\n ticks : {\n callback: function(value) {\n return `${value} kW`;\n }\n }\n },\n x : {\n grid: {\n display: false\n }\n }\n },\n responsive: true,\n plugins: {\n legend: {\n position: 'top',\n }\n },\n })\n }else if (calendarMode === \"year\"){\n setOptions({\n scales: {\n y: {\n min: 0,\n ticks : {\n callback: function(value) {\n return `${value} kWh`;\n }\n }\n },\n x : {\n grid: {\n display: false\n }\n }\n },\n responsive: true,\n plugins: {\n legend: {\n position: 'top',\n },\n title: {\n display: true,\n text: \"production de \" + date.toLocaleDateString(\"fr-FR\", { year: 'numeric', month: 'long'}),\n },\n },\n })\n labels = r.data.map(item=> item.inDate.split('-')[2])\n setLineData({\n labels,\n datasets: [\n {\n label: 'Production',\n data: r.data.map(item => item.pac),\n backgroundColor: 'rgba(53, 162, 235, 0.5)',\n },\n ],\n })\n }else{\n setOptions({\n scales: {\n y: {\n min: 0,\n ticks : {\n callback: function(value) {\n return `${value} kWh`;\n }\n }\n },\n x : {\n grid: {\n display: false\n }\n }\n },\n responsive: true,\n plugins: {\n legend: {\n position: 'top',\n },\n title: {\n display: true,\n text: \"production de \" + date.toLocaleDateString(\"fr-FR\", { year: 'numeric'}),\n },\n },\n })\n labels = r.data.map(item=> item.inMonth)\n setLineData({\n labels,\n datasets: [\n {\n label: 'Production',\n data: r.data.map(item => item.pac),\n backgroundColor: 'rgba(53, 162, 235, 0.5)',\n },\n ],\n })\n }\n }\n })\n // eslint-disable-next-line react-hooks/exhaustive-deps\n },[date,calendarMode]) \n\n\n if(Object.keys(lineData).length === 0 || lineData.labels === undefined ){\n return (\n <div className=\"d-flex justify-content-center\">\n <Spinner animation=\"border\" role=\"status\" >\n <span className=\"visually-hidden\">Loading...</span>\n </Spinner>\n </div>)\n }\n\n \n return (\n <Container>\n <Row className=\"justify-content-center p-4 \">\n <Col lg={\"auto\"} className=\"text-center\">\n <Button size=\"sm\" variant=\"outline-primary border-none\" title=\"month\" onClick={handleCalendarMode}>Jour</Button>{' '}\n <Button size=\"sm\" variant=\"outline-primary\" title=\"year\" onClick={handleCalendarMode}>Mois</Button>{' '}\n <Button size=\"sm\" variant=\"outline-primary\" title=\"decade\" onClick={handleCalendarMode}>Année</Button>{' '}\n </Col>\n <Col lg={\"atuo\"} className=\"text-center p-3\">\n <Button variant=\"light\" className='text-center text-dark' onClick={controlDatePicker}>\n {date.toLocaleDateString(\"fr-FR\", { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' })}\n </Button>\n <div className=\"d-flex justify-content-center \">\n <Calendar onChange={handleDate} className={!showDate? \"visually-hidden position-absolute\" : \"position-absolute\"} minDate={new Date(2020, 1, 1)} value={date} \n maxDetail={calendarMode}\n maxDate={new Date()} />\n </div>\n </Col>\n </Row>\n <Row className=\"justify-content-center\">\n <Col></Col>\n {calendarMode === \"month\"? \n <Line options={options} data={lineData} />\n : \n <Bar options={options} data={lineData} />}\n </Row>\n </Container>\n );\n\n}","import React, {useRef,useState,useEffect} from \"react\";\nimport {Container,Dropdown,DropdownButton} from 'react-bootstrap';\nimport styled from 'styled-components'\nimport useAuth from \"../../../../services/authentication/useAuth\";\nimport {\n useNavigate, \n Outlet,\n useLocation\n } from \"react-router-dom\";\n\nexport default function Admin (){\n const ref = useRef();\n const [reduceSideBar,setReduceSideBar] = useState(true);\n const [setting,setSetting] = useState(3);\n const Style = styled.div`\n .b-example-divider {\n height: 3rem;\n background-color: rgba(0, 0, 0, .1);\n border: solid rgba(0, 0, 0, .15);\n border-width: 1px 0;\n box-shadow: inset 0 .5em 1.5em rgba(0, 0, 0, .1), inset 0 .125em .5em rgba(0, 0, 0, .15);\n }\n \n .b-example-vr {\n flex-shrink: 0;\n width: 1.5rem;\n height: 100vh;\n }\n \n .bi {\n vertical-align: -.125em;\n fill: currentColor;\n }\n \n .nav-scroller {\n position: relative;\n z-index: 2;\n height: 2.75rem;\n overflow-y: hidden;\n }\n \n .nav-scroller .nav {\n display: felx;\n flex-wrap: nowrap;\n padding-bottom: 1rem;\n margin-top: -1px;\n overflow-x: auto;\n text-align: center;\n white-space: nowrap;\n -webkit-overflow-scrolling: touch;\n }\n .nav { \n display : inline-block;\n }\n` \n const auth=useAuth()\n\n useEffect(()=>{\n if(reduceSideBar === true){\n ref.current.style = \"width:4.5rem;\"\n }else if (reduceSideBar === false ){\n ref.current.style = \"width:170px;\"\n }\n },[reduceSideBar])\n\n const onChangeSetting = (id) =>{\n setSetting(id)\n }\n const handleSideBar = (e)=>{\n setReduceSideBar(!reduceSideBar)\n }\n return (<>\n <Style>\n <Container className=\"d-flex justify-content-center\" fluid>\n <div className=\" d-block p-2 bg-light\" ref={ref}>\n <div className={reduceSideBar === false ? \n \"text-center link-dark text-decoration-none\" \n : \"text-center p-3 link-dark text-decoration-none\"} \n onClick={handleSideBar}\n >\n <svg width=\"20\" height=\"20\" className=\"bi bi-gear\" viewBox=\"0 0 16 16\" >\n <path d=\"M8 4.754a3.246 3.246 0 1 0 0 6.492 3.246 3.246 0 0 0 0-6.492zM5.754 8a2.246 2.246 0 1 1 4.492 0 2.246 2.246 0 0 1-4.492 0z\"/>\n <path d=\"M9.796 1.343c-.527-1.79-3.065-1.79-3.592 0l-.094.319a.873.873 0 0 1-1.255.52l-.292-.16c-1.64-.892-3.433.902-2.54 2.541l.159.292a.873.873 0 0 1-.52 1.255l-.319.094c-1.79.527-1.79 3.065 0 3.592l.319.094a.873.873 0 0 1 .52 1.255l-.16.292c-.892 1.64.901 3.434 2.541 2.54l.292-.159a.873.873 0 0 1 1.255.52l.094.319c.527 1.79 3.065 1.79 3.592 0l.094-.319a.873.873 0 0 1 1.255-.52l.292.16c1.64.893 3.434-.902 2.54-2.541l-.159-.292a.873.873 0 0 1 .52-1.255l.319-.094c1.79-.527 1.79-3.065 0-3.592l-.319-.094a.873.873 0 0 1-.52-1.255l.16-.292c.893-1.64-.902-3.433-2.541-2.54l-.292.159a.873.873 0 0 1-1.255-.52l-.094-.319zm-2.633.283c.246-.835 1.428-.835 1.674 0l.094.319a1.873 1.873 0 0 0 2.693 1.115l.291-.16c.764-.415 1.6.42 1.184 1.185l-.159.292a1.873 1.873 0 0 0 1.116 2.692l.318.094c.835.246.835 1.428 0 1.674l-.319.094a1.873 1.873 0 0 0-1.115 2.693l.16.291c.415.764-.42 1.6-1.185 1.184l-.291-.159a1.873 1.873 0 0 0-2.693 1.116l-.094.318c-.246.835-1.428.835-1.674 0l-.094-.319a1.873 1.873 0 0 0-2.692-1.115l-.292.16c-.764.415-1.6-.42-1.184-1.185l.159-.291A1.873 1.873 0 0 0 1.945 8.93l-.319-.094c-.835-.246-.835-1.428 0-1.674l.319-.094A1.873 1.873 0 0 0 3.06 4.377l-.16-.292c-.415-.764.42-1.6 1.185-1.184l.292.159a1.873 1.873 0 0 0 2.692-1.115l.094-.319z\"/>\n </svg>\n <span className=\"fs-4 fw-bolder\"></span>\n </div>\n {reduceSideBar === false ? <hr style={{width:\"150px\"}}></hr> : ''}\n <ul className={reduceSideBar === false ? 'nav nav-pills flex-column mb-auto' : \"nav nav-pills nav-flush mb-auto text-center\"}>\n \n {<AdminSettingList \n onChangeSetting={onChangeSetting}\n reduceSideBar={reduceSideBar}\n activated = {setting}\n />\n }\n </ul>\n {reduceSideBar === false ? <hr style={{width:\"150px\"}}></hr> : ''}\n\n <DropdownButton\n className=\"text-center bg-none text-decoration-none\"\n variant=\"light\" \n id=\"dropdown-basic\" \n drop=\"up\"\n align=\"end\"\n title={ reduceSideBar === false ? <><img src=\"https://github.com/mdo.png\" alt=\"\" width=\"32\" height=\"32\" className=\"rounded-circle me-2\"></img>\n <strong>{auth.user}</strong> \n <i className=\"bi bi-caret-up-fill\"></i></> : <img src=\"https://github.com/mdo.png\" alt=\"\" width=\"32\" height=\"32\" className=\"rounded-circle \"></img>}\n >\n <Dropdown.Item eventKey=\"1\">Setting</Dropdown.Item>\n <Dropdown.Item eventKey=\"2\">Another action</Dropdown.Item>\n <Dropdown.Item eventKey=\"3\">Something else here</Dropdown.Item>\n <Dropdown.Divider />\n <Dropdown.Item eventKey=\"4\">Profil</Dropdown.Item>\n </DropdownButton>\n </div>\n\n <div className=\"flex-grow-1 border border-start-0\">\n <Container className=\"pt-4 text-center\">\n \n <Outlet/>\n\n </Container>\n </div>\n\n </Container>\n </Style>\n </>)\n}\n\nfunction AdminSettingList(props){\n const onChangeSetting = props.onChangeSetting;\n const location = useLocation();\n const navigate = useNavigate();\n const listSvg = {\n\n home : {\n name : \"home\",\n path : \"home\",\n icon : \"bi bi-pie-chart\"\n },\n dashboard :{\n name : \"Contact\",\n path : \"contacts\",\n icon : \"bi bi-telephone-fill\"\n },\n orders : {\n name: \"Devis\",\n path : \"devis\",\n icon : \"bi bi-journals\"\n },\n products :{ \n name : \"Users\",\n path : \"users\",\n icon: \"bi bi-people\"\n },\n customers : { \n name: \"Add User\",\n path : \"adduser\",\n icon: \"bi bi-person-plus-fill\"\n },\n }\n\n return (Object.keys(listSvg).map((item,index)=>{\n\n return (<li key={index}>\n <div className={props.reduceSideBar === false ? (location.pathname.split('/').includes(listSvg[item].path) ?'nav-link active' : \"nav-link\") : (location.pathname.split('/').includes(listSvg[item].path) ?'nav-link active py-3 border-bottom rounded-0' : 'nav-link py-3 border-bottom rounded-0')} \n onClick={()=>{onChangeSetting(index); navigate(listSvg[item].path);}}\n >\n \n <i className={listSvg[item].icon} style={{fontSize:props.reduceSideBar === false ? 16 : 20}}></i>\n\n {props.reduceSideBar === false ? ' '+listSvg[item].name : ' '}\n </div>\n </li>)\n }));\n\n}\n\n","import axios from 'axios';\nimport authHeader from './authentication/auth-header';\nconst API_URL = process.env.REACT_APP_API ||'http://localhost:3000';\nconst API_USR = \"/api/admin/\";\nconst AdminService = {\n setNewUser(options) {\n return axios.post(API_URL + API_USR +'addUser',options, { headers: authHeader()})\n .then(res => {\n return res.data;\n }).catch((err)=>{\n return err.response.data;\n })\n },\n getUsersList() {\n return axios.get(API_URL + API_USR+ 'usersList',{ headers: authHeader()})\n .then(res => {\n return res.data.message;\n }).catch((err)=>{\n return [];\n })\n },\n updateProvider(options){\n return axios.post(API_URL +API_USR+ 'usersProviderAuth',options, { headers: authHeader()})\n .then(res => {\n return res.data;\n }).catch((err)=>{\n return err.response.data;\n })\n },\n getDevisList(){\n return axios.get(API_URL + API_USR+'devisList', { headers: authHeader()})\n .then(res => {\n return res.data;\n }).catch((err)=>{\n return err.response.data;\n })\n },\n openDevisListDetails(options){\n return axios.put(API_URL + API_USR+'devisJustSeen',options, { headers: authHeader()})\n .then(res => {\n return res.data;\n }).catch((err)=>{\n return err.response.data;\n })\n },\n devisDelete(options){\n return axios.delete(API_URL + API_USR+'devisDelete/'+options, { headers: authHeader()})\n .then(res => {\n return res.data;\n }).catch((err)=>{\n return err.response.data;\n })\n },\n getContactList(){\n return axios.get(API_URL + API_USR+'contactList', { headers: authHeader()})\n .then(res => {\n return res.data;\n }).catch((err)=>{\n return err.response.data;\n })\n },\n openContactListDetails(options){\n return axios.put(API_URL + API_USR+'contactJustSeen',options, { headers: authHeader()})\n .then(res => {\n return res.data;\n }).catch((err)=>{\n return err.response.data;\n })\n },\n contactDelete(options){\n return axios.delete(API_URL + API_USR+'contactDelete/'+options, { headers: authHeader()})\n .then(res => {\n return res.data;\n }).catch((err)=>{\n return err.response.data;\n })\n }\n}\nexport {AdminService};\n\n","\nimport React, {useState,useRef,useEffect} from \"react\";\nimport {Row,Col,Container,Modal,Button,Card} from 'react-bootstrap';\nimport { AdminService } from \"../../../../../services/admin.service\";\nimport SummaryForm from \"../../../../devis/SummaryForm\";\nimport useAuth from \"../../../../../services/authentication/useAuth\";\n\nconst capitalize = (str) => {\n return str[0].toUpperCase() + str.slice(1);\n};\n\nexport default function AdminDevis ( props){\n const mountedRef = useRef(true)\n const [search,setSearch] = useState(\"\")\n const [devisList,setDevisList] = useState([])\n const [show,setShow] = useState(true);\n const [devisDetails,setDevisDetails] = useState({})\n const [modalShow, setModalShow] = useState(false);\n const auth = useAuth();\n const handleSearch = (e)=>{\n setSearch(e.target.value.toLowerCase())\n if(show === false)\n setShow(!show)\n }\n const handleDevisDetails = (id) => {\n \n const item = devisList.find((item)=> item._id === id)\n setDevisDetails(item)\n if(!item.state.seen.includes(auth.user)){\n \n AdminService.openDevisListDetails({id:id,username:auth.user}).then(res=>{\n if(res.success && res.success === 200){\n setDevisList(devisList.map(oldItem =>{\n if(item._id === oldItem._id)\n oldItem.state.seen.push(auth.user)\n return oldItem\n }))\n }\n })\n }\n setShow(false)\n }\n\n const handleDevisDelete = () =>{\n setDevisList(devisList.filter(oldItem =>{\n if(oldItem._id !== devisDetails._id)\n return oldItem;\n return false;\n }))\n setShow(true)\n }\n \n useEffect(()=>{\n AdminService.getDevisList().then((res)=>{\n if(res.length !== 0 ){\n if (!mountedRef.current) \n return null\n setDevisList(res.message)\n }\n })\n return () => { \n mountedRef.current = false\n }\n },[])\n return (\n <Container>\n <Row className=\"justify-content-center text-center\">\n <Col xs={'auto'}>\n <input className=\"form-control\" placeholder=\"Chercher un devis\" onChange={handleSearch} title=\"search\" style={{width:\"200px\"}} ></input>\n </Col> \n </Row>\n\n <Row className=\"justify-content-center text-center\">\n {show ? \n <DevisListCard\n search={search } \n devisList={devisList}\n handleDevisDetails={handleDevisDetails}\n /> \n : \n <>\n <div className=\"d-flex flex-row-reverse\">\n <div className=\"p-2\"><i className=\"bi bi-x text-dark \" onClick={()=>setShow(true)} style={{fontSize:\"38px\"}}></i></div>\n <div className=\"p-2\"><i className=\"bi bi-trash-fill text-danger\" onClick={()=>{setModalShow(true)}} style={{fontSize:\"33px\"}} ></i></div>\n </div>\n \n <SummaryForm client={devisDetails}/> \n </>\n \n }\n \n </Row> \n <DeleteDevis\n show={modalShow}\n onHide={() => setModalShow(false)}\n item={devisDetails}\n delete={handleDevisDelete}\n />\n </Container>\n );\n}\n\nfunction DevisListCard ( props){\n const auth = useAuth();\n\n return (props.devisList.filter((item,index)=>{\n if(props.search === \"\"){\n return item\n }else{\n if(item.number.toLowerCase().search(props.search) !== -1 \n || item.projects[0].projectType.toLowerCase().search(props.search) !== -1\n || item.projects[0].city.toLowerCase().search(props.search) !== -1){\n \n return item\n }\n }\n return false;\n }).map((item,index)=>{\n\n \n return (\n <Col xs=\"auto\" key={index}>\n\n <Card className=\"m-2\" bg={item.state.seen.includes(auth.user) === true ? \"light\" : \"warning\" } onClick={()=>props.handleDevisDetails(item._id)}>\n <Card.Body>\n <Card.Title className=\"text-capitalize fw-normal\">{\"Devis N°\" +item.number}</Card.Title>\n \n <span className=\"text-dark\">\n {item.projects[0].projectType} \n </span>\n <br></br>\n <span className=\"text-dark\">\n {capitalize(item.projects[0].city)+\", \"+capitalize(item.projects[0].country) }\n </span>\n </Card.Body>\n <Card.Footer>\n <small>\n { item.createdIn? \"Fait le \" : ''}\n <span className=\"text-primary\">{ item.createdIn? item.createdIn.split(',')[0] : ''}</span>\n { item.createdIn? \" à \" : ''}\n <span className=\"text-primary\"> { item.createdIn? item.createdIn.split(',')[1].split('.')[0] : ''}</span></small>\n <hr></hr>\n <small>\n <span className={item.state.progress.length === 0?\"text-danger\" : \"text-primary\" }>{item.state.progress.length === 0? \"Non traité\" : item.state.progress[item.state.progress.length-1]} </span>\n </small>\n <hr></hr>\n <small>\n <span className=\"text-primary\"> {item.state.seen.length} vu(s)</span>\n </small>\n </Card.Footer>\n \n \n \n \n </Card>\n \n </Col>\n )\n }))\n}\n\n\nfunction DeleteDevis(props) {\n\n const modalAttributes = {...props};\n delete modalAttributes['delete']\n\n const deleteDevis = ()=>{\n AdminService.devisDelete(props.item._id).then(res=>{\n if(res.success && res.success === 200){\n props.onHide()\n props.delete()\n }\n })\n }\n \n return (\n <Modal\n {...modalAttributes}\n size=\"lg\"\n aria-labelledby=\"contained-modal-title-vcenter\"\n centered\n >\n <Modal.Header closeButton>\n <Modal.Title id=\"contained-modal-title-vcenter\" className=\"text-primary text-center\">\n Devis N°{props.item.number} \n </Modal.Title>\n </Modal.Header>\n <Modal.Body className=\"text-dark\">\n Confirmez la suppression de ce devis.\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={deleteDevis} className='bg-danger'>Supprimer</Button>\n </Modal.Footer>\n </Modal>\n );\n}","import React, {useState,useRef,useEffect} from \"react\";\nimport {Row,Col,Container,Button,Card} from 'react-bootstrap';\nimport { AdminService } from \"../../../../../services/admin.service\";\n\n\nexport default function AdminUser(){\n const mountedRef = useRef(true)\n const [search,setSearch] = useState(\"\")\n const [userList,setUserList] = useState([])\n const [show,setShow] =useState(false)\n const [userDetails,setUserDetails] = useState({})\n const handleSearch = (e)=>{\n setSearch(e.target.value.toLowerCase())\n if(show === true)\n setShow(!show)\n }\n const handleAdminUserDetails = (username)=>{\n setShow(true)\n setUserDetails(userList.find((item)=> item.username === username))\n }\n const updateUser = (user) => {\n var users = userList;\n users[userList.findIndex((item)=> item.username === user.username)] = user;\n setUserList(users);\n setUserDetails(userList.find((item)=> item.username === user.username))\n }\n useEffect(()=>{\n AdminService.getUsersList().then((r)=>{\n if (!mountedRef.current) \n return null\n setUserList(r)\n })\n\n \n return () => { \n mountedRef.current = false\n }\n },[])\n return (<>\n <Container>\n <Row className=\"justify-content-center text-center\">\n <Col xs={'auto'}>\n <input className=\"form-control\" placeholder=\"Chercher un utilisateur\" onChange={handleSearch} title=\"search\" style={{width:\"200px\"}} ></input>\n </Col> \n </Row>\n <Row className=\"justify-content-center text-center\">\n { !show? \n <AdminUserListCard \n search={search} \n userList={userList}\n handleAdminUserDetails={handleAdminUserDetails}\n />\n : \n <AdminUserDetails userDetails={userDetails} setShow={setShow} updatedUser={updateUser}/>\n }\n </Row> \n </Container>\n \n </>);\n}\n\nfunction AdminUserListCard(props) {\n\n const handleAdminUserDetails = props.handleAdminUserDetails;\n\n return (\n props.userList.filter((item)=>{\n if(props.search === \"\"){\n return item\n }else{\n if(item.username.search(props.search) !== -1 \n || item.nom.search(props.search) !== -1\n || item.prenom.search(props.search) !== -1\n || item.phone.search(props.search) !== -1\n || item.email.search(props.search) !== -1){\n return item\n }\n }\n return false;\n }).map((item,index)=>{\n return(\n <Col xs=\"auto\" key={index}>\n <Card className=\"m-2\" bg={item.roles[0].name === \"client\" ? \"light\" : \"warning\"} onClick={()=>handleAdminUserDetails(item.username)}>\n <Card.Body>\n <Card.Title className=\"text-capitalize fw-normal\">{item.nom + \" \" + item.prenom}</Card.Title> \n </Card.Body>\n <Card.Footer>\n <small className=\"text-dark\">Crée par : <span className=\"text-primary\">{item.createdBy[0].username}</span> </small>\n \n <hr></hr>\n <small>\n { item.createdIn? \" le \" : ''}\n <span className=\"text-primary\">{ item.createdIn? item.createdIn.split(',')[0] : ''}</span>\n { item.createdIn? \" à \" : ''}\n <span className=\"text-primary\"> { item.createdIn? item.createdIn.split(',')[1].split('.')[0] : ''}</span></small>\n </Card.Footer>\n </Card>\n </Col>)\n })\n );\n}\n\nfunction AdminUserDetails (props){\n const closeAdminUserDetails = ()=>{props.setShow(false)}\n const [user,setUser] = useState(props.userDetails)\n const [edit,setEdit] = useState({synergy:false,growatt:false})\n const [connection,setConnection] = useState(false)\n const [provider,setProvider] = useState(\"\")\n \n const handleInput = (e)=>{\n var target = e.target.title.split('_');\n const newProvider = user.providers\n newProvider[target[0]][target[1]] = e.target.value\n setUser((prev)=> (\n {...prev,\n providers: newProvider\n }))\n }\n\n const handleEdit = (e)=>{\n if(edit[e] === false)\n setEdit((prev)=>({...prev,[e]:!edit[e]}))\n }\n\n const handleConnect = (provider)=>{\n setProvider(provider)\n setConnection(true)\n setEdit((prev)=>({...prev,[provider]:false}))\n }\n\n useEffect(()=>{\n if(connection){\n var options = user.providers[provider]\n options.username = user.username;\n options.provider = provider;\n AdminService.updateProvider(options).then((r)=>{\n const newProvider = user.providers;\n if(r.message && r.message === 200)\n newProvider[provider].connected = true\n else\n newProvider[provider].connected = false\n \n setUser((prev)=> (\n {...prev,\n providers:newProvider})) \n })\n }\n\n setConnection(false)\n \n return ()=>{\n props.updatedUser(user)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n },[connection])\n return(\n <>\n <i className=\"bi bi-x text-dark text-end\" onClick={closeAdminUserDetails} style={{fontSize:\"38px\"}}></i>\n \n <div className=\"text-center mx-auto mb-5 pt-3\" style={{maxWidth: '600px'}}>\n <h1 className=\"mb-4\" style={{textShadow: \"0px 5px 5px #ffc107\",color:\"#318af2\"}}>{user.roles[0].name} </h1>\n </div>\n <Col md={8} xs={12} >\n \n <Card>\n <Card.Header>\n <h4 className=\"text-dark\">\n Coordonnée\n </h4></Card.Header>\n <Card.Body>\n <Row className=\"justify-content-center\">\n <Col xs={6}>\n <div className=\"mb-3 row \">\n <label className=\"col-sm-12 col-form-label text-nowrap\">Nom</label>\n <div className=\"col-sm-12\">\n <input type=\"text\" readOnly className=\"form-control-plaintext text-center text-dark\" title={user.nom +\"_pwd\"} onChange={handleInput} value={user.nom}></input>\n </div>\n </div>\n </Col>\n\n <Col xs={6}>\n <div className=\"mb-3 row \">\n <label className=\"col-sm-12 col-form-label text-nowrap\">Prenom</label>\n <div className=\"col-sm-12\">\n <input type=\"text\" readOnly className=\"form-control-plaintext text-center text-dark\" title={user.prenom +\"_pwd\"} onChange={handleInput} value={user.prenom}></input>\n </div>\n </div>\n </Col>\n\n <Col xs={6}>\n <div className=\"mb-3 row \">\n <label htmlFor=\"staticEmail\" className=\"col-sm-12 col-form-label text-nowrap\">Email</label>\n <div className=\"col-sm-12\">\n <input type=\"text\" readOnly className=\"form-control-plaintext text-center text-dark\" value={user.email}></input>\n </div>\n </div>\n </Col>\n <Col xs={6}>\n <div className=\"mb-3 row \">\n <label htmlFor=\"staticEmail\" className=\"col-sm-12 col-form-label text-nowrap\">Tel</label>\n <div className=\"col-sm-12\">\n <input type=\"text\" readOnly className=\"form-control-plaintext text-center text-dark\" title={user.username +\"_pwd\"} onChange={handleInput} value={user.phone}></input>\n </div>\n </div>\n \n </Col>\n \n </Row>\n </Card.Body>\n </Card>\n <div className=\"pt-5\"></div>\n { user.providers? <> \n <Card>\n <Card.Header>\n <h4 className=\"text-dark \">\n Providers\n </h4>\n </Card.Header>\n <Card.Body>\n <Row className=\"justify-content-center pt-1\">\n { Object.keys(user.providers).map((item,index)=>{\n var providerName = item;\n\n if(user.providers[providerName]?.id !== undefined &&user.providers[providerName]?.pwd !== undefined )\n return ( \n <Col xs={'auto'} key={index} >\n <Card style={{ width: '13rem' }} border={user.providers[providerName].connected === true ? (edit[providerName]? \"dark\" :\"success\") : (edit[providerName]? \"dark\":\"danger\")} onDoubleClick ={()=>handleEdit(providerName)}>\n <Card.Header className=\"fw-bolder text-capitalize text-dark\">{providerName} </Card.Header>\n <Card.Body>\n <Row className=\"justify-content-center\">\n <Col xs={'auto'}>\n <div className=\"mb-3 row \">\n <label htmlFor=\"staticEmail\" className=\"col-sm-2 col-form-label text-nowrap\">Id</label>\n <div className=\"col-sm-10\">\n <input type=\"text\" readOnly={edit[providerName]?false :true} className={edit[providerName]? \"form-control-plaintext text-center text-dark border border-dark\" :\"form-control-plaintext text-center text-dark\"} title={providerName+\"_id\"} onChange={(e)=>{handleInput(e); setProvider(providerName)}} defaultValue={user.providers[providerName].id}></input>\n </div>\n </div>\n </Col>\n <Col xs={'auto'}>\n <div className=\"mb-3 row \">\n <label htmlFor=\"staticEmail\" className=\"col-sm-2 col-form-label text-nowrap \">Pass </label>\n <div className=\"col-sm-10\">\n <input type=\"text\" readOnly={edit[providerName]?false :true} className={edit[providerName]? \"form-control-plaintext text-center text-dark border border-dark\" :\"form-control-plaintext text-center text-dark\"} title={providerName+\"_pwd\"} onChange={(e)=>{handleInput(e); setProvider(providerName)}} defaultValue={user.providers[providerName].pwd}></input>\n </div>\n </div>\n \n </Col>\n </Row>\n </Card.Body>\n <Card.Footer className={user.providers[providerName].connected === true ? (edit[providerName]? \"bg-light\" :\"bg-success\") : (edit[providerName]? \"bg-light\":\"bg-danger\")}>\n {edit[providerName]? \n <Button size=\"sm\" onClick={()=>handleConnect(providerName)}>Se connecter</Button>\n :<span className=\"text-dark\">{user.providers[providerName].connected ? 'On' : 'Off'} {user.providers[providerName].connected ? <i className=\"bi bi-check-circle\"></i> : <i className=\"bi bi-x-circle\"></i>}</span> }\n </Card.Footer>\n </Card>\n </Col>)\n\n })}\n </Row>\n </Card.Body>\n </Card>\n \n \n </> : '' }\n \n </Col>\n </>\n )\n}","import React, {useState,useRef,useEffect} from \"react\";\nimport {Row,Col,Modal,Container,Button,Card} from 'react-bootstrap';\nimport { AdminService } from \"../../../../../services/admin.service\";\nimport useAuth from \"../../../../../services/authentication/useAuth\";\n\nexport default function AdminContact(props){\n const mountedRef = useRef(true)\n const [search,setSearch] = useState(\"\")\n const [contactList,setContactList] = useState([])\n const [modalShow, setModalShow] = useState(false);\n const [contactDetails,setContactDetails] = useState({})\n const auth = useAuth();\n const handleSearch = (e)=>{\n setSearch(e.target.value.toLowerCase())\n }\n const handleContactDetails = (id) => {\n const item = contactList.find((item)=> item._id === id)\n setContactDetails(item)\n setModalShow(true)\n if(!item.state.seen.includes(auth.user))\n AdminService.openContactListDetails({id:id,username:auth.user}).then(res=>{\n if(res.success && res.success === 200){\n setContactList(contactList.map(oldItem =>{\n if(item._id === oldItem._id)\n oldItem.state.seen.push(auth.user)\n return oldItem\n }))\n }\n })\n }\n\n const handleContactDelete = () =>{\n setContactList(contactList.filter(oldItem =>{\n if(oldItem._id !== contactDetails._id)\n return oldItem;\n return false;\n }))\n setModalShow(false)\n }\n\n useEffect(()=>{\n AdminService.getContactList().then((res)=>{\n if(res.length !== 0 ){\n if (!mountedRef.current) \n return null\n setContactList(res.message)\n }\n })\n return () => { \n mountedRef.current = false\n }\n },[])\n return (\n <Container>\n <Row className=\"justify-content-center text-center\">\n <Col xs={'auto'}>\n <input className=\"form-control\" placeholder=\"Chercher un contact\" onChange={handleSearch} title=\"search\" style={{width:\"200px\"}} ></input>\n </Col> \n </Row>\n <Row className=\"justify-content-center text-center\">\n\n <ContactListCard\n search={search} \n contactList={contactList}\n handleContactDetails={handleContactDetails}\n /> \n \n </Row> \n <ContactDetails\n show={modalShow}\n onHide={() => setModalShow(false)}\n item={contactDetails}\n delete={handleContactDelete}\n />\n </Container>\n );\n}\n\nfunction ContactListCard(props){\n const auth = useAuth();\n return (props.contactList.filter((item,index)=>{\n if(props.search === \"\"){\n return item\n }else{\n if(item.number.toLowerCase().search(props.search) !== -1 \n || item.subject.toLowerCase().search(props.search) !== -1){\n return item\n }\n }\n return false;\n }).map((item,index)=>{\n\n return (\n <Col xs=\"auto\" key={index}>\n\n <Card className=\"m-2\" bg={item.state.seen.includes(auth.user) === true ? \"light\" : \"warning\" } onClick={()=>props.handleContactDetails(item._id)}>\n <Card.Body>\n <Card.Title className=\"text-capitalize fw-normal\">{\"Contact N°\" +item.number}</Card.Title>\n \n <span className=\"text-dark\">\n {item.subject}\n </span>\n </Card.Body>\n <Card.Footer>\n <small>\n { item.createdIn? \"Fait le \" : ''}\n <span className=\"text-primary\">{ item.createdIn? item.createdIn.split(',')[0] : ''}</span>\n { item.createdIn? \" à \" : ''}\n <span className=\"text-primary\"> { item.createdIn? item.createdIn.split(',')[1].split('.')[0] : ''}</span></small>\n <hr></hr>\n <small>\n <span className=\"text-primary\"> {item.state.seen.length} vu(s)</span>{' -- '}\n <span className=\"text-primary\">{item.state.progress.length === 0? \"Non traité\" : item.state.progress[item.state.progress.length-1]} </span>\n </small>\n </Card.Footer>\n \n \n \n \n </Card>\n \n </Col>\n )\n }))\n}\n\nfunction ContactDetails(props) {\n const deleteContact = ()=>{\n AdminService.contactDelete(props.item._id).then(res=>{\n if(res.success && res.success === 200){\n props.onHide()\n props.delete()\n }\n })\n }\n return (\n <Modal\n {...props}\n size=\"lg\"\n aria-labelledby=\"contained-modal-title-vcenter\"\n centered\n >\n <Modal.Header closeButton>\n <Modal.Title id=\"contained-modal-title-vcenter\" >\n Contact\n </Modal.Title>\n </Modal.Header>\n <Modal.Body >\n <Container>\n <div className=\"row g-3\">\n <div className=\"col-md-6\">\n <div className=\"form-floating\">\n <input type=\"text\" className=\"form-control text-dark bg-light\" defaultValue={\"\" || props.item.name} placeholder=\"Nom\" readOnly></input>\n <label htmlFor=\"name\">Nom</label>\n </div>\n </div>\n <div className=\"col-md-6\">\n <div className=\"form-floating\">\n <input type=\"email\" className=\"form-control text-dark bg-light\" defaultValue={\"\" || props.item.email} placeholder=\"Email\" readOnly></input>\n <label htmlFor=\"email\">Email</label>\n </div>\n </div>\n <div className=\"col-12\">\n <div className=\"form-floating\">\n <input type=\"text\" className=\"form-control text-dark bg-light\" defaultValue={\"\" || props.item.sujet} placeholder=\"Sujet\" readOnly></input>\n <label htmlFor=\"subject\">Sujet</label>\n </div>\n </div>\n <div className=\"col-12\">\n <div className=\"form-floating\">\n <textarea className=\"form-control text-dark bg-light\" placeholder=\"Leave a message here\" defaultValue={\"\" || props.item.message} style={{height: \"100px\"}} readOnly></textarea>\n <label htmlFor=\"message\">Message</label>\n </div>\n </div>\n\n </div>\n </Container>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={deleteContact} className='bg-danger' >Supprimer</Button>\n <Button onClick={props.onHide}>Close</Button>\n </Modal.Footer>\n </Modal>\n );\n}","import React, {useState,useEffect} from \"react\";\nimport {Row,Col,Modal,FloatingLabel,Form,Button} from 'react-bootstrap';\nimport { AdminService } from \"../../../../../services/admin.service\";\n\nconst capitalize = (str) => {\n return str[0].toUpperCase() + str.slice(1);\n};\n\n\nexport default function AdminAddUser(){\n const [isLoading, setLoading] = useState(false);\n const [account, setAccount ] = useState({roles:[],providers:{}})\n const handleClick = () => setLoading(true);\n const [modalShow, setModalShow] = useState(false);\n const handleEndInput = (e)=>{\n var roles = account.roles;\n if(e.target.value !== \"on\"){\n setAccount((prev)=> ({...prev,[e.target.title]: e.target.value}))\n }else if( e.target.checked ){\n roles = [];\n roles.push(e.target.title)\n setAccount((prev)=> ({...prev,roles:roles}))\n\n }else if ( ! e.target.checked ){\n roles.splice(roles.findIndex((item)=>{ return item === e.target.title}),1)\n setAccount((prev)=> ({...prev,roles:roles}))\n }\n }\n const handleProviders = (e)=>{\n var providers = account.providers;\n if( e.target.checked ){\n providers[e.target.title]={id:\"\",pwd:\"\"}\n }else if( !e.target.checked){\n delete providers[e.target.title]\n }\n setAccount((prev)=> ({...prev,providers:providers}))\n }\n const handleProvidersInfo = (e)=>{\n var providers = account.providers;\n providers[e.target.title.split('_')[0]][e.target.title.split('_')[1]]= e.target.value\n setAccount((prev)=> ({...prev,providers:providers})) \n }\n const handleFonctionEmploye = (e)=>{\n setAccount((prev)=> ({...prev,fonction:e.target.value}))\n }\n const handleAgenceEmploye = (e)=> {\n setAccount((prev)=> ({...prev,agence:e.target.value}))\n }\n useEffect(() => {\n const clearData = account;\n if(account.roles.includes(\"employe\"))\n delete clearData[\"providers\"]\n if(account.roles.includes(\"client\")){\n delete clearData[\"fonction\"];\n delete clearData[\"agence\"];\n }\n\n\n if (isLoading) {\n AdminService.setNewUser(account).then(res=> {\n if(res?.message === 200){\n setLoading(false)\n setModalShow(true)\n }else{\n alert(res?.message)\n setLoading(false)\n }\n })\n setLoading(false)\n }\n }, [isLoading,account]);\n return( <> \n <div className=\"text-center mx-auto mb-5\" style={{maxWidth: '600px'}}>\n <h1 className=\"mb-4\" style={{textShadow: \"0px 5px 5px #ffc107\",color:\"#318af2\"}}>Nouveau utilisateur</h1>\n </div>\n <Row className=\"g-2 justify-content-center border-bottom text-dark\">\n <Col lg={6}>\n <FloatingLabel controlId=\"username\" label=\"identifiant\">\n <Form.Control type=\"username\" placeholder=\"pseudo\" title=\"username\" defaultValue = {\"\" || account.username} onBlur={(e)=>handleEndInput(e)} />\n </FloatingLabel>\n </Col>\n <Col lg={6} >\n <FloatingLabel controlId=\"password\" label=\"Mot de passe\">\n <Form.Control type=\"password\" placeholder=\"Mot de passe\" title=\"password\" defaultValue = {\"\" || account.password} onBlur={(e)=>handleEndInput(e)} />\n </FloatingLabel>\n </Col>\n <Col lg={6} >\n <FloatingLabel controlId=\"nom\" label=\"Nom de famille\">\n <Form.Control type=\"username\" placeholder=\"Nom de famille\" title=\"nom\" defaultValue = {\"\" || account.nom} onBlur={(e)=>handleEndInput(e)} />\n </FloatingLabel>\n </Col>\n <Col lg={6}>\n <FloatingLabel controlId=\"prenom\" label=\"Prenom\">\n <Form.Control type=\"username\" placeholder=\"Prenom\" title=\"prenom\" defaultValue = {\"\" || account.prenom} onBlur={(e)=>handleEndInput(e)}/>\n </FloatingLabel>\n </Col>\n <Col lg={6}>\n <FloatingLabel controlId=\"email\" label=\"Adresse mail\">\n <Form.Control type=\"email\" placeholder=\"name@example.com\" defaultValue = {\"\" || account.email} title=\"email\" onBlur={(e)=>handleEndInput(e)} />\n </FloatingLabel>\n </Col>\n <Col lg={6}>\n <FloatingLabel controlId=\"telephone\" label=\"Téléphone\">\n <Form.Control type=\"phone\" placeholder=\"numéro de téléphone\" title=\"tel\" defaultValue = {\"\" || account.tel} onBlur={(e)=>handleEndInput(e)}/>\n </FloatingLabel>\n </Col>\n \n \n <Col className=\"d-flex justify-content-center p-4\">\n <Form.Check type=\"checkbox\" className=\"text-center\">\n <Form.Check.Input type=\"checkbox\" title=\"client\" checked = {account.roles.includes(\"client\")} onChange={(e)=>handleEndInput(e)} />\n <Form.Check.Label>Client</Form.Check.Label>\n </Form.Check>\n </Col>\n <Col className=\"d-flex justify-content-center p-4\">\n <Form.Check type=\"checkbox\">\n <Form.Check.Input type=\"checkbox\" title=\"employe\" checked = { account.roles.includes(\"employe\")} onChange={(e)=>handleEndInput(e)}/>\n <Form.Check.Label>Employé</Form.Check.Label>\n </Form.Check>\n </Col>\n <Col className=\"d-flex justify-content-center p-4\">\n <Form.Check type=\"checkbox\">\n <Form.Check.Input type=\"checkbox\" title=\"admin\" checked = {account.roles.includes(\"admin\")} onChange={(e)=>handleEndInput(e)} />\n <Form.Check.Label>Admin</Form.Check.Label>\n </Form.Check>\n </Col>\n </Row>\n {account && account.roles.includes(\"client\") ?\n <Row className=\" g-2 text-dark border-bottom\">\n <div className=\"text-center mx-auto pt-2\" >\n <h3 className=\"mb-1 text-primary\" >Providers</h3>\n </div>\n <Col className=\"d-flex justify-content-center p-4\">\n <Form.Check type=\"checkbox\" className=\"text-center\" >\n <Form.Check.Input type=\"checkbox\" title=\"senergy\" defaultChecked = {account.providers.senergy? true : false} onClick={(e)=>handleProviders(e)} />\n <Form.Check.Label>Senergy</Form.Check.Label>\n </Form.Check>\n </Col>\n <Col className=\"d-flex justify-content-center p-4\">\n <Form.Check type=\"checkbox\" >\n <Form.Check.Input type=\"checkbox\" title=\"growatt\" defaultChecked = {account.providers.growatt? true : false} onClick={(e)=>handleProviders(e)} />\n <Form.Check.Label>Growatt</Form.Check.Label>\n </Form.Check>\n </Col>\n <Col className=\"d-flex justify-content-center p-4\">\n <Form.Check type=\"checkbox\" >\n <Form.Check.Input type=\"checkbox\" title=\"autres\" onClick={(e)=>handleProviders(e)} disabled/>\n <Form.Check.Label>others</Form.Check.Label>\n </Form.Check>\n </Col>\n </Row>\n : ' '}\n\n {account && account.roles.includes(\"employe\") ?\n <Row className=\" g-2 text-dark border-bottom\">\n <div className=\"text-center mx-auto pt-2\" >\n <h3 className=\"mb-1 text-primary\" >Fonction à Universal Energy</h3>\n </div>\n <Col className=\"d-flex justify-content-center p-4\">\n <Form.Select className=\"text-center text-dark\" defaultValue = {\"\" || account.fonction} aria-label=\"Fonction\" onChange={(e=>{handleFonctionEmploye(e) })} >\n <option value=\"\">Poste au sein de l'quipe</option>\n <option value=\"commercial\">Commercial</option>\n <option value=\"ingenieur\">Ingénieur</option>\n <option value=\"technicien\">Technicien</option>\n <option value=\"comptable\">Comptable</option>\n <option value=\"directeur\">Directeur</option>\n <option value=\"chef\">Chef d'équipe</option>\n </Form.Select>\n </Col>\n <Col className=\"d-flex justify-content-center p-4\">\n <Form.Select className=\"text-center text-dark\" defaultValue = {\"\" || account.agence} aria-label=\"Agence\" onChange={(e=>{handleAgenceEmploye(e) })} >\n <option value=\"\">Agence</option>\n <option value=\"midoun\">Midoun</option>\n <option value=\"houmtSouk\">Houmt souk</option>\n <option value=\"guellala\">Guellala</option>\n <option value=\"tataouine\">Tatouine</option>\n <option value=\"nabeul\">Nabeul</option>\n <option value=\"tunis\">Tunis</option>\n </Form.Select>\n </Col>\n\n </Row>\n : ' '}\n\n {account && Object.keys(account.providers).length !== 0 ?\n Object.keys(account.providers).map((item,index)=>{\n return (\n <Row className=\"g-2 text-dark border-bottom\" key={index}>\n <div className=\"text-center mx-auto pt-2\" >\n <h3 className=\"mb-1 text-primary\" >{capitalize(item)}</h3>\n </div>\n <Col lg={6} className=\"d-flex justify-content-center p-4\" >\n <FloatingLabel label=\"Identifiant\">\n <Form.Control type=\"text\" placeholder=\"pseudo\" defaultValue = {\"\" || account.providers[item][item+\"_id\"]} title={item+\"_id\"} onBlur={(e)=>handleProvidersInfo(e)} />\n </FloatingLabel>\n </Col>\n <Col lg={6} className=\"d-flex justify-content-center p-4\">\n <FloatingLabel label=\"Mot de passe\">\n <Form.Control type=\"password\" placeholder=\"password\" defaultValue = {\"\" || account.providers[item][item+\"_pwd\"]} title={item +\"_pwd\"} onBlur={(e)=>handleProvidersInfo(e)} />\n </FloatingLabel>\n </Col>\n </Row>) \n })\n : ' '}\n \n <Button\n variant=\"primary\"\n disabled={isLoading}\n onClick={!isLoading ? handleClick : null}\n className=\"m-3\"\n >\n {isLoading ? 'en cours...' : 'Enregistrer'}\n </Button>\n <CenteredModal\n show={modalShow}\n onHide={() => setModalShow(false)}\n user={account}\n />\n </> ) ;\n\n \n}\n\nfunction CenteredModal(props) {\n return (\n <Modal\n {...props}\n size=\"lg\"\n aria-labelledby=\"contained-modal-title-vcenter\"\n centered\n >\n <Modal.Header closeButton>\n <Modal.Title id=\"contained-modal-title-vcenter\" className=\"text-success\">\n Registration Terminée!\n </Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <h4>Nouveau utilisateur : {props.user.username}</h4>\n <span className=\"text-dark\">mail : {props.user.email}</span><br></br>\n <span className=\"text-dark\">tel : {props.user.tel}</span><br></br>\n <span className=\"text-dark\">Roles : {props.user.roles}</span><br></br>\n <p className=\"text-danger fw-bolder\">\n <strong>Nb:</strong>En cas d'erreur merci de supprimer l'utilisateur.\n </p>\n </Modal.Body>\n <Modal.Footer>\n <Button className=\"text-dark btn-danger\" onClick={props.onHide}>Supprimer</Button>\n </Modal.Footer>\n </Modal>\n );\n}","import React from \"react\";\nimport Upheader from \"./component/header/Upheader\"\nimport Header from \"./component/header/Header\"\nimport Footer from \"./component/footer/Footer\";\nimport Home from \"./component/home/Home\"\nimport About from \"./component/about/About\"\nimport Project from \"./component/project/Project\";\nimport Contact from \"./component/contact/Contact\";\nimport SignIn from \"./component/sign/SignIn\";\nimport Devis from \"./component/devis/Devis\";\nimport Recruitment from \"./component/recruitment/Recruitment\"\nimport Services from \"./component/services/Services\"\nimport ServicesList from \"./component/services/ServicesList\";\nimport PanneauxSolaires from \"./component/services/servicesList/PanneauxSolaires\";\nimport DownloadFiles from \"./component/download/DownloadFiles\";\nimport RequireAuth from \"./services/authentication/RequireAuth\";\nimport Dashboard from \"./component/sign/user/Dashboard\";\nimport SignInForm from \"./component/sign/SignInForm\";\nimport { AuthProvider } from \"./services/authentication/useAuth\";\nimport Documents from \"./component/sign/user/Documents\";\nimport Profil from \"./component/sign/user/Profil\";\nimport PlantDetails from \"./component/sign/user/PlantDetails\";\nimport Admin from \"./component/sign/user/admin/Admin\";\nimport ClientDashboard from \"./component/sign/user/client/ClientDashboard\";\nimport AdminDevis from \"./component/sign/user/admin/Devis/AdminDevis\";\nimport AdminUser from \"./component/sign/user/admin/User/AdminUser\";\nimport AdminContact from \"./component/sign/user/admin/Contact/AdminContact\";\nimport AdminAddUser from \"./component/sign/user/admin/User/AdminAddUser\";\nimport {\n BrowserRouter as Router,\n Routes,\n Route,\n Link,\n useLocation\n} from \"react-router-dom\";\n\n\n// This site has 3 pages, all of which are rendered\n// dynamically in the browser (not server rendered).\n//\n// Although the page does not ever refresh, notice how\n// React Router keeps the URL up to date as you navigate\n// through the site. This preserves the browser history,\n// making sure things like the back button and bookmarks\n// work properly.\n\nexport default class App extends React.Component {\n constructor(props) { \n super(props); \n this.state = {\n lang:'fr'\n }; \n }\n render(){\n return (\n <AuthProvider>\n <Router>\n <div>\n <Upheader lang={this.state.lang}/>\n <Header lang={this.state.lang}/>\n \n\n <Routes>\n <Route exact path=\"/\" element={<Home/> }>\n </Route>\n\n <Route path=\"/about\" element={<About />}>\n </Route>\n \n <Route path=\"/service\" element={<Services />}>\n <Route index element={<ServicesList />}></Route>\n <Route path=\"solarPanels\" element={<PanneauxSolaires />}></Route>\n <Route path=\"*\" element={<Construction/>}></Route>\n </Route>\n\n <Route path=\"/project\" element={<Project />}>\n </Route>\n\n <Route path=\"/recruitment\" element={<Recruitment />}>\n </Route>\n\n <Route path=\"/devis\" element={<Devis />}>\n </Route>\n\n <Route path=\"/user\" element={<SignIn />}>\n <Route index element={<RequireAuth> <Dashboard/></RequireAuth>}></Route>\n \n <Route path=\"admin\" element={<RequireAuth> <Admin/></RequireAuth>}>\n <Route path=\"devis\" element={<RequireAuth> <AdminDevis/></RequireAuth>}></Route>\n <Route path=\"users\" element={<RequireAuth> <AdminUser/></RequireAuth>}></Route>\n <Route path=\"contacts\" element={<RequireAuth> <AdminContact/></RequireAuth>}></Route>\n <Route path=\"adduser\" element={<RequireAuth> <AdminAddUser/></RequireAuth>}></Route>\n\n <Route path=\"*\" element={<NotFound/>}></Route>\n </Route>\n\n <Route path=\"dashboard\" element={<RequireAuth> <ClientDashboard/></RequireAuth>}></Route>\n <Route path=\"plantDetails/:provider/:plantId\" element={<RequireAuth> <PlantDetails/></RequireAuth>}></Route>\n <Route path=\"profil\" element={<RequireAuth> <Profil/></RequireAuth>}></Route>\n <Route path=\"documents\" element={<RequireAuth> <Documents/></RequireAuth>}></Route>\n \n \n\n <Route path=\"signin\" element={<SignInForm/>}></Route>\n <Route path=\"*\" element={<NotFound/>}></Route> \n </Route>\n\n \n\n <Route path=\"/contact\" element={<Contact/>}>\n </Route>\n\n <Route path=\"/download\" element={<DownloadFiles/>}>\n </Route>\n\n <Route path=\"*\" element={<NotFound/>}>\n \n </Route>\n </Routes>\n\n <Footer/>\n </div>\n </Router>\n \n </AuthProvider>\n \n );\n }\n}\n\nfunction NotFound() {\n return (\n <div className=\"container-xxl py-5 \">\n <div className=\"container text-center\">\n <div className=\"row justify-content-center\">\n <div className=\"col-lg-6\">\n <i className=\"bi bi-exclamation-triangle display-1 text-primary\"></i>\n <h1 className=\"display-1\">404</h1>\n <h1 className=\"mb-4\">Page Not Found</h1>\n <p className=\"mb-4\">We’re sorry, the page you have looked for does not exist in our website! Maybe go to our home page or try to use a search?</p>\n <Link to=\"/\"><h3 className=\"text-danger rounded-pill py-3 px-5\" >Go Back To Home</h3></Link>\n </div>\n </div>\n </div>\n </div>\n );\n}\n\nfunction Construction() {\n let location = useLocation();\n return (\n <div className=\"container-xxl py-5 \">\n <div className=\"container text-center\">\n <div className=\"row justify-content-center\">\n <div className=\"col-lg-6\">\n <i className=\"bi bi-exclamation-triangle display-1 text-primary\"></i>\n <h1 className=\"display-1\">Sorry</h1>\n <h1 className=\"mb-4\">Page In Construction</h1>\n <p className=\"mb-4\">We’re sorry, the page you have looked is in construction! Maybe go to our home page or go back to the last page?</p>\n <Link to={\"/\"+location.pathname.split('/').splice(1,location.pathname.split('/').length-2).join('/')}><h3 className=\"text-danger rounded-pill py-3 px-5\" >Go Back</h3></Link>\n </div>\n </div>\n </div>\n </div>\n );\n}","const reportWebVitals = onPerfEntry => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './assets/css/bootstrap.min.css';\nimport './assets/css/fontawesome.css'\nimport './assets/css/style.css'\nimport './assets/css/fonts.css'\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\n\nReactDOM.render(\n <React.StrictMode>\n <App />\n </React.StrictMode>,\n document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n","export default function authHeader() {\n const accessToken = JSON.parse(localStorage.getItem('accessToken'));\n if (accessToken) {\n // for Node.js Express back-end\n return { 'x-access-token': accessToken };\n } else {\n return {};\n }\n}\n","import axios from 'axios';\nimport authHeader from './authentication/auth-header';\nconst API_URL = process.env.REACT_APP_API ||'http://localhost:3000';\nconst API_USR = \"/api/user/\";\nconst UserService = {\n getUserPlantList(callback) {\n let response = undefined;\n const {lastReFetch} = reFetch(\"plantListRefetch\")\n response = JSON.parse(localStorage.getItem('plantList'))\n\n if( lastReFetch || response === null || Object.keys(response).length === 0 || response === undefined || response.status === false ){\n return axios.get(API_URL +API_USR+ 'plantList', { headers: authHeader()})\n .then(res => {\n return JSON.parse(res.data.monotoring) ;\n }).then(res => {\n localStorage.setItem(\"plantList\", JSON.stringify(res));\n callback(res)\n return res\n });\n }\n callback(response)\n return response;\n \n },\n getUserTotal(callback) {\n let response = undefined;\n const {lastReFetch} = reFetch(\"GlobalTotal\")\n response = JSON.parse(localStorage.getItem('total'))\n if( lastReFetch || response === null || Object.keys(response).length === 0 || response === undefined || response.status === false ){\n return axios.get(API_URL + API_USR+'total', { headers: authHeader()})\n .then(res => {\n return JSON.parse(res.data.synergy);\n }).then(res => {\n localStorage.setItem(\"total\", JSON.stringify(res));\n callback(res)\n return res\n });\n }\n callback(response)\n return response;\n \n },\n getPlantDetail(provider,GroupAutoId,date,mode,today,callback) {\n let response = undefined;\n const {lastReFetch} = reFetch(\"Item\")\n response = JSON.parse(localStorage.getItem(GroupAutoId))\n \n \n if( !today || lastReFetch || response === null || response === undefined|| Object.keys(response).length === 0 || response.status === false){\n return axios.post(API_URL +API_USR+ 'plantDayDetails',{provider:provider,GroupAutoID:GroupAutoId,date:date,mode:mode,today:today}, { headers: authHeader()})\n .then(res => {\n return JSON.parse(res.data.detail);\n }).then(res => {\n if(today)\n localStorage.setItem(GroupAutoId, JSON.stringify(res));\n callback(res)\n return res\n });\n }\n callback(response)\n return response;\n \n }\n}\nexport {UserService};\n\nfunction reFetch(GroupAutoId){\n let lastReFetch = localStorage.getItem(\"last\"+GroupAutoId+\"ReFetch\")\n let now = new Date(new Date().toLocaleString('en-US', { timeZone: 'Africa/Tunis' }));\n if(lastReFetch){\n lastReFetch= new Date (lastReFetch);\n if(lastReFetch -now <= 0){\n lastReFetch = true;\n if(now.getMinutes() < 20) \n now.setMinutes(20) \n else if(now.getMinutes() < 40 )\n now.setMinutes(40)\n else\n now.setMinutes(60)\n }else\n lastReFetch = false;\n }else{\n lastReFetch = true;\n if(now.getMinutes() < 20) \n now.setMinutes(20) \n else if(now.getMinutes() < 40 )\n now.setMinutes(40) \n else\n now.setMinutes(60)\n }\n if(lastReFetch){\n localStorage.setItem(\"last\"+GroupAutoId+\"ReFetch\", now);\n }\n return {now,lastReFetch};\n}\n\n"],"sourceRoot":""}