public async Task <IActionResult> DeleteCabinConfirmed(int id) { string webRootPath = _hostingEnvironment.WebRootPath; string imgFolder = @"img\Cabins"; ClassifiedListing cabins = await _db.ClassifiedListings.FindAsync(id); if (cabins == null) { return(NotFound()); } else { var uploads = Path.Combine(webRootPath, imgFolder); var extension = Path.GetExtension(cabins.Image); if (System.IO.File.Exists(Path.Combine(uploads, cabins.ID + extension))) { System.IO.File.Delete(Path.Combine(uploads, cabins.ID + extension)); } _db.ClassifiedListings.Remove(cabins); await _db.SaveChangesAsync(); return(RedirectToAction("Cabins", "Home", new { area = "Public" })); } }
public async Task <IActionResult> OnPostAsync(IList <IFormFile> formFiles) { if (!ModelState.IsValid) { return(Page()); } Owner = _context.Owner .Include(x => x.OwnerContactType) .ThenInclude(x => x.ContactType) .FirstOrDefault(x => x.User.UserID == HttpContext.Session.GetInt32("SessionUserID")); var emptyClassifiedListing = new ClassifiedListing(); if (await TryUpdateModelAsync <ClassifiedListing>( emptyClassifiedListing, "classifiedListing", s => s.ClassifiedListingID, s => s.ClassifiedCategoryID, s => s.ItemName, s => s.Price, s => s.Description, s => s.Phone, s => s.Email).ConfigureAwait(false)) { emptyClassifiedListing.ListingDate = DateTime.Now; emptyClassifiedListing.LastModifiedDate = DateTime.Now; emptyClassifiedListing.LastModifiedBy = Owner.FirstName.Substring(0, 1) + Owner.LastName.Substring(0, 1); emptyClassifiedListing.OwnerID = Owner.OwnerID; if (formFiles != null) { foreach (var file in formFiles) { if (file.ContentType == "image/jpeg" || file.ContentType == "image/jpg" || file.ContentType == "image/png") { emptyClassifiedListing.SetImage(file); } else { ModelState.AddModelError("file", "Invalid file format. Please only enter jpeg or png."); PopulateCategoryDropDownList(_context); Owner = _context.Owner .Include(x => x.OwnerContactType) .ThenInclude(x => x.ContactType) .FirstOrDefault(x => x.User.UserID == HttpContext.Session.GetInt32("SessionUserID")); return(Page()); } } } _context.ClassifiedListing.Add(emptyClassifiedListing); await _context.SaveChangesAsync().ConfigureAwait(false); return(RedirectToPage("./Index")); } PopulateCategoryDropDownList(_context, emptyClassifiedListing.ClassifiedCategoryID); return(Page()); }
public async Task <IActionResult> Create(ClassifiedListing listing) { if (ModelState.IsValid) { var identityUser = await _userManager.GetUserAsync(HttpContext.User); var loggedInUser = await _context.Owner.FindAsync(identityUser.OwnerId); listing.LastModifiedBy = loggedInUser.FullName; listing.LastModifiedDate = DateTime.Now; listing.ListingDate = DateTime.Now; listing.Owner = loggedInUser; listing.OwnerId = loggedInUser.OwnerId; _context.ClassifiedListing.Add(listing); await _context.SaveChangesAsync(); //image uploading string webRootPath = _hostingEnvironment.WebRootPath; var files = HttpContext.Request.Form.Files; var uploads = Path.Combine(webRootPath, @"img\ClassifiedsImages"); int i = 0; foreach (var file in files) { i++; var extension = Path.GetExtension(file.FileName); using (var filestream = new FileStream(Path.Combine(uploads, listing.ClassifiedListingId + @"_" + i + extension), FileMode.Create)) { file.CopyTo(filestream); // moves to server and renames } var image = new ClassifiedImage() { ClassifiedListingId = listing.ClassifiedListingId, IsMainImage = (file == files.First()), ImageExtension = extension, ImageURL = @"\" + @"img\ClassifiedsImages" + @"\" + listing.ClassifiedListingId + @"_" + i + extension }; _context.ClassifiedImage.Add(image); } await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } ViewData["Category"] = new SelectList(_context.ClassifiedCategory.Where(u => u.Description != "Other"), "ClassifiedCategoryId", "Description", listing.ClassifiedCategoryId); return(View(listing)); }
//Deletes classified public async Task <IActionResult> OnPostAsync(int?id) { if (id == null) { return(NotFound()); } ClassifiedListing = await _context.ClassifiedListing.FindAsync(id).ConfigureAwait(false); if (ClassifiedListing != null) { var files = _context.File.Where(x => x.ClassifiedListingID == id); _context.File.RemoveRange(files); _context.ClassifiedListing.Remove(ClassifiedListing); await _context.SaveChangesAsync().ConfigureAwait(false); } return(RedirectToPage("./Index")); }
public async Task <IActionResult> OnGetAsync(int?id) { if (id == null) { return(NotFound()); } ClassifiedListing = await _context.ClassifiedListing .Include(c => c.Owner) .Include(c => c.Files) .Include(c => c.ClassifiedCategory) .FirstOrDefaultAsync(m => m.ClassifiedListingID == id).ConfigureAwait(false); if (ClassifiedListing == null) { return(NotFound()); } return(Page()); }
public async Task <ActionResult> Delete(int id, ClassifiedListing listing) { ClassifiedListing item = await _context.ClassifiedListing.FindAsync(id); string webRootPath = _hostingEnvironment.WebRootPath; var uploads = Path.Combine(webRootPath, @"img\ClassifiedsImages"); var oldImages = await _context.ClassifiedImage.Where(x => x.ClassifiedListingId == item.ClassifiedListingId).ToListAsync(); foreach (var oldImage in oldImages) { if (System.IO.File.Exists(Path.Combine(webRootPath, oldImage.ImageURL.Substring(1)))) { System.IO.File.Delete(Path.Combine(webRootPath, oldImage.ImageURL.Substring(1))); } _context.ClassifiedImage.Remove(oldImage); } item.IsArchive = true; _context.ClassifiedListing.Update(item); //_context.ClassifiedListing.Remove(item); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); }
public async Task <IActionResult> CreateLot() { if (!ModelState.IsValid) { return(RedirectToAction("Lots", "Home", new { area = "Public" })); } // This can fail if you do not ensure that the method requires the user to be logged in in the first place ApplicationUser applicationUser = _db.ApplicationUsers.Include(m => m.Owner) .FirstOrDefault(m => m.Id.Equals(_userManager.GetUserId(HttpContext.User))); // You need to check that applicationUser is actually and owner ClassifiedListing classifiedListing = new ClassifiedListing() { ClassifiedCategory = _db.ClassifiedCategories.FirstOrDefault(m => m.Name == "Lots"), Owner = applicationUser.Owner, Name = ClassifiedVM.Lots.Name, Description = ClassifiedVM.Lots.Description, Price = ClassifiedVM.Lots.Price, Email = ClassifiedVM.Lots.Email, PhoneNumber = ClassifiedVM.Lots.PhoneNumber, ListingDate = DateTime.Now, LastModifiedDate = DateTime.Now }; _db.ClassifiedListings.Add(classifiedListing); await _db.SaveChangesAsync(); string webRootPath = _hostingEnvironment.WebRootPath; var files = HttpContext.Request.Form.Files; Directory.CreateDirectory(Path.Combine(webRootPath, @"img\Lots", classifiedListing.ID.ToString())); string imgFolder = Path.Combine(@"img\Lots", classifiedListing.ID.ToString()); var lotsFromDb = _db.ClassifiedListings.Find(classifiedListing.ID); if (files.Count != 0) { //Image/s have been uploaded with form var uploads = Path.Combine(webRootPath, imgFolder); var extension = Path.GetExtension(files[0].FileName); for (int i = 0; i < files.Count; i++) { var extensions = Path.GetExtension(files[i].FileName); using (var filestream = new FileStream(Path.Combine(uploads, classifiedListing.ID + "." + i + extensions), FileMode.Create)) { files[i].CopyTo(filestream); //moves to server and renames } } //now I know the new image name, so I can save the string image to the database lotsFromDb.Image = @"\" + imgFolder + @"\" + classifiedListing.ID + ".0" + extension; } else { //user didn't give us an image so we'll upload the placeholder var uploads = Path.Combine(webRootPath, imgFolder, @"land-icon-01.svg"); System.IO.File.Copy(uploads, webRootPath + @"\" + imgFolder + @"\" + classifiedListing.ID + ".jpg"); lotsFromDb.Image = @"\" + imgFolder + @"\" + classifiedListing.ID + ".jpg"; } await _db.SaveChangesAsync(); return(RedirectToAction("Lots", "Home", new { area = "Public" })); }
public async Task <IActionResult> OnPostAsync(int id, IList <IFormFile> formFiles) { if (!ModelState.IsValid) { return(Page()); } var classifiedListing = _context.ClassifiedListing.FirstOrDefault(i => i.ClassifiedListingID == id); if (await TryUpdateModelAsync <ClassifiedListing>( classifiedListing, "classifiedListing", s => s.ClassifiedListingID, s => s.ClassifiedCategoryID, s => s.ItemName, s => s.Price, s => s.Description, s => s.Phone, s => s.Email).ConfigureAwait(false)) { classifiedListing.LastModifiedDate = DateTime.Now; classifiedListing.ListingDate = DateTime.Now; var owner = _context.Owner.FirstOrDefault(x => x.User.UserID == HttpContext.Session.GetInt32("SessionUserID")); classifiedListing.LastModifiedBy = owner.FirstName.Substring(0, 1) + owner.LastName.Substring(0, 1); classifiedListing.OwnerID = owner.OwnerID; if (formFiles.Any()) { var files = _context.File.Where(x => x.ClassifiedListingID == id); if (files.Any()) { _context.File.RemoveRange(files); } foreach (var file in formFiles) { if (file.ContentType == "image/jpeg" || file.ContentType == "image/jpg" || file.ContentType == "image/png") { classifiedListing.SetImage(file); } else { ModelState.AddModelError("file", "Invalid file format. Please only enter jpeg or png."); ClassifiedListing = await _context.ClassifiedListing .Include(c => c.Owner).Include(c => c.Files).FirstOrDefaultAsync(m => m.ClassifiedListingID == id); PopulateCategoryDropDownList(_context); return(Page()); } } } else { ClassifiedListing c = _context.ClassifiedListing.AsQueryable().AsNoTracking().FirstOrDefault(x => x.ClassifiedListingID == id); classifiedListing.Files = c.Files; } _context.Attach(classifiedListing).State = EntityState.Modified; await _context.SaveChangesAsync().ConfigureAwait(false); return(RedirectToPage("./Index")); } PopulateCategoryDropDownList(_context, classifiedListing.ClassifiedCategoryID); return(Page()); }
public async Task <IActionResult> AddServicePOST(string description) { if (String.IsNullOrEmpty(description)) { ModelState.AddModelError("Description", "Please enter a description"); } var files = HttpContext.Request.Form.Files; if (files == null || files.Count == 0) { ModelState.AddModelError("Files", "Please upload one file"); } if (ModelState.IsValid) { var identityUser = await _userManager.GetUserAsync(HttpContext.User); var loggedInUser = await _context.Owner.FindAsync(identityUser.OwnerId); var service = new ClassifiedListing { ClassifiedCategoryId = 3, // Manually set to "Other" ItemName = "Service", Description = description, Price = 0, LastModifiedBy = loggedInUser.FullName, LastModifiedDate = DateTime.Now, ListingDate = DateTime.Now, Owner = loggedInUser, OwnerId = loggedInUser.OwnerId }; _context.ClassifiedListing.Add(service); await _context.SaveChangesAsync(); //image uploading string webRootPath = _hostingEnvironment.WebRootPath; var uploads = Path.Combine(webRootPath, @"img\ClassifiedsImages"); var file = files[0]; var extension = Path.GetExtension(file.FileName); using (var filestream = new FileStream(Path.Combine(uploads, service.ClassifiedListingId + extension), FileMode.Create)) { file.CopyTo(filestream); // moves to server and renames } var image = new ClassifiedImage() { ClassifiedListingId = service.ClassifiedListingId, IsMainImage = (file == files.First()), ImageExtension = extension, ImageURL = @"\" + @"img\ClassifiedsImages" + @"\" + service.ClassifiedListingId + extension }; _context.Add(image); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } return(View()); }
public async Task <ActionResult> Edit(int?id, ClassifiedListing listing) { if (id != listing.ClassifiedListingId) { return(NotFound()); } var identityUser = await _userManager.GetUserAsync(HttpContext.User); var loggedInUser = await _context.Owner.FindAsync(identityUser.OwnerId); if (ModelState.IsValid) { listing.LastModifiedBy = loggedInUser.FullName; listing.LastModifiedDate = DateTime.Now; listing.OwnerId = loggedInUser.OwnerId; _context.Update(listing); await _context.SaveChangesAsync(); var files = HttpContext.Request.Form.Files; if (files.Count != 0) { string webRootPath = _hostingEnvironment.WebRootPath; var uploads = Path.Combine(webRootPath, @"img\ClassifiedsImages"); var oldImages = await _context.ClassifiedImage.Where(x => x.ClassifiedListingId == listing.ClassifiedListingId).ToListAsync(); foreach (var oldImage in oldImages) { if (System.IO.File.Exists(Path.Combine(webRootPath, oldImage.ImageURL.Substring(1)))) { System.IO.File.Delete(Path.Combine(webRootPath, oldImage.ImageURL.Substring(1))); } _context.ClassifiedImage.Remove(oldImage); } int i = 0; foreach (var file in files) { i++; var extension = Path.GetExtension(file.FileName); using (var filestream = new FileStream(Path.Combine(uploads, listing.ClassifiedListingId + @"_" + i + extension), FileMode.Create)) { file.CopyTo(filestream); // moves to server and renames } var image = new ClassifiedImage() { ClassifiedListingId = listing.ClassifiedListingId, IsMainImage = (file == files.First()), ImageExtension = extension, ImageURL = @"\" + @"img\ClassifiedsImages" + @"\" + listing.ClassifiedListingId + @"_" + i + extension }; _context.ClassifiedImage.Add(image); } await _context.SaveChangesAsync(); } return(RedirectToAction(nameof(Index))); } ViewData["Category"] = new SelectList(_context.ClassifiedCategory, "ClassifiedCategoryId", "Description", listing.ClassifiedCategoryId); return(View(listing)); }