public ICollection <EstateImage> ProcessImageFileData(ICollection <IFormFile> images) { var processedImages = new List <EstateImage>(); foreach (var uploadedImage in images) { using (MemoryStream ms = new MemoryStream()) { uploadedImage.OpenReadStream().CopyTo(ms); Image image = Image.FromStream(ms); EstateImage imageEntity = new EstateImage { Name = uploadedImage.Name, Data = ms.ToArray(), Width = image.Width, Height = image.Height, ContentType = uploadedImage.ContentType }; processedImages.Add(imageEntity); } } return(processedImages); }
public async Task <IActionResult> Create([Bind("EstateId,EstateTypeId,SubEstateType,Region,StatusId,CityId,Price,CreateDuration,Area,BedRooms,BathRooms,Floors,Address,ShortDescription,Description,Tags,Facilities")] Estate estate, IEnumerable <IFormFile> images) { var userId = _userService.GetUserIdByUserName(User.Identity.Name); estate.UserId = userId; estate.IsDeleted = false; estate.CreateDate = DateTime.Now; if (ModelState.IsValid) { _context.Add(estate); await _context.SaveChangesAsync(); if (images.Any()) { foreach (var files in images) { var fileName = Path.GetFileName(files.FileName); var filePath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot\\EstateImages", fileName); await using (var fileSteam = new FileStream(filePath, FileMode.Create)) { await files.CopyToAsync(fileSteam); } EstateImage estateImage = new EstateImage() { EstateId = estate.EstateId, Image = fileName }; await _context.EstateImages.AddAsync(estateImage); } } await _context.SaveChangesAsync(); return(RedirectToAction("Index")); } ViewData["CityId"] = new SelectList(_context.Cities, "CityId", "CityName", estate.CityId); ViewData["EstateTypeId"] = new SelectList(_context.EstateTypes, "EstateTypeId", "Type", estate.EstateTypeId); // ViewData["SubCities"] = new SelectList(_context.EstateTypes, "EstateTypeId", "Type", estate.EstateTypeId); // ViewData["EstateTypeId"] = new SelectList(_context.EstateTypes, "EstateTypeId", "Type", estate.EstateTypeId); return(View(estate)); }
public async Task <IActionResult> Edit(int id, [Bind("EstateId,EstateTypeId,SubEstateType,Region,StatusId,CityId,Price,CreateDuration,Area,BedRooms,BathRooms,Floors,Address,ShortDescription,Description,Tags,Facilities")] Estate estate, IEnumerable <IFormFile> images) { int userId = _userService.GetUserIdByUserName(User.Identity.Name); var pics = _context.EstateImages .Where(e => e.EstateId == estate.EstateId) .ToList(); estate.UserId = userId; estate.CreateDate = DateTime.Now; estate.IsDeleted = false; if (id != estate.EstateId) { return(NotFound()); } if (ModelState.IsValid) { if (!images.Any()) { estate.EstateImages = pics; } if (images.Any()) { string imagePath = ""; foreach (var names in pics) { imagePath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot\\EstateImages", names.Image); if (System.IO.File.Exists(imagePath)) { System.IO.File.Delete(imagePath); _context.EstateImages.Remove(names); } } foreach (var file in images) { if (file.Length > 0) { var fileName = Path.GetFileName(file.FileName); var filePath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot\\EstateImages", fileName); await using (var fileSteam = new FileStream(filePath, FileMode.Create)) { await file.CopyToAsync(fileSteam); } EstateImage estateImage = new EstateImage() { EstateId = id, Image = fileName }; _context.EstateImages.Update(estateImage); await _context.SaveChangesAsync(); } } } try { _context.Update(estate); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!EstateExists(estate.EstateId)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } ViewData["CityId"] = new SelectList(_context.Cities, "CityId", "CityName", estate.CityId); ViewData["EstateTypeId"] = new SelectList(_context.EstateTypes, "EstateTypeId", "Type", estate.EstateTypeId); ViewData["UserId"] = new SelectList(_context.Users, "UserId", "Email", estate.UserId); return(View(estate)); }