Changes between Version 13 and Version 14 of UseCaseImplementations


Ignore:
Timestamp:
02/04/24 14:31:13 (10 months ago)
Author:
211012
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • UseCaseImplementations

    v13 v14  
    975975}}}
    976976Во контролерот се зема цел објект на транспорт и за истиот се повикува функција од сервис
    977 ==== Додава рути
     977=== Менува транспорт (Додава рути)
    978978////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    979 {{{#!comment
    980 ТЕБА ДА СЕ СТАВИ КОД ЗА ОВОЈ ДЕЛ ДОДАВАЊЕ РУТА
    981 }}}
    982979[[Image(RouteAdd.png)]]
    983980----
     
    985982----
    986983[[Image(route.png)]]
    987 
    988 ----
     984----
     985За правилно справување со формуларот за додавање рути и попатни точки, имплементиравме специјална верзија од претходно опишаниот useFormData Hook.
     986{{{#!javascript
     987const useFormNested = (editData) => {
     988    const [formData, setData] = useState({...editData});
     989
     990    const onFormChange = (e) => {
     991        console.log(e)
     992
     993        const dependantRoutes = e.target.name === 'freeSpace' ? e.target.parentElement.getAttribute('dependantRoutes').split(',') : undefined;
     994        console.log(dependantRoutes)
     995
     996        let updatedData = {
     997            ...formData,
     998            [e.target.parentElement.attributes.routeId.value]: {
     999                ...formData[e.target.parentElement.attributes.routeId.value],
     1000                [e.target.name]: e.target.value
     1001            },
     1002        }
     1003
     1004        if (e.target.name === 'freeSpace')
     1005            dependantRoutes.forEach(x => {
     1006                updatedData = {
     1007                    ...updatedData,
     1008                    [x]: {
     1009                        ...formData[x],
     1010                        [e.target.name]: e.target.value
     1011                    },
     1012                }
     1013            })
     1014        setData(updatedData);
     1015        console.log(updatedData)
     1016    };
     1017
     1018    const setFormData = (newData) => {
     1019        setData({...newData});
     1020    }
     1021    return {
     1022        formData,
     1023        onFormChange,
     1024        setFormData
     1025    };
     1026};
     1027
     1028export default useFormNested;
     1029}}}
     1030Оваа функција овозможува при промена во поле кај една рута, одеднаш да се ажурираат сите рути кои директно зависат од неа. На овој начин се обезбедува конзиистентност во бројот на слободни места за секоја од под-рутите. По завршениот внес, се испраќа POST барање кое го пречекува контролерот:
     1031{{{#!java
     1032    @PostMapping(path = "/transport/available/add")
     1033    public void add(@RequestBody TransportAvailible transportAvailable, @RequestParam(name = "transportId") long transportId) {
     1034
     1035        transportManager.createTransportAvailable(transportAvailable, transportAvailable.getTransport(), transportAvailable.getFrom(), transportAvailable.getTo(), transportAvailable.getDate(), transportAvailable.getFreeSpace(), transportAvailable.getTime(), transportId, transportAvailable.getRoutes());
     1036    }
     1037
     1038}}}
     1039А потоа се предава на сервисот каде се формира главната (родител) рутa, се зачувува и потоа се формираат пооделните рути каде иста е назначена и се зачувуваат.
     1040{{{#!java
     1041    @Override
     1042    public void createTransportAvailable(TransportAvailible transportAvailible, Transport transport, String departureLocation, String arrivalLocation, Date date, Integer noSeats, Date departureHour, Long transportId, Collection<TransportRoute> trRoutes) {
     1043        Transport t = getTransportById(transportId);
     1044        List<TransportRoute> routes = trRoutes.stream().toList();
     1045        routes.get(0).setDeparture(transportAvailible.getDate());
     1046        transportAvailible.setTime(routes.get(routes.size() - 1).getArrival());
     1047        routes.forEach(x -> x.setParentRoute(transportAvailible));
     1048        transportAvailible.setTransport(t);
     1049        TransportAvailible ta=new TransportAvailible(t,departureLocation,arrivalLocation,date,noSeats,departureHour);
     1050        transportDao.createTransportAvailable(ta);
     1051        routes.forEach(x -> {
     1052            TransportRoute tr = new TransportRoute(ta, x.getFrom(), x.getTo(), x.getPrice(), x.getDeparture(), x.getArrival(), x.getFreeSpace(), x.getOrder());
     1053            transportDao.createTransportRoute(tr);
     1054        });
     1055    }
     1056}}}
     1057
     1058{{{#!java
     1059
     1060}}}
     1061
     1062{{{#!java
     1063    @Override
     1064    @Transactional
     1065    public void createTransportAvailable(TransportAvailible ta) {
     1066        em.persist(ta);
     1067
     1068    }
     1069}}}
     1070//
     1071{{{#!java
     1072    @Override
     1073    @Transactional
     1074    public void createTransportRoute(TransportRoute tr) {
     1075        em.persist(tr);
     1076    }
     1077}}}
     1078
     1079==== Менаџира резервации
    9891080[[Image(RouteReservation.png)]]
    9901081{{{#!java