public List<UserConversation> InitiateChat(long currentid, long peerid, long groupid)
        {
            try
            {
                List<UserConversation> objcoll = new List<UserConversation>();
                UserConversation objconversation = null;
                if (currentid != 0 && peerid != 0)
                {
                    string constr = ConfigurationManager.ConnectionStrings["HickConnectionString"].ConnectionString.ToString();
                    using (SqlConnection conn = new SqlConnection())
                    {
                        conn.ConnectionString = constr;
                        conn.Open();
                        bool isexist = false;

                        //using (SqlCommand command = new SqlCommand("select * from Hick_user_Conversation where ((Initiator=" + currentid + " and Answerer=" + peerid + ") or (Initiator=" + peerid + " and Answerer=" + currentid + ")) and ConversationDate=CONVERT(date, @date)", conn))
                        using (SqlCommand command = new SqlCommand("sp_hick_FetchUserConversationForToday", conn))
                        {
                            command.CommandType = CommandType.StoredProcedure;
                            command.Parameters.AddWithValue("@CurrentUserId", currentid);
                            command.Parameters.AddWithValue("@PeerId", peerid);
                            command.Parameters.AddWithValue("@Date", DateTime.UtcNow);
                            command.Parameters.AddWithValue("@GroupId", 0);
                            using (SqlDataReader reader = command.ExecuteReader())
                            {
                                if (reader.HasRows)
                                {
                                    isexist = true;
                                    while (reader.Read())
                                    {
                                        objconversation = new UserConversation();
                                        objconversation.Id = Convert.ToInt32(reader["ID"]);
                                        if (reader["ischatOn"] != System.DBNull.Value)
                                        {
                                            objconversation.IsChatOn = Convert.ToInt32(reader["ischatOn"]);
                                        }
                                        else
                                        {
                                            objconversation.IsChatOn = 0;
                                        }

                                        if (reader["total_txtchat_dauration"] != System.DBNull.Value)
                                        {
                                            objconversation.Total_Txtchat_Dauration = Convert.ToString(reader["total_txtchat_dauration"]);
                                        }
                                        else
                                        {
                                            objconversation.Total_Txtchat_Dauration = string.Empty;
                                        }
                                        objcoll.Add(objconversation);
                                    }
                                }
                            }
                        }
                        if (!isexist)
                        {
                            //var cmd = "INSERT INTO Hick_user_Conversation (Initiator,Answerer,ConversationDate) VALUES (@curuser,@peeruser,@date);SELECT CAST(scope_identity() AS bigint)";
                            using (SqlCommand command = new SqlCommand("sp_hick_InsertHickUserConversation", conn))
                            {
                                command.CommandType = CommandType.StoredProcedure;

                                command.Parameters.AddWithValue("@Curuser", currentid);
                                command.Parameters.AddWithValue("@Peeruser", peerid);
                                command.Parameters.AddWithValue("@Date", DateTime.UtcNow);
                                objconversation = new UserConversation();
                                objconversation.Id = (long)command.ExecuteScalar();
                                objcoll.Add(objconversation);

                            }
                        }

                        UpdateReadStatus(objcoll[0].Id, currentid, (int)ReadStatus.Read, (int)MessageTypes.Text);
                    }
                }
                else if (groupid != 0)
                {
                    objconversation = new UserConversation();
                    objconversation.Id = InitiateGroupChat(groupid);
                    objcoll.Add(objconversation);

                    UpdateGroupMessageState(groupid, currentid);
                }

                return objcoll;
            }
            catch (Exception)
            {

                throw;
            }
        }
예제 #2
0
        public static List<UserConversation> insertpeerconversation(string currentid, string peerid)
        {
            List<UserConversation> conversationlog = new List<UserConversation>();
            UserConversation conver = null;
            using (SqlConnection conn = new SqlConnection())
            {
                conn.ConnectionString = Utility.DBConnectionString;
                conn.Open();
                using (SqlCommand command = new SqlCommand(
            "select * from Hick_user_Conversation where (Initiator='" + currentid + "' or Answerer='" + currentid + "')and (Initiator='" + peerid + "' or Answerer='" + peerid + "')and (ConversationDate=convert(date, getdate()))", conn))
                {
                    using (SqlDataReader reader = command.ExecuteReader())
                    {
                        if (reader.HasRows == true)
                        {
                            while (reader.Read())
                            {
                                conver = new UserConversation();
                                conver.Id = Convert.ToInt64(reader["ID"]);
                                conver.Answerer = Convert.ToInt64(reader["Answerer"]);
                                conver.Initiator = Convert.ToInt64(reader["Initiator"]);
                                // conver.Date = Convert.ToInt64(reader["ConversationDate"]);
                                conversationlog.Add(conver);
                            }
                        }
                        else
                        {
                            string insertstring = @"insert into Hick_user_Conversation values('" + currentid + "','" + peerid + "',GETDATE()) ";
                            SqlCommand cmd = new SqlCommand(insertstring, conn);
                            SqlDataAdapter adp = new SqlDataAdapter();
                            adp.InsertCommand = cmd;
                            adp.InsertCommand.ExecuteNonQuery();
                        }

                        return conversationlog;
                    }
                }
            }
        }
        public UserConversation AddUserToGroup(long currentuserid, long groupid, long selecteduser, long peerid, long conversationid)
        {

            try
            {
                string uniqueGroupId = string.Empty;
                long _groupid = 0;
                UserConversation objuc = new UserConversation();
                string constr = ConfigurationManager.ConnectionStrings["HickConnectionString"].ConnectionString.ToString();
                using (SqlConnection conn = new SqlConnection(constr))
                {
                    conn.ConnectionString = constr;
                    conn.Open();
                    StringBuilder sb = new StringBuilder();

                    if (groupid == 0)
                    {
                        /* create new group*/
                        //if (selecteduser != peerid)
                        //{
                        //    string userId = currentuserid.ToString();
                        //    string groupUsers = selecteduser.ToString() + ',' + peerid.ToString();

                        //    uniqueGroupId = GetUniqueGroupId(userId, groupUsers);
                        //}
                        //else
                        //{
                        //    uniqueGroupId = GetUniqueGroupId(currentuserid.ToString(), selecteduser.ToString());
                        //}
                        if (peerid != 0)
                        {
                            uniqueGroupId = GetUniqueGroupId(currentuserid.ToString(), peerid.ToString());
                        }
                        else if (peerid == 0)
                        {
                            uniqueGroupId = GetUniqueGroupId(currentuserid.ToString(), selecteduser.ToString());
                        }

                        HickGroups existingGroup = GetGroupByUniqueId(uniqueGroupId);
                        if (existingGroup == null)
                        {
                            //sb.AppendLine("INSERT INTO hick_groups (created_by,created_date,group_unique_key) VALUES (@createdBy,@createdDate,@group_unique_key);SELECT CAST(scope_identity() AS bigint)");
                            using (SqlCommand command = new SqlCommand("sp_hick_InsertGroups", conn))
                            {
                                command.CommandType = CommandType.StoredProcedure;

                                command.Parameters.AddWithValue("@createdBy", currentuserid);
                                command.Parameters.AddWithValue("@createdDate", DateTime.UtcNow);
                                command.Parameters.AddWithValue("@group_unique_key", uniqueGroupId);
                                _groupid = (long)command.ExecuteScalar();
                            }
                            if (_groupid != 0)
                            {
                                /* adding loggedin user to the created group */
                                //sb = new StringBuilder();
                                //sb.AppendLine("INSERT INTO hick_group_users (group_id,user_id,created_date) VALUES (@groupid,@userid,@createddate)");
                                //if (peerid != 0)
                                //{
                                //    sb.AppendLine("INSERT INTO hick_group_users (group_id,user_id,created_date) VALUES (@groupid,@peerid,@createddate)");
                                //    //sb.AppendLine("UPDATE Hick_Conversation_log SET group_id=@groupid WHERE Conversation_Id=@converstnid");
                                //    sb.AppendLine("INSERT INTO hick_previous_log (group_id,conversation_id,created_date) VALUES (@groupid,@converstnid,@createddate)");

                                //}
                                //else if (peerid == 0)
                                //{
                                //    sb.AppendLine("INSERT INTO hick_group_users (group_id,user_id,created_date) VALUES (@groupid,@selecteduser,@createddate)");
                                //}
                                using (SqlCommand command = new SqlCommand("sp_hik_AddUsersToGroup", conn))
                                {
                                    command.CommandType = CommandType.StoredProcedure;

                                    command.Parameters.AddWithValue("@groupid", _groupid);
                                    command.Parameters.AddWithValue("@userid", currentuserid);
                                    command.Parameters.AddWithValue("@createddate", DateTime.UtcNow);
                                    //if (peerid != 0)
                                    //{
                                    //    command.Parameters.AddWithValue("@peerid", peerid);
                                    //    command.Parameters.AddWithValue("@converstnid", conversationid);
                                    //}
                                    //else if (peerid == 0)
                                    //{
                                    //    command.Parameters.AddWithValue("@selecteduser", selecteduser);
                                    //}

                                    command.Parameters.AddWithValue("@peerid", peerid);
                                    command.Parameters.AddWithValue("@converstnid", conversationid);
                                    command.Parameters.AddWithValue("@selecteduser", selecteduser);
                                    command.ExecuteNonQuery();
                                }

                            }
                        }
                        else
                        {
                            _groupid = existingGroup.Id;
                        }
                    }
                    else
                    {
                        _groupid = groupid;
                    }
                    if (_groupid != 0)
                    {
                        #region
                        /* Initiate group chat */
                        objuc.Id = InitiateGroupChat(_groupid);
                        objuc.GroupId = _groupid;

                        /* checking for the user already exist */
                        bool isuserExist = false;
                        //sb = new StringBuilder();
                        //sb.AppendLine("SELECT * FROM hick_group_users WHERE group_id=@groupid AND user_id=@userid");
                        using (SqlCommand command = new SqlCommand("sp_hick_FetchAllGroupUsers", conn))
                        {
                            command.CommandType = CommandType.StoredProcedure;

                            command.Parameters.AddWithValue("@groupid", _groupid);
                            command.Parameters.AddWithValue("@userid", selecteduser);
                            using (SqlDataReader reader = command.ExecuteReader())
                            {
                                if (reader.HasRows)
                                {
                                    isuserExist = true;
                                }
                            }
                        }
                        if (!isuserExist)
                        {
                            /* adding selected user to the created group */
                            string uniqueKey = string.Empty;
                            bool userExists = false;
                            List<string> usersList = new List<string>();
                            //string cmdSelectGroup = string.Empty;

                            //cmdSelectGroup = "select * from hick_groups where id=" + _groupid;
                            using (SqlCommand command = new SqlCommand("sp_hick_FetchAllGroups", conn))
                            {
                                command.CommandType = CommandType.StoredProcedure;
                                command.Parameters.AddWithValue("@GroupId", _groupid);

                                using (SqlDataReader reader = command.ExecuteReader())
                                {
                                    if (reader.HasRows)
                                    {
                                        while (reader.Read())
                                        {
                                            uniqueKey = Convert.ToString(reader["group_unique_key"]);
                                        }
                                    }
                                }
                            }
                            string[] groupUsers = uniqueKey.Split('-');
                            for (int i = 0; i < groupUsers.Length; i++)
                            {
                                if (groupUsers[i] == selecteduser.ToString())
                                {
                                    //selected user already exists;
                                    userExists = true;
                                }
                                usersList.Add(groupUsers[i]);
                            }

                            if (userExists == false)
                            {
                                string seperator = ",";
                                usersList.Add(selecteduser.ToString());
                                string users = string.Join(seperator, usersList.ToArray());
                                uniqueGroupId = GetUniqueGroupId("", users);

                                HickGroups existingGroup = GetGroupByUniqueId(uniqueGroupId);

                                if (existingGroup != null)
                                {
                                    // Group with selected users set already rexist;
                                }
                                else
                                {
                                    //update existing group
                                    //sb = new StringBuilder();
                                    //sb.AppendLine("UPDATE hick_groups SET group_unique_key='" + uniqueGroupId + "', created_date='" + DateTime.UtcNow + "' where id=" + _groupid + "");
                                    //sb.AppendLine("INSERT INTO hick_group_users (group_id,user_id,created_date) values (@grpId,@userId,@createddate)");
                                    // var cmd = "UPDATE hick_groups SET group_unique_key='" + uniqueGroupId + "', created_date='" + DateTime.UtcNow + "' where id=" + groupid;
                                    using (SqlCommand command = new SqlCommand("sp_hick_UpdGroupsInsGroupUsers", conn))
                                    {
                                        command.CommandType = CommandType.StoredProcedure;

                                        command.Parameters.AddWithValue("@grpId", _groupid);
                                        command.Parameters.AddWithValue("@userId", selecteduser);
                                        command.Parameters.AddWithValue("@createddate", DateTime.UtcNow);
                                        command.Parameters.AddWithValue("@uniqueId", uniqueGroupId);
                                        command.ExecuteNonQuery();
                                    }

                                    //var insertGroupUsers = "insert into hick_group_users (group_id,user_id,created_date) values (@grpId,@userId,@createddate)";
                                    //using (SqlCommand insertCommand = new SqlCommand(insertGroupUsers, conn))
                                    //{
                                    //    insertCommand.Parameters.AddWithValue("@grpId", groupid);
                                    //    insertCommand.Parameters.AddWithValue("@userId", selecteduser);
                                    //    insertCommand.Parameters.AddWithValue("@createddate", DateTime.UtcNow);
                                    //    //insertCommand.Parameters.AddWithValue("@grpStatus", 1);
                                    //    insertCommand.ExecuteNonQuery();
                                    //}
                                }


                            }
                            else
                            {
                                //user already exists
                            }


                            //sb = new StringBuilder();
                            //sb.AppendLine("INSERT INTO hick_group_users (group_id,user_id,created_date) VALUES (@groupid,@userid,@createddate)");

                            //using (SqlCommand command = new SqlCommand(sb.ToString(), conn))
                            //{
                            //    command.Parameters.AddWithValue("@groupid", _groupid);
                            //    command.Parameters.AddWithValue("@userid", selecteduser);
                            //    command.Parameters.AddWithValue("@createddate", DateTime.UtcNow);
                            //    command.ExecuteNonQuery();
                            //}
                        }
                        #endregion

                    }
                }
                return objuc;
            }
            catch (Exception)
            {

                throw;
            }
        }