Пример #1
0
        public (bool status, string message) SendMessage(SendMessageRequest request)
        {
            try
            {
                bool   _status  = true;
                string _message = "Success";

                _messageRepository.BeginTransaction();

                if (_userApiService.UserExist(request.UserSender) == true && _userApiService.UserExist(request.UserReciever) == true)
                {
                    var conversation = new Conversation
                    {
                        Id          = Guid.NewGuid(),
                        IsActive    = true,
                        UserCreator = request.UserSender,
                        Title       = request.Title
                    };

                    _conversationRepository.Insert(conversation);
                    _conversationRepository.Save();

                    var participant = new Participant()
                    {
                        Id           = Guid.NewGuid(),
                        Conversation = conversation,
                        Status       = _activityStatusRepository.Get(x => x.Name.Equals(Global.Status.UnRead)).FirstOrDefault().Id,
                        UserAccount  = request.UserReciever
                    };

                    _participantRepository.Insert(participant);
                    _participantRepository.Save();

                    var message = new Messages
                    {
                        Id             = Guid.NewGuid(),
                        ContentMessage = request.ContentMessage,
                        ParticipantId  = participant.Id,
                        ConversationId = conversation.Id,
                        Status         = _activityStatusRepository.Get(x => x.Name.Equals(Global.Status.Delivered)).FirstOrDefault().Id
                    };

                    _messageRepository.Insert(message);
                    _messageRepository.Save();
                }
                else
                {
                    _status  = false;
                    _message = "User Sender or Reciever not exist";
                }

                _messageRepository.CommitTransaction();

                return(_status, _message);
            }
            catch (Exception ex)
            {
                _messageRepository.RollbackTransaction();
                throw ex;
            }
        }