/
toster
/
CinemaAPI
Обзор
Документация
Войти
/
toster
/
CinemaAPI
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/main/java/ru/sber/cinemarest/Controller/ClientController.java
113 строк
4 KB
Test
Add project to repository
17 фев 2025, 16:05
17 фев 2025, 16:05
b78f192
Код
Авторство
О чём код?
package ru.sber.cinemarest.Controller; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import ru.sber.cinemarest.Repository.ClientRepository; import ru.sber.cinemarest.Repository.SessionRepository; import ru.sber.cinemarest.Repository.TicketRepository; import ru.sber.cinemarest.dto.RegisterRequest; import ru.sber.cinemarest.model.Client; import ru.sber.cinemarest.model.Session; import ru.sber.cinemarest.model.Ticket; import java.util.ArrayList; import java.util.List; import java.util.Optional; @RestController @RequestMapping(path = "/clients", produces = "application/json") public class ClientController { private final ClientRepository clientRepository; private final SessionRepository sessionRepository; private final TicketRepository ticketRepository; public ClientController(ClientRepository clientRepository, SessionRepository sessionRepository, TicketRepository ticketRepository) { this.clientRepository = clientRepository; this.sessionRepository = sessionRepository; this.ticketRepository = ticketRepository; } @GetMapping("/") public List<Client> getClients() { List<Client> clients = new ArrayList<>(); for (Client client : clientRepository.findAll()) { clients.add(client); } return clients; } // @PostMapping("/register") // public ResponseEntity<Ticket> createClient(@RequestBody RegisterRequest request) { // clientRepository.save(request.getClient()); // sessionRepository.save(request.getSession()); // Ticket ticket = new Ticket(request.getSession(), request.getClient()); // ticketRepository.save(ticket); // return new ResponseEntity<>(ticket, HttpStatus.OK); // } @PostMapping("/register") public ResponseEntity<Ticket> createClient(@RequestBody RegisterRequest request) { Optional<Session> session = sessionRepository.findById(request.getSessionId()); Optional<Client> client = clientRepository.findById(request.getClientId()); if (session.isPresent() && client.isPresent()) { Ticket ticket = new Ticket(session.get(), client.get()); ticketRepository.save(ticket); return new ResponseEntity<>(ticket, HttpStatus.OK); } return new ResponseEntity<>(HttpStatus.NOT_FOUND); } @PostMapping("/add") public Client addClient(@RequestBody Client client) { return clientRepository.save(client); } @PutMapping("/{id}") public Client editClient(@RequestBody Client client, @PathVariable long id){ client.setId(id); return clientRepository.save(client); } @DeleteMapping("/{id}") public HttpStatus deleteClient(@PathVariable long id) { Optional<Client> client = clientRepository.findById(id); if (client.isPresent()) { clientRepository.deleteById(id); return HttpStatus.OK; } return HttpStatus.NOT_FOUND; } // @GetMapping("/{id}/tickets") // public ResponseEntity<Ticket[]> getTickets(@PathVariable long id) { // Optional<Client> client = clientRepository.findById(id); // if (client.isPresent()) { // Ticket[] tickets = ticketRepository.findByClient(client.get()); // return new ResponseEntity<>(tickets, HttpStatus.OK); // } // else { // return new ResponseEntity<>(HttpStatus.NOT_FOUND); // } // // } @GetMapping("/{id}/tickets/") public ResponseEntity<List<Ticket>> getTickets(@PathVariable long id) { Optional<Client> client = clientRepository.findById(id); if (client.isPresent()) { return new ResponseEntity<>(client.get().getTickets(), HttpStatus.OK); } return new ResponseEntity<>(HttpStatus.NOT_FOUND); } @GetMapping("/{id}") public ResponseEntity<Client> getClient(@PathVariable long id) { Optional<Client> client = clientRepository.findById(id); if (client.isPresent()) { return new ResponseEntity<>(client.get(), HttpStatus.OK); } else { return new ResponseEntity<>(HttpStatus.NOT_FOUND); } } }