Version 21 (modified by 8 days ago) ( diff ) | ,
---|
Имплементација на случаи на употреба
Закажување термин за терапија-корисник
- Клиентски код
Код преку кој се испраќаат податоци до серверот за закажување на термин. Кога корисникот кликнува на копчето „confirm-booking“, се активира функцијата поврзана со овој настан. Се креирање објект со податоци (termData), кој се зема од глобалната променлива window.selectedTime, која содржи избран термин.couponCode вредноста се зема од input полето со ID „coupon-type“, а medicalCondition се зема од input полето со ID „medical-condition“. На крај се испраќа POST барање кон серверот. Се повикува fetch('/api/requests/book'), што испраќа HTTP POST барање.
- Контролер
Корисникот кликнува на копчето за потврда на закажување. Функцијата addEventListener реагира на клик на копчето "confirm-booking". Се собираат податоци од формата (term, couponCode, medicalCondition) и се испраќаат податоци до серверот преку fetch. Серверот ги прима и го обработува барањето во контролерот (@PostMapping("/book")). @RequestBody ги прима податоците (term, couponCode, medicalCondition), а @CookieValue го вчитува username од колачињата. Методот bookAppointment од сервисот requestService се повикува со добиените податоци. Ако серверот врати успешен одговор, корисникот добива порака "Appointment booked successfully!".
- Сервис
Функцијата bookAppointment обработува барање за резервација на термин. Се прави проверка на слободен термин преку appointmentRepository.findByTerm(dateTime) и се бара термин во базата со дадениот dateTime. Ако постои термин и неговиот статус е APPOINTMENT_STATUS.FREE, продолжува понатаму. Ако не постои термин или е веќе закажан, фрла исклучок: "Appointment not found or already booked.". userRepository.findByUsername(username).orElse(null) бара корисник со даденото корисничко име. Ако не се најде корисник, фрла исклучок: "User not found". requestRepository.save(request) го зачувува барањето во базата. На крај, ако сите проверки поминат, барањето успешно се зачувува и терминoт се резервира.
Креирање слободни термини-администратор
Креирање еден слободен термин
- Клиентски код
Функцијата createSeparateAppointment испраќа барање до серверот за додавање нов термин. Со испраќање на POST барање и користење на fetch('/api/appointments/add') за да испрати барање до API-то, се испраќаат податоци на серверот. Податоците се испраќаат како JSON. Ако одговорот не е успешен (!response.ok), се повикува response.json() за да се извлече порака за грешка, а доколку е успешен, return response.json(); го обработува одговорот. console.log(data.message); печати порака во конзолата. location.reload(); се праќа ново барање за страницата за да ги прикаже новите податоци. Ако се случи грешка при барањето, се печати во конзолата со console.error('Error:', error);.
- Контролер
Методот addAppointment обработува барање за додавање нов термин. appointmentService.createAppointment(dateTimeStr); го повикува сервисниот слој за додавање на нов термин во системот. Ако нема грешки, методот враќа ResponseEntity.ok(new ApiResponse("Appointment added successfully.")), што значи дека терминот е успешно додаден. Ако се фати исклучок, се враќа ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(new ApiResponse("Failed to add appointment.")), означувајќи неуспешно додавање.
- Сервис
Се креира термин Appointment appointment = new Appointment(appointmentDateTime); нов објект од класата Appointment, поставувајќи го времето на терминот и се зачувува во базата.appointmentRepository.save(appointment); го зачувува терминот во базата преку appointmentRepository.
Автоматско креирање на термини во одреден временски опсег
- Клиентски код
Функцијата createAutoAppointments креира автоматски барања за закажување термини. Се прима листа од термини. Функцијата прифаќа параметар appointments, кој е низа од објекти што содржат date (датум) и time (време) и се формира барање. appointments.map() се користи за трансформација на секој објект во нов формат што содржи само date и time. Се испраќа HTTP POST барање со fetch('/api/appointments/create', {...}) до серверот. JSON.stringify(requestBody) ги конвертира податоците во JSON формат за испраќање. const response = await fetch(...) чека одговор од серверот. if (response.ok) { location.reload(); } пушта барање до страницата ако барањето е успешно.
- Контролер
Методот createAppointments служи за креирање повеќе термини во базата. Методот прима POST барање на патеката /create. Телото на барањето содржи листа од објекти AppointmentRequest. appointmentService.createAppointments(appointmentRequests); повикува сервисна метода што ги обработува и зачувува терминитe. Ако методата успее, се враќа ResponseEntity.ok("Appointments created successfully"). Ако се случи грешка, се враќа ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to create appointments").
- Сервис
Методот createAppointments е одговорен за креирање и зачувување на повеќе термини. Методот прима листа requests од тип AppointmentRequest.Се поминува низ секое барање и се формира LocalDateTime за секој термин, и после овие податоци се користат за креирање и пополнување на објект Appointment и со appointmentRepository.save(appointment); секој термин се зачувува во базата.
Attachments (9)
- Screenshot (906).png (129.7 KB ) - added by 4 months ago.
- Screenshot (907).png (100.6 KB ) - added by 4 months ago.
- Screenshot (908).png (118.3 KB ) - added by 4 months ago.
- Screenshot (918).png (87.3 KB ) - added by 4 months ago.
- Screenshot (921).png (115.3 KB ) - added by 4 months ago.
- Screenshot (923).png (53.6 KB ) - added by 4 months ago.
- controller1.png (68.9 KB ) - added by 4 months ago.
- service1.png (35.0 KB ) - added by 4 months ago.
- controller2.png (77.7 KB ) - added by 4 months ago.
Download all attachments as: .zip