#API – Poprawka generatora numerów dokumentów

Tak jak mówiłem, z powodu matur, napisałem jedynie ten krótki post. To tak bardziej po to, żeby zachować te 2 posty tygodniowo, ale opisuje pewien problem, o którym nie pomyślałem w momencie pisania generatora dokumentów. Kolejne cenne doświadczenie.

Generator który napisałem, jest totalnie niepotrzebna rzeczą, ale jak już jest, to trudno, niech zostanie. Mogłem rozwiązać to zupełenie inaczej. Zapisywać jedynie numer dokumentu w miesiącu, a typ, miesiąc i rok, pobierać z pozostałych pól. Wtedy przy wyświetlaniu musiałbym dodać te parametry koło siebie i sprawa załatwiona, a tak musiałem się męczyć z explodem i wyciąganiem odpowiednich elementów z numeru.

Minął kolejny miesiąc i pojawił się dziwny problem. Przeskoczył miesiąc, kolejny dokument dostał numer 001/05/2017, próbuję dodać kolejny, a konsola wywala mi błąd HTTP – 500. Okazało się, że kolejny dokument dostał identyczny numer.

Próbowałem jakoś dojść do tego jak to się stało, ale znalazłem kolejny błąd. Nie pomyślałem wcześniej, co jeśli ktoś doda nowy dokument z datą inną niż dzisiejsza. Generator brał datę dzisiejszą z klasy DateTime, więc gybym podał inną datę dokumentu, to wszystko by się posypało i wszechświat by się zawalił. Można to porównac z wpisaniem google w google.

Musiałem więc przerobić ten skrypt, było to dość ważne, więc zająłem się tym odrazu.

Po pierwsze zapytanie pobierające ostatni numer, zostało przerobione. Kontroler dodaje do jego funkcji parametr daty, podanej przez użytkownika i dostajemy nie ostatni numer w ogóle, a ostatni numer w danym miesiącu. Następnie podczas generowania numeru również pobieramy datę z inputa, podaną przez użytkownika.

Tym sposobem generator już działa poprawnie. Myślę jeszcze cały czas, czy nie ma jeszcze jakiegoś scenariusza, którego nie przewidziałem, ale póki co, nie doszukuję się.

Ni dodaję tutaj kodu, ponieważ wszystko jest na GitHubie. Są tam jeszcze moje pierwsze próby walidacji w Angularze. Jak sie okazało, jest to banalnie proste i wszystko co potrzebne do walidacji wpisuje się jedynie w szablonie HTML, więc nie zaciemni mi to dodatkowo kodu.

To tyle na dziś.

Pozdrawiam!
MTK

Proudly powered by WordPress | Theme: Baskerville 2 by Anders Noren.

Up ↑