示例#1
0
        public async Task <IActionResult> SendMessageAsync([FromBody] SendMessageParams messageInfo)
        {
            try
            {
                var contactUser = await userProvider.GetUserWithUserNameAsync(messageInfo.ContactUserName);

                var senderUser = await userProvider.GetCurrentUser();

                if (contactUser == null)
                {
                    return(NotFound(Response <string> .GetError(null, $"There is no user with name: '{messageInfo.ContactUserName}'")));
                }

                var isUserBlocked = userService.IsUserAlreadyBlocked(contactUser, senderUser);
                if (isUserBlocked)
                {
                    return(BadRequest(Response <string> .GetError(null, "User restricted for sending message to contact user")));
                }

                var result = messageService.CreateMessageInfo(messageInfo, senderUser, contactUser);
                if (result != null)
                {
                    return(Ok(Response <CreateMessageInfoResponse> .GetSuccess(result)));
                }
                else
                {
                    return(BadRequest(Response <string> .GetError(null, "Message could not send")));
                }
            }
            catch (Exception ex)
            {
                logger.LogError(ex, ex.Message);
                return(StatusCode(500, Response <string> .GetError(null, "An error occured")));
            }
        }
示例#2
0
        /// <summary>
        /// Sends a message to the given sender (user or group chat)
        /// </summary>
        /// <param name="messageParams"/>Information of message to send/param>
        /// <returns>Message that was sent</returns>
        public Message SendMessage(SendMessageParams messageParams)
        {
            if (messageParams == null)
            {
                throw new ArgumentNullException(nameof(messageParams));
            }

            var request = Utils.GenerateRestRequest(Resources.Method_SendMessage, Method.POST, null,
                                                    new Dictionary <string, object>
            {
                { Resources.Param_ChatId, messageParams.ChatId },
                { Resources.Param_Text, messageParams.Text },
                { Resources.Param_ParseMode, messageParams.ParseMode },
                { Resources.Param_DisableWebPagePreview, messageParams.DisableWebPagePreview },
            });

            if (messageParams.ReplyToMessage != null)
            {
                request.AddParameter(Resources.Param_ReplyToMmessageId, messageParams.ReplyToMessage.MessageId);
            }

            if (messageParams.CustomKeyboard != null)
            {
                request.AddParameter(Resources.Param_ReplyMarkup,
                                     new RestRequest().JsonSerializer.Serialize(messageParams.CustomKeyboard));
            }

            var result = _botClient.Execute <Message>(request);

            return(result.Data);
        }
        public void SendMessageTest()
        {
            Message message = null;

            messageRepository.Setup(x => x.Add(It.IsAny <Message>())).Callback <Message>(m => message = m);



            SendMessageParams param = new SendMessageParams()
            {
                AuthorID = 1,
                Content  = "Siema Heniek",
                Date     = DateTime.Now,
                ThreadID = 10,
                Day      = GameHelper.CurrentDay
            };

            messageService.SendMessage(param);

            Assert.AreEqual(message.AuthorID, param.AuthorID);
            Assert.AreEqual(message.Content, param.Content);
            Assert.AreEqual(message.Date, param.Date);
            Assert.AreEqual(message.ThreadID, param.ThreadID);
            Assert.AreEqual(message.Day, GameHelper.CurrentDay);
        }
示例#4
0
 public BookModelService(IRepository <Client> clientRepository, IRepository <Author> authorRepository, IRepository <BookModel> repository, IOptions <SendMessageParams> options)
 {
     _clientRepository = clientRepository;
     _authorRepository = authorRepository;
     _repository       = repository;
     _options          = options.Value;
 }
示例#5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="toAccount"></param>
        /// <param name="fromAccount"></param>
        /// <param name="messageType"></param>
        /// <param name="message"></param>
        /// <param name="extParams"></param>
        /// <returns></returns>
        public bool SendMessage(string toAccount, string fromAccount, string messageType, string message, IDictionary <string, object> extParams)
        {
            if (false == this.LoadAccessToken())
            {
                return(false);
            }

            var sendMessageUrl = string.Format(SendMessageApi, this.OrgName, this.AppName);
            var data           = new SendMessageParams()
            {
                TargetType = "users",   //给用户发消息
                Target     = new string[] { toAccount },
                From       = fromAccount,
                ExtParams  = extParams,
                Message    = new SendMessageParams.SendMessageParams_Message()
                {
                    Type = messageType,
                    Msg  = message
                }
            };

            var tokenResponse = HttpJson(HttpDecorator.HttpMethod.POST, sendMessageUrl, data);

            if (IsErrorResult(tokenResponse.Content))
            {
                LogManager.GetLogger().Error("Easemob-Error(SendMessage): {0}[{1},{2}] => {3}", sendMessageUrl, this.AccessToken, fromAccount, JsonConvert.SerializeObject(data));
                return(false);
            }
            else
            {
                LogManager.GetLogger().Info("Easemob-Result(SendMessage): {0}[{1},{2}] => {3}", sendMessageUrl, this.AccessToken, fromAccount, JsonConvert.SerializeObject(data));
                return(true);
            }
        }
示例#6
0
        public CreateMessageInfoResponse CreateMessageInfo(SendMessageParams message,
                                                           User senderUser,
                                                           User contactUser)
        {
            var messageInfo = GetInsertMessageInfo(senderUser, contactUser, message);

            MessageInfoToMongo(messageInfo);

            return(GetResponseCreateMessageInfo(messageInfo));
        }
示例#7
0
 private MessageInfo GetInsertMessageInfo(User senderUser,
                                          User contactUser,
                                          SendMessageParams message)
 {
     return(new MessageInfo()
     {
         SenderUserId = senderUser.Id,
         SenderUserEmail = senderUser.Email,
         SenderUserUserName = senderUser.Email,
         ContactUserId = contactUser.Id,
         ContactUserEmail = contactUser.Email,
         ContactUserUserName = contactUser.Email,
         MessageText = message.MessageText,
         CreatedAt = DateTime.Now,
     });
 }
示例#8
0
        public Message SendMessage(SendMessageParams pars)
        {
            var message = new Message()
            {
                AuthorID = pars.AuthorID,
                Content  = pars.Content,
                Date     = pars.Date,
                Day      = pars.Day,
                ThreadID = pars.ThreadID
            };

            messageRepository.Add(message);
            messageRepository.SaveChanges();

            return(message);
        }
        public RedirectToRouteResult SendMessage(int threadID, string content)
        {
            var entity = SessionHelper.CurrentEntity;

            var ps = new SendMessageParams()
            {
                AuthorID = entity.EntityID,
                Content  = content,
                Date     = DateTime.Now,
                Day      = GameHelper.CurrentDay,
                ThreadID = threadID
            };

            messageService.SendMessage(ps);

            return(RedirectToAction("Message", new { threadID = threadID }));
        }
示例#10
0
        public ActionResult Send(SendMessageViewModel vm)
        {
            SendMessageValidator validator = new SendMessageValidator(ModelState, entityRepository);

            validator.Validate(vm);

            if (validator.IsValid)
            {
                var user = SessionHelper.CurrentEntity;

                List <int> recipients = new List <int>()
                {
                    user.EntityID,
                };

                if (vm.RecipientID.HasValue)
                {
                    recipients.Add(vm.RecipientID.Value);
                }
                else
                {
                    var recipientID = entityRepository.Where(e => e.Name.ToLower() == vm.RecipientName.ToLower()).Select(e => e.EntityID).FirstOrDefault();
                    recipients.Add(recipientID);
                }



                var thread = messageService.CreateNewThread(recipients, vm.Title);

                var param = new SendMessageParams()
                {
                    AuthorID = user.EntityID,
                    Content  = vm.Content,
                    Date     = DateTime.Now,
                    Day      = GameHelper.CurrentDay,
                    ThreadID = thread.ID
                };

                messageService.SendMessage(param);

                return(RedirectToAction("Message", new { threadID = thread.ID }));
            }

            return(View(vm));
        }
        public HttpResponseMessage SendMessage(SendMessageParams submitted)
        {
            try
            {
                if (!Common.HasGroupReadPermission(submitted.ResourceGroupId))
                    Request.CreateResponse(HttpStatusCode.Unauthorized, new { Message = App_GlobalResources.Errors.ErrorNotAuthorized });

                var message = _repository.Update(UpdateMessage(new MessageViewModel(submitted.Message)));
                
                Components.Notifications.SendMessage(Components.Common.ViewMailUrl(ActiveModule.ModuleID, message.MessageId),message.ExpireDate,ActiveModule.PortalID,message.MessageTo,message.MessageCc,message.MessageCco);

                return Request.CreateResponse(HttpStatusCode.OK, new
                {
                    Success = true,
                    PostBackUrl = Components.Common.GroupsUrl(ActiveModule.ModuleID)
                });
            }
            catch (Exception)
            {
                return Request.CreateResponse(HttpStatusCode.InternalServerError, App_GlobalResources.Errors.ErrorGeneric);
            }
        }
示例#12
0
        public Citizen CreateCitizen(RegisterInfo info)
        {
            var entity = entitiesService.CreateEntity(info.Name, EntityTypeEnum.Citizen);

            entity.Equipment.ItemCapacity = 25;
            var country = countriesRepository.GetById(info.CountryID);

            Citizen citizen = new Citizen()
            {
                BirthDay      = configurationRepository.GetCurrentDay(),
                CreationDate  = DateTime.Now,
                CitizenshipID = info.CountryID,
                Email         = info.Email,
                RegionID      = info.RegionID,
                Verified      = true,
                PlayerTypeID  = (int)info.PlayerType,
                ID            = entity.EntityID,
                HitPoints     = 100
            };

            using (NoSaveChanges)
                SetPassword(citizen, info.Password);

            var currency = Persistent.Countries.GetCountryCurrency(country);

            walletService.AddMoney(entity.WalletID, new Money(currency, 50));
            walletService.AddMoney(entity.WalletID, new Money(GameHelper.Gold, 5));
            equipmentService.GiveItem(ProductTypeEnum.Bread, 5, 1, entity.Equipment);


            citizenRepository.Add(citizen);
            citizenRepository.SaveChanges();


            Money citizenFee = new Money(Persistent.Currencies.GetById(country.CurrencyID), country.CountryPolicy.CitizenFee);

            if (walletService.HaveMoney(country.Entity.WalletID, citizenFee))
            {
                Transaction feeTransaction = new Transaction()
                {
                    Arg1 = "Citizen Fee",
                    Arg2 = info.Name,
                    DestinationEntityID = citizen.ID,
                    Money           = citizenFee,
                    SourceEntityID  = country.ID,
                    TransactionType = TransactionTypeEnum.CitizenFee
                };
                transactionService.MakeTransaction(feeTransaction);
            }
            else
            {
                string citMessage = "Your country did not have enough money to give you birth starting money.";
                warningService.AddWarning(citizen.ID, citMessage);

                var    citLink        = EntityLinkCreator.Create(citizen.Entity);
                string countryMessage = $"You did not have enough money to give birth starting money to {citLink}.";
                warningService.AddWarning(country.ID, countryMessage);
            }
            string welcomeMessage = country.GreetingMessage;



            var thread = messageService.CreateNewThread(new List <int> {
                citizen.ID, country.ID
            }, "Welcome message");
            var smp = new SendMessageParams()
            {
                AuthorID = country.ID,
                Content  = welcomeMessage,
                Date     = DateTime.Now,
                Day      = GameHelper.CurrentDay,
                ThreadID = thread.ID
            };

            messageService.SendMessage(smp);

            return(citizen);
        }