public List <Raum> GetRaeumeByBesuch(Besuch besuch) { return(_databaseContext.BesuchRaum .Where(x => x.BesuchId == besuch.Id) .Select(x => x.Raum) .ToList()); }
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();
public void Create(Besuch besuch) => _databaseContext.Add(besuch);
public void Update(Besuch besuch) => _databaseContext.Update(besuch);