Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
F
flight-agency-app
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Heber Cordova
flight-agency-app
Commits
84afc748
Commit
84afc748
authored
Oct 27, 2023
by
Heber Cordova
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: added passenger and agent endpoints
parent
f781d1e6
Changes
55
Hide whitespace changes
Inline
Side-by-side
Showing
55 changed files
with
1227 additions
and
23 deletions
+1227
-23
FlightAgencyApiApplication.java
.../hcordova/flightagencyapi/FlightAgencyApiApplication.java
+0
-1
AgentController.java
...va/flightagencyapi/agent/controllers/AgentController.java
+48
-0
Agent.java
...m/hcordova/flightagencyapi/agent/domain/models/Agent.java
+45
-0
AgentRepository.java
...tagencyapi/agent/domain/repositories/AgentRepository.java
+13
-0
AgentService.java
...a/flightagencyapi/agent/domain/services/AgentService.java
+13
-0
AgentAllDTO.java
...a/com/hcordova/flightagencyapi/agent/dto/AgentAllDTO.java
+22
-0
AgentByDTO.java
...va/com/hcordova/flightagencyapi/agent/dto/AgentByDTO.java
+24
-0
AgentEditDTO.java
.../com/hcordova/flightagencyapi/agent/dto/AgentEditDTO.java
+20
-0
AgentServiceImpl.java
...dova/flightagencyapi/agent/services/AgentServiceImpl.java
+47
-0
AircraftController.java
...ghtagencyapi/aircraft/controllers/AircraftController.java
+27
-0
Aircraft.java
...dova/flightagencyapi/aircraft/domain/models/Aircraft.java
+29
-0
AircraftRepository.java
...yapi/aircraft/domain/repositories/AircraftRepository.java
+11
-0
AircraftService.java
...htagencyapi/aircraft/domain/services/AircraftService.java
+9
-0
AircraftDTO.java
...om/hcordova/flightagencyapi/aircraft/dto/AircraftDTO.java
+22
-0
AircraftServiceImpl.java
...lightagencyapi/aircraft/services/AircraftServiceImpl.java
+23
-0
AirlineController.java
...lightagencyapi/airline/controllers/AirlineController.java
+27
-0
Airline.java
...ordova/flightagencyapi/airline/domain/models/Airline.java
+28
-0
AirlineRepository.java
...ncyapi/airline/domain/repositories/AirlineRepository.java
+11
-0
AirlineService.java
...ightagencyapi/airline/domain/services/AirlineService.java
+9
-0
AirlineDTO.java
.../com/hcordova/flightagencyapi/airline/dto/AirlineDTO.java
+20
-0
AirlineServiceImpl.java
.../flightagencyapi/airline/services/AirlineServiceImpl.java
+22
-0
AirportController.java
...lightagencyapi/airport/controllers/AirportController.java
+27
-0
Airport.java
...ordova/flightagencyapi/airport/domain/models/Airport.java
+33
-0
AirportRepository.java
...ncyapi/airport/domain/repositories/AirportRepository.java
+11
-0
AirportService.java
...ightagencyapi/airport/domain/services/AirportService.java
+9
-0
AirportDTO.java
.../com/hcordova/flightagencyapi/airport/dto/AirportDTO.java
+22
-0
AirportServiceImpl.java
.../flightagencyapi/airport/services/AirportServiceImpl.java
+23
-0
PassengerController.java
...tagencyapi/passenger/controllers/PassengerController.java
+49
-0
Passenger.java
...va/flightagencyapi/passenger/domain/models/Passenger.java
+53
-0
PassengerRepository.java
...pi/passenger/domain/repositories/PassengerRepository.java
+12
-0
PassengerService.java
...agencyapi/passenger/domain/services/PassengerService.java
+13
-0
PassengerByDTO.java
...cordova/flightagencyapi/passenger/dto/PassengerByDTO.java
+30
-0
PassengerEditDTO.java
...rdova/flightagencyapi/passenger/dto/PassengerEditDTO.java
+17
-0
PassengerTableDTO.java
...dova/flightagencyapi/passenger/dto/PassengerTableDTO.java
+16
-0
PassengerServiceImpl.java
...ghtagencyapi/passenger/services/PassengerServiceImpl.java
+57
-0
PaymentStatus.java
.../flightagencyapi/payment/domain/models/PaymentStatus.java
+27
-0
PaymentStatusRepository.java
.../payment/domain/repositories/PaymentStatusRepository.java
+13
-0
PaymentStatusService.java
...encyapi/payment/domain/services/PaymentStatusService.java
+7
-0
PaymentStatusServiceImpl.java
...tagencyapi/payment/services/PaymentStatusServiceImpl.java
+24
-0
ReservationStatus.java
...gencyapi/reservation/domain/models/ReservationStatus.java
+27
-0
ReservationStatusRepository.java
...tion/domain/repositories/ReservationStatusRepository.java
+13
-0
ReservationStatusService.java
...reservation/domain/services/ReservationStatusService.java
+7
-0
ReservationStatusServiceImpl.java
...pi/reservation/services/ReservationStatusServiceImpl.java
+24
-0
JwtAuthenticationFilter.java
...lightagencyapi/shared/config/JwtAuthenticationFilter.java
+1
-0
AuthenticationController.java
...gencyapi/shared/controllers/AuthenticationController.java
+2
-1
User.java
...m/hcordova/flightagencyapi/shared/domain/models/User.java
+0
-1
AuthenticationServiceImpl.java
...tagencyapi/shared/services/AuthenticationServiceImpl.java
+78
-19
JwtServiceImpl.java
...rdova/flightagencyapi/shared/services/JwtServiceImpl.java
+1
-1
SupervisorController.java
...gencyapi/supervisor/controllers/SupervisorController.java
+28
-0
Supervisor.java
.../flightagencyapi/supervisor/domain/models/Supervisor.java
+45
-0
SupervisorRepository.java
.../supervisor/domain/repositories/SupervisorRepository.java
+13
-0
SupervisorService.java
...encyapi/supervisor/domain/services/SupervisorService.java
+9
-0
SupervisorDTO.java
...cordova/flightagencyapi/supervisor/dto/SupervisorDTO.java
+24
-0
SupervisorServiceImpl.java
...tagencyapi/supervisor/services/SupervisorServiceImpl.java
+23
-0
data.sql
flight-agency-api/src/main/resources/db/data.sql
+19
-0
No files found.
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/FlightAgencyApiApplication.java
View file @
84afc748
...
...
@@ -9,5 +9,4 @@ public class FlightAgencyApiApplication {
public
static
void
main
(
String
[]
args
)
{
SpringApplication
.
run
(
FlightAgencyApiApplication
.
class
,
args
);
}
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/agent/controllers/AgentController.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
agent
.
controllers
;
import
java.util.List
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.DeleteMapping
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.PutMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
com.hcordova.flightagencyapi.agent.domain.services.AgentService
;
import
com.hcordova.flightagencyapi.agent.dto.AgentAllDTO
;
import
com.hcordova.flightagencyapi.agent.dto.AgentByDTO
;
import
com.hcordova.flightagencyapi.agent.dto.AgentEditDTO
;
import
lombok.RequiredArgsConstructor
;
@RestController
@RequestMapping
(
"/api/v1/agents"
)
@RequiredArgsConstructor
public
class
AgentController
{
private
final
AgentService
agentService
;
@GetMapping
()
public
ResponseEntity
<
List
<
AgentAllDTO
>>
getAll
()
{
return
ResponseEntity
.
ok
(
agentService
.
getAll
().
stream
().
map
(
agent
->
{
return
new
AgentAllDTO
(
agent
);
}).
toList
());
}
@GetMapping
(
"{id}"
)
public
ResponseEntity
<
AgentByDTO
>
getById
(
@PathVariable
()
Long
id
)
{
return
ResponseEntity
.
ok
(
new
AgentByDTO
(
agentService
.
getById
(
id
)));
}
@PutMapping
(
"{id}"
)
public
ResponseEntity
<
AgentByDTO
>
edit
(
@PathVariable
Long
id
,
@RequestBody
()
AgentEditDTO
editDTO
)
{
return
ResponseEntity
.
ok
(
new
AgentByDTO
(
agentService
.
edit
(
editDTO
,
id
)));
}
@DeleteMapping
(
"{id}"
)
public
ResponseEntity
<
AgentByDTO
>
delete
(
@PathVariable
Long
id
)
{
return
ResponseEntity
.
ok
(
new
AgentByDTO
(
agentService
.
delete
(
id
)));
}
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/agent/domain/models/Agent.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
agent
.
domain
.
models
;
import
java.time.LocalDate
;
import
com.hcordova.flightagencyapi.shared.domain.models.User
;
import
jakarta.persistence.Column
;
import
jakarta.persistence.Entity
;
import
jakarta.persistence.GeneratedValue
;
import
jakarta.persistence.GenerationType
;
import
jakarta.persistence.Id
;
import
jakarta.persistence.OneToOne
;
import
jakarta.persistence.Table
;
import
jakarta.persistence.Temporal
;
import
jakarta.persistence.TemporalType
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
@Entity
@Table
(
name
=
"agents"
)
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public
class
Agent
{
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
private
Long
id
;
@Column
(
nullable
=
false
)
private
String
details
;
@OneToOne
()
private
User
user
;
@Column
(
nullable
=
false
)
@Temporal
(
TemporalType
.
DATE
)
private
LocalDate
createdAt
;
@Column
(
nullable
=
true
)
@Temporal
(
TemporalType
.
DATE
)
private
LocalDate
deletedAt
;
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/agent/domain/repositories/AgentRepository.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
agent
.
domain
.
repositories
;
import
java.util.Optional
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.stereotype.Repository
;
import
com.hcordova.flightagencyapi.agent.domain.models.Agent
;
@Repository
public
interface
AgentRepository
extends
JpaRepository
<
Agent
,
Long
>{
Optional
<
Agent
>
findByUserId
(
Long
userId
);
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/agent/domain/services/AgentService.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
agent
.
domain
.
services
;
import
java.util.List
;
import
com.hcordova.flightagencyapi.agent.domain.models.Agent
;
import
com.hcordova.flightagencyapi.agent.dto.AgentEditDTO
;
public
interface
AgentService
{
List
<
Agent
>
getAll
();
Agent
getById
(
Long
id
);
Agent
edit
(
AgentEditDTO
agent
,
Long
id
);
Agent
delete
(
Long
id
);
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/agent/dto/AgentAllDTO.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
agent
.
dto
;
import
com.hcordova.flightagencyapi.agent.domain.models.Agent
;
import
lombok.Getter
;
import
lombok.Setter
;
@Getter
@Setter
public
class
AgentAllDTO
{
private
Long
id
;
private
String
name
;
private
String
lastname
;
private
String
details
;
public
AgentAllDTO
(
Agent
agent
)
{
this
.
id
=
agent
.
getId
();
this
.
name
=
agent
.
getUser
().
getName
();
this
.
lastname
=
agent
.
getUser
().
getLastname
();
this
.
details
=
agent
.
getDetails
();
}
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/agent/dto/AgentByDTO.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
agent
.
dto
;
import
com.hcordova.flightagencyapi.agent.domain.models.Agent
;
import
lombok.Getter
;
import
lombok.Setter
;
@Getter
@Setter
public
class
AgentByDTO
{
private
Long
id
;
private
String
name
;
private
String
lastname
;
private
String
details
;
private
String
email
;
public
AgentByDTO
(
Agent
agent
)
{
this
.
id
=
agent
.
getId
();
this
.
name
=
agent
.
getUser
().
getName
();
this
.
lastname
=
agent
.
getUser
().
getLastname
();
this
.
details
=
agent
.
getDetails
();
this
.
email
=
agent
.
getUser
().
getEmail
();
}
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/agent/dto/AgentEditDTO.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
agent
.
dto
;
import
lombok.Getter
;
import
lombok.Setter
;
@Getter
@Setter
public
class
AgentEditDTO
{
private
Long
id
;
private
String
name
;
private
String
lastname
;
private
String
details
;
public
AgentEditDTO
(
Long
id
,
String
name
,
String
lastname
,
String
details
)
{
this
.
id
=
id
;
this
.
name
=
name
;
this
.
lastname
=
lastname
;
this
.
details
=
details
;
}
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/agent/services/AgentServiceImpl.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
agent
.
services
;
import
java.time.LocalDate
;
import
java.util.List
;
import
org.springframework.stereotype.Service
;
import
com.hcordova.flightagencyapi.agent.domain.models.Agent
;
import
com.hcordova.flightagencyapi.agent.domain.repositories.AgentRepository
;
import
com.hcordova.flightagencyapi.agent.domain.services.AgentService
;
import
com.hcordova.flightagencyapi.agent.dto.AgentEditDTO
;
import
com.hcordova.flightagencyapi.shared.exceptions.NotFoundException
;
import
lombok.RequiredArgsConstructor
;
@Service
@RequiredArgsConstructor
public
class
AgentServiceImpl
implements
AgentService
{
private
final
AgentRepository
agentRepository
;
@Override
public
List
<
Agent
>
getAll
()
{
return
agentRepository
.
findAll
();
}
@Override
public
Agent
getById
(
Long
id
)
{
return
agentRepository
.
findById
(
id
)
.
orElseThrow
(()
->
new
NotFoundException
(
"Agent not found"
));
}
@Override
public
Agent
edit
(
AgentEditDTO
agent
,
Long
id
)
{
Agent
agentToEdit
=
getById
(
id
);
agentToEdit
.
setDetails
(
agent
.
getDetails
());
return
agentRepository
.
save
(
agentToEdit
);
}
@Override
public
Agent
delete
(
Long
id
)
{
Agent
agent
=
getById
(
id
);
agent
.
setDeletedAt
(
LocalDate
.
now
());
return
agentRepository
.
save
(
agent
);
}
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/aircraft/controllers/AircraftController.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
aircraft
.
controllers
;
import
java.util.List
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
com.hcordova.flightagencyapi.aircraft.domain.services.AircraftService
;
import
com.hcordova.flightagencyapi.aircraft.dto.AircraftDTO
;
import
lombok.RequiredArgsConstructor
;
@RestController
@RequestMapping
(
"/api/v1/aircrafts"
)
@RequiredArgsConstructor
public
class
AircraftController
{
private
final
AircraftService
aircraftService
;
@GetMapping
public
ResponseEntity
<
List
<
AircraftDTO
>>
getAll
()
{
return
ResponseEntity
.
ok
(
this
.
aircraftService
.
getAll
().
stream
().
map
(
aircraft
->
{
return
new
AircraftDTO
(
aircraft
);
}).
toList
());
}
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/aircraft/domain/models/Aircraft.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
aircraft
.
domain
.
models
;
import
jakarta.persistence.Column
;
import
jakarta.persistence.Entity
;
import
jakarta.persistence.GeneratedValue
;
import
jakarta.persistence.GenerationType
;
import
jakarta.persistence.Id
;
import
jakarta.persistence.Table
;
import
lombok.Getter
;
import
lombok.Setter
;
@Entity
@Table
(
name
=
"aircrafts"
)
@Getter
@Setter
public
class
Aircraft
{
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
private
Long
id
;
@Column
(
nullable
=
false
,
length
=
50
)
private
String
name
;
@Column
(
nullable
=
false
,
length
=
30
)
private
String
manufacturer
;
@Column
(
nullable
=
false
,
length
=
30
)
private
String
model
;
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/aircraft/domain/repositories/AircraftRepository.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
aircraft
.
domain
.
repositories
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.stereotype.Repository
;
import
com.hcordova.flightagencyapi.aircraft.domain.models.Aircraft
;
@Repository
public
interface
AircraftRepository
extends
JpaRepository
<
Aircraft
,
Long
>
{
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/aircraft/domain/services/AircraftService.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
aircraft
.
domain
.
services
;
import
java.util.List
;
import
com.hcordova.flightagencyapi.aircraft.domain.models.Aircraft
;
public
interface
AircraftService
{
List
<
Aircraft
>
getAll
();
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/aircraft/dto/AircraftDTO.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
aircraft
.
dto
;
import
com.hcordova.flightagencyapi.aircraft.domain.models.Aircraft
;
import
lombok.Getter
;
import
lombok.Setter
;
@Getter
@Setter
public
class
AircraftDTO
{
private
Long
id
;
private
String
name
;
private
String
manufacturer
;
private
String
model
;
public
AircraftDTO
(
Aircraft
aircraft
)
{
this
.
id
=
aircraft
.
getId
();
this
.
name
=
aircraft
.
getName
();
this
.
manufacturer
=
aircraft
.
getManufacturer
();
this
.
model
=
aircraft
.
getModel
();
}
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/aircraft/services/AircraftServiceImpl.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
aircraft
.
services
;
import
java.util.List
;
import
org.springframework.stereotype.Service
;
import
com.hcordova.flightagencyapi.aircraft.domain.models.Aircraft
;
import
com.hcordova.flightagencyapi.aircraft.domain.repositories.AircraftRepository
;
import
com.hcordova.flightagencyapi.aircraft.domain.services.AircraftService
;
import
lombok.RequiredArgsConstructor
;
@Service
@RequiredArgsConstructor
public
class
AircraftServiceImpl
implements
AircraftService
{
private
final
AircraftRepository
aircraftRepository
;
@Override
public
List
<
Aircraft
>
getAll
()
{
return
aircraftRepository
.
findAll
();
}
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/airline/controllers/AirlineController.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
airline
.
controllers
;
import
java.util.List
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
com.hcordova.flightagencyapi.airline.domain.services.AirlineService
;
import
com.hcordova.flightagencyapi.airline.dto.AirlineDTO
;
import
lombok.RequiredArgsConstructor
;
@RestController
@RequestMapping
(
"/api/v1/airlines"
)
@RequiredArgsConstructor
public
class
AirlineController
{
private
final
AirlineService
airlineService
;
@GetMapping
public
ResponseEntity
<
List
<
AirlineDTO
>>
getAll
()
{
return
ResponseEntity
.
ok
(
this
.
airlineService
.
getAll
().
stream
().
map
(
airline
->
{
return
new
AirlineDTO
(
airline
);
}).
toList
());
}
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/airline/domain/models/Airline.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
airline
.
domain
.
models
;
import
jakarta.persistence.Column
;
import
jakarta.persistence.Entity
;
import
jakarta.persistence.GeneratedValue
;
import
jakarta.persistence.GenerationType
;
import
jakarta.persistence.Id
;
import
jakarta.persistence.Table
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
lombok.Setter
;
@Entity
@Table
(
name
=
"airlines"
)
@Getter
@Setter
@AllArgsConstructor
public
class
Airline
{
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
private
Long
id
;
@Column
(
nullable
=
false
,
length
=
50
)
private
String
name
;
@Column
(
nullable
=
false
,
length
=
2
)
private
String
code
;
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/airline/domain/repositories/AirlineRepository.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
airline
.
domain
.
repositories
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.stereotype.Repository
;
import
com.hcordova.flightagencyapi.airline.domain.models.Airline
;
@Repository
public
interface
AirlineRepository
extends
JpaRepository
<
Airline
,
Long
>{
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/airline/domain/services/AirlineService.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
airline
.
domain
.
services
;
import
java.util.List
;
import
com.hcordova.flightagencyapi.airline.domain.models.Airline
;
public
interface
AirlineService
{
List
<
Airline
>
getAll
();
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/airline/dto/AirlineDTO.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
airline
.
dto
;
import
com.hcordova.flightagencyapi.airline.domain.models.Airline
;
import
lombok.Getter
;
import
lombok.Setter
;
@Getter
@Setter
public
class
AirlineDTO
{
private
Long
id
;
private
String
name
;
private
String
code
;
public
AirlineDTO
(
Airline
airline
)
{
this
.
id
=
airline
.
getId
();
this
.
name
=
airline
.
getName
();
this
.
code
=
airline
.
getCode
();
}
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/airline/services/AirlineServiceImpl.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
airline
.
services
;
import
java.util.List
;
import
org.springframework.stereotype.Service
;
import
com.hcordova.flightagencyapi.airline.domain.models.Airline
;
import
com.hcordova.flightagencyapi.airline.domain.repositories.AirlineRepository
;
import
com.hcordova.flightagencyapi.airline.domain.services.AirlineService
;
import
lombok.RequiredArgsConstructor
;
@Service
@RequiredArgsConstructor
public
class
AirlineServiceImpl
implements
AirlineService
{
private
final
AirlineRepository
airlineRepository
;
@Override
public
List
<
Airline
>
getAll
()
{
return
this
.
airlineRepository
.
findAll
();
}
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/airport/controllers/AirportController.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
airport
.
controllers
;
import
java.util.List
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
com.hcordova.flightagencyapi.airport.domain.services.AirportService
;
import
com.hcordova.flightagencyapi.airport.dto.AirportDTO
;
import
lombok.RequiredArgsConstructor
;
@RestController
@RequestMapping
(
"/api/v1/airports"
)
@RequiredArgsConstructor
public
class
AirportController
{
private
final
AirportService
airportService
;
@GetMapping
()
public
ResponseEntity
<
List
<
AirportDTO
>>
getAll
()
{
return
ResponseEntity
.
ok
(
airportService
.
getAll
().
stream
().
map
(
airport
->
{
return
new
AirportDTO
(
airport
);
}).
toList
());
}
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/airport/domain/models/Airport.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
airport
.
domain
.
models
;
import
jakarta.persistence.Column
;
import
jakarta.persistence.Entity
;
import
jakarta.persistence.GeneratedValue
;
import
jakarta.persistence.GenerationType
;
import
jakarta.persistence.Id
;
import
jakarta.persistence.Table
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
@Entity
@Table
(
name
=
"airports"
)
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public
class
Airport
{
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
private
Long
id
;
@Column
(
nullable
=
false
,
length
=
60
)
private
String
name
;
@Column
(
nullable
=
false
,
length
=
60
)
private
String
location
;
@Column
(
nullable
=
false
,
length
=
3
)
private
String
code
;
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/airport/domain/repositories/AirportRepository.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
airport
.
domain
.
repositories
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.stereotype.Repository
;
import
com.hcordova.flightagencyapi.airport.domain.models.Airport
;
@Repository
public
interface
AirportRepository
extends
JpaRepository
<
Airport
,
Long
>{
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/airport/domain/services/AirportService.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
airport
.
domain
.
services
;
import
java.util.List
;
import
com.hcordova.flightagencyapi.airport.domain.models.Airport
;
public
interface
AirportService
{
List
<
Airport
>
getAll
();
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/airport/dto/AirportDTO.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
airport
.
dto
;
import
com.hcordova.flightagencyapi.airport.domain.models.Airport
;
import
lombok.Getter
;
import
lombok.Setter
;
@Getter
@Setter
public
class
AirportDTO
{
private
Long
id
;
private
String
name
;
private
String
location
;
private
String
code
;
public
AirportDTO
(
Airport
airport
)
{
this
.
id
=
airport
.
getId
();
this
.
name
=
airport
.
getName
();
this
.
location
=
airport
.
getLocation
();
this
.
code
=
airport
.
getCode
();
}
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/airport/services/AirportServiceImpl.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
airport
.
services
;
import
java.util.List
;
import
org.springframework.stereotype.Service
;
import
com.hcordova.flightagencyapi.airport.domain.models.Airport
;
import
com.hcordova.flightagencyapi.airport.domain.repositories.AirportRepository
;
import
com.hcordova.flightagencyapi.airport.domain.services.AirportService
;
import
lombok.RequiredArgsConstructor
;
@Service
@RequiredArgsConstructor
public
class
AirportServiceImpl
implements
AirportService
{
private
final
AirportRepository
airportRepository
;
@Override
public
List
<
Airport
>
getAll
()
{
return
airportRepository
.
findAll
();
}
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/passenger/controllers/PassengerController.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
passenger
.
controllers
;
import
java.util.List
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.DeleteMapping
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.PutMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
com.hcordova.flightagencyapi.passenger.domain.services.PassengerService
;
import
com.hcordova.flightagencyapi.passenger.dto.PassengerByDTO
;
import
com.hcordova.flightagencyapi.passenger.dto.PassengerEditDTO
;
import
com.hcordova.flightagencyapi.passenger.dto.PassengerTableDTO
;
import
lombok.RequiredArgsConstructor
;
@RestController
@RequestMapping
(
"/api/v1/passengers"
)
@RequiredArgsConstructor
public
class
PassengerController
{
private
final
PassengerService
passengerService
;
@GetMapping
public
ResponseEntity
<
List
<
PassengerTableDTO
>>
getAll
()
{
return
ResponseEntity
.
ok
(
passengerService
.
getAll
().
stream
().
map
(
passenger
->
{
return
new
PassengerTableDTO
(
passenger
.
getId
(),
passenger
.
getUser
().
getName
(),
passenger
.
getUser
().
getLastname
(),
passenger
.
getCountry
(),
passenger
.
getCity
());
}).
toList
());
}
@GetMapping
(
"{id}"
)
public
ResponseEntity
<
PassengerByDTO
>
getById
(
@PathVariable
()
Long
id
)
{
return
ResponseEntity
.
ok
(
new
PassengerByDTO
(
passengerService
.
getById
(
id
)));
}
@PutMapping
(
"{id}"
)
public
ResponseEntity
<
PassengerByDTO
>
edit
(
@RequestBody
()
PassengerEditDTO
passengerEditDTO
,
@PathVariable
()
Long
id
)
{
return
ResponseEntity
.
ok
(
new
PassengerByDTO
(
passengerService
.
edit
(
passengerEditDTO
,
id
)));
}
@DeleteMapping
(
"{id}"
)
public
ResponseEntity
<
PassengerByDTO
>
delete
(
@PathVariable
()
Long
id
)
{
return
ResponseEntity
.
ok
(
new
PassengerByDTO
(
passengerService
.
delete
(
id
)));
}
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/passenger/domain/models/Passenger.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
passenger
.
domain
.
models
;
import
java.time.LocalDate
;
import
com.hcordova.flightagencyapi.shared.domain.models.User
;
import
jakarta.persistence.Column
;
import
jakarta.persistence.Entity
;
import
jakarta.persistence.GeneratedValue
;
import
jakarta.persistence.GenerationType
;
import
jakarta.persistence.Id
;
import
jakarta.persistence.OneToOne
;
import
jakarta.persistence.Table
;
import
jakarta.persistence.Temporal
;
import
jakarta.persistence.TemporalType
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
@Entity
@Table
(
name
=
"passengers"
)
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
public
class
Passenger
{
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
private
Long
id
;
@Column
(
nullable
=
false
,
length
=
30
)
private
String
country
;
@Column
(
nullable
=
false
,
length
=
30
)
private
String
city
;
@Column
(
nullable
=
false
,
length
=
100
)
private
String
address
;
@Column
(
nullable
=
false
,
length
=
12
)
private
String
phone
;
@Column
(
nullable
=
false
)
@Temporal
(
TemporalType
.
DATE
)
private
LocalDate
createdAt
;
@Column
(
nullable
=
true
)
private
LocalDate
deletedAt
;
@OneToOne
()
private
User
user
;
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/passenger/domain/repositories/PassengerRepository.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
passenger
.
domain
.
repositories
;
import
java.util.Optional
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
com.hcordova.flightagencyapi.passenger.domain.models.Passenger
;
public
interface
PassengerRepository
extends
JpaRepository
<
Passenger
,
Long
>{
Optional
<
Passenger
>
findByUserId
(
Long
userId
);
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/passenger/domain/services/PassengerService.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
passenger
.
domain
.
services
;
import
java.util.List
;
import
com.hcordova.flightagencyapi.passenger.domain.models.Passenger
;
import
com.hcordova.flightagencyapi.passenger.dto.PassengerEditDTO
;
public
interface
PassengerService
{
List
<
Passenger
>
getAll
();
Passenger
getById
(
Long
id
);
Passenger
edit
(
PassengerEditDTO
passenger
,
Long
id
);
Passenger
delete
(
Long
id
);
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/passenger/dto/PassengerByDTO.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
passenger
.
dto
;
import
com.hcordova.flightagencyapi.passenger.domain.models.Passenger
;
import
lombok.Getter
;
import
lombok.Setter
;
@Getter
@Setter
public
class
PassengerByDTO
{
private
Long
id
;
private
String
name
;
private
String
lastname
;
private
String
phone
;
private
String
country
;
private
String
city
;
private
String
address
;
private
String
email
;
public
PassengerByDTO
(
Passenger
passenger
)
{
this
.
id
=
passenger
.
getId
();
this
.
name
=
passenger
.
getUser
().
getName
();
this
.
lastname
=
passenger
.
getUser
().
getLastname
();
this
.
phone
=
passenger
.
getPhone
();
this
.
country
=
passenger
.
getCountry
();
this
.
city
=
passenger
.
getCity
();
this
.
address
=
passenger
.
getAddress
();
this
.
email
=
passenger
.
getUser
().
getEmail
();
}
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/passenger/dto/PassengerEditDTO.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
passenger
.
dto
;
import
lombok.Getter
;
import
lombok.Setter
;
@Getter
@Setter
public
class
PassengerEditDTO
{
private
Long
id
;
private
String
name
;
private
String
secondName
;
private
String
lastname
;
private
String
phone
;
private
String
country
;
private
String
city
;
private
String
address
;
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/passenger/dto/PassengerTableDTO.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
passenger
.
dto
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
lombok.Setter
;
@Getter
@Setter
@AllArgsConstructor
public
class
PassengerTableDTO
{
private
Long
id
;
private
String
name
;
private
String
lastname
;
private
String
country
;
private
String
city
;
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/passenger/services/PassengerServiceImpl.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
passenger
.
services
;
import
java.time.LocalDate
;
import
java.util.List
;
import
org.springframework.stereotype.Service
;
import
com.hcordova.flightagencyapi.passenger.domain.models.Passenger
;
import
com.hcordova.flightagencyapi.passenger.domain.repositories.PassengerRepository
;
import
com.hcordova.flightagencyapi.passenger.domain.services.PassengerService
;
import
com.hcordova.flightagencyapi.passenger.dto.PassengerEditDTO
;
import
com.hcordova.flightagencyapi.shared.exceptions.NotFoundException
;
import
lombok.RequiredArgsConstructor
;
@Service
@RequiredArgsConstructor
public
class
PassengerServiceImpl
implements
PassengerService
{
private
final
PassengerRepository
passengerRepository
;
@Override
public
List
<
Passenger
>
getAll
()
{
return
passengerRepository
.
findAll
();
}
@Override
public
Passenger
getById
(
Long
id
)
{
return
passengerRepository
.
findById
(
id
)
.
orElseThrow
(()
->
new
NotFoundException
(
"Passenger not found"
));
}
@Override
public
Passenger
edit
(
PassengerEditDTO
passenger
,
Long
id
)
{
Passenger
passengerToUpdate
=
passengerRepository
.
findById
(
id
).
orElse
(
null
);
if
(
passengerToUpdate
==
null
)
throw
new
NotFoundException
(
"Passenger not found"
);
passengerToUpdate
.
setPhone
(
passenger
.
getPhone
());
passengerToUpdate
.
setCountry
(
passenger
.
getCountry
());
passengerToUpdate
.
setCity
(
passenger
.
getCity
());
passengerToUpdate
.
setAddress
(
passenger
.
getAddress
());
return
passengerRepository
.
save
(
passengerToUpdate
);
}
@Override
public
Passenger
delete
(
Long
id
)
{
Passenger
passengerToDelete
=
getById
(
id
);
passengerToDelete
.
setDeletedAt
(
LocalDate
.
now
());
passengerRepository
.
save
(
passengerToDelete
);
return
passengerToDelete
;
}
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/payment/domain/models/PaymentStatus.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
payment
.
domain
.
models
;
import
jakarta.persistence.Column
;
import
jakarta.persistence.Entity
;
import
jakarta.persistence.GeneratedValue
;
import
jakarta.persistence.GenerationType
;
import
jakarta.persistence.Id
;
import
jakarta.persistence.Table
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
@Entity
@Table
(
name
=
"payment_status"
)
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public
class
PaymentStatus
{
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
private
Long
id
;
@Column
(
nullable
=
false
,
length
=
30
,
unique
=
true
)
private
String
name
;
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/payment/domain/repositories/PaymentStatusRepository.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
payment
.
domain
.
repositories
;
import
java.util.Optional
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.stereotype.Repository
;
import
com.hcordova.flightagencyapi.payment.domain.models.PaymentStatus
;
@Repository
public
interface
PaymentStatusRepository
extends
JpaRepository
<
PaymentStatus
,
Long
>{
Optional
<
PaymentStatus
>
findByName
(
String
name
);
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/payment/domain/services/PaymentStatusService.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
payment
.
domain
.
services
;
import
com.hcordova.flightagencyapi.payment.domain.models.PaymentStatus
;
public
interface
PaymentStatusService
{
PaymentStatus
findByName
(
String
name
);
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/payment/services/PaymentStatusServiceImpl.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
payment
.
services
;
import
org.springframework.stereotype.Service
;
import
com.hcordova.flightagencyapi.payment.domain.models.PaymentStatus
;
import
com.hcordova.flightagencyapi.payment.domain.repositories.PaymentStatusRepository
;
import
com.hcordova.flightagencyapi.payment.domain.services.PaymentStatusService
;
import
com.hcordova.flightagencyapi.shared.exceptions.NotFoundException
;
import
lombok.RequiredArgsConstructor
;
@Service
@RequiredArgsConstructor
public
class
PaymentStatusServiceImpl
implements
PaymentStatusService
{
private
final
PaymentStatusRepository
paymentStatusRepository
;
@Override
public
PaymentStatus
findByName
(
String
name
)
{
return
paymentStatusRepository
.
findByName
(
name
)
.
orElseThrow
(()
->
new
NotFoundException
(
"Payment status not exists!"
));
}
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/reservation/domain/models/ReservationStatus.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
reservation
.
domain
.
models
;
import
jakarta.persistence.Column
;
import
jakarta.persistence.Entity
;
import
jakarta.persistence.GeneratedValue
;
import
jakarta.persistence.GenerationType
;
import
jakarta.persistence.Id
;
import
jakarta.persistence.Table
;
import
lombok.NoArgsConstructor
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
lombok.Setter
;
@Entity
@Table
(
name
=
"reservation_status"
)
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public
class
ReservationStatus
{
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
private
Long
id
;
@Column
(
nullable
=
false
,
length
=
30
,
unique
=
true
)
private
String
name
;
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/reservation/domain/repositories/ReservationStatusRepository.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
reservation
.
domain
.
repositories
;
import
java.util.Optional
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.stereotype.Repository
;
import
com.hcordova.flightagencyapi.reservation.domain.models.ReservationStatus
;
@Repository
public
interface
ReservationStatusRepository
extends
JpaRepository
<
ReservationStatus
,
Long
>{
Optional
<
ReservationStatus
>
findByName
(
String
name
);
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/reservation/domain/services/ReservationStatusService.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
reservation
.
domain
.
services
;
import
com.hcordova.flightagencyapi.reservation.domain.models.ReservationStatus
;
public
interface
ReservationStatusService
{
ReservationStatus
findByName
(
String
name
);
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/reservation/services/ReservationStatusServiceImpl.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
reservation
.
services
;
import
org.springframework.stereotype.Service
;
import
com.hcordova.flightagencyapi.reservation.domain.models.ReservationStatus
;
import
com.hcordova.flightagencyapi.reservation.domain.repositories.ReservationStatusRepository
;
import
com.hcordova.flightagencyapi.reservation.domain.services.ReservationStatusService
;
import
com.hcordova.flightagencyapi.shared.exceptions.NotFoundException
;
import
lombok.RequiredArgsConstructor
;
@Service
@RequiredArgsConstructor
public
class
ReservationStatusServiceImpl
implements
ReservationStatusService
{
private
final
ReservationStatusRepository
reservationStatusRepository
;
@Override
public
ReservationStatus
findByName
(
String
name
)
{
return
reservationStatusRepository
.
findByName
(
name
)
.
orElseThrow
(()
->
new
NotFoundException
(
"Reservation status not found"
));
}
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/shared/config/JwtAuthenticationFilter.java
View file @
84afc748
...
...
@@ -13,6 +13,7 @@ import org.springframework.util.StringUtils;
import
org.springframework.web.filter.OncePerRequestFilter
;
import
com.hcordova.flightagencyapi.shared.domain.services.JwtService
;
import
com.hcordova.flightagencyapi.shared.domain.services.UserService
;
import
jakarta.servlet.FilterChain
;
import
jakarta.servlet.ServletException
;
...
...
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/shared/controllers/AuthenticationController.java
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
shared
.
controllers
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.
GetMapping
;
import
org.springframework.web.bind.annotation.
CrossOrigin
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
...
...
@@ -15,6 +15,7 @@ import com.hcordova.flightagencyapi.shared.dto.SignUpResponseDTO;
import
lombok.RequiredArgsConstructor
;
@CrossOrigin
(
origins
=
"*"
)
@RestController
@RequestMapping
(
"/api/v1/auth"
)
@RequiredArgsConstructor
...
...
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/shared/domain/models/User.java
View file @
84afc748
...
...
@@ -17,7 +17,6 @@ import jakarta.persistence.JoinColumn;
import
jakarta.persistence.ManyToOne
;
import
jakarta.persistence.Table
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
...
...
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/shared/services/AuthenticationServiceImpl.java
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
shared
.
services
;
import
java.time.LocalDate
;
import
org.springframework.cglib.core.Local
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.security.authentication.AuthenticationManager
;
...
...
@@ -8,6 +11,10 @@ import org.springframework.security.core.userdetails.UsernameNotFoundException;
import
org.springframework.security.crypto.password.PasswordEncoder
;
import
org.springframework.stereotype.Service
;
import
com.hcordova.flightagencyapi.agent.domain.models.Agent
;
import
com.hcordova.flightagencyapi.agent.domain.repositories.AgentRepository
;
import
com.hcordova.flightagencyapi.passenger.domain.models.Passenger
;
import
com.hcordova.flightagencyapi.passenger.domain.repositories.PassengerRepository
;
import
com.hcordova.flightagencyapi.shared.domain.models.User
;
import
com.hcordova.flightagencyapi.shared.domain.repositories.RoleRepository
;
import
com.hcordova.flightagencyapi.shared.domain.repositories.UserRepository
;
...
...
@@ -17,15 +24,21 @@ import com.hcordova.flightagencyapi.shared.dto.SignInRequestDTO;
import
com.hcordova.flightagencyapi.shared.dto.SignInResponseDTO
;
import
com.hcordova.flightagencyapi.shared.dto.SignUpRequestDTO
;
import
com.hcordova.flightagencyapi.shared.dto.SignUpResponseDTO
;
import
com.hcordova.flightagencyapi.shared.exceptions.NotFoundException
;
import
com.hcordova.flightagencyapi.supervisor.domain.models.Supervisor
;
import
com.hcordova.flightagencyapi.supervisor.domain.repositories.SupervisorRepository
;
import
jakarta.transaction.Transactional
;
import
lombok.RequiredArgsConstructor
;
@RequiredArgsConstructor
@Service
@RequiredArgsConstructor
public
class
AuthenticationServiceImpl
implements
AuthenticationService
{
private
final
UserRepository
userRepository
;
private
final
PassengerRepository
passengerRepository
;
private
final
AgentRepository
agentRepository
;
private
final
SupervisorRepository
supervisorRepository
;
private
final
RoleRepository
roleRepository
;
private
final
JwtService
jService
;
private
final
AuthenticationManager
authenticationManager
;
...
...
@@ -39,25 +52,37 @@ public class AuthenticationServiceImpl implements AuthenticationService {
.
orElseThrow
(()
->
new
UsernameNotFoundException
(
"Invalid email or password"
));
var
jwt
=
jService
.
generateToken
(
user
);
var
response
=
new
SignInResponseDTO
(
user
.
getId
(),
user
.
getName
(),
user
.
getLastname
(),
user
.
getEmail
(),
user
.
getRole
().
getName
(),
jwt
);
var
id
=
getIdByRoleAndUserId
(
user
.
getRole
().
getName
(),
user
.
getId
());
var
response
=
new
SignInResponseDTO
(
id
,
user
.
getName
(),
user
.
getLastname
(),
user
.
getEmail
(),
user
.
getRole
().
getName
(),
jwt
);
return
ResponseEntity
.
status
(
HttpStatus
.
OK
).
body
(
response
);
}
private
Long
getIdByRoleAndUserId
(
String
role
,
Long
id
)
{
switch
(
role
.
toLowerCase
())
{
case
"passenger"
:
return
passengerRepository
.
findByUserId
(
id
).
get
().
getId
();
case
"agent"
:
return
agentRepository
.
findByUserId
(
id
).
get
().
getId
();
case
"supervisor"
:
return
supervisorRepository
.
findByUserId
(
id
).
get
().
getId
();
}
return
0L
;
}
@Override
@Transactional
public
ResponseEntity
<
SignUpResponseDTO
>
signUp
(
SignUpRequestDTO
requestDTO
)
{
var
userFound
=
userRepository
.
findByEmail
(
requestDTO
.
getEmail
());
if
(
userFound
.
isPresent
())
{
return
ResponseEntity
.
status
(
HttpStatus
.
BAD_REQUEST
).
body
(
null
);
}
if
(
userFound
.
isPresent
())
throw
new
IllegalArgumentException
(
"Email already exists!"
);
var
role
=
roleRepository
.
findByName
(
requestDTO
.
getRole
());
var
role
=
roleRepository
.
findByName
(
requestDTO
.
getRole
()
.
toLowerCase
()
);
if
(
role
.
isEmpty
())
{
return
ResponseEntity
.
status
(
HttpStatus
.
BAD_REQUEST
).
body
(
null
);
}
if
(
role
.
isEmpty
())
throw
new
NotFoundException
(
"Role not found!"
);
var
user
=
new
User
(
requestDTO
.
getName
(),
...
...
@@ -67,22 +92,56 @@ public class AuthenticationServiceImpl implements AuthenticationService {
role
.
get
());
var
userCreated
=
userRepository
.
save
(
user
);
Long
userId
=
0L
;
switch
(
userCreated
.
getRole
().
getName
().
toLowerCase
())
{
case
"passenger"
:
Passenger
passenger
=
passengerRepository
.
save
(
buildPassenger
(
requestDTO
,
userCreated
));
userId
=
passenger
.
getId
();
break
;
case
"agent"
:
Agent
agent
=
agentRepository
.
save
(
buildAgent
(
requestDTO
,
userCreated
));
userId
=
agent
.
getId
();
break
;
case
"supervisor"
:
Supervisor
supervisor
=
supervisorRepository
.
save
(
buildSupervisor
(
requestDTO
,
userCreated
));
userId
=
supervisor
.
getId
();
break
;
}
var
response
=
new
SignUpResponseDTO
(
user
Created
.
getId
()
,
userCreated
.
getName
(),
userCreated
.
getLastname
(),
userCreated
.
getEmail
(),
userCreated
.
getRole
().
getName
());
var
response
=
new
SignUpResponseDTO
(
user
Id
,
userCreated
.
getName
(),
userCreated
.
getLastname
(),
userCreated
.
getEmail
(),
userCreated
.
getRole
().
getName
());
return
ResponseEntity
.
status
(
HttpStatus
.
CREATED
).
body
(
response
);
}
// private boolean registerPassenger(String secondName, String country, String city, String phone, String address) {
// }
// private boolean registerAgent(String details) {
// }
private
Passenger
buildPassenger
(
SignUpRequestDTO
requestDTO
,
User
userCreated
)
{
return
new
Passenger
(
0L
,
requestDTO
.
getCountry
(),
requestDTO
.
getCity
(),
requestDTO
.
getAddress
(),
requestDTO
.
getPhone
(),
LocalDate
.
now
(),
null
,
userCreated
);
}
// private boolean registerSupervisor(String details) {
private
Agent
buildAgent
(
SignUpRequestDTO
requestDTO
,
User
userCreated
)
{
return
new
Agent
(
0L
,
requestDTO
.
getDetails
(),
userCreated
,
LocalDate
.
now
(),
null
);
}
// }
private
Supervisor
buildSupervisor
(
SignUpRequestDTO
requestDTO
,
User
userCreated
)
{
return
new
Supervisor
(
0L
,
requestDTO
.
getDetails
(),
LocalDate
.
now
(),
null
,
userCreated
);
}
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/shared/services/JwtServiceImpl.java
View file @
84afc748
...
...
@@ -49,7 +49,7 @@ public class JwtServiceImpl implements JwtService {
private
String
generateToken
(
Map
<
String
,
Object
>
extraClaims
,
UserDetails
userDetails
)
{
return
Jwts
.
builder
().
setClaims
(
extraClaims
).
setSubject
(
userDetails
.
getUsername
())
.
setIssuedAt
(
new
Date
(
System
.
currentTimeMillis
()))
.
setExpiration
(
new
Date
(
System
.
currentTimeMillis
()
+
1000
*
60
*
24
))
.
setExpiration
(
new
Date
(
System
.
currentTimeMillis
()
+
86400000
))
.
signWith
(
getSigningKey
(),
SignatureAlgorithm
.
HS256
).
compact
();
}
...
...
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/supervisor/controllers/SupervisorController.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
supervisor
.
controllers
;
import
java.util.List
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
com.hcordova.flightagencyapi.supervisor.domain.services.SupervisorService
;
import
com.hcordova.flightagencyapi.supervisor.dto.SupervisorDTO
;
import
lombok.RequiredArgsConstructor
;
@RestController
@RequestMapping
(
"/api/v1/supervisors"
)
@RequiredArgsConstructor
public
class
SupervisorController
{
private
final
SupervisorService
supervisorService
;
@GetMapping
public
ResponseEntity
<
List
<
SupervisorDTO
>>
getAll
()
{
List
<
SupervisorDTO
>
supervisors
=
supervisorService
.
getAll
().
stream
().
map
(
supervisor
->
{
return
new
SupervisorDTO
(
supervisor
);
}).
toList
();
return
ResponseEntity
.
ok
(
supervisors
);
}
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/supervisor/domain/models/Supervisor.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
supervisor
.
domain
.
models
;
import
java.time.LocalDate
;
import
com.hcordova.flightagencyapi.shared.domain.models.User
;
import
jakarta.persistence.Column
;
import
jakarta.persistence.Entity
;
import
jakarta.persistence.GeneratedValue
;
import
jakarta.persistence.GenerationType
;
import
jakarta.persistence.Id
;
import
jakarta.persistence.OneToOne
;
import
jakarta.persistence.Table
;
import
jakarta.persistence.Temporal
;
import
jakarta.persistence.TemporalType
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
@Entity
@Table
(
name
=
"supervisors"
)
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public
class
Supervisor
{
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
private
Long
id
;
@Column
(
nullable
=
false
,
length
=
100
)
private
String
details
;
@Column
(
nullable
=
false
)
@Temporal
(
TemporalType
.
DATE
)
private
LocalDate
createdAt
;
@Column
(
nullable
=
true
)
@Temporal
(
TemporalType
.
DATE
)
private
LocalDate
deletedAt
;
@OneToOne
()
User
user
;
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/supervisor/domain/repositories/SupervisorRepository.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
supervisor
.
domain
.
repositories
;
import
java.util.Optional
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.stereotype.Repository
;
import
com.hcordova.flightagencyapi.supervisor.domain.models.Supervisor
;
@Repository
public
interface
SupervisorRepository
extends
JpaRepository
<
Supervisor
,
Long
>{
Optional
<
Supervisor
>
findByUserId
(
Long
userId
);
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/supervisor/domain/services/SupervisorService.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
supervisor
.
domain
.
services
;
import
java.util.List
;
import
com.hcordova.flightagencyapi.supervisor.domain.models.Supervisor
;
public
interface
SupervisorService
{
List
<
Supervisor
>
getAll
();
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/supervisor/dto/SupervisorDTO.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
supervisor
.
dto
;
import
com.hcordova.flightagencyapi.supervisor.domain.models.Supervisor
;
import
lombok.Getter
;
import
lombok.Setter
;
@Getter
@Setter
public
class
SupervisorDTO
{
private
Long
id
;
private
String
name
;
private
String
lastname
;
private
String
email
;
private
String
details
;
public
SupervisorDTO
(
Supervisor
supervisor
)
{
this
.
id
=
supervisor
.
getUser
().
getId
();
this
.
name
=
supervisor
.
getUser
().
getName
();
this
.
lastname
=
supervisor
.
getUser
().
getLastname
();
this
.
email
=
supervisor
.
getUser
().
getEmail
();
this
.
details
=
supervisor
.
getDetails
();
}
}
flight-agency-api/src/main/java/com/hcordova/flightagencyapi/supervisor/services/SupervisorServiceImpl.java
0 → 100644
View file @
84afc748
package
com
.
hcordova
.
flightagencyapi
.
supervisor
.
services
;
import
java.util.List
;
import
org.springframework.stereotype.Service
;
import
com.hcordova.flightagencyapi.supervisor.domain.models.Supervisor
;
import
com.hcordova.flightagencyapi.supervisor.domain.repositories.SupervisorRepository
;
import
com.hcordova.flightagencyapi.supervisor.domain.services.SupervisorService
;
import
lombok.RequiredArgsConstructor
;
@Service
@RequiredArgsConstructor
public
class
SupervisorServiceImpl
implements
SupervisorService
{
private
final
SupervisorRepository
supervisorRepository
;
@Override
public
List
<
Supervisor
>
getAll
()
{
return
supervisorRepository
.
findAll
();
}
}
flight-agency-api/src/main/resources/db/data.sql
0 → 100644
View file @
84afc748
-- INSERT INTO roles (name) VALUES ('supervisor'), ('agent'), ('passenger');
-- INSERT INTO airports (name, location, code)
-- VALUES
-- ('Jorge Chavez International Airport', 'Lima, Peru', 'LIM'),
-- ('John F. Kennedy International Airport', 'New York, USA', 'JFK'),
-- ('Heathrow Airport', 'London, UK', 'LHR'),
-- ('Charles de Gaulle Airport', 'Paris, France', 'CDG'),
-- ('Los Angeles International Airport', 'Los Angeles, USA', 'LAX'),
-- ('Sydney Kingsford Smith Airport', 'Sydney, Australia', 'SYD'),
-- ('Dubai International Airport', 'Dubai, UAE', 'DXB'),
-- ('Beijing Capital International Airport', 'Beijing, China', 'PEK'),
-- ('Benito Juarez International Airport', 'Mexico City, Mexico', 'MEX'),
-- ('Frankfurt Airport', 'Frankfurt, Germany', 'FRA'),
-- ('Toronto Pearson International Airport', 'Toronto, Canada', 'YYZ'),
-- ('Incheon International Airport', 'Seoul, South Korea', 'ICN'),
-- ('Sao Paulo-Guarulhos International Airport', 'Sao Paulo, Brazil', 'GRU'),
-- ('Barcelona-El Prat Airport', 'Barcelona, Spain', 'BCN'),
-- ('Cairo International Airport', 'Cairo, Egypt', 'CAI');
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment