public async Task <ActionResult> Edit(ApartmentModel apartment)
        {
            if (!ModelState.IsValid)
            {
                return(View(apartment));
            }

            var databaseApartment = _apartmentService.GetById(apartment.Id);

            if (databaseApartment == null)
            {
                return(StatusCode(404));
            }

            databaseApartment.AddToHistory(apartment.FirstName, apartment.LastName, apartment.NoOfPersons);
            var apartmentForDatabase = apartment.MapToDatabase();

            apartmentForDatabase.FirstName   = databaseApartment.FirstName;
            apartmentForDatabase.LastName    = databaseApartment.LastName;
            apartmentForDatabase.NoOfPersons = databaseApartment.NoOfPersons;
            await _apartmentService.UpdateAsync(apartmentForDatabase);

            var building = _buildingService.GetByOwnerAndId(User.FindFirstValue(ClaimTypes.NameIdentifier), apartment.BuildingId);

            TempData["SelectedBuilding"] = building.Id;
            return(RedirectToAction(nameof(List)));
        }
        public async Task <ActionResult> Add(ApartmentModel apartment)
        {
            if (!ModelState.IsValid)
            {
                return(View(apartment));
            }
            var databaseApartment = apartment.MapToDatabase();
            var building          = _buildingService.GetByOwnerAndId(User.FindFirstValue(ClaimTypes.NameIdentifier), apartment.BuildingId);

            databaseApartment.Id = Guid.NewGuid();
            databaseApartment.AddHistoryNewItems(apartment.FirstName, apartment.LastName, apartment.NoOfPersons);
            databaseApartment.Number = building.Apartments.Count + 1;
            await _apartmentService.SaveAsync(databaseApartment);

            building.Apartments.Add(databaseApartment.Id);
            await _buildingService.UpdateAsync(building);

            TempData["SelectedBuilding"] = building.Id;
            return(RedirectToAction(nameof(List)));
        }