import {useUiText} from './UiLanguage';
import {useEffect,useRef,useState} from 'react';
import {request,downloadBusinessFile} from './api';
import {Modal} from './FormElements';
type Field={label:string;value:string};
type ArticleTable={columns:{label:string;type:string}[];rows:{id:number;cells:string[]}[]};
type Picture={key:string;name:string};
type Evidence={pricePending?:boolean;summary:Field[];services:{id:number;center:string;name:string;price:number|null}[];serviceTotal:number|null;toll?:number|null;totalWithToll?:number|null;serviceBasis:string;partial:boolean;stations:{label?:string;articles?:ArticleTable;id:number;sequence:number;fields:Field[];signature:string;photos:Picture[];warnings:string[]}[];warnings:string[];canPdf:boolean;revision:string};
type Image={name:string;mime:string;data:string};
const money=(n:number|null|undefined)=>n==null?"–":n.toLocaleString('de-DE',{style:'currency',currency:'EUR'});
function Fields({values}:{values:Field[]}){return
{values.map((f,i)=>
{f.label}
{f.value}
)}
;}
export function CustomerOrderEvidence({job}:{job:number}){
const uiText=useUiText();
const base=`/customer-portal/orders/${job}`,[data,setData]=useState(null),[error,setError]=useState(''),[image,setImage]=useState(null),[imageError,setImageError]=useState(''),[busy,setBusy]=useState(false),[pdf,setPdf]=useState(false);const loadingImage=useRef(null);
useEffect(()=>{const c=new AbortController();setData(null);setError('');request(base+'/evidence',{signal:c.signal}).then(d=>{if(!c.signal.aborted)setData(d);}).catch(e=>{if(!c.signal.aborted)setError(e.message);});return()=>{c.abort();loadingImage.current?.abort();};},[base]);
async function photo(station:number,p:Picture){if(busy)return;const c=new AbortController();loadingImage.current=c;setBusy(true);setImage(null);setImageError('');try{const i=await request(`${base}/stations/${station}/photos/${p.key}`,{signal:c.signal});if(!c.signal.aborted)setImage(i);}catch(e){if(!c.signal.aborted)setImageError((e as Error).message);}finally{if(!c.signal.aborted)setBusy(false);}}
return
Auftragsdaten und Abliefernachweise
{error&&
{error}
}{!data&&!error&&
Nachweise werden geladen …
}{data&&<>{data.warnings.map((w,i)=>
{w}
)}
Leistungen · {data.serviceBasis}
{data.services.length?<>
{uiText("Kostenstelle")}
{uiText("Leistung")}
{uiText("Betrag")}
{data.services.map(s=>
{s.center}
{s.name}
{data.pricePending?'Preis in Prüfung':money(s.price)}
)}
Leistungssumme: {data.pricePending?'Preis in Prüfung':money(data.serviceTotal)}{data.partial?' · freigegebene Kostenstellen':''}
>:
Keine Leistungen für Ihre freigegebenen Kostenstellen vorhanden.