Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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));
        }
Exemplo n.º 5
0
        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;
            }
        }
Exemplo n.º 6
0
        /// <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);
            }
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        //定时器轮询方法
        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;
                }
            }
        }
Exemplo n.º 9
0
        /// <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);
            }
        }