Esempio n. 1
0
 public ActionResult Create(UserNews login)
 {
     try
     {
         string fileName  = Path.GetFileNameWithoutExtension(login.ImageFile.FileName);
         string extension = Path.GetExtension(login.ImageFile.FileName);
         fileName   = fileName + DateTime.Now.ToString("yymmssfff") + extension;
         login.Foto = "~/Image/" + fileName;
         fileName   = Path.Combine(Server.MapPath("~/Image/"), fileName);
         login.ImageFile.SaveAs(fileName);
         using (NewsContext dbModel = new NewsContext())
         {
             News new_table = new News();
             new_table.Data    = login.Data;
             new_table.Noutati = login.Noutati;
             new_table.Foto    = login.Foto;
             dbModel.New.Add(new_table);
             dbModel.SaveChanges();
         }
         ModelState.Clear();
         return(RedirectToAction("Index"));
     }
     catch
     {
         return(View());
     }
 }
Esempio n. 2
0
        public Task <int> CreateNews(string userId, News news)
        {
            var userNews = _newsContext.News.Find(x => x.UserId == userId).FirstOrDefault();

            var maxNewsId = userNews == null ? 100 : userNews.NewsList.Max(x => x.NewsId);

            if (news.NewsId == 0)
            {
                news.NewsId = maxNewsId + 1;
            }
            if (userNews == null)
            {
                userNews = new UserNews()
                {
                    UserId   = userId,
                    NewsList = new List <News>()
                    {
                        news
                    }
                };
                _newsContext.News.InsertOne(userNews);
            }
            else
            {
                var filter = Builders <UserNews> .Filter.Where(x => x.UserId == userId);

                var update = Builders <UserNews> .Update.Push(x => x.NewsList, news);

                var created = _newsContext.News.FindOneAndUpdate(filter, update);
            }

            var createdNewsId = _newsContext.News.Find(x => x.UserId == userId).FirstOrDefault().NewsList.Where(x => x.NewsId == news.NewsId).FirstOrDefault().NewsId;

            return(Task.FromResult(createdNewsId));
        }
 public void SendMessageToUser(bool isSystem, string toUserID, string msgTitle, string msgContent, string msgUrl, List <UserNewsUrls> userNewsUrlss = null)
 {
     if (isSystem)
     {
         string   fromUserID = "*****@*****.**";
         UserNews userNews   = new UserNews
         {
             UserId     = toUserID,
             fromUser   = fromUserID,
             msgTitle   = msgTitle,
             msgContent = msgContent,
             msgUrl     = msgUrl,
             time       = DateTime.Now
         };
         dbUserNews.Create(userNews);
         int sn = userNews.sn;
         if (userNewsUrlss != null)
         {
             foreach (UserNewsUrls unus in userNewsUrlss)
             {
                 unus.UserNewsSn = sn;
                 dbUserNewsUrls.Create(unus);
             }
         }
         string fromUserName   = db.AspNetUsers.Where(n => n.UserName == fromUserID).Select(n => n.Name).FirstOrDefault();
         string fromUserIdName = fromUserName + "<" + fromUserID + ">";
         var    hubContext     = Microsoft.AspNet.SignalR.GlobalHost.ConnectionManager.GetHubContext <msit116apexLayout.newsHub>();
         hubContext.Clients.User(toUserID).addNewsToPage(fromUserIdName, msgTitle, msgContent, msgUrl, userNewsUrlss);
     }
 }
        public void UserMessage(UserNews model)
        {
            UserNews userNews = db.UserNews.Find(model.sn);

            if (userNews.UserId == User.Identity.GetUserName())
            {
                userNews.read = model.read;
                db.SaveChanges();
            }
        }
        /// <summary>
        /// Method for creating a news
        /// </summary>
        /// <param name="userId">The id of the user who is creating the news</param>
        /// <param name="news">The properties of the news to be added</param>
        /// <returns>The id of the newly created news</returns>
        public async Task <int> CreateNews(string userId, News news)
        {
            ///The custom starting id of news
            news.NewsId = 101;
            var filter = Builders <UserNews> .Filter.Eq(u => u.UserId, userId);

            var userNewsResult = await newsContext.News.FindAsync(filter);

            ///Check whether user exists or not
            var userNews = await userNewsResult.FirstOrDefaultAsync();

            ///if user doesnt exists create a new document and insert the news
            if (userNews == null)
            {
                var newUserNews = new UserNews()
                {
                    UserId   = userId,
                    NewsList = new List <News>()
                    {
                        news
                    }
                };
                await newsContext.News.InsertOneAsync(newUserNews);

                var inserted = await GetNewsById(userId, news.NewsId);

                return(inserted != null ? inserted.NewsId : -1);
            }
            ///If user exists and user has any news find the maximum id of the news present
            else if (userNews != null && userNews.NewsList != null && userNews.NewsList.Any())
            {
                news.NewsId = userNews.NewsList.Max(n => n.NewsId) + 1;
            }

            ///Configure update for pushing new news to the list of news of the user
            var update = Builders <UserNews> .Update.Push(u => u.NewsList, news);

            ///Update the newslist of the user if present or else insert the item
            var result = await newsContext.News.UpdateOneAsync(filter, update, new UpdateOptions { IsUpsert = true });

            if (result.IsAcknowledged && (result.ModifiedCount > 0 || result.UpsertedId != null))
            {
                return(news.NewsId);
            }
            return(-1);
        }
Esempio n. 6
0
        public Task <bool> AddOrUpdateReminder(string userId, int newsId, Reminder reminder)
        {
            var userNewws = _newsContext.News.Find(x => x.UserId == userId).FirstOrDefault();
            var newsobj   = new News()
            {
                Reminder = reminder, NewsId = newsId
            };
            var filter = Builders <UserNews> .Filter.And(
                Builders <UserNews> .Filter.Where(x => x.UserId == userId),
                Builders <UserNews> .Filter.ElemMatch(x => x.NewsList, c => c.NewsId == newsId));

            if (userNewws == null)
            {
                var newUserNews = new UserNews()
                {
                    UserId   = userId,
                    NewsList = new List <News>()
                    {
                        newsobj
                    }
                };
                _newsContext.News.InsertOne(newUserNews);
            }
            else
            {
                var news = userNewws.NewsList.Where(x => x.NewsId == newsId).FirstOrDefault();


                UpdateResult update;
                if (news == null)
                {
                    //userNewws.NewsList = new List<News>() { newsobj };
                    update = _newsContext.News.UpdateOne(filter, Builders <UserNews> .Update.AddToSet(x => x.NewsList, newsobj));
                }
                else
                {
                    update = _newsContext.News.UpdateOne(filter, Builders <UserNews> .Update.Set(x => x.NewsList[-1].Reminder, reminder)
                                                         .Set(x => x.NewsList[-1].NewsId, newsId));
                }
                var getUpdatedCount = update.ModifiedCount;
            }
            var updatedValue = _newsContext.News.Find(filter).FirstOrDefault();
            var result       = updatedValue != null;

            return(Task.FromResult(result));
        }
        public List <int> SendMessageToAll(string msgTitle, string msgContent, string msgUrl, List <UserNewsUrls> userNewsUrlss = null, string noDefaultAct = "")
        {
            IEnumerable <AspNetUsers> aspNetUsers = dbAspNetUsers.GetAll().ToList();
            string     fromUserID     = "*****@*****.**";
            var        hubContext     = Microsoft.AspNet.SignalR.GlobalHost.ConnectionManager.GetHubContext <msit116apexLayout.newsHub>();
            List <int> userNewsSnList = new List <int>();

            foreach (AspNetUsers usert in aspNetUsers)
            {
                UserNews userNews = new UserNews
                {
                    UserId          = usert.UserName,
                    fromUser        = fromUserID,
                    msgTitle        = msgTitle,
                    msgContent      = msgContent,
                    msgUrl          = msgUrl,
                    time            = DateTime.Now,
                    noDefaultAction = noDefaultAct != "" ? true : false
                };
                dbUserNews.Create(userNews);
                int sn = userNews.sn;
                userNewsSnList.Add(sn);
                if (userNewsUrlss != null)
                {
                    foreach (UserNewsUrls unus in userNewsUrlss)
                    {
                        unus.UserNewsSn = sn;
                        if (noDefaultAct != "")
                        {
                            unus.UserNewsUrl = unus.UserNewsUrl + "&userNewsSn=" + sn;
                        }
                        dbUserNewsUrls.Create(unus);
                    }
                }

                string fromUserName   = db.AspNetUsers.Where(n => n.UserName == fromUserID).Select(n => n.Name).FirstOrDefault();
                string fromUserIdName = fromUserName + "<" + fromUserID + ">";
                hubContext.Clients.User(usert.UserName).addNewsToPage(fromUserIdName, msgTitle, msgContent, msgUrl, userNewsUrlss, noDefaultAct, sn.ToString());
            }
            //string fromUserName = db.AspNetUsers.Where(n => n.UserName == fromUserID).Select(n => n.Name).FirstOrDefault();
            //string fromUserIdName = fromUserName + "<" + fromUserID + ">";
            //var hubContext = Microsoft.AspNet.SignalR.GlobalHost.ConnectionManager.GetHubContext<msit116apexLayout.newsHub>();
            //hubContext.Clients.All.addNewsToPage(fromUserIdName, msgTitle, msgContent, msgUrl, userNewsUrlss, noDefaultAct);
            return(userNewsSnList);
        }
        public int SendMessageToUser(string fromUserID, string toUserID, string msgTitle, string msgContent, string msgUrl, List <UserNewsUrls> userNewsUrlss = null, string noDefaultAct = "")
        {
            UserNews userNews = new UserNews
            {
                UserId          = toUserID,
                fromUser        = fromUserID,
                msgTitle        = msgTitle,
                msgContent      = msgContent,
                msgUrl          = msgUrl,
                time            = DateTime.Now,
                noDefaultAction = noDefaultAct != "" ? true : false
            };

            dbUserNews.Create(userNews);
            int sn = userNews.sn;

            if (userNewsUrlss != null)
            {
                foreach (UserNewsUrls unus in userNewsUrlss)
                {
                    unus.UserNewsSn = sn;
                    if (noDefaultAct != "")
                    {
                        unus.UserNewsUrl = unus.UserNewsUrl + "&userNewsSn=" + sn;
                    }
                    dbUserNewsUrls.Create(unus);
                }
            }

            string fromUserName   = db.AspNetUsers.Where(n => n.UserName == fromUserID).Select(n => n.Name).FirstOrDefault();
            string fromUserIdName = fromUserName + "<" + fromUserID + ">";
            var    hubContext     = Microsoft.AspNet.SignalR.GlobalHost.ConnectionManager.GetHubContext <msit116apexLayout.newsHub>();

            hubContext.Clients.User(toUserID).addNewsToPage(fromUserIdName, msgTitle, msgContent, msgUrl, userNewsUrlss, noDefaultAct, sn.ToString());

            return(sn);
        }
        public ActionResult UserConfirmUserPower(string needConfirmUserID, int?needConfirmPowerID, int?ConfirmResult, int?userNewsSn)
        {
            if (needConfirmUserID != "" && needConfirmPowerID.HasValue && ConfirmResult.HasValue && userNewsSn.HasValue)
            {
                ConfirmUserPowerMethod CUPM = new ConfirmUserPowerMethod();
                int?returnConfirmEndurpchSn = CUPM.UserConfirmUserPowerM(User.Identity.GetUserName(), needConfirmUserID, needConfirmPowerID.Value, ConfirmResult.Value);

                //將通知轉為核准/否決並轉到已讀
                UserNews un = db.UserNews.Where(n => n.sn == userNewsSn.Value).FirstOrDefault();
                IEnumerable <UserNewsUrls> unuie = db.UserNewsUrls.Where(n => n.UserNewsSn == userNewsSn.Value);
                un.read = true;
                string strCResult = ConfirmResult.Value == 1 ? "核准" : "否決";
                un.msgUrl = "";
                //un.msgContent += "<br/><button class='btn btn-info' disabled>" + strCResult + "</button>";
                foreach (var unu in unuie)
                {
                    db.UserNewsUrls.Remove(unu);
                }
                UserNewsUrls resultunus = new UserNewsUrls {
                    UserNewsSn    = un.sn,
                    UserNewsCSS   = "btn btn-info disabled",
                    UserNewsTitle = strCResult,
                    UserNewsUrl   = ""
                };
                db.UserNewsUrls.Add(resultunus);

                db.SaveChanges();

                if (returnConfirmEndurpchSn.HasValue)
                {
                    CUPM.ExecConfirmIsEnd(returnConfirmEndurpchSn.Value);
                }
            }
            //TODO
            return(RedirectToAction("UserMessage", "Account", new { area = "" }));
        }
        public ActionResult RemoveUserMessage(UserNews model)
        {
            string result = "";

            //檢查員工
            if (cm.checkIsEmployee(User.Identity.GetUserName()))
            {
                //檢查權限刪除通知的權限ID為5
                if (cm.checkHasPower(User.Identity.GetUserName(), 5))
                {
                    //檢查覆核
                    UserNews            userNews     = db.UserNews.Find(model.sn);
                    List <UserNewsUrls> userNewsUrls = db.UserNewsUrls.Where(n => n.UserNewsSn == model.sn).ToList();
                    string userName           = db.AspNetUsers.Where(n => n.UserName == userNews.fromUser).Select(n => n.Name).First();
                    string confirmDescription = "";
                    confirmDescription += "<div style='border:1px solid black;margin: 2px'>";
                    confirmDescription += "<p>欲移除通知:</p>";
                    confirmDescription += "<div style='border:1px solid black;margin: 2px'>";
                    confirmDescription += "<p>寄送者:" + userName + "&lt" + userNews.fromUser + "&gt" + "</p>";
                    confirmDescription += "<p>標題:" + userNews.msgTitle + "</p>";
                    confirmDescription += "<p>內容:" + userNews.msgContent + "</p>";
                    confirmDescription += "<p>發送時間:" + userNews.time + "</p>連結:";
                    confirmDescription += "<a href='" + userNews.msgUrl + "' class='btn btn-success'>連結</a>";
                    foreach (var unus in userNewsUrls)
                    {
                        confirmDescription += "<a href='" + unus.UserNewsUrl + "' class='" + unus.UserNewsCSS + "'>" + unus.UserNewsTitle + "</a>";
                    }

                    confirmDescription += "</div>";
                    confirmDescription += "</div>";
                    int?   outurpchSn;
                    string ckConfirm = cm.checkNeedConfirm(out outurpchSn, User.Identity.GetUserName(), 5, Url.Action("UserConfirmUserPower", "ConfirmUserPower", new { area = "" }), confirmDescription);
                    if (ckConfirm == "")
                    {
                        //UserNews userNews = db.UserNews.Find(model.sn);
                        if (userNews.UserId == User.Identity.GetUserName())
                        {
                            IEnumerable <UserNewsUrls> unus = db.UserNewsUrls.Where(n => n.UserNewsSn == userNews.sn);
                            foreach (var unu in unus)
                            {
                                db.UserNewsUrls.Remove(unu);
                            }
                            db.UserNews.Remove(userNews);
                            db.SaveChanges();
                        }
                    }
                    else
                    {
                        result = ckConfirm;
                        if (outurpchSn.HasValue)
                        {
                            string tableName1          = "";
                            string primaryColumnName1  = "";
                            string primaryColumnValue1 = "";
                            SaveExecConfirmDataModelActionEnum execAction1;
                            string primaryColumnType1 = "";

                            List <SaveExecConfirmDataModel> cecdm2 = new List <SaveExecConfirmDataModel>();


                            //UserNews userNews = db.UserNews.Find(model.sn);
                            tableName1          = "UserNews";
                            primaryColumnName1  = "sn";
                            primaryColumnValue1 = userNews.sn.ToString();
                            execAction1         = SaveExecConfirmDataModelActionEnum.Remove;
                            primaryColumnType1  = "int";
                            List <string> cColumnEmtry = new List <string>();
                            if (userNews.UserId == User.Identity.GetUserName())
                            {
                                IEnumerable <UserNewsUrls> unus = db.UserNewsUrls.Where(n => n.UserNewsSn == userNews.sn);

                                foreach (var unu in unus)
                                {
                                    string tableName2          = "UserNewsUrls";
                                    string primaryColumnName2  = "UserNewsUrlsID";
                                    string primaryColumnValue2 = unu.UserNewsUrlsID.ToString();
                                    SaveExecConfirmDataModelActionEnum execAction2 = SaveExecConfirmDataModelActionEnum.Remove;
                                    string primaryColumnType2        = "int";
                                    SaveExecConfirmDataModel cecdm2t = new SaveExecConfirmDataModel
                                    {
                                        urpchSn            = outurpchSn.Value,
                                        tableName          = tableName2,
                                        primaryColumnName  = primaryColumnName2,
                                        primaryColumnValue = primaryColumnValue2,
                                        primaryColumnType  = primaryColumnType2,
                                        execAction         = execAction2,
                                        cColumnName        = cColumnEmtry,
                                        cColumnValue       = cColumnEmtry,
                                        cColumnType        = cColumnEmtry
                                    };
                                    cecdm2.Add(cecdm2t);
                                }
                            }
                            cm.SaveExecConfirmData(cecdm2);

                            SaveExecConfirmDataModel cecdm1 = new SaveExecConfirmDataModel
                            {
                                urpchSn            = outurpchSn.Value,
                                tableName          = tableName1,
                                primaryColumnName  = primaryColumnName1,
                                primaryColumnValue = primaryColumnValue1,
                                primaryColumnType  = primaryColumnType1,
                                execAction         = execAction1,
                                cColumnName        = cColumnEmtry,
                                cColumnValue       = cColumnEmtry,
                                cColumnType        = cColumnEmtry
                            };
                            cm.SaveExecConfirmData(cecdm1);
                        }
                    }
                }
                else
                {
                    result = "沒有權限";
                }
            }
            else
            {
                UserNews userNews = db.UserNews.Find(model.sn);
                if (userNews.UserId == User.Identity.GetUserName())
                {
                    bool checkUrls = true;
                    while (checkUrls)
                    {
                        UserNewsUrls unus = db.UserNewsUrls.Where(n => n.UserNewsSn == userNews.sn).FirstOrDefault();
                        if (unus != null)
                        {
                            db.UserNewsUrls.Remove(unus);
                        }
                        else
                        {
                            checkUrls = false;
                        }
                    }
                    db.UserNews.Remove(userNews);
                    db.SaveChanges();
                }
            }
            return(Content(result));
        }