示例#1
0
        public ActionResult Edit(string id)
        {
            var userdata = new UserDataContainer();
            var newsItem = newsManager.GetById(id);

            if (newsItem == null || !userdata.IsAuthorized)
            {
                return(RedirectToRoute("NotFound"));
            }

            if (userdata.CurrentUser.Id == newsItem.AuthorId ||
                userdata.CurrentUser.Role == Roles.Admin ||
                userdata.CurrentUser.Role == Roles.Moderator ||
                (userdata.CurrentUser.Role == Roles.Praepostor && userdata.CurrentUser.GroupId == newsItem.GroupId))
            {
                var mapped = Mapper.Map <NewsItemEditViewModel, NewsItem>(newsItem);
                return(View(new NewsItemEditPageView()
                {
                    NewsItem = mapped
                }));
            }
            else
            {
                return(RedirectToRoute("NotFound"));
            }
        }
示例#2
0
        public IList <NewsItem> GetListMatchingUserGroups(UserDataContainer userData, string orderBy = "PostingDate", int?count = null)
        {
            var groupManager = Resolver.GetInstance <IGroupsManager>();
            var groups       = new List <Guid>();

            if (userData.IsAuthorized)
            {
                switch (userData.CurrentUser.Role)
                {
                case Bussines.AdditionalData.Roles.User:
                case Bussines.AdditionalData.Roles.Praepostor:
                    groups.Add(userData.CurrentUser.GroupId);
                    break;

                case Bussines.AdditionalData.Roles.Moderator:
                case Bussines.AdditionalData.Roles.Admin:
                    foreach (var item in groupManager.GetList())
                    {
                        groups.Add(item.Id);
                    }
                    break;

                default:
                    break;
                }
            }
            groups.Add(groupManager.GetByName("Global").Id);
            return(provider.GetList(orderBy, count, groups));
        }
示例#3
0
        public static async Task <int> FromDBByCreateTimeAsync(this UserDataContainer item
                                                               , DateTime beginCreateTime, DateTime endCreateTime, bool sortByCreateTimeDesc, int offset = 0, int limit = 10)
        {
            item.Clear();

            UserBasicDataContainer basicDataContainer = new UserBasicDataContainer();

            if (await basicDataContainer.FromDBByCreateTimeAsync(beginCreateTime, endCreateTime, sortByCreateTimeDesc, offset, limit) == 0)
            {
                return(0);
            }

            List <Task <bool> > tasks = new List <Task <bool> >();

            foreach (var it in basicDataContainer.Items)
            {
                var UserData = new UserData();
                UserData.BasicData = it;
                item.Add(UserData);
                tasks.Add(UserData.FromDBByUserIdAsync(it.UserId, false));
            }

            await Task.WhenAll(tasks.ToArray());

            return(item.Count);
        }
示例#4
0
        public static async Task <int> FromDBByLikeEMailAsync(this UserDataContainer item, string email, int offset, int limit = 10)
        {
            item.Clear();

            UserBasicDataContainer basicDataContainer = new UserBasicDataContainer();

            if (await basicDataContainer.FromDBByLikeEMailAsync(email, offset, limit) == 0)
            {
                return(0);
            }

            List <Task <bool> > tasks = new List <Task <bool> >();

            foreach (var it in basicDataContainer.Items)
            {
                var UserData = new UserData();
                UserData.BasicData = it;
                item.Add(UserData);
                tasks.Add(UserData.FromDBByUserIdAsync(it.UserId, false));
            }

            await Task.WhenAll(tasks.ToArray());

            return(item.Count);
        }
示例#5
0
        public ActionResult Index()
        {
            if (Request.Cookies.AllKeys.Contains(CookiesNames.LandingVisited))
            {
                var userInfo = new UserDataContainer();

                var news   = newsManager.GetListMatchingUserGroups(userInfo, "PostingDate");
                var result = new NewsListPageView(Mapper.Map <NewsItemViewModel, NewsItem>(news));

                return(View(result));
            }

            return(RedirectToRoute("Landing"));
        }
示例#6
0
        public ActionResult Create(NewsItemCreatePageView pageView)
        {
            var userdata = new UserDataContainer();

            if (!ModelState.IsValid)
            {
                return(View(pageView));
            }

            var newNewsItem = pageView.NewNewsItem;

            newNewsItem.PrapareToPosting(userdata.CurrentUser.Id);
            newsManager.Create(Mapper.Map <NewsItem, NewsItemViewModel>(newNewsItem));

            return(RedirectToRoute("Home"));
        }
示例#7
0
        public ActionResult GetList(string groupName)
        {
            var userdata = new UserDataContainer();
            IEnumerable <NewsItemViewModel> news;

            if (groupName != "All")
            {
                news = Mapper.Map <NewsItemViewModel, NewsItem>(newsManager.GetListForGroup(groupName));
            }
            else
            {
                news = Mapper.Map <NewsItemViewModel, NewsItem>(newsManager.GetListMatchingUserGroups(userdata));
            }

            var result = new NewsListPageView(news);

            return(PartialView("NewsList", result));
        }
示例#8
0
        public NewsItemCreatePageView()
            : base()
        {
            NewNewsItem = new NewsItemViewModel();
            var userData = new UserDataContainer();

            groups = new List <Group>();
            if (userData.IsAuthorized)
            {
                if (userData.CurrentUser.Role == Roles.Admin || userData.CurrentUser.Role == Roles.Moderator)
                {
                    foreach (var item in Resolver.GetInstance <IGroupsManager>().GetList())
                    {
                        groups.Add(item);
                    }
                }
                else if (userData.CurrentUser.Role == Roles.Praepostor)
                {
                    var group = Resolver.GetInstance <IGroupsManager>().GetById(userData.CurrentUser.GroupId.ToString());
                    groups.Add(group);
                }
            }
        }
示例#9
0
        public ActionResult Delete(string id)
        {
            var userdata = new UserDataContainer();
            var newsItem = newsManager.GetById(id);

            if (newsItem == null || !userdata.IsAuthorized)
            {
                return(RedirectToRoute("NotFound"));
            }

            if (userdata.CurrentUser.Id == newsItem.AuthorId ||
                userdata.CurrentUser.Role == Roles.Admin ||
                userdata.CurrentUser.Role == Roles.Moderator ||
                (userdata.CurrentUser.Role == Roles.Praepostor && userdata.CurrentUser.GroupId == newsItem.GroupId))
            {
                newsManager.Delete(newsItem);

                return(Json(true));
            }
            else
            {
                return(RedirectToRoute("NotFound"));
            }
        }