Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions src/Infrastructure/Arbetsmiljo/Incident.cs
Original file line number Diff line number Diff line change
Expand Up @@ -48,4 +48,34 @@ public static Incident Skapa(
CreatedAt = DateTime.UtcNow
};
}

/// <summary>
/// Nästa status i incidentens livscykel
/// (Rapporterad → Under utredning → Åtgärd vidtagen → Avslutad),
/// eller null om ärendet redan är avslutat.
/// </summary>
public IncidentStatus? NastaStatus => Status switch
{
IncidentStatus.Rapporterad => IncidentStatus.UnderUtredning,
IncidentStatus.UnderUtredning => IncidentStatus.AtgardVidtagen,
IncidentStatus.AtgardVidtagen => IncidentStatus.Avslutad,
_ => null
};

/// <summary>
/// Flyttar incidenten ett steg framåt i livscykeln. Ett avslutat ärende
/// påverkas inte (använd <see cref="Ateroppna"/> för att öppna igen).
/// </summary>
public void FlyttaFram()
{
if (NastaStatus is { } nasta)
Status = nasta;
}

/// <summary>Återöppnar ett avslutat ärende för fortsatt utredning.</summary>
public void Ateroppna()
{
if (Status == IncidentStatus.Avslutad)
Status = IncidentStatus.UnderUtredning;
}
}
21 changes: 21 additions & 0 deletions src/Infrastructure/Arbetsmiljo/RiskAssessment.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,4 +51,25 @@ public static RiskAssessment Skapa(
CreatedAt = DateTime.UtcNow
};
}

/// <summary>
/// Nästa status i riskbedömningens livscykel
/// (Identifierad → Under behandling → Åtgärdad), eller null om redan åtgärdad.
/// </summary>
public RiskStatus? NastaStatus => Status switch
{
RiskStatus.Identifierad => RiskStatus.UnderBehandling,
RiskStatus.UnderBehandling => RiskStatus.Atgardad,
_ => null
};

/// <summary>Flyttar riskbedömningen ett steg framåt i åtgärdskedjan.</summary>
public void FlyttaFram()
{
if (NastaStatus is { } nasta)
Status = nasta;
}

/// <summary>Sätter eller uppdaterar deadline för åtgärden.</summary>
public void SattDeadline(DateOnly? deadline) => Deadline = deadline;
}
19 changes: 19 additions & 0 deletions src/Infrastructure/Arbetsmiljo/SafetyRound.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,4 +39,23 @@ public static SafetyRound Skapa(
CreatedAt = DateTime.UtcNow
};
}

/// <summary>
/// Registrerar att ronden genomförts. Antalet upptäckta brister och
/// eventuella anteckningar sparas och status sätts till Genomförd.
/// </summary>
public void Genomfor(int antalBrister, string? anteckningar = null)
{
if (antalBrister < 0)
throw new ArgumentOutOfRangeException(nameof(antalBrister), "Antal brister kan inte vara negativt.");
AntalBrister = antalBrister;
Anteckningar = anteckningar;
Status = SafetyRoundStatus.Genomford;
}

/// <summary>Stänger ronden när alla brister åtgärdats.</summary>
public void Avsluta()
{
Status = SafetyRoundStatus.Avslutad;
}
}
Loading
Loading