47 lines
1.4 KiB
Go
47 lines
1.4 KiB
Go
package db
|
|
|
|
import (
|
|
"fmt"
|
|
"gestion/models"
|
|
"log"
|
|
)
|
|
|
|
func (d *Database) GetDeliveryIssues(status string) ([]models.DeliveryIssue, error) {
|
|
q := d.GDB.Order("created_at DESC")
|
|
if status != "" {
|
|
q = q.Where("status = ?", status)
|
|
}
|
|
var issues []models.DeliveryIssue
|
|
if err := q.Find(&issues).Error; err != nil {
|
|
return nil, fmt.Errorf("erreur récupération problèmes: %w", err)
|
|
}
|
|
return issues, nil
|
|
}
|
|
|
|
func (d *Database) CreateDeliveryIssue(commandID int, issueType, description, reportedBy string) (*models.DeliveryIssue, error) {
|
|
issue := models.DeliveryIssue{
|
|
CommandID: commandID,
|
|
IssueType: issueType,
|
|
Description: description,
|
|
Status: "open",
|
|
ReportedBy: reportedBy,
|
|
}
|
|
if err := d.GDB.Create(&issue).Error; err != nil {
|
|
return nil, fmt.Errorf("erreur création problème: %w", err)
|
|
}
|
|
return &issue, nil
|
|
}
|
|
|
|
func (d *Database) UpdateDeliveryIssue(issueID int, status, resolution, resolvedBy string) error {
|
|
result := d.GDB.Model(&models.DeliveryIssue{}).Where("id = ?", issueID).
|
|
Updates(map[string]any{"status": status, "resolution": resolution, "resolved_by": resolvedBy})
|
|
if result.Error != nil {
|
|
return fmt.Errorf("erreur mise à jour problème: %w", result.Error)
|
|
}
|
|
if result.RowsAffected == 0 {
|
|
return fmt.Errorf("problème non trouvé")
|
|
}
|
|
log.Printf("✅ Problème %d mis à jour: status=%s", issueID, status)
|
|
return nil
|
|
}
|