Ejemplo n.º 1
0
        public async Task <string> Create(string stock)
        {
            using (db = new testEntities())
            {
                if (StockRealTimeTicker.CheckExistStock(stock))
                {
                    ApplicationUser currentUser = await UserManager.FindByIdAsync(User.Identity.GetUserId());

                    var followrStockByUser = await db.FollowStocks.FirstOrDefaultAsync(f => f.UserId == currentUser.UserExtentLogin.Id && f.StockFollowed == stock);

                    if (followrStockByUser == null)
                    {
                        var stockfollow = new FollowStock {
                            UserId = currentUser.UserExtentLogin.Id, StockFollowed = stock, CreatedDate = DateTime.Now
                        };
                        db.FollowStocks.Add(stockfollow);
                        await db.SaveChangesAsync();

                        return("A");
                    }
                    else
                    {
                        db.FollowStocks.Remove(followrStockByUser);
                        await db.SaveChangesAsync();

                        return("R");
                    }
                }
                else
                {
                    return("E");
                }
            }
        }
Ejemplo n.º 2
0
        public async Task <string> CreateUserFollow(int userid)
        {
            using (db = new testEntities())
            {
                ApplicationUser userLogin = await UserManager.FindByIdAsync(User.Identity.GetUserId());

                var checkUser = await db.FollowUsers.FirstOrDefaultAsync(f => f.UserId == userLogin.UserExtentLogin.Id && f.UserIdFollowed == userid);

                if (checkUser == null)
                {
                    var followUser = new FollowUser {
                        UserId = userLogin.UserExtentLogin.Id, UserIdFollowed = userid, CreatedDate = DateTime.Now
                    };
                    db.FollowUsers.Add(followUser);
                    await db.SaveChangesAsync();

                    return("A");
                }
                else
                {
                    db.FollowUsers.Remove(checkUser);
                    await db.SaveChangesAsync();

                    return("R");
                }
            }
        }
Ejemplo n.º 3
0
        public async Task <ActionResult> Edit([Bind(Include = "ID,UserId,StockFollowed,CreatedDate")] FollowStock followstock)
        {
            if (ModelState.IsValid)
            {
                db.Entry(followstock).State = EntityState.Modified;
                await db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }
            ViewBag.UserId = new SelectList(db.UserLogins, "Id", "KeyLogin", followstock.UserId);
            return(View(followstock));
        }
Ejemplo n.º 4
0
        ///////////////////////////////////////////////////// profile
        //reply
        /////////////////////////////////////////////////////
        public async Task AddReply(PostComment postcomment, string stockCurrent, int currentUserId, string userName, string avataImageUrl, long postid)
        {
            #region format message
            string messagedefault = "";
            messagedefault = postcomment.Message;
            List <string> listMessege       = postcomment.Message.Split(' ').ToList();
            string        messageFromatHTML = "";
            foreach (var item in listMessege)
            {
                if (item.Contains("$") || item.Contains("@"))
                {
                    messageFromatHTML += "<b>" + item + "</b>" + " ";
                }
                else if (item.Contains("http") || item.Contains("www."))
                {
                    messageFromatHTML += "<a target='_blank' href='" + item + "'>[LINK]</a>" + " ";
                }
                else
                {
                    messageFromatHTML += item + " ";
                }
            }

            postcomment.Message    = messageFromatHTML;
            postcomment.PostedDate = DateTime.Now;
            postcomment.PostedBy   = postid;
            postcomment.CommentBy  = currentUserId;
            #endregion

            var listStock = new List <string>();
            listStock.Add(stockCurrent.ToUpper());
            #region explan this passing messege to stockcode and username list

            //List<string> listMessegeSplit = messagedefault.Split(' ').ToList().FindAll(p => p.Contains("$") || p.Contains("@"));

            #endregion

            using (testEntities db = new testEntities())
            {
                db.PostComments.Add(postcomment);
                await db.SaveChangesAsync();

                var ret = new
                {
                    ReplyMessage = postcomment.Message,
                    //PostedBy = post.PostedBy,
                    ReplyByName   = userName,
                    ReplyByAvatar = "/" + avataImageUrl.Replace("amp;", ""),
                    ReplyDate     = postcomment.PostedDate,
                    ReplyId       = postcomment.PostCommentsId
                };
                await Clients.Client(Context.ConnectionId).addReply(ret);

                await Clients.OthersInGroups(listStock).newReplyNoti(1, postid);
            }
        }
Ejemplo n.º 5
0
        public async Task <ActionResult> Create([Bind(Include = "PostId,Message,ChartImageURL,NhanDinh,Vir")] Post post)
        {
            if (ModelState.IsValid)
            {
                if (!User.Identity.IsAuthenticated)
                {
                    return(RedirectToAction("Login", "Account"));
                }
                var currentUser = await UserManager.FindByIdAsync(User.Identity.GetUserId());

                post.PostedBy   = currentUser.UserExtentLogin.Id;
                post.PostedDate = DateTime.Now;
                db.Posts.Add(post);
                await db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }

            return(View(post));
        }
Ejemplo n.º 6
0
        public async Task ChangeStatusMessege(string userid)
        {
            var listUpdate = await db.NotificationMesseges.Where(nm => nm.UserLogin1.UserNameCopy == User.Identity.Name && nm.XemYN == true).ToListAsync();

            if (listUpdate.Count > 0)
            {
                foreach (var item in listUpdate)
                {
                    item.NumNoti         = 0;
                    item.XemYN           = false;
                    db.Entry(item).State = EntityState.Modified;
                }
                await db.SaveChangesAsync();
            }
        }
Ejemplo n.º 7
0
        public async Task <ActionResult> confirm_password_reset(ResetPassConfirm model)
        {
            if (ModelState.IsValid)
            {
                using (db = new testEntities())
                {
                    var userReset = await db.UserLogExtents.FirstOrDefaultAsync(ul => ul.TokenResetPass == model.Token && ul.TimeResetExpire > DateTime.Now && ul.IsReset == false);

                    if (userReset != null)
                    {
                        // reset password
                        ApplicationDbContext        context = new ApplicationDbContext();
                        UserStore <ApplicationUser> store   = new UserStore <ApplicationUser>(context);
                        String          hashedNewPassword   = UserManager.PasswordHasher.HashPassword(model.NewPassword);
                        ApplicationUser cUser = await store.FindByIdAsync(userReset.UserId);

                        // update token
                        userReset.TimeResetExpire = DateTime.Now;
                        userReset.IsReset         = true;
                        userReset.TokenResetPass  = "";
                        try
                        { // reset success
                            await store.SetPasswordHashAsync(cUser, hashedNewPassword);

                            await store.UpdateAsync(cUser);

                            db.Entry(userReset).State = EntityState.Modified;
                            await db.SaveChangesAsync();

                            return(RedirectToAction("password_reset_result", new { Message = ManageMessageId.SetPasswordSuccess }));
                        }
                        catch (Exception)
                        {
                            // error log
                            return(RedirectToAction("password_reset_result", new { Message = ManageMessageId.Error }));
                        }
                    }
                    else
                    {
                        // thong bao, token expire
                        return(RedirectToAction("password_reset_result", new { Message = ManageMessageId.Error }));
                    }
                }
            }
            return(View());
        }
Ejemplo n.º 8
0
        public async Task AddNewLike(long postid)
        {
            using (db = new testEntities())
            {
                var postFind = await db.Posts.FirstOrDefaultAsync(p => p.PostId == postid);

                if (postFind != null)
                {
                    postFind.SumLike = postFind.SumLike + 1;
                    try
                    {
                        db.Entry(postFind).State = EntityState.Modified;
                        await db.SaveChangesAsync();
                    }
                    catch (Exception)
                    {
                        //throw;
                    }
                    await Clients.All.addNewLike(postid);
                }
            }
        }
Ejemplo n.º 9
0
        /*
         * public void GetPosts(string stockCurrent)
         * {
         *  //var fjdsf = WebSecurity.CurrentUserId;
         *  using (testEntities db = new testEntities())
         *  {
         *      var ret = (from stockRelate in db.StockRelates.ToList()
         *                 where stockRelate.StockCodeRelate == stockCurrent
         *                 orderby stockRelate.Post.PostedDate descending
         *                 select new
         *                 {
         *                     Message = stockRelate.Post.Message,
         *                     //PostedBy = stockRelate.Post.PostedDate,
         *                     PostedByName = stockRelate.Post.UserLogin.UserNameCopy,
         *                     PostedByAvatar = string.IsNullOrEmpty(stockRelate.Post.UserLogin.AvataImage) ? ImageURLAvataDefault : ImageURLAvata + stockRelate.Post.UserLogin.AvataImage + "?width=46&height=46&mode=crop",
         *                     PostedDate = stockRelate.Post.PostedDate,
         *                     PostId = stockRelate.PostId,
         *                     StockPrimary = stockRelate.Post.StockPrimary
         *                 }).Take(10).ToArray();
         *      //var listStock = new List<string>();
         *
         *      Clients.Client(Context.ConnectionId).loadPosts(ret);
         *
         *  }
         * }*/

        public async Task AddPost(Post post, string stockCurrent, int currentUserId, string userName, string avataImageUrl, int nhanDinh)
        {
            #region format message
            string messagedefault = "";
            messagedefault = post.Message;
            List <string> listMessege       = post.Message.Split(' ').ToList();
            string        messageFromatHTML = "";
            foreach (var item in listMessege)
            {
                if (item.Contains("$") || item.Contains("@"))
                {
                    messageFromatHTML += "<b>" + item + "</b>" + " ";
                }
                else if (item.Contains("http") || item.Contains("www."))
                {
                    messageFromatHTML += "<a target='_blank' href='" + item + "'>[LINK]</a>" + " ";
                }
                else
                {
                    messageFromatHTML += item + " ";
                }
            }

            if (nhanDinh == -1)
            {
                messageFromatHTML += " <span class='sentiment bullishs'>Giảm</span>";
            }
            else if (nhanDinh == 0)
            {
                messageFromatHTML += " <span class='sentiment Normals'>Đứng</span>";
            }
            else
            {
                messageFromatHTML += " <span class='sentiment bearishs'>Tăng</span>";
            }
            #endregion
            //messageFromatHTML += "</a>";
            post.Message      = messageFromatHTML;
            post.PostedBy     = currentUserId;
            post.PostedDate   = DateTime.Now;
            post.StockPrimary = stockCurrent;

            var listStock = new List <string>();

            #region explan this passing messege to stockcode and username list

            List <string> listMessegeSplit = messagedefault.Split(' ').ToList().FindAll(p => p.Contains("$") || p.Contains("@"));

            #endregion

            using (testEntities db = new testEntities())
            {
                db.Posts.Add(post);
                /* co phieu dau tien la chinh no */
                if (stockCurrent != "KEYMYPROFILE")
                {
                    StockRelate stockRelateFirst = new StockRelate();
                    stockRelateFirst.PostId          = post.PostId;
                    stockRelateFirst.StockCodeRelate = stockCurrent;
                    db.StockRelates.Add(stockRelateFirst); // add to database
                    listStock.Add(stockCurrent.ToUpper()); // group of hub for client
                }
                /* END */
                //db.Posts.Add(post);
                /* add post with stockrelate list */
                foreach (var item in listMessegeSplit)
                {
                    if (item.Contains("$") && !item.Contains(stockCurrent)) // find the stock with $
                    {
                        string      stockcode        = item.Replace("$", "").ToUpper();
                        StockRelate stockRelateLasts = new StockRelate();
                        stockRelateLasts.PostId          = post.PostId;
                        stockRelateLasts.StockCodeRelate = stockcode;
                        db.StockRelates.Add(stockRelateLasts); // add to database
                        listStock.Add(stockcode);              // group of hub for client
                    }
                    else //find the user with @
                    {
                        // code later
                    }
                }


                /* add stockrelate */
                await db.SaveChangesAsync();

                var ret = new
                {
                    Message = post.Message,
                    //PostedBy = post.PostedBy,
                    PostedByName   = userName,
                    PostedByAvatar = "/" + avataImageUrl.Replace("amp;", ""),
                    PostedDate     = post.PostedDate,
                    PostId         = post.PostId,
                    StockPrimary   = post.StockPrimary
                };

                await Clients.Groups(listStock).addPost(ret);
            }
        }
Ejemplo n.º 10
0
        public async Task <string> AddPost(Post post, byte nhanDinh, string chartImage, long?userpageid)
        {
            using (db = new testEntities())
            {
                #region user login
                string resultString = string.Empty;
                // get info login (Lấy thông tin đăng nhập)
                var userlogin = await(from ul in db.UserLogins
                                      where ul.UserNameCopy == Context.User.Identity.Name
                                      select new { ul.Id, ul.BrokerVIP, ul.UserNameCopy, ul.AvataImage, ul.DisableUser }).FirstOrDefaultAsync();
                if (userlogin == null || userlogin.DisableUser == true) // user khong tim thay hoac bi disable
                {
                    return(resultString = "L");                         // user is disable
                }
                #endregion

                #region format message
                string messagedefault = "";
                string stockTag       = ""; // dinh dang stock|stock|stock de tim co phieu lien quan
                messagedefault = post.Message;
                string[] listMessege       = post.Message.Replace("\n", " <br> ").Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                string   messageFromatHTML = "";
                foreach (var item in listMessege)
                {
                    if (item.Length > 0 && item.Length < 2000)
                    {
                        if (item.IndexOf("$", 0, 1) != -1)                        // tag ma co phieu
                        {
                            string ticker = item.RemoveSpecialString().ToUpper(); //item.Replace("$", "").Replace(",", "").Replace(".", "").Replace("!", "").Replace("?", "").Trim().ToUpper();
                            messageFromatHTML += "<b><a onclick=selectMe(event,\"#\") target='_blank' href='/ticker/" + ticker + "'>" + item + "</a></b>" + " ";
                        }
                        else if (item.IndexOf("@", 0, 1) != -1) // tag nguoi dung
                        {
                            string user = item.RemoveSpecialString().ToLower();
                            messageFromatHTML += "<a onclick=selectMe(event,\"#\") target='_blank' href='/" + user + "'>" + item + "</a>" + " ";
                        }
                        else if ((item.Contains("http") || item.Contains("www.")) && item.Length >= 4)
                        {
                            if (item.IndexOf("http", 0, 4) != -1 || item.IndexOf("www.", 0, 4) != -1)
                            {
                                URLTiny tu = new URLTiny();
                                tu.URLName    = item;
                                tu.PostedDate = DateTime.Now;
                                dbtinyURL.URLTinies.Add(tu);
                                try
                                {
                                    await dbtinyURL.SaveChangesAsync();
                                }
                                catch (Exception)
                                {
                                    // log
                                }
                                messageFromatHTML += "Nguồn tại <a onclick=selectMe(event,\"#\") target='_blank' href='" + hostURL + "/" + tu.Id + "'>" + AppHelper.GetDomain(item) + "...</a>" + " ";
                            }
                            else
                            {
                                messageFromatHTML += item + " ";
                            }
                        }
                        else
                        {
                            messageFromatHTML += item + " ";
                        }
                    }
                }

                #endregion

                #region explan this passing messege to stockcode and username list
                //messageFromatHTML += "</a>";

                var           listStock           = new List <string>();
                var           listUsersendMessege = new List <string>();
                string        replyRelated        = string.Empty;
                string        replyRelatedUser    = string.Empty;
                List <string> listMessegeSplit    = messagedefault.Replace("\n", " ").Split(' ').ToList().FindAll(p => p.Contains("$") || p.Contains("@"));

                #endregion

                #region gui message co phieu và user lien quan
                string[] userReplyRelated = new string[2];
                userReplyRelated[0] = string.Empty;
                userReplyRelated[1] = string.Empty;

                foreach (var item in listMessegeSplit)
                {
                    if (item.Length > 0)
                    {
                        string stockcode = item.RemoveSpecialString().ToUpper();
                        if (item.IndexOf("$", 0, 1) != -1 && !listStock.Contains(stockcode) && StockRealTimeTicker.CheckExistStock(stockcode)) // find the stock with $
                        {
                            stockTag += stockcode + "|";
                            listStock.Add(stockcode);           // group of hub for client
                        }
                        else if (item.IndexOf("@", 0, 1) != -1) //find the user with @
                        {
                            string user     = item.RemoveSpecialString().ToLower();
                            var    finduser = await db.UserLogins.FirstOrDefaultAsync(ul => ul.UserNameCopy == user);

                            if (finduser != null)
                            {
                                NotificationMessege nM = new NotificationMessege {
                                    UserPost = userlogin.Id, UserReciver = finduser.Id, PostId = post.PostId, NumNoti = 1, TypeNoti = "U", CreateDate = DateTime.Now, XemYN = true
                                };
                                db.NotificationMesseges.Add(nM);
                                listUsersendMessege.Add(user); // add user to send notification
                                userReplyRelated = AppHelper.StringUserSlipt(userReplyRelated, user, finduser.Id.ToString());
                            }
                        }
                    }
                }
                #endregion

                #region luu vao db
                /* add stockrelate */
                post.Message          = AppHelper.FilteringWord(messageFromatHTML); // Filteringword lọc từ khóa bậy
                post.PostedBy         = userlogin.Id;
                post.PostedDate       = DateTime.Now;
                post.NhanDinh         = nhanDinh;
                post.SumLike          = 0;
                post.ReplyRelated     = AppHelper.StringUserSlipt(userReplyRelated, userlogin.UserNameCopy, userlogin.Id.ToString())[0];  // thong bao cho toan user voi tag user|user|user
                post.ReplyRelatedUser = AppHelper.StringUserSlipt(userReplyRelated, userlogin.UserNameCopy, userlogin.Id.ToString())[1];; // thong bao cho toan user voi tag id|id|id
                if (!string.IsNullOrWhiteSpace(chartImage))
                {
                    post.ChartYN       = true;
                    post.ChartImageURL = chartImage.Replace("?width=50&height=50&mode=crop", "");
                }
                post.StockPrimary = stockTag; // lấy các stock #tag cuối GAS!PAS
                try
                {
                    db.Posts.Add(post);
                    await db.SaveChangesAsync();
                }
                catch (Exception)
                {
                    // log
                }

                var ret = new
                {
                    Message        = post.Message,
                    Chart          = post.ChartImageURL,
                    PostedByName   = userlogin.UserNameCopy,
                    PostedByAvatar = string.IsNullOrEmpty(userlogin.AvataImage) == true ? AppHelper.ImageURLAvataDefault : AppHelper.ImageURLAvata + userlogin.AvataImage,
                    PostedDate     = post.PostedDate,
                    PostId         = post.PostId,
                    StockPrimary   = post.StockPrimary,
                    Stm            = post.NhanDinh,
                    ChartYN        = post.ChartYN,
                    PostBy         = post.PostedBy,
                    SumLike        = 0,
                    SumReply       = 0,
                    BrkVip         = userlogin.BrokerVIP
                };

                #endregion

                #region gui message
                if (listStock.Count > 0)
                {
                    await Clients.All.addPostGlobal(ret); // add message vào profile va home

                    resultString = "S";                   // post thanh cong len trang home va profile
                }
                else
                {
                    resultString = "O"; // chi post o trang ca nhan
                }

                if (userpageid > 0) // gửi cho cùng 1 nhóm đag mở cùng 1 user page
                {
                    listStock.Add(userpageid.ToString());
                }

                await Clients.Groups(listStock).addPost(ret); // ad group co phieu lien quan

                if (listUsersendMessege.Count > 0)
                {
                    await Clients.Users(listUsersendMessege).MessegeOfUserPost(1); // gui tin bao cho user nao có @
                }
                return(resultString);

                #endregion
            }
        }
Ejemplo n.º 11
0
        public async Task <string> AddReply(PostComment reply)
        {
            using (db = new testEntities())
            {
                #region user login
                //string resultString = string.Empty;
                //var userlogin = db.UserLogins.FirstOrDefault(ul => ul.UserNameCopy == Context.User.Identity.Name);
                var userlogin = await(from ul in db.UserLogins
                                      where ul.UserNameCopy == Context.User.Identity.Name
                                      select new { ul.Id, ul.BrokerVIP, ul.UserNameCopy, ul.AvataImage, ul.DisableUser }).FirstOrDefaultAsync();
                if (userlogin == null || userlogin.DisableUser == true)
                {
                    return("L"); // user is disable
                }

                reply.CommentBy  = userlogin.Id;
                reply.PostedDate = DateTime.Now;
                #endregion

                #region format message
                string messagedefault = "";
                messagedefault = reply.Message;
                string[] listMessege       = reply.Message.Split(new char[] { ' ', '\n' }, StringSplitOptions.RemoveEmptyEntries);
                string   messageFromatHTML = "";
                foreach (var item in listMessege)
                {
                    if (item.Length > 0 && item.Length < 2000)
                    {
                        if (item.IndexOf("$", 0, 1) != -1)
                        {
                            string ticker = item.RemoveSpecialString().ToUpper();
                            messageFromatHTML += "<b><a target='_blank' href='/ticker/" + ticker + "'>" + item + "</a></b>" + " ";
                        }
                        else if (item.IndexOf("@", 0, 1) != -1)
                        {
                            // đề cập đến user
                            string user = item.RemoveSpecialString().ToLower();
                            messageFromatHTML += "<a target='_blank' href='/" + user + "'>" + item + "</a>" + " ";
                        }
                        else if ((item.Contains("http") || item.Contains("www.")) && item.Length >= 4)
                        {
                            if (item.IndexOf("http", 0, 4) != -1 || item.IndexOf("www.", 0, 4) != -1)
                            {
                                URLTiny tu = new URLTiny();
                                tu.URLName    = item;
                                tu.PostedDate = DateTime.Now;
                                dbtinyURL.URLTinies.Add(tu);
                                try
                                {
                                    await dbtinyURL.SaveChangesAsync();
                                }
                                catch (Exception)
                                {
                                    // log
                                }
                                messageFromatHTML += "Nguồn tại <a onclick=selectMe(event,\"#\") target='_blank' href='" + hostURL + "/" + tu.Id + "'>" + AppHelper.GetDomain(item) + "...</a>" + " ";
                            }
                            else
                            {
                                messageFromatHTML += item + " ";
                            }
                        }
                        else
                        {
                            messageFromatHTML += item + " ";
                        }
                    }
                }


                reply.Message = AppHelper.FilteringWord(messageFromatHTML); // lọc từ khóa
                #endregion

                #region reply có đề cập đến user nào không ??
                var getPost = await db.Posts.FindAsync(reply.PostedBy); // get post (Lấy bài post)

                // cap nhat tong so luong reply
                getPost.SumReply += 1;
                // Tao Array for split user (Tạo mảng để xử lý User)
                string[] userReplyRelated = new string[2];
                userReplyRelated[0] = getPost.ReplyRelated;
                userReplyRelated[1] = getPost.ReplyRelatedUser;

                List <string> listUsersendMessege = new List <string>();
                List <string> listMessegeSplit    = messagedefault.Split(' ').ToList().FindAll(p => p.Contains("@"));
                foreach (var item in listMessegeSplit)
                {
                    if (item.IndexOf("@", 0, 1) != -1)                                                            //find the user with @
                    {
                        string user     = item.RemoveSpecialString().ToLower();                                   // remove special character (Loại những ký tự đặc biệt)
                        var    finduser = await db.UserLogins.FirstOrDefaultAsync(ul => ul.UserNameCopy == user); // check user exist

                        if (finduser != null)
                        {
                            userReplyRelated = AppHelper.StringUserSlipt(userReplyRelated, user, finduser.Id.ToString());
                        }
                    }
                }
                #endregion

                #region gui tin cho những người đã đề cập trong bài post

                // replace chính người post để không tạo thêm notification
                string[] replyRelated       = userReplyRelated[0].Replace(userlogin.UserNameCopy + "|", "").Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
                string[] replyRelatedIdUser = userReplyRelated[1].Replace(userlogin.Id + "|", "").Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
                for (int i = 0; i < replyRelatedIdUser.Length; i++)
                {
                    try
                    {
                        int replyRelatedIdUserItem = int.Parse(replyRelatedIdUser[i]);
                        var nMRecive = await db.NotificationMesseges.FirstOrDefaultAsync(nm => nm.UserReciver == replyRelatedIdUserItem && nm.PostId == reply.PostedBy);

                        if (nMRecive == null)
                        {
                            NotificationMessegeModels.Create(userlogin.Id, int.Parse(replyRelatedIdUser[i]), reply.PostedBy);
                            listUsersendMessege.Add(replyRelated[i]); // add usser to send (1) notify
                        }
                        else
                        {
                            if (nMRecive.NumNoti <= 0 || nMRecive.NumNoti == null)
                            {
                                NotificationMessegeModels.Update(nMRecive);
                                listUsersendMessege.Add(replyRelated[i]); // add usser to send (1) notify
                            }
                        }
                    }
                    catch (Exception)
                    {
                        //throw log;
                    }
                }

                ///////////////////////////////////////////
                #endregion

                #region luu du lieu vao db
                db.PostComments.Add(reply);

                try
                {
                    getPost.ReplyRelated     = AppHelper.StringUserSlipt(userReplyRelated, userlogin.UserNameCopy, userlogin.Id.ToString())[0];
                    getPost.ReplyRelatedUser = AppHelper.StringUserSlipt(userReplyRelated, userlogin.UserNameCopy, userlogin.Id.ToString())[1];
                    db.Entry(getPost).State  = EntityState.Modified;
                    await db.SaveChangesAsync();
                }
                catch (Exception)
                {
                    // error thi van chay tiep
                }

                var ret = new
                {
                    ReplyMessage = reply.Message,
                    //PostedBy = post.PostedBy,
                    ReplyByName    = userlogin.UserNameCopy,
                    ReplyByAvatar  = string.IsNullOrEmpty(userlogin.AvataImage) == true ? AppHelper.ImageURLAvataDefault : AppHelper.ImageURLAvata + userlogin.AvataImage,
                    ReplyDate      = reply.PostedDate,
                    ReplyId        = reply.PostCommentsId,
                    PostCommentsId = reply.PostCommentsId,
                    BrkVip         = userlogin.BrokerVIP
                };

                #endregion

                #region push message
                await Clients.Caller.addReply(ret); // gửi cho chính người đã reply (tạo trả lời bên dưới)

                if (listUsersendMessege.Count > 0)
                {
                    await Clients.Users(listUsersendMessege).MessegeOfUserPost(1); // gửi thông báo (1) liên quan những người trong list post đã có người comment
                }
                await Clients.All.newReplyNoti(reply.PostedBy);                    // +1 cho ai đang mở bài post đó

                return("S");

                #endregion
            }
        }
Ejemplo n.º 12
0
        public async Task <ActionResult> request_password_reset(ResetPasswordModel model)
        {
            if (ModelState.IsValid)
            {
                using (db = new testEntities())
                {
                    var user = await db.UserLogins.FirstOrDefaultAsync(ul => ul.Email == model.Email);

                    if (user != null)
                    {
                        ViewBag.Info   = 1;
                        ViewBag.Status = "Email được gửi thành công, vui lòng đăng nhập Inbox hoặc Spam mail để nhận được link đổi mật khẩu";

                        var checkReset = await db.UserLogExtents.FirstOrDefaultAsync(ule => ule.Username == user.UserNameCopy);

                        if (checkReset != null)
                        {
                            // udpate
                            checkReset.TokenResetPass  = Guid.NewGuid().ToString();
                            checkReset.TimeResetExpire = DateTime.Now.AddHours(3);
                            checkReset.IsReset         = false;
                            db.Entry(checkReset).State = EntityState.Modified;
                            // send email

                            try
                            {
                                await db.SaveChangesAsync();

                                // send link email reset pass
                                String contentEmail = AppHelper.GetContentTemplate(AppHelper.ResetPasswordEmailTemplatePath, checkReset.TokenResetPass, checkReset.Username);
                                AppHelper.sendEmail("Link thay đổi mật khẩu | Phochungkhoan.com", checkReset.EmailReset, contentEmail);
                            }
                            catch (Exception)
                            {
                                // bug
                            }
                        }
                        else
                        {
                            // insert
                            var userExtent = new UserLogExtent {
                                Username = user.UserNameCopy, TokenResetPass = Guid.NewGuid().ToString(), TimeResetExpire = DateTime.Now.AddHours(3), EmailReset = user.Email, UserId = user.KeyLogin
                            };
                            db.UserLogExtents.Add(userExtent);
                            //send email
                            try
                            {
                                await db.SaveChangesAsync();

                                // send link email reset pass
                                String contentEmail = AppHelper.GetContentTemplate(AppHelper.ResetPasswordEmailTemplatePath, userExtent.TokenResetPass, userExtent.Username);
                                AppHelper.sendEmail("Link thay đổi mật khẩu | Phochungkhoan.com", userExtent.EmailReset, contentEmail);
                            }
                            catch (Exception)
                            {
                                // bug
                            }
                        }
                    }
                    else
                    {
                        //ViewBag.Info = 1;
                        //ViewBag.Status = "Không tồn tại email trong hệ thống";
                        return(RedirectToAction("password_reset_result", new { Message = ManageMessageId.NotExist }));
                    }
                }
            }
            //return View("request_password_reset", new ResetPasswordModel { Email = model.Email });

            return(View());
        }