Esempio n. 1
0
        public async Task <IActionResult> DecideAsync(DecisionRequest decision)
        {
            var request = await _context.Contacts.FirstOrDefaultAsync(o => o.ReceiverId == decision.ReceiverId && o.SenderId == decision.SenderId);

            if (request == null)
            {
                return(BadRequest());
            }
            if (decision.Approved)
            {
                request.IsApproved = true;
                _context.Contacts.Update(request);

                // Создать диалог и добавить два контакта
                ChatRoom chatRoom = new ChatRoom {
                    Name = "", RoomType = Entities.Enums.RoomType.Dialog
                };
                await _context.ChatRooms.AddAsync(chatRoom);

                await _context.SaveChangesAsync();

                var receiver = await _context.Users.FirstOrDefaultAsync(o => o.Id == decision.ReceiverId);

                var sender = await _context.Users.FirstOrDefaultAsync(o => o.Id == decision.SenderId);

                var participant1 = new Participants {
                    ChatRoomId = chatRoom.Id, UserId = receiver.Id
                };
                var participant2 = new Participants {
                    ChatRoomId = chatRoom.Id, UserId = sender.Id
                };
                await _context.Participants.AddAsync(participant1);

                await _context.Participants.AddAsync(participant2);

                await _context.SaveChangesAsync();
            }
            else
            {
                _context.Contacts.Remove(request);
            }
            await _context.SaveChangesAsync();

            return(Ok());
        }
Esempio n. 2
0
        public async Task <IActionResult> SetProfilePictureAsync([FromForm] FormData formData)
        {
            Entities.User user = (Entities.User)HttpContext.Items["User"];

            user.Photo = formData.FormFile == null ? "" : await _fileManager.SaveImage(formData.FormFile);

            _context.Users.Update(user);
            await _context.SaveChangesAsync();

            return(Ok());
        }
Esempio n. 3
0
        public async Task <IActionResult> SaveMessageAsync(ChatMessage message)
        {
            Entities.User currentUser = (Entities.User)HttpContext.Items["User"];
            await _context.Messages.AddAsync(new Entities.Message
            {
                ChatRoomId = message.ChatRoomId,
                UserId     = currentUser.Id,
                Text       = message.Text,
            });

            await _context.SaveChangesAsync();

            return(Ok());
        }
Esempio n. 4
0
        public async Task <IActionResult> DeleteContactAsync(DeleteContact contactToDelete)
        {
            Entities.User currentUser = (Entities.User)HttpContext.Items["User"];

            var contact = await _context.Contacts.FirstOrDefaultAsync(o => o.SenderId == contactToDelete.ContactId && o.ReceiverId == currentUser.Id);

            if (contact == null)
            {
                contact = await _context.Contacts.FirstOrDefaultAsync(o => o.ReceiverId == contactToDelete.ContactId && o.SenderId == currentUser.Id);
            }

            _context.Contacts.Remove(contact);
            await _context.SaveChangesAsync();

            return(Ok());
        }