Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
Antonio Rueda
/
UJACoin
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
ff9cfc94
authored
Dec 16, 2020
by
Antonio Rueda
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Implementado servicio para consulta de movimientos con paginación
parent
da2b3013
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
61 additions
and
17 deletions
src/main/java/es/ujaen/dae/ujacoin/controladoresREST/ControladorREST.java
src/main/java/es/ujaen/dae/ujacoin/controladoresREST/DTO/DTOMovimiento.java
src/main/java/es/ujaen/dae/ujacoin/servicios/ServicioUjaCoin.java
src/main/java/es/ujaen/dae/ujacoin/controladoresREST/ControladorREST.java
View file @
ff9cfc94
...
...
@@ -11,14 +11,18 @@ import es.ujaen.dae.ujacoin.controladoresREST.DTO.DTOMovimiento;
import
es.ujaen.dae.ujacoin.controladoresREST.DTO.DTOTarjeta
;
import
es.ujaen.dae.ujacoin.entidades.Cliente
;
import
es.ujaen.dae.ujacoin.entidades.Cuenta
;
import
es.ujaen.dae.ujacoin.entidades.movimientos.Movimiento
;
import
es.ujaen.dae.ujacoin.excepciones.ClienteNoRegistrado
;
import
es.ujaen.dae.ujacoin.excepciones.ClienteYaRegistrado
;
import
es.ujaen.dae.ujacoin.excepciones.TarjetaYaRegistrada
;
import
es.ujaen.dae.ujacoin.servicios.ServicioUjaCoin
;
import
java.time.LocalDateTime
;
import
java.time.format.DateTimeParseException
;
import
java.util.List
;
import
java.util.Optional
;
import
java.util.stream.Collectors
;
import
javax.validation.ConstraintViolationException
;
import
javax.validation.constraints.Positive
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
...
...
@@ -128,15 +132,15 @@ public class ControladorREST {
}
switch
(
movimiento
.
getTipo
().
toLowerCase
())
{
case
"ingreso"
:
case
DTOMovimiento
.
INGRESO
:
servicios
.
ingreso
(
numCuenta
,
movimiento
.
getNumTarjeta
(),
movimiento
.
getImporte
());
break
;
case
"reintegro"
:
case
DTOMovimiento
.
REINTEGRO
:
servicios
.
reintegro
(
numCuenta
,
movimiento
.
getNumTarjeta
(),
movimiento
.
getImporte
());
break
;
case
"transferencia"
:
case
DTOMovimiento
.
TRANSFERENCIA_EMITIDA
:
servicios
.
transferencia
(
numCuenta
,
movimiento
.
getNumCuenta
(),
movimiento
.
getImporte
());
break
;
...
...
@@ -144,6 +148,34 @@ public class ControladorREST {
return
ResponseEntity
.
badRequest
().
build
();
}
return
ResponseEntity
.
ok
().
build
();
}
return
ResponseEntity
.
status
(
HttpStatus
.
CREATED
).
build
();
}
@GetMapping
(
"/clientes/{dni}/cuentas/{numCuenta}/movimientos"
)
ResponseEntity
<
List
<
DTOMovimiento
>>
verMovimientos
(
@PathVariable
String
dni
,
@PathVariable
String
numCuenta
,
@RequestParam
(
required
=
false
)
String
desdeFecha
,
@RequestParam
(
required
=
false
)
String
hastaFecha
,
@RequestParam
(
required
=
false
,
defaultValue
=
"1"
)
@Positive
int
pag
,
@RequestParam
(
required
=
false
,
defaultValue
=
"10"
)
@Positive
int
num
)
{
LocalDateTime
fechaInicial
;
LocalDateTime
fechaFinal
;
try
{
fechaInicial
=
desdeFecha
!=
null
?
LocalDateTime
.
parse
(
desdeFecha
)
:
null
;
fechaFinal
=
hastaFecha
!=
null
?
LocalDateTime
.
parse
(
hastaFecha
)
:
null
;
}
catch
(
DateTimeParseException
e
)
{
return
ResponseEntity
.
badRequest
().
build
();
}
List
<
Movimiento
>
movimientos
=
servicios
.
listarMovimientosCuentaDesdeHasta
(
numCuenta
,
fechaInicial
,
fechaFinal
);
return
ResponseEntity
.
ok
(
movimientos
.
stream
()
.
skip
((
pag
-
1
)
*
num
)
.
limit
(
num
)
.
map
(
m
->
new
DTOMovimiento
(
m
))
.
collect
(
Collectors
.
toList
()));
}
}
src/main/java/es/ujaen/dae/ujacoin/controladoresREST/DTO/DTOMovimiento.java
View file @
ff9cfc94
...
...
@@ -20,10 +20,10 @@ import java.util.Optional;
* @author ajrueda
*/
public
class
DTOMovimiento
{
static
final
String
ETIQ_
INGRESO
=
"ingreso"
;
static
final
String
ETIQ_
REINTEGRO
=
"reintegro"
;
static
final
String
ETIQ_
TRANSFERENCIA_EMITIDA
=
"transferenciaEmitida"
;
static
final
String
ETIQ_
TRANSFERENCIA_RECIBIDA
=
"transferenciaRecibida"
;
public
static
final
String
INGRESO
=
"ingreso"
;
public
static
final
String
REINTEGRO
=
"reintegro"
;
public
static
final
String
TRANSFERENCIA_EMITIDA
=
"transferenciaEmitida"
;
public
static
final
String
TRANSFERENCIA_RECIBIDA
=
"transferenciaRecibida"
;
/** Tipo del movimiento: ingreso, reintegro, transferencia */
String
tipo
;
...
...
@@ -41,23 +41,35 @@ public class DTOMovimiento {
this
.
importe
=
importe
;
}
public
static
DTOMovimiento
ingreso
(
String
numTarjeta
,
int
importe
)
{
return
new
DTOMovimiento
(
INGRESO
,
numTarjeta
,
null
,
importe
);
}
public
static
DTOMovimiento
reintegro
(
String
numTarjeta
,
int
importe
)
{
return
new
DTOMovimiento
(
REINTEGRO
,
numTarjeta
,
null
,
importe
);
}
public
static
DTOMovimiento
transferencia
(
String
numCuentaDestino
,
int
importe
)
{
return
new
DTOMovimiento
(
TRANSFERENCIA_EMITIDA
,
numCuentaDestino
,
null
,
importe
);
}
public
DTOMovimiento
(
Movimiento
movimiento
)
{
this
.
importe
=
movimiento
.
getImporte
();
if
(
movimiento
instanceof
Ingreso
)
{
this
.
tipo
=
ETIQ_
INGRESO
;
this
.
tipo
=
INGRESO
;
this
.
numTarjeta
=
((
Ingreso
)
movimiento
).
getTarjeta
().
getNum
();
}
else
if
(
movimiento
instanceof
Reintegro
)
{
this
.
tipo
=
ETIQ_
REINTEGRO
;
this
.
tipo
=
REINTEGRO
;
this
.
numTarjeta
=
((
Reintegro
)
movimiento
).
getTarjeta
().
getNum
();
}
else
if
(
movimiento
instanceof
TransferenciaEmitida
)
{
this
.
tipo
=
ETIQ_
TRANSFERENCIA_EMITIDA
;
this
.
tipo
=
TRANSFERENCIA_EMITIDA
;
this
.
numCuenta
=
((
TransferenciaEmitida
)
movimiento
).
getCuentaDestino
().
getNum
();
}
else
if
(
movimiento
instanceof
TransferenciaRecibida
)
{
this
.
tipo
=
ETIQ_
TRANSFERENCIA_RECIBIDA
;
this
.
tipo
=
TRANSFERENCIA_RECIBIDA
;
this
.
numCuenta
=
((
TransferenciaRecibida
)
movimiento
).
getCuentaOrigen
().
getNum
();
}
}
...
...
@@ -84,7 +96,7 @@ public class DTOMovimiento {
}
switch
(
tipo
.
toLowerCase
())
{
case
ETIQ_
INGRESO:
case
INGRESO:
if
(
numTarjeta
==
null
)
{
return
Optional
.
empty
();
}
...
...
@@ -94,7 +106,7 @@ public class DTOMovimiento {
.
findAny
()
.
map
(
t
->
new
Ingreso
(
t
,
importe
));
case
ETIQ_
REINTEGRO:
case
REINTEGRO:
if
(
numTarjeta
==
null
)
{
return
Optional
.
empty
();
}
...
...
@@ -104,7 +116,7 @@ public class DTOMovimiento {
.
findAny
()
.
map
(
t
->
new
Reintegro
(
t
,
importe
));
case
ETIQ_
TRANSFERENCIA_EMITIDA:
case
TRANSFERENCIA_EMITIDA:
if
(
numCuenta
==
null
)
{
return
Optional
.
empty
();
}
...
...
src/main/java/es/ujaen/dae/ujacoin/servicios/ServicioUjaCoin.java
View file @
ff9cfc94
...
...
@@ -197,7 +197,7 @@ public class ServicioUjaCoin {
* @return la lista de los movimientos entre las fechas indicadas
*/
@Transactional
List
<
Movimiento
>
listarMovimientosCuentaDesdeHasta
(
@NotBlank
String
numCuenta
,
@Past
LocalDateTime
fechaHoraDesde
,
@Past
LocalDateTime
fechaHoraHasta
)
{
public
List
<
Movimiento
>
listarMovimientosCuentaDesdeHasta
(
@NotBlank
String
numCuenta
,
@Past
LocalDateTime
fechaHoraDesde
,
@Past
LocalDateTime
fechaHoraHasta
)
{
Cuenta
cuenta
=
repositorioCuentas
.
buscar
(
numCuenta
)
.
orElseThrow
(
CuentaNoRegistrada:
:
new
);
...
...
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