TIS2023-FMFI / pracovne-cesty

Projekt TIS 2023 pre Katedru aplikovanej informatiky
The Unlicense
3 stars 0 forks source link

Pdf exporter #65

Closed samoslavik45 closed 9 months ago

samoslavik45 commented 9 months ago

Stále pretrváva problém s tým, že vygenerované pdf sa dočasne neuloží na src/storage/app/output_pdf a vyskočí chybná správa 'Failed to generate PDF, file not found'. Pri vytváraní cesty k šablone pdf, generovaní nového pdf, jeho modifikovaní sú všade kontroly no chyba nastane až úplne na konci keď sa vygenerované snažíme poslať na stiahnutie, vtedy nastane chyba, že sa toto pdf nevie nájsť čiže nebolo vygenerované. Chyba bude pravdepodobne s knižnicou php-pdftk ale zatiaľ som nezistil kde je problém.

Pri zbieraní dát z databázy som nechal komentáre všade na miestach kde som si nebol istý alebo som nevedel ako sa k jednotlivým stĺpcom dostať. Keďže chceme volať niektoré stĺpce ktoré nie sú prepojené s databázou bussiness_trips takže ku nej nemôžeme pristupovať pomocou $trip tak som si neni istý, či tieto stĺpce chceme volať úplne zlášť alebo to budeme musieť prepojiť. Znak '?' som dával k niektorým stĺpcom ktoré som nevedel rozlúštiť ku ktorému stĺpcu v databáze patria.

Taktiež budem musieť pravdepodobne niektoré stĺpce ešte ošetriť pred možnou situáciou, že tam bude null.

Tiež som musel príkazom composer require mikehaertl/php-pdftk pridať knižnicu "mikehaertl/php-pdftk": "^0.13.1" ktorú budeme používať na toto generovanie pdf.

V súbore web.php je pridaná testovacia routa kde je vidieť ako sa bude volať funkcia exporteru, túto routu následne odstránim.

silviabielikova commented 9 months ago

nebude problem iba s tym, ze z toho vnutorneho storage priecinku sa neda stahovat a treba to prelinkovat? nieco podobne ako tu mozno:

Mcibula commented 9 months ago

No, opravil som to ukladanie, resp. prepisal som niektore tie veci, aby vyuzivali Laravel Storage, ktory sa uz postara o cesty a ine veci suvisiace so subormi. Spravil som tam na to dva "disky", jeden je pdf-templates, ktory je namountovany na priecinok s templatami, druhy je pdf-exports, kam by sa mali docasne ukladat vygenerovane subory. Tym, ze sme ich takto zadefinovali, tak sa bude dat jednoduchsie na ne odkazovat cez Storage::disk().

Este pri generovani tych mien docasne exportovanych pdf som zmenil hlavny identifikator time() na uniqid(). time() je fajn, len on sa meni raz za sekundu, cize ak by nahodou dosli dva requesty pocas jednej sekundy, tak by sa mohlo nieco pokazit. uniqid() by mal generovat unikatny token.

Ale super, vyzera, ze to funguje, prikladam vygenerovany subor. Ten kod je dost dobre osetreny na exceptions, nejake vyhrady spisem este v review.

Super praca.

65a8659764fef5.31168050.pdf

samoslavik45 commented 9 months ago

Upravil som čítanie dát podľa návrhov ktoré ste mi napísali, veľmi za ne ďakujem. Je to teda doplnené a čítanie dát by malo fungovať tak ako chceme. Čo sa týka samotného vygenerovania pdf, aj po viacerých pokusoch mi to stále pdf nevygenerovalo ale pravdepodobne bola chyba u mňa keďže pre @Mcibula to s priloženým kódom funguje. Ak nie sú žiadne ďalšie výhrady, malo by to byť pripravené na merge do mainu.

samoslavik45 commented 9 months ago

Doplnil som do kódu navrhnuté úpravy, teraz by už mal byť pripravený na merge do mainu.

samoslavik45 commented 9 months ago

Fixnuté chyby, čiže pri špecifikácií prínosu zmenené na detail. Ďalej pri získavaní cudzej meny som pridal kontrolu na testovanie, či neni stĺpec null. A čo sa týka 'trip_purpose' pridal som zreťazenie aj s kontrolou či nie je purpose_details null.