public string AddReceiver(string contactId, string receiverId)
 {
     string returnValue = string.Empty;
     // 需要判断是否存在
     if (this.Exists(new KeyValuePair<string, object>(BaseContactDetailsEntity.FieldContactId,contactId)
         , new KeyValuePair<string, object>(BaseContactDetailsEntity.FieldReceiverId, receiverId)
         , new KeyValuePair<string, object>(BaseContactDetailsEntity.FieldCategory, "User")))
     {
         return string.Empty;
     }
     BaseUserManager userManager = new BaseUserManager(DbHelper, UserInfo);
     BaseUserEntity useEntity = userManager.GetEntity(int.Parse(receiverId));
     BaseContactDetailsEntity contactDetailsEntity = new BaseContactDetailsEntity();
     // 这里一定要给个不可猜测的主键,为了提高安全性
     contactDetailsEntity.Id = BaseBusinessLogic.NewGuid();
     contactDetailsEntity.ContactId = contactId;
     contactDetailsEntity.Category = "User";
     contactDetailsEntity.ReceiverId = useEntity.Id.ToString();
     contactDetailsEntity.ReceiverRealName = useEntity.RealName;
     contactDetailsEntity.IsNew = 0;
     contactDetailsEntity.Enabled = 1;
     contactDetailsEntity.NewComment = 0;
     returnValue = this.Add(contactDetailsEntity);
     // 这里需要重新计算发送给了几个人,几个人已经阅读的功能
     this.SetReadState(contactId);
     return returnValue;
 }
 /// <summary>
 /// 发送给自己一份
 /// </summary>
 /// <param name="contactId">联络单主键</param>
 public string Send(string contactId)
 {
     BaseUserManager userManager = new BaseUserManager(DbHelper, UserInfo);
     BaseUserEntity useEntity =  useEntity = userManager.GetEntity(int.Parse(UserInfo.Id));
     BaseContactDetailsEntity contactDetailsEntity = new BaseContactDetailsEntity();
     // 这里一定要给个不可猜测的主键,为了提高安全性
     contactDetailsEntity.Id = BaseBusinessLogic.NewGuid();
     contactDetailsEntity.ContactId = contactId;
     contactDetailsEntity.Category = "User";
     contactDetailsEntity.ReceiverId = useEntity.Id.ToString();
     contactDetailsEntity.ReceiverRealName = useEntity.RealName;
     contactDetailsEntity.IsNew = 0;
     contactDetailsEntity.Enabled = 1;
     contactDetailsEntity.NewComment = 0;
     BaseContactDetailsManager contactDetailsManager = new BaseContactDetailsManager(DbHelper, UserInfo);
     return contactDetailsManager.Add(contactDetailsEntity, false);
 }
 /// <summary>
 /// 发送联络单
 /// </summary>
 /// <param name="contactId">联络单主键</param>
 /// <param name="receiverIds">接收者</param>
 /// <returns>影响行数</returns>
 public int Send(string contactId, string[] receiverIds)
 {
     int returnValue = 0;
     // 是否给自己发过这封邮件
     bool findSend = false;
     BaseContactDetailsManager contactDetailsManager = new BaseContactDetailsManager(DbHelper, UserInfo);
     BaseUserManager userManager = new BaseUserManager(DbHelper, UserInfo);
     BaseUserEntity useEntity = null;
     BaseContactDetailsEntity contactDetailsEntity = null;
     for (int i = 0; i < receiverIds.Length; i++)
     {
         useEntity = userManager.GetEntity(int.Parse(receiverIds[i]));
         // 是有效的用户,而且是未必删除的用户才发邮件
         if (useEntity.Enabled == 1 && useEntity.DeletionStateCode == 0)
         {
             contactDetailsEntity = new BaseContactDetailsEntity();
             // 这里一定要给个不可猜测的主键,为了提高安全性
             contactDetailsEntity.Id = BaseBusinessLogic.NewGuid();
             contactDetailsEntity.ContactId = contactId;
             contactDetailsEntity.Category = "User";
             contactDetailsEntity.ReceiverId = useEntity.Id.ToString();
             contactDetailsEntity.ReceiverRealName = useEntity.RealName;
             contactDetailsEntity.IsNew = 1;
             contactDetailsEntity.Enabled = 1;
             contactDetailsEntity.NewComment = 0;
             contactDetailsManager.Add(contactDetailsEntity, false);
         }
         // 若已经有发过,就不用再判断了
         if (!findSend)
         {
             if (UserInfo.Id.Equals(receiverIds[i]))
             {
                 findSend = true;
             }
         }
         returnValue++;
     }
     // 没有给自己发过
     if (!findSend)
     {
         // 发送给自己一份
         this.Send(contactId);
         returnValue++;
     }
     // 设置总共发送了几个人
     this.SetProperty(new KeyValuePair<string, object>(BaseContactEntity.FieldId, contactId), new KeyValuePair<string, object>(BaseContactEntity.FieldSendCount, receiverIds.Length.ToString()));
     return returnValue;
 }
        /// <summary>
        /// 发送联络单
        /// </summary>
        /// <param name="receiverIds">接收者</param>
        /// <param name="organizeIds">组织机构数组</param>
        /// <param name="roleIds">角色数组</param>
        /// <returns>影响行数</returns>
        public int Send(string contactId, string[] receiverIds, string[] organizeIds, string[] roleIds)
        {
            BaseUserManager userManager = new BaseUserManager(DbHelper, UserInfo);
            receiverIds = userManager.GetUserIds(receiverIds, organizeIds, roleIds);

            // 删除邮件的处理技巧、发送给部门的、发送给角色的。
            // 删除邮件的列表过滤问题解决
            BaseContactDetailsManager contactDetailsManager = new BaseContactDetailsManager(DbHelper, UserInfo);
            BaseContactDetailsEntity contactDetailsEntity = null;

            // 组织机构数组
            if (organizeIds != null)
            {
                BaseOrganizeManager organizeManager = new BaseOrganizeManager(DbHelper, UserInfo);
                for (int i = 0; i < organizeIds.Length; i++)
                {
                    contactDetailsEntity = new BaseContactDetailsEntity();
                    // 这里一定要给个不可猜测的主键,为了提高安全性
                    contactDetailsEntity.Id = BaseBusinessLogic.NewGuid();
                    contactDetailsEntity.ContactId = contactId;
                    contactDetailsEntity.Category = "Organize";
                    contactDetailsEntity.ReceiverId = organizeIds[i];
                    contactDetailsEntity.ReceiverRealName = organizeManager.GetProperty(organizeIds[i], BaseOrganizeEntity.FieldFullName);
                    contactDetailsEntity.IsNew = 1;
                    contactDetailsEntity.Enabled = 1;
                    contactDetailsEntity.NewComment = 0;
                    contactDetailsManager.Add(contactDetailsEntity, false);
                }
            }

            // 角色数组
            if (roleIds != null)
            {
                BaseRoleManager roleManager = new BaseRoleManager(DbHelper, UserInfo);
                for (int i = 0; i < roleIds.Length; i++)
                {
                    contactDetailsEntity = new BaseContactDetailsEntity();
                    // 这里一定要给个不可猜测的主键,为了提高安全性
                    contactDetailsEntity.Id = BaseBusinessLogic.NewGuid();
                    contactDetailsEntity.ContactId = contactId;
                    contactDetailsEntity.Category = "Role";
                    contactDetailsEntity.ReceiverId = roleIds[i];
                    contactDetailsEntity.ReceiverRealName = roleManager.GetProperty(roleIds[i], BaseRoleEntity.FieldRealName);
                    contactDetailsEntity.IsNew = 1;
                    contactDetailsEntity.Enabled = 1;
                    contactDetailsEntity.NewComment = 0;
                    contactDetailsManager.Add(contactDetailsEntity, false);
                }
            }

            return this.Send(contactId, receiverIds);
        }
 /// <summary>
 /// 设置实体
 /// </summary>
 /// <param name="baseContactDetailsEntity">实体</param>
 private void SetEntity(SQLBuilder sqlBuilder, BaseContactDetailsEntity baseContactDetailsEntity)
 {
     sqlBuilder.SetValue(BaseContactDetailsEntity.FieldContactId, baseContactDetailsEntity.ContactId);
     sqlBuilder.SetValue(BaseContactDetailsEntity.FieldCategory, baseContactDetailsEntity.Category);
     sqlBuilder.SetValue(BaseContactDetailsEntity.FieldReceiverId, baseContactDetailsEntity.ReceiverId);
     sqlBuilder.SetValue(BaseContactDetailsEntity.FieldReceiverRealName, baseContactDetailsEntity.ReceiverRealName);
     sqlBuilder.SetValue(BaseContactDetailsEntity.FieldIsNew, baseContactDetailsEntity.IsNew);
     sqlBuilder.SetValue(BaseContactDetailsEntity.FieldNewComment, baseContactDetailsEntity.NewComment);
     sqlBuilder.SetValue(BaseContactDetailsEntity.FieldLastViewIP, baseContactDetailsEntity.LastViewIP);
     sqlBuilder.SetValue(BaseContactDetailsEntity.FieldLastViewDate, baseContactDetailsEntity.LastViewDate);
     sqlBuilder.SetValue(BaseContactDetailsEntity.FieldEnabled, baseContactDetailsEntity.Enabled);
     sqlBuilder.SetValue(BaseContactDetailsEntity.FieldDeletionStateCode, baseContactDetailsEntity.DeletionStateCode);
     sqlBuilder.SetValue(BaseContactDetailsEntity.FieldSortCode, baseContactDetailsEntity.SortCode);
     sqlBuilder.SetValue(BaseContactDetailsEntity.FieldDescription, baseContactDetailsEntity.Description);
 }
 /// <summary>
 /// 更新实体
 /// </summary>
 /// <param name="baseContactDetailsEntity">实体</param>
 public int UpdateEntity(BaseContactDetailsEntity baseContactDetailsEntity)
 {
     SQLBuilder sqlBuilder = new SQLBuilder(DbHelper);
     sqlBuilder.BeginUpdate(BaseContactDetailsEntity.TableName);
     this.SetEntity(sqlBuilder, baseContactDetailsEntity);
     if (UserInfo != null)
     {
         sqlBuilder.SetValue(BaseContactDetailsEntity.FieldModifiedUserId, UserInfo.Id);
         sqlBuilder.SetValue(BaseContactDetailsEntity.FieldModifiedBy, UserInfo.RealName);
     }
     sqlBuilder.SetDBNow(BaseContactDetailsEntity.FieldModifiedOn);
     sqlBuilder.SetWhere(BaseContactDetailsEntity.FieldId, baseContactDetailsEntity.Id);
     return sqlBuilder.EndUpdate();
 }
 /// <summary>
 /// 更新
 /// </summary>
 /// <param name="baseContactDetailsEntity">实体</param>
 public int Update(BaseContactDetailsEntity baseContactDetailsEntity)
 {
     return this.UpdateEntity(baseContactDetailsEntity);
 }
 /// <summary>
 /// 获取实体
 /// </summary>
 /// <param name="id">主键</param>
 public BaseContactDetailsEntity GetEntity(string id)
 {
     BaseContactDetailsEntity baseContactDetailsEntity = new BaseContactDetailsEntity(this.GetDataTableById(id));
     return baseContactDetailsEntity;
 }
 /// <summary>
 /// 添加实体
 /// </summary>
 /// <param name="baseContactDetailsEntity">实体</param>
 public string AddEntity(BaseContactDetailsEntity baseContactDetailsEntity)
 {
     string sequence = string.Empty;
     sequence = baseContactDetailsEntity.Id;
     if (baseContactDetailsEntity.SortCode == 0)
     {
         BaseSequenceManager sequenceManager = new BaseSequenceManager(DbHelper, this.Identity);
         sequence = sequenceManager.GetSequence(this.CurrentTableName);
         baseContactDetailsEntity.SortCode = int.Parse(sequence);
     }
     SQLBuilder sqlBuilder = new SQLBuilder(DbHelper, this.Identity, this.ReturnId);
     sqlBuilder.BeginInsert(BaseContactDetailsEntity.TableName, BaseContactDetailsEntity.FieldId);
     if (baseContactDetailsEntity.Id is string)
     {
         this.Identity = false;
     }
     if (!this.Identity)
     {
         sqlBuilder.SetValue(BaseContactDetailsEntity.FieldId, baseContactDetailsEntity.Id);
     }
     else
     {
         if (!this.ReturnId && DbHelper.CurrentDbType == DbTypes.Oracle)
         {
             sqlBuilder.SetFormula(BaseContactDetailsEntity.FieldId, "SEQ_" + this.CurrentTableName.ToUpper() + ".NEXTVAL ");
         }
         else
         {
             if (this.Identity && DbHelper.CurrentDbType == DbTypes.Oracle)
             {
                 if (string.IsNullOrEmpty(sequence))
                 {
                     BaseSequenceManager sequenceManager = new BaseSequenceManager(DbHelper, this.Identity);
                     sequence = sequenceManager.GetSequence(this.CurrentTableName);
                 }
                 baseContactDetailsEntity.Id = sequence;
                 sqlBuilder.SetValue(BaseContactDetailsEntity.FieldId, baseContactDetailsEntity.Id);
             }
         }
     }
     this.SetEntity(sqlBuilder, baseContactDetailsEntity);
     if (UserInfo != null)
     {
         sqlBuilder.SetValue(BaseContactDetailsEntity.FieldCreateUserId, UserInfo.Id);
         sqlBuilder.SetValue(BaseContactDetailsEntity.FieldCreateBy, UserInfo.RealName);
     }
     sqlBuilder.SetDBNow(BaseContactDetailsEntity.FieldCreateOn);
     if (UserInfo != null)
     {
         sqlBuilder.SetValue(BaseContactDetailsEntity.FieldModifiedUserId, UserInfo.Id);
         sqlBuilder.SetValue(BaseContactDetailsEntity.FieldModifiedBy, UserInfo.RealName);
     }
     sqlBuilder.SetDBNow(BaseContactDetailsEntity.FieldModifiedOn);
     if (DbHelper.CurrentDbType == DbTypes.SqlServer && this.Identity)
     {
         sequence = sqlBuilder.EndInsert().ToString();
     }
     else
     {
         sqlBuilder.EndInsert();
     }
     return sequence;
 }
 /// <summary>
 /// 添加
 /// </summary>
 /// <param name="baseContactDetailsEntity">实体</param>
 /// <param name="identity">自增量方式</param>
 /// <returns>主键</returns>
 public string Add(BaseContactDetailsEntity baseContactDetailsEntity, bool identity)
 {
     this.Identity = identity;
     return this.AddEntity(baseContactDetailsEntity);
 }
 /// <summary>
 /// 添加
 /// </summary>
 /// <param name="baseContactDetailsEntity">实体</param>
 /// <returns>主键</returns>
 public string Add(BaseContactDetailsEntity baseContactDetailsEntity)
 {
     return this.AddEntity(baseContactDetailsEntity);
 }
 /// <summary>
 /// 阅读短信后设置状态值和阅读次数
 /// </summary>
 /// <param name="contactDetailsEntity">实体</param>
 /// <returns>影响的条数</returns>
 private int OnRead(BaseContactDetailsEntity contactDetailsEntity)
 {
     int returnValue = 0;
     // 设置邮件发送记录为已读状态
     // 标记为不是新邮件
     contactDetailsEntity.IsNew = 0;
     // 标记为无新评论
     contactDetailsEntity.NewComment = 0;
     // 最后访问日期
     contactDetailsEntity.LastViewDate = DateTime.Now.ToString();
     // 最后访问地址
     contactDetailsEntity.LastViewIP = UserInfo.IPAddress;
     // 更新实体
     returnValue += this.Update(contactDetailsEntity);
     // 阅读新邮件人数加
     this.SetReadState(contactDetailsEntity.ContactId);
     return returnValue;
 }
 private string AddReceiver(BaseUserEntity useEntity, string contactId, string receiverId)
 {
     BaseContactDetailsEntity contactDetailsEntity = new BaseContactDetailsEntity();
     // 这里一定要给个不可猜测的主键,为了提高安全性
     contactDetailsEntity.Id = BaseBusinessLogic.NewGuid();
     contactDetailsEntity.ContactId = contactId;
     contactDetailsEntity.Category = "User";
     contactDetailsEntity.ReceiverId = useEntity.Id.ToString();
     contactDetailsEntity.ReceiverRealName = useEntity.RealName;
     contactDetailsEntity.IsNew = 1;
     contactDetailsEntity.Enabled = 1;
     contactDetailsEntity.NewComment = 0;
     return this.Add(contactDetailsEntity, false);
 }
 /// <summary>
 /// 阅读短信
 /// </summary>
 /// <param name="id">短信ID</param>
 /// <returns>数据集</returns>
 public DataTable Read(string id)
 {
     // 阅读处理
     DataTable dataTable = this.GetDataTableById(id);
     BaseContactDetailsEntity contactDetailsEntity = new BaseContactDetailsEntity(dataTable);
     this.OnRead(contactDetailsEntity);
     // 返回结果
     BaseContactManager contactManager = new BaseContactManager(DbHelper, UserInfo);
     return contactManager.GetDataTableById(contactDetailsEntity.ContactId);
 }