Ejemplo n.º 1
0
 /// <summary>
 /// 按用户群发消息
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 protected void btnSendToUsers_Click(object sender, EventArgs e)
 {
     if (cblUser.SelectedIndex >= 0)
     {
         string        userName = lbPublicAccount.SelectedValue;
         ErrorMessage  errorMessage;
         List <string> openIds = new List <string>();
         foreach (ListItem item in cblUser.Items)
         {
             if (item.Selected)
             {
                 openIds.Add(item.Value);
             }
         }
         string content = txtContent.Text;
         long   msgId   = MassMessage.Send(userName, openIds, MassMessageTypeEnum.text, content, out errorMessage);
         if (errorMessage.IsSuccess)
         {
             ltrMessage.Text = "群发消息成功。";
             rblMassMessage.Items.Add(new ListItem(string.Format("id:{0},text:{1}", msgId, content), msgId.ToString()));
         }
         else
         {
             ltrMessage.Text = string.Format("群发消息失败。{0}", errorMessage);
         }
     }
 }
Ejemplo n.º 2
0
 /// <summary>
 /// 查询群发消息状态
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 protected void btnGetStatus_Click(object sender, EventArgs e)
 {
     if (rblMassMessage.SelectedIndex >= 0)
     {
         string       userName = lbPublicAccount.SelectedValue;
         ErrorMessage errorMessage;
         long         msgId   = long.Parse(rblMassMessage.SelectedValue);
         bool         success = MassMessage.GetStatus(userName, msgId, out errorMessage);
         if (errorMessage.IsSuccess)
         {
             ltrMessage.Text = string.Format("消息群发{0}。", success ? "成功" : "失败");
         }
         else
         {
             ltrMessage.Text = string.Format("获取消息群发状态失败。{0}", errorMessage);
         }
     }
 }
Ejemplo n.º 3
0
 /// <summary>
 /// 删除群发消息
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 protected void btnDelete_Click(object sender, EventArgs e)
 {
     if (rblMassMessage.SelectedIndex >= 0)
     {
         string       userName     = lbPublicAccount.SelectedValue;
         long         msgId        = long.Parse(rblMassMessage.SelectedValue);
         ErrorMessage errorMessage = MassMessage.Delete(userName, msgId);
         if (errorMessage.IsSuccess)
         {
             ltrMessage.Text = "删除消息成功。";
             rblMassMessage.Items.Remove(rblMassMessage.SelectedItem);
         }
         else
         {
             ltrMessage.Text = string.Format("删除消息失败。{0}", errorMessage);
         }
     }
 }
Ejemplo n.º 4
0
 /// <summary>
 /// 预览群发消息
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 protected void btnPreview_Click(object sender, EventArgs e)
 {
     if (cblUser.SelectedIndex >= 0)
     {
         string       userName = lbPublicAccount.SelectedValue;
         ErrorMessage errorMessage;
         string       openId  = cblUser.SelectedValue;
         string       content = txtContent.Text;
         long         msgId   = MassMessage.Preview(userName, openId, MassMessageTypeEnum.text, content, out errorMessage);
         if (errorMessage.IsSuccess)
         {
             ltrMessage.Text = "预览消息成功。";
             rblMassMessage.Items.Add(new ListItem(string.Format("id:{0},text:{1}", msgId, content), msgId.ToString()));
         }
         else
         {
             ltrMessage.Text = string.Format("预览消息失败。{0}", errorMessage);
         }
     }
 }
Ejemplo n.º 5
0
 /// <summary>
 /// 按分组群发消息
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 protected void btnSendToGroup_Click(object sender, EventArgs e)
 {
     if (rblGroup.SelectedIndex >= 0)
     {
         string       userName = lbPublicAccount.SelectedValue;
         ErrorMessage errorMessage;
         bool         isToAll = string.IsNullOrWhiteSpace(rblGroup.SelectedValue);
         string       groupId = isToAll ? "" : rblGroup.SelectedValue;
         string       content = txtContent.Text;
         long         msgId   = MassMessage.Send(userName, isToAll, groupId, MassMessageTypeEnum.text, content, out errorMessage);
         if (errorMessage.IsSuccess)
         {
             ltrMessage.Text = "群发消息成功。";
             rblMassMessage.Items.Add(new ListItem(string.Format("id:{0},text:{1}", msgId, content), msgId.ToString()));
         }
         else
         {
             ltrMessage.Text = string.Format("群发消息失败。{0}", errorMessage);
         }
     }
 }
Ejemplo n.º 6
0
        public UpdateRecipientsResponse UpdateRecipients(UpdateRecipientsRequest request)
        {
            var validationResult = _massMessageQueries.GetValidationResult(request);

            if (!validationResult.IsValid)
            {
                throw new RegoValidationException(validationResult);
            }

            using (var scope = CustomTransactionScope.GetTransactionScope())
            {
                if (!request.Id.HasValue)
                {
                    DeleteUnsentMassMessages();
                }

                MassMessage massMessage;

                if (request.Id.HasValue)
                {
                    massMessage = _messagingRepository.MassMessages
                                  .Include(x => x.Recipients.Select(y => y.Language))
                                  .Single(x => x.Id == request.Id);
                }
                else
                {
                    massMessage = new MassMessage
                    {
                        Id      = Guid.NewGuid(),
                        AdminId = _actorInfoProvider.Actor.Id
                    };

                    _messagingRepository.MassMessages.Add(massMessage);
                }

                massMessage.IpAddress = request.IpAddress;

                if (request.UpdateRecipientsType == UpdateRecipientsType.SelectSingle)
                {
                    massMessage.Recipients.Add(_messagingRepository.Players
                                               .Include(x => x.Language)
                                               .Single(x => x.Id == request.PlayerId));
                }
                else if (request.UpdateRecipientsType == UpdateRecipientsType.UnselectSingle)
                {
                    massMessage.Recipients.Remove(massMessage.Recipients.Single(x => x.Id == request.PlayerId));
                }
                else if (request.UpdateRecipientsType == UpdateRecipientsType.RecipientsListUnselectAll)
                {
                    massMessage.Recipients.Clear();
                }
                else
                {
                    var playerIds = _massMessageQueries.CreateMassMessagePlayerQuery(request.SearchPlayersRequest)
                                    .Select(x => x.Id);

                    if (request.UpdateRecipientsType == UpdateRecipientsType.SearchResultSelectAll)
                    {
                        var players = _messagingRepository.Players
                                      .Include(x => x.Language)
                                      .Where(x => playerIds.Contains(x.Id));

                        foreach (var player in players)
                        {
                            massMessage.Recipients.Add(player);
                        }
                    }
                    else
                    {
                        var recipients = massMessage.Recipients.Where(x => playerIds.Contains(x.Id)).ToArray();

                        foreach (var recipient in recipients)
                        {
                            massMessage.Recipients.Remove(recipient);
                        }
                    }
                }

                _messagingRepository.SaveChanges();

                scope.Complete();

                IEnumerable <Interface.Data.Language> languages = null;

                if (massMessage.Recipients.Any())
                {
                    var languageEntities = massMessage.Recipients.GroupBy(x => x.LanguageCode).Select(x => x.First().Language);
                    languages = Mapper.Map <List <Interface.Data.Language> >(languageEntities);
                }

                return(new UpdateRecipientsResponse
                {
                    Id = massMessage.Id,
                    HasRecipients = massMessage.Recipients.Any(),
                    Languages = languages
                });
            }
        }