Bladeren bron

1. client & subsidiary (master, project) will be ordered by name

2. timesheet amendment - staff selection - sort by staffId
3. if the staff is not a teamlead but have authority to edit timesheet amendment, the staff will be not able to view/edit others.
4. update the checking of depart date
pull/3/head
cyril.tsui 6 maanden geleden
bovenliggende
commit
4f23570a7b
7 gewijzigde bestanden met toevoegingen van 38 en 23 verwijderingen
  1. +1
    -1
      src/main/java/com/ffii/tsms/modules/data/entity/CustomerRepository.java
  2. +2
    -0
      src/main/java/com/ffii/tsms/modules/data/entity/StaffRepository.java
  3. +1
    -1
      src/main/java/com/ffii/tsms/modules/data/entity/SubsidiaryRepository.java
  4. +1
    -1
      src/main/java/com/ffii/tsms/modules/data/service/CustomerService.kt
  5. +6
    -1
      src/main/java/com/ffii/tsms/modules/data/service/StaffsService.kt
  6. +1
    -1
      src/main/java/com/ffii/tsms/modules/data/service/SubsidiaryService.kt
  7. +26
    -18
      src/main/java/com/ffii/tsms/modules/timesheet/service/TimesheetsService.kt

+ 1
- 1
src/main/java/com/ffii/tsms/modules/data/entity/CustomerRepository.java Bestand weergeven

@@ -9,7 +9,7 @@ import org.springframework.data.repository.query.Param;
import com.ffii.core.support.AbstractRepository; import com.ffii.core.support.AbstractRepository;


public interface CustomerRepository extends AbstractRepository<Customer, Long> { public interface CustomerRepository extends AbstractRepository<Customer, Long> {
List<Customer> findAllByDeletedFalse();
List<Customer> findAllByDeletedFalseOrderByNameAsc();
Optional<Customer> findByCode(@Param("code") String code); Optional<Customer> findByCode(@Param("code") String code);
Optional<Customer> findByName(@Param("name") String name); Optional<Customer> findByName(@Param("name") String name);




+ 2
- 0
src/main/java/com/ffii/tsms/modules/data/entity/StaffRepository.java Bestand weergeven

@@ -28,6 +28,8 @@ public interface StaffRepository extends AbstractRepository<Staff, Long> {


Optional<List<Staff>> findAllByDeletedFalse(); Optional<List<Staff>> findAllByDeletedFalse();


Optional<List<Staff>> findAllByIdInAndDeletedFalse(List<Long> id);

Optional<Staff> findIdAndNameByUserIdAndDeletedFalse(Long id); Optional<Staff> findIdAndNameByUserIdAndDeletedFalse(Long id);


} }

+ 1
- 1
src/main/java/com/ffii/tsms/modules/data/entity/SubsidiaryRepository.java Bestand weergeven

@@ -8,7 +8,7 @@ import java.util.List;
import java.util.Optional; import java.util.Optional;


public interface SubsidiaryRepository extends AbstractRepository<Subsidiary, Long> { public interface SubsidiaryRepository extends AbstractRepository<Subsidiary, Long> {
List<Subsidiary> findAllByDeletedFalse();
List<Subsidiary> findAllByDeletedFalseOrderByNameAsc();


List<Subsidiary> findAllByDeletedFalseAndIdIn(List<Long> id); List<Subsidiary> findAllByDeletedFalseAndIdIn(List<Long> id);




+ 1
- 1
src/main/java/com/ffii/tsms/modules/data/service/CustomerService.kt Bestand weergeven

@@ -23,7 +23,7 @@ open class CustomerService(
) : AbstractBaseEntityService<Customer, Long, CustomerRepository>(jdbcDao, customerRepository){ ) : AbstractBaseEntityService<Customer, Long, CustomerRepository>(jdbcDao, customerRepository){


open fun allCustomers(): List<Customer> { open fun allCustomers(): List<Customer> {
return customerRepository.findAllByDeletedFalse()
return customerRepository.findAllByDeletedFalseOrderByNameAsc()
} }


open fun allCustomerTypes(): List<CustomerType> { open fun allCustomerTypes(): List<CustomerType> {


+ 6
- 1
src/main/java/com/ffii/tsms/modules/data/service/StaffsService.kt Bestand weergeven

@@ -97,8 +97,13 @@ open class StaffsService(
} }


open fun findAll(): Optional<List<Staff>> { open fun findAll(): Optional<List<Staff>> {
return staffRepository.findAllByDeletedFalse()
return staffRepository.findAllByDeletedFalse();
} }

open fun findAllByIdIn(ids: List<Long>): Optional<List<Staff>> {
return staffRepository.findAllByIdInAndDeletedFalse(ids);
}

open fun getStaff(args: Map<String, Any>): Optional<MutableMap<String, Any>>? { open fun getStaff(args: Map<String, Any>): Optional<MutableMap<String, Any>>? {
val sql = StringBuilder("select" val sql = StringBuilder("select"
+ " s.id as id," + " s.id as id,"


+ 1
- 1
src/main/java/com/ffii/tsms/modules/data/service/SubsidiaryService.kt Bestand weergeven

@@ -23,7 +23,7 @@ open class SubsidiaryService(
private val subsidiaryContactService: SubsidiaryContactService, private val subsidiaryContactService: SubsidiaryContactService,
) : AbstractBaseEntityService<Subsidiary, Long, SubsidiaryRepository>(jdbcDao, subsidiaryRepository) { ) : AbstractBaseEntityService<Subsidiary, Long, SubsidiaryRepository>(jdbcDao, subsidiaryRepository) {
open fun allSubsidiaries(): List<Subsidiary> { open fun allSubsidiaries(): List<Subsidiary> {
return subsidiaryRepository.findAllByDeletedFalse()
return subsidiaryRepository.findAllByDeletedFalseOrderByNameAsc()
} }


open fun allSubsidiaryTypes(): List<SubsidiaryType> { open fun allSubsidiaryTypes(): List<SubsidiaryType> {


+ 26
- 18
src/main/java/com/ffii/tsms/modules/timesheet/service/TimesheetsService.kt Bestand weergeven

@@ -129,29 +129,37 @@ open class TimesheetsService(


open fun getTeamMemberTimesheet(): Map<Long, TeamMemberTimeEntries> { open fun getTeamMemberTimesheet(): Map<Long, TeamMemberTimeEntries> {
val authorities = staffsService.currentAuthorities() ?: return emptyMap() val authorities = staffsService.currentAuthorities() ?: return emptyMap()

if (authorities.stream().anyMatch { it.authority.equals("MAINTAIN_TIMESHEET") }) { if (authorities.stream().anyMatch { it.authority.equals("MAINTAIN_TIMESHEET") }) {
val currentStaff = staffsService.currentStaff() val currentStaff = staffsService.currentStaff()
// Get team where current staff is team lead

val myTeam = if (currentStaff != null) teamService.getMyTeamForStaff(currentStaff) else null
val teamMembers = if (myTeam != null) {
staffsService.findAllByTeamId(myTeam.id!!).getOrDefault(emptyList())
} else {
staffsService.findAll().getOrDefault(emptyList())
}
if (currentStaff != null) {
val isTeamLead = currentStaff.team.staff.id?.equals(currentStaff.id)
// Get team where current staff is team lead

val myTeam = teamService.getMyTeamForStaff(currentStaff)
val teamMembers = if (myTeam != null && isTeamLead == true) {
staffsService.findAllByTeamId(myTeam.id!!).getOrDefault(emptyList())
} else if (isTeamLead != true) {
staffsService.findAllByIdIn(listOf(currentStaff.id!!)).getOrDefault(emptyList())
} else {
staffsService.findAll().getOrDefault(emptyList())
}


return teamMembers.filter { it.departDate == null }.associate { member ->
Pair(
member.id!!,
TeamMemberTimeEntries(
staffId = member.staffId,
name = member.name,
timeEntries = transformToTimeEntryMap(timesheetRepository.findAllByStaff(member)),
employType = member.employType
return teamMembers.filter { it.departDate == null || it.departDate > LocalDate.now() }.sortedBy { it.staffId }.associate { member ->
Pair(
member.id!!,
TeamMemberTimeEntries(
staffId = member.staffId,
name = member.name,
timeEntries = transformToTimeEntryMap(timesheetRepository.findAllByStaff(member)),
employType = member.employType
)
) )
)
}
} }
} else return emptyMap()
}

return emptyMap()
} }


private fun transformToTimeEntryMap(timesheets: List<Timesheet>): Map<String, List<TimeEntry>> { private fun transformToTimeEntryMap(timesheets: List<Timesheet>): Map<String, List<TimeEntry>> {


Laden…
Annuleren
Opslaan