// GET: Advertisements/Edit/5
        public async Task <IActionResult> Edit(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var advertisement = await _context.Advertisement.FindAsync(id);

            if (advertisement == null)
            {
                return(NotFound());
            }
            AdvertViewModel advertViewModel = new AdvertViewModel
            {
                AdvertDescription = advertisement.AdvertDescription,
                AdvertImage       = advertisement.AdvertImage,
                AdvertName        = advertisement.AdvertName,
                Category          = advertisement.Category,
                CategoryID        = advertisement.CategoryID,
                EndDate           = advertisement.EndDate,
                StartDate         = advertisement.StartDate,
                ID       = advertisement.ID,
                Position = advertisement.Position
            };

            ViewData["CategoryID"] = new SelectList(_context.Category, "ID", "CategoryName", advertisement.CategoryID);
            return(View(advertViewModel));
        }
        public async Task <IActionResult> Create([Bind("ID,AdvertName,AdvertDescription,AdUrl,StartDate,EndDate,Position,CategoryID")] AdvertViewModel advertViewModel)
        {
            Advertisement advertisement = new Advertisement();

            if (ModelState.IsValid)
            {
                IFormFile file         = advertViewModel.AdUrl;
                string    relativePath = "";
                if (file != null)
                {
                    var fileName = $"{advertViewModel.ID}{Path.GetFileName(file.FileName)}";
                    relativePath = Path.Combine("images", "ads", fileName);
                    var absolutePath = Path.Combine(_env.WebRootPath, relativePath);

                    using (FileStream stream = new FileStream(absolutePath, FileMode.Create))
                    {
                        file.CopyTo(stream);
                    }
                }
                advertisement.AdvertDescription = advertViewModel.AdvertDescription;
                advertisement.AdvertImage       = relativePath;
                advertisement.AdvertName        = advertViewModel.AdvertName;
                advertisement.Category          = advertViewModel.Category;
                advertisement.CategoryID        = advertViewModel.CategoryID;
                advertisement.EndDate           = advertViewModel.EndDate;
                advertisement.ID        = advertViewModel.ID;
                advertisement.StartDate = advertViewModel.StartDate;
                advertisement.Position  = advertViewModel.Position;



                _context.Add(advertisement);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["CategoryID"] = new SelectList(_context.Category, "ID", "CategoryName", advertisement.CategoryID);
            return(View(advertisement));
        }
        public async Task <IActionResult> Edit(int id, [Bind("ID,AdvertName,AdvertDescription,AdvertImage,StartDate,Position,EndDate,CategoryID,AdUrl")] AdvertViewModel advertViewModel)
        {
            Advertisement advertisement = new Advertisement();

            if (id != advertViewModel.ID)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                IFormFile file         = advertViewModel.AdUrl;
                string    relativePath = "";
                if (file != null)
                {
                    if (advertViewModel.AdvertImage != null)
                    {
                        var oldPath = Path.Combine(_env.WebRootPath, advertViewModel.AdvertImage);
                        if (System.IO.File.Exists(oldPath))
                        {
                            System.IO.File.Delete(oldPath);
                        }
                    }

                    var fileName = $"{advertViewModel.ID}{Path.GetFileName(file.FileName)}";
                    relativePath = Path.Combine("images", "ads", fileName);
                    var absolutePath = Path.Combine(_env.WebRootPath, relativePath);

                    using (FileStream stream = new FileStream(absolutePath, FileMode.Create))
                    {
                        file.CopyTo(stream);
                    }
                }
                try
                {
                    advertisement.AdvertDescription = advertViewModel.AdvertDescription;
                    advertisement.AdvertImage       = (!string.IsNullOrEmpty(relativePath)) ? relativePath : advertViewModel.AdvertImage;
                    advertisement.AdvertName        = advertViewModel.AdvertName;
                    advertisement.Category          = advertViewModel.Category;
                    advertisement.CategoryID        = advertViewModel.CategoryID;
                    advertisement.EndDate           = advertViewModel.EndDate;
                    advertisement.ID        = advertViewModel.ID;
                    advertisement.StartDate = advertViewModel.StartDate;
                    advertisement.Position  = advertViewModel.Position;

                    _context.Update(advertisement);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!AdvertisementExists(advertisement.ID))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["CategoryID"] = new SelectList(_context.Category, "ID", "CategoryName", advertisement.CategoryID);
            return(View(advertisement));
        }