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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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); }
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(); }
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(); }
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(); }
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(); }
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); }
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(); }
public void AuditLogin(EducationSecurityPrincipal user) { if (user == null) { throw new ArgumentNullException("user"); } LoginEventRepository.Add(Auditor.CreateLoginEvent(user.Identity.User)); RepositoryContainer.Save(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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); }
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(); }
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(); }
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(); }
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); }
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(); }
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(); }
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(); }
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(); }