Ejemplo n.º 1
0
 protected override SirenEntityBuilder AddEntityProperties(SirenEntityBuilder entity, Semester item)
 {
     return(entity
            .WithProperty("Id", item.Id)
            .WithProperty("Year", item.Year)
            .WithProperty("Term", item.Term));
 }
Ejemplo n.º 2
0
 protected override SirenEntityBuilder AddCollectionLinks(SirenEntityBuilder entity)
 {
     return(entity
            .WithLink(new LinkBuilder()
                      .WithRel("index")
                      .WithHref(UrlTo(Routes.Index))));
 }
Ejemplo n.º 3
0
        protected override SirenEntityBuilder AddCollectionActions(
            SirenEntityBuilder entity)
        {
            Claim c = Context.HttpContext.User.FindFirst(ClaimTypes.Role);

            if (c != null && (c.Value.Equals(Roles.Admin) || c.Value.Equals(Roles.Teacher)))
            {
                entity
                .WithAction(new ActionBuilder()
                            .WithName("add-student-to-class")
                            .WithTitle("Add Student To Class")
                            .WithMethod("POST")
                            .WithHref(Url.AbsoluteRouteUrl(
                                          Routes.ClassParticipantAdd,
                                          new { id = Identifier })
                                      )
                            .WithType("application/json")
                            .WithField(new FieldBuilder()
                                       .WithTitle("Number")
                                       .WithName("number")
                                       .WithType("number")));
            }

            return(entity);
        }
Ejemplo n.º 4
0
 protected override SirenEntityBuilder AddEntityProperties(SirenEntityBuilder entity, Course item)
 {
     return(entity
            .WithProperty("id", item.Id)
            .WithProperty("name", item.Name)
            .WithProperty("acr", item.Acronym));
 }
Ejemplo n.º 5
0
        /*
         |-----------------------------------------------------------------------
         | Collection
         |-----------------------------------------------------------------------
         */

        protected override SirenEntityBuilder AddCollectionActions(SirenEntityBuilder entity)
        {
            Claim c = Context.HttpContext.User.FindFirst(ClaimTypes.Role);

            if (c != null && c.Value.Equals(Roles.Admin))
            {
                entity
                .WithAction(new ActionBuilder()
                            .WithName("add-course")
                            .WithTitle("Add Course")
                            .WithMethod("POST")
                            .WithHref(UrlTo(Routes.CourseCreate))
                            .WithType("application/json")
                            .WithField(new FieldBuilder()
                                       .WithTitle("Name")
                                       .WithName("name")
                                       .WithType("text"))
                            .WithField(new FieldBuilder()
                                       .WithTitle("Acronym")
                                       .WithName("acronym")
                                       .WithType("text"))
                            .WithField(new FieldBuilder()
                                       .WithTitle("Coordinator Number")
                                       .WithName("coordinatorId")
                                       .WithType("number")));
            }

            return(entity);
        }
Ejemplo n.º 6
0
 protected override SirenEntityBuilder AddEntityLinks(SirenEntityBuilder entity, Group item)
 {
     return(entity
            .WithLink(new LinkBuilder()
                      .WithRel("self")
                      .WithHref(Url.AbsoluteRouteUrl(Routes.GroupEntry, item.Id))));
 }
Ejemplo n.º 7
0
        /*
         |-----------------------------------------------------------------------
         | Entity
         |-----------------------------------------------------------------------
         */

        protected override SirenEntityBuilder AddEntityProperties(SirenEntityBuilder entity, Teacher item)
        {
            return(entity
                   .WithProperty("number", item.Number)
                   .WithProperty("name", item.Name)
                   .WithProperty("email", item.Email));
        }
Ejemplo n.º 8
0
        public SirenEntity Collection(PagedList <T> items, ListQueryStringDto query)
        {
            var entity = new SirenEntityBuilder()
                         .WithClass(Class)
                         .WithClass("collection");

            AddCollectionProperties(entity, items, query);

            foreach (var item in items)
            {
                var subEntity      = SubEntity(item);
                var embeddedEntity = subEntity as EmbeddedRepresentationBuilder;

                if (embeddedEntity != null)
                {
                    embeddedEntity.WithRel("item");

                    entity.WithSubEntity(embeddedEntity);
                }
            }

            AddCollectionActions(entity);

            AddNavigationLinks(entity, items.TotalPages, query);

            AddCollectionLinks(entity);

            return(entity.Build());
        }
Ejemplo n.º 9
0
        /*
         |-----------------------------------------------------------------------
         | Entity
         |-----------------------------------------------------------------------
         */

        protected override SirenEntityBuilder AddEntityProperties(
            SirenEntityBuilder entity,
            Student item)
        => entity
        .WithProperty("number", item.Number)
        .WithProperty("name", item.Name)
        .WithProperty("email", item.Email);
Ejemplo n.º 10
0
        /*
         |-----------------------------------------------------------------------
         | Collection
         |-----------------------------------------------------------------------
         */

        protected override SirenEntityBuilder AddCollectionActions(
            SirenEntityBuilder entity)
        {
            Claim c = Context.HttpContext.User.FindFirst(ClaimTypes.Role);

            if (c != null && c.Value.Equals(Roles.Admin))
            {
                entity
                .WithAction(new ActionBuilder()
                            .WithName("add-student")
                            .WithTitle("Add Student")
                            .WithMethod("POST")
                            .WithHref(UrlTo(Routes.StudentCreate))
                            .WithType("application/json")
                            .WithField(new FieldBuilder()
                                       .WithTitle("Number")
                                       .WithName("number")
                                       .WithType("number"))
                            .WithField(new FieldBuilder()
                                       .WithTitle("Name")
                                       .WithName("name")
                                       .WithType("text"))
                            .WithField(new FieldBuilder()
                                       .WithTitle("E-mail")
                                       .WithName("email")
                                       .WithType("email"))
                            .WithField(new FieldBuilder()
                                       .WithTitle("Password")
                                       .WithName("password")
                                       .WithType("password")));
            }

            return(entity);
        }
Ejemplo n.º 11
0
        protected override SirenEntityBuilder AddCollectionActions(SirenEntityBuilder entity)
        {
            Claim c = Context.HttpContext.User.FindFirst(ClaimTypes.Role);

            if (c != null && (c.Value.Equals(Roles.Admin) || c.Value.Equals(Roles.Teacher)))
            {
                entity
                .WithAction(new ActionBuilder()
                            .WithName("add-group-to-class")
                            .WithTitle("Add Group to Class")
                            .WithMethod("POST")
                            .WithHref(UrlTo(Routes.GroupCreate))
                            .WithType("application/json")
                            .WithField(new FieldBuilder()
                                       .WithName("ClassId")
                                       .WithType("hidden")
                                       .WithValue(Identifier.ToString()))
                            .WithField(new FieldBuilder()
                                       .WithTitle("Number")
                                       .WithName("number")
                                       .WithType("number"))
                            );
            }

            return(entity);
        }
Ejemplo n.º 12
0
 protected override SirenEntityBuilder AddEntityLinks(SirenEntityBuilder entity, Semester item)
 {
     return(entity
            .WithLink(new LinkBuilder()
                      .WithRel("self")
                      .WithHref(Url.AbsoluteRouteUrl(Routes.SemesterEntry, new { Id = item.Id }))));
 }
Ejemplo n.º 13
0
        /*
         |-----------------------------------------------------------------------
         | Entity
         |-----------------------------------------------------------------------
         */

        protected override SirenEntityBuilder AddEntityProperties(SirenEntityBuilder entity, Class item)
        {
            return(entity
                   .WithProperty("id", item.Id)
                   .WithProperty("name", item.Name)
                   .WithProperty("maxGroupSize", item.MaxGroupSize)
                   .WithProperty("autoEnrollment", item.AutoEnrollment));
        }
Ejemplo n.º 14
0
        public void SirenEntityBuilder_AddProperty_NullProperty_ExpectEntityWithNullProperty()
        {
            SirenEntityBuilder builder = new SirenEntityBuilder();

            builder.AddProperty("testNullProperty", null);
            ISirenEntity entity = builder.Build();

            Assert.IsNotNull(entity.Properties);
            Assert.IsNull(entity.Properties.testNullProperty);
        }
Ejemplo n.º 15
0
 protected override SirenEntityBuilder AddCollectionLinks(
     SirenEntityBuilder entity)
 {
     return(entity
            .WithLink(new LinkBuilder()
                      .WithRel("self")
                      .WithHref(Url.AbsoluteRouteUrl(RouteList, new { id = Identifier })))
            .WithLink(new LinkBuilder()
                      .WithRel("index")
                      .WithHref(UrlTo(Routes.Index))));
 }
Ejemplo n.º 16
0
 protected override SirenEntityBuilder AddEntityLinks(
     SirenEntityBuilder entity,
     Student item)
 {
     return(entity
            .WithLink(new LinkBuilder()
                      .WithRel("self")
                      .WithHref(Url.ToStudent(Routes.StudentEntry, item.Number)))
            .WithLink(new LinkBuilder()
                      .WithRel(SirenData.REL_STUDENTS_CLASSES)
                      .WithHref(Url.ToStudent(Routes.StudentClassList, item.Number))));
 }
Ejemplo n.º 17
0
 protected override SirenEntityBuilder AddEntityLinks(SirenEntityBuilder entity, Course item)
 {
     return(entity
            .WithLink(new LinkBuilder()
                      .WithRel("self")
                      .WithHref(Url.ToCourse(Routes.CourseEntry, item.Id)))
            .WithLink(new LinkBuilder()
                      .WithRel(SirenData.REL_COURSE_CLASSES)
                      .WithHref(Url.ToCourse(Routes.CourseClassList, item.Id)))
            .WithLink(new LinkBuilder()
                      .WithRel(SirenData.REl_COURSE_COORDINATOR)
                      .WithHref(Url.ToTeacher(Routes.TeacherEntry, item.CoordinatorId))));
 }
Ejemplo n.º 18
0
        public void SirenEntityBuilder_Build_WithParams_ExpectEntityWithParams()
        {
            string expectedTitle = "test-title";
            Uri    expectedHref  = TestHref;
            string expectedType  = "test-type";

            SirenEntityBuilder builder = new SirenEntityBuilder();

            ISirenEntity entity = builder.Build(expectedTitle, expectedHref, expectedType);

            Assert.AreEqual(expectedTitle, entity.Title);
            Assert.AreEqual(expectedHref, entity.Href);
            Assert.AreEqual(expectedType, entity.Type);
        }
Ejemplo n.º 19
0
        public void SirenEntityBuilder_AddProperty_NonNullProperties_ExpectEntityWithProperties()
        {
            IList <string> value1 = new List <string>();
            string         value2 = "my-value-2";

            SirenEntityBuilder builder = new SirenEntityBuilder();

            builder.AddProperty("myProp1", value1);
            builder.AddProperty("myProp2", value2);
            ISirenEntity entity = builder.Build();

            Assert.IsNotNull(entity.Properties);
            Assert.AreEqual(value1, entity.Properties.myProp1);
            Assert.AreEqual(value2, entity.Properties.myProp2);
        }
Ejemplo n.º 20
0
        public void SirenEntityBuilder_AddLink_ExpectEntityWithLinks()
        {
            ISirenLink expectedLink1 = TestHelpers.GetLink("link-1");
            ISirenLink expectedLink2 = TestHelpers.GetLink("link-2");

            SirenEntityBuilder builder = new SirenEntityBuilder();

            builder.AddLink(expectedLink1);
            builder.AddLink(expectedLink2);
            ISirenEntity entity = builder.Build();

            Assert.AreEqual(2, entity.Links.Count());
            CollectionAssert.Contains(entity.Links, expectedLink1);
            CollectionAssert.Contains(entity.Links, expectedLink2);
        }
Ejemplo n.º 21
0
        public void SirenEntityBuilder_AddEntity_ExpectEntityWithEntities()
        {
            ISirenEntity expectedEntity1 = TestHelpers.GetEntity("entity-1");
            ISirenEntity expectedEntity2 = TestHelpers.GetEntity("entity-2");

            SirenEntityBuilder builder = new SirenEntityBuilder();

            builder.AddEntity(expectedEntity1);
            builder.AddEntity(expectedEntity2);
            ISirenEntity entity = builder.Build();

            Assert.AreEqual(2, entity.Entities.Count());
            CollectionAssert.Contains(entity.Entities, expectedEntity1);
            CollectionAssert.Contains(entity.Entities, expectedEntity2);
        }
Ejemplo n.º 22
0
        public void SirenEntityBuilder_AddClass_Single_ExpectEntityWithClasses()
        {
            string expectedClass1 = "first-class";
            string expectedClass2 = "second-class";

            SirenEntityBuilder builder = new SirenEntityBuilder();

            builder.AddClass(expectedClass1);
            builder.AddClass(expectedClass2);
            ISirenEntity entity = builder.Build();

            Assert.AreEqual(2, entity.Class.Length);
            Assert.Contains(expectedClass1, entity.Class);
            Assert.Contains(expectedClass2, entity.Class);
        }
Ejemplo n.º 23
0
        public void SirenEntityBuilder_AddRel_Single_ExpectEntityWithRels()
        {
            string expectedRel1 = "first-rel";
            string expectedRel2 = "second-rel";

            SirenEntityBuilder builder = new SirenEntityBuilder();

            builder.AddRel(expectedRel1);
            builder.AddRel(expectedRel2);
            ISirenEntity entity = builder.Build();

            Assert.AreEqual(2, entity.Rel.Length);
            Assert.Contains(expectedRel1, entity.Rel);
            Assert.Contains(expectedRel2, entity.Rel);
        }
Ejemplo n.º 24
0
        public void SirenEntityBuilder_AddAction_ExpectEntityWithActions()
        {
            ISirenAction expectedAction1 = TestHelpers.GetAction("action-1");
            ISirenAction expectedAction2 = TestHelpers.GetAction("action-2");

            SirenEntityBuilder builder = new SirenEntityBuilder();

            builder.AddAction(expectedAction1);
            builder.AddAction(expectedAction2);
            ISirenEntity entity = builder.Build();

            Assert.AreEqual(2, entity.Actions.Count());
            CollectionAssert.Contains(entity.Actions, expectedAction1);
            CollectionAssert.Contains(entity.Actions, expectedAction2);
        }
Ejemplo n.º 25
0
 protected override SirenEntityBuilder AddEntityLinks(SirenEntityBuilder entity, Teacher item)
 {
     return(entity
            .WithLink(new LinkBuilder()
                      .WithRel("self")
                      .WithHref(Url.ToTeacher(Routes.TeacherEntry, item.Number)))
            .WithLink(new LinkBuilder()
                      .WithRel(SirenData.REL_TEACHERS_CLASSES)
                      .WithHref(Url.ToTeacher(Routes.TeacherClassList, item.Number)))
            .WithLink(new LinkBuilder()
                      .WithRel(SirenData.REL_TEACHER_COURSES)
                      .WithHref(Url.AbsoluteRouteUrl(
                                    Routes.TeacherCourseList,
                                    new { number = item.Number }))
                      ));
 }
Ejemplo n.º 26
0
        public void SirenEntityBuilder_Build_NothingAdded_ExpectEmptyEntity()
        {
            SirenEntityBuilder builder = new SirenEntityBuilder();

            ISirenEntity entity = builder.Build();

            Assert.IsEmpty(entity.Class);
            Assert.IsNull(entity.Properties);
            Assert.IsEmpty(entity.Entities);
            Assert.IsEmpty(entity.Links);
            Assert.IsEmpty(entity.Actions);
            Assert.IsNull(entity.Title);
            Assert.IsEmpty(entity.Rel);
            Assert.IsNull(entity.Href);
            Assert.IsNull(entity.Type);
        }
Ejemplo n.º 27
0
        protected override SirenEntityBuilder AddEntitySubEntities(SirenEntityBuilder entity, Course item)
        {
            if (item.Coordinator != null)
            {
            }
            entity.WithSubEntity(
                (SubEntityBuilder) new EmbeddedRepresentationBuilder()
                .WithRel("coordinator")
                .WithClass("teacher")
                .WithProperty("number", item.Coordinator.Number)
                .WithProperty("name", item.Coordinator.Name)
                .WithProperty("email", item.Coordinator.Email)
                );

            return(entity);
        }
Ejemplo n.º 28
0
        protected override SirenEntityBuilder AddEntitySubEntities(SirenEntityBuilder entity, Class item)
        {
            if (item.Semester != null)
            {
                entity.WithSubEntity(
                    (SubEntityBuilder) new EmbeddedRepresentationBuilder()
                    .WithRel("semester")
                    .WithClass("semester")
                    .WithProperty("Id", item.Semester.Id)
                    .WithProperty("Year", item.Semester.Year)
                    .WithProperty("Term", item.Semester.Term)
                    );
            }

            return(entity);
        }
Ejemplo n.º 29
0
        /*
         |-----------------------------------------------------------------------
         | Helpers
         |-----------------------------------------------------------------------
         */

        protected SirenEntityBuilder AddCollectionProperties(
            SirenEntityBuilder entity,
            PagedList <T> items,
            ListQueryStringDto query)
        {
            entity
            .WithProperty("totalCount", items.TotalCount)
            .WithProperty("totalPages", items.TotalPages)
            .WithProperty("currentPage", items.CurrentPage)
            .WithProperty("pageSize", items.PageSize);

            if (!string.IsNullOrEmpty(query.Search))
            {
                entity.WithProperty("search", query.Search);
            }

            return(entity);
        }
Ejemplo n.º 30
0
        protected override SirenEntityBuilder AddEntitySubEntities(SirenEntityBuilder entity, Group item)
        {
            if (item.Students != null)
            {
                item.Students.ForEach(i => {
                    entity.WithSubEntity(
                        (SubEntityBuilder) new EmbeddedRepresentationBuilder()
                        .WithRel("item")
                        .WithClass("student")
                        .WithProperty("number", i.Student.Number)
                        .WithProperty("name", i.Student.Name)
                        .WithProperty("email", i.Student.Email)
                        );
                });
            }

            return(entity);
        }