using TodoTicketApp.Models; namespace TodoTicketApp.Services; public class InMemoryTicketService : ITicketService { // In-Memory Speicher. In einer echten App wäre das der DbContext. private readonly List _tickets = new(); public void AddTicket(Ticket ticket) { _tickets.Add(ticket); } public IEnumerable GetPendingTickets() { // Hier ist deine Kernlogik: // 1. Höchste Priorität zuerst (OrderByDescending) // 2. Bei gleicher Priorität: Älteste zuerst (ThenBy -> FIFO-Prinzip) return _tickets .Where(t => !t.IsCompleted) .OrderByDescending(t => t.Priority) .ThenBy(t => t.CreatedAt); } public Ticket? GetNextTicket() { // Holt genau das Ticket, das als nächstes bearbeitet werden muss return GetPendingTickets().FirstOrDefault(); } public void CompleteTicket(Guid id) { var ticket = _tickets.FirstOrDefault(t => t.Id == id); if (ticket != null) { ticket.IsCompleted = true; } } public void AddComment(Guid ticketId, TicketComment comment) { var ticket = _tickets.FirstOrDefault(t => t.Id == ticketId); if (ticket != null) { ticket.Comments.Add(comment); } } public Ticket? GetTicketById(Guid id) => _tickets.FirstOrDefault(t => t.Id == id); public void UpdateTicket(Ticket ticket) { var existing = GetTicketById(ticket.Id); if (existing != null) { existing.Title = ticket.Title; existing.Description = ticket.Description; existing.Priority = ticket.Priority; existing.IsCompleted = ticket.IsCompleted; // In-Memory Update passiert hier automatisch durch Referenz, // aber für DB-Logik wäre hier das Markieren als "Modified" nötig. } } }