Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Matheus Barreto Tosin
Mutirao do Bem Backend
Commits
acbc5337
Commit
acbc5337
authored
3 years ago
by
André Luiz Marques Macrini Leite
Browse files
Options
Download
Email Patches
Plain Diff
refactor task completion
parent
a23fb8b2
stage
dev
feat/admin-accept-registration-request
feat/admin-pending-event
feat/event-filters
feat/refactor-task-completion
feat/unit-test
fix/remove-commented-lines
No related merge requests found
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
src/main/java/br/com/ages/mutiraodobemback/controller/EventController.java
+0
-1
...com/ages/mutiraodobemback/controller/EventController.java
src/main/java/br/com/ages/mutiraodobemback/controller/TaskController.java
+6
-0
.../com/ages/mutiraodobemback/controller/TaskController.java
src/main/java/br/com/ages/mutiraodobemback/domain/TaskEntity.java
+4
-0
.../java/br/com/ages/mutiraodobemback/domain/TaskEntity.java
src/main/java/br/com/ages/mutiraodobemback/dto/TaskDTO.java
+2
-0
src/main/java/br/com/ages/mutiraodobemback/dto/TaskDTO.java
src/main/java/br/com/ages/mutiraodobemback/enums/EvaluationType.java
+6
-0
...va/br/com/ages/mutiraodobemback/enums/EvaluationType.java
src/main/java/br/com/ages/mutiraodobemback/message/Message.java
+5
-0
...in/java/br/com/ages/mutiraodobemback/message/Message.java
src/main/java/br/com/ages/mutiraodobemback/service/event/EventServiceImpl.java
+8
-8
...ages/mutiraodobemback/service/event/EventServiceImpl.java
src/main/java/br/com/ages/mutiraodobemback/service/task/ITaskService.java
+2
-0
.../com/ages/mutiraodobemback/service/task/ITaskService.java
src/main/java/br/com/ages/mutiraodobemback/service/task/TaskServiceImpl.java
+52
-10
...m/ages/mutiraodobemback/service/task/TaskServiceImpl.java
src/main/java/br/com/ages/mutiraodobemback/util/Validations.java
+1
-1
...n/java/br/com/ages/mutiraodobemback/util/Validations.java
src/main/java/br/com/ages/mutiraodobemback/util/exceptions/TaskNotFoundException.java
+13
-0
...tiraodobemback/util/exceptions/TaskNotFoundException.java
src/main/java/br/com/ages/mutiraodobemback/util/handlers/TaskExceptionHandler.java
+17
-0
.../mutiraodobemback/util/handlers/TaskExceptionHandler.java
with
116 additions
and
20 deletions
+116
-20
src/main/java/br/com/ages/mutiraodobemback/controller/EventController.java
View file @
acbc5337
...
...
@@ -59,5 +59,4 @@ public class EventController {
public
EventDetailsResponseDTO
cancelParticipate
(
@PathVariable
String
id
)
{
return
this
.
service
.
cancelParticipate
(
id
);
}
}
This diff is collapsed.
Click to expand it.
src/main/java/br/com/ages/mutiraodobemback/controller/TaskController.java
View file @
acbc5337
...
...
@@ -33,4 +33,10 @@ public class TaskController {
@PutMapping
(
"/leave-task/{id}"
)
public
void
leaveTask
(
@PathVariable
String
id
,
@RequestBody
TaskDTO
dto
)
{
this
.
service
.
leaveTask
(
id
,
dto
);
}
@PutMapping
(
"/evaluation-task/{id}"
)
public
void
evaluationTask
(
@PathVariable
String
id
,
@RequestBody
TaskDTO
dto
)
{
this
.
service
.
evaluationTask
(
id
,
dto
);
}
}
This diff is collapsed.
Click to expand it.
src/main/java/br/com/ages/mutiraodobemback/domain/TaskEntity.java
View file @
acbc5337
package
br.com.ages.mutiraodobemback.domain
;
import
br.com.ages.mutiraodobemback.enums.EvaluationType
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
...
...
@@ -26,4 +27,7 @@ public class TaskEntity {
@NonNull
private
LocalDateTime
createDate
;
private
LocalDateTime
endDate
;
private
EvaluationType
evaluationType
;
private
UserEntity
userConclusion
;
}
This diff is collapsed.
Click to expand it.
src/main/java/br/com/ages/mutiraodobemback/dto/TaskDTO.java
View file @
acbc5337
package
br.com.ages.mutiraodobemback.dto
;
import
br.com.ages.mutiraodobemback.enums.EvaluationType
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
...
...
@@ -12,4 +13,5 @@ import lombok.NoArgsConstructor;
public
class
TaskDTO
{
private
String
id
;
private
String
description
;
private
EvaluationType
evaluationType
;
}
This diff is collapsed.
Click to expand it.
src/main/java/br/com/ages/mutiraodobemback/enums/EvaluationType.java
0 → 100644
View file @
acbc5337
package
br.com.ages.mutiraodobemback.enums
;
public
enum
EvaluationType
{
POSITIVE
,
NEGATIVE
}
This diff is collapsed.
Click to expand it.
src/main/java/br/com/ages/mutiraodobemback/message/Message.java
View file @
acbc5337
...
...
@@ -28,5 +28,10 @@ public class Message {
public
static
final
String
TAREFA_JA_POSSUI_VOLUNTARIO
=
"Ação inválida. A tarefa já possuí voluntário."
;
public
static
final
String
TAREFA_NAO_PODE_SER_CONCLUIDA
=
"Ação inválida. A tarefa não pode ser concluída."
;
public
static
final
String
TAREFA_NAO_PODE_SER_ABANDONADA
=
"Ação inválida. Não foi possível abandonar a tarefa.."
;
public
static
final
String
TAREFA_NAO_ENCONTRADA
=
"Tarefa não encontrada."
;
public
static
final
String
AVALIACAO_EH_OBRIGATORIA
=
"A avaliação é obrigatória."
;
public
static
final
String
TAREFA_NAO_POSSUI_USUARIO_DE_CONCLUSAO
=
"A tarefa não possui usuário de conclusão."
;
public
static
final
String
NAO_FOI_VOCE_QUEM_CONCLUIU_A_TAREFA
=
"Não foi você quem concluiu a tarefa."
;
public
static
final
String
TAREFA_JA_CONCLUIDA
=
"Ação inválida. A tarefa já está concluída."
;
}
This diff is collapsed.
Click to expand it.
src/main/java/br/com/ages/mutiraodobemback/service/event/EventServiceImpl.java
View file @
acbc5337
...
...
@@ -101,8 +101,8 @@ public class EventServiceImpl implements IEventService {
String
loggedUserId
=
userService
.
getLoggedUser
().
getId
();
if
(
event
.
getVolunteer
()
!=
null
)
{
event
.
setLoggedUserParticipate
(
event
.
getVolunteer
()
.
stream
()
.
anyMatch
(
volunteer
->
loggedUserId
.
equalsIgnoreCase
(
volunteer
.
getId
())));
.
stream
()
.
anyMatch
(
volunteer
->
loggedUserId
.
equalsIgnoreCase
(
volunteer
.
getId
())));
}
if
(
event
.
getTasks
()
!=
null
)
{
...
...
@@ -112,8 +112,8 @@ public class EventServiceImpl implements IEventService {
double
percentFinished
=
((
double
)
completedTasks
/
(
double
)
totalTasks
)
*
100
;
double
taskProgress
=
Double
.
isInfinite
(
percentFinished
)
||
Double
.
isNaN
(
percentFinished
)
?
0
:
BigDecimal
.
valueOf
(
percentFinished
)
.
setScale
(
1
,
RoundingMode
.
HALF_UP
)
.
doubleValue
();
.
setScale
(
1
,
RoundingMode
.
HALF_UP
)
.
doubleValue
();
event
.
setTaskProgress
(
taskProgress
);
}
...
...
@@ -135,22 +135,22 @@ public class EventServiceImpl implements IEventService {
}
private
void
validateFields
(
EventRequestDTO
event
)
{
if
(
Validations
.
isEmptyOr
i
sBlank
(
event
.
getTitle
()))
if
(
Validations
.
isEmptyOr
I
sBlank
(
event
.
getTitle
()))
throw
new
CustomIllegalArgumentException
(
NOME_OBRIGATORIO
);
// if (Validations.isEmptyOrisBlank(event.getStreet()))
// throw new CustomIllegalArgumentException(ENDERECO_OBRIGATORIO);
if
(
Validations
.
isEmptyOr
i
sBlank
(
event
.
getStartDate
().
toString
()))
if
(
Validations
.
isEmptyOr
I
sBlank
(
event
.
getStartDate
().
toString
()))
throw
new
CustomIllegalArgumentException
(
DATA_INICIAL_OBRIGATORIO
);
if
(
Validations
.
isEmptyOr
i
sBlank
(
event
.
getEndDate
().
toString
()))
if
(
Validations
.
isEmptyOr
I
sBlank
(
event
.
getEndDate
().
toString
()))
throw
new
CustomIllegalArgumentException
(
DATA_FINAL_OBRIGATORIO
);
if
(
Validations
.
isAfter
(
event
.
getStartDate
(),
event
.
getEndDate
()))
throw
new
CustomIllegalArgumentException
(
DATA_INICIAL_MAIOR_QUE_DATA_FINAL
);
if
(
Validations
.
isEmptyOr
i
sBlank
(
event
.
getDescription
()))
if
(
Validations
.
isEmptyOr
I
sBlank
(
event
.
getDescription
()))
throw
new
CustomIllegalArgumentException
(
DESCRICAO_OBRIGATORIO
);
// if (Validations.isEmptyOrisBlank(event.getLatitude()))
...
...
This diff is collapsed.
Click to expand it.
src/main/java/br/com/ages/mutiraodobemback/service/task/ITaskService.java
View file @
acbc5337
...
...
@@ -12,4 +12,6 @@ public interface ITaskService {
void
completeTask
(
String
id
,
TaskDTO
dto
);
void
leaveTask
(
String
id
,
TaskDTO
dto
);
void
evaluationTask
(
String
id
,
TaskDTO
dto
);
}
This diff is collapsed.
Click to expand it.
src/main/java/br/com/ages/mutiraodobemback/service/task/TaskServiceImpl.java
View file @
acbc5337
...
...
@@ -8,14 +8,15 @@ import br.com.ages.mutiraodobemback.service.event.IEventService;
import
br.com.ages.mutiraodobemback.service.user.IUserService
;
import
br.com.ages.mutiraodobemback.util.Validations
;
import
br.com.ages.mutiraodobemback.util.exceptions.CustomIllegalArgumentException
;
import
br.com.ages.mutiraodobemback.util.exceptions.TaskNotFoundException
;
import
br.com.ages.mutiraodobemback.util.exceptions.UserAlreadyParticipate
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.web.bind.annotation.PutMapping
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Optional
;
import
static
br
.
com
.
ages
.
mutiraodobemback
.
message
.
Message
.*;
import
static
br
.
com
.
ages
.
mutiraodobemback
.
message
.
Message
.
NAO_FOI_POSSIVEL_REMOVER_A_TAREFA
;
...
...
@@ -36,7 +37,7 @@ public class TaskServiceImpl implements ITaskService {
@Override
public
void
createTask
(
String
id
,
TaskDTO
dto
)
{
if
(
Validations
.
isNull
(
dto
.
getDescription
())
||
Validations
.
isEmptyOr
i
sBlank
(
dto
.
getDescription
()))
if
(
Validations
.
isNull
(
dto
.
getDescription
())
||
Validations
.
isEmptyOr
I
sBlank
(
dto
.
getDescription
()))
throw
new
CustomIllegalArgumentException
(
DESCRICAO_EH_OBRIGATORIA
);
EventEntity
event
=
this
.
eventService
.
findEntityById
(
id
);
List
<
TaskEntity
>
list
=
event
.
getTasks
()
!=
null
?
event
.
getTasks
()
:
new
ArrayList
<>();
...
...
@@ -62,13 +63,19 @@ public class TaskServiceImpl implements ITaskService {
String
loggedUserId
=
userService
.
getLoggedUser
().
getId
();
boolean
isEventOwner
=
loggedUserId
.
equalsIgnoreCase
(
event
.
getUser
().
getId
());
boolean
isDeleted
=
event
.
getTasks
().
removeIf
(
task
->
(
isEventOwner
||
loggedUserId
.
equalsIgnoreCase
(
task
.
getOwner
().
getId
()))
&&
dto
.
getId
().
equalsIgnoreCase
(
task
.
getId
())
);
TaskEntity
taskToDelete
=
event
.
getTasks
().
stream
()
.
filter
(
task
->
(
isEventOwner
||
loggedUserId
.
equalsIgnoreCase
(
task
.
getOwner
().
getId
()))
&&
dto
.
getId
().
equalsIgnoreCase
(
task
.
getId
()))
.
findFirst
()
.
orElse
(
null
);
if
(
Validations
.
isNull
(
taskToDelete
))
throw
new
TaskNotFoundException
();
if
(
Validations
.
isNotNull
(
taskToDelete
.
getEndDate
()))
throw
new
CustomIllegalArgumentException
(
TAREFA_JA_CONCLUIDA
);
if
(!
isDeleted
)
throw
new
CustomIllegalArgumentException
(
NAO_FOI_POSSIVEL_REMOVER_A_TAREFA
);
event
.
getTasks
().
remove
(
taskToDelete
);
eventService
.
save
(
event
);
}
...
...
@@ -98,15 +105,18 @@ public class TaskServiceImpl implements ITaskService {
throw
new
CustomIllegalArgumentException
(
ID_EH_OBRIGATORIO
);
EventEntity
event
=
this
.
eventService
.
findEntityById
(
id
);
String
loggedUser
Id
=
userService
.
getLoggedUser
()
.
getId
()
;
UserEntity
loggedUser
=
userService
.
getLoggedUser
();
TaskEntity
taskToComplete
=
event
.
getTasks
()
.
stream
()
.
filter
(
task
->
Validations
.
isNotNull
(
task
.
getVolunteer
())
&&
loggedUserId
.
equalsIgnoreCase
(
task
.
getVolunteer
().
getId
())
&&
dto
.
getId
().
equalsIgnoreCase
(
task
.
getId
()))
.
filter
(
task
->
Validations
.
isNotNull
(
task
.
getVolunteer
())
&&
!
loggedUser
.
getId
().
equalsIgnoreCase
(
task
.
getVolunteer
().
getId
())
&&
dto
.
getId
().
equalsIgnoreCase
(
task
.
getId
()))
.
findFirst
()
.
orElseThrow
(()
->
new
UserAlreadyParticipate
(
TAREFA_NAO_PODE_SER_CONCLUIDA
));
taskToComplete
.
setEndDate
(
LocalDateTime
.
now
());
taskToComplete
.
setUserConclusion
(
loggedUser
);
eventService
.
save
(
event
);
}
...
...
@@ -127,4 +137,36 @@ public class TaskServiceImpl implements ITaskService {
taskToLeave
.
setVolunteer
(
null
);
eventService
.
save
(
event
);
}
@Override
public
void
evaluationTask
(
String
id
,
TaskDTO
dto
)
{
if
(
Validations
.
isNull
(
dto
.
getId
()))
throw
new
CustomIllegalArgumentException
(
ID_EH_OBRIGATORIO
);
if
(
Validations
.
isNull
(
dto
.
getEvaluationType
()))
throw
new
CustomIllegalArgumentException
(
AVALIACAO_EH_OBRIGATORIA
);
EventEntity
event
=
this
.
eventService
.
findEntityById
(
id
);
TaskEntity
task
=
this
.
findTaskById
(
event
.
getTasks
(),
dto
.
getId
());
if
(
Validations
.
isNull
(
task
))
throw
new
TaskNotFoundException
();
if
(
Validations
.
isNull
(
task
.
getUserConclusion
()))
throw
new
CustomIllegalArgumentException
(
TAREFA_NAO_POSSUI_USUARIO_DE_CONCLUSAO
);
String
loggedUserId
=
userService
.
getLoggedUser
().
getId
();
if
(!
task
.
getUserConclusion
().
getId
().
equalsIgnoreCase
(
loggedUserId
)
&&
!
event
.
getUser
().
getId
().
equalsIgnoreCase
(
loggedUserId
))
throw
new
CustomIllegalArgumentException
(
NAO_FOI_VOCE_QUEM_CONCLUIU_A_TAREFA
);
task
.
setEvaluationType
(
dto
.
getEvaluationType
());
this
.
eventService
.
save
(
event
);
}
private
TaskEntity
findTaskById
(
List
<
TaskEntity
>
tasks
,
String
taskId
)
{
return
tasks
.
stream
()
.
filter
(
task
->
task
.
getId
().
equalsIgnoreCase
(
taskId
)).
findFirst
()
.
orElse
(
null
);
}
}
This diff is collapsed.
Click to expand it.
src/main/java/br/com/ages/mutiraodobemback/util/Validations.java
View file @
acbc5337
...
...
@@ -4,7 +4,7 @@ import java.time.LocalDateTime;
public
class
Validations
{
public
static
boolean
isEmptyOr
i
sBlank
(
String
value
)
{
public
static
boolean
isEmptyOr
I
sBlank
(
String
value
)
{
return
(
value
.
isBlank
()
||
value
.
isEmpty
());
}
...
...
This diff is collapsed.
Click to expand it.
src/main/java/br/com/ages/mutiraodobemback/util/exceptions/TaskNotFoundException.java
0 → 100644
View file @
acbc5337
package
br.com.ages.mutiraodobemback.util.exceptions
;
import
static
br
.
com
.
ages
.
mutiraodobemback
.
message
.
Message
.
TAREFA_NAO_ENCONTRADA
;
public
class
TaskNotFoundException
extends
RuntimeException
{
private
static
final
long
serialVersionUID
=
1L
;
public
TaskNotFoundException
()
{
super
(
TAREFA_NAO_ENCONTRADA
);
}
}
This diff is collapsed.
Click to expand it.
src/main/java/br/com/ages/mutiraodobemback/util/handlers/TaskExceptionHandler.java
0 → 100644
View file @
acbc5337
package
br.com.ages.mutiraodobemback.util.handlers
;
import
br.com.ages.mutiraodobemback.util.exceptions.TaskNotFoundException
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.ControllerAdvice
;
import
org.springframework.web.bind.annotation.ExceptionHandler
;
@ControllerAdvice
public
class
TaskExceptionHandler
{
@ExceptionHandler
(
value
=
TaskNotFoundException
.
class
)
public
ResponseEntity
<
Object
>
handleException
(
TaskNotFoundException
exception
)
{
return
new
ResponseEntity
<>(
exception
.
getMessage
(),
HttpStatus
.
NOT_FOUND
);
}
}
This diff is collapsed.
Click to expand it.
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
Menu
Projects
Groups
Snippets
Help