示例#1
0
        public void AddPageShouldAddPage()
        {
            var page = new PageInputModel()
            {
                DiaryId   = 1,
                User      = "******",
                Content   = null,
                CreatedOn = DateTime.UtcNow,
                Title     = "TitleTests"
            };

            var pageService = new Mock <IPageService>();

            var controller = new Web.Controllers.PagesController(pageService.Object);

            var result = controller.AddPage(page);

            int    diaryId               = page.DiaryId;
            string redirectActionName    = "Details";
            string controlerToRedirectTo = "Diaries";

            result.Should().BeOfType <RedirectToActionResult>().Which.ActionName.Should().Be(redirectActionName);
            result.Should().BeOfType <RedirectToActionResult>().Which.ControllerName.Should().Be(controlerToRedirectTo);
            result.Should().BeOfType <RedirectToActionResult>()
            .Which.RouteValues.Values.Count
            .Should().Be(1).And.Subject
            .Should().Be(diaryId);
        }
        public void AddPageShouldAddNewPageToDiary()
        {
            //arrange

            var user = new GetShreddedUser
            {
                Id       = "UserId",
                UserName = "******",
            };

            var diary = new GetShreddedDiary
            {
                Id      = 1,
                User    = user,
                Summary = "Summary",
                Title   = "Title",
                UserId  = "UserId",
            };

            var page = new Page
            {
                Id                 = 2,
                Content            = "Content",
                UserId             = user.Id,
                GetShreddedUser    = user,
                GetShreddedDiary   = diary,
                GetShreddedDiaryId = diary.Id,
                Title              = "Title",
                CreatedOn          = DateTime.UtcNow
            };

            var newPage = new PageInputModel
            {
                User      = user.UserName,
                Content   = "Some New Content",
                CreatedOn = DateTime.Now,
                DiaryId   = diary.Id,
                Title     = "New Page"
            };

            userManager.CreateAsync(user).GetAwaiter();
            this.Context.Pages.Add(page);
            this.Context.GetShreddedDiaries.Add(diary);
            this.Context.SaveChanges();

            //act
            this.pageService.AddPage(newPage);

            //assert

            var result = this.Context.Pages.OrderBy(x => x.CreatedOn).Last(x => x.GetShreddedDiaryId == diary.Id);

            result.Should().NotBeNull()
            .And.Subject.As <Page>()
            .Title.Should().BeSameAs(newPage.Title);
        }
        public IActionResult AddPage(PageInputModel inputModel)
        {
            if (!ModelState.IsValid)
            {
                this.ViewData[GlobalConstants.PageLength] = inputModel.Content?.Length ?? 0;
                this.ViewData[GlobalConstants.DiaryId]    = inputModel.DiaryId;
                return(this.View(inputModel));
            }

            this.PageService.AddPage(inputModel);

            return(RedirectToAction("Details", "Diaries", new { id = inputModel.DiaryId }));
        }
        public Task <ActionResult <IEnumerable <AssignmentViewModel> > > GetAsync([FromQuery] PageInputModel inputModel = null)
        => ExecuteAsync <IEnumerable <AssignmentViewModel> >(async() =>
        {
            var assignments = await _assignmentsRepository.GetPageDescendingAsync(
                skip: inputModel?.Skip,
                take: inputModel?.Take
                );

            if (!assignments.Any())
            {
                return(NoContent());
            }

            return(Ok(assignments.Select(a => (AssignmentViewModel)a)));
        });
        // TODO timeframe
        public Task <ActionResult <IEnumerable <PostViewModel> > > GetPostsAsync([FromQuery] PageInputModel inputModel = null)
        => ExecuteAsync <IEnumerable <PostViewModel> >(async() =>
        {
            var skip = inputModel?.Skip ?? PaginationDefaults.DefaultSkip;
            var take = inputModel?.Take ?? PaginationDefaults.DefaultTake;

            var posts = await _postsRepository.GetPageAsync(p => true, p => p.Rating, p => p.Include(e => e.User), skip, take);

            if (!posts.Any())
            {
                return(NoContent());
            }

            return(Ok(posts.Select(p => (PostViewModel)p)));
        });
示例#6
0
        public Task <ActionResult <IEnumerable <UserViewModel> > > GetUsersAsync([FromQuery] PageInputModel inputModel = null)
        => ExecuteAsync <IEnumerable <UserViewModel> >(async() =>
        {
            var skip = inputModel?.Skip ?? PaginationDefaults.DefaultSkip;
            var take = inputModel?.Take ?? PaginationDefaults.DefaultTake;

            var users = await _usersRepository.GetPageAsync(skip, take);

            if (!users.Any())
            {
                return(NoContent());
            }

            return(Ok(users.Select(u => (UserViewModel)u)));
        });
示例#7
0
        public void AddPage(PageInputModel inputModel)
        {
            var user = this.UserManager.FindByNameAsync(inputModel.User).GetAwaiter().GetResult();
            var page = Mapper.Map <Page>(inputModel);

            page.UserId = user.Id;
            var diary = this.Context.GetShreddedDiaries.Find(inputModel.DiaryId);

            diary.LastEditedOn = inputModel.CreatedOn;

            this.Context.GetShreddedDiaries.Update(diary);
            this.Context.Pages.Add(page);
            this.Context.SaveChanges();

            this.NotificationService.AddNotification(inputModel.DiaryId, inputModel.User, diary.Title);
        }
示例#8
0
        public async Task <bool> EditPage(PageInputModel pageInput)
        {
            var page = this.db.SitePages.FirstOrDefault(x => x.Id == pageInput.Id);

            page.Title      = pageInput.Title;
            page.Content    = pageInput.Content;
            page.ImageUrl   = pageInput.ImageUrl;
            page.ModifiedOn = DateTime.UtcNow;

            int result = await this.db.SaveChangesAsync();

            if (!(result == 0))
            {
                return(false);
            }
            return(true);
        }
示例#9
0
        public Task <ActionResult <IEnumerable <EventViewModel> > > GetAsync([FromQuery] PageInputModel inputModel = null)
        => ExecuteAsync <IEnumerable <EventViewModel> >(async() =>
        {
            var events = await _eventsRepository.GetPageDescendingAsync(
                includes: e => e
                .Include(r => r.Attendees)
                .ThenInclude(a => a.User),
                skip: inputModel?.Skip,
                take: inputModel?.Take
                );

            if (!events.Any())
            {
                return(NoContent());
            }

            return(Ok(events.Select(e => (EventViewModel)e)));
        });
示例#10
0
        public void AddPageShouldReturnErrorAddPage()
        {
            var page = new PageInputModel()
            {
                DiaryId   = 1,
                User      = "******",
                Content   = null,
                CreatedOn = DateTime.UtcNow,
                Title     = "TitleTests"
            };

            var pageService = new Mock <IPageService>();

            var controller = new Web.Controllers.PagesController(pageService.Object);

            controller.ModelState.AddModelError("Content", "StringLength");

            var result = controller.AddPage(page);

            result.Should().BeOfType <ViewResult>().Which.Model.Should().BeOfType <PageInputModel>();
        }
        public Task <ActionResult <IEnumerable <ClassViewModel> > > GetAsync([FromQuery] PageInputModel inputModel = null)
        => ExecuteAsync <IEnumerable <ClassViewModel> >(async() =>
        {
            var classes = await _classesRepository.GetPageDescendingAsync(
                includes: c => c
                .Include(r => r.Assignments)
                .Include(r => r.SchoolYear)
                .Include(r => r.Students)
                .ThenInclude(s => s.Attendance)
                .Include(r => r.Subject)
                .Include(r => r.Teacher),
                skip: inputModel?.Skip,
                take: inputModel?.Take
                );

            if (!classes.Any())
            {
                return(NoContent());
            }

            return(Ok(classes.Select(c => (ClassViewModel)c)));
        });
        public async Task <IActionResult> OnGetAsync(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var isAuthorize = User.IsInRole(Constants.AdministratorRole);

            if (!isAuthorize)
            {
                return(new ChallengeResult());
            }

            var pageResult = await RedisplayPage(id.Value);

            var user = await _context.FindUserByWorkerIdAsync(id.Value);

            if (WorkerCrossPageData == null || user == null)
            {
                return(NotFound());
            }

            var roles = await _userManager.GetRolesAsync(user);

            InputModel = new PageInputModel
            {
                Email    = user.Email,
                WorkerId = id.Value,
                Role     = roles.Count == 0 ? string.Empty : roles[0],
            };

            InputModel.WorkerId = WorkerCrossPageData.WorkerID;

            return(pageResult);
        }
示例#13
0
        public Task <ActionResult <IEnumerable <PostViewModel> > > GetPostsAsync(Guid id, [FromQuery] PageInputModel inputModel = null)
        => ExecuteAsync <IEnumerable <PostViewModel> >(async() =>
        {
            var skip = inputModel?.Skip ?? PaginationDefaults.DefaultSkip;
            var take = inputModel?.Take ?? PaginationDefaults.DefaultTake;

            var posts = await _postsRepository.GetPageDescendingAsync(p => p.UserId == id, p => p.CreatedAt, skip, take);

            if (!posts.Any())
            {
                return(NoContent());
            }

            return(Ok(posts.Select(p => (PostViewModel)p)));
        });