diff --git a/src/main/kotlin/com/s3ai/corporate_app2/controllers/CinemasController.kt b/src/main/kotlin/com/s3ai/corporate_app2/controllers/CinemasController.kt index 7d9e08d4e9b0964966c005d785c27b10de465d10..50729cb63a01863a8ccd6f022be263f506a9dcb8 100644 --- a/src/main/kotlin/com/s3ai/corporate_app2/controllers/CinemasController.kt +++ b/src/main/kotlin/com/s3ai/corporate_app2/controllers/CinemasController.kt @@ -1,8 +1,7 @@ package com.s3ai.corporate_app2.controllers -import com.s3ai.corporate_app2.entities.Cinema -import com.s3ai.corporate_app2.repos.CinemaRepository -import com.s3ai.corporate_app2.services.CinemaService +import com.s3ai.corporate_app2.Cinema +import com.s3ai.corporate_app2.CinemaService import org.springframework.beans.factory.annotation.Autowired import org.springframework.stereotype.Controller import org.springframework.ui.Model @@ -11,17 +10,16 @@ import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RequestParam import java.util.UUID.fromString import java.util.UUID.randomUUID -import kotlin.random.Random @Controller @RequestMapping("/cinemas") class CinemasController { @Autowired - var cinemaService: CinemaService? = null + lateinit var cinemaService: CinemaService @GetMapping("/list") fun getCinemasBrowsePage(model: Model): String? { - model.addAttribute("cinemas", cinemaService?.findAll()) + model.addAttribute("cinemas", cinemaService.findAll()) return "cinemas/list" } @@ -32,7 +30,7 @@ class CinemasController { cinema = Cinema() cinema.id = randomUUID() } else { - cinema = cinemaService?.findOne(fromString(id)) + cinema = cinemaService.findById(fromString(id)) } model.addAttribute("cinema", cinema) return "cinemas/edit" diff --git a/src/main/kotlin/com/s3ai/corporate_app2/controllers/TicketsController.kt b/src/main/kotlin/com/s3ai/corporate_app2/controllers/TicketsController.kt index b900b4cf24b55cd81704df182ae3d7b52b5239ee..01c85f0bbfdd87d58aa9c465c7c0390ac82add9b 100644 --- a/src/main/kotlin/com/s3ai/corporate_app2/controllers/TicketsController.kt +++ b/src/main/kotlin/com/s3ai/corporate_app2/controllers/TicketsController.kt @@ -1,9 +1,7 @@ package com.s3ai.corporate_app2.controllers; -import com.s3ai.corporate_app2.entities.Ticket -import com.s3ai.corporate_app2.entities.User -import com.s3ai.corporate_app2.services.TicketService -import com.s3ai.corporate_app2.services.UserService +import com.s3ai.corporate_app2.Ticket +import com.s3ai.corporate_app2.TicketService import org.springframework.beans.factory.annotation.Autowired import org.springframework.stereotype.Controller import org.springframework.ui.Model @@ -16,11 +14,11 @@ import java.util.* @RequestMapping("/tickets") class TicketsController { @Autowired - var ticketService: TicketService? = null + lateinit var ticketService: TicketService @GetMapping("/list") fun getTicketsBrowsePage(model: Model): String? { - model.addAttribute("tickets", ticketService?.findAll()) + model.addAttribute("tickets", ticketService.findAll()) return "tickets/list" } @@ -31,7 +29,7 @@ class TicketsController { ticket = Ticket() ticket.id = UUID.randomUUID() } else { - ticket = ticketService?.findOne(UUID.fromString(id)) + ticket = ticketService.findById(UUID.fromString(id)) } model.addAttribute("ticket", ticket) return "tickets/edit" diff --git a/src/main/kotlin/com/s3ai/corporate_app2/controllers/UsersController.kt b/src/main/kotlin/com/s3ai/corporate_app2/controllers/UsersController.kt index 2cd3f89feb18b5c5d138e49d9242cdbe972b5cad..e77ba34422e483847f9cfe08c378e8585d0248ad 100644 --- a/src/main/kotlin/com/s3ai/corporate_app2/controllers/UsersController.kt +++ b/src/main/kotlin/com/s3ai/corporate_app2/controllers/UsersController.kt @@ -1,9 +1,7 @@ package com.s3ai.corporate_app2.controllers -import com.s3ai.corporate_app2.entities.Cinema -import com.s3ai.corporate_app2.entities.User -import com.s3ai.corporate_app2.services.CinemaService -import com.s3ai.corporate_app2.services.UserService +import com.s3ai.corporate_app2.User +import com.s3ai.corporate_app2.UserService import org.springframework.beans.factory.annotation.Autowired import org.springframework.stereotype.Controller import org.springframework.ui.Model @@ -16,11 +14,11 @@ import java.util.* @RequestMapping("/users") class UsersController { @Autowired - var userService: UserService? = null + lateinit var userService: UserService @GetMapping("/list") fun getUsersBrowsePage(model: Model): String? { - model.addAttribute("users", userService?.findAll()) + model.addAttribute("users", userService.findAll()) return "users/list" } @@ -31,7 +29,7 @@ class UsersController { user = User() user.id = UUID.randomUUID() } else { - user = userService?.findOne(UUID.fromString(id)) + user = userService.findById(UUID.fromString(id)) } model.addAttribute("user", user) return "users/edit" diff --git a/src/main/kotlin/com/s3ai/corporate_app2/controllers/controllerUtils.kt b/src/main/kotlin/com/s3ai/corporate_app2/controllers/controllerUtils.kt new file mode 100644 index 0000000000000000000000000000000000000000..74018cd1127b9b8f5a01fcd3b1c83c48c5a38887 --- /dev/null +++ b/src/main/kotlin/com/s3ai/corporate_app2/controllers/controllerUtils.kt @@ -0,0 +1,23 @@ +package com.s3ai.corporate_app2.controllers + +import com.s3ai.corporate_app2.CinemaServices +import org.springframework.ui.Model +import java.util.* +import javax.servlet.http.HttpServletResponse + +fun <T> deleteInstance(id: String, instanceName: String, jpaService: CinemaServices<T>, response: HttpServletResponse): String? { + var responseString: String? = null + try { + val itemId = UUID.fromString(id) + val user = jpaService.findById(itemId) + if (null != user) jpaService.delete(user) + else { + response.status = HttpServletResponse.SC_NOT_FOUND + responseString = "$instanceName was not Found" + } + } catch (e: IllegalArgumentException) { + response.status = HttpServletResponse.SC_BAD_REQUEST + responseString = e.localizedMessage + } + return responseString +} \ No newline at end of file diff --git a/src/main/kotlin/com/s3ai/corporate_app2/controllers/rest/CinemaApiController.kt b/src/main/kotlin/com/s3ai/corporate_app2/controllers/rest/CinemaApiController.kt index 3eb3eda21bbd7d5f3b51295fb064329fe6e12d13..c563ba15e501de38f058369e56af12d4795c0156 100644 --- a/src/main/kotlin/com/s3ai/corporate_app2/controllers/rest/CinemaApiController.kt +++ b/src/main/kotlin/com/s3ai/corporate_app2/controllers/rest/CinemaApiController.kt @@ -1,25 +1,25 @@ package com.s3ai.corporate_app2.controllers.rest -import com.s3ai.corporate_app2.entities.Cinema -import com.s3ai.corporate_app2.services.CinemaService +import com.s3ai.corporate_app2.Cinema +import com.s3ai.corporate_app2.CinemaService +import com.s3ai.corporate_app2.controllers.deleteInstance import org.springframework.beans.factory.annotation.Autowired -import org.springframework.web.bind.annotation.GetMapping -import org.springframework.web.bind.annotation.RequestMapping -import org.springframework.web.bind.annotation.RestController +import org.springframework.web.bind.annotation.* import java.util.* +import javax.servlet.http.HttpServletResponse import kotlin.random.Random @RestController @RequestMapping("/api/cinemas") -class CinemaApiController{ +class CinemaApiController { @Autowired - var cinemaService: CinemaService? = null + lateinit var cinemaService: CinemaService @GetMapping("/fill") fun fillCinemas(): String? { - val locations : List<String> = listOf("Samara", "Izhevsk", "NeoTokyo", "Bangladesh", "Moscow", "Grozny"); - val names : List<String> = listOf("Nol", "Tcelkoviy", "Polushka", "Chekushka", "Osmushka", "Pudovichok", "Mediachok", "Silverchok", "Goldenchok", "Deviatichek", "Desatichek"); - var generatedNames: MutableList<String> = mutableListOf() + val locations: List<String> = listOf("Samara", "Izhevsk", "NeoTokyo", "Bangladesh", "Moscow", "Grozny"); + val names: List<String> = listOf("Nol", "Tcelkoviy", "Polushka", "Chekushka", "Osmushka", "Pudovichok", "Mediachok", "Silverchok", "Goldenchok", "Deviatichek", "Desatichek"); + val generatedNames: MutableList<String> = mutableListOf() for (i in 0..300) { val cinema = Cinema(); cinema.id = UUID.randomUUID(); @@ -27,8 +27,14 @@ class CinemaApiController{ generatedNames.add(cinema.name.toString()) cinema.seatsCount = Random.nextInt(50, 300); cinema.location = locations.random(); - cinemaService?.save(cinema); + cinemaService.save(cinema); } return generatedNames.toString() } + + @DeleteMapping("/delete") + fun deleteUser(@RequestParam(name = "id", required = true) id: String, response: HttpServletResponse): String? { + return deleteInstance(id, "Cinema", cinemaService, response) + } + } \ No newline at end of file diff --git a/src/main/kotlin/com/s3ai/corporate_app2/controllers/rest/TicketApiController.kt b/src/main/kotlin/com/s3ai/corporate_app2/controllers/rest/TicketApiController.kt index a9660d2d1ae5248e286d7dbddb3082331d0c343d..439a0457d82fc3b887801b85d25936567c1394b1 100644 --- a/src/main/kotlin/com/s3ai/corporate_app2/controllers/rest/TicketApiController.kt +++ b/src/main/kotlin/com/s3ai/corporate_app2/controllers/rest/TicketApiController.kt @@ -1,26 +1,24 @@ package com.s3ai.corporate_app2.controllers.rest; -import com.s3ai.corporate_app2.entities.Ticket -import com.s3ai.corporate_app2.entities.User -import com.s3ai.corporate_app2.services.CinemaService -import com.s3ai.corporate_app2.services.TicketService -import com.s3ai.corporate_app2.services.UserService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping -import org.springframework.web.bind.annotation.RestController +import com.s3ai.corporate_app2.CinemaService +import com.s3ai.corporate_app2.Ticket +import com.s3ai.corporate_app2.TicketService +import com.s3ai.corporate_app2.UserService +import com.s3ai.corporate_app2.controllers.deleteInstance +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.web.bind.annotation.* import java.util.* -import kotlin.random.Random +import javax.servlet.http.HttpServletResponse @RestController @RequestMapping("/api/tickets") class TicketApiController { @Autowired - var userService: UserService? = null + lateinit var userService: UserService @Autowired - var ticketService: TicketService? = null + lateinit var ticketService: TicketService @Autowired - var cinemaService: CinemaService? = null + lateinit var cinemaService: CinemaService @GetMapping("/fill") fun fillTickets(): String? { @@ -28,19 +26,25 @@ class TicketApiController { val wordsSecond = arrayOf("of the", "in", "from") val wordsThird = arrayOf("Galaxy", "America", "Russia", "Japan", "Ocean", "Deep", "Caribbean", "Matrix", "Internet", "Woods", "Caves") - val users = userService?.findAll() - val cinemas = cinemaService?.findAll() + val users = userService.findAll() + val cinemas = cinemaService.findAll() - var generatedNames: MutableList<String> = mutableListOf() + val generatedNames: MutableList<String> = mutableListOf() for (i in 0..300) { val ticket = Ticket(); ticket.id = UUID.randomUUID(); ticket.movie = "${wordsFirst.random()} ${wordsSecond.random()} ${wordsThird.random()}"; generatedNames.add(ticket.movie.toString()) - ticket.user = users?.random() - ticket.cinema = cinemas?.random() - ticketService?.save(ticket); + ticket.user = users.random() + ticket.cinema = cinemas.random() + ticketService.save(ticket); } return generatedNames.toString() } + + @DeleteMapping("/delete") + fun deleteUser(@RequestParam(name = "id", required = true) id: String, response: HttpServletResponse): String? { + return deleteInstance(id, "Ticket", ticketService, response) + } + } diff --git a/src/main/kotlin/com/s3ai/corporate_app2/controllers/rest/UserApiController.kt b/src/main/kotlin/com/s3ai/corporate_app2/controllers/rest/UserApiController.kt index 7d8266200c4d3f09b59ab5b44888dd833733231f..b9a0a8ca1612c25436ca6f78f8441506a585c79e 100644 --- a/src/main/kotlin/com/s3ai/corporate_app2/controllers/rest/UserApiController.kt +++ b/src/main/kotlin/com/s3ai/corporate_app2/controllers/rest/UserApiController.kt @@ -1,35 +1,38 @@ package com.s3ai.corporate_app2.controllers.rest; -import com.s3ai.corporate_app2.entities.Cinema -import com.s3ai.corporate_app2.entities.User -import com.s3ai.corporate_app2.services.UserService +import com.s3ai.corporate_app2.User +import com.s3ai.corporate_app2.UserService +import com.s3ai.corporate_app2.controllers.deleteInstance import org.springframework.beans.factory.annotation.Autowired -import org.springframework.web.bind.annotation.GetMapping -import org.springframework.web.bind.annotation.RequestMapping -import org.springframework.web.bind.annotation.RestController +import org.springframework.web.bind.annotation.* import java.util.* +import javax.servlet.http.HttpServletResponse import kotlin.random.Random @RestController @RequestMapping("/api/users") class UserApiController { @Autowired - var userService: UserService? = null + lateinit var userService: UserService @GetMapping("/fill") fun fillCinemas(): String? { val names = arrayOf("Jane", "Mary", "Paul", "Jason", "Keanu", "Andrew", "Joseph", "Jotaro", "Ivan", "Jolyne", "Walther"); val surnames = arrayOf("Doe", "Reeves", "Statham", "Bourne", "Joestar", "Kujoh", "White", "Van Hallen", "Black", "Smith"); - var generatedNames: MutableList<String> = mutableListOf() + val generatedNames: MutableList<String> = mutableListOf() for (i in 0..300) { val user = User(); user.id = UUID.randomUUID(); user.name = "${names.random()} ${surnames.random()}"; generatedNames.add(user.name.toString()) user.age = Random.nextInt(15, 70); - userService?.save(user); + userService.save(user); } return generatedNames.toString() } + @DeleteMapping("/delete") + fun deleteUser(@RequestParam(name = "id", required = true) id: String, response: HttpServletResponse): String? { + return deleteInstance(id, "User", userService, response) + } } diff --git a/src/main/kotlin/com/s3ai/corporate_app2/entities.kt b/src/main/kotlin/com/s3ai/corporate_app2/entities.kt new file mode 100644 index 0000000000000000000000000000000000000000..9eeb22c512264e1d766c5db121bd14809b3b14df --- /dev/null +++ b/src/main/kotlin/com/s3ai/corporate_app2/entities.kt @@ -0,0 +1,61 @@ +package com.s3ai.corporate_app2 + +import java.util.* +import javax.persistence.* + +@Entity +@Table(name = "cinema") +class Cinema { + @Id + @Column(name = "ID") + @GeneratedValue(strategy = GenerationType.AUTO) + var id: UUID? = null + @Column(name = "name") + var name: String? = null + @Column(name = "seats_count") + var seatsCount: Int? = null + @Column(name = "location") + var location: String? = null + + override fun toString(): String { + return "Cinema{id=$id, name='$name', seatsCount=$seatsCount, location='$location'}" + } + +} + +@Entity +@Table(name = "cinema_user") +class User { + @Id + @Column(name = "ID") + @GeneratedValue(strategy = GenerationType.AUTO) + var id: UUID? = null + @Column(name = "name") + var name: String? = null + @Column(name = "age") + var age: Int? = null + + override fun toString(): String { + return "User{id=$id, name='$name', age=$age}" + } +} + +@Entity +@Table(name = "ticket") +class Ticket { + @Id + @Column(name = "ID") + @GeneratedValue(strategy = GenerationType.AUTO) + var id: UUID? = null + @OneToOne + var user: User? = null + @OneToOne + var cinema: Cinema? = null + @Column(name = "movie") + var movie: String? = null + + override fun toString(): String { + return "Ticket{id=$id, user=$user, cinema=$cinema, movie='$movie'}" + } +} + diff --git a/src/main/kotlin/com/s3ai/corporate_app2/entities/Cinema.kt b/src/main/kotlin/com/s3ai/corporate_app2/entities/Cinema.kt deleted file mode 100644 index 582729c19e32c67b90ed79e12ca17e999ddb2dc8..0000000000000000000000000000000000000000 --- a/src/main/kotlin/com/s3ai/corporate_app2/entities/Cinema.kt +++ /dev/null @@ -1,24 +0,0 @@ -package com.s3ai.corporate_app2.entities - -import java.util.* -import javax.persistence.* - -@Entity -@Table(name = "cinema") -class Cinema { - @Id - @Column(name = "ID") - @GeneratedValue(strategy = GenerationType.AUTO) - var id: UUID? = null - @Column(name = "name") - var name: String? = null - @Column(name = "seats_count") - var seatsCount: Int? = null - @Column(name = "location") - var location: String? = null - - override fun toString(): String { - return "Cinema{id=$id, name='$name', seatsCount=$seatsCount, location='$location'}" - } - -} \ No newline at end of file diff --git a/src/main/kotlin/com/s3ai/corporate_app2/entities/Ticket.kt b/src/main/kotlin/com/s3ai/corporate_app2/entities/Ticket.kt deleted file mode 100644 index 4b4c209d511ce626e074e5f5477d112cb574f4a3..0000000000000000000000000000000000000000 --- a/src/main/kotlin/com/s3ai/corporate_app2/entities/Ticket.kt +++ /dev/null @@ -1,24 +0,0 @@ -package com.s3ai.corporate_app2.entities - -import java.util.* -import javax.persistence.* - -@Entity -@Table(name = "ticket") -class Ticket { - @Id - @Column(name = "ID") - @GeneratedValue(strategy = GenerationType.AUTO) - var id: UUID? = null - @OneToOne - var user: User? = null - @OneToOne - var cinema: Cinema? = null - @Column(name = "movie") - var movie: String? = null - - override fun toString(): String { - return "Ticket{id=$id, user=$user, cinema=$cinema, movie='$movie'}" - } -} - diff --git a/src/main/kotlin/com/s3ai/corporate_app2/entities/User.kt b/src/main/kotlin/com/s3ai/corporate_app2/entities/User.kt deleted file mode 100644 index a9b7fe0256e63e8e9879dbbd24b09a9b412f9703..0000000000000000000000000000000000000000 --- a/src/main/kotlin/com/s3ai/corporate_app2/entities/User.kt +++ /dev/null @@ -1,21 +0,0 @@ -package com.s3ai.corporate_app2.entities - -import java.util.* -import javax.persistence.* - -@Entity -@Table(name = "cinema_user") -class User { - @Id - @Column(name = "ID") - @GeneratedValue(strategy = GenerationType.AUTO) - var id: UUID? = null - @Column(name = "name") - var name: String? = null - @Column(name = "age") - var age: Int? = null - - override fun toString(): String { - return "User{id=$id, name='$name', age=$age}" - } -} \ No newline at end of file diff --git a/src/main/kotlin/com/s3ai/corporate_app2/repos/TicketRepository.kt b/src/main/kotlin/com/s3ai/corporate_app2/repos/TicketRepository.kt deleted file mode 100644 index 02b5fda8f5ee542c353ad2b349e55fb17bed22b9..0000000000000000000000000000000000000000 --- a/src/main/kotlin/com/s3ai/corporate_app2/repos/TicketRepository.kt +++ /dev/null @@ -1,11 +0,0 @@ -package com.s3ai.corporate_app2.repos - -import com.s3ai.corporate_app2.entities.Ticket -import org.springframework.data.jpa.repository.JpaRepository -import org.springframework.stereotype.Repository -import java.util.* - -@Repository -interface TicketRepository : JpaRepository<Ticket, UUID> { - -} \ No newline at end of file diff --git a/src/main/kotlin/com/s3ai/corporate_app2/repos/UserRepository.kt b/src/main/kotlin/com/s3ai/corporate_app2/repos/UserRepository.kt deleted file mode 100644 index 3677813b906b3280da1a12f1c9ba683046ba9339..0000000000000000000000000000000000000000 --- a/src/main/kotlin/com/s3ai/corporate_app2/repos/UserRepository.kt +++ /dev/null @@ -1,12 +0,0 @@ -package com.s3ai.corporate_app2.repos - -import com.s3ai.corporate_app2.entities.User -import org.springframework.data.jpa.repository.JpaRepository -import org.springframework.stereotype.Repository -import java.util.* - - -@Repository -interface UserRepository : JpaRepository<User, UUID> { - -} diff --git a/src/main/kotlin/com/s3ai/corporate_app2/repos/CinemaRepository.kt b/src/main/kotlin/com/s3ai/corporate_app2/repositories.kt similarity index 52% rename from src/main/kotlin/com/s3ai/corporate_app2/repos/CinemaRepository.kt rename to src/main/kotlin/com/s3ai/corporate_app2/repositories.kt index cccc402833d74139e978599b09629681775ef5c4..6077d0af27e30232e62504301f20b3cf4d1769ac 100644 --- a/src/main/kotlin/com/s3ai/corporate_app2/repos/CinemaRepository.kt +++ b/src/main/kotlin/com/s3ai/corporate_app2/repositories.kt @@ -1,6 +1,5 @@ -package com.s3ai.corporate_app2.repos +package com.s3ai.corporate_app2 -import com.s3ai.corporate_app2.entities.Cinema import org.springframework.data.jpa.repository.JpaRepository import org.springframework.stereotype.Repository import java.util.* @@ -9,4 +8,15 @@ import java.util.* @Repository interface CinemaRepository : JpaRepository<Cinema, UUID> { -} \ No newline at end of file +} + +@Repository +interface TicketRepository : JpaRepository<Ticket, UUID> { + +} + + +@Repository +interface UserRepository : JpaRepository<User, UUID> { + +} diff --git a/src/main/kotlin/com/s3ai/corporate_app2/services.kt b/src/main/kotlin/com/s3ai/corporate_app2/services.kt new file mode 100644 index 0000000000000000000000000000000000000000..51cf0fbcd93065f44c259907c8861916d8f35ad9 --- /dev/null +++ b/src/main/kotlin/com/s3ai/corporate_app2/services.kt @@ -0,0 +1,36 @@ +package com.s3ai.corporate_app2 + +import org.springframework.stereotype.Service +import java.util.* + + +interface CinemaServices<T> { + fun findAll(): MutableList<T> + fun findById(id: UUID): T? + fun save(item: T): T + fun delete(item: T) +} + +@Service +class CinemaService(private val cinemaRepository: CinemaRepository) : CinemaServices<Cinema> { + override fun findAll(): MutableList<Cinema> = cinemaRepository.findAll() + override fun findById(id: UUID): Cinema? = cinemaRepository.findById(id).orElse(null) + override fun save(item: Cinema): Cinema = cinemaRepository.save(item) + override fun delete(item: Cinema) = cinemaRepository.delete(item) +} + +@Service +class UserService(private val userRepository: UserRepository) : CinemaServices<User> { + override fun findAll(): MutableList<User> = userRepository.findAll() + override fun findById(id: UUID): User? = userRepository.findById(id).orElse(null) + override fun save(item: User): User = userRepository.save(item) + override fun delete(item: User) = userRepository.delete(item) +} + +@Service +class TicketService(private val ticketRepository: TicketRepository) : CinemaServices<Ticket> { + override fun findAll(): MutableList<Ticket> = ticketRepository.findAll() + override fun findById(id: UUID): Ticket? = ticketRepository.findById(id).orElse(null) + override fun save(item: Ticket): Ticket = ticketRepository.save(item) + override fun delete(item: Ticket) = ticketRepository.delete(item) +} \ No newline at end of file diff --git a/src/main/kotlin/com/s3ai/corporate_app2/services/CinemaService.kt b/src/main/kotlin/com/s3ai/corporate_app2/services/CinemaService.kt deleted file mode 100644 index 58830812d46a763298c8256d32aa68d2bc8a938a..0000000000000000000000000000000000000000 --- a/src/main/kotlin/com/s3ai/corporate_app2/services/CinemaService.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.s3ai.corporate_app2.services - -import com.s3ai.corporate_app2.entities.Cinema -import com.s3ai.corporate_app2.repos.CinemaRepository -import org.springframework.stereotype.Service -import java.util.* - - -@Service -class CinemaService(private val cinemaRepository: CinemaRepository) { - - fun findAll(): MutableList<Cinema> = cinemaRepository.findAll() - - fun findOne(id: UUID): Cinema? = cinemaRepository.findById(id).orElse(null) - - fun save(cinema: Cinema) = cinemaRepository.save(cinema) - - fun delete(cinema: Cinema) = cinemaRepository.delete(cinema) -} \ No newline at end of file diff --git a/src/main/kotlin/com/s3ai/corporate_app2/services/TicketService.kt b/src/main/kotlin/com/s3ai/corporate_app2/services/TicketService.kt deleted file mode 100644 index 36f201638c442d4cf281bf34462ac7b23db3c2aa..0000000000000000000000000000000000000000 --- a/src/main/kotlin/com/s3ai/corporate_app2/services/TicketService.kt +++ /dev/null @@ -1,18 +0,0 @@ -package com.s3ai.corporate_app2.services - -import com.s3ai.corporate_app2.entities.Ticket -import com.s3ai.corporate_app2.repos.TicketRepository -import org.springframework.stereotype.Service -import java.util.* - -@Service -class TicketService(private val ticketRepository: TicketRepository) { - - fun findAll(): MutableList<Ticket> = ticketRepository.findAll() - - fun findOne(id: UUID): Ticket? = ticketRepository.findById(id).orElse(null) - - fun save(ticket: Ticket) = ticketRepository.save(ticket) - - fun delete(ticket: Ticket) = ticketRepository.delete(ticket) -} diff --git a/src/main/kotlin/com/s3ai/corporate_app2/services/UserService.kt b/src/main/kotlin/com/s3ai/corporate_app2/services/UserService.kt deleted file mode 100644 index fa212be334160c5f9f4fe443fc767bda9c31d11b..0000000000000000000000000000000000000000 --- a/src/main/kotlin/com/s3ai/corporate_app2/services/UserService.kt +++ /dev/null @@ -1,18 +0,0 @@ -package com.s3ai.corporate_app2.services - -import com.s3ai.corporate_app2.entities.User -import com.s3ai.corporate_app2.repos.UserRepository -import org.springframework.stereotype.Service -import java.util.* - -@Service -class UserService(private val userRepository: UserRepository) { - - fun findAll(): MutableList<User> = userRepository.findAll() - - fun findOne(id: UUID): User? = userRepository.findById(id).orElse(null) - - fun save(user: User) = userRepository.save(user) - - fun delete(user: User) = userRepository.delete(user) -} \ No newline at end of file diff --git a/src/main/resources/static/coffee/cinemas.coffee b/src/main/resources/static/coffee/cinemas.coffee index bce38c41a45519f71af9943ec6b94225940bd165..0d9d412e0f37c3527e8a03bacb17f85aca004fdb 100644 --- a/src/main/resources/static/coffee/cinemas.coffee +++ b/src/main/resources/static/coffee/cinemas.coffee @@ -18,7 +18,11 @@ removeCinema = (event) -> url: "/api/cinemas/delete?id=#{cinema_id}", type: 'DELETE' error: (jqXHR, textStatus, errorThrown) -> - console.log "AJAX Error: #{textStatus}" + $.toast + icon: 'error', + hideAfter: 5000, + heading: "Cannot delete cinema", + text: "#{jqXHR.responseText}" success: (data, textStatus, jqXHR) -> $("tr[cinema_id='#{cinema_id}").remove() $("#cinemaModal").modal('toggle') diff --git a/src/main/resources/static/coffee/tickets.coffee b/src/main/resources/static/coffee/tickets.coffee index fb73d380532325dc7a484e2b4cfbdcb18855e2a7..c643493bb6e5a13c0760fe8770206a53bae0e633 100644 --- a/src/main/resources/static/coffee/tickets.coffee +++ b/src/main/resources/static/coffee/tickets.coffee @@ -10,15 +10,19 @@ fill_modal = (event) -> hrefToEdit = (event) -> ticket_id = $("#modal_id").text() - window.location.replace "#{context_url}/ticket/?id=#{ticket_id}" + window.location.replace "/tickets/edit?id=#{ticket_id}" removeCinema = (event) -> ticket_id = $("#modal_id").text() $.ajax - url: "#{context_url}/ticket/?id=#{ticket_id}", + url: "/api/tickets/delete?id=#{ticket_id}", type: 'DELETE' error: (jqXHR, textStatus, errorThrown) -> - console.log "AJAX Error: #{textStatus}" + $.toast + icon: 'error', + hideAfter: 5000, + heading: "Cannot delete ticket", + text: "#{jqXHR.responseText}" success: (data, textStatus, jqXHR) -> $("tr[ticket_id='#{ticket_id}").remove() $("#ticketModal").modal('toggle') diff --git a/src/main/resources/static/coffee/users.coffee b/src/main/resources/static/coffee/users.coffee index fb94baab59719ba3595ae0589893b349314f50ce..f9f187903ec8aa65bc073e2781c2f5aeb40843ca 100644 --- a/src/main/resources/static/coffee/users.coffee +++ b/src/main/resources/static/coffee/users.coffee @@ -9,12 +9,12 @@ fill_modal = (event) -> hrefToEdit = (event) -> user_id = $("#modal_id").text() - window.location.replace "#{context_url}/user/?id=#{user_id}" + window.location.replace "/users/edit?id=#{user_id}" removeCinema = (event) -> user_id = $("#modal_id").text() $.ajax - url: "#{context_url}/user/?id=#{user_id}", + url: "/api/users/delete?id=#{user_id}", type: 'DELETE' error: (jqXHR, textStatus, errorThrown) -> $.toast diff --git a/src/main/resources/static/js/cinemas.js b/src/main/resources/static/js/cinemas.js index be966d3cef88cd38b4a03a920f40be0f8e9f8ceb..127a899270bf962fbb6094c26fd6ea959b2ef400 100644 --- a/src/main/resources/static/js/cinemas.js +++ b/src/main/resources/static/js/cinemas.js @@ -28,7 +28,12 @@ url: `/api/cinemas/delete?id=${cinema_id}`, type: 'DELETE', error: function(jqXHR, textStatus, errorThrown) { - return console.log(`AJAX Error: ${textStatus}`); + return $.toast({ + icon: 'error', + hideAfter: 5000, + heading: "Cannot delete cinema", + text: `${jqXHR.responseText}` + }); }, success: function(data, textStatus, jqXHR) { $(`tr[cinema_id='${cinema_id}`).remove(); diff --git a/src/main/resources/static/js/tickets.js b/src/main/resources/static/js/tickets.js index 2878d4916074df080e756a7c013e9b8b3591e6bb..14c63cf4764c9413ec5431a2f85239f63a1e1653 100644 --- a/src/main/resources/static/js/tickets.js +++ b/src/main/resources/static/js/tickets.js @@ -18,17 +18,22 @@ hrefToEdit = function(event) { var ticket_id; ticket_id = $("#modal_id").text(); - return window.location.replace(`${context_url}/ticket/?id=${ticket_id}`); + return window.location.replace(`/tickets/edit?id=${ticket_id}`); }; removeCinema = function(event) { var ticket_id; ticket_id = $("#modal_id").text(); return $.ajax({ - url: `${context_url}/ticket/?id=${ticket_id}`, + url: `/api/tickets/delete?id=${ticket_id}`, type: 'DELETE', error: function(jqXHR, textStatus, errorThrown) { - return console.log(`AJAX Error: ${textStatus}`); + return $.toast({ + icon: 'error', + hideAfter: 5000, + heading: "Cannot delete ticket", + text: `${jqXHR.responseText}` + }); }, success: function(data, textStatus, jqXHR) { $(`tr[ticket_id='${ticket_id}`).remove(); diff --git a/src/main/resources/static/js/users.js b/src/main/resources/static/js/users.js index 6bc7f754a0d4a2def305abe22354942902baf284..c21c7c44077e2f74162c8584fcb12cdd5bab8ca6 100644 --- a/src/main/resources/static/js/users.js +++ b/src/main/resources/static/js/users.js @@ -17,14 +17,14 @@ hrefToEdit = function(event) { var user_id; user_id = $("#modal_id").text(); - return window.location.replace(`${context_url}/user/?id=${user_id}`); + return window.location.replace(`/users/edit?id=${user_id}`); }; removeCinema = function(event) { var user_id; user_id = $("#modal_id").text(); return $.ajax({ - url: `${context_url}/user/?id=${user_id}`, + url: `/api/users/delete?id=${user_id}`, type: 'DELETE', error: function(jqXHR, textStatus, errorThrown) { return $.toast({ diff --git a/src/main/resources/templates/cinemas/list.html b/src/main/resources/templates/cinemas/list.html index cbcbf4c9dcae4fe4469139c628d50da7988264c9..3993917cce3846009fbc086868b58efb1df6756d 100644 --- a/src/main/resources/templates/cinemas/list.html +++ b/src/main/resources/templates/cinemas/list.html @@ -18,11 +18,11 @@ </tr> </thead> <tbody> - <tr th:each="sb : ${cinemas}" th:with="mycounter = 0"> - <td th:text="${mycounter}" th:with="mycounter = ${mycounter + 1}">#</td> - <td th:text="${sb.getName()}">Name</td> - <td th:text="${sb.getLocation()}">Location</td> - <td th:text="${sb.getSeatsCount()}">Seats</td> + <tr th:attr="cinema_id=${cinema.getId()}" th:each="cinema, counter : ${cinemas}"> + <td th:text="${counter.count}" >#</td> + <td attr_name="name" th:text="${cinema.getName()}">Name</td> + <td attr_name="location" th:text="${cinema.getLocation()}">Location</td> + <td attr_name="seats" th:text="${cinema.getSeatsCount()}">Seats</td> </tr> </tbody> </table> @@ -73,5 +73,5 @@ </div> </div> </body> -<script src="js/cinemas.js"></script> +<script src="/js/cinemas.js"></script> </html> diff --git a/src/main/resources/templates/tickets/list.html b/src/main/resources/templates/tickets/list.html index d47ffdd95070e44cb7e5a6f79335035e59785d26..2c8cdd943c8c526ae8ab7a899feaec096db3261f 100644 --- a/src/main/resources/templates/tickets/list.html +++ b/src/main/resources/templates/tickets/list.html @@ -18,11 +18,11 @@ </tr> </thead> <tbody th:with="mycounter = 0"> - <tr th:each="sb : ${tickets}"> - <td th:text="${mycounter}" th:with="mycounter = ${mycounter + 1}">#</td> - <td th:text="${sb.getMovie()}">Movie</td> - <td th:text="${sb.getCinema()}">Cinema</td> - <td th:text="${sb.getUser()}">User</td> + <tr th:attr="ticket_id=${ticket.getId()}" th:each="ticket, counter: ${tickets}"> + <td th:text="${counter.count}">#</td> + <td attr_name="movie" th:text="${ticket.getMovie()}">Movie</td> + <td attr_name="cinema_id" th:text="${ticket.getCinema().getName()} + ' in ' + ${ticket.getCinema().getLocation()}">Cinema</td> + <td attr_name="user_id" th:text="${ticket.getUser().getName()} + ' aged ' + ${ticket.getUser().getAge()}">User</td> </tr> </tbody> </table> @@ -73,8 +73,5 @@ </div> </div> </body> -<script> - let context_url = "${pageContext.request.contextPath}" -</script> -<script src="js/tickets.js"></script> +<script src="/js/tickets.js"></script> </html> diff --git a/src/main/resources/templates/users/list.html b/src/main/resources/templates/users/list.html index 7a6ba794766e087d91c009d81048f9463e13661b..2fe35931c2706537c335082a70dbcc04bbff98cd 100644 --- a/src/main/resources/templates/users/list.html +++ b/src/main/resources/templates/users/list.html @@ -18,10 +18,10 @@ </tr> </thead> <tbody> - <tr th:each="sb : ${users}" th:with="mycounter = 0"> - <td th:text="${mycounter}" th:with="mycounter = ${mycounter + 1}">#</td> - <td th:text="${sb.getName()}">Name</td> - <td th:text="${sb.getAge()}">Age</td> + <tr th:attr="user_id=${user.getId()}" th:each="user, counter : ${users}"> + <td th:text="${counter.count}">#</td> + <td attr_name="name" th:text="${user.getName()}">Name</td> + <td attr_name="age" th:text="${user.getAge()}">Age</td> </tr> </tbody> </table> @@ -68,8 +68,5 @@ </div> </div> </body> -<script> - let context_url = "${pageContext.request.contextPath}" -</script> -<script src="js/users.js"></script> +<script src="/js/users.js"></script> </html>