Exemple #1
0
        public async Task <ChatDto> CreateGroupAsync(NewChatModel newChat)
        {
            var chat = new Chat
            {
                Name = newChat.Name,
                Type = ChatType.Group
            };

            await _unitOfWork.Chats.CreateAsync(chat);

            var principal = _contextAccessor.HttpContext.User;
            var ownerUser = await _userManager.GetUserAsync(principal);

            var ownerParticipant = new UserChat()
            {
                ChatId  = chat.Id,
                UserId  = ownerUser.Id,
                IsAdmin = true
            };

            chat.Participants.Add(ownerParticipant);
            ownerUser.Chats.Add(ownerParticipant);

            foreach (var participantId in newChat.ParticipantIds)
            {
                var validator = new ValidateGuidAttribute();
                if (!validator.IsValid(participantId))
                {
                    throw new ItemNotFoundException("Specified Id is not a valid GUID");
                }

                var user = await _userManager.FindByIdAsync(participantId);

                if (user == null)
                {
                    throw new ItemNotFoundException("User with specified Id was not found");
                }

                var chatParticipant = new UserChat()
                {
                    ChatId = chat.Id,
                    UserId = new Guid(participantId),
                };

                chat.Participants.Add(chatParticipant);
                user.Chats.Add(chatParticipant);
            }

            try
            {
                await _unitOfWork.SaveChangesAsync();
            }
            catch (InvalidOperationException ex) when(ex.Message.Contains("already being tracked"))
            {
                throw new DuplicateChatParticipantException("Participant is already in this chat");
            }

            return(chat.ToDto());
        }
Exemple #2
0
        public void InsertNewMessage(NewChatModel chatModel)
        {
            var request = new RestRequest(CahtUrl, Method.POST);

            request.AddHeader("token", "aiteam2018");
            request.AddParameter("application/json; charset=utf-8", JsonConvert.SerializeObject(chatModel), ParameterType.RequestBody);
            var asyncHandle = Client.ExecuteAsync <bool>(request, response =>
            {
                NotifyObserver(response.Data);
            });
        }
Exemple #3
0
        private void SendMessageFromRobot(int chatId, int senderId, string message)
        {
            NewChatModel newChat = new NewChatModel();

            newChat.ChatId          = chatId;
            newChat.ChatMessageText = message;
            newChat.UserIdReciver   = Program.UserId;
            newChat.UserIdSender    = senderId;
            newChat.UserIdStarter   = senderId;

            RobotMessageUploader chatUploader = new RobotMessageUploader();

            chatUploader.Attach(this);
            chatUploader.InsertNewMessage(newChat);
        }
Exemple #4
0
        private void SendNewMessage(int userIdReceiver, int chatId)
        {
            NewChatModel newChat = new NewChatModel();

            newChat.ChatId          = chatId;
            newChat.ChatMessageText = textBoxMessage.Text;
            newChat.UserIdReciver   = userIdReceiver;
            newChat.UserIdSender    = Program.UserId;
            newChat.UserIdStarter   = userIdReceiver;

            ChatUploader chatUploader = new ChatUploader();

            chatUploader.Attach(this);
            chatUploader.InsertNewMessage(newChat);
            labelWating.Visible = true;
        }
Exemple #5
0
        public async Task <IActionResult> CreateGroupChat([FromBody][Required] NewChatModel newChat)
        {
            try
            {
                var chat = await _chatsService.CreateGroupAsync(newChat);

                return(CreatedAtAction(nameof(GetChatById), new { chatId = chat.Id }, chat));
            }
            catch (DuplicateChatParticipantException)
            {
                return(BadRequest(new ApiError("Participant list contains duplicates", HttpStatusCode.BadRequest)));
            }
            catch (ItemNotFoundException)
            {
                return(BadRequest(new ApiError("Participant list contains invalid user Id", HttpStatusCode.BadRequest)));
            }
        }
        public ActionResult Create(NewChatModel newChatModel)
        {
            IEnumerable <Contact> contacts = contactRepository.GetAllContacts(((Account)Session["loggedin_account"]).Id);

            ViewBag.Contacts = contacts;
            if (ModelState.IsValid)
            {
                Chat chat = new Chat();
                chat.ChatName = newChatModel.ChatName;
                chat.ChatDesc = newChatModel.ChatDesc;
                chat.Participants.Add(chatRepository.GetAccountById(newChatModel.participant));
                chat.Participants.Add(chatRepository.GetAccountById(((Account)Session["loggedin_account"]).Id));
                chatRepository.CreateChat(chat);

                return(RedirectToAction("Index"));
            }
            return(View(newChatModel));
        }
        public IHttpActionResult New(NewChatModel model)
        {
            Chats.Add(new ChatModel
            {
                ChatId      = Random.Next(1000000, 9999999),
                BotId       = model.BotId,
                BotUsername = BotsController.Bots.Single(x => x.User.Id == model.BotId).User.Username,
                Sender      = new User
                {
                    Id        = Random.Next(1000000, 9999999),
                    IsBot     = false,
                    FirstName = model.FirstName,
                    LastName  = model.LastName,
                    Username  = model.Username
                }
            });

            return(Ok());
        }
Exemple #8
0
        private void InsertNewChat(int userIdReceiver)
        {
            NewChatModel newChat = new NewChatModel();

            newChat.ChatId = 0;
            string messageText = "سلام، وقت بخیر... بنده مشاور شغلی شما هستم. بیایید درمورد شغل آینده شما صحبت کنیم لطفا به سوالاتی که میپرسم با دقت پاسخ دهید..";

            //string messageText = Questions[0].QuestionTitle;
            newChat.ChatMessageText = messageText;
            newChat.UserIdReciver   = userIdReceiver;
            newChat.UserIdSender    = Program.UserId;
            newChat.UserIdStarter   = Program.UserId;

            ChatUploader chatUploader = new ChatUploader();

            chatUploader.Attach(this);
            chatUploader.InsertNewMessage(newChat);
            labelWating.Visible = true;
            IsFirstMessage      = true;
        }
Exemple #9
0
        private void SendNewMessage(int userIdReceiver, int chatId)
        {
            NewChatModel newChat = new NewChatModel();

            newChat.ChatId = chatId;
            string messageText = Questions[listBoxQuestions.SelectedIndex].QuestionTitle;

            newChat.ChatMessageText = messageText;
            newChat.UserIdReciver   = userIdReceiver;
            newChat.UserIdSender    = Program.UserId;
            newChat.UserIdStarter   = Program.UserId;

            CurrentRecipentUserId = userIdReceiver;
            ChatUploader chatUploader = new ChatUploader();

            chatUploader.Attach(this);
            chatUploader.InsertNewMessage(newChat);
            labelWating.Visible = true;
            IsFirstMessage      = false;
        }