Explorar el Código

Add assigned projects

tags/Baseline_30082024_BACKEND_UAT
Wayne hace 1 año
padre
commit
6fff6cc584
Se han modificado 7 ficheros con 68 adiciones y 7 borrados
  1. +4
    -7
      src/main/java/com/ffii/tsms/config/security/jwt/web/JwtAuthenticationController.java
  2. +2
    -0
      src/main/java/com/ffii/tsms/modules/project/entity/MilestoneRepository.kt
  3. +1
    -0
      src/main/java/com/ffii/tsms/modules/project/entity/ProjectTaskRepository.kt
  4. +2
    -0
      src/main/java/com/ffii/tsms/modules/project/entity/StaffAllocationRepository.kt
  5. +31
    -0
      src/main/java/com/ffii/tsms/modules/project/service/ProjectsService.kt
  6. +6
    -0
      src/main/java/com/ffii/tsms/modules/project/web/ProjectsController.kt
  7. +22
    -0
      src/main/java/com/ffii/tsms/modules/project/web/models/AssignedProject.kt

+ 4
- 7
src/main/java/com/ffii/tsms/config/security/jwt/web/JwtAuthenticationController.java Ver fichero

@@ -82,16 +82,13 @@ public class JwtAuthenticationController {
}

private ResponseEntity<?> createAuthTokenResponse(JwtRequest authenticationRequest) {
final UserDetails userDetails = userDetailsService.loadUserByUsername(authenticationRequest.getUsername());
if (userDetails == null) {
final User user = userDetailsService.loadUserByUsername(authenticationRequest.getUsername());
if (user == null) {
return ResponseEntity.status(HttpStatus.UNAUTHORIZED)
.body(new ExceptionResponse(authenticationRequest.getUsername() + " not yet register in the system.", null));
}

final String accessToken = jwtTokenUtil.generateToken(userDetails);
final String refreshToken = jwtTokenUtil.createRefreshToken(userDetails.getUsername()).getToken();

User user = userRepository.findByName(authenticationRequest.getUsername()).get(0);
final String accessToken = jwtTokenUtil.generateToken(user);
final String refreshToken = jwtTokenUtil.createRefreshToken(user.getUsername()).getToken();

Set<AbilityModel> abilities = new HashSet<>();
userAuthorityService.getUserAuthority(user).forEach(auth -> abilities.add(new AbilityModel(auth.getAuthority())));


+ 2
- 0
src/main/java/com/ffii/tsms/modules/project/entity/MilestoneRepository.kt Ver fichero

@@ -6,4 +6,6 @@ import com.ffii.tsms.modules.project.entity.projections.InvoiceSearchInfo
interface MilestoneRepository : AbstractRepository<Milestone, Long> {

fun findInvoiceSearchInfoBy(): List<InvoiceSearchInfo>

fun findAllByProject(project: Project): List<Milestone>
}

+ 1
- 0
src/main/java/com/ffii/tsms/modules/project/entity/ProjectTaskRepository.kt Ver fichero

@@ -3,4 +3,5 @@ package com.ffii.tsms.modules.project.entity;
import com.ffii.core.support.AbstractRepository

interface ProjectTaskRepository : AbstractRepository<ProjectTask, Long> {
fun findAllByProject(project: Project): List<ProjectTask>
}

+ 2
- 0
src/main/java/com/ffii/tsms/modules/project/entity/StaffAllocationRepository.kt Ver fichero

@@ -1,6 +1,8 @@
package com.ffii.tsms.modules.project.entity;

import com.ffii.core.support.AbstractRepository
import com.ffii.tsms.modules.data.entity.Staff

interface StaffAllocationRepository : AbstractRepository<StaffAllocation, Long> {
fun findAssignedProjectsByStaff(staff: Staff): List<StaffAllocation>
}

+ 31
- 0
src/main/java/com/ffii/tsms/modules/project/service/ProjectsService.kt Ver fichero

@@ -1,5 +1,6 @@
package com.ffii.tsms.modules.project.service

import com.ffii.tsms.modules.common.SecurityUtils
import com.ffii.tsms.modules.data.entity.*
import com.ffii.tsms.modules.data.service.CustomerContactService
import com.ffii.tsms.modules.project.entity.projections.ProjectSearchInfo
@@ -8,11 +9,14 @@ import com.ffii.tsms.modules.data.service.GradeService
import com.ffii.tsms.modules.project.entity.*
import com.ffii.tsms.modules.project.entity.projections.InvoiceInfoSearchInfo
import com.ffii.tsms.modules.project.entity.projections.InvoiceSearchInfo
import com.ffii.tsms.modules.project.web.models.AssignedProject
import com.ffii.tsms.modules.project.web.models.MilestoneInfo
import com.ffii.tsms.modules.project.web.models.NewProjectRequest
import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional
import java.time.LocalDate
import java.time.format.DateTimeFormatter
import kotlin.jvm.optionals.getOrNull

@Service
open class ProjectsService(
@@ -51,6 +55,33 @@ open class ProjectsService(
return projectRepository.findInvoiceInfoSearchInfoById(id)
}

open fun allAssignedProjects(): List<AssignedProject> {
return SecurityUtils.getUser().getOrNull()?.let { user ->
staffRepository.findByUserId(user.id).getOrNull()?.let { staff ->
staffAllocationRepository.findAssignedProjectsByStaff(staff)
.mapNotNull { it.project?.let { project ->
AssignedProject(
id = project.id!!,
code = project.code!!,
name = project.name!!,
tasks = projectTaskRepository.findAllByProject(project).mapNotNull { pt -> pt.task },
milestones = milestoneRepository.findAllByProject(project)
.filter { milestone -> milestone.taskGroup?.id != null }
.associateBy { milestone -> milestone.taskGroup!!.id!! }
.mapValues { (_, milestone) -> MilestoneInfo(
startDate = milestone.startDate?.format(DateTimeFormatter.ISO_LOCAL_DATE),
endDate = milestone.endDate?.format(DateTimeFormatter.ISO_LOCAL_DATE)
) },
hoursAllocated = project.totalManhour ?: 0.0,
hoursAllocatedOther = 0.0,
hoursSpent = 0.0,
hoursSpentOther = 0.0
)
} }
}
} ?: emptyList()
}

open fun allProjectCategories(): List<ProjectCategory> {
return projectCategoryRepository.findAll()
}


+ 6
- 0
src/main/java/com/ffii/tsms/modules/project/web/ProjectsController.kt Ver fichero

@@ -5,6 +5,7 @@ import com.ffii.tsms.modules.project.entity.projections.ProjectSearchInfo
import com.ffii.tsms.modules.project.entity.Project
import com.ffii.tsms.modules.project.entity.ProjectCategory
import com.ffii.tsms.modules.project.service.ProjectsService
import com.ffii.tsms.modules.project.web.models.AssignedProject
import com.ffii.tsms.modules.project.web.models.NewProjectRequest
import jakarta.validation.Valid
import org.springframework.web.bind.annotation.*
@@ -17,6 +18,11 @@ class ProjectsController(private val projectsService: ProjectsService) {
return projectsService.allProjects()
}

@GetMapping("/assignedProjects")
fun assignedProjects(): List<AssignedProject> {
return projectsService.allAssignedProjects()
}

@GetMapping("/categories")
fun projectCategories(): List<ProjectCategory> {
return projectsService.allProjectCategories()


+ 22
- 0
src/main/java/com/ffii/tsms/modules/project/web/models/AssignedProject.kt Ver fichero

@@ -0,0 +1,22 @@
package com.ffii.tsms.modules.project.web.models

import com.ffii.tsms.modules.project.entity.Task

data class AssignedProject(
val id: Long,
val code: String,
val name: String,
val tasks: List<Task>,
val milestones: Map<Long, MilestoneInfo>,

// Manhour info
val hoursAllocated: Double,
val hoursAllocatedOther: Double,
val hoursSpent: Double,
val hoursSpentOther: Double,
)

data class MilestoneInfo(
val startDate: String?,
val endDate: String?
)

Cargando…
Cancelar
Guardar