mirror of
https://gitlab.com/mbugroup/lti-api.git
synced 2026-05-23 14:55:42 +00:00
add api check uncheck assignment
This commit is contained in:
@@ -29,6 +29,7 @@ type DailyChecklistService interface {
|
||||
AssignTasks(ctx *fiber.Ctx, id uint, req *validation.AssignTask) error
|
||||
RemoveAssignment(ctx *fiber.Ctx, id uint, employeeID uint) error
|
||||
GetTasks(ctx *fiber.Ctx, checklistID uint) ([]entity.DailyChecklistActivityTask, error)
|
||||
UpdateAssignment(ctx *fiber.Ctx, req *validation.UpdateAssignment) error
|
||||
}
|
||||
|
||||
type dailyChecklistService struct {
|
||||
@@ -296,6 +297,42 @@ func (s dailyChecklistService) GetTasks(c *fiber.Ctx, checklistID uint) ([]entit
|
||||
return tasks, nil
|
||||
}
|
||||
|
||||
func (s dailyChecklistService) UpdateAssignment(c *fiber.Ctx, req *validation.UpdateAssignment) error {
|
||||
if err := s.Validate.Struct(req); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
task := new(entity.DailyChecklistActivityTask)
|
||||
if err := s.Repository.DB().WithContext(c.Context()).First(task, req.TaskID).Error; err != nil {
|
||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
return fiber.NewError(fiber.StatusNotFound, "Task not found")
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
if req.EmployeeID == 0 {
|
||||
return fiber.NewError(fiber.StatusBadRequest, "Invalid employee id")
|
||||
}
|
||||
|
||||
updates := map[string]any{"updated_at": time.Now()}
|
||||
if req.Checked != nil {
|
||||
updates["checked"] = *req.Checked
|
||||
}
|
||||
if req.Note != nil {
|
||||
updates["note"] = *req.Note
|
||||
}
|
||||
|
||||
return s.Repository.DB().WithContext(c.Context()).Clauses(clause.OnConflict{
|
||||
Columns: []clause.Column{{Name: "task_id"}, {Name: "employee_id"}},
|
||||
DoUpdates: clause.Assignments(updates),
|
||||
}).Create(&entity.DailyChecklistActivityTaskAssignment{
|
||||
TaskId: req.TaskID,
|
||||
EmployeeId: req.EmployeeID,
|
||||
Checked: req.Checked != nil && *req.Checked,
|
||||
Note: req.Note,
|
||||
}).Error
|
||||
}
|
||||
|
||||
func parsePhaseIDs(raw string) ([]uint, error) {
|
||||
parts := strings.Split(raw, ",")
|
||||
result := make([]uint, 0, len(parts))
|
||||
|
||||
Reference in New Issue
Block a user