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<TMTN_PushMsgTo, string>, ITmtnPushMsgToRepository { public TmtnPushMsgToRepository(InspectionDbContext DbContext) : base(DbContext) { } public Task<int> 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<int> 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<IEnumerable<TSYS_User>> 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<TSYS_User>(DbContext.Database, sql, parameters); return Task.FromResult(contentlist); } public Task<IEnumerable<TmtnPushMsgToUserViewModel>> 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<TmtnPushMsgToUserViewModel>(DbContext.Database, sql, parameters); return Task.FromResult(contentlist); } public Task<TmtnUserPushMsgToViewModel> GetPushMsgTosByAsync(string devStoreCode, string userCode) { List<TMTN_PushMsgTo> pushMsgToList = DbContext.TMTN_PushMsgTo.Where(x=>x.C_DevStoreCode == devStoreCode && x.C_PushPersonCode == userCode).ToList(); List<TMTN_PushMsgTo> pushMsgToMsgTypeList = new List<TMTN_PushMsgTo>(pushMsgToList); List<TMTN_PushMsgTo> pushMsgToPushTypeList = new List<TMTN_PushMsgTo>(pushMsgToList); List<string> msgTypeList = pushMsgToMsgTypeList.Select(y => y.C_MsgTypeCode).ToList(); List<string> 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<bool> PushAlarmMsgAsync(TpushMsgModel pushModel) { IEnumerable<TMTN_PushMsgTo> pushMsgTolist = DbContext.Set<TMTN_PushMsgTo>().Where(i => i.C_DevStoreCode.Equals(pushModel.C_DevStoreCode)).AsEnumerable(); IList<TSYS_User> userList = DbContext.Set<TSYS_User>().Where(x => x.C_Status == "1").AsEnumerable().ToList(); IList<TBDM_CodeDetail> tBDMCodeDetailList = DbContext.Set<TBDM_CodeDetail>().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<string> sendUserWechatIDList = new List<string>(); IList<TMTN_PushMsgResult> pushMsgResultList = new List<TMTN_PushMsgResult>(); 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 = "<p><td>设备编号:</td>" + pushModel.DevNumber + "</p>" + "<p><td>设备名称:</td>" + pushModel.DevName + "</p>" + "<p><td>消息内容:</td>" + pushModel.Msg + "</p>" + "<p><td>设备地址:</td>" + pushModel.DevAddress + "</p>" + "<p><td> 报警时间:</td> " + DateTime.Now + " </p> " ; 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<TMTN_PushMsgResult>(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<IEnumerable<TmtnPushMsgToViewModel>> GetByConditionAsync(Expression<Func<TMTN_PushMsgTo, bool>> expression) //{ // List<TMTN_PushMsgTo> pushMsgToList = DbContext.Set<TMTN_PushMsgTo>().Where(expression).AsEnumerable().ToList(); // List<TSYS_User> 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<T>().Where(expression).AsEnumerable()); //} } }