Inhalt

Aktueller Ordner: duesseldorfer-schuelerinventar-xcode
⬅ Übergeordnet

Profile.cs

using System.Text.Json.Serialization;

namespace DüsseldorferSchülerinventar.Models
{
    public class Profile
    {
        [JsonPropertyName("id")]
        public int Id { get; set; }

        [JsonPropertyName("user_id")]
        public int UserId { get; set; }

        [JsonPropertyName("name")]
        public string Name { get; set; }

        [JsonPropertyName("created_at")]
        public DateTime CreatedAt { get; set; }

        [JsonPropertyName("completed_at")]
        public DateTime? CompletedAt { get; set; }

        [JsonIgnore]
        public int[] Answers { get; set; } = new int[36];

        [JsonIgnore]
        public int[] CompetenceScores { get; private set; } = new int[6];

        public void CalculateScores(double[][] normTable)
        {
            // Arbeitsverhalten (Items 1-10)
            CompetenceScores[0] = CalculateCompetenceScore(new[] {0,1,2,3,4,5,6,7,8,9}, normTable[0]);
            
            // Lernverhalten (Items 11-20)
            CompetenceScores[1] = CalculateCompetenceScore(new[] {10,11,12,13,14,15,16,17,18,19}, normTable[1]);
            
            // Sozialverhalten (Items 21-28 + 8,9)
            CompetenceScores[2] = CalculateCompetenceScore(new[] {20,21,22,23,24,25,26,27,8,9}, normTable[2]);
            
            // Fachkompetenz (Items 29-36)
            CompetenceScores[3] = CalculateCompetenceScore(new[] {28,29,30,31,32,33,34,35}, normTable[3]);
            
            // Personale Kompetenz
            CompetenceScores[4] = CalculateCompetenceScore(new[] {0,1,5,6,7,8,9,10,11,13,14}, normTable[4]);
            
            // Methodenkompetenz
            CompetenceScores[5] = CalculateCompetenceScore(new[] {2,3,4,8,9,10,16,17}, normTable[5]);
        }

        private int CalculateCompetenceScore(int[] itemIndices, double[] normValues)
        {
            int sum = itemIndices.Sum(i => Answers[i]);
            
            for (int i = 0; i < normValues.Length; i++)
            {
                if (sum < normValues[i])
                    return i + 1; // 1-5 Skala
            }
            return normValues.Length;
        }
    }
}