Пример #1
0
        public ActionResult SendMessage(int id, string chatMessage = null)
        {
            var myUser = userService.GetUserByEmail(HttpContext.User.Identity.Name);

            if (chatMessage != null)
            {
                messageService.AddMessage(new BllMessage()
                {
                    Date          = DateTime.Now,
                    ProfileIdFrom = myUser.Id,
                    ProfileIdTo   = id,
                    Text          = chatMessage
                });
            }
            var context   = Microsoft.AspNet.SignalR.GlobalHost.ConnectionManager.GetHubContext <NotificationHub>();
            var t         = context.Clients.All;
            var messages  = messageService.GetMessages(myUser.Id, id);
            var viewModel = new SendMessageModel()
            {
                Messages  = messages,
                I         = profileService.Get(myUser.Id).ToViewProfileModel(),
                Companion = profileService.Get(id).ToViewProfileModel()
            };

            if (!Request.IsAjaxRequest())
            {
                return(View(viewModel));
            }
            return(PartialView("_History", viewModel));
        }
Пример #2
0
        public async Task <ActionResult> IndexPost(SendMessageModel model)
        {
            ViewBag.ShowSuccess = false;
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            var smtpClient = new SmtpClient(model.SmtpHost, model.SmtpPort)
            {
                Credentials = new NetworkCredential(model.UserName, model.Password)
            };

            var mailMessage = new MailMessage(model.EmailFrom, model.EmailTo)
            {
                Body       = model.Body,
                Subject    = model.Subject,
                IsBodyHtml = false
            };

            try
            {
                await smtpClient.SendMailAsync(mailMessage);

                ViewBag.ShowSuccess = true;
            }
            catch (Exception exc)
            {
                ModelState.AddModelError(nameof(model.SmtpHost), exc);
            }

            return(View(model));
        }
Пример #3
0
        public ActionResult SendMessage(SendMessageModel message)
        {
            if (IsLogon() == false)
            {
                return(RedirectToAction("index", "i"));
            }
            DB.Messages mesaj = new Messages
            {
                Id        = Guid.NewGuid(),
                AddedDate = DateTime.Now,
                IsRead    = false,
                Subject   = message.Subject
            };
            var mRep = new DB.MessageReplies
            {
                Id        = Guid.NewGuid(),
                AddedDate = DateTime.Now,
                Member_Id = CurrentUserId(),
                Text      = message.MessageBody
            };

            mesaj.MessageReplies.Add(mRep);
            context.Messages.Add(mesaj);
            context.SaveChanges();
            return(RedirectToAction("i", "Mesage"));
        }
 public Task LeaveGroup(SendMessageModel model)
 {
     dataBase.LeaveRoom(model.ParticipantId, model.RoomName);
     Groups.RemoveAsync(Context.ConnectionId, model.RoomName);
     model.Message = model.NickName + " left " + model.RoomName;
     return(SendMessage(model));
 }
        public async Task <IActionResult> SendMessage(SendMessageModel sendMessageModel)
        {
            var senderId       = this.userManager.GetUserId(this.User);
            var senderUserName = this.User.Identity.Name;

            if (string.IsNullOrEmpty(sendMessageModel.Receiver) || string.IsNullOrWhiteSpace(sendMessageModel.Receiver))
            {
                this.ModelState.AddModelError(nameof(sendMessageModel.Receiver), GlobalConstants.MESSAGE_RECEIVER_REQUIRED);
                return(this.View(sendMessageModel));
            }

            if (sendMessageModel.Receiver == senderUserName)
            {
                this.ModelState.AddModelError(nameof(sendMessageModel.Receiver), GlobalConstants.MESSAGE_RECEIVER_SAME_AS_SENDER);
                return(this.View(sendMessageModel));
            }

            var receiver = await this.userManager.FindByNameAsync(sendMessageModel.Receiver);

            if (receiver == null)
            {
                this.ModelState.AddModelError(nameof(sendMessageModel.Receiver), GlobalConstants.MESSAGE_RECEIVER_INVALID);
            }

            if (!ModelState.IsValid)
            {
                return(this.View(sendMessageModel));
            }

            await messagesService.SendMessageAsync(senderId, receiver.Id, sendMessageModel.Content);

            return(this.RedirectToAction(nameof(Sent)));
        }
        // Відправка повідомлення від оператора до клієнта
        public async Task <string> SetMessageToDB(SendMessageModel sendMessage)
        {
            // створюємо колекцію динамічних параметрів і додаємо параметри, для відправки повідомлення від оператора до клієнта
            var parametrs = new DynamicParameters();

            parametrs.Add("@sessionid", sendMessage.SessionId);
            parametrs.Add("@MessageContent", sendMessage.MessageText);
            parametrs.Add("@DateTime", sendMessage.DateTime);
            parametrs.Add("@UserId", sendMessage.UserId);
            //parametrs.Add("@UserEmail", sendMessage.UserEmail);

            try
            {
                using (IDbConnection db = new SqlConnection(connectionString))
                {
                    // отримуємо повідомлення, використовуємо хранімку Send_message_from_operator
                    // (вхідний параметри: sessionid, MessageContent, DateTime, UserId, які потрібні для відправки повідомлення
                    string result = await db.QuerySingleAsync <string>("[dbo].[Send_message_from_operator]", parametrs, commandType : CommandType.StoredProcedure);

                    return(result);
                }
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
        }
Пример #7
0
        public IActionResult ReceiveMessage(SendMessageModel messageModel)
        {
            string        filePublicKey = parameters.Value.FilesOutput + parameters.Value.PubKeyFile + messageModel.userNameDestination + messageModel.userNameOrigin;
            RSAEncryption rsaEncryption = new RSAEncryption();
            AESEncryption aesEncryption = new AESEncryption();
            RSASigning    rsaSigning    = new RSASigning();

            //Decrypt symmetric key
            ResponseRSADecryption rsaDecryptResponse = new ResponseRSADecryption();

            rsaDecryptResponse = rsaEncryption.DecryptAESKey(messageModel.encryptedKey, messageModel.userNameDestination + messageModel.userNameOrigin);
            if (!rsaDecryptResponse.result)
            {
                FileWriter.WriteOnEvents(EventLevel.Error, "Error descifrando llave AES con RSA.");
                return(BadRequest(new { result = false }));
            }
            //Decrypt Message
            ResponseAESDecryption responseAESDecryption = new ResponseAESDecryption();

            responseAESDecryption = aesEncryption.DecryptMessage(messageModel, rsaDecryptResponse.decryptedKey);
            if (!responseAESDecryption.result)
            {
                FileWriter.WriteOnEvents(EventLevel.Error, "Error descifrando mensaje con AES.");
                return(BadRequest(new { result = false }));
            }
            //Validate Sign
            if (!rsaSigning.validateSignAndHash(responseAESDecryption.decryptedMessage, messageModel.encryptSignature, filePublicKey))
            {
                FileWriter.WriteOnEvents(EventLevel.Atention, "La información recibida es corrupta.");
                return(BadRequest(new { result = false }));
            }
            //Muestra mensaje
            return(Ok(new{ mensaje = responseAESDecryption.decryptedMessage }));
        }
Пример #8
0
        public async Task <IActionResult> SendMessage(SendMessageModel model)
        {
            var currentUser = await GetCurrentUserAsync();

            if (ModelState.IsValid)
            {
                MessageSent message = new MessageSent()
                {
                    Subject   = model.Subject,
                    Content   = model.Content,
                    DateSent  = DateTime.Now,
                    UserEmail = currentUser.Email,
                    Year      = currentUser.Year
                };

                database.Add(message);
                database.SaveChanges();

                return(View("SendMessageResult", model));
            }
            else
            {
                ModelState.AddModelError(string.Empty, "It wasn't possible to send your message.");
            }

            return(View(model));
        }
Пример #9
0
        public ActionResult SendMessage(SendMessageModel message)
        {
            //Giriş yapmayan kullanıcı bu sayfaya gelmemesi için en başta yönlendirme yaptık
            if (IsLogon() == false)
            {
                return(RedirectToAction("Index", "i"));
            }

            DB.Messages mesaj = new DB.Messages()
            {
                Id         = Guid.NewGuid(),
                AddedDate  = DateTime.Now,
                IsRead     = false,
                Subject    = message.Subject,
                ToMemberId = message.ToUserId
            };
            var mRep = new DB.MessageReplies()
            {
                Id        = Guid.NewGuid(),
                AddedDate = DateTime.Now,
                Member_Id = CurrentUserId(),
                Text      = message.MessageBody
            };

            mesaj.MessageReplies.Add(mRep);
            context.Messages.Add(mesaj);
            context.SaveChanges();
            return(RedirectToAction("Index", "Message"));
        }
Пример #10
0
        public async Task <bool> SendMessage(string message, string receiverId)
        {
            var model = new SendMessageModel()
            {
                Receiver = receiverId,
                Sender   = new ViberSenderModel {
                    Name = "FCIT Computer Science Bot"
                },
                Text = message,
                Type = "text"
            };

            using (var client = new HttpClient())
            {
                client.DefaultRequestHeaders.Add("X-Viber-Auth-Token", _apiOptions.AccessKey);

                var content  = new StringContent(JsonConvert.SerializeObject(model), Encoding.UTF8);
                var response = await client.PostAsync(_apiOptions.Url + "/pa/send_message", content);

                if (!response.IsSuccessStatusCode)
                {
                    return(false);
                }

                return(true);
            }
        }
        public async Task SendMessage(SendMessageModel message)
        {
            try
            {
                if (string.IsNullOrEmpty(_accessToken))
                {
                    throw new Exception("Not logged in");
                }

                using (var client = new HttpClient())
                {
                    client.DefaultRequestHeaders.Accept.Clear();
                    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                    var url = string.Format("{0}/api/message/send", _configuration.ServerBaseUrl);
                    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", _accessToken);
                    var response = await client.PostAsJsonAsync <SendMessageModel>(url, message);

                    if (!response.IsSuccessStatusCode)
                    {
                        throw new WebAPIException("An error occurred sending message", response.ReasonPhrase, response.StatusCode);
                    }
                }
            }
            catch (Exception ex)
            {
                if (ex is WebAPIException)
                {
                    throw;
                }
                throw new Exception("An error occurred sending message. " + ex.Message);
            }
        }
Пример #12
0
        public IActionResult Index(SendMessageModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            var factory = new ConnectionFactory()
            {
                HostName = model.HostName
            };

            using (var connection = factory.CreateConnection())
            {
                using (var channel = connection.CreateModel())
                {
                    channel.QueueDeclare(
                        queue: model.QueueName,
                        durable: false,
                        exclusive: false,
                        autoDelete: false,
                        arguments: null);

                    var body = Encoding.UTF8.GetBytes(model.MessageBody);
                    channel.BasicPublish(
                        exchange: "",
                        routingKey: model.QueueName,
                        basicProperties: null,
                        body: body);
                }
            }

            return(RedirectToAction(nameof(Success)));
        }
Пример #13
0
        public async Task <IActionResult> SendMessage(SendMessageModel model)
        {
            // Dohvatam ulogovanog usera
            User loggedInUser = await this.userManager.GetUserAsync(base.User);

            if (ModelState.IsValid)
            {
                // Pravim novu poruku
                Message message = new Message( )
                {
                    userId         = loggedInUser.Id,
                    conversationId = model.conversationId,
                    sendDate       = DateTime.Now,
                    content        = model.content
                };

                // Stavljam poruku u bazu
                await this.context.messages.AddAsync(message);

                await this.context.SaveChangesAsync( );
            }

            // Vracam true da je poruka stavljena u bazu
            return(Json(true));
        }
Пример #14
0
        public ActionResult Conversation(SendMessageModel send, ContactModel contact)
        {
            if (SessionUtils.IsLogged)
            {
                //SendMessageModel
                send.IdUserFrom = SessionUtils.ConnectedUser.IdUser;
                string idUserTo    = Request.Path.Substring(26);
                int    idUserToInt = int.Parse(idUserTo);
                send.IdUserTo = idUserToInt;
                //ContactModel
                contact.IdUserFrom = SessionUtils.ConnectedUser.IdUser;
                contact.IdUserTo   = idUserToInt;
                if (ctx.SaveMessage(send))
                {
                    ViewBag.SuccessMessage = "Your message has been sent";
                    List <MessageModel>   lm = ctx.GetAllMessage(contact);
                    ConversationViewModel cv = new ConversationViewModel();
                    cv.ListeMessages = lm;
                    return(View(cv));
                }
                else
                {
                    ViewBag.ErrorMessage = "Your message has not been sent, try again";
                    ConversationViewModel cv = new ConversationViewModel();
                    return(View(cv));
                }
            }
            else
            {
                Session.Abandon();

                return(RedirectToAction("Login", "Home", new { area = "" }));
            }
        }
        public async Task <Response <SendReceipt> > SendMessageAsync <TData>(SendMessageModel <TData> message)
            where TData : class
        {
            await GetQueueClient(message.QueueName);

            return(await _queueClient.SendMessageAsync(message.Data.ToJson(IgnoredProperties)));
        }
Пример #16
0
        public IActionResult SendTextMessage(uint chatId, [FromBody] SendMessageModel model)
        {
            var sender  = _userService.FindUser(User.Identity.Name);
            var message = _chatService.SendTextMessage(sender, chatId, model.Text);

            return(new JsonResult(message));
        }
Пример #17
0
        public async Task SendMessage_GivenInvalidModel_ReturnsErrorMessage(ServiceResponse <bool> expectedResult,
                                                                            string expectedMessage)
        {
            // Arrange
            _messageService.Setup(x => x.SendMessage(It.IsAny <SendMessageDto>())).ReturnsAsync(expectedResult);

            var modelData = new SendMessageModel {
                To = "", Content = ""
            };
            var controller = new MessagesController(_messageService.Object);

            // Act
            var result = await controller.SendMessage(modelData);

            // Assert
            var apiResult = Assert.IsType <ObjectResult>(result);
            var model     = Assert.IsAssignableFrom <ApiData <List <string> > >(apiResult.Value);

            Assert.False(model.Success);
            Assert.Equal("Model validation errors!", model.Message);
            Assert.Equal(StatusCodes.Status400BadRequest, apiResult.StatusCode);
            Assert.NotNull(model.Data);
            Assert.Single(model.Data);
            Assert.Equal(expectedMessage, model.Data.First());
        }
Пример #18
0
        //public ActionResult Details(string key)
        //{
        //    var request = requestRepository.GetRequest(key);

        //    return View("KeyDetails", request);
        //}

        public ActionResult SendMessage(SendMessageModel message)
        {
            try
            {
                if (string.IsNullOrWhiteSpace(message.MessageText) && Request.Files.Count == 0)
                {
                    Response.StatusCode = 400;
                    return(Content("Either a message or a file is required."));
                }

                if (Request.Files.Count > 0)
                {
                    var uploadFile = Request.Files[0];

                    byte[] fileData = RequestRepository.ReadFully(uploadFile.InputStream);
                    requestRepository.AttachFileToRequest(message.KeyToken, fileData, uploadFile.FileName);

                    return(Content("<h1>File uploaded and sent to Key Id</h1>"));
                }
                else
                {
                    requestRepository.AttachMessageToRequest(message.KeyToken, message.MessageText);
                    return(Content("<h1>Message encrypted and sent to Key Id</h1>"));
                }
            }
            catch (Exception ex)
            {
                //Response.StatusCode = 401;
                return(Content("Unable to send message.  Please check the Key Id field."));
            }
        }
Пример #19
0
        public ActionResult SendMessage(SendMessageModel sendMessageModel)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    var     message = _messageService.GetByCode(sendMessageModel.Code);
                    Message result;
                    if (message != null)
                    {
                        message.MessageBody = sendMessageModel.MessageBody;
                        message.UpdatedDate = DateTime.UtcNow;
                        result = _messageService.Update(message);
                    }
                    else
                    {
                        message             = Mapper.Map <SendMessageModel, Message>(sendMessageModel);
                        message.CreatedDate = DateTime.UtcNow;
                        message.UpdatedDate = DateTime.UtcNow;
                        result = _messageService.Create(message);
                    }
                    _messageService.SaveChanges();
                    var viewModel = Mapper.Map <Message, PageBViewModel>(result);

                    return(PartialView("PageBMessage", viewModel));
                }
                catch (Exception ex)
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, ex.Message));
                }
            }
            return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Validation Error"));
        }
Пример #20
0
        internal ResponseAESDecryption DecryptMessage(SendMessageModel messageModel, byte[] decryptedKey)
        {
            ResponseAESDecryption response = new ResponseAESDecryption {
                result = false
            };

            // Create an AesCryptoServiceProvider object with the specified key and IV.
            using (AesCryptoServiceProvider aesDecrypt = new AesCryptoServiceProvider()){
                FileWriter.WriteOnEvents(EventLevel.Info, "Inicio proceso de descifrado de mensaje.");
                aesDecrypt.Key = decryptedKey;
                aesDecrypt.IV  = messageModel.initVector;
                // Create a decryptor to perform the stream transform.
                ICryptoTransform decryptor = aesDecrypt.CreateDecryptor(aesDecrypt.Key, aesDecrypt.IV);
                // Create the streams used for decryption.
                using (MemoryStream msDecrypt = new MemoryStream(messageModel.encryptedMessage))
                {
                    using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
                    {
                        using (StreamReader srDecrypt = new StreamReader(csDecrypt))
                        {
                            // Read the decrypted bytes from the decrypting stream and place them in a string.
                            response.decryptedMessage = srDecrypt.ReadToEnd();
                            response.result           = true;
                            FileWriter.WriteOnEvents(EventLevel.Info, "Proceso de descifrado de mensaje finalizado correctamente");
                        }
                    }
                }
            }
            return(response);
        }
Пример #21
0
        /// <summary>
        /// Генерит jsonчик и отправляет его фейсбуку
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        private async Task <int> Send(SendMessageModel model)
        {
            string jsonContent = JsonConvert.SerializeObject(model,
                                                             Formatting.None,
                                                             new JsonSerializerSettings
            {
                NullValueHandling = NullValueHandling.Ignore
            });

            jsonContent = BotTextHelper.SmileCodesReplace(jsonContent, SocialNetworkType.Facebook);

            HttpResponseMessage responce;
            StringContent       content = new StringContent(jsonContent, Encoding.UTF8, "application/json");
            string url = $"https://graph.facebook.com/v2.6/me/messages?access_token={_token}";

            using (var client = new HttpClient())
            {
                using (var r = await client.PostAsync(new Uri(url), content))
                {
                    responce = r;
                    string responceString = await r.Content.ReadAsStringAsync();

                    if (responceString.ToLower().Contains("error"))
                    {
                        Logging.Logger.Error($"Facebook Api Send: NOT OK!! {responceString}");
                        return(1);
                    }
                    else
                    {
                        return(0);
                    }
                }
            }
        }
Пример #22
0
        public virtual async Task <ActionResult> SendMessageToUser(SendMessageModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            try
            {
                var user = await UserManager.FindByEmailAsync(model.Recipient);

                if (user != null)
                {
                    await _notificationsService.SendNotificationAsync(user.Id, model.Message, null, false);
                }
                else
                {
                    ModelState.AddModelError("", _localizationService.GetResource("RequestedUserNotFound"));
                    return(View(model));
                }
            }
            catch (Exception e)
            {
                var errorCode = ErrorLog.GetDefault(System.Web.HttpContext.Current).Log(new Error(e, System.Web.HttpContext.Current));
                ModelState.AddModelError("", string.Format(_localizationService.GetResource("ErrorOnOperation"), e.Message, errorCode));
                return(View(model));
            }

            return(Content(@"<script language='javascript' type='text/javascript'>
                                window.close();
                                window.opener.refreshNotificationsGrid();
                             </script>"));
        }
Пример #23
0
        public ActionResult Index()
        {
            SendMessageModel model = new SendMessageModel();

            model.LoadSecurityQuestion();

            return(View(model));
        }
Пример #24
0
 private bool IsSendMessageModelValid(SendMessageModel model)
 {
     if (model == null || string.IsNullOrEmpty(model.UserId) || string.IsNullOrEmpty(model.Text))
     {
         return(false);
     }
     return(true);
 }
        public async Task <BaseViewModel> SendMessage(SendMessageModel model)
        {
            BaseViewModel res = new BaseViewModel();

            res = await _weChatHttpClientService.SendMessageService(model);

            return(res);
        }
Пример #26
0
        public IActionResult SendMessage(string receiver)
        {
            var viewModel = new SendMessageModel {
                Receiver = receiver
            };

            return(this.View(viewModel));
        }
Пример #27
0
        public bool SaveMessage(SendMessageModel send)
        {
            SendMessageEntity se = new SendMessageEntity();

            se.IdUserFrom = send.IdUserFrom;
            se.IdUserTo   = send.IdUserTo;
            se.Text       = send.Text;
            return(_sendMessageRepository.Insert(se));
        }
        public async Task <Response <SendReceipt> > SendMessageBase64Async <TData>(SendMessageModel <TData> message)
            where TData : class
        {
            await GetQueueClient(message.QueueName);

            var contentBase64 = Convert.ToBase64String(Encoding.UTF8.GetBytes(message.Data.ToJson(IgnoredProperties)));

            return(await _queueClient.SendMessageAsync(contentBase64));
        }
        public GenericResultViewModel <MessageModel> Post(SendMessageModel model)
        {
            var message = _messageService.SendMessage(model.Subject, model.Body, model.Recipients);

            return(new GenericResultViewModel <MessageModel>()
            {
                Result = message
            });
        }
        public async Task SendMessage(SendMessageModel message)
        {
            var userId          = Context.UserIdentifier;
            var messageResponse = await _messageRepository.SendMessage(int.Parse(userId), message);

            var userToTask   = Clients.User(message.UserToId.ToString()).SendAsync(SendMessageMethod, messageResponse);
            var userFromTask = Clients.User(userId).SendAsync(SendMessageMethod, messageResponse);

            Task.WaitAll(userToTask, userFromTask);
        }
Пример #31
0
        public ActionResult SendMessage(SendMessageModel model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    User sender = CurrentUser;
                    ISet<User> setOfRecievers = new HashSet<User>();
                    string[] separators = new string[1];
                    separators[0] = "; ";

                    if (model.ToUsers != null)
                    {
                        string[] parsedRecievers = model.ToUsers.Split(separators, StringSplitOptions.RemoveEmptyEntries);

                        foreach (var reciever in parsedRecievers)
                        {
                            if (String.IsNullOrEmpty(reciever) || (reciever == sender.Username))
                            {
                                continue;
                            }
                            setOfRecievers.Add(Model.UserService.FindByUsername(reciever));
                        }
                    }

                    if (model.ToGroups != null)
                    {
                        string[] parsedGroups = model.ToGroups.Split(separators, StringSplitOptions.RemoveEmptyEntries);

                        foreach (var groupName in parsedGroups)
                        {
                            if (String.IsNullOrEmpty(groupName))
                            {
                                continue;
                            }
                            Group group = Model.GroupService.FindByName(groupName);
                            foreach (var user in Model.GroupService.GetUsers(group))
                            {
                                if (user.Username == sender.Username)
                                {
                                    continue;
                                }
                                setOfRecievers.Add(user);
                            }
                        }
                    }

                    if (setOfRecievers.Count == 0)
                    {
                        ModelState.AddModelError("", "No user selected!");

                        var newMsgModel = prepareMessageModelToSend();
                        newMsgModel.Text = model.Text;

                        return View(newMsgModel);
                    }

                    Message prevMessage = Model.MessageService.FindById(model.PrevMessageID);

                    Model.MessageService.SendMessageToUsers(sender, setOfRecievers, prevMessage, model.Text);
                    return RedirectToAction("Index", new { page = 1.ToString() });
                }
                catch (InvalidOperationException)
                {
                    ModelState.AddModelError("", "User does not exist!");

                    var newMsgModel = prepareMessageModelToSend();
                    newMsgModel.Text = model.Text;

                    return View(newMsgModel);
                }
            }
            else
            {
                if (model.PrevMessageID == -1)
                {
                    var newMsgModel = prepareMessageModelToSend();
                    newMsgModel.Text = model.Text;
                    newMsgModel.ToGroups = model.ToGroups;
                    newMsgModel.ToUsers = model.ToUsers;

                    return View("SendMessage", newMsgModel);
                }
                else
                {
                    var newMsgModel = prepareMessageModelToReply(Model.MessageService.FindById(model.PrevMessageID));
                    newMsgModel.Text = model.Text;

                    return View("ReplyMessage", newMsgModel);
                }
            }
        }