| 732 | | ---- |
| 733 | | '''Истиот тој транспорт може да се изменува по потреба''' |
| | 730 | {{{#!java |
| | 731 | public void createTransport(Transport t) { |
| | 732 | em.persist(t); |
| | 733 | } |
| | 734 | }}} |
| | 735 | Зачувување на траспорт во база |
| | 736 | {{{#!java |
| | 737 | public void createTransport(String transportName, String carBrand, String carType, int carManufacturedYear, int noPassengers, int noBags, long EMBG, Long userId, String carPlate) { |
| | 738 | User u = usersManager.findUserByID(userId); |
| | 739 | Transport t = new Transport(transportName,carBrand,carType,carManufacturedYear,noPassengers,noBags,EMBG,u,carPlate); |
| | 740 | transportDao.createTransport(t); |
| | 741 | } |
| | 742 | }}} |
| | 743 | Во сервисот се зема корисникот преку id и притоа се креира нов транпсорт на негово име |
| | 744 | {{{#!java |
| | 745 | @PostMapping(path = "/transport/add/{userId}") |
| | 746 | public void add(@RequestBody Transport transport, |
| | 747 | @PathVariable Long userId) { |
| | 748 | transportManager.createTransport(transport.getTransportName(), transport.getCarBrand(), transport.getCarType(), transport.getCarManufacturedYear(), transport.getNoPassengers(), transport.getNoBags(), transport.getEMBG(), userId, transport.getCarPlate()); |
| | 749 | } |
| | 750 | }}} |
| | 751 | Преку контролерот се земаат податоци за id на user и се зема цел објект кој се препраќа во сервисот |
| 736 | | |
| | 754 | {{{#!java |
| | 755 | public void editTransport(long transportID, String transportName, String carBrand, String carType, int carManufacturedYear, int noPassengers, int noBags, long EMBG, User owner, String carPlate) { |
| | 756 | Transport t=getTransportById(transportID); |
| | 757 | t.setTransportName(transportName); |
| | 758 | t.setCarBrand(carBrand); |
| | 759 | t.setCarType(carType); |
| | 760 | t.setCarManufacturedYear(carManufacturedYear); |
| | 761 | t.setNoPassengers(noPassengers); |
| | 762 | t.setNoBags(noBags); |
| | 763 | t.setEMBG(EMBG); |
| | 764 | t.setOwner(owner); |
| | 765 | t.setCarPlate(carPlate); |
| | 766 | transportDao.editTransport(t); |
| | 767 | } |
| | 768 | }}} |
| | 769 | Во сервисот се зема транспортот кој се менува и се менуаат неговите детали. Зачувување во база е исто како и во креирање |
| | 770 | {{{#!java |
| | 771 | @PostMapping(path = "/transport/edit") |
| | 772 | public void edit(@RequestBody Transport transport) { |
| | 773 | transportManager.editTransport(transport.getTransportID(), transport.getTransportName(), transport.getCarBrand(), transport.getCarType(), transport.getCarManufacturedYear(), transport.getNoPassengers(), transport.getNoBags(), transport.getEMBG(), transport.getOwner(), transport.getCarPlate()); |
| | 774 | } |
| | 775 | }}} |
| | 776 | Во контролерот се зема цел објект на транспорт и за истиот се повикува функција од сервис |
| 749 | | |
| | 790 | {{{#!java |
| | 791 | public List<TransportReservation> getTransportReservations() { |
| | 792 | return em.createQuery("from TransportReservation order by reservationID").getResultList(); |
| | 793 | } |
| | 794 | }}} |
| | 795 | Листање на резервациите на одреден транспорт |
| | 796 | {{{#!java |
| | 797 | public List<TransportReservation> findTransportReservationByTransportId(long reservationID) { |
| | 798 | Transport t = getTransportById(reservationID); |
| | 799 | return transportDao.findTransportReservationByTransportId(t); |
| | 800 | } |
| | 801 | }}} |
| | 802 | Се листаат сите резервации на одреден транспорт со одреден id |
| | 803 | {{{#!java |
| | 804 | @GetMapping(path = "/transport/{id}/reservations/active") |
| | 805 | public List<TransportReservation> showTransportReservationsByTransport(@PathVariable Long id) { |
| | 806 | return transportManager.findTransportReservationByTransportId(id); |
| | 807 | } |
| | 808 | }}} |
| | 809 | Преку контролерот се зема id на траспортот и се предава на котрнолерот |
| 766 | | |
| | 824 | {{{#!java |
| | 825 | public void createReservation(RestaurantReservations reservations) { |
| | 826 | em.persist(reservations); |
| | 827 | } |
| | 828 | }}} |
| | 829 | Се зачувува резервацијата во база |
| | 830 | {{{#!java |
| | 831 | public void createReservation(Long userId, Long restaurantTableId, Long restaurantAvailibleId, String hourFrom, String hourTo, Date date) { |
| | 832 | User u = usersManager.findUserByID(userId); |
| | 833 | RestaurantsTable restaurantTable = restaurantDao.findTableById(restaurantTableId); |
| | 834 | RestaurantsAvailible restaurantsAvailible = restaurantDao.findAvailableReservationByID(restaurantAvailibleId); |
| | 835 | Date dateFrom = date; |
| | 836 | Date dateTo = Date.from(date.toInstant()); |
| | 837 | String[] splittedFrom = hourFrom.split(":"); |
| | 838 | String[] splittedTo = hourTo.split(":"); |
| | 839 | dateFrom.setHours(Integer.parseInt(splittedFrom[0])); |
| | 840 | dateFrom.setMinutes(Integer.parseInt(splittedFrom[1])); |
| | 841 | dateTo.setHours(Integer.parseInt(splittedTo[0])); |
| | 842 | dateTo.setMinutes(Integer.parseInt(splittedTo[1])); |
| | 843 | RestaurantReservations reservation = new RestaurantReservations(restaurantTable, dateFrom, dateTo, restaurantTable.getNoSeats(), u); |
| | 844 | restaurantDao.createReservation(reservation); |
| | 845 | editTableAvailability(restaurantsAvailible, restaurantTable, dateFrom, dateTo); |
| | 846 | } |
| | 847 | }}} |
| | 848 | Во сервисот се зема id на user, на масата и на слободната маса. Времето од-до повторно се зема како текст и тој се средува тука. Притоа што повторно со тоа што има одреден број на слободни маси со резервација тоа се средува на одреден начин во логиката editTableAvailability |
| | 849 | {{{#!java |
| | 850 | public void editTableAvailability(RestaurantsAvailible restaurantsAvailible, RestaurantsTable table, Date dateFrom, Date dateTo) { |
| | 851 | restaurantsAvailible.setNumTables(restaurantsAvailible.getNumTables() - 1); |
| | 852 | RestaurantsAvailible ra1 = new RestaurantsAvailible(table, restaurantsAvailible.getHourFrom(), dateFrom, 1); |
| | 853 | RestaurantsAvailible ra2 = new RestaurantsAvailible(table, dateTo, restaurantsAvailible.getHourTo(), 1); |
| | 854 | |
| | 855 | restaurantDao.saveTableAvailable(ra1); |
| | 856 | restaurantDao.saveTableAvailable(ra2); |
| | 857 | } |
| | 858 | }}} |
| | 859 | Логиката е тоа што се намалува една од x слободни маси и се додаваат 2 нови една од почеток на слободната маса до почеток на резервираната и уште една од крај на резервианата до крај на слободната. |
| | 860 | {{{#!java |
| | 861 | @PostMapping(path = "/restaurant/reserve") |
| | 862 | public void reserveRestaurantTable(@RequestParam(name = "restaurantTableId") Long restaurantTableId, |
| | 863 | @RequestParam(name = "userId") Long userId, |
| | 864 | @RequestParam(name = "restaurantAvailibleId") Long restaurantAvailibleId, |
| | 865 | @RequestParam(name = "hourFrom") String hourFrom, |
| | 866 | @RequestParam(name = "hourTo") String hourTo, |
| | 867 | @RequestParam(name = "date") @DateTimeFormat(pattern = "yyyy-MM-dd") Date date) { |
| | 868 | |
| | 869 | |
| | 870 | restaurantManager.createReservation(userId, restaurantTableId, restaurantAvailibleId, hourFrom, hourTo, date); |
| | 871 | } |
| | 872 | }}} |
| | 873 | Во контролерот се примаат потребните информации за да се направи резервација и тоа од кој корисник, на која маса и на која слободна маса. |
| 773 | | |
| | 880 | {{{#!java |
| | 881 | public void createTransportReservation(TransportReservation transportReservation) { |
| | 882 | em.persist(transportReservation); |
| | 883 | } |
| | 884 | }}} |
| | 885 | Се зачувува резервацијата во база |
| | 886 | {{{#!java |
| | 887 | public void createTransportReservation(Long transportRouteId, Long userId, int noSeats) { |
| | 888 | TransportRoute transportRoute = transportDao.findTransportRouteById(transportRouteId); |
| | 889 | User u = usersManager.findUserByID(userId); |
| | 890 | TransportReservation transportReservation = new TransportReservation(transportRoute, noSeats, u); |
| | 891 | transportDao.createTransportReservation(transportReservation); |
| | 892 | } |
| | 893 | }}} |
| | 894 | Во во сервисот се зима транпосрт рутата се зима користникот и се прави резервација на транспортот |
| | 895 | {{{#!java |
| | 896 | @PostMapping(path = "/transport/reserve") |
| | 897 | public void reserveTransport(@RequestParam(name = "transportRouteId") Long transportRouteId, |
| | 898 | @RequestParam(name = "userId") Long userId, |
| | 899 | @RequestParam(name = "numSeats") int numSeats) |
| | 900 | { |
| | 901 | transportManager.createTransportReservation(transportRouteId, userId, numSeats); |
| | 902 | } |
| | 903 | }}} |
| | 904 | Се зимаат потребните информации од контролерот и се препраќа кон сервисот за понатамошна логика со резервациите. |
| | 909 | {{{#!java |
| | 910 | public void saveReservation(HotelRoomReservations hotelRoomReservations) { |
| | 911 | em.persist(hotelRoomReservations); |
| | 912 | } |
| | 913 | }}} |
| | 914 | Се зачувува резервацијата во база |
| | 915 | {{{#!java |
| | 916 | public void createReservation(Long userId, Long hotelRoomId, Long hotelRoomAvailableId, Date dateFrom, Date dateTo, Integer numberOfBeds) { |
| | 917 | HotelRoom room = hotelDao.findRoomById(hotelRoomId); |
| | 918 | User user = usersDao.findUserByID(userId); |
| | 919 | HotelRoomReservations r = new HotelRoomReservations(user, room, dateFrom, dateTo, numberOfBeds); |
| | 920 | editRoomAvailibleReservation(hotelRoomAvailableId, hotelRoomId, dateFrom, dateTo, numberOfBeds); |
| | 921 | hotelDao.createReservation(r); |
| | 922 | |
| | 923 | } |
| | 924 | }}} |
| | 925 | Во сервисот се зема id на корисникот, id на соба и id на слободната соба. Притоа се наоѓаат сите од нив преку соодветните сервиси и се креира нова резервација од-до одреден датум, |
| | 926 | притоа се прави логика за кои соби ќе бидат слободни по резервацијата |
| | 927 | {{{#!java |
| | 928 | public void editRoomAvailibleReservation(Long HotelRoomAvailableId, Long hotelRoomId, Date from, Date to, int numberOfBeds){ |
| | 929 | HotelRoomAvailable roomAvailable = hotelDao.findAvailibleRoomById(HotelRoomAvailableId); |
| | 930 | roomAvailable.setNumberOfBeds(roomAvailable.getNumberOfBeds()-numberOfBeds); |
| | 931 | hotelDao.createRoomAvailible(roomAvailable); |
| | 932 | HotelRoom room = hotelDao.findRoomById(hotelRoomId); |
| | 933 | HotelRoomAvailable hra = new HotelRoomAvailable(room,roomAvailable.getDateFrom(),from,1); |
| | 934 | hotelDao.createRoomAvailible(hra); |
| | 935 | HotelRoomAvailable hra1 = new HotelRoomAvailable(room,to,roomAvailable.getDateTo(),1); |
| | 936 | hotelDao.createRoomAvailible(hra1); |
| | 937 | } |
| | 938 | }}} |
| | 939 | Логиката е во тоа што од сите х соби од таков тип се менуваа во х-1 а се додаваат две нови слободни и тоа една од од почеток на слободната соба до почеток на резервираната и уште една од крај на резервиранта до крај на слободната. |
| | 940 | {{{#!java |
| | 941 | @PostMapping(path = "/hotel/reserve") |
| | 942 | public void reserveHotelRoom(@RequestParam(name = "hotelRoomId")Long hotelRoomId, |
| | 943 | @RequestParam(name = "userId") Long userId, |
| | 944 | @RequestParam(name = "hotelRoomAvailableId") Long hotelRoomAvailableId, |
| | 945 | @RequestParam(name = "numberOfBeds") Integer numberOfBeds, |
| | 946 | @RequestParam(name = "from") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) Date from, |
| | 947 | @RequestParam(name = "to") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) Date to){ |
| | 948 | |
| | 949 | |
| | 950 | |
| | 951 | hotelManager.createReservation(userId, hotelRoomId, hotelRoomAvailableId, from, to, numberOfBeds); |
| | 952 | } |
| | 953 | }}} |
| | 954 | Контролерот кој ги прима сите потребни атрибути за да може да се направи резервацијата и тоа од кој корисник за која соба и за кој период. |
| 783 | | |
| | 959 | {{{#!java |
| | 960 | public void deleteReservation(HotelRoomReservations hr) { |
| | 961 | em.remove(hr); |
| | 962 | } |
| | 963 | }}} |
| | 964 | Се брише резервацијата од база |
| | 965 | {{{#!java |
| | 966 | @Override |
| | 967 | public void deleteReservation(long hotelRoomReservedId) { |
| | 968 | HotelRoomReservations r = findReservationById(hotelRoomReservedId); |
| | 969 | HotelRoomAvailable hra = new HotelRoomAvailable(r.getHotelRoom(), r.getDateFrom(), r.getDateTo(), r.getNumberOfBeds()); |
| | 970 | hotelDao.createRoomAvailible(hra); |
| | 971 | hotelDao.deleteReservation(r); |
| | 972 | } |
| | 973 | }}} |
| | 974 | Во сервисот се зема id на резервацијата се наоѓа и се отстранува и притоа собата што беше зафатена се ослободува |
| | 975 | {{{#!java |
| | 976 | @PostMapping("/hotel/{id}/cancel") |
| | 977 | public void cancelHotelReservation(@PathVariable Long id){ |
| | 978 | hotelManager.deleteReservation(id); |
| | 979 | } |
| | 980 | }}} |
| | 981 | Преку контролерот се зема id на резервацијата и таа се препраќа во сервисот за да ја изврши логиката. |