using AutoMapper; using LinqKit; using Ropin.Inspection.Common.Accessor.Interface; using Ropin.Inspection.Common.Helper; using Ropin.Inspection.Model; using Ropin.Inspection.Model.Entities; using Ropin.Inspection.Repository; using Ropin.Inspection.Repository.Interface; using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Net.Http; using System.Text; using System.Threading.Tasks; namespace Ropin.Inspection.Service { public class TmtnPushMsgResultService : ITmtnPushMsgResultService { private readonly ITmtnPushMsgResultRepository _repository; private readonly IMapper _mapper; private readonly IClaimsAccessor _claims; private readonly IHttpClientFactory _httpClientFactory; private readonly ITmtnPushMsgToRepository _tmtnPushMsgToRepository; private readonly ITsysMessageRepository _tsysMessageRepository; public TmtnPushMsgResultService( IClaimsAccessor claims, ITmtnPushMsgResultRepository repository, IHttpClientFactory httpClientFactory, ITmtnPushMsgToRepository tmtnPushMsgToRepository, IMapper mapper, ITsysMessageRepository tsysMessageRepository) { _repository = repository; _mapper = mapper; _claims = claims; _httpClientFactory = httpClientFactory; _tmtnPushMsgToRepository = tmtnPushMsgToRepository; _tsysMessageRepository = tsysMessageRepository; } public async Task CreateOneAsync(TmtnPushMsgResultViewModel viewModel) { var content = _mapper.Map(viewModel); content.C_ID = Guid.NewGuid().ToString(); content.C_CreateBy = _claims.ApiUserId; content.D_CreateOn = DateTime.Now; content.C_Status = "1"; _repository.Create(content); var result = await _repository.SaveAsync(); if (!result) { throw new Exception("创建失败"); } } public async Task DeleteAsync(Guid id) { var content = await _repository.GetByIdAsync(id.ToString()); if (content == null) { throw new Exception("数据库中没有此数据"); } //_repository.Delete(content); //var result = await _repository.SaveAsync(); content.C_LastUpdatedBy = _claims.ApiUserId; content.D_LastUpdatedOn = DateTime.Now; content.C_Status = "0"; _repository.Update(content); var result = await _repository.SaveAsync(); if (!result) { throw new Exception("删除失败"); } } public async Task DeleteAsync(string code) { var items = await _repository.GetByConditionAsync(C => C.C_ID == code); var content = items.FirstOrDefault(); if (content == null) { throw new Exception("没有此数据"); } content.C_LastUpdatedBy = _claims.ApiUserId; content.D_LastUpdatedOn = DateTime.Now; content.C_Status = "0"; _repository.Update(content); var result = await _repository.SaveAsync(); if (!result) { throw new Exception("删除失败"); } } public async Task> GetAllAsync() { var pagedList = await _repository.GetAllAsync(); var contentDtoList = _mapper.Map>(pagedList.Where(i => i.C_Status == "1").ToList()); return contentDtoList.ToList(); } public async Task> GetConditionAsync(TmtnPushMsgResultSearchModel searchModel) { IEnumerable list = await _repository.GetConditionAsync(searchModel); if (list.Count()>0&&list.FirstOrDefault()==null) { return new List(); } var q = from b in list group b by b.C_Content into g select new TMTN_PushMsgResultModel { C_ID = g.OrderByDescending(t => t.C_Status).First().C_ID, C_PushMsgToCode = g.OrderByDescending(t => t.C_Status).First().C_PushMsgToCode, C_Content = g.OrderByDescending(t => t.C_Status).First().C_Content, C_URL = g.OrderByDescending(t => t.C_Status).First().C_URL, C_DevStoreCode = g.OrderByDescending(t => t.C_Status).First().C_DevStoreCode, C_MsgTypeCode = g.OrderByDescending(t => t.C_Status).First().C_MsgTypeCode, C_MsgTypeName = g.OrderByDescending(t => t.C_Status).First().C_MsgTypeName, C_Subject = g.OrderByDescending(t => t.C_Status).First().C_Subject, D_CreateOn = g.OrderByDescending(t => t.C_Status).First().D_CreateOn, C_CreateBy = g.OrderByDescending(t => t.C_Status).First().C_CreateBy, C_Status = g.OrderByDescending(t => t.C_Status).First().C_Status, C_LastUpdatedBy = g.OrderByDescending(t => t.C_Status).First().C_LastUpdatedBy, D_LastUpdatedOn = g.OrderByDescending(t => t.C_Status).First().D_LastUpdatedOn, IsVideo = g.OrderByDescending(t => t.C_Status).First().IsVideo, I_GenerationType = g.OrderByDescending(t => t.C_Status).First().I_GenerationType, I_MsgStatus = g.OrderByDescending(t => t.C_Status).First().I_MsgStatus //PushMsg = g.First().PushMsg }; var viewList = q.ToList(); searchModel.TotalCount = viewList.Count(); IEnumerable dtoList = _mapper.Map, IEnumerable>(viewList); dtoList = searchModel.IsPagination ? dtoList.Skip((searchModel.PageIndex - 1) * searchModel.PageSize).Take(searchModel.PageSize).ToList() : dtoList; return dtoList; } public async Task GetByIdAsync(string id) { var content = await _repository.GetByIdAsync(id); var contentDto = _mapper.Map(content); return contentDto; } public async Task UpdateAsync(string code, TmtnPushMsgResultUpdateModel updateModel) { var items = await _repository.GetByConditionAsync(C => C.C_ID == code); var content = items.FirstOrDefault(); if (content == null) { throw new Exception("没有此数据"); } content.C_LastUpdatedBy = _claims.ApiUserId; content.D_LastUpdatedOn = DateTime.Now; _mapper.Map(updateModel, content, typeof(TmtnPushMsgResultUpdateModel), typeof(TMTN_PushMsgResult)); _repository.Update(content); var result = await _repository.SaveAsync(); if (result&& updateModel.C_MsgStatus!=null) { await _tsysMessageRepository.UpdateMsgStatus(updateModel.C_MessageCode, updateModel.C_MsgStatus); } if (!result) { throw new Exception("更新失败"); } } public async Task GetPushMsgResultContentAsync(TmtnPushMsgResultSearchModel searchModel) { DevAlarmCount data = await _repository.GetPushMsgResultContentAsync(searchModel); return data; } public async Task UpdateStatusAsync(string msgCode, string Status, string userId) { var result = await _repository.UpdateStatus(msgCode, Status, userId); if (!result) { throw new Exception("更新失败"); } } public Task UpdateOneAsync(TmtnPushMsgResultViewModel viewModel, params string[] fields) { throw new NotImplementedException(); } public Task IsExistAsync(string id) { throw new NotImplementedException(); } public Task> GetByConditionAsync(Expression> expression) { throw new NotImplementedException(); } public Task UpdateAsync(string code, TpntAreaUpdateModel updateModel) { throw new NotImplementedException(); } public Task> GetConditionAsync(TpntAreaSearchModel searchModel) { throw new NotImplementedException(); } } }