/// <summary>
        /// 保存患教
        /// </summary>
        /// <param name="input">患教输入</param>
        /// <returns>是否保存成功</returns>
        public async Task <OutputBase> Add(AddPatientEduInput input)
        {
            var doctor = await _doctorRepository.GetDoctorById(input.DoctorId);

            if (doctor == null)
            {
                return(OutputBase.Fail("医生Id参数不正确,该医护人员不存在"));
            }
            if (input.PatientIds.Count < 1)
            {
                return(OutputBase.Fail("患者Id数组参数个数不能为0"));
            }
            if (input.CourseList.Count < 1)
            {
                return(OutputBase.Fail("课程列表参数个数不能为0"));
            }
            string content = string.Format("{0}医生向您发送了新的课程", doctor.Name);

            var patientEduList = new List <PatientEducation>();

            foreach (var patientId in input.PatientIds)
            {
                var batchNumber = DateTime.Now.ToString(CommConstant.FullTimeFormatString);
                foreach (var course in input.CourseList)
                {
                    _repository.Add(course, patientId, input.DoctorId, batchNumber);
                }

                var messageEntity = new Message
                {
                    IsRead    = false,
                    OuterId   = batchNumber + input.DoctorId.ToString().PadLeft(18, '0') + patientId.ToString().PadLeft(18, '0'),
                    Content   = content,
                    ReceiveId = patientId,
                    Title     = "患教课程",
                    Type      = (int)MessageTypeEnum.患教课程,
                    SendId    = input.DoctorId,
                    SendName  = doctor.Name,
                    Url       = string.Empty,
                    AppType   = (int)AppTypeEnum.Patient
                };
                _messageRepository.Add(messageEntity);

                #region 异步发送JPush Notification、Message
                ThreadPool.QueueUserWorkItem(delegate
                {
                    new JPushMessage(AppTypeEnum.Patient, (int)JPushKeyEnum.PatientEducation, patientId.ToString(), content, messageEntity.OuterId, _optionsAccessor.IsDevModel).SendPush();
                    new JPushNotification(AppTypeEnum.Patient, (int)JPushKeyEnum.PatientEducation, patientId.ToString(), content, messageEntity.OuterId, _optionsAccessor.IsDevModel).SendPush();
                });
                #endregion
            }

            return(_unitWork.Commit() ? OutputBase.Success("保存成功") : OutputBase.Fail("保存失败"));
        }
Esempio n. 2
0
 public async Task <OutputBase> Add([FromBody] AddPatientEduInput input)
 {
     return(await _service.Add(input));
 }