using Infrastructure.Application; using Infrastructure.Application.Entites.Settings; using Infrastructure.Application.Models; using Infrastructure.Application.Services.Settings; using Infrastructure.Extensions; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using System; using System.Linq; namespace Infrastructure.Web.Mvc { [Area("Admin")] public class SettingController : BaseController { private readonly ISettingService _settingService; public SettingController(ISettingService settingService) { this._settingService = settingService; } [Authorize(Roles = "Read-Setting")] public IActionResult Index(PagedList model) { var query = _settingService.ReadonlyTable(); model.TotalCount = query.Count(); model.List.AddRange(query.Skip(model.PageSize * (model.PageIndex - 1)) .Take(model.PageSize) .ToList()); return View(model); } [Authorize(Roles = "Edit-Setting")] public IActionResult Add() { return View(new EditSettingModel()); } [Authorize(Roles = "Edit-Setting")] [HttpPost] [ValidateAntiForgeryToken] public IActionResult Add(EditSettingModel model) { if (ModelState.IsValid) { try { var entity = new Setting(); entity.From(model); _settingService.Add(entity); return RedirectToAction("Index"); } catch (DbUpdateException ex) { ex.PrintStack(); ModelState.AddModelError("", ex.Message); } } return View(model); } [Authorize(Roles = "Edit-Setting")] public IActionResult Edit(Guid id) { var entity = _settingService.ReadonlyTable().FirstOrDefault(o => o.Id == id); var model = entity.To(); return View(model); } [Authorize(Roles = "Edit-Setting")] [HttpPost] [ValidateAntiForgeryToken] public IActionResult Edit(EditSettingModel model) { if (ModelState.IsValid) { try { var entity = _settingService.Table().FirstOrDefault(o => o.Id == model.Id); entity.From(model); _settingService.Update(entity); return RedirectToAction("Index"); } catch (DbUpdateException ex) { ex.PrintStack(); ModelState.AddModelError("", ex.Message); } } return View(model); } public IActionResult Ajax(SettingType type) { return PartialView("_Ajax", new EditSettingModel { Type = type }); } } }