public async Task <IActionResult> UpdateAsync(UpdateApartmentModel apartmentViewModel)
        {
            if (ModelState.IsValid == false)
            {
                return(View());
            }

            var apartment = apartmentViewModel.Apartment;

            if (apartment.Id != 0)
            {
                var apartmentDbo = _context.Apartments.FirstOrDefault(a => a.Id == apartment.Id);

                apartmentDbo.Name           = apartment.Name;
                apartmentDbo.Price          = apartment.Price;
                apartmentDbo.NumBeds        = apartment.NumBeds;
                apartmentDbo.NumRooms       = apartment.NumRooms;
                apartmentDbo.NumStars       = apartment.NumStars;
                apartmentDbo.Balcony        = apartment.Balcony;
                apartmentDbo.AirConditioner = apartment.AirConditioner;
                apartmentDbo.CategoryId     = apartment.CategoryId;
                apartmentDbo.OwnerId        = _userManager.GetUserId(User);
                apartmentDbo.Address        = apartment.Address;
                apartmentDbo.CityBlockId    = apartment.CityBlockId;
            }

            else
            {
                apartment.OwnerId = _userManager.GetUserId(User);

                await _context.AddAsync(apartment);

                await _context.SaveChangesAsync();
            }

            if (apartmentViewModel.ImageFiles != null)
            {
                var images = new List <Image>();
                foreach (var fileImage in apartmentViewModel.ImageFiles)
                {
                    var image = new Image();
                    image.ApartmentId = apartment.Id;
                    image.ImageName   = UploadedFile(fileImage);
                    images.Add(image);
                }
                await _context.AddRangeAsync(images);
            }

            await _context.SaveChangesAsync();


            return(RedirectToAction("Index"));
        }
        public IActionResult DeleteImages(UpdateApartmentModel apartmentViewModel)
        {
            var categories = _context.ApartmentCategories.ToList();
            var cityBlocks = _context.CityBlocks.ToList();

            var apartment = _context.Apartments.FirstOrDefault(a => a.Id == apartmentViewModel.Apartment.Id);
            var imagesDbo = _context.Images.Where(i => i.ApartmentId == apartment.Id).ToList();

            foreach (var image in imagesDbo)
            {
                System.IO.File.Delete("./wwwroot/ApartmentImages/" + image.ImageName);
            }
            _context.RemoveRange(imagesDbo);

            _context.SaveChanges();

            return(RedirectToAction("Edit", new { Id = apartment.Id }));
        }
        public IActionResult Edit(int Id)
        {
            var categories = _context.ApartmentCategories.ToList();
            var cityBlocks = _context.CityBlocks.ToList();

            var apartment = _context.Apartments.FirstOrDefault(a => a.Id == Id);

            apartment.Images = _context.Images.Where(i => i.ApartmentId == Id).ToList();

            var viewModel = new UpdateApartmentModel
            {
                Apartment  = apartment,
                Categories = categories,
                CityBlocks = cityBlocks,
                Title      = "Edit"
            };

            return(View("MyApartmentForm", viewModel));
        }
        public IActionResult New()
        {
            var categories = _context.ApartmentCategories.ToList();
            var cityBlocks = _context.CityBlocks.ToList();

            var apartment = new Apartment();

            apartment.Images = new List <Image>();

            var viewModel = new UpdateApartmentModel
            {
                Apartment  = apartment,
                Categories = categories,
                CityBlocks = cityBlocks,
                Title      = "New"
            };

            return(View("MyApartmentForm", viewModel));
        }