コード例 #1
0
        public void Delete(int id)
        {
            var providerToDelete = ProviderRepository.Items.
                                   Include("ServiceOfferings.Program.Schools").
                                   Include(p => p.ApprovingStudents).
                                   Include(p => p.UserRoles).
                                   SingleOrDefault(p => p.Id == id);

            if (providerToDelete == null)
            {
                throw new EntityNotFoundException("Specified Provider does not exist");
            }
            if (StudentAssignedOfferingRepository.Items.
                Where(s => s.ServiceOffering.ProviderId == id && s.IsActive).Any())
            {
                throw new ValidationException(new ValidationResult("Provider associated to active Student Assigned Offerings", new string[] { "Id" }), null, id);
            }
            providerToDelete.IsActive = false;
            UpdateProviderPrograms(Enumerable.Empty <int>(), providerToDelete);
            foreach (var toDeactivate in providerToDelete.ServiceOfferings)
            {
                toDeactivate.IsActive = false;
            }
            foreach (var toRemove in providerToDelete.ApprovingStudents.ToArray())
            {
                providerToDelete.ApprovingStudents.Remove(toRemove);
                toRemove.ApprovedProviders.Remove(providerToDelete);
            }
            foreach (var toRemove in providerToDelete.UserRoles.ToArray())
            {
                providerToDelete.UserRoles.Remove(toRemove);
                toRemove.Providers.Remove(providerToDelete);
            }
            RepositoryContainer.Save();
        }
コード例 #2
0
        public void Create(EducationSecurityPrincipal user, ServiceOfferingScheduleModel viewModel)
        {
            if (user == null)
            {
                throw new ArgumentNullException("user");
            }
            if (viewModel == null)
            {
                throw new ArgumentNullException("viewModel");
            }
            if (!ServiceOfferingRepository.Items.Any(s => s.Id == viewModel.ServiceOfferingId && s.IsActive))
            {
                throw new EntityNotFoundException("Selected Service Offering was not found.");
            }
            ServiceOffering       offering   = ServiceOfferingRepository.Items.Single(s => s.Id == viewModel.ServiceOfferingId && s.IsActive);
            IEnumerable <Student> students   = StudentRepository.Items.Include(s => s.School).Where(s => viewModel.SelectedStudents.Contains(s.Id));
            IPermission           permission = PermissionFactory.Current.Create("ScheduleOffering", students, offering);

            permission.GrantAccess(user);
            User       userEntity = user.Identity.User;
            List <int> studentIds = viewModel.SelectedStudents.ToList();

            foreach (int studentId in studentIds)
            {
                var studentAssignedOffering = new StudentAssignedOffering
                {
                    StudentId      = studentId,
                    CreatingUserId = userEntity.Id,
                    IsActive       = true
                };
                viewModel.CopyTo(studentAssignedOffering);
                StudentAssignedOfferingRepository.Add(studentAssignedOffering);
            }
            RepositoryContainer.Save();
        }
コード例 #3
0
        public void Create(ProgramModel viewModel)
        {
            if (viewModel == null)
            {
                throw new ArgumentNullException("viewModel");
            }
            Program item = ProgramRepository.Items.SingleOrDefault(p => p.Name == viewModel.Name && !p.IsActive);

            if (item == null)
            {
                item = new Program();
                ProgramRepository.Add(item);
            }
            viewModel.Id  = item.Id;
            item.IsActive = true;
            viewModel.CopyTo(item);
            UpdateSchools(viewModel, item);
            var mappings = GenerateServiceOfferingMappings(viewModel, item);

            foreach (var mapping in mappings)
            {
                if (!ServiceOfferingRepository.Items.Where(s => s.ProgramId == mapping.ProgramId && s.ProviderId == mapping.ProviderId && s.ServiceTypeId == mapping.ServiceTypeId).Any())
                {
                    item.ServiceOfferings.Add(mapping);
                    ServiceOfferingRepository.Add(mapping);
                }
            }
            RepositoryContainer.Save();
        }
コード例 #4
0
        public void Edit(ServiceAttendanceModel viewModel, EducationSecurityPrincipal user)
        {
            if (viewModel == null)
            {
                throw new ArgumentNullException("viewModel");
            }
            if (user == null)
            {
                throw new ArgumentNullException("user");
            }
            var updatedServiceAttendance = ServiceAttendanceRepository.Items.Include(s => s.StudentAssignedOffering).SingleOrDefault(s => s.Id == viewModel.Id);

            if (updatedServiceAttendance == null)
            {
                throw new EntityNotFoundException();
            }
            IPermission permission = PermissionFactory.Current.Create("EditServiceAttendance", updatedServiceAttendance.StudentAssignedOffering);

            permission.GrantAccess(user);
            viewModel.CopyTo(updatedServiceAttendance);
            updatedServiceAttendance.LastModifyingUser = user.Identity.User;
            updatedServiceAttendance.LastModifyTime    = DateTime.Now;
            ServiceAttendanceRepository.Update(updatedServiceAttendance);
            RepositoryContainer.Save();
        }
コード例 #5
0
        public void Edit(ProgramModel viewModel)
        {
            if (viewModel == null)
            {
                throw new ArgumentNullException("viewModel");
            }
            Program toUpdate = ProgramRepository.Items.Include(s => s.ServiceOfferings).Include(s => s.Schools).SingleOrDefault(p => p.Id == viewModel.Id);

            if (toUpdate == null || !toUpdate.IsActive)
            {
                throw new EntityNotFoundException("Could not find Program with specified Id.");
            }
            var currentMappings = ServiceOfferingRepository.Items.
                                  Include(c => c.ServiceType).
                                  Include(c => c.Provider).
                                  Include("StudentAssignedOfferings").
                                  Where(s => s.ProgramId == viewModel.Id).ToList();
            var newMappings = GenerateServiceOfferingMappings(viewModel, toUpdate);

            UpdateSchools(viewModel, toUpdate);
            DeactivateServiceOfferings(currentMappings, newMappings);
            ActivateServiceOfferings(currentMappings, newMappings);
            viewModel.CopyTo(toUpdate);
            ProgramRepository.Update(toUpdate);
            RepositoryContainer.Save();
        }
コード例 #6
0
        public void Delete(int id)
        {
            Program toDelete = ProgramRepository.Items.Include(p => p.Schools).Include(p => p.ServiceOfferings).SingleOrDefault(p => p.Id == id);

            if (toDelete == null)
            {
                throw new EntityNotFoundException("Could not find Program with specified Id.");
            }
            if (StudentAssignedOfferingRepository.Items.Any(s => s.ServiceOffering.ProgramId == id && s.IsActive))
            {
                throw new ValidationException(new ValidationResult("Program associated to active Student Assigned Offerings", new string[] { "Id" }), null, id);
            }
            toDelete.IsActive = false;
            foreach (var toDeactivate in toDelete.ServiceOfferings)
            {
                toDeactivate.IsActive = false;
            }
            toDelete.IsActive = false;
            var schoolsToDelete = toDelete.Schools.ToArray();

            foreach (var school in schoolsToDelete)
            {
                toDelete.Schools.Remove(school);
            }
            RepositoryContainer.Save();
        }
コード例 #7
0
        public User EnsureUserEntity(ClaimsIdentity claimsIdentity)
        {
            string userKey = EducationSecurityIdentity.FindUserKey(claimsIdentity);
            User   user    = UserRepository.Items
                             .Include(u => u.EulaAcceptances)
                             .Include("PrivateHealthDataViewEvents.PhiValuesViewed")
                             .Include("UserRoles.Role")
                             .Include("UserRoles.Schools")
                             .Include("UserRoles.Providers")
                             .SingleOrDefault(u => u.UserKey.Equals(userKey));

            if (user == null)
            {
                var email = claimsIdentity.FindFirst(ClaimTypes.Email) == null ? User.AnonymousEmailValue : claimsIdentity.FindFirst(ClaimTypes.Email).Value;
                if (email != User.AnonymousValue)
                {
                    if (UserRepository.Items.Any(u => u.EmailAddress == email))
                    {
                        email = User.AnonymousEmailValue;
                    }
                }
                user = new User
                {
                    DisplayName  = claimsIdentity.FindFirst(ClaimTypes.Name) == null ? User.AnonymousValue : claimsIdentity.FindFirst(ClaimTypes.Name).Value,
                    FirstName    = User.AnonymousValue,
                    LastName     = User.AnonymousValue,
                    EmailAddress = email,
                    UserKey      = userKey,
                    Active       = true
                };
                UserRepository.Add(user);
                RepositoryContainer.Save();
            }
            return(user);
        }
コード例 #8
0
        public void SetFavoriteState(EducationSecurityPrincipal user, int offeringId, bool isFavorite)
        {
            if (user == null)
            {
                throw new ArgumentNullException("user");
            }
            User            userEntity      = user.Identity.User;
            ServiceOffering serviceOffering = ServiceOfferingRepository.Items.Include(u => u.UsersLinkingAsFavorite).SingleOrDefault(s => s.Id == offeringId);

            if (serviceOffering == null || !serviceOffering.IsActive)
            {
                throw new EntityNotFoundException("Service Offering with the specified ID was not found.");
            }
            IPermission permission = PermissionFactory.Current.Create("SetFavoriteServiceOffering", serviceOffering.ProviderId);

            permission.GrantAccess(user);
            if (isFavorite)
            {
                ServiceOfferingRepository.AddLink(serviceOffering, userEntity);
            }
            else
            {
                ServiceOfferingRepository.DeleteLink(serviceOffering, userEntity);
            }
            RepositoryContainer.Save();
        }
コード例 #9
0
        public void Edit(CustomFieldModel viewModel, EducationSecurityPrincipal user)
        {
            if (viewModel == null)
            {
                throw new ArgumentNullException("viewModel");
            }
            if (user == null)
            {
                throw new ArgumentNullException("user");
            }
            var model = CustomFieldRepository.Items.Include(c => c.Categories).SingleOrDefault(c => c.Id == viewModel.Id);

            if (model == null)
            {
                throw new EntityNotFoundException("The requested custom field could not be found");
            }
            if (CustomFieldValueRepository.Items.Any(v => v.CustomFieldId == viewModel.Id) && model.CustomFieldTypeId != viewModel.SelectedFieldTypeId)
            {
                throw new ValidationException(new ValidationResult("Cannot edit field type because data values have already been loaded", new[] { "SelectedFieldTypeId" }), null, viewModel);
            }
            viewModel.CopyTo(model);
            model.LastModifyingUser = user.Identity.User;
            model.LastModifyTime    = DateTime.Now;
            model.Categories        = CustomFieldCategoryRepository.Items.Where(c => viewModel.SelectedCategories.Contains(c.Id)).ToList();
            CustomFieldRepository.Update(model);
            RepositoryContainer.Save();
        }
コード例 #10
0
        public void Create(UserRoleModel viewModel, EducationSecurityPrincipal user)
        {
            if (viewModel == null)
            {
                throw new ArgumentNullException("viewModel");
            }
            if (viewModel.PostedRoles == null)
            {
                throw new ValidationException(new ValidationResult("You must select at least 1 role", new string[] { "PostedRoles" }), null, null);
            }
            var item = UserRepository.Items.
                       Include("UserRoles.Role").
                       Include("UserRoles.Schools").
                       Include("UserRoles.Providers").
                       SingleOrDefault(u => u.Id == viewModel.UserId);

            if (item == null)
            {
                throw new EntityNotFoundException("User does not exist.");
            }
            item.Active   = true;
            item.Comments = viewModel.Comments;
            AddRoles(item, viewModel.PostedRoles, viewModel, user);
            UserRepository.Update(item);
            UserAccessChangeEventRepository.Add(Auditor.CreateAccessChangeEvent(item, user.Identity.User));
            RepositoryContainer.Save();
        }
コード例 #11
0
        public void Create(EducationSecurityPrincipal user, ServiceRequestModel viewModel)
        {
            if (user == null)
            {
                throw new ArgumentNullException("user");
            }
            if (viewModel == null)
            {
                throw new ArgumentNullException("viewModel");
            }
            IPermission permission = PermissionFactory.Current.Create("CreateServiceRequest", StudentRepository.Items.Include(s => s.School.UserRoles).Where(s => viewModel.StudentIds.Contains(s.Id)));

            permission.GrantAccess(user);
            List <int> studentIds = viewModel.StudentIds.ToList();

            foreach (int studentId in studentIds)
            {
                ServiceRequest request = new ServiceRequest();
                viewModel.CopyTo(request);
                request.StudentId      = studentId;
                request.CreatingUser   = user.Identity.User;
                request.CreatingUserId = user.Identity.User.Id;
                CreateFulfillmentDetail(request, user, viewModel);
                ServiceRequestRepository.Add(request);
            }
            RepositoryContainer.Save();
        }
コード例 #12
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);
        }
コード例 #13
0
        public void Edit(UserModel viewModel, UrlHelper helper)
        {
            User user = UserRepository.Items.Where(u => u.Id == viewModel.Id).Single();

            RequestEmailChange(viewModel, helper, user);
            UserRepository.Update(user);
            RepositoryContainer.Save();
        }
コード例 #14
0
 public void AuditLogin(EducationSecurityPrincipal user)
 {
     if (user == null)
     {
         throw new ArgumentNullException("user");
     }
     LoginEventRepository.Add(Auditor.CreateLoginEvent(user.Identity.User));
     RepositoryContainer.Save();
 }
コード例 #15
0
        public void SetStudentOptOutState(int id, bool hasParentalOptOut)
        {
            var student = StudentRepository.Items.SingleOrDefault(s => s.Id == id);

            if (student == null)
            {
                throw new EntityNotFoundException("Student with the specified identifier was not found.");
            }
            student.HasParentalOptOut = hasParentalOptOut;
            StudentRepository.Update(student);
            RepositoryContainer.Save();
        }
コード例 #16
0
        public void Edit(ServiceTypeModel viewModel)
        {
            var updatedServiceType = ServiceTypeRepository.Items.Include("ServiceOfferings.Program.Schools").Include(s => s.Categories).Include("ServiceOfferings.Program").SingleOrDefault(s => s.Id == viewModel.Id);

            if (updatedServiceType == null)
            {
                throw new EntityNotFoundException("Service Type not found.");
            }
            viewModel.CopyTo(updatedServiceType);
            ServiceTypeRepository.Update(updatedServiceType);
            UpdateTypeCategories(viewModel.SelectedCategories, updatedServiceType);
            UpdateServiceTypePrograms(viewModel.SelectedPrograms, updatedServiceType);
            RepositoryContainer.Save();
        }
コード例 #17
0
        public void Delete(int id, EducationSecurityPrincipal user)
        {
            var serviceAttendanceToDelete = ServiceAttendanceRepository.Items.Include(s => s.StudentAssignedOffering).SingleOrDefault(s => s.Id == id);

            if (serviceAttendanceToDelete == null)
            {
                throw new EntityNotFoundException("Specified Service Attendance does not exist");
            }
            IPermission permission = PermissionFactory.Current.Create("DeleteServiceAttendance", serviceAttendanceToDelete.StudentAssignedOffering);

            permission.GrantAccess(user);
            ServiceAttendanceRepository.Remove(serviceAttendanceToDelete);
            RepositoryContainer.Save();
        }
コード例 #18
0
        public void Delete(int id)
        {
            var customFieldToDelete = CustomFieldRepository.Items.SingleOrDefault(c => c.Id == id);

            if (customFieldToDelete == null)
            {
                throw new EntityNotFoundException("Specified custom field does not exist");
            }
            if (CustomFieldValueRepository.Items.Any(v => v.CustomFieldId == id))
            {
                throw new ValidationException(new ValidationResult("Custom field has associated values and cannot be deleted"), null, id);
            }
            CustomFieldRepository.Remove(customFieldToDelete);
            RepositoryContainer.Save();
        }
コード例 #19
0
        public void SetPrivacy(EducationSecurityPrincipal user, int typeId, bool isPrivate)
        {
            IPermission permission = PermissionFactory.Current.Create("SetServiceTypePrivacy");

            permission.GrantAccess(user);
            ServiceType serviceType = ServiceTypeRepository.Items.SingleOrDefault(s => s.Id == typeId);

            if (serviceType == null)
            {
                throw new EntityNotFoundException("Service Type with the specified ID was not found.");
            }
            serviceType.IsPrivate = isPrivate;
            ServiceTypeRepository.Update(serviceType);
            RepositoryContainer.Save();
        }
コード例 #20
0
        public void Edit(EducationSecurityPrincipal user, StudentServiceOfferingScheduleModel viewModel)
        {
            var existing = StudentAssignedOfferingRepository.Items.
                           Include(s => s.ServiceOffering.ServiceType).
                           SingleOrDefault(a => a.Id == viewModel.Id);

            if (existing == null || !existing.IsActive)
            {
                throw new EntityNotFoundException("Assigned offering not found");
            }
            IPermission permission = PermissionFactory.Current.Create("EditScheduledOffering", existing);

            permission.GrantAccess(user);
            EditScheduledOffering(viewModel, existing, user);
            RepositoryContainer.Save();
        }
コード例 #21
0
        public void RemoveProvider(RemoveApprovedProviderModel viewModel)
        {
            var student = StudentRepository.Items.Include(s => s.ApprovedProviders).SingleOrDefault(s => s.Id == viewModel.StudentId);

            if (student == null)
            {
                throw new EntityNotFoundException("Student with specified identifier was not found.");
            }
            var provider = student.ApprovedProviders.SingleOrDefault(p => p.Id == viewModel.ProviderId);

            if (provider == null)
            {
                throw new EntityNotFoundException("Provider could not be found associated with specified student.");
            }
            StudentRepository.DeleteLink(student, provider);
            RepositoryContainer.Save();
        }
コード例 #22
0
        private UploadWizardCompleteModel ProcessDataFile(EducationSecurityPrincipal user, UploadWizardModel model, int studentIdColumn, Stream stream)
        {
            var dataTable     = DataFileParser.ExtractValues(stream, '\t', model.NumberOfFields, model.FieldNameRow, model.FirstDataRow, model.LastDataRow);
            var completeModel = CheckUploadErrors(user, model, dataTable);

            if (completeModel.RowErrors.Count() > 0)
            {
                return(completeModel);
            }
            CustomDataOrigin origin = CreateCustomDataOrigin(user, model);
            Dictionary <int, CustomField> customFieldsDicitonary = CreateCustomFieldsDictionary(model);

            ProcessRows(user, studentIdColumn, dataTable, completeModel, origin, customFieldsDicitonary);
            RepositoryContainer.Save();
            HandleRowErrors(user, completeModel, customFieldsDicitonary);
            return(completeModel);
        }
コード例 #23
0
        public void UpdateActiveStatus(int id, bool activeStatus, EducationSecurityPrincipal user)
        {
            var item = UserRepository.Items.
                       Include("UserRoles.Role").
                       Include("UserRoles.Schools").
                       Include("UserRoles.Providers").
                       SingleOrDefault(u => u.Id == id);

            if (item == null)
            {
                throw new EntityNotFoundException("User does not exist");
            }
            item.Active = activeStatus;
            UserRepository.Update(item);
            UserAccessChangeEventRepository.Add(Auditor.CreateAccessChangeEvent(item, user.Identity.User));
            RepositoryContainer.Save();
        }
コード例 #24
0
        public void Delete(EducationSecurityPrincipal user, int scheduledOfferingId)
        {
            StudentAssignedOffering assignment = StudentAssignedOfferingRepository.Items.
                                                 Include(s => s.ServiceOffering.ServiceType).
                                                 Include(s => s.Attendances).
                                                 Include(s => s.Student.School).
                                                 SingleOrDefault(s => s.Id == scheduledOfferingId);

            if (assignment == null || !assignment.IsActive)
            {
                throw new EntityNotFoundException("Requested assignment was not found");
            }
            IPermission permission = PermissionFactory.Current.Create("DeleteScheduledOffering", assignment);

            permission.GrantAccess(user);
            assignment.IsActive = false;
            StudentAssignedOfferingRepository.Update(assignment);
            RepositoryContainer.Save();
        }
コード例 #25
0
        public void Create(EducationSecurityPrincipal user, ProviderModel viewModel)
        {
            if (viewModel == null)
            {
                throw new ArgumentNullException("viewModel");
            }
            var item = ProviderRepository.Items.Include("ServiceOfferings.Program.Schools").SingleOrDefault(p => p.Name == viewModel.Name && !p.IsActive);

            if (item == null)
            {
                item = new Provider();
                ProviderRepository.Add(item);
            }
            viewModel.Id  = item.Id;
            item.IsActive = true;
            viewModel.CopyTo(item);
            UpdateProviderPrograms(viewModel.SelectedPrograms, item);
            RepositoryContainer.Save();
        }
コード例 #26
0
        public ConfirmEmailModel GenerateConfirmEmailViewModel(Guid confirmationIdentifier)
        {
            ConfirmEmailModel viewModel;
            User user = UserRepository.Items.SingleOrDefault(u => u.ConfirmationGuid == confirmationIdentifier);

            if (user == null || UserRepository.Items.Any(u => u.Id != user.Id && u.EmailAddress == user.PendingEmail))
            {
                return(new ConfirmEmailModel {
                    Success = false
                });
            }
            viewModel = new ConfirmEmailModel {
                Success = true, UserDisplayName = user.DisplayName, UserEmailAddress = user.PendingEmail
            };
            EmailConfirmationManager.Process(user);
            UserRepository.Update(user);
            RepositoryContainer.Save();
            return(viewModel);
        }
コード例 #27
0
        public void Edit(EducationSecurityPrincipal user, ServiceRequestModel viewModel)
        {
            if (user == null)
            {
                throw new ArgumentNullException("user");
            }
            if (viewModel == null)
            {
                throw new ArgumentNullException("viewModel");
            }
            var updatedServiceRequest = ServiceRequestRepository.Items.Include(s => s.ServiceType).
                                        Include(s => s.FulfillmentDetails).
                                        Include(s => s.Student.ApprovedProviders).
                                        Include(s => s.Student.School.UserRoles).
                                        Include("Student.StudentAssignedOfferings.ServiceOffering.Provider").
                                        SingleOrDefault(s => s.Id == viewModel.Id);

            if (updatedServiceRequest == null)
            {
                throw new EntityNotFoundException("Cannot find specified service request.");
            }
            IPermission permission = PermissionFactory.Current.Create("EditRequest", updatedServiceRequest);

            permission.GrantAccess(user);
            var currentServiceRequestFulfillment = updatedServiceRequest.FulfillmentDetails.OrderByDescending(f => f.CreateTime).FirstOrDefault();
            int currentStatusId   = currentServiceRequestFulfillment.FulfillmentStatusId;
            int?currentOfferingId = currentServiceRequestFulfillment.FulfilledById;

            viewModel.CopyTo(updatedServiceRequest);
            if (currentStatusId != viewModel.SelectedStatusId)
            {
                CreateFulfillmentDetail(updatedServiceRequest, user, viewModel);
            }
            else if (currentOfferingId != viewModel.SelectedAssignedOfferingId)
            {
                UpdateCurrentFulfillmentDetail(updatedServiceRequest, viewModel);
            }
            updatedServiceRequest.LastModifyingUser = user.Identity.User;
            updatedServiceRequest.LastModifyTime    = DateTime.Now;
            ServiceRequestRepository.Update(updatedServiceRequest);
            RepositoryContainer.Save();
        }
コード例 #28
0
        public void UpdateActiveStatus(IEnumerable <int> ids, bool activeStatus, EducationSecurityPrincipal user)
        {
            var items = UserRepository.Items.
                        Include("UserRoles.Role").
                        Include("UserRoles.Schools").
                        Include("UserRoles.Providers").
                        Where(u => ids.Contains(u.Id)).ToList();

            if (items.Count == 0)
            {
                throw new EntityNotFoundException("Users do not exist");
            }
            foreach (var item in items)
            {
                item.Active = activeStatus;
                UserRepository.Update(item);
                UserAccessChangeEventRepository.Add(Auditor.CreateAccessChangeEvent(item, user.Identity.User));
            }
            RepositoryContainer.Save();
        }
コード例 #29
0
        public void Delete(int typeId)
        {
            var serviceTypeToDelete = ServiceTypeRepository.Items.Include("ServiceOfferings.Program.Schools").SingleOrDefault(s => s.Id == typeId);

            if (serviceTypeToDelete == null)
            {
                throw new EntityNotFoundException("Service Type not found.");
            }
            if (StudentAssignedOfferingRepository.Items.
                Any(s => s.ServiceOffering.ServiceTypeId == typeId && s.IsActive))
            {
                throw new ValidationException(new ValidationResult("Service Type associated to active Student Assigned Offerings", new string[] { "Id" }), null, typeId);
            }
            serviceTypeToDelete.IsActive = false;
            UpdateServiceTypePrograms(Enumerable.Empty <int>(), serviceTypeToDelete);
            foreach (var toDeactivate in serviceTypeToDelete.ServiceOfferings)
            {
                toDeactivate.IsActive = false;
            }
            RepositoryContainer.Save();
        }
コード例 #30
0
        public void Log(EulaModel viewModel, EducationSecurityPrincipal user)
        {
            if (viewModel == null)
            {
                throw new ArgumentNullException("viewModel");
            }
            if (user == null)
            {
                throw new ArgumentNullException("user");
            }
            EulaAcceptance acceptance = new EulaAcceptance
            {
                EulaAgreementId = viewModel.Id,
                CreatingUserId  = user.Identity.User.Id,
                CreateTime      = DateTime.Now
            };

            user.Identity.User.EulaAcceptances.Add(acceptance);
            UserRepository.Update(user.Identity.User);
            RepositoryContainer.Save();
        }