Add user and project rate editing across backend and frontend
This commit is contained in:
@@ -2,7 +2,9 @@ package com.example.app.project;
|
||||
|
||||
import com.example.app.project.ProjectDtos.CreateProjectRequest;
|
||||
import com.example.app.project.ProjectDtos.ProjectResponse;
|
||||
import com.example.app.project.ProjectDtos.UpdateProjectRequest;
|
||||
import com.example.app.time.TimeEntryRepository;
|
||||
import jakarta.persistence.EntityNotFoundException;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -53,4 +55,29 @@ public class ProjectService {
|
||||
Project saved = projectRepository.save(p);
|
||||
return ProjectResponse.from(saved, 0, 0);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public ProjectResponse update(Long id, UpdateProjectRequest req) {
|
||||
Project project =
|
||||
projectRepository
|
||||
.findById(id)
|
||||
.orElseThrow(() -> new EntityNotFoundException("Project not found: " + id));
|
||||
project.setName(req.name());
|
||||
project.setTimeBudgetMinutes(req.timeBudgetMinutes());
|
||||
project.setCostBudgetCents(req.costBudgetCents());
|
||||
project.setHourlyRateCents(req.hourlyRateCents());
|
||||
Project saved = projectRepository.save(project);
|
||||
|
||||
long[] totals = new long[] {0, 0};
|
||||
for (Object[] row : timeEntryRepository.aggregateAllByProject()) {
|
||||
long projectId = ((Number) row[0]).longValue();
|
||||
if (projectId == saved.getId()) {
|
||||
totals[0] = ((Number) row[1]).longValue();
|
||||
totals[1] = ((Number) row[2]).longValue();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return ProjectResponse.from(saved, totals[0], totals[1]);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user