This commit is contained in:
+104
-10
@@ -251,6 +251,12 @@ func (l *Loader) FindProject(ctx context.Context, id string) (*models.ProjectRes
|
||||
UserID: auth.UserID(ctx),
|
||||
TaskIDs: taskIDs,
|
||||
})
|
||||
for _, log := range logs {
|
||||
if log.SecondaryItemID == nil {
|
||||
itemIDs.Add(*log.SecondaryItemID)
|
||||
}
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -265,12 +271,26 @@ func (l *Loader) FindProject(ctx context.Context, id string) (*models.ProjectRes
|
||||
result.Tasks = make([]*models.TaskResult, len(tasks))
|
||||
for i, task := range tasks {
|
||||
result.Tasks[i] = &models.TaskResult{
|
||||
Logs: []*models.Log{},
|
||||
Logs: []*models.LogWithSecondaryItem{},
|
||||
}
|
||||
result.Tasks[i].Task = *task
|
||||
for _, log := range logs {
|
||||
if log.TaskID == task.ID {
|
||||
result.Tasks[i].Logs = append(result.Tasks[i].Logs, log)
|
||||
log := models.LogWithSecondaryItem{
|
||||
Log: *log,
|
||||
SecondaryItem: nil,
|
||||
}
|
||||
|
||||
if log.SecondaryItemID != nil {
|
||||
for _, item := range items {
|
||||
if item.ID == *log.SecondaryItemID {
|
||||
log.SecondaryItem = item
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
result.Tasks[i].Logs = append(result.Tasks[i].Logs, &log)
|
||||
}
|
||||
}
|
||||
for _, item := range items {
|
||||
@@ -280,6 +300,10 @@ func (l *Loader) FindProject(ctx context.Context, id string) (*models.ProjectRes
|
||||
}
|
||||
}
|
||||
for _, log := range result.Tasks[i].Logs {
|
||||
if project.StartTime != nil && log.LoggedTime.Before(*project.StartTime) {
|
||||
continue
|
||||
}
|
||||
|
||||
result.Tasks[i].CompletedAmount += log.Amount(result.Tasks[i].ItemID)
|
||||
}
|
||||
}
|
||||
@@ -319,6 +343,11 @@ func (l *Loader) ListProjects(ctx context.Context, filter models.ProjectFilter)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
for _, log := range logs {
|
||||
if log.SecondaryItemID != nil {
|
||||
itemIDs.Add(*log.SecondaryItemID)
|
||||
}
|
||||
}
|
||||
|
||||
items, err := l.DB.Items().List(ctx, models.ItemFilter{
|
||||
UserID: auth.UserID(ctx),
|
||||
@@ -350,11 +379,25 @@ func (l *Loader) ListProjects(ctx context.Context, filter models.ProjectFilter)
|
||||
|
||||
taskResult := &models.TaskResult{
|
||||
Task: *task,
|
||||
Logs: []*models.Log{},
|
||||
Logs: []*models.LogWithSecondaryItem{},
|
||||
}
|
||||
for _, log := range logs {
|
||||
if log.TaskID == task.ID {
|
||||
taskResult.Logs = append(taskResult.Logs, log)
|
||||
log := models.LogWithSecondaryItem{
|
||||
Log: *log,
|
||||
SecondaryItem: nil,
|
||||
}
|
||||
|
||||
if log.SecondaryItemID != nil {
|
||||
for _, item := range items {
|
||||
if item.ID == *log.SecondaryItemID {
|
||||
log.SecondaryItem = item
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
taskResult.Logs = append(taskResult.Logs, &log)
|
||||
}
|
||||
}
|
||||
for _, item := range items {
|
||||
@@ -364,6 +407,10 @@ func (l *Loader) ListProjects(ctx context.Context, filter models.ProjectFilter)
|
||||
}
|
||||
}
|
||||
for _, log := range taskResult.Logs {
|
||||
if project.StartTime != nil && log.LoggedTime.Before(*project.StartTime) {
|
||||
continue
|
||||
}
|
||||
|
||||
taskResult.CompletedAmount += log.Amount(taskResult.ItemID)
|
||||
}
|
||||
results[i].Tasks = append(results[i].Tasks, taskResult)
|
||||
@@ -468,7 +515,7 @@ func (l *Loader) FindTask(ctx context.Context, id string) (*models.TaskResult, e
|
||||
|
||||
result.Item, _ = l.DB.Items().Find(ctx, task.ItemID)
|
||||
result.Project, _ = l.DB.Projects().Find(ctx, task.ProjectID)
|
||||
result.Logs, err = l.DB.Logs().List(ctx, models.LogFilter{
|
||||
logs, err := l.DB.Logs().List(ctx, models.LogFilter{
|
||||
UserID: task.UserID,
|
||||
TaskIDs: []string{task.ID},
|
||||
})
|
||||
@@ -476,8 +523,34 @@ func (l *Loader) FindTask(ctx context.Context, id string) (*models.TaskResult, e
|
||||
return nil, err
|
||||
}
|
||||
|
||||
for _, log := range result.Logs {
|
||||
itemIds := stringset.New()
|
||||
for _, log := range logs {
|
||||
if log.SecondaryItemID != nil {
|
||||
itemIds.Add(*log.SecondaryItemID)
|
||||
}
|
||||
}
|
||||
items, err := l.DB.Items().List(ctx, models.ItemFilter{
|
||||
UserID: task.UserID,
|
||||
IDs: itemIds.Strings(),
|
||||
})
|
||||
|
||||
for _, log := range logs {
|
||||
result.CompletedAmount += log.Amount(result.ItemID)
|
||||
log := models.LogWithSecondaryItem{
|
||||
Log: *log,
|
||||
SecondaryItem: nil,
|
||||
}
|
||||
|
||||
if log.SecondaryItemID != nil {
|
||||
for _, item := range items {
|
||||
if item.ID == *log.SecondaryItemID {
|
||||
log.SecondaryItem = item
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
result.Logs = append(result.Logs, &log)
|
||||
}
|
||||
|
||||
return result, nil
|
||||
@@ -509,7 +582,11 @@ func (l *Loader) ListTasks(ctx context.Context, filter models.TaskFilter) ([]*mo
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
for _, log := range logs {
|
||||
if log.SecondaryItemID != nil {
|
||||
itemIDs.Add(*log.SecondaryItemID)
|
||||
}
|
||||
}
|
||||
items, err := l.DB.Items().List(ctx, models.ItemFilter{
|
||||
UserID: auth.UserID(ctx),
|
||||
IDs: itemIDs.Strings(),
|
||||
@@ -530,13 +607,30 @@ func (l *Loader) ListTasks(ctx context.Context, filter models.TaskFilter) ([]*mo
|
||||
for _, task := range tasks {
|
||||
result := &models.TaskResult{
|
||||
Task: *task,
|
||||
Logs: []*models.Log{},
|
||||
Logs: []*models.LogWithSecondaryItem{},
|
||||
}
|
||||
|
||||
for _, log := range logs {
|
||||
if log.TaskID == task.ID {
|
||||
result.Logs = append(result.Logs, log)
|
||||
if log.TaskID != task.ID {
|
||||
continue
|
||||
}
|
||||
|
||||
result.CompletedAmount += log.Amount(result.ItemID)
|
||||
log := models.LogWithSecondaryItem{
|
||||
Log: *log,
|
||||
SecondaryItem: nil,
|
||||
}
|
||||
|
||||
if log.SecondaryItemID != nil {
|
||||
for _, item := range items {
|
||||
if item.ID == *log.SecondaryItemID {
|
||||
log.SecondaryItem = item
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
result.Logs = append(result.Logs, &log)
|
||||
}
|
||||
|
||||
for _, item := range items {
|
||||
|
||||
Reference in New Issue
Block a user