public async Task <SendMsgDTO> GetMessageForRead(Guid messageId, Guid userId, Guid recieverId) { var message = await _messageRepository .GetAsync(messageId); if (recieverId != null) { if (message.MessageRecievers .Where(x => x.UserId == userId) .FirstOrDefault().SeenDate == null) { message.MessageRecievers .Where(x => x.UserId == userId) .FirstOrDefault().SeenDate = DateTime.UtcNow; var res = await _messageRepository.UpdateAsync(message, messageId); await _unitOfWork.SaveAsync(); } } var dto = new SendMsgDTO(); _mapper.Map(message, dto); dto.MessageSendersId = message.MessageRecievers.FirstOrDefault(x => x.UserId == userId).MessageSenderId; return(dto); }
public async Task <SendMsgDTO> CreateMessageAsync(Guid creatorId) { var message = new Message() { CreatedById = creatorId, MessageCode = await GenerateMessageCodeAsync(), }; message.MessageNumber = GenerateMessageNumber(message.MessageCode); await _unitOfWork.MessageRepository.AddAsync(message); var messageSender = new MessageSender { MessageId = message.Id, UserId = creatorId, }; await _messageSenderRepository.AddAsync(messageSender); await _unitOfWork.SaveAsync(); var messageDto = new SendMsgDTO(); _mapper.Map(message, messageDto); messageDto.MessageSendersId = messageSender.Id; return(messageDto); }
private async Task <List <MessageReciever> > MessageRecieversListAsync(SendMsgDTO messageDto, MessageSender messageSender) { var messageReciever = new List <MessageReciever>(); if (messageDto.Cc != null) { foreach (var item in messageDto.Cc) { messageReciever.Add(new MessageReciever() { MessageId = messageDto.Id, IsCc = true, MessageSender = messageSender, UserId = item, }); } } foreach (var item in messageDto.To) { messageReciever.Add(new MessageReciever() { MessageId = messageDto.Id, IsCc = false, MessageSender = messageSender, UserId = item }); } return(messageReciever); }
public async Task <IActionResult> DraftMessageAsync(SendMsgDTO messageDto) { var senderId = _userService.GetUSerIDFromUserClaims(User.Claims); if (await _messageServices.MessageAction(messageDto, false, senderId)) { return(Ok(ResponseMessage.Ok)); } return(BadRequest(ResponseMessage.BadRequest)); }
public async Task <SendMsgDTO> GetReplyMessageAsync(Guid senderId, Guid replyToMessageId) { try { var replyToMessage = await _messageRepository .GetAsync(replyToMessageId); var message = new Message() { CreatedById = senderId, MessageCode = await GenerateMessageCodeAsync(), Subject = $"پاسخ به نامه {replyToMessage.MessageNumber}", // TODO MessageNumber = null, }; var t1 = _messageRepository.AddAsync(message); var sender = new MessageSender() { UserId = senderId, MessageId = message.Id, ReplyToId = message.Id, Message = message, }; var t2 = _messageSenderRepository.AddAsync(sender); var reciever = new MessageReciever() { IsCc = false, MessageId = message.Id, MessageSenderId = sender.Id, UserId = message.CreatedById, }; var t3 = _messageRecieverRepository.AddAsync(reciever); Task.WaitAll(t1, t2, t3); await _unitOfWork.SaveAsync(); var replyMessageDto = new SendMsgDTO(); _mapper.Map(message, replyMessageDto); replyMessageDto.MessageSendersId = sender.Id; return(replyMessageDto); } catch (Exception e) { throw; } }
/// <summary> /// if isSent is true send the message and if be false draft it /// </summary> /// <param name="messageDto"></param> /// <param name="isSent"></param> /// <returns></returns> public async Task <bool> MessageAction(SendMsgDTO messageDto, bool isSent, Guid senderId) { try { if (messageDto.To == null) { return(false); } var message = await _unitOfWork.MessageRepository.GetAsync(messageDto.Id); if (message == null) { return(false); } _mapper.Map(messageDto, message); var messageSender = await _messageSenderRepository .GetAsync(messageDto.MessageSendersId); if (isSent) { messageSender.IsSent = true; messageSender.Message.CreateOn = DateTime.UtcNow; } var messageRecieversToRemove = messageSender.MessageRecievers.ToList(); if (messageRecieversToRemove != null) { RemoveRecievers(messageRecieversToRemove); } var messageRecievers = await MessageRecieversListAsync(messageDto, messageSender); var messageResult = await _messageRepository.UpdateAsync(message, message.Id); var messageSenderResult = await _messageSenderRepository.UpdateAsync(messageSender, messageSender.Id); var messageRecieverResult = await _messageRecieverRepository.AddRangeAsync(messageRecievers); await _unitOfWork.SaveAsync(); return(true); } catch (Exception e) { return(false); } }
public async Task <SendMsgDTO> GetMessageForEditAsync(Guid id) { var messageSender = await _messageSenderRepository .GetAsync(id); var message = await _messageRepository .GetAsync(messageSender.MessageId); var dto = new SendMsgDTO(); _mapper.Map(message, dto); dto.MessageSendersId = id; return(dto); }
//定时器轮询方法 public void Run() { /* * if (setterDao.ListAll() == null) * { * //网路不通 或 未注册 不上传 * return; * }*/ //Console.WriteLine("大数据线程实例化run方法-执行:"); var result = uploadManagementService.ListLimit20(); if (result == null) { ;//Console.WriteLine("大数据线程RUN方法-result==null"); } foreach (var uploadManagementone in result) { SendMsgDTO sendMsgDto = new SendMsgDTO(); UploadManagement uploadManagement = new UploadManagement(); uploadManagement = uploadManagementone; //选择是那一个类,将类名进行赋值 switch (uploadManagement.UM_DataTable) { case "bdl_activity": sendMsgDto.dataType = "ActivityEntity"; break; case "bdl_member": sendMsgDto.dataType = "MemberEntity"; break; case "bdl_personal_setting": sendMsgDto.dataType = "PersonalSettingEntity"; break; case "bdl_skeleton_length": sendMsgDto.dataType = "SkeletonLengthEntity"; break; case "bdl_system_setting": sendMsgDto.dataType = "SystemSettingEntity"; break; case "bdl_training_activity_record": sendMsgDto.dataType = "TrainingActivityRecordEntity"; break; case "bdl_training_course": sendMsgDto.dataType = "TrainingCourseEntity"; break; case "bdl_training_device_record": sendMsgDto.dataType = "TrainingDeviceRecordEntity"; break; case "bdl_training_plan": sendMsgDto.dataType = "TrainingPlanEntity"; break; default: Console.WriteLine("没有这个表"); Console.WriteLine(uploadManagement.UM_DataTable); break; } //sendMsgDto.dataType = "TrainingCourseEntity"; sendMsgDto.dataExec = uploadManagement.UM_Exec; sendMsgDto.dataId = uploadManagement.UM_DataId; sendMsgDto.belongProduct = "aisport"; //sendMsgDto.content = JsonTools.Obj2JSONStrNew <TrainingCourseEntity> // Console.WriteLine("大数据线程实例化Upload方法-table:" + uploadManagement.UM_DataTable); //1.查询 ServiceResult serviceResult = uploadManagementService.GetServiceResult(uploadManagement); sendMsgDto.content = serviceResult.Data; int i = 1; Console.WriteLine("这里是上传表的每一条内容" + i + "数字" + uploadManagement.Pk_UM_Id + uploadManagement.UM_DataId + uploadManagement.UM_Exec); i++; if (serviceResult == null) { //没有查到返回 Console.WriteLine("没有查到信息"); return; } //用于接受云服务器端返回的字符串 string strWebResult = ""; //创建一个新的用来接受服务器端返回结果的实体类对象 WebResult webResult = new WebResult(); //固定的url serviceResult.URL = "msg"; serviceResult.Data = JsonTools.Obj2JSONStrNew <SendMsgDTO>(sendMsgDto); try { //2.上传 //返回的值 strWebResult = HttpSender.POSTByJsonStr(serviceResult.URL, serviceResult.Data); } catch { Console.WriteLine("发送失败"); } if (strWebResult != null && strWebResult != "") { //将接受云服务器的字符串装换成实体类对象 webResult = JsonTools.DeserializeJsonToObject <WebResult>(strWebResult); //3.根据结果删除,返回信息中是否包括0和1,包括就删除 if (webResult.result == "0") { uploadManagementService.deleteByPrimaryKey(uploadManagement.Pk_UM_Id); } else if (webResult.result == "1") { uploadManagementService.deleteByPrimaryKey(uploadManagement.Pk_UM_Id); } else if (webResult.result == "2") { break;//不做处理,五分钟后再发,目的是等待云服务器建表 } } else { Console.WriteLine("云端返回为空"); //return; } } }
/// <summary> /// 定时器轮询方法 /// </summary> /// <param name="threadCount"></param> /// public void Run() { if (setterDao.ListAll() == null) { //网路不通 或 未注册 不上传//Console.WriteLine("大数据线程实例化run方法-执行:"); return; } //从上传表查询30条数据 var result = uploadManagementService.ListLimit30(); if (result == null) { Console.WriteLine("大数据线程RUN方法-result==null"); } //遍历查询到的数据集合 foreach (var uploadManagement in result) { //生成新的SendMsgDTO对象(上传云平台的最终对象) SendMsgDTO sendMsgDto = new SendMsgDTO(); //根据表名,给字段dataType(数据所在实体类)赋值 switch (uploadManagement.UM_DataTable) { case "bdl_auth": sendMsgDto.dataType = "Auther"; break; case "bdl_customdata": sendMsgDto.dataType = "CustomData"; break; case "bdl_datacode": sendMsgDto.dataType = "DataCode"; break; case "bdl_deviceprescription": sendMsgDto.dataType = "DevicePrescription"; break; case "bdl_deviceset": sendMsgDto.dataType = "DeviceSet"; break; case "bdl_devicesort": sendMsgDto.dataType = "DeviceSort"; break; case "bdl_onlinedevice": sendMsgDto.dataType = "OnlineDevice"; break; case "bdl_physicalpower": sendMsgDto.dataType = "PhysicalPower"; break; case "bdl_prescriptionresult": sendMsgDto.dataType = "PrescriptionResult"; break; case "bdl_set": sendMsgDto.dataType = "Setter"; break; case "bdl_symptominfo": sendMsgDto.dataType = "SymptomInfo"; break; case "bdl_traininfo": sendMsgDto.dataType = "TrainInfo"; break; case "bdl_user": sendMsgDto.dataType = "User"; break; case "bdl_error": sendMsgDto.dataType = "Error"; break; default: Console.WriteLine("没找到对应的表"); //Console.WriteLine(uploadManagement.UM_DataTable); break; } sendMsgDto.dataExec = uploadManagement.UM_Exec; //操作方式 0是add(insert) 1是update sendMsgDto.dataId = uploadManagement.UM_DataId; //数据的id sendMsgDto.belongProduct = "Recovery"; //项目名称必须是这个,与云平台相一致 if (sendMsgDto.dataType == "Error") { sendMsgDto.belongProduct = "RecoveryError"; } // Console.WriteLine("大数据线程实例化Upload方法-table:" + uploadManagement.UM_DataTable); //1.根据上传表内容查询具体数据(这里的数据是已经转换成json串形式),赋值给字段content ServiceResult serviceResult = null; try { serviceResult = uploadManagementService.GetServiceResult(uploadManagement); } catch (Exception e) { logger.Error("uploadManagement上传云平台失败"); } /* * int i = 1; * Console.WriteLine("这里是上传表的每一条内容" + i + "数字" + uploadManagement.Pk_UM_Id + uploadManagement.UM_DataId + uploadManagement.UM_Exec); * i++;*/ if (serviceResult == null) { //没有查到返回 Console.WriteLine("上传表查询失败____________________"); logger.Error("上传表查询失败," + DateTime.Now.ToString()); continue; } sendMsgDto.content = serviceResult.Data; //用于接受云服务器端返回的字符串 string strWebResult = ""; //创建一个新的用来接受服务器端返回结果的对象 WebResult webResult = new WebResult(); //这里是url的后缀,每一条数据都是发送到这个地方 serviceResult.URL = "msg"; //将发送的实体类SendMsgDTO装成json串 serviceResult.Data = JsonTools.Obj2JSONStrNew <SendMsgDTO>(sendMsgDto); //2.上传和接受云服务器端返回的字符串 //strWebResult = HttpSender.POSTByJsonStr(serviceResult.URL, serviceResult.Data); strWebResult = HTTPClientHelper.HttpPost(serviceResult.Data); //将接受到的字符串赋值给webResult对象 webResult = JsonTools.DeserializeJsonToObject <WebResult>(strWebResult); //Console.WriteLine("线程"+ threadCount +" id: "+webResult.dataId +"type: "+ webResult.dataType + "结果:"+webResult.result); //3.根据返回结果删除 //返回值result为0或1删除上传表所对应的的内容,2则跳出循环,不做处理,隔五分钟再次上传 if (webResult.result == "0") { uploadManagementService.deleteByPrimaryKey(uploadManagement.Pk_UM_Id); } else if (webResult.result == "1") { uploadManagementService.deleteByPrimaryKey(uploadManagement.Pk_UM_Id); } else if (webResult.result == "2") { Console.WriteLine("线程"); break;//不做处理,五分钟后再发,目的是等待云服务器建表 } else { logger.Error("失败的内容:" + webResult.result + "," + DateTime.Now.ToString()); //Console.WriteLine("失败的内容:" + webResult.result); } //Console.WriteLine("-----------------------------返回结果 dataid"+webResult.dataId +"type:"+webResult.dataType+"result:"+webResult.result); } }