Beispiel #1
0
        public ActionResult NewsReadList(NewsSearchFilter searchFilter)
        {
            Logger.Info(_logMsg.Clear().SetPrefixMsg("Get NewsReadList").Add("UserId", this.UserInfo.UserId)
                        .ToInputLogString());

            try
            {
                _newsFacade   = new NewsFacade();
                _commonFacade = new CommonFacade();
                HomeViewModel homeVM = new HomeViewModel();
                homeVM.NewsReadSearchFilter        = searchFilter;
                homeVM.NewsReadSearchFilter.UserId = this.UserInfo.UserId;

                homeVM.NewsReadList          = _newsFacade.GetNewsReadList(homeVM.NewsReadSearchFilter);
                ViewBag.NewsReadPageSize     = homeVM.NewsReadSearchFilter.PageSize;
                ViewBag.NewsReadPageSizeList = _commonFacade.GetPageSizeList();

                Logger.Info(_logMsg.Clear().SetPrefixMsg("Get NewsReadList").ToSuccessLogString());
                return(PartialView("~/Views/Home/_NewsReadList.cshtml", homeVM));
            }
            catch (Exception ex)
            {
                Logger.Error("Exception occur:\n", ex);
                Logger.Info(_logMsg.Clear().SetPrefixMsg("Get NewsReadList").Add("Error Message", ex.Message).ToFailLogString());
                return(Error(new HandleErrorInfo(ex, this.ControllerContext.RouteData.Values["controller"].ToString(),
                                                 this.ControllerContext.RouteData.Values["action"].ToString())));
            }
        }
Beispiel #2
0
        public ActionResult NewsList(NewsSearchFilter searchFilter)
        {
            Logger.Info(_logMsg.Clear().SetPrefixMsg("Search News").Add("Topic", searchFilter.Topic).ToInputLogString());

            try
            {
                #region "Validation"

                bool isValid = TryUpdateModel(searchFilter);
                if (!string.IsNullOrEmpty(searchFilter.DateFrom) && !searchFilter.AnnounceDate.HasValue)
                {
                    isValid = false;
                    ModelState.AddModelError("txtFromDate", Resource.ValErr_InvalidDate);
                }
                if (!string.IsNullOrEmpty(searchFilter.DateTo) && !searchFilter.ExpiryDate.HasValue)
                {
                    isValid = false;
                    ModelState.AddModelError("txtToDate", Resource.ValErr_InvalidDate);
                }
                if (searchFilter.AnnounceDate.HasValue && searchFilter.ExpiryDate.HasValue &&
                    searchFilter.AnnounceDate.Value > searchFilter.ExpiryDate.Value)
                {
                    isValid = false;
                    ModelState.AddModelError("dvDateRange", Resource.ValErr_InvalidDateRange);
                }

                #endregion

                if (isValid)
                {
                    _newsFacade   = new NewsFacade();
                    _commonFacade = new CommonFacade();
                    NewsViewModel newsVM = new NewsViewModel();
                    newsVM.SearchFilter = searchFilter;

                    newsVM.NewsList      = _newsFacade.GetNewsList(newsVM.SearchFilter);
                    ViewBag.PageSize     = newsVM.SearchFilter.PageSize;
                    ViewBag.PageSizeList = _commonFacade.GetPageSizeList();

                    Logger.Info(_logMsg.Clear().SetPrefixMsg("Search News").ToSuccessLogString());
                    return(PartialView("~/Views/News/_NewsList.cshtml", newsVM));
                }

                return(Json(new
                {
                    Valid = false,
                    Error = string.Empty,
                    Errors = GetModelValidationErrors()
                }));
            }
            catch (Exception ex)
            {
                Logger.Error("Exception occur:\n", ex);
                Logger.Info(_logMsg.Clear().SetPrefixMsg("Search News").Add("Error Message", ex.Message).ToFailLogString());
                return(Error(new HandleErrorInfo(ex, this.ControllerContext.RouteData.Values["controller"].ToString(),
                                                 this.ControllerContext.RouteData.Values["action"].ToString())));
            }
        }
Beispiel #3
0
        public IEnumerable <NewsEntity> GetNewsUnreadList(NewsSearchFilter searchFilter)
        {
            int?     status = searchFilter.Status.ToNullable <int>();
            DateTime today  = DateTime.Now.Date;

            var newsList = from nw in _context.TB_T_NEWS
                           from usr in _context.TB_R_USER.Where(x => x.USER_ID == nw.CREATE_USER)     // ผู้ประกาศ
                           from ur in _context.TB_R_USER.Where(x => x.USER_ID == searchFilter.UserId) // UserLogin
                           from nb in _context.TB_T_NEWS_BRANCH.Where(x => x.NEWS_ID == nw.NEWS_ID && x.BRANCH_ID == ur.BRANCH_ID)
                           from rn in _context.TB_T_READ_NEWS.Where(x => x.NEWS_ID == nw.NEWS_ID && x.CREATE_USER == searchFilter.UserId).DefaultIfEmpty()
                           where nw.STATUS == status && rn.CREATE_USER == null &&
                           (nw.ANNOUNCE_DATE <= today) &&
                           (nw.EXPIRY_DATE == null || nw.EXPIRY_DATE >= today)
                           group new { nw.NEWS_ID, ur.BRANCH_ID } by new { nw.NEWS_ID, nw.TOPIC, nw.ANNOUNCE_DATE, nw.EXPIRY_DATE, nw.STATUS, usr } into g
                select new NewsEntity
            {
                NewsId       = g.Key.NEWS_ID,
                Topic        = g.Key.TOPIC,
                AnnounceDate = g.Key.ANNOUNCE_DATE,
                ExpiryDate   = g.Key.EXPIRY_DATE,
                CreateUser   = new UserEntity
                {
                    Firstname    = g.Key.usr.FIRST_NAME,
                    Lastname     = g.Key.usr.LAST_NAME,
                    PositionCode = g.Key.usr.POSITION_CODE
                },
                Status = g.Key.STATUS
            };

            int startPageIndex = (searchFilter.PageNo - 1) * searchFilter.PageSize;

            searchFilter.TotalRecords = newsList.Count();
            if (startPageIndex >= searchFilter.TotalRecords)
            {
                startPageIndex      = 0;
                searchFilter.PageNo = 1;
            }

            newsList = SetNewsListSort(newsList, searchFilter);
            return(newsList.Skip(startPageIndex).Take(searchFilter.PageSize).ToList <NewsEntity>());
        }
Beispiel #4
0
        public IEnumerable <NewsEntity> GetNewsList(NewsSearchFilter searchFilter)
        {
            int?status   = searchFilter.Status.ToNullable <int>();
            var newsList = (from nw in _context.TB_T_NEWS
                            from usr in _context.TB_R_USER.Where(x => x.USER_ID == nw.CREATE_USER).DefaultIfEmpty()
                            where (string.IsNullOrEmpty(searchFilter.Topic) || nw.TOPIC.ToUpper().Contains(searchFilter.Topic.ToUpper())) &&
                            (status == null || status == Constants.ApplicationStatus.All || nw.STATUS == status) &&
                            (!searchFilter.AnnounceDate.HasValue || nw.ANNOUNCE_DATE >= searchFilter.AnnounceDate.Value) &&
                            (!searchFilter.ExpiryDate.HasValue || nw.EXPIRY_DATE <= searchFilter.ExpiryDate.Value)
                            select new NewsEntity
            {
                NewsId = nw.NEWS_ID,
                Topic = nw.TOPIC,
                AnnounceDate = nw.ANNOUNCE_DATE,
                ExpiryDate = nw.EXPIRY_DATE,
                Status = nw.STATUS,
                CreateUser = new UserEntity
                {
                    Firstname = usr.FIRST_NAME,
                    Lastname = usr.LAST_NAME,
                    PositionCode = usr.POSITION_CODE
                },
            });

            int startPageIndex = (searchFilter.PageNo - 1) * searchFilter.PageSize;

            searchFilter.TotalRecords = newsList.Count();
            if (startPageIndex >= searchFilter.TotalRecords)
            {
                startPageIndex      = 0;
                searchFilter.PageNo = 1;
            }

            newsList = SetNewsListSort(newsList, searchFilter);
            return(newsList.Skip(startPageIndex).Take(searchFilter.PageSize).ToList <NewsEntity>());
        }
Beispiel #5
0
        private static IQueryable <NewsEntity> SetNewsListSort(IQueryable <NewsEntity> newsList, NewsSearchFilter searchFilter)
        {
            if (searchFilter.SortOrder.ToUpper(CultureInfo.InvariantCulture).Equals("ASC"))
            {
                switch (searchFilter.SortField)
                {
                case "Topic":
                    return(newsList.OrderBy(ord => ord.Topic));

                case "AnnounceDate":
                    return(newsList.OrderBy(ord => ord.AnnounceDate));

                case "ExpiryDate":
                    return(newsList.OrderBy(ord => ord.ExpiryDate));

                case "Status":
                    return(newsList.OrderBy(ord => (ord.Status == 1) ? "A" : "I"));

                case "FullName":
                    return(newsList.OrderBy(ord => ord.CreateUser.PositionCode).ThenBy(ord => ord.CreateUser.Firstname).ThenBy(ord => ord.CreateUser.Lastname));

                default:
                    return(newsList.OrderBy(ord => ord.NewsId));
                }
            }
            else
            {
                switch (searchFilter.SortField)
                {
                case "Topic":
                    return(newsList.OrderByDescending(ord => ord.Topic));

                case "AnnounceDate":
                    return(newsList.OrderByDescending(ord => ord.AnnounceDate));

                case "ExpiryDate":
                    return(newsList.OrderByDescending(ord => ord.ExpiryDate));

                case "Status":
                    return(newsList.OrderByDescending(ord => (ord.Status == 1) ? "A" : "I"));

                case "FullName":
                    return(newsList.OrderByDescending(ord => ord.CreateUser.PositionCode).ThenByDescending(ord => ord.CreateUser.Firstname).ThenByDescending(ord => ord.CreateUser.Lastname));

                default:
                    return(newsList.OrderByDescending(ord => ord.NewsId));
                }
            }
        }
Beispiel #6
0
 public IEnumerable <NewsEntity> GetNewsReadList(NewsSearchFilter searchFilter)
 {
     _newsDataAccess = new NewsDataAccess(_context);
     return(_newsDataAccess.GetNewsReadList(searchFilter));
 }