Statistiques
| Branche: | Révision:

root / GES_PAC / Model / Serie.cs @ 4e39035b

Historique | Voir | Annoter | Télécharger (3,311 ko)

1

    
2
using System.Collections.ObjectModel;
3

    
4
namespace GES_PAC.Model
5
{
6
    public class Serie
7
    {
8
        #region Propriétés
9
        public long Id { get; set; }
10
        public DateTime Time { get; set; }
11
        public DateTime MiseAJeun { get; set; }
12
        public double Temperature { get; set; }
13
        public double Humidite { get; set; }
14
        public double Pression { get; set; }
15
        public List<SerieAnimal> SeriesAnimales { get; set; } = [];
16
        #endregion
17

    
18
        #region Constructeurs
19
        public Serie(DateTime Time, DateTime MiseAJeun, double Temperature, double Humidite, double Pression)
20
        {
21
            this.Time = Time;
22
            this.MiseAJeun = MiseAJeun;
23
            this.Temperature = Temperature;
24
            this.Humidite = Humidite;
25
            this.Pression = Pression;
26
            SeriesAnimales = [];
27
        }
28
        #endregion
29

    
30
        #region Méthodes
31
        public void AddSerieAnimal(SerieAnimal serieAnimal)
32
        {
33
            var existing = SeriesAnimales.FirstOrDefault(s => s.NumeroBoite == serieAnimal.NumeroBoite);
34
            if (existing != null)
35
                SeriesAnimales.Remove(existing);
36
            SeriesAnimales.Add(serieAnimal);
37
        }
38

    
39
        public int GetMeasureNumberByNumeroBoite(int nb)
40
        {
41
            var sa = SeriesAnimales.FirstOrDefault(sa => sa.NumeroBoite == nb);
42
            if (sa == null)
43
                return 0;
44
            return sa.GetMeasureCount();
45
        }
46

    
47
        public bool GetHasBehaviourByNumeroBoite(int nb)
48
        {
49
            var sa = SeriesAnimales.FirstOrDefault(sa => sa.NumeroBoite == nb);
50
            if (sa == null)
51
                return false;
52
            return sa.HasBehaviour();
53
        }
54
        public bool GetIsInByNumeroBoite(int numeroBoite)
55
        {
56
            var serieAnimal = SeriesAnimales.FirstOrDefault(sa => sa.NumeroBoite == numeroBoite);
57
            if (serieAnimal == null || !serieAnimal.Mesures.Any())
58
                return true;
59
            return !serieAnimal?.IsOut ?? true;
60
        }
61

    
62
        public Mesure? GetLastMeasureByNumeroBoite(int numeroBoite)
63
        {
64
            var serieAnimal = SeriesAnimales.FirstOrDefault(sa => sa.NumeroBoite == numeroBoite);
65
            if (serieAnimal == null || !serieAnimal.Mesures.Any())
66
                return null;
67
            return serieAnimal.GetLastMeasure();
68
        }
69

    
70
        internal void AddMeasure(Mesure newMeasure, int numBoite, bool isAnimalOut)
71
        {
72
            var sa = SeriesAnimales.Select(sa => sa).Where(sa => sa.NumeroBoite == numBoite).First();
73
            sa.AddMeasure(newMeasure);
74
            if (isAnimalOut)
75
                sa.IsOut = true;
76
        }
77

    
78
        internal void AddBehaviour(Comportement newBehaviour, int numBoite, bool isAnimalOut)
79
        {
80
            var sa = SeriesAnimales.Select(sa => sa).Where(sa => sa.NumeroBoite == numBoite).First();
81
            sa.AddBehaviour(newBehaviour);
82
            if (isAnimalOut)
83
                sa.IsOut = true;
84
        }
85

    
86
        public int GetAnimalCount()
87
        {
88
            return SeriesAnimales.Count();
89
        }
90
        public int GetMeasureCount()
91
        {
92
            return SeriesAnimales.Sum(sa => sa.GetMeasureCount());
93
        }
94
        public int GetBehaviourCount()
95
        {
96
            return SeriesAnimales.Sum(sa => sa.Comportements.Count());
97
        }
98
        #endregion
99
    }
100
}