public async Task AddResidentToApartment(int apartmentId, int residentId) { var resident = await _unit.ResidentRepository.GetResidentWithApartmentsById(residentId); var apartment = await _unit.ApartmentRepository.GetApartmentWithDataById(apartmentId); resident.AssertIsNotNull(); apartment.AssertIsNotNull(); var apartmentResidentsNumber = apartment.Residents.Select(ar => ar.Resident).Count(); if (apartment.Square / apartmentResidentsNumber < 9) { throw new BusinessException("Apartment square for 1 person should be at least 9 square meters."); } var apartmentResident = new ApartmentResidents { ApartmentId = apartmentId, ResidentId = residentId }; await _unit.ApartmentResidentsRepository.Create(apartmentResident); await _unit.SaveAsync(); }
protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); #region SeedData var apartment1 = new Apartment() { Id = 1, Type = "Serdychka flat", HouseId = 1, Square = 100 }; var resident1 = new Resident() { Id = 1, Name = "Max Snizhok", BirthDate = DateTime.Now.AddYears(-18), //always 18 y.o. with birthday = today }; var apartmentResident1 = new ApartmentResidents() { Id = 1, ApartmentId = 1, ResidentId = 1 }; var apartment2 = new Apartment() { Id = 2, Type = "Nirvana", HouseId = 1, Square = 60 }; var resident2 = new Resident() { Id = 2, Name = "Kurtka Bayne", BirthDate = DateTime.Now.AddYears(-27) }; var apartmentResident2 = new ApartmentResidents() { Id = 2, ApartmentId = 2, ResidentId = 2 }; var country1 = new Country() { Id = 1, Name = "Ukraine" }; var city1 = new City() { Id = 1, Name = "Kyiv", Population = 2000000, CountryId = 1 }; var street1 = new Street() { Id = 1, Name = "Khreshchatyk", CityId = 1 }; var house1 = new House() { Id = 1, Latitude = 50.44, Longitude = 30.52, StreetId = 1 }; modelBuilder.Entity <Apartment>().HasData(apartment1, apartment2); modelBuilder.Entity <ApartmentResidents>().HasData(apartmentResident1, apartmentResident2); modelBuilder.Entity <Resident>().HasData(resident1, resident2); modelBuilder.Entity <City>().HasData(city1); modelBuilder.Entity <Country>().HasData(country1); modelBuilder.Entity <House>().HasData(house1); modelBuilder.Entity <Street>().HasData(street1); #endregion modelBuilder.ApplyConfigurationsFromAssembly(Assembly.GetExecutingAssembly()); }