using System.Threading.Tasks; using System.Web.Mvc; using Abp.Auditing; using Abp.Authorization; using Abp.Domain.Repositories; using IwbZero.ToolCommon.StringModel; using WeApp.BaseSystem.Query; using WeApp.Configuration; using WeApp.TrainingCamp; using WeApp.TrainingCamp.Dto; using WeApp.Views.Shared.Camp; namespace WeApp.Controllers { /// /// 演练实施 /// [AbpAllowAnonymous, DisableAuditing] public class PlayController : IwbControllerBase { protected IRepository CampRepository { get; } protected QueryAppService QueryApp { get; } private int TimeOut = 60 * 5; public PlayController(QueryAppService queryApp, IRepository campRepository) { QueryApp = queryApp; CampRepository = campRepository; } /// /// 专家屏页面 /// /// /// public async Task Index(string id) { CampInfo camp; if (id == "1") { camp = await CampRepository.FirstOrDefaultAsync(a => a.CampState == CampStateDefinition.Run); if (camp == null) { CheckErrors("未查询到正在运行的培训营!"); return Content("Error"); } } else { string campNo = id.IsEmpty() ? (string)Session["CampNo"] : id; if (campNo.IsEmpty()) { TempData[ExerciseController.SelectDataKey] = new SelectCampModel { PageUrl = "/Play/Index", PageTitle = "演示屏选择培训营", HasGroup = false }; return RedirectToAction("SelectCamp", "Exercise"); } camp = await CampRepository.FirstOrDefaultAsync(a => a.Id == campNo); if (camp == null) { CheckErrors($"未查到到编号为【{campNo}】的培训营!"); return null; } Session["CampNo"] = campNo; Session.Timeout = TimeOut; } ViewBag.Camp = ObjectMapper.Map(camp); if (camp.CampState != CampStateDefinition.Run) { return View("Wait"); } ViewBag.Groups = await QueryApp.GetCampGroups(id); return View(); } /// /// 专家屏页面 /// /// /// public async Task IndexWithScore(string id) { CampInfo camp; if (id == "1") { camp = await CampRepository.FirstOrDefaultAsync(a => a.CampState == CampStateDefinition.Run); if (camp == null) { CheckErrors("未查询到正在运行的培训营!"); return Content("Error"); } } else { string campNo = id.IsEmpty() ? (string)Session["CampNo"] : id; if (campNo.IsEmpty()) { TempData[ExerciseController.SelectDataKey] = new SelectCampModel { PageUrl = "/Play/IndexWithScore", PageTitle = "演示屏选择培训营", HasGroup = false }; return RedirectToAction("SelectCamp", "Exercise"); } camp = await CampRepository.FirstOrDefaultAsync(a => a.Id == campNo); if (camp == null) { CheckErrors($"未查到到编号为【{campNo}】的培训营!"); return null; } Session["CampNo"] = campNo; Session.Timeout = TimeOut; } ViewBag.Camp = ObjectMapper.Map(camp); if (camp.CampState != CampStateDefinition.Run) { return View("Wait"); } ViewBag.Groups = await QueryApp.GetCampGroups(id); return View(); } } }