Esempio n. 1
0
        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" }));
            }
        }
Esempio n. 2
0
        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());
        }
Esempio n. 3
0
        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));
        }
Esempio n. 4
0
        //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"));
        }
Esempio n. 5
0
        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());
        }
Esempio n. 6
0
        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)));
        }
Esempio n. 7
0
        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" }));
        }
Esempio n. 8
0
        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());
        }
Esempio n. 9
0
        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());
        }
Esempio n. 10
0
        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));
        }