/// <summary> /// Thread safe function to update msg status /// </summary> /// <param name="ids"></param> /// <param name="status"></param> /// <returns></returns> public static string updateAllMsgStatus(string fromUser, long[] ids, int status) { bool shouldSubmit = false; string msisdn = null; using (HikeChatsDb context = new HikeChatsDb(App.MsgsDBConnectionstring + ";Max Buffer Size = 1024")) { for (int i = 0; i < ids.Length; i++) { ConvMessage message = DbCompiledQueries.GetMessagesForMsgId(context, ids[i]).FirstOrDefault <ConvMessage>(); if (message != null) { if ((int)message.MessageStatus < status) { if (fromUser == null || fromUser == message.Msisdn) { message.MessageStatus = (ConvMessage.State)status; msisdn = message.Msisdn; shouldSubmit = true; } } } } if (shouldSubmit) { SubmitWithConflictResolve(context); } shouldSubmit = false; return(msisdn); } }
public static string updateMsgStatus(string fromUser, long msgID, int val) { using (HikeChatsDb context = new HikeChatsDb(App.MsgsDBConnectionstring + ";Max Buffer Size = 1024")) { ConvMessage message = DbCompiledQueries.GetMessagesForMsgId(context, msgID).FirstOrDefault <ConvMessage>(); if (message != null) { if ((int)message.MessageStatus < val) { if (fromUser == null || fromUser == message.Msisdn) { message.MessageStatus = (ConvMessage.State)val; SubmitWithConflictResolve(context); return(message.Msisdn); } else { return(null); } } } else { return(null); } } return(null); }
public static List <GroupInfo> GetAllGroups() { using (HikeChatsDb context = new HikeChatsDb(App.MsgsDBConnectionstring)) { return(DbCompiledQueries.GetAllGroups(context).ToList()); } }
public static void deleteAllGroups() { using (HikeChatsDb context = new HikeChatsDb(App.MsgsDBConnectionstring)) { context.groupInfo.DeleteAllOnSubmit <GroupInfo>(context.GetTable <GroupInfo>()); MessagesTableUtils.SubmitWithConflictResolve(context); } }
public static void addGroupInfo(GroupInfo gi) { using (HikeChatsDb context = new HikeChatsDb(App.MsgsDBConnectionstring)) { context.groupInfo.InsertOnSubmit(gi); context.SubmitChanges(); } }
public static void addMessages(List <ConvMessage> messages) { using (HikeChatsDb context = new HikeChatsDb(App.MsgsDBConnectionstring)) { context.messages.InsertAllOnSubmit(messages); context.SubmitChanges(); } }
public static void deleteAllMessagesForMsisdn(string msisdn) { using (HikeChatsDb context = new HikeChatsDb(App.MsgsDBConnectionstring)) { context.messages.DeleteAllOnSubmit <ConvMessage>(DbCompiledQueries.GetMessagesForMsisdn(context, msisdn)); SubmitWithConflictResolve(context); } }
public static void deleteAllMessages() { using (HikeChatsDb context = new HikeChatsDb(App.MsgsDBConnectionstring)) { context.messages.DeleteAllOnSubmit <ConvMessage>(context.GetTable <ConvMessage>()); SubmitWithConflictResolve(context); } }
public static void deleteGroupWithId(string groupId) { using (HikeChatsDb context = new HikeChatsDb(App.MsgsDBConnectionstring)) { context.groupInfo.DeleteAllOnSubmit <GroupInfo>(DbCompiledQueries.GetGroupInfoForID(context, groupId)); MessagesTableUtils.SubmitWithConflictResolve(context); } }
public static GroupInfo getGroupInfoForId(string groupId) { using (HikeChatsDb context = new HikeChatsDb(App.MsgsDBConnectionstring)) { GroupInfo cObj = DbCompiledQueries.GetGroupInfoForID(context, groupId).FirstOrDefault(); return(cObj); } }
public static List <ConvMessage> getAllMessages() { List <ConvMessage> res; using (HikeChatsDb context = new HikeChatsDb(App.MsgsDBConnectionstring)) { res = DbCompiledQueries.GetAllMessages(context).ToList <ConvMessage>(); return((res == null || res.Count == 0) ? null : res.ToList()); } }
/* This queries messages table and get the last message for given msisdn*/ public static ConvMessage getLastMessageForMsisdn(string msisdn) { List <ConvMessage> res; using (HikeChatsDb context = new HikeChatsDb(App.MsgsDBConnectionstring)) { res = DbCompiledQueries.GetMessagesForMsisdn(context, msisdn).ToList <ConvMessage>(); return((res == null || res.Count == 0) ? null : res.Last()); } }
public static bool IsGroupAlive(string groupId) { using (HikeChatsDb context = new HikeChatsDb(App.MsgsDBConnectionstring)) { GroupInfo cObj = DbCompiledQueries.GetGroupInfoForID(context, groupId).FirstOrDefault(); if (cObj == null) { return(false); } return(cObj.GroupAlive); } }
public static void SetGroupAlive(string groupId) { using (HikeChatsDb context = new HikeChatsDb(App.MsgsDBConnectionstring)) { GroupInfo cObj = DbCompiledQueries.GetGroupInfoForID(context, groupId).FirstOrDefault(); if (cObj == null) { return; } cObj.GroupAlive = true; MessagesTableUtils.SubmitWithConflictResolve(context); } }
/* Adds a chat message to message Table.*/ public static bool addMessage(ConvMessage convMessage) { using (HikeChatsDb context = new HikeChatsDb(App.MsgsDBConnectionstring + ";Max Buffer Size = 1024;")) { if (convMessage.MappedMessageId > 0) { IQueryable <ConvMessage> qq = DbCompiledQueries.GetMessageForMappedMsgIdMsisdn(context, convMessage.Msisdn, convMessage.MappedMessageId, convMessage.Message); ConvMessage cm = qq.FirstOrDefault(); if (cm != null) { return(false); } } long currentMessageId = convMessage.MessageId; context.messages.InsertOnSubmit(convMessage); try { context.SubmitChanges(); } catch (Exception ex) { Debug.WriteLine("Exception while inserting msg in CHATS DB : " + ex.StackTrace); return(false); } //if (convMessage.GrpParticipantState == ConvMessage.ParticipantInfoState.NO_INFO) //{ // long msgId = convMessage.MessageId; // Deployment.Current.Dispatcher.BeginInvoke(() => // { // NewChatThread currentPage = App.newChatThreadPage; // if (currentPage != null) // { // if (convMessage.IsSent) // { // SentChatBubble sentChatBubble; // currentPage.OutgoingMsgsMap.TryGetValue(currentMessageId, out sentChatBubble); // if (sentChatBubble != null) // { // currentPage.OutgoingMsgsMap.Remove(currentMessageId); // currentPage.OutgoingMsgsMap.Add(convMessage.MessageId, sentChatBubble); // sentChatBubble.MessageId = convMessage.MessageId; // } // } // } // }); //} } return(true); }
public static bool updateGroupName(string groupId, string groupName) { using (HikeChatsDb context = new HikeChatsDb(App.MsgsDBConnectionstring)) { GroupInfo cObj = DbCompiledQueries.GetGroupInfoForID(context, groupId).FirstOrDefault(); if (cObj == null) { return(false); } cObj.GroupName = groupName; MessagesTableUtils.SubmitWithConflictResolve(context); } return(true); }
public static void SubmitWithConflictResolve(HikeChatsDb context) { try { context.SubmitChanges(ConflictMode.ContinueOnConflict); } catch (ChangeConflictException e) { Console.WriteLine(e.Message); // Automerge database values for members that client // has not modified. foreach (ObjectChangeConflict occ in context.ChangeConflicts) { occ.Resolve(RefreshMode.KeepChanges); // second client changes will be submitted. } } // Submit succeeds on second try. context.SubmitChanges(ConflictMode.FailOnFirstConflict); }
public static void createDatabaseAsync() { if (App.appSettings.Contains(App.IS_DB_CREATED)) // shows db are created { return; } BackgroundWorker bw = new BackgroundWorker(); bw.DoWork += (s, e) => { try { using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication()) { if (!string.IsNullOrEmpty(MiscDBUtil.THUMBNAILS) && !store.DirectoryExists(MiscDBUtil.THUMBNAILS)) { store.CreateDirectory(MiscDBUtil.THUMBNAILS); } if (!string.IsNullOrEmpty(MiscDBUtil.MISC_DIR) && !store.DirectoryExists(MiscDBUtil.MISC_DIR)) { store.CreateDirectory(MiscDBUtil.MISC_DIR); } if (!store.DirectoryExists(ConversationTableUtils.CONVERSATIONS_DIRECTORY)) { store.CreateDirectory(ConversationTableUtils.CONVERSATIONS_DIRECTORY); } if (!store.DirectoryExists(HikeConstants.SHARED_FILE_LOCATION)) { store.CreateDirectory(HikeConstants.SHARED_FILE_LOCATION); } if (!store.DirectoryExists(HikeConstants.ANALYTICS_OBJECT_DIRECTORY)) { store.CreateDirectory(HikeConstants.ANALYTICS_OBJECT_DIRECTORY); } } // Create the database if it does not exist. Stopwatch st = Stopwatch.StartNew(); using (HikeChatsDb db = new HikeChatsDb(MsgsDBConnectionstring)) { if (db.DatabaseExists() == false) { db.CreateDatabase(); } } using (HikeUsersDb db = new HikeUsersDb(UsersDBConnectionstring)) { if (db.DatabaseExists() == false) { db.CreateDatabase(); } } using (HikeMqttPersistenceDb db = new HikeMqttPersistenceDb(MqttDBConnectionstring)) { if (db.DatabaseExists() == false) { db.CreateDatabase(); } } WriteToIsoStorageSettings(App.IS_DB_CREATED, true); st.Stop(); long msec = st.ElapsedMilliseconds; Debug.WriteLine("APP: Time to create Dbs : {0}", msec); } catch { RemoveKeyFromAppSettings(App.IS_DB_CREATED); } }; bw.RunWorkerAsync(); }
public static void clearDatabase() { #region DELETE CONVS,CHAT MSGS, GROUPS, GROUP MEMBERS,THUMBNAILS ConversationTableUtils.deleteAllConversations(); DeleteAllThumbnails(); DeleteAllAttachmentData(); GroupManager.Instance.DeleteAllGroups(); using (HikeChatsDb context = new HikeChatsDb(App.MsgsDBConnectionstring)) { context.messages.DeleteAllOnSubmit <ConvMessage>(context.GetTable <ConvMessage>()); context.groupInfo.DeleteAllOnSubmit <GroupInfo>(context.GetTable <GroupInfo>()); try { context.SubmitChanges(ConflictMode.ContinueOnConflict); } catch (ChangeConflictException e) { Debug.WriteLine(e.Message); // Automerge database values for members that client // has not modified. foreach (ObjectChangeConflict occ in context.ChangeConflicts) { occ.Resolve(RefreshMode.KeepChanges); } } // Submit succeeds on second try. context.SubmitChanges(ConflictMode.FailOnFirstConflict); } #endregion #region DELETE USERS, BLOCKLIST using (HikeUsersDb context = new HikeUsersDb(App.UsersDBConnectionstring)) { context.blockedUsersTable.DeleteAllOnSubmit <Blocked>(context.GetTable <Blocked>()); context.users.DeleteAllOnSubmit <ContactInfo>(context.GetTable <ContactInfo>()); try { context.SubmitChanges(ConflictMode.ContinueOnConflict); } catch (ChangeConflictException e) { Debug.WriteLine(e.Message); // Automerge database values for members that client // has not modified. foreach (ObjectChangeConflict occ in context.ChangeConflicts) { occ.Resolve(RefreshMode.KeepChanges); } } // Submit succeeds on second try. context.SubmitChanges(ConflictMode.FailOnFirstConflict); } #endregion #region DELETE MQTTPERSISTED MESSAGES using (HikeMqttPersistenceDb context = new HikeMqttPersistenceDb(App.MqttDBConnectionstring)) { context.mqttMessages.DeleteAllOnSubmit <HikePacket>(context.GetTable <HikePacket>()); try { context.SubmitChanges(ConflictMode.ContinueOnConflict); } catch (ChangeConflictException e) { Debug.WriteLine(e.Message); // Automerge database values for members that client // has not modified. foreach (ObjectChangeConflict occ in context.ChangeConflicts) { occ.Resolve(RefreshMode.KeepChanges); } } // Submit succeeds on second try. context.SubmitChanges(ConflictMode.FailOnFirstConflict); } #endregion #region DELETE FAVOURITES AND PENDING REQUESTS DeleteFavourites(); DeletePendingRequests(); #endregion }