UTB.Eshop_2021/UTB.Eshop.Web/Areas/Admin/Controllers/CarouselController.cs

143 lines
4.3 KiB
C#

using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using UTB.Eshop.Web.Models.Database;
using UTB.Eshop.Web.Models.Entity;
using UTB.Eshop.Web.Models.Identity;
using UTB.Eshop.Web.Models.Implementation;
using UTB.Eshop.Web.Models.ViewModels;
namespace UTB.Eshop.Web.Areas.Admin.Controllers
{
[Area("Admin")]
[Authorize(Roles = nameof(Roles.Admin) + ", " + nameof(Roles.Manager))]
public class CarouselController : Controller
{
readonly EshopDbContext eshopDbContext;
IWebHostEnvironment env;
public CarouselController(EshopDbContext eshopDb, IWebHostEnvironment env)
{
eshopDbContext = eshopDb;
this.env = env;
}
public IActionResult Select()
{
IndexViewModel indexVM = new IndexViewModel();
indexVM.CarouselItems = eshopDbContext.CarouselItems.ToList();
return View(indexVM);
}
public IActionResult Create()
{
return View();
}
[HttpPost]
public async Task<IActionResult> Create(CarouselItem carouselItem)
{
/*if (eshopDbContext.CarouselItems != null && eshopDbContext.CarouselItems.Count > 0)
{
carouselItem.ID = eshopDbContext.CarouselItems.Last().ID + 1;
}*/
FileUpload fileUpload = new FileUpload(env.WebRootPath, "img/Carousels", "image");
if (fileUpload.CheckFileContent(carouselItem.Image) &&
fileUpload.CheckFileLength(carouselItem.Image))
{
carouselItem.ImageSource = await fileUpload.FileUploadAsync(carouselItem.Image);
ModelState.Clear();
TryValidateModel(carouselItem);
if (ModelState.IsValid)
{
eshopDbContext.CarouselItems.Add(carouselItem);
await eshopDbContext.SaveChangesAsync();
return RedirectToAction(nameof(CarouselController.Select));
}
}
return View(carouselItem);
}
public IActionResult Edit(int ID)
{
CarouselItem carouselItem = eshopDbContext.CarouselItems.FirstOrDefault(ci => ci.ID == ID);
if (carouselItem != null)
{
return View(carouselItem);
}
return NotFound();
}
[HttpPost]
public async Task<IActionResult> Edit(CarouselItem cItem)
{
CarouselItem carouselItem = eshopDbContext.CarouselItems.FirstOrDefault(ci => ci.ID == cItem.ID);
if (carouselItem != null)
{
if (cItem.Image != null)
{
FileUpload fileUpload = new FileUpload(env.WebRootPath, "img/Carousels", "image");
if (fileUpload.CheckFileContent(cItem.Image) &&
fileUpload.CheckFileLength(cItem.Image))
{
cItem.ImageSource = await fileUpload.FileUploadAsync(cItem.Image);
carouselItem.ImageSource = cItem.ImageSource;
}
}
else
{
cItem.ImageSource = "-";
}
ModelState.Clear();
TryValidateModel(cItem);
if (ModelState.IsValid)
{
carouselItem.ImageAlt = cItem.ImageAlt;
await eshopDbContext.SaveChangesAsync();
return RedirectToAction(nameof(CarouselController.Select));
}
}
return View(carouselItem);
}
public async Task<IActionResult> Delete(int ID)
{
CarouselItem carouselItem = eshopDbContext.CarouselItems
.Where(ci => ci.ID == ID)
.FirstOrDefault();
if (carouselItem != null)
{
eshopDbContext.CarouselItems.Remove(carouselItem);
await eshopDbContext.SaveChangesAsync();
}
return RedirectToAction(nameof(CarouselController.Select));
}
}
}