public void GivenModelWithBirthDateIncluded_AndParentNameIncluded_AndSelectedCustomFields_AndSelectedServiceTypes_AndPermissionGrantsCustomFieldOnly_WhenMapData_ThenResultContainsOnlyDirectoryLevelData()
        {
            Student       student  = TestData.Students[0];
            List <object> expected = new List <object> {
                student.School.Name, student.Grade, student.FullName, null, null, student.CustomFieldValues.First().Value, student.CustomFieldValues.Last().Value
            };
            var model = new StudentProfileExportFieldDescriptor
            {
                BirthDateIncluded    = true,
                ParentNameIncluded   = true,
                SelectedCustomFields = new List <CustomField> {
                    TestData.CustomFields[0], TestData.CustomFields[2]
                },
                SelectedServiceTypes = new List <ServiceType> {
                    TestData.ServiceTypes[1]
                }
            };
            IViewStudentDetailPermission permission = MockRepository.GenerateMock <IViewStudentDetailPermission>();

            permission.Expect(p => p.CustomFieldOnly).Return(true);
            PermissionFactory.Current.Expect(m => m.Create("StudentProfileExportMapData", student)).Return(permission);

            var actual = Target.MapData(model, student, User, MockUserAuditor);

            CollectionAssert.AreEqual(expected, actual.ToList());
        }
Esempio n. 2
0
        public StudentDetailModel GenerateStudentDetailViewModel(EducationSecurityPrincipal user, int id)
        {
            Student student = StudentRepository.Items.Include(s => s.ApprovedProviders).
                              Include("CustomFieldValues.CustomDataOrigin").
                              Include("CustomFieldValues.CustomField").
                              Include("Classes.Teacher").
                              Include("ServiceRequests.CreatingUser").
                              Include("ServiceRequests.ServiceType").
                              Include("ServiceRequests.Subject").
                              Include("ServiceRequests.FulfillmentDetails.FulfillmentStatus").
                              Include("ServiceRequests.FulfillmentDetails.CreatingUser").
                              Include("StudentAssignedOfferings.ServiceOffering.Provider").
                              Include("StudentAssignedOfferings.ServiceOffering.ServiceType").
                              Include("StudentAssignedOfferings.ServiceOffering.Program").
                              Include("StudentAssignedOfferings.CreatingUser").
                              Include(s => s.School).
                              SingleOrDefault(i => i.Id == id);

            if (student == null)
            {
                throw new EntityNotFoundException("Requested student could not be found.");
            }
            IViewStudentDetailPermission permission = (IViewStudentDetailPermission)PermissionFactory.Current.Create("ViewStudentDetail", student);

            permission.GrantAccess(user);
            StudentDetailModel viewModel = new StudentDetailModel();

            viewModel.OnlyUploadedCustomField = permission.CustomFieldOnly;
            List <CustomFieldValue> displayFields = new List <CustomFieldValue>();

            if (permission.CustomFieldOnly)
            {
                displayFields = student.CustomFieldValues.Where(c => c.CustomDataOrigin.CreatingUserId == user.Identity.User.Id).ToList();
            }
            else
            {
                foreach (var field in student.CustomFieldValues)
                {
                    IPermission fieldPermission = PermissionFactory.Current.Create("ViewStudentCustomFieldData", field.CustomField);
                    if ((field.CustomDataOrigin.CreatingUserId == user.Identity.User.Id) || (fieldPermission.TryGrantAccess(user)))
                    {
                        displayFields.Add(field);
                    }
                }
            }
            PrivateHealthDataViewEventRepository.Add(Auditor.CreatePrivateHealthInfoViewEvent(user.Identity.User, displayFields.Where(c => c.CustomField is PrivateHealthField).ToList()));
            RepositoryContainer.Save();
            student.CustomFieldValues = displayFields;
            viewModel.CopyFrom(student);
            if (permission.CustomFieldOnly)
            {
                viewModel.DateOfBirth              = null;
                viewModel.Parents                  = null;
                viewModel.ServiceRequests          = Enumerable.Empty <ServiceRequest>();
                viewModel.StudentAssignedOfferings = Enumerable.Empty <StudentAssignedOffering>();
                viewModel.Classes                  = Enumerable.Empty <Class>();
            }
            return(viewModel);
        }
Esempio n. 3
0
        private string CreateNameString(Student student)
        {
            IViewStudentDetailPermission permission = (IViewStudentDetailPermission)PermissionFactory.Current.Create("CreateStudentNameString", student);

            if (permission.TryGrantAccess(User))
            {
                return(string.Format(CultureInfo.CurrentCulture, "{0}|{1}", student.FullName, student.Id));
            }
            return(string.Format(CultureInfo.CurrentCulture, "{0}", student.FullName));
        }
        public void GivenValidStudentId__WhenGenerateStudentDetailViewModel_ThenAttemptGrantAccess()
        {
            IViewStudentDetailPermission permission = MockRepository.GenerateMock <IViewStudentDetailPermission>();

            PermissionFactory.Current.Expect(m => m.Create("ViewStudentDetail", Data.Students.Single(s => s.Id == 1))).Return(permission);
            foreach (var field in Data.Students.Single(s => s.Id == 1).CustomFieldValues.Select(c => c.CustomField))
            {
                PermissionFactory.Current.Expect(m => m.Create("ViewStudentCustomFieldData", field)).Return(MockRepository.GenerateMock <IPermission>());
            }

            Target.GenerateStudentDetailViewModel(User, 1);

            permission.AssertWasCalled(p => p.GrantAccess(User));
        }
        public void GivenValidStudentId_AndPermissionCustomFieldOnlyTrue_WhenGenerateStudentDetailViewModel_ThenViewModelContainsOnlyCustomFieldValuesByUser_AndViewModelOnlyUploadedCustomFieldSetTrue()
        {
            IViewStudentDetailPermission permission = MockRepository.GenerateMock <IViewStudentDetailPermission>();

            permission.Expect(p => p.CustomFieldOnly).Return(true);
            PermissionFactory.Current.Expect(m => m.Create("ViewStudentDetail", Data.Students.Single(s => s.Id == 1))).Return(permission);
            User.Identity.User.Id = 1;
            var expected = Data.CustomFieldValues.Where(c => c.CustomDataOrigin.CreatingUserId == 1 && c.StudentId == 1);

            var actual = Target.GenerateStudentDetailViewModel(User, 1);

            Assert.IsTrue(actual.OnlyUploadedCustomField);
            Assert.IsTrue(actual.CustomData.Count() > 0);
            CollectionAssert.AreEquivalent(expected.Select(e => e.CustomField.Name).ToList(), actual.CustomData.Select(c => c.FieldName).ToList());
        }
        public void GivenValidStudentId_AndPermissionCustomFieldOnlyTrue_WhenGenerateStudentDetailViewModel_ThenViewModelDoesNotContainPrivateStudentData()
        {
            IViewStudentDetailPermission permission = MockRepository.GenerateMock <IViewStudentDetailPermission>();

            permission.Expect(p => p.CustomFieldOnly).Return(true);
            PermissionFactory.Current.Expect(m => m.Create("ViewStudentDetail", Data.Students.Single(s => s.Id == 1))).Return(permission);
            User.Identity.User.Id = 1;

            var actual = Target.GenerateStudentDetailViewModel(User, 1);

            Assert.IsFalse(actual.DateOfBirth.HasValue);
            Assert.IsNull(actual.Parents);
            Assert.IsTrue(actual.ServiceRequests.Count() == 0);
            Assert.IsTrue(actual.StudentAssignedOfferings.Count() == 0);
            Assert.IsTrue(actual.Classes.Count() == 0);
        }
        public void GivenPermissionDoesNotGrantAccess_WhenMapData_ThenOnlyDirectoryLevelInformationReturned()
        {
            Student       student  = TestData.Students[0];
            List <object> expected = new List <object> {
                student.School.Name, student.Grade, student.FullName
            };
            var model = new StudentProfileExportFieldDescriptor {
                SelectedServiceTypes = new List <ServiceType> {
                    TestData.ServiceTypes[1]
                }
            };
            IViewStudentDetailPermission permission = MockRepository.GenerateMock <IViewStudentDetailPermission>();

            permission.Expect(p => p.GrantAccess(User)).Throw(new EntityAccessUnauthorizedException());
            PermissionFactory.Current.Expect(m => m.Create("StudentProfileExportMapData", student)).Return(permission);

            var actual = Target.MapData(model, student, User, MockUserAuditor);

            CollectionAssert.AreEqual(expected, actual.ToList());
        }
Esempio n. 8
0
        public IEnumerable <object> MapData(StudentProfileExportFieldDescriptor fieldConfiguration, Student data, EducationSecurityPrincipal user, IUserAuditor auditor)
        {
            if (data == null)
            {
                throw new ArgumentNullException("data");
            }
            if (user == null)
            {
                throw new ArgumentNullException("user");
            }
            if (auditor == null)
            {
                throw new ArgumentNullException("auditor");
            }
            List <object> dataList = new List <object> {
                data.School.Name, data.Grade, data.FullName
            };
            IViewStudentDetailPermission permission = (IViewStudentDetailPermission)PermissionFactory.Current.Create("StudentProfileExportMapData", data);

            if (permission.TryGrantAccess(user))
            {
                if (!permission.CustomFieldOnly)
                {
                    dataList.Add(data.StudentSISId);
                }
                MapStandardData(fieldConfiguration, data, dataList, permission.CustomFieldOnly);
                dataList.AddRange(fieldConfiguration.SelectedCustomFields.Select(f => FindLatestValue(data, f)).Select(v => v == null ? string.Empty : v.Value));
                var fields = fieldConfiguration.SelectedCustomFields.Select(f => FindLatestValue(data, f));
                if (fields.Where(f => f != null).ToList().Count() > 0)
                {
                    user.Identity.User.PrivateHealthDataViewEvents.Add(auditor.CreatePrivateHealthInfoViewEvent(user.Identity.User, fields.Where(f => f != null).ToList()));
                }
                if (!permission.CustomFieldOnly)
                {
                    dataList.AddRange(fieldConfiguration.SelectedServiceTypes.Select(serviceType => FindServicesOfferingNames(data, serviceType)));
                }
            }
            return(dataList);
        }
Esempio n. 9
0
        private string CreateStudentSISIdString(Student student)
        {
            IViewStudentDetailPermission permission = (IViewStudentDetailPermission)PermissionFactory.Current.Create("ViewStudentDetail", student);

            return(permission.TryGrantAccess(User) && !permission.CustomFieldOnly ? student.StudentSISId : "");
        }