Exemple #1
0
        public async Task <IActionResult> SendFirstMessage()
        {
            Guid senderId;
            Guid?tempUserId = CheckSession();

            if (tempUserId == null)
            {
                return(new RedirectToActionResult("Login", "Account", null));
            }
            else
            {
                senderId = (Guid)tempUserId;
            }

            UserSimpleDTO sender = await GetUserWithId(senderId);

            Guid          receiverId = Guid.Parse(HttpContext.Session.GetString("ReceiverId"));
            UserSimpleDTO receiver   = await GetUserWithId(receiverId);

            ChatSendFirstMessageVM vm = new ChatSendFirstMessageVM()
            {
                Receiver = receiver,
                Sender   = sender
            };

            return(View(vm));
        }
Exemple #2
0
        public async Task <IActionResult> SendFirstMessage(ChatSendFirstMessageVM vm)
        {
            Guid senderId;
            Guid?tempUserId = CheckSession();

            if (tempUserId == null)
            {
                return(new RedirectToActionResult("Login", "Account", null));
            }
            else
            {
                senderId = (Guid)tempUserId;
            }

            UserSimpleDTO sender = await GetUserWithId(senderId);

            Guid          receiverId = Guid.Parse(HttpContext.Session.GetString("ReceiverId"));
            UserSimpleDTO receiver   = await GetUserWithId(receiverId);

            if (ModelState.IsValid)
            {
                Chat chat = new Chat
                {
                    Name             = $"{sender.UserName}, {receiver.UserName}",
                    CreatorId        = senderId,
                    CreateDate       = DateTime.Now,
                    LastMessage      = vm.Text,
                    NumberOfUsers    = 2, //minimum
                    NumberOfMessages = 1  //bij het maken van de chat is er steeds 1 message aan gekoppeld
                };

                string uri         = $"{baseuri}/chats";
                Chat   createdChat = await WebApiHelper.PostCallAPI <Chat, Chat>(uri, chat);

                Message message = new Message
                {
                    Text = createdChat.LastMessage,
                    //Chat = createdChat,--> Navigation properties geven een error bij post request
                    ChatId   = createdChat.Id,
                    SenderId = createdChat.CreatorId,
                    SendDate = DateTime.Now
                };
                uri = $"{baseuri}/messages";
                Message createdMessage = await WebApiHelper.PostCallAPI <Message, Message>(uri, message);

                UserChat senderData = new UserChat
                {
                    ChatId = createdChat.Id,
                    UserId = createdChat.CreatorId
                };
                uri = $"{baseuri}/userchats";
                UserChat uc1 = await WebApiHelper.PostCallAPI <UserChat, UserChat>(uri, senderData);

                UserChat receiverData = new UserChat
                {
                    ChatId = createdChat.Id,
                    UserId = receiverId
                };
                UserChat uc2 = await WebApiHelper.PostCallAPI <UserChat, UserChat>(uri, receiverData);

                HttpContext.Session.SetString("ChatId", createdChat.Id.ToString());
                return(new RedirectToActionResult("OpenExistingChat", "Chat", createdChat.Id));
            }
            vm.Receiver = receiver;
            return(View(vm));
        }