using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using EMIS.CommonLogic.SystemServices;
using EMIS.ViewModel;
using EMIS.Web.Controls;
using EMIS.Utility.OnlinePay;
using Bowin.Web.Controls.Mvc;
using EMIS.ViewModel.SystemView;
using Bowin.Common.Exceptions;
using EMIS.Entities;
using Bowin.Common.Log;
namespace EMIS.Web.Controllers
{
[Authorization]
public class AnnouncementController : Controller
{
public IAnnouncementServices AnnouncementServices { get; set; }
public IParameterServices parameterServices { get; set; }
public IWechatMPServices WechatMPServices { get; set; }
///
/// 公告类型页面
///
///
public ActionResult TypeList()
{
return View();
}
public ActionResult TipEdit()
{
var value = parameterServices.GetParameterValue(CF_ParameterType.LoginTip);
CF_Parameter param = new CF_Parameter();
param.Value = value;
return View(param);
}
[HttpPost]
public ActionResult TipEdit(CF_Parameter view)
{
try
{
parameterServices.SaveTo(CF_ParameterType.LoginTip,view.Value);
return Json(new ReturnMessage()
{
IsSuccess = true,
Message = "保存成功!"
});
}
catch (Exception ex)
{
return Json(new ReturnMessage()
{
IsSuccess = false,
Message = "保存失败:" + ex.Message
});
}
}
[HttpPost]
public ActionResult TypeList(QueryParamsModel pararms)
{
ConfiguretView configuretView = ConfiguretExtensions.GetConfiguretermsView(pararms);
//避开全选值
if (configuretView.Attribute == DropdownList.SELECT_ALL.ToString()) configuretView.Attribute = "";
return base.Json(AnnouncementServices.GetAnnouncementTypeViewList(configuretView, (int)pararms.page, (int)pararms.rows));
}
[HttpPost]
public ActionResult TypeDropdownList(DropdownListBindType? bindType)
{
List list = AnnouncementServices.GetUsableAnnouncementTypeViewList()
.Select(x => new DropdownListItem { Text = x.Name, Value = x.AnnouncementTypeID.ToString() }).ToList();
DropdownListBindType dbt = bindType == null ? DropdownListBindType.SelectAll : bindType.Value;
DropdownList.FormatDropdownItemList(dbt, list);
return base.Json(list);
}
///
/// 公告发布页面
///
///
public ActionResult List()
{
return View();
}
[HttpPost]
public ActionResult List(QueryParamsModel pararms)
{
ConfiguretView configuretView = ConfiguretExtensions.GetConfiguretermsView(pararms);
//避开全选值
if (configuretView.Attribute == DropdownList.SELECT_ALL.ToString()) configuretView.Attribute = "";
return base.Json(AnnouncementServices.GetAnnouncementViewList(configuretView, (int)pararms.page, (int)pararms.rows));
}
[HttpGet]
public ActionResult TypeEdit(Guid? announcementTypeID)
{
AnnouncementTypeView announcementTypeView = new AnnouncementTypeView();
if (announcementTypeID != null && announcementTypeID != Guid.Empty)
{
announcementTypeView = AnnouncementServices.GetAnnouncementTypeViewInfo(announcementTypeID);
}
return View(announcementTypeView);
}
[HttpGet]
public ActionResult Edit(Guid? announcementID)
{
AnnouncementView announcementView = new AnnouncementView();
if (announcementID != null && announcementID != Guid.Empty)
{
announcementView = AnnouncementServices.GetAnnouncementViewInfo(announcementID);
}
return View(announcementView);
}
[HttpGet]
public ActionResult EditGDCX(Guid? announcementID)
{
AnnouncementView announcementView = new AnnouncementView();
if (announcementID != null && announcementID != Guid.Empty)
{
announcementView = AnnouncementServices.GetAnnouncementViewInfo(announcementID);
}
return View(announcementView);
}
///
/// 保存
///
///
[HttpPost]
public ActionResult EditGDCX(AnnouncementView announcementView)
{
try
{
var roleList = DataGrid.GetTableData("dgRoleList");
var userList = DataGrid.GetTableData("dgUserList");
var roleIDList = roleList.Select(x => (Guid?)x.RoleID).ToList();
var userIDList = userList.Select(x => (Guid?)x.UserID).ToList();
var msg = "";
Sys_Announcement Announcement = AnnouncementServices.Save(announcementView, roleIDList, userIDList);
if (announcementView.IsSendWXEdit)
{
var ann = AnnouncementServices.GetAnnouncementViewInfo(Announcement.AnnouncementID);
var openIDList = WechatMPServices.GetOpenIDList(roleIDList, userIDList);
openIDList.Remove("null");
//暂时不考虑针对角色发送的消息
if (openIDList.Count() < userIDList.Count())
{
msg = "但有部分学生未在微信端登陆或未关注公众号,无法发送消息给他们!";
}
WechatHelper.SendAnnouncementGDCX(announcementView.Title,announcementView.textContent,ann.CreateUserName, openIDList, null, Announcement.CreateTime);
}
return Json(new ReturnMessage()
{
IsSuccess = true,
Message = "保存成功!" + msg
});
}
catch (Exception ex)
{
return Json(new ReturnMessage()
{
IsSuccess = false,
Message = "保存失败:" + ex.Message
});
}
}
///
/// 保存公告类型
///
///
[HttpPost]
public ActionResult TypeEdit(AnnouncementTypeView announcementTypeView)
{
try
{
var user = HttpContext.User as EMIS.Utility.FormValidate.CustomPrincipal;
AnnouncementServices.SaveType(announcementTypeView);
return Json(new ReturnMessage()
{
IsSuccess = true,
Message = "保存成功!"
});
}
catch (Exception ex)
{
return Json(new ReturnMessage()
{
IsSuccess = false,
Message = "保存失败:" + ex.Message
});
}
}
///
/// 保存
///
///
[HttpPost]
public ActionResult Edit(AnnouncementView announcementView)
{
try
{
var roleList = DataGrid.GetTableData("dgRoleList");
var userList = DataGrid.GetTableData("dgUserList");
var roleIDList = roleList.Select(x => (Guid?)x.RoleID).ToList();
var userIDList = userList.Select(x => (Guid?)x.UserID).ToList();
var msg = "";
Sys_Announcement Announcement = AnnouncementServices.Save(announcementView, roleIDList, userIDList);
if (announcementView.IsSendWXEdit)
{
var openIDList = WechatMPServices.GetOpenIDList(roleIDList, userIDList);
openIDList.Remove("null");
//暂时不考虑针对角色发送的消息
if (openIDList.Count() < userIDList.Count())
{
msg = "但有部分学生未在微信端登陆或未关注公众号,无法发送消息给他们!";
}
WechatHelper.SendAnnouncement(announcementView.Title, announcementView.textContent, openIDList, null, Announcement.CreateTime);
}
return Json(new ReturnMessage()
{
IsSuccess = true,
Message = "保存成功!" + msg
});
}
catch (Exception ex)
{
return Json(new ReturnMessage()
{
IsSuccess = false,
Message = "保存失败:" + ex.Message
});
}
}
///
/// 删除公告类型
///
///
///
[HttpPost]
public ActionResult DeleteType(string typeIDs)
{
try
{
var announcementTypeIDList = typeIDs.Split(',').Select(x => (Guid?)new Guid(x)).ToList();
AnnouncementServices.DeleteType(announcementTypeIDList);
return base.Json("删除成功!");
}
catch (Exception ex)
{
string mge = ex.Message;
System.Data.SqlClient.SqlException num = ExceptionHelper.GetSqlException(ex);
if(num!=null)
{
if (num.Number == 547)
mge = "该公告被引用请先删除所有关联的数据";
}
return base.Json("删除失败,原因:" + mge + "。");
}
}
///
/// 删除
///
///
///
[HttpPost]
public ActionResult Delete(string announcementIDs)
{
try
{
var announcementIDList = announcementIDs.Split(',').Select(x => (Guid?)new Guid(x)).ToList();
AnnouncementServices.Delete(announcementIDList);
return base.Json("删除成功!");
}
catch (Exception ex)
{
return base.Json("删除失败,原因:" + ex.Message + "。");
}
}
[HttpPost]
public ActionResult GetRoleViewList(Guid? announcementID)
{
if (announcementID.HasValue)
{
var resultList = AnnouncementServices.GetAnnouncementRoleViewList(announcementID.Value);
return Json(new JsonDataGridResult { rows = resultList, total = resultList.Count });
}
else
{
return Json(new JsonDataGridResult());
}
}
[HttpPost]
public ActionResult GetUserViewList(Guid? announcementID)
{
if (announcementID.HasValue)
{
var resultList = AnnouncementServices.GetAnnouncementUserViewList(announcementID.Value);
return Json(new JsonDataGridResult { rows = resultList, total = resultList.Count });
}
else
{
return Json(new JsonDataGridResult());
}
}
///
/// 页面查询列获取公告名称
///
///
///
[HttpPost]
public ActionResult AnnouncementTypeDropdownList(DropdownListBindType? bindType)
{
List list = AnnouncementServices.GetUsableAnnouncementTypeViewList().Select(x => new DropdownListItem { Text = x.Name, Value = x.AnnouncementTypeID.ToString() }).ToList();
DropdownListBindType dbt = bindType == null ? DropdownListBindType.SelectAll : bindType.Value;
DropdownList.FormatDropdownItemList(dbt, list);
return base.Json(list);
}
[HttpPost]
public ActionResult GetUserAnnouncementViewList(QueryParamsModel pararms, Guid? type)
{
var user = HttpContext.User as EMIS.Utility.FormValidate.CustomPrincipal;
return Json(AnnouncementServices.GetUserAnnouncementView(user.UserID, pararms.page.Value, pararms.rows.Value, type));
}
public ActionResult AnnouncementView(Guid announcementID)
{
AnnouncementView announcementView = new AnnouncementView();
announcementView = AnnouncementServices.GetAnnouncementViewInfo(announcementID);
return View(announcementView);
}
public ActionResult AnnouncementSetTop(string announcementIDs)
{
try
{
var announcementIDList = announcementIDs.Split(',').Select(x => (Guid?)new Guid(x)).ToList();
AnnouncementServices.SetTop(announcementIDList, true);
return base.Json("设置成功");
}
catch (Exception ex)
{
string mge = ex.Message;
return base.Json("设置失败,原因:" + mge + "!");
}
}
}
}