public async Task <SendMessageTemplate> UpdateSendMessage(SendMessageTemplate SendMessageInfo) { return(await _repository.UpdateAsync(SendMessageInfo)); }
void NotifyHandling() { BinaryFormatter formatter = new BinaryFormatter(); using (MemoryStream memoryStream = new MemoryStream()) { while (true) { try { memoryStream.Flush(); memoryStream.Position = 0; do { byte[] buffer = new byte[256]; int bytes; bytes = clientStream.Read(buffer, 0, buffer.Length); memoryStream.Write(buffer, 0, bytes); buffer = new byte[256]; }while (clientStream.DataAvailable); memoryStream.Position = 0; RRTemplate serverResponse = formatter.Deserialize(memoryStream) as RRTemplate; if (serverResponse != null) { switch (serverResponse.RRType) { case RRType.AddContact: AddRemoveContactTemplate aContT = serverResponse.RRObject as AddRemoveContactTemplate; if (aContT != null) { AddContact(aContT); } break; case RRType.RemoveContact: AddRemoveContactTemplate rContT = serverResponse.RRObject as AddRemoveContactTemplate; if (rContT != null) { RemoveContact(rContT); } break; case RRType.RefreshContacts: RefreshContactsTemplate refrC = serverResponse.RRObject as RefreshContactsTemplate; if (refrC != null) { RefreshContacts(refrC); } break; case RRType.SearchOutContacts: SearchOutContactsTemplate searchOutC = serverResponse.RRObject as SearchOutContactsTemplate; if (searchOutC != null) { SearchOutContacts(searchOutC); } break; case RRType.SendMessage: SendMessageTemplate sMessT = serverResponse.RRObject as SendMessageTemplate; if (sMessT != null) { SendMessageReceive(sMessT); } break; case RRType.RefreshContactStatus: RefreshContactStatusTemplate refrContStT = serverResponse.RRObject as RefreshContactStatusTemplate; if (refrContStT != null) { RefreshContactStatus(refrContStT); } break; case RRType.AddContactTarget: AddRemoveContactTargetTemplate aconttT = serverResponse.RRObject as AddRemoveContactTargetTemplate; if (aconttT != null) { AddContactTarget(aconttT); } break; case RRType.RemoveContactTarget: AddRemoveContactTargetTemplate rconttT = serverResponse.RRObject as AddRemoveContactTargetTemplate; if (rconttT != null) { RemoveContactTarget(rconttT); } break; case RRType.RefreshMessageState: RefreshMessageStateTemplate refrmsT = serverResponse.RRObject as RefreshMessageStateTemplate; if (refrmsT != null) { RefreshMessageState(refrmsT); } break; case RRType.CreateConv: CreateConvTemplate crconvT = serverResponse.RRObject as CreateConvTemplate; if (crconvT != null) { AddConv(crconvT); } break; case RRType.RemoveConv: RemoveConvTemplate rconvT = serverResponse.RRObject as RemoveConvTemplate; if (rconvT != null) { RemoveConv(rconvT); } break; case RRType.RemoveConvTarget: RemoveConvTemplate rconvtT = serverResponse.RRObject as RemoveConvTemplate; if (rconvtT != null) { RemoveConvTarget(rconvtT); } break; case RRType.BlockUnblockUserTarget: BlockUnblockUserTemplate bunbUT = serverResponse.RRObject as BlockUnblockUserTemplate; if (bunbUT != null) { ChangeBlockUserStatusTarget(bunbUT); } break; default: if (client.Connected) { mainPageViewModel.MainViewModel.ErrorService(new ErrorReportTemplate(ErrorType.Other, new Exception("Unknown problem"))); } else { return; } break; } } else { if (client.Connected) { mainPageViewModel.MainViewModel.ErrorService(new ErrorReportTemplate(ErrorType.UnCorrectServerResponse, new Exception("Uncorrect server response"))); } else { return; } } } catch (SocketException ex) { if (client.Connected) { mainPageViewModel.MainViewModel.ErrorService(new ErrorReportTemplate(ErrorType.NoConnectionWithServer, ex)); } else { return; } } catch (Exception ex) { if (client.Connected) { mainPageViewModel.MainViewModel.ErrorService(new ErrorReportTemplate(ErrorType.Other, ex)); } else { return; } } } } }
public async Task <SendMessageTemplate> CreateSendMessage(SendMessageTemplate SendMessageInfo) { SendMessageInfo.Id = await _repository.InsertAndGetIdAsync(SendMessageInfo); return(SendMessageInfo); }
private void SendMessageReceive(SendMessageTemplate sMessT) { if (sMessT.Message.SenderID == mainPageViewModel.MainViewModel.UserInfo.Info.Id) { foreach (ContactUI contactUI in mainPageViewModel.ContactsTab.Contacts) { if (contactUI.ChatId == sMessT.ReceiverChatID) { foreach (MessageUI m in contactUI.ContactMessages) { if (m.MessageDateTime == sMessT.Message.Time && m.IsOwnerMessage) { Application.Current.Dispatcher.Invoke(new Action(() => { m.MessageState = MessageState.Sended; m.ChatId = sMessT.ReceiverChatID; m.MessageId = sMessT.Message.MessageID; if (m.MessageType == MessageType.File) { m.FileSize = sMessT.Message.FileSize; mainPageViewModel.MainViewModel.NotifyUserByRowState(RowStateResourcesName.l_succsUploaded); } })); } } break; } } } else { ContactUI chat = null; foreach (ContactUI c in mainPageViewModel.ContactsTab.Contacts) { if (c.ChatId == sMessT.ReceiverChatID) { chat = c; break; } } if (chat != null) { switch (chat.ContactType) { case ContactType.Chat: Application.Current.Dispatcher.Invoke(new Action(() => { MessageUI messageUI = new MessageUI(mainPageViewModel, false, chat.ContactAvatar, chat.ContactStatus, sMessT.Message.MessageType, sMessT.Message.MessageState, sMessT.Message.Time, sMessT.Message.MessageBody, sMessT.Message.SenderName, sMessT.ReceiverChatID, sMessT.Message.MessageID, chat.ContactID, sMessT.Message.FileName, sMessT.Message.FileSize); chat.ContactMessages.Add(messageUI); chat.MessageCounter++; })); break; case ContactType.Conversation: foreach (Contact i in chat.ConvMembers) { if (i.UserId == sMessT.Message.SenderID) { Application.Current.Dispatcher.Invoke(new Action(() => { MemoryStream memoryStream = new MemoryStream(i.AvatarImage); BitmapImage senderAvatar = Converters.BitmapToImageSource(new Bitmap(memoryStream)); MessageUI messageUI = new MessageUI(mainPageViewModel, false, senderAvatar, i.Status, sMessT.Message.MessageType, sMessT.Message.MessageState, sMessT.Message.Time, sMessT.Message.MessageBody, sMessT.Message.SenderName, sMessT.ReceiverChatID, sMessT.Message.MessageID, i.UserId, sMessT.Message.FileName, sMessT.Message.FileSize); chat.ContactMessages.Add(messageUI); chat.MessageCounter++; })); } } break; default: break; } } } }