using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.SignalR; using Nop.Plugin.Misc.AuctionPlugin.Areas.Admin.Models; using Nop.Plugin.Misc.AuctionPlugin.Domains; using Nop.Plugin.Misc.AuctionPlugin.Domains.Entities; using Nop.Plugin.Misc.AuctionPlugin.Hubs; using Nop.Plugin.Misc.AuctionPlugin.Services; using Nop.Web.Framework; using Nop.Web.Framework.Controllers; using Nop.Web.Framework.Mvc; using Nop.Web.Framework.Mvc.Filters; using System; using System.Linq; namespace Nop.Plugin.Misc.AuctionPlugin.Areas.Admin.Controllers { [AutoValidateAntiforgeryToken] [AuthorizeAdmin] [Area(AreaNames.ADMIN)] public class AnnouncementController : BasePluginController { #region Field private readonly IAnnouncementService _announcementService; private IHubContext _announcementHubContext; #endregion #region Ctr public AnnouncementController( IAnnouncementService announcementService, IHubContext announcementHubContext) { _announcementService = announcementService; _announcementHubContext = announcementHubContext; } #endregion #region Methods public IActionResult GetAnnouncementViewModel() { var model = new AnnouncementViewModel(); return View("~/Plugins/Misc.AuctionPlugin/Areas/Admin/Views/Announcement.cshtml", model); } [HttpPost] public async Task GetAnnouncementViewModel(AnnouncementViewModel viewModel) { Announcement objOfAnnouncementDomain = new Announcement(); objOfAnnouncementDomain.Name = viewModel.Name; objOfAnnouncementDomain.Body = viewModel.Body; objOfAnnouncementDomain.IsActive = viewModel.IsActive; objOfAnnouncementDomain.Created = DateTime.UtcNow; await _announcementService.InsertAsync(objOfAnnouncementDomain); if (viewModel.IsActive == true) { await _announcementHubContext.Clients.All.SendAsync("send", viewModel.Body.ToString()); } return RedirectToAction("AnnouncementList"); } [HttpPost] public async Task Edit(Announcement model) { var entity = await _announcementService.GetAnnouncementByIdAsync(model.Id); entity.Name = model.Name; entity.Body = model.Body; entity.IsActive = model.IsActive; entity.Created = DateTime.UtcNow; await _announcementService.UpdateAsync(entity); if (model.IsActive == true) { await _announcementHubContext.Clients.All.SendAsync("send", model.Body.ToString()); } return RedirectToAction("AnnouncementList"); } public async Task Edit(int Id) { var singleAnnouncement = await _announcementService.GetAnnouncementByIdAsync(Id); var model = new Announcement(); model.Id = singleAnnouncement.Id; model.Name = singleAnnouncement.Name; model.Body = singleAnnouncement.Body; model.IsActive = singleAnnouncement.IsActive; return View("~/Plugins/Widget.LiveAnnouncement/Views/LiveAnnouncementView/Announcement.cshtml", model); } public async Task Delete(int Id) { var singleAnnouncement = await _announcementService.GetAnnouncementByIdAsync(Id); await _announcementService.DeleteAsync(singleAnnouncement); return new NullJsonResult(); } public IActionResult AnnouncementList() { var model = new AnnouncementViewModel(); return View("~/Plugins/Misc.Auction/Areas/Admin/Views/AnnouncementList.cshtml", model); } //[HttpPost] //public IActionResult AnnouncementList() //{ // return View(); //} #endregion } }