示例#1
0
 public List <Raum> GetRaeumeByBesuch(Besuch besuch)
 {
     return(_databaseContext.BesuchRaum
            .Where(x => x.BesuchId == besuch.Id)
            .Select(x => x.Raum)
            .ToList());
 }
示例#2
0
 public List <Besucher> GetBesucherByBesuch(Besuch besuch)
 {
     return(_databaseContext.BesuchBesucher
            .Where(x => x.BesuchId == besuch.Id && x.Besucher != null)
            .Include(x => x.Besucher.Person)
            .Select(x => x.Besucher)
            .ToList());
 }
        public BesuchViewModel Create(NeuerBesuchViewModel neuerBesuch)
        {
            Guard.IsNotNull(neuerBesuch, nameof(neuerBesuch));
            Guard.IsNotNull(neuerBesuch.Besucher, nameof(neuerBesuch.Besucher));
            Guard.IsNotNull(neuerBesuch.Raeume, nameof(neuerBesuch.Raeume));

            using (var unit = new UnitOfWork())
            {
                var besucherRepo = unit.GetRepository <BesucherRepository>();
                neuerBesuch.Besucher.ForEach(x =>
                {
                    if (besucherRepo.GetBesucherById(x) == null)
                    {
                        throw new CustomException("Der Besucher wurde nicht gefunden: " + x);
                    }
                });

                var gebaeudeRepo = unit.GetRepository <GebaeudeRepository>();
                neuerBesuch.Raeume.ForEach(x =>
                {
                    if (gebaeudeRepo.GetRaumById(x) == null)
                    {
                        throw new CustomException("Der Raum wurde nicht gefunden: " + x);
                    }
                });


                var besuchRepo = unit.GetRepository <BesuchRepository>();
                var newBesuch  = new Besuch {
                    Startzeit = DateTime.Now
                };
                besuchRepo.Create(newBesuch);
                unit.SaveChanges();

                var besuchBesucher = neuerBesuch.Besucher?.Select(x => new BesuchBesucher {
                    BesuchId = newBesuch.Id, BesucherId = x
                })?.ToList();
                if (besuchBesucher?.Count > 0)
                {
                    besuchRepo.Create(besuchBesucher);
                }

                var besuchRaeume = neuerBesuch.Raeume?.Select(x => new BesuchRaum {
                    BesuchId = newBesuch.Id, RaumId = x
                })?.ToList();
                if (besuchRaeume?.Count > 0)
                {
                    besuchRepo.Create(besuchRaeume);
                }
                unit.SaveChanges();

                Besuch result = besuchRepo.GetById(newBesuch.Id);
                return(GetBesuchViewModelFromBesuch(unit, result));
            }
        }
        public void SetEndzeitpunkt(BesuchEndzeitViewModel besuchEndzeitViewModel)
        {
            using (var unit = new UnitOfWork())
            {
                var    besuchRepo = unit.GetRepository <BesuchRepository>();
                Besuch besuch     = besuchRepo.GetById(besuchEndzeitViewModel.BesuchId);
                if (besuch == null)
                {
                    throw new CustomException("Der Besuch wurde nicht gefunden.");
                }

                if (besuch.Endzeit <= besuch.Startzeit)
                {
                    throw new CustomException("Die Endzeit eines Besuchs darf nicht vor seiner Startzeit liegen.");
                }

                besuch.Endzeit = besuchEndzeitViewModel.Endzeit;

                besuchRepo.Update(besuch);
            }
        }
 private BesuchViewModel GetBesuchViewModelFromBesuch(UnitOfWork unit, Besuch besuch) => GetBesuchViewModelsFromBesuche(unit, new List <Besuch> {
     besuch
 })?.FirstOrDefault();
示例#6
0
 public void Create(Besuch besuch) => _databaseContext.Add(besuch);
示例#7
0
 public void Update(Besuch besuch) => _databaseContext.Update(besuch);