Statistiques
| Branche: | Révision:

root / GES_PAC / Model / Serie.cs @ 957b1f34

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

1 65ad7e66 Lucas Bihannic
2 9fd69a0e lbihannic
using System.Collections.ObjectModel;
3
4 65ad7e66 Lucas Bihannic
namespace GES_PAC.Model
5
{
6
    public class Serie
7
    {
8 ba296a27 lbihannic
        #region Propriétés
9 65ad7e66 Lucas Bihannic
        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 1019554c lbihannic
        public List<SerieAnimal> SeriesAnimales { get; set; } = [];
16 ba296a27 lbihannic
        #endregion
17 09d4a0de lbihannic
18 ba296a27 lbihannic
        #region Constructeurs
19 09d4a0de lbihannic
        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 ba296a27 lbihannic
        #endregion
29
30
        #region Méthodes
31
        public void AddSerieAnimal(SerieAnimal serieAnimal)
32
        {
33 1019554c lbihannic
            var existing = SeriesAnimales.FirstOrDefault(s => s.NumeroBoite == serieAnimal.NumeroBoite);
34
            if (existing != null)
35
                SeriesAnimales.Remove(existing);
36 ba296a27 lbihannic
            SeriesAnimales.Add(serieAnimal);
37
        }
38 fff89fc5 lbihannic
39 9fd69a0e lbihannic
        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 12ddf7ef lbihannic
        public bool GetIsInByNumeroBoite(int numeroBoite)
55 fff89fc5 lbihannic
        {
56 12ddf7ef lbihannic
            var serieAnimal = SeriesAnimales.FirstOrDefault(sa => sa.NumeroBoite == numeroBoite);
57
            if (serieAnimal == null || !serieAnimal.Mesures.Any())
58
                return true;
59
            return !serieAnimal?.IsOut ?? true;
60 fff89fc5 lbihannic
        }
61
62 1019554c lbihannic
        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 12ddf7ef lbihannic
        internal void AddMeasure(Mesure newMeasure, int numBoite, bool isAnimalOut)
71 fff89fc5 lbihannic
        {
72 12ddf7ef lbihannic
            var sa = SeriesAnimales.Select(sa => sa).Where(sa => sa.NumeroBoite == numBoite).First();
73
            sa.AddMeasure(newMeasure);
74
            if (isAnimalOut)
75
                sa.IsOut = true;
76 fff89fc5 lbihannic
        }
77 9fd69a0e lbihannic
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 4e39035b lbihannic
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 ba296a27 lbihannic
        #endregion
99 65ad7e66 Lucas Bihannic
    }
100
}