using Ropin.Inspection.Common.Helper;
using Ropin.Inspection.Model;
using Ropin.Inspection.Model.Entities;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
namespace Ropin.Inspection.Repository
{
public class TmtnPushMsgToRepository : RepositoryBase, ITmtnPushMsgToRepository
{
public TmtnPushMsgToRepository(InspectionDbContext DbContext) : base(DbContext)
{
}
public Task DeleteByDevPersonIdAsync(string devId, string personId)
{
MySqlConnector.MySqlParameter[] parameters = new[] { new MySqlConnector.MySqlParameter("devId", devId), new MySqlConnector.MySqlParameter("personId", personId) };
int result = EntityFrameworkCoreExtensions.ExecuteSqlNoQuery(DbContext.Database, "DELETE from TMTN_PushMsgTo WHERE C_DevStoreCode = @devId AND C_PushPersonCode =@personId", parameters);
return Task.FromResult(result);
}
public Task DeleteByDevPersonIdMultipleAsync(string devId, string personStr)
{
MySqlConnector.MySqlParameter[] parameters = new[] { new MySqlConnector.MySqlParameter("devId", devId) };
string delSql = $"DELETE from TMTN_PushMsgTo WHERE C_DevStoreCode = @devId AND C_PushPersonCode in ('{personStr}')";
int result = EntityFrameworkCoreExtensions.ExecuteSqlNoQuery(DbContext.Database, delSql, parameters);
return Task.FromResult(result);
}
public Task> GetPushMsgUserByAsync(string devStoreCode, string msgTypeCode)
{
MySqlConnector.MySqlParameter[] parameters = new[] {
new MySqlConnector.MySqlParameter("devStoreCode", devStoreCode),
new MySqlConnector.MySqlParameter("msgTypeCode", msgTypeCode)};
string sql = @"SELECT B.* FROM TMTN_PushMsgTo A
INNER JOIN TSYS_User B
ON A.C_PushPersonCode = B.C_UserID
WHERE A.C_DevStoreCode = @devStoreCode AND A.C_MsgTypeCode = @msgTypeCode AND B.C_Status = '1'";
var contentlist = EntityFrameworkCoreExtensions.GetList(DbContext.Database, sql, parameters);
return Task.FromResult(contentlist);
}
public Task> GetPushMsgToUsersByAsync(string devStoreCode)
{
MySqlConnector.MySqlParameter[] parameters = new[] {
new MySqlConnector.MySqlParameter("devStoreCode", devStoreCode)};
string sql = @"SELECT A.C_UserID as PushPersonCode,A.C_Name as PushPersonName,C.C_Name as RoleName
From TSYS_User A
LEFT JOIN TSYS_UserRole B ON A.C_UserID = B.C_UserCode
LEFT JOIN TSYS_Role C ON C.C_Code = B.C_RoleCode
INNER JOIN TMTN_PushMsgTo D ON D.C_PushPersonCode = A.C_UserID
WHERE D.C_DevStoreCode = @devStoreCode And A.C_Status = '1' And C.C_Status = '1' GROUP BY A.C_UserID";
var contentlist = EntityFrameworkCoreExtensions.GetList(DbContext.Database, sql, parameters);
return Task.FromResult(contentlist);
}
public Task GetPushMsgTosByAsync(string devStoreCode, string userCode)
{
List pushMsgToList = DbContext.TMTN_PushMsgTo.Where(x=>x.C_DevStoreCode == devStoreCode && x.C_PushPersonCode == userCode).ToList();
List pushMsgToMsgTypeList = new List(pushMsgToList);
List pushMsgToPushTypeList = new List(pushMsgToList);
List msgTypeList = pushMsgToMsgTypeList.Select(y => y.C_MsgTypeCode).ToList();
List pushTypeList = pushMsgToPushTypeList.Select(y => y.C_PushTypeCode).ToList();
TmtnUserPushMsgToViewModel mode = new TmtnUserPushMsgToViewModel
{
DevStoreCode = devStoreCode,
UserCode = userCode,
MsgTypeList = msgTypeList,
PushTypeList = pushTypeList
};
return Task.FromResult(mode);
}
public async Task PushAlarmMsgAsync(TpushMsgModel pushModel)
{
IEnumerable pushMsgTolist = DbContext.Set().Where(i => i.C_DevStoreCode.Equals(pushModel.C_DevStoreCode)).AsEnumerable();
IList userList = DbContext.Set().Where(x => x.C_Status == "1").AsEnumerable().ToList();
IList tBDMCodeDetailList = DbContext.Set().Where(x => x.C_Status == "1").AsEnumerable().ToList();
foreach (var pushMsgToItem in pushMsgTolist)
{
var user = userList.Where(x => x.C_UserID.ToString() == pushMsgToItem.C_PushPersonCode)?.FirstOrDefault();
IList sendUserWechatIDList = new List();
IList pushMsgResultList = new List();
if (pushMsgToItem.C_PushTypeCode == "PUSH_TYPE_001")//Email
{
//var q = from e in userList
// where e.C_UserID == Guid.Parse("d4f4f4ac-3248-418a-a489-498478665537")
// //where e.C_Email == "154817501@qq.com"
// select new { e.C_Email};
//string email = q?.ToList()?.FirstOrDefault()?.C_Email;
//string email = userList.Where(x => x.C_UserID.ToString() == pushMsgToItem.C_PushPersonCode)?.Select(y => y.C_Email)?.FirstOrDefault();
string email = user.C_Email;
if (!string.IsNullOrEmpty(email))
{
string msg =
"设备编号: | " + pushModel.DevNumber + "
" +
"设备名称: | " + pushModel.DevName + "" +
"消息内容: | " + pushModel.Msg + "" +
"设备地址: | " + pushModel.DevAddress + "" +
" 报警时间: | " + DateTime.Now + " "
;
EmailHelper.SendEmail(email, tBDMCodeDetailList.Where(i => i.C_Code == pushMsgToItem.C_MsgTypeCode).Select(x => x.C_Name).FirstOrDefault(), pushModel.Subject, pushModel.Msg);
}
}
if (pushMsgToItem.C_PushTypeCode == "PUSH_TYPE_002")//wx
{
var msg = new
{
thing2 = new { value = "niu" ?? "" },
time4 = new { value = DateTime.Now.ToString("yyyy-MM-dd hh:mm") },
thing5 = new { value = "异常" ?? "" },
thing6 = new { value = "大门损坏" ?? "" },
thing9 = new { value = "msg" ?? "" }
};
sendUserWechatIDList.Add(user.C_WechatID);
pushMsgResultList.Add(new TMTN_PushMsgResult { C_ID = Guid.NewGuid().ToString(),
D_CreateOn = DateTime.Now,
C_Status = "1"
});
//new WeChatHelper(_httpClientFactory).PushMessageToUser(userlist, msg);
//var content = _mapper.Map(createModel);
//content.C_ID = Guid.NewGuid().ToString();
//content.C_CreateBy = _claims.ApiUserId;
//content.D_CreateOn = DateTime.Now;
//content.C_Status = "1";
//_tmtnPushMsgResultRepository.Create(content);
//var result = await _repository.SaveAsync();
//if (!result)
//{
// throw new Exception("创建失败");
//}
}
//if (sendUserWechatIDList.Any())
//{
// new WeChatHelper(_httpClientFactory).PushMessageToUser(sendUserWechatIDList, msg);
//}
}
return await Task.FromResult(true);
}
//public Task> GetByConditionAsync(Expression> expression)
//{
// List pushMsgToList = DbContext.Set().Where(expression).AsEnumerable().ToList();
// List userList = DbContext.TSYS_User.ToList();
// var query = from a in pushMsgToList
// join b in userList
// on a.C_PushPersonCode equals b.C_UserID
// select new TmtnPushMsgToViewModel
// {
// C_ID = a.C_ID,
// C_DevStoreCode = a.C_DevStoreCode,
// C_PushPersonCode = a.C_PushPersonCode,
// C_MsgTypeCode = a.C_MsgTypeCode,
// C_PushTypeCode = a.C_PushTypeCode,
// C_PushPersonName = b.C_Name,
// };
// return query.ToList();
// //return Task.FromResult(DbContext.Set().Where(expression).AsEnumerable());
//}
}
}