예제 #1
0
        private void Server_ClientSayEvent(string msg, ChatUser from, ChatUser to)
        {
            verifyList();

            /*if (IsChatClientsConnected(from, to) == false)
             * {
             *  return;
             * }*/

            ChatDetails chatItem = new ChatDetails()
            {
                dateAdd     = DateTime.Now,
                FromNumOved = from.NumOved,
                FromUserAd  = from.UserAd,
                FromUserHeb = from.UserHeb,
                odaa        = msg,
                ReadOdaa    = false,
                ToNumOved   = to.NumOved,
                ToUserAd    = to.UserAd,
                ToUserHeb   = to.UserHeb
            };

            int id = DAL.insert <ChatDetails>("ChatDetail", chatItem);

            chatItem.id = id;

            if (IsChatClientsConnected(from, to) == true)
            {
                myClients[to.UserAd].client.RecieveFromClient(msg, from);
            }

            ChatDAL.UpdateUserChatDetailsToRead(from, to);
        }
        public async Task <IActionResult> Get(
            [FromRoute] Guid chatId,
            [FromQuery][DefaultValue("1")] int?page, [DefaultValue("25")] int?size,
            CancellationToken cancellationToken)
        {
            ChatDetails chat = await _chatsData.GetByIdAsync(chatId, cancellationToken);

            if (chat == null)
            {
                return(this.BadRequest(new ProblemDetails()
                {
                    Detail = $"Chat with id {chatId} not found."
                }));
            }

            int pageValue = page ?? 1;
            int sizeValue = size ?? 25;

            PagedList <ChatMessage> messages = await _messagesData
                                               .GetMessagesAsync(
                chatId,
                pageValue,
                sizeValue,
                cancellationToken);

            return(this.Ok(messages));
        }
예제 #3
0
        private async void InboxList_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            var ClickedItem = InboxList.SelectedItem as InboxViewModel;
            var Chats       = await Api.InstaApi.GetDirectInboxThreadAsync(ClickedItem.TTag);

            ChatDetails.Items.Clear();
            foreach (var chat in Chats.Value.Items.OrderBy(x => x.TimeStamp).ToList())
            {
                if (chat.UserId == Api.Userid)
                {
                    ChatDetails.Items.Add(new ChatViewModel()
                    {
                        Fill = "#e3e3e3", StrokeThickness = "0", ItemId = chat.ItemId, Date = chat.TimeStamp.ToShortDateString(), Text = chat.Text, Dir = FlowDirection.RightToLeft
                    });
                }
                else
                {
                    ChatDetails.Items.Add(new ChatViewModel()
                    {
                        Fill = "#fff", StrokeThickness = "1", ItemId = chat.ItemId, Date = chat.TimeStamp.ToShortDateString(), Text = chat.Text, Dir = FlowDirection.LeftToRight
                    });
                }
            }
            ChatDetails.SelectedIndex = ChatDetails.Items.Count - 1;
            ChatDetails.ScrollIntoView(ChatDetails.SelectedItem);
        }
예제 #4
0
        private async void DispatcherTimer_Tick(object sender, object e)
        {
            try
            {
                var inbox = await Api.InstaApi.GetDirectInboxAsync();

                foreach (var innerinbox in InboxList.Items)
                {
                    var element    = innerinbox as InboxViewModel;
                    var newelement = inbox.Value.Inbox.Threads.Where(x => x.ThreadId == element.TTag).First();
                    try
                    {
                        if (newelement.Items[0].TimeStamp != element.LMDate)
                        {
                            //element.LastMessage = inbox.Value.Inbox.Threads.Where(x => x.ThreadId == element.TTag).First().Items[0].Text ?? "";
                            //element.Notify = Visibility.Visible;
                            (InboxList.Items.Where(x => (x as InboxViewModel).TTag == element.TTag).First() as InboxViewModel).LastMessage = newelement.Items[0].Text;
                            (InboxList.Items.Where(x => (x as InboxViewModel).TTag == element.TTag).First() as InboxViewModel).Notify      = Visibility.Visible;
                        }
                    }
                    catch
                    {
                    }
                }

                if (ChatDetails.Items.Count > 0)
                {
                    var ClickedItem = InboxList.SelectedItem as InboxViewModel;
                    var Chats       = await Api.InstaApi.GetDirectInboxThreadAsync(ClickedItem.TTag);

                    ChatDetails.Items.Clear();
                    foreach (var chat in Chats.Value.Items.OrderBy(x => x.TimeStamp).ToList())
                    {
                        if (chat.UserId == Api.Userid)
                        {
                            ChatDetails.Items.Add(new ChatViewModel()
                            {
                                Fill = "#e3e3e3", StrokeThickness = "0", ItemId = chat.ItemId, Date = chat.TimeStamp.ToShortDateString(), Text = chat.Text, Dir = FlowDirection.RightToLeft
                            });
                        }
                        else
                        {
                            ChatDetails.Items.Add(new ChatViewModel()
                            {
                                Fill = "#fff", StrokeThickness = "1", ItemId = chat.ItemId, Date = chat.TimeStamp.ToShortDateString(), Text = chat.Text, Dir = FlowDirection.LeftToRight
                            });
                        }
                    }
                    ChatDetails.SelectedIndex = ChatDetails.Items.Count - 1;
                    ChatDetails.ScrollIntoView(ChatDetails.SelectedItem);
                }
            }
            catch
            {
            }
        }
예제 #5
0
        public IActionResult Update(string id, ChatDetails eventsIn)
        {
            var events = _eventService.Get(id);

            if (events == null)
            {
                return(NotFound());
            }
            _eventService.Update(id, eventsIn);
            return(NoContent());
        }
        public async Task <IActionResult> Post([FromBody] SendMessageCommand command, CancellationToken cancellationToken)
        {
            ChatDetails chat = await _chatsData.GetByIdAsync(command.ChatId, cancellationToken);

            if (chat == null)
            {
                return(this.NotFound(new ProblemDetails()
                {
                    Detail = $"Chat with id {command.ChatId} not found."
                }));
            }

            await _messagesData.AddAsync(command, cancellationToken);

            return(this.Ok());
        }
        public async Task <IActionResult> Delete([FromRoute] Guid chatId, CancellationToken cancellationToken)
        {
            ChatDetails chat = await _chatsData.GetByIdAsync(chatId, cancellationToken);

            if (chat == null)
            {
                return(this.NotFound(new ProblemDetails()
                {
                    Detail = $"Chat with id {chatId} not found."
                }));
            }

            await _chatsData.RemoveAsync(chatId, cancellationToken);

            return(this.Ok());
        }
예제 #8
0
        public void Update_ExistingPassed_ReturnsOkResult()
        {
            // Arrange
            var         existingGuid = "1234567";
            ChatDetails cd           = new ChatDetails()
            {
                Uname   = "Abhishek",
                Message = "create a new repo",
                Client  = true,
                Date    = "1234"
            };
            // Act
            var okResponse = _controller.Update(existingGuid, cd);

            // Assert
            Assert.IsType <OkObjectResult>(okResponse);
        }
예제 #9
0
        /// <summary>
        /// Method to LoadData
        /// </summary>
        private void AddDetails()
        {
            if (!string.IsNullOrEmpty(Message))
            {
                // Save details in database
                _dataService.AddDetails(CurrentUserId, SelectedUserId, Message);

                if (ChatDetails.Count > 0)
                {
                    ChatDetails.Clear();
                }

                // Refresh items
                ChatDetails = _dataService.GetChatDetails(CurrentUserId, SelectedUserId);

                // Clear message
                Message = string.Empty;
            }
        }
예제 #10
0
        public static ChatDetails ToChatDetails(this ChatData chatData)
        {
            if (chatData == null)
            {
                return(null);
            }

            var target = new ChatDetails
            {
                Id     = chatData.Id,
                Member = new ChatDetailsMember
                {
                    Id = chatData.Member.Id
                },
                Name = chatData.Name
            };

            return(target);
        }
예제 #11
0
        //改成Dto
        public async Task SendMessageToGroup(ChatDetailDto dto)
        {
            // 聊天後就存入資料庫
            ChatDetails details = new ChatDetails()
            {
                Id       = Guid.NewGuid(),
                RoomId   = dto.RoomId,
                UserName = dto.UserName,
                Text     = dto.Text,

                DateTime = DateTime.UtcNow,
            };

            _details.Create(details);
            _details.SaveContext();


            await Clients.Group(dto.RoomId).ReceiveGroupMessage(dto.RoomId, dto.UserName, dto.Text, TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, TimeZoneInfo.Local));
        }
예제 #12
0
        private async void SendBtn_Click(object sender, RoutedEventArgs e)
        {
            if (!string.IsNullOrWhiteSpace(TextToSend.Text))
            {
                SendBtn.IsEnabled = false;
                //Stopwatch stopwatch = new Stopwatch();
                //stopwatch.Start();
                var result = await Api.InstaApi.SendDirectMessage((InboxList.SelectedItem as InboxViewModel).UTag, (InboxList.SelectedItem as InboxViewModel).TTag, TextToSend.Text);

                if (result.Succeeded)
                {
                    var ClickedItem = InboxList.SelectedItem as InboxViewModel;

                    var Chats = await Api.InstaApi.GetDirectInboxThreadAsync(ClickedItem.TTag);

                    ChatDetails.Items.Clear();
                    foreach (var chat in Chats.Value.Items.OrderBy(x => x.TimeStamp).ToList())
                    {
                        if (chat.UserId == Api.Userid)
                        {
                            ChatDetails.Items.Add(new ChatViewModel()
                            {
                                Fill = "#e3e3e3", StrokeThickness = "0", ItemId = chat.ItemId, Date = chat.TimeStamp.ToShortDateString() + " " + chat.TimeStamp.ToShortTimeString(), Text = chat.Text, Dir = FlowDirection.RightToLeft
                            });
                        }
                        else
                        {
                            ChatDetails.Items.Add(new ChatViewModel()
                            {
                                Fill = "#fff", StrokeThickness = "1", ItemId = chat.ItemId, Date = chat.TimeStamp.ToShortDateString() + " " + chat.TimeStamp.ToShortTimeString(), Text = chat.Text, Dir = FlowDirection.LeftToRight
                            });
                        }
                    }
                }
                //stopwatch.Stop();
                ChatDetails.SelectedIndex = ChatDetails.Items.Count - 1;
                ChatDetails.ScrollIntoView(ChatDetails.SelectedItem);
                TextToSend.Text   = "";
                SendBtn.IsEnabled = true;
            }
        }
예제 #13
0
        protected override void OnInitialize()
        {
            if (Chat == null)
            {
                return;
            }

            ChatDetails.CurrentItem = Chat;
            var notifySettings = Chat.NotifySettings as TLPeerNotifySettings;

            if (notifySettings != null)
            {
                var sound = _stateService.Sounds.FirstOrDefault(x => string.Equals(x, notifySettings.Sound.Value, StringComparison.OrdinalIgnoreCase));
                ChatDetails.SetSelectedSound(sound ?? _stateService.Sounds[0]);
            }
            NotifyOfPropertyChange(() => Chat);

            Items.Add(ChatDetails);
            ActivateItem(ChatDetails);

            base.OnInitialize();
        }
예제 #14
0
 public void Update(string id, ChatDetails bookIn)
 {
 }
예제 #15
0
 public ChatDetails Create(ChatDetails newItem)
 {
     newItem.Id = "134527282";
     _chatdetails.Add(newItem);
     return(newItem);
 }
예제 #16
0
        public ActionResult <string> Create(ChatDetails Uname)
        {
            _eventService.Create(Uname);

            //var userdetail = _eventService.GetByName(Uname);
            Console.WriteLine(Uname.Message);
            var messageStr = Uname.Message;

            string[] words    = messageStr.Split(" ");
            string   issue    = null;
            string   repoName = null;
            string   uname    = null;

            foreach (string word in words)
            {
                if (word.Contains("_repo"))
                {
                    repoName = word.Substring(0, word.Length - 5);
                    Console.WriteLine(repoName);
                }
                if (word.Contains("_issue"))
                {
                    issue = word.Substring(0, word.Length - 6);
                    Console.WriteLine(issue);
                }
                if (word.Contains("_uname"))
                {
                    uname = word.Substring(0, word.Length - 6);
                    Console.WriteLine(uname);
                }
            }


            string url = "https://api.wit.ai/message?q=" + messageStr; // sample url
            string a   = "Bearer " + "UKIVKGFEGVMQPK7PD7ZX64AHJRX266LB";

            using (HttpClient client = new HttpClient())
            {
                client.DefaultRequestHeaders.Add("Authorization", a);
                var     b    = client.GetStringAsync(url).Result;
                dynamic json = JsonConvert.DeserializeObject(b);
                var     str  = JsonConvert.SerializeObject(json.entities);
                var     p    = str.Split(new string[] { "\"" }, StringSplitOptions.None);
                foreach (string i in p)
                {
                    Console.WriteLine(i);
                }
                //Console.WriteLine(p[1]);
                if (p.Length <= 1)
                {
                    return("Noooooooo");
                }
                else
                {
                    switch (p[1])
                    {
                    case "create_repo":

                        var client_ = new RestClient("https://api.github.com/user/repos");
                        var request = new RestRequest(Method.POST);
                        request.AddHeader("cache-control", "no-cache");
                        request.AddHeader("Connection", "keep-alive");
                        request.AddHeader("Accept-Encoding", "gzip, deflate");
                        request.AddHeader("Host", "api.github.com");
                        request.AddHeader("Postman-Token", "d3056e59-d436-44b2-b04b-1bc8105d3cf2,8c6331ee-79d0-419d-a960-e69fcfe0814a");
                        request.AddHeader("Cache-Control", "no-cache");
                        request.AddHeader("Accept", "/application/vnd.github.shadow-cat-preview+json");
                        request.AddHeader("User-Agent", "PostmanRuntime/7.17.1");
                        request.AddHeader("Authorization", "Bearer d66d3a2996dae3b8230e2fe8a5ce10e0605756a8");
                        request.AddJsonBody(new { name = repoName });
                        IRestResponse response = client_.Execute(request);
                        return(response.Content);

                        break;

                    case "create_issue":
                        Console.WriteLine("from Issue ");
                        var clientss  = new RestClient("https://api.github.com/repos/" + uname + "/" + repoName + "/issues");
                        var requestss = new RestRequest(Method.POST);
                        requestss.AddHeader("cache-control", "no-cache");
                        requestss.AddHeader("Connection", "keep-alive");
                        requestss.AddHeader("Accept-Encoding", "gzip, deflate");
                        requestss.AddHeader("Host", "api.github.com");
                        requestss.AddHeader("Postman-Token", "d3056e59-d436-44b2-b04b-1bc8105d3cf2,8c6331ee-79d0-419d-a960-e69fcfe0814a");
                        requestss.AddHeader("Cache-Control", "no-cache");
                        requestss.AddHeader("Accept", "/application/vnd.github.shadow-cat-preview+json");
                        requestss.AddHeader("User-Agent", "PostmanRuntime/7.17.1");
                        requestss.AddHeader("Authorization", "Bearer d66d3a2996dae3b8230e2fe8a5ce10e0605756a8");
                        //requestss.AddJsonBody(new { name = "BotExample" });
                        requestss.AddJsonBody(new { title = issue });     //for issue it is required.

                        IRestResponse responsess = clientss.Execute(requestss);
                        return(responsess.Content);

                        break;

                    case "fork":
                        Console.WriteLine("forkkkkkkk");
                        var clients  = new RestClient("https://api.github.com/repos/" + uname + "/" + repoName + "/forks");
                        var requests = new RestRequest(Method.POST);
                        requests.AddHeader("cache-control", "no-cache");
                        requests.AddHeader("Connection", "keep-alive");
                        requests.AddHeader("Accept-Encoding", "gzip, deflate");
                        requests.AddHeader("Host", "api.github.com");
                        requests.AddHeader("Postman-Token", "d3056e59-d436-44b2-b04b-1bc8105d3cf2,8c6331ee-79d0-419d-a960-e69fcfe0814a");
                        requests.AddHeader("Cache-Control", "no-cache");
                        requests.AddHeader("Accept", "/application/vnd.github.shadow-cat-preview+json");
                        requests.AddHeader("User-Agent", "PostmanRuntime/7.17.1");
                        requests.AddHeader("Authorization", "Bearer d66d3a2996dae3b8230e2fe8a5ce10e0605756a8");
                        IRestResponse responses = clients.Execute(requests);
                        return(responses.Content);

                        break;

                    default:
                        Console.WriteLine("No oooooooooooooooooooooooo");
                        break;
                    }
                }
            }



            return(CreatedAtRoute("GetEventsByApi", new { id = Uname.Id.ToString() }, Uname));
        }
예제 #17
0
 public ChatDetails Create(ChatDetails book)
 {
     _books.InsertOne(book);
     return(book);
 }
예제 #18
0
 public void Remove(ChatDetails bookIn) =>
 _apiValue.DeleteOne(book => book.Id == bookIn.Id);
예제 #19
0
        protected override void OnActivate()
        {
            if (_stateService != null &&
                _stateService.Participant != null)
            {
                var participant = _stateService.Participant;
                _stateService.Participant = null;

                var forwardingMessagesCount = _stateService.ForwardingMessagesCount;
                _stateService.ForwardingMessagesCount = 0;

                var broadcastChat = Chat as TLBroadcastChat;
                if (broadcastChat != null)
                {
                    var serviceMessage = new TLMessageService17();
                    serviceMessage.ToId = new TLPeerBroadcast {
                        Id = Chat.Id
                    };
                    serviceMessage.FromId = new TLInt(_stateService.CurrentUserId);
                    serviceMessage.Out    = new TLBool(true);
                    serviceMessage.SetUnread(new TLBool(false));
                    serviceMessage.Date   = TLUtils.DateToUniversalTimeTLInt(_mtProtoService.ClientTicksDelta, DateTime.Now);
                    serviceMessage.Action = new TLMessageActionChatAddUser {
                        UserId = participant.Id
                    };

                    broadcastChat.ParticipantIds.Add(participant.Id);

                    _cacheService.SyncBroadcast(broadcastChat,
                                                result =>
                    {
                        _eventAggregator.Publish(serviceMessage);
                    });
                    //ChatDetails.UpdateTitles();
                }
                else
                {
                    _mtProtoService.AddChatUserAsync(Chat.Id, participant.ToInputUser(), new TLInt(forwardingMessagesCount),
                                                     statedMessage =>
                    {
                        var updates = statedMessage as TLUpdates;
                        if (updates != null)
                        {
                            var updateNewMessage = updates.Updates.FirstOrDefault(x => x is TLUpdateNewMessage) as TLUpdateNewMessage;
                            if (updateNewMessage != null)
                            {
                                _eventAggregator.Publish(updateNewMessage.Message);
                            }
                        }

                        ChatDetails.UpdateTitles();
                    },
                                                     error => Execute.BeginOnUIThread(() =>
                    {
                        if (error.TypeEquals(ErrorType.PEER_FLOOD))
                        {
                            MessageBox.Show(AppResources.PeerFloodAddContact, AppResources.Error, MessageBoxButton.OK);
                        }

                        Telegram.Api.Helpers.Execute.ShowDebugMessage("messages.addChatUser error " + error);
                    }));
                }
            }

            if (_stateService != null &&
                _stateService.SelectedTimerSpan != null)
            {
                ChatDetails.SelectedSpan        = _stateService.SelectedTimerSpan;
                _stateService.SelectedTimerSpan = null;
            }

            ChatDetails.StartTimer();

            base.OnActivate();
        }
예제 #20
0
 public void ForwardInAnimationComplete()
 {
     ChatDetails.ForwardInAnimationComplete();
 }
예제 #21
0
        protected override void OnDeactivate(bool close)
        {
            ChatDetails.StopTimer();

            base.OnDeactivate(close);
        }
예제 #22
0
 public ChatDetails Create(ChatDetails book)
 {
     _apiValue.InsertOne(book);
     return(book);
 }
        public async Task <IActionResult> Get(Guid chatId, CancellationToken cancellationToken)
        {
            ChatDetails chat = await _chatsData.GetByIdAsync(chatId, cancellationToken);

            return(this.Ok(chat));
        }
예제 #24
0
 public ActionResult <ChatDetails> Create(ChatDetails events)
 {
     _eventService.Create(events);
     return(CreatedAtRoute("GetEvents", new { id = events.Id.ToString() }, events));
 }
예제 #25
0
 public void AddParticipant()
 {
     ChatDetails.AddParticipant();
 }
예제 #26
0
 public void Update(string id, ChatDetails bookIn) =>
 _apiValue.ReplaceOne(book => book.Id == id, bookIn);