private void AddingAttachmentsToDB(MessagesTable currentMessageTable, Attachments attach) { db.Attachments.InsertOnSubmit(new AttachmentTable() { AccessKey = attach.access_key, Aid = attach.aid, AttachmentsMessage = currentMessageTable, Artist = attach.artist, Created = attach.created, Date = attach.date, Description = attach.description, Did = attach.did, Duration = attach.duration, Ext = attach.ext, Height = attach.height, Image = attach.image, ImageBig = attach.image_big, ImageMedium = attach.image_medium, ImageSmall = attach.image_small, Link = attach.link, OwnerId = attach.owner_id, Performer = attach.performer, Pid = attach.pid, Player = attach.player, Size = attach.size, Src = attach.src, SrcBig = attach.src_big, SrcSmall = attach.src_small, SrcXbig = attach.src_xbig, SrcXxbig = attach.src_xxbig, Text = attach.text, Title = attach.title, Type = attach.type.ToString(), Url = attach.url, Vid = attach.vid, Views = attach.views, Width = attach.width, Mid = currentMessageTable.Mid }); //db.SubmitChanges(); }
private void LoadingMessagesList(List<VkResponseData> messages, bool isApiRequest, bool saveToDB) { try { if (db.Messages != null && isApiRequest && saveToDB) { var messagesForDelete = (from message in db.Messages where message.ChatId == chat_id select message); foreach (var msg in messagesForDelete) { try { db.Attachments.DeleteAllOnSubmit((from attach in db.Attachments where attach.Mid == msg.Mid select attach)); } catch { continue; } } db.Messages.DeleteAllOnSubmit(messagesForDelete); db.SubmitChanges(); } } catch { } for (int i = messages.Count - 1; i >= 0; i--) { var currentMessage = messages[i] as Messages; if (!navigatingFrom) { if (isApiRequest && !saveToDB && (currentMessage.mid == lastMid.ToString())) continue; Dictionary<string, string> attachments_types = new Dictionary<string, string>(); string allAttachmentsString = string.Empty; if (!isApiRequest && !saveToDB) { try { var attachmentFromDb = (from attachment in db.Attachments where attachment.Mid == currentMessage.mid select attachment).ToList(); if (attachmentFromDb != null) { currentMessage.attachments = new List<Attachments>(); foreach (var attach in attachmentFromDb) { currentMessage.attachments.Add(new Attachments() { access_key = attach.AccessKey, aid = attach.Aid, artist = attach.Artist, created = attach.Created, date = attach.Date, description = attach.Description, did = attach.Did, duration = attach.Duration, ext = attach.Ext, height = attach.Height, image = attach.Image, image_big = attach.ImageBig, image_medium = attach.ImageMedium, image_small = attach.ImageSmall, link = attach.Link, owner_id = attach.OwnerId, performer = attach.Performer, pid = attach.Pid, player = attach.Player, size = attach.Size, src = attach.Src, src_big = attach.SrcBig, src_small = attach.SrcSmall, src_xbig = attach.SrcXbig, src_xxbig = attach.SrcXxbig, text = attach.Text, title = attach.Title, type = (Attachments.AttachmentType)Enum.Parse(typeof(Attachments.AttachmentType), attach.Type, true), url = attach.Url, vid = attach.Vid, views = attach.Views, width = attach.Width }); } } } catch { } } try { if (currentMessage.attachments != null) { foreach (var attachment in currentMessage.attachments) { switch (attachment.type) { case Attachments.AttachmentType.photo: attachments_types.Add("photo" + attachment.pid, "_" + attachment.pid); allAttachmentsString += attachment.pid + ","; break; case Attachments.AttachmentType.audio: attachments_types.Add("audio" + attachment.aid, "_" + attachment.aid); allAttachmentsString += attachment.aid + ","; break; case Attachments.AttachmentType.video: attachments_types.Add("video" + attachment.vid, "_" + attachment.vid); allAttachmentsString += attachment.vid + ","; break; case Attachments.AttachmentType.doc: attachments_types.Add("doc" + attachment.did, "_" + attachment.did); allAttachmentsString += attachment.did + ","; break; } } } messageStackpanels.Add(new ConversationTemplateItemViewModel() { Message = currentMessage.body, Mid = currentMessage.mid.ToString(), ReceivedTime = new DateTime(1970, 1, 1).AddSeconds(int.Parse(currentMessage.date)) + TimeZoneInfo.Local.BaseUtcOffset, User = currentMessage.from_id != Authorization.UserId ? false : true, Img = allAttachmentsString, Attachments = attachments_types }); messageListBox.Items.Add(messageStackpanels.Last().CreateMSGBox()); messageListBox.ScrollIntoView(messageListBox.Items[messageListBox.Items.Count - 1]); if (currentMessage.attachments != null) foreach (var attach in currentMessage.attachments) { AddingAttachmentsToListBoxItems(new List<VkResponseData>() { attach }); } } catch { } } if (isApiRequest && saveToDB) { try { var currentMessageTable = new MessagesTable() { AdminId = currentMessage.admin_id, Body = currentMessage.body, ChatActive = currentMessage.chat_active, ChatId = currentMessage.chat_id, Date = currentMessage.date, Deleted = currentMessage.deleted, IsOut = currentMessage._out, Mid = currentMessage.mid, ReadState = currentMessage.read_state, Title = currentMessage.title, //Uid = currentMessage._out == "0" ? Authorization.UserId : friend.UserId, UsersCount = currentMessage.users_count, FromId = currentMessage.uid, Latitude = currentMessage.latitude, Longitude = currentMessage.longitude }; db.Messages.InsertOnSubmit(currentMessageTable); if (currentMessage.attachments != null) foreach (var attach in currentMessage.attachments) { AddingAttachmentsToDB(currentMessageTable, attach); } db.SubmitChanges(); } catch { } } } }