コード例 #1
0
        public async Task Handle(CaisseEtatEvent @event)
        {
            // On recherche si la caisse existe.
            CaisseItem caisseItem = _caisseService.RechercherCaisseUniqueAvecNumero(@event.numero).Result;

            // La caisse n'existe pas : on la creer.
            if (caisseItem == null)
            {
                caisseItem = new CaisseItem()
                {
                    Numero = @event.numero
                };
                _caisseService.AjouterCaisse(caisseItem);
            }

            // Mise à jour de l'état de la caisse suivant le cas.
            if (@event.etatCaisseCourant == "Ouverte")
            {
                long lgTicks = long.Parse(@event.dateEvenement);
                CaisseSessionItem caisseSessionItem = new CaisseSessionItem()
                {
                    DateOuverture = new DateTime(lgTicks)
                };
                caisseItem.Sessions.Add(caisseSessionItem);
            }
            if (@event.etatCaisseCourant == "DernierClient")
            {
                long lgTicks = long.Parse(@event.dateEvenement);
                CaisseSessionItem caisseSessionItem = caisseItem.Sessions
                                                      .Where(x => x.DateFermeture == DateTime.MinValue)
                                                      .SingleOrDefault();
                caisseSessionItem.DateDernierClient = new DateTime(lgTicks);
            }
            if (@event.etatCaisseCourant == "Ferme")
            {
                long lgTicks = long.Parse(@event.dateEvenement);
                CaisseSessionItem caisseSessionItem = caisseItem.Sessions
                                                      .Where(x => x.DateFermeture == DateTime.MinValue)
                                                      .SingleOrDefault();
                caisseSessionItem.DateFermeture = new DateTime(lgTicks);
            }

            // Sauvegarde.
            await _caisseService.MajCaisse(caisseItem);
        }