Example #1
0
        public bool SendMessageToDriver(int senderId, int recipientId, string message)
        {
            try
            {
                using (var senderUoW = UnitOfWorkFactory.CreateForRoot <Employee>(senderId, $"[CS]Отправка сообщения водителю {recipientId}"))
                {
                    var recipient = senderUoW.GetById <Employee>(recipientId);

                    var chat = ChatRepository.GetChatForDriver(senderUoW, recipient);
                    if (chat == null)
                    {
                        chat          = new ChatClass();
                        chat.ChatType = ChatType.DriverAndLogists;
                        chat.Driver   = recipient;
                    }

                    ChatMessage chatMessage = new ChatMessage();
                    chatMessage.Chat     = chat;
                    chatMessage.DateTime = DateTime.Now;
                    chatMessage.Message  = message;
                    chatMessage.Sender   = senderUoW.Root;

                    chat.Messages.Add(chatMessage);
                    senderUoW.Save(chat);
                    senderUoW.Commit();

                    FCMHelper.SendMessage(recipient.AndroidToken, senderUoW.Root.ShortName, message);
                    return(true);
                }
            } catch (Exception e) {
                logger.Error(e);
                return(false);
            }
        }