using Cksoft.Data;
using Cksoft.Data.Repository;
using Cksoft.Unity;
using Cksoft.Unity.Log4NetConfig;
using DllEapDal;
using DllEapEntity;
using DllUfpDal;
using DllUfpEntity;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace DllEapBll.Controllers
{
///
/// 邮件设置
///
[Authorize]
[ApiController]
[Route("eap/api/[controller]/[action]")]
public class MailSettingsController : ControllerBase
{
private readonly string conn = "eap";
///
/// 获取邮件设置项列表
///
///
///
///
///
///
///
[HttpGet]
public LayuiModel GetMailSettingsList(int pageIndex = 1, int pageSize = 10, string filter = "", string sort = "FCode", string order = "ASC")
{
if (string.IsNullOrEmpty(sort) || sort.ToString().ToLower() == "null")
sort = "FCode";
if (order == "descend")
order = "desc";
else
{
order = "asc";
}
IEnumerable list = null;
filter = filter ?? " ";
using (IDatabase db = DbFactory.Base("eapslave"))
{
var dal = new MailSettingsDal(db);
int start = (pageIndex - 1) * pageSize + 1;
string errorinfo = string.Empty;
list = dal.GetMailSettingsList(start, pageSize, filter, sort, order, ref errorinfo);
var count = dal.GetMailSettingsCount(filter);
var responseData = new LayuiModel()
{
code = 0,
count = count,
data = list,
msg = ""
};
return responseData;
}
}
///
/// 设置详情
///
///
///
[HttpGet]
public MailSettings GetMailSettingsDetail(int id)
{
using (IDatabase db = DbFactory.Base("eapslave"))
{
var dal = new MailSettingsDal(db);
MailSettings staff = dal.GetMailSettings(id);
return staff;
}
}
///
/// 新增/修改设置
///
///
///
[HttpPost]
public string AddOrUpdateMailSettings([FromBody] MailSettings model)
{
var id = model.ID;
string errorinfo = string.Empty;
var usercode = Request.Headers["usercode"];
IDatabase db = DbFactory.Base(conn);
try
{
db.BeginTrans();
var dal = new MailSettingsDal(db);
if (id == 0)
{
model.RecCode = usercode;
model.ModCode = usercode;
model.MailBody = string.IsNullOrEmpty(model.MailBody) ? "" : model.MailBody;
model.Remark = string.IsNullOrEmpty(model.Remark) ? "" : model.Remark;
var resInsert = dal.InsertMailSettings(model, ref errorinfo);
if (resInsert > 0)
{
db.Commit();
LogHelper.LogFatal("新增MailSettings-->" + Json.ToJson(model), "用户操作", model.RecCode);
return JsonConvert.SerializeObject(new { id = resInsert, msg = string.Empty });
}
db.Rollback();
return JsonConvert.SerializeObject(new { id = "0", msg = errorinfo });
}
var oldModel = dal.GetMailSettings(id);
if (oldModel == null)
return JsonConvert.SerializeObject(new { id = "0", msg = "此邮件类别不存在" });
model.ModCode = usercode;
model.ModTime = DateTime.Now;
var resUpdate = dal.UpdateMailSettings(model, usercode, ref errorinfo);
if (resUpdate > 0)
{
db.Commit();
LogHelper.LogFatal("修改MailSettings-->原始数据:" + Json.ToJson(oldModel) + " 新数据:" + Json.ToJson(model), "用户操作", model.RecCode);
return JsonConvert.SerializeObject(new { id = resUpdate });
}
db.Rollback();
return JsonConvert.SerializeObject(new { id = "0", msg = errorinfo }); ;
}
catch (Exception e)
{
db.Rollback();
return JsonConvert.SerializeObject(new { id = "0", msg = e.Message });
}
finally
{
if (db != null)
db.Close();
}
}
///
/// 删除邮件设置
///
///
///
[HttpPost]
public async Task Delete([FromBody] int id)
{
using (IDatabase db = DbFactory.Base("eap"))
{
db.BeginTrans();
var dal = new MailSettingsDal(db);
var res = await dal.DeleteMailSetting(id);
db.Commit();
return res;
}
}
///
/// 获取邮件接收人
///
///
///
///
///
///
///
[HttpGet]
public LayuiModel GetMailReceiverList(int pageIndex = 1, int pageSize = 10, string filter = "", string sort = "id", string order = "ASC")
{
if (string.IsNullOrEmpty(sort) || sort.ToString().ToLower() == "null")
sort = "id";
if (order == "descend")
order = "desc";
else
{
order = "asc";
}
IEnumerable list = null;
filter += " and IsValid=1";
filter = filter ?? " ";
using (IDatabase db = DbFactory.Base("eapslave"))
{
var dal = new MailSettingsDal(db);
int start = (pageIndex - 1) * pageSize + 1;
string errorinfo = string.Empty;
list = dal.GetMailReceiverList(start, pageSize, filter, sort, order, ref errorinfo);
foreach (var model in list)
{
switch (model.SendType)
{
case 1:
model.SendTypeName = "收件人";
break;
case 2:
model.SendTypeName = "抄送人";
break;
}
}
var count = dal.GetMailReceiverCount(filter);
var responseData = new LayuiModel()
{
code = 0,
count = count,
data = list,
msg = ""
};
return responseData;
}
}
///
/// 接收人详情
///
///
///
[HttpGet]
public MailReceiver GetMailReceiverDetail(int id)
{
using (IDatabase db = DbFactory.Base("eapslave"))
{
var dal = new MailSettingsDal(db);
MailReceiver staff = dal.GetMailReceiver(id);
return staff;
}
}
///
/// 新增/修改接收人
///
///
///
[HttpPost]
public string AddOrUpdateMailReceiver([FromBody] MailReceiver model)
{
var id = model.ID;
string errorinfo = string.Empty;
var usercode = Request.Headers["usercode"];
IDatabase db = DbFactory.Base(conn);
try
{
db.BeginTrans();
var dal = new MailSettingsDal(db);
if (id == 0)
{
model.RecCode = usercode;
model.ModCode = usercode;
model.IsValid = 1;
var resInsert = dal.InsertMailReceiver(model, ref errorinfo);
if (resInsert > 0)
{
db.Commit();
LogHelper.LogFatal("新增MailReceiver-->" + Json.ToJson(model), "用户操作", model.RecCode);
return JsonConvert.SerializeObject(new { id = resInsert, msg = string.Empty });
}
db.Rollback();
return JsonConvert.SerializeObject(new { id = "0", msg = errorinfo });
}
var oldModel = dal.GetMailReceiver(id);
if (oldModel == null)
return JsonConvert.SerializeObject(new { id = "0", msg = "此收件人不存在" });
model.ModCode = usercode;
model.ModTime = DateTime.Now;
model.IsValid = 1;
int resUpdate = dal.UpdateMailReceiver(model, usercode, ref errorinfo);
if (resUpdate > 0)
{
db.Commit();
LogHelper.LogFatal("修改MailReceiver-->原始值:" + Json.ToJson(oldModel) + " 新值:" + Json.ToJson(model), "用户操作", model.RecCode);
return JsonConvert.SerializeObject(new { id = resUpdate });
}
db.Rollback();
return JsonConvert.SerializeObject(new { id = "0", msg = errorinfo }); ;
}
catch (Exception e)
{
db.Rollback();
return JsonConvert.SerializeObject(new { id = "0", msg = e.Message });
}
finally
{
if (db != null)
db.Close();
}
}
///
/// 删除接收人
///
///
///
[HttpGet]
public string DeleteMailReceiver(int id)
{
string errorinfo = string.Empty;
var usercode = Request.Headers["usercode"];
IDatabase db = DbFactory.Base(conn);
try
{
db.BeginTrans();
var dal = new MailSettingsDal(db);
var model = dal.GetMailReceiver(id);
var res = dal.DeleteMailReceiver(id, usercode, ref errorinfo);
if (res > 0)
{
db.Commit();
LogHelper.LogFatal("删除MailReceiver-->MailReceiver:" + Json.ToJson(model), "用户操作", usercode);
return JsonConvert.SerializeObject(new { id = res, msg = string.Empty });
}
db.Rollback();
return JsonConvert.SerializeObject(new { id = "0", msg = errorinfo });
}
catch (Exception e)
{
db.Rollback();
return JsonConvert.SerializeObject(new { id = "0", msg = e.Message });
}
finally
{
if (db != null)
db.Close();
}
}
///
/// 发送邮件
///
///
///
///
[HttpGet]
[AllowAnonymous]
public string SendMail(string code, int type = 1)
{
if (code == AppConfigurtaionServices.Configuration["DisConnNoticeCode"])
{
var result = MailNotice.DisconnectionNotice(type).Result;
return JsonConvert.SerializeObject(new { code = string.IsNullOrEmpty(result) ? 1 : 0, msg = string.IsNullOrEmpty(result) ? "发送成功" : result });
}
else
{
return JsonConvert.SerializeObject(new { code = 0, msg = "此邮件暂未开发" });
}
}
///
/// 发送AA抛料率预警
///
///
[HttpGet]
[AllowAnonymous]
public async Task SendAAMaterial()
{
var result = await MailNotice.AAMaterialUploadErrorNotice();
return JsonConvert.SerializeObject(new { code = string.IsNullOrEmpty(result) ? 1 : 0, msg = string.IsNullOrEmpty(result) ? "发送成功" : result });
}
///
/// 发送断线、IP不一致、小程序未开启预警邮件
///
///
[HttpGet]
[AllowAnonymous]
public string SendMailNew()
{
var result = MailNotice.IPDifferentAndDiconnectionNotice().Result;
return JsonConvert.SerializeObject(new { code = string.IsNullOrEmpty(result) ? 1 : 0, msg = string.IsNullOrEmpty(result) ? "发送成功" : result });
}
}
}