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 на резервацијата и таа се препраќа во сервисот за да ја изврши логиката. |