internal object GetUserPermissionsModel(string userId) { var model = new List <UserListViewModel>(); using (var db = new ErasmusDbContext()) { var store = new UserStore <ErasmusUser>(db); var manager = new UserManager <ErasmusUser>(store); var currentUniAdmin = manager.Users.SingleOrDefault(x => x.Id == userId); if (currentUniAdmin == null) { throw new FormValidationException("Invalid user"); } var thisUserUniversityIds = db.UserPermissions.Where(x => x.UserId == userId).Select(x => x.UniversityId).ToList(); var users = db.UserPermissions.Where(x => thisUserUniversityIds.Contains(x.UniversityId)) .Select(x => x.User).Where(x => x.Id != userId).ToList(); if (users.Any()) { model.AddRange(users.Select(x => new UserListViewModel() { Email = x.Email, UserId = x.Id, Role = manager.GetRoles(x.Id).FirstOrDefault() })); } } return(model); }
public void UpdateUser(UserViewModel model, string roleName) { using (var db = new ErasmusDbContext()) { var store = new UserStore <ErasmusUser>(db); var manager = new UserManager <ErasmusUser>(store); var user = manager.FindById(model.UserId); if (user == null) { throw new FormValidationException( new Dictionary <string, string>() { { "UserId", "User doesn't exists." } } ); } model.UniversityId = db.Universities.SingleOrDefault(x => x.Id == model.UniversityId)?.Id; user.Birthday = model.Birthday; user.FirstName = model.FirstName; user.LastName = model.LastName; user.PersonalIdCode = model.PersonalCode; user.StudentId = model.StudentId; user.UniversityId = model.UniversityId; user.PhoneNumber = model.Telephone; user.Email = model.Email; user.UserName = model.Username; manager.Update(user); } }
public UserPermissionsViewModel GetUserPermissionsForUser(string userId) { var model = new UserPermissionsViewModel(); using (var db = new ErasmusDbContext()) { var store = new UserStore <ErasmusUser>(db); var user = store.Users.SingleOrDefault(x => x.Id == userId); if (user == null) { return(null); } var manager = new UserManager <ErasmusUser>(store); model.UserId = user.Id; model.Email = user.Email; model.Role = manager.GetRoles(user.Id).FirstOrDefault(); model.Permissions = db.UserPermissions.Where(x => x.UserId == user.Id) .Select(x => new PermissionViewModel() { Id = x.Id, UniversityId = x.UniversityId, UniversityName = x.University.Name, FacultyId = x.FacultyId, FacultyName = x.Faculty == null ? "" : x.Faculty.Name }).ToList(); model.UniversitiesList = new SelectList( db.Universities.Select(x => new SelectListItem() { Text = x.Name, Value = x.Id.ToString() }) .ToList(), "Value", "Text"); } return(model); }
internal int CreateUniversity(NewUniversityViewModel model, string userId) { using (var db = new ErasmusDbContext()) { var user = db.Users.SingleOrDefault(x => x.Id == userId); var uni = db.Universities.Add(new University() { Name = model.Name, Address = model.Address, City = model.City, Country = model.Country, ErasmusCode = model.ErasmusCode }); db.SaveChanges(); user.UniversityId = uni.Id; db.SaveChanges(); db.UserPermissions.Add(new UserPermissions() { UserId = userId, UniversityId = uni.Id }); db.SaveChanges(); return(uni.Id); } }
internal void CreateNewFaculty(NewFacultyViewModel model, int?uniId) { using (var db = new ErasmusDbContext()) { if (model.Id.HasValue) { //Edit functionality var faculty = db.Faculties.SingleOrDefault(x => x.Id == model.Id); if (faculty == null) { throw new FormValidationException("Invalid faculty provided"); } var fieldsOfStudy = new List <FieldOfStudy>(); if (model.SelectedFos != null && model.SelectedFos.Any()) { fieldsOfStudy = db.FieldsOfStudy.Where(x => model.SelectedFos.Contains(x.Id)).ToList(); if (fieldsOfStudy.Count != model.SelectedFos.Count) { throw new ValidationException("Some fields of study were not found."); } } var oldFos = faculty.StudyFields; foreach (var fos in oldFos) { //Reset fos if removed fos.FacultyId = null; } db.SaveChanges(); faculty.Name = model.Name; faculty.StudyFields = fieldsOfStudy; db.SaveChanges(); return; } else { //New functionality var fieldsOfStudy = new List <FieldOfStudy>(); if (model.SelectedFos != null && model.SelectedFos.Any()) { fieldsOfStudy = db.FieldsOfStudy.Where(x => model.SelectedFos.Contains(x.Id)).ToList(); if (fieldsOfStudy.Count != model.SelectedFos.Count) { throw new ValidationException("Some fields of study were not found."); } } db.Faculties.Add(new Faculty() { Name = model.Name, StudyFields = fieldsOfStudy, UniversityId = uniId }); db.SaveChanges(); } } }
internal StudentAgreementDetailsView GetStudentAgreementDetailsView(string userId, int id) { var model = new StudentAgreementDetailsView(); using (var db = new ErasmusDbContext()) { var agreement = db.Agreements.SingleOrDefault(x => x.Id == id); if (agreement == null || agreement.ErasmusUserId != userId) { return(null); } model.Student = agreement.ErasmusUser; model.LanguageLevel = agreement.LanguageLevel; model.SourceUniversity = agreement.SourceUniversity; model.Semester = agreement.Semester; model.EndDate = agreement.EndDate; model.TargetUniversity = agreement.TargetUniversity; model.StartDate = agreement.StartDate; model.Language = agreement.Language; model.State = Enum.GetName(typeof(AgreementState), agreement.State); model.StoragePath = agreement.StoragePath; model.FinancingSource = agreement.FinancingSource; model.Scholarship = agreement.Scholarship; model.TargetStudySubjects = agreement.TargetSubjects.ToList(); model.TargetFaculty = agreement.TargetFaculty; model.SourceFieldOfStudy = agreement.SourceFieldOfStudy; model.TargetFieldOfStudy = agreement.TargetFieldOfStudy; model.SourceStudySubjects = agreement.SourceSubjects.ToList(); model.SourceFaculty = agreement.SourceFaculty; } return(model); }
public UserViewModel NewGetUserViewModelById(string userId, string roleName) { using (var db = new ErasmusDbContext()) { var store = new UserStore <ErasmusUser>(db); var manager = new UserManager <ErasmusUser>(store); var user = manager.FindById(userId); if (user == null) { return(null); } if (!manager.IsInRole(userId, roleName)) { return(null); } return(new UserViewModel() { Email = user.Email, LastName = user.LastName, Username = user.UserName, Birthday = user.Birthday, FirstName = user.FirstName, PersonalCode = user.PersonalIdCode, Telephone = user.PhoneNumber, StudentId = user.StudentId, UniversityId = user.UniversityId, UserId = user.Id }); } }
internal void CreateNewFieldOfStudy(NewFieldOfStudyViewModel model, int?uniId) { using (var db = new ErasmusDbContext()) { if (model.Id.HasValue) { //Edit var fos = db.FieldsOfStudy.SingleOrDefault(x => x.Id == model.Id && x.UniversityId == uniId); if (fos == null) { throw new FormValidationException("Invalid field of study"); } var studySubjects = new List <StudySubjects>(); if (model.SelectedStudySubjects != null && model.SelectedStudySubjects.Any()) { studySubjects = db.StudySubjects.Where(x => model.SelectedStudySubjects.Contains(x.Id)).ToList(); if (studySubjects.Count != model.SelectedStudySubjects.Count) { throw new ValidationException("Some study subjects were not found."); } } foreach (var subject in fos.StudySubjects) { subject.FieldOfStudyId = null; } db.SaveChanges(); fos.Degree = model.Degree; fos.Name = model.Name; fos.StudySubjects = studySubjects; db.SaveChanges(); } else { //New var studySubjects = new List <StudySubjects>(); if (model.SelectedStudySubjects != null && model.SelectedStudySubjects.Any()) { studySubjects = db.StudySubjects.Where(x => model.SelectedStudySubjects.Contains(x.Id)).ToList(); if (studySubjects.Count != model.SelectedStudySubjects.Count) { throw new ValidationException("Some study subjects were not found."); } } db.FieldsOfStudy.Add(new FieldOfStudy() { Name = model.Name, Degree = model.Degree, StudySubjects = studySubjects, UniversityId = uniId }); db.SaveChanges(); } } }
public List <University> GetUniversitiesList() { using (var db = new ErasmusDbContext()) { var universities = db.Universities.ToList(); return(universities); } }
public void CreateNewUniAdmin(UserViewModel user, string role) { using (var db = new ErasmusDbContext()) { var store = new UserStore <ErasmusUser>(db); var manager = new UserManager <ErasmusUser>(store); user.UniversityId = null; CreateUser(manager, user, role); } }
public List <FacultyItem> GetFaultiesByUniversityId(int universityId) { using (var db = new ErasmusDbContext()) { var faculties = db.Faculties.Where(x => x.UniversityId == universityId).ToList(); return(faculties.Select(x => new FacultyItem() { Id = x.Id, Name = x.Name }).ToList()); } }
public static ErasmusUser FindByMailOrId(string userId) { using (var db = new ErasmusDbContext()) { var users = db.Users.Where(x => x.Email == userId || x.PersonalIdCode == userId).ToList(); if (users.Count != 1) { return(null); } return(users.SingleOrDefault()); } }
public void DeleteUser(string userId, string roleName) { using (var db = new ErasmusDbContext()) { var store = new UserStore <ErasmusUser>(db); var manager = new UserManager <ErasmusUser>(store); var user = manager.FindById(userId); if (user != null && manager.IsInRole(userId, roleName)) { manager.Delete(user); } } }
public UniversityAgreementViewModel GetUniversityAgreementViewModel() { var model = new UniversityAgreementViewModel(); using (var db = new ErasmusDbContext()) { model.SourceUniversityList = new SelectList(db.Universities.Select(x => new KeyValueIntStr() { Key = x.Id, Value = x.Name }).ToList(), "Key", "Value"); } return(model); }
public void CreateNewUser(NewUserViewModel user, string role, string userId) { using (var db = new ErasmusDbContext()) { var currentUser = db.Users.SingleOrDefault(x => x.Id == userId); if (currentUser == null || currentUser.UniversityId == null) { throw new FormValidationException("Your user was not found or you are not assigned to a university."); } var store = new UserStore <ErasmusUser>(db); var manager = new UserManager <ErasmusUser>(store); user.UniversityId = currentUser.UniversityId; CreateUser(manager, user, role); } }
public NewUniversityViewModel GetNewUniversityViewModel() { var model = new NewUniversityViewModel(); using (var db = new ErasmusDbContext()) { model.Faculties = new SelectList(db.Faculties.Where(x => x.UniversityId == null).ToList().Select(x => new KeyValueIntStr() { Key = x.Id, Value = x.Name }), "Key", "Value"); } return(model); }
public FacultiesViewModel GetFacultiesViewModel(int?uniId) { var model = new FacultiesViewModel(); using (var db = new ErasmusDbContext()) { model.Faculties = db.Faculties.Where(x => x.UniversityId == uniId).ToList().Select(x => new FacultyView() { Name = x.Name, Id = x.Id, UniversityName = x.University == null ? "Not assigned" : x.University.Name }).ToList(); } return(model); }
public NewFacultyViewModel GetNewFacultyViewModel(int?uniId) { var model = new NewFacultyViewModel(); using (var db = new ErasmusDbContext()) { model.StudyFields = new MultiSelectList(db.FieldsOfStudy.Where(x => x.UniversityId == uniId).ToList().Select(x => new KeyValueIntStr() { Key = x.Id, Value = x.Name }), "Key", "Value"); } return(model); }
public NewFieldOfStudyViewModel GetNewFieldOfStudyViewModel() { var model = new NewFieldOfStudyViewModel(); using (var db = new ErasmusDbContext()) { model.StudySubjects = new SelectList(db.StudySubjects.Where(x => x.FieldOfStudyId == null).ToList() .Select(x => new KeyValueIntStr() { Key = x.Id, Value = x.Name }), "Key", "Value"); } return(model); }
/// <summary> /// Security hole, never expose returned identity directly to view. /// </summary> /// <param name="roleName"></param> /// <returns></returns> public List <ErasmusUser> GetUsersListByRole(string roleName) { var model = new NewFacultyViewModel(); using (var db = new ErasmusDbContext()) { var role = db.Roles.SingleOrDefault(x => x.Name == roleName); if (role == null) { return(new List <ErasmusUser>()); } var userIds = role.Users.Select(x => x.UserId).ToList(); var users = db.Users.Where(x => userIds.Contains(x.Id)).ToList(); return(users); } }
public UniversityAgreementViewModel GetUniversityAgreementViewModel(string userId) { var model = new UniversityAgreementViewModel(); using (var db = new ErasmusDbContext()) { var user = db.Users.SingleOrDefault(x => x.Id == userId); model.SourceUniversityName = user.University.Name; model.TargetUniversityList = new SelectList(db.Universities.Where(x => x.Id != user.UniversityId).Select(x => new KeyValueIntStr() { Key = x.Id, Value = x.Name }).ToList(), "Key", "Value"); } return(model); }
public UniversityAgreementsViewModel GetUniversityAgreements() { var model = new UniversityAgreementsViewModel(); using (var db = new ErasmusDbContext()) { model.UniversityAgreements.AddRange(db.UniversityAgreements.ToList().Select(x => new UniversityAgreementsView() { Id = x.Id, SourceUniversity = x.SourceUniversity.Name, TargetUniversity = x.TargetUniversity.Name })); } return(model); }
public void CreateStudySubject(NewStudySubjectViewModel model) { using (var db = new ErasmusDbContext()) { db.StudySubjects.Add(new StudySubjects() { Credits = model.Credits, Evaluation = model.Evaluation, Language = model.Language, Name = model.Name, Semester = model.Semester }); db.SaveChanges(); } }
public FieldsOfStudiesViewModel GetFieldsOfStudiesViewModel() { var model = new FieldsOfStudiesViewModel(); using (var db = new ErasmusDbContext()) { model.FieldsOfStudy = db.FieldsOfStudy.ToList().Select(x => new FieldOfStudyView() { Name = x.Name, Id = x.Id, Degree = x.Degree, FacultyName = x.Faculty == null ? "Not assigned" : x.Faculty.Name }).ToList(); } return(model); }
public UniversityAgreementsViewModel GetUniversityAgreements(string userId) { var model = new UniversityAgreementsViewModel(); using (var db = new ErasmusDbContext()) { var user = db.Users.SingleOrDefault(x => x.Id == userId); model.UniversityAgreements.AddRange(db.UniversityAgreements.Where(x => x.SourceUniversityId == user.UniversityId).ToList().Select(x => new UniversityAgreementsView() { Id = x.Id, SourceUniversity = x.SourceUniversity.Name, TargetUniversity = x.TargetUniversity.Name })); } return(model); }
public void SaveNewUniversityAgreement(string userId, int targetId) { using (var db = new ErasmusDbContext()) { var user = db.Users.SingleOrDefault(x => x.Id == userId); var targetUni = db.Universities.SingleOrDefault(x => x.Id == targetId); if (user.University != null && targetUni != null) { db.UniversityAgreements.Add(new UniversityAgreements() { SourceUniversityId = user.UniversityId.Value, TargetUniversityId = targetUni.Id }); db.SaveChanges(); } } }
public void DeleteAgreement(string userId, int id) { using (var db = new ErasmusDbContext()) { var agreement = db.Agreements.SingleOrDefault(x => x.Id == id); if (agreement == null) { throw new FormValidationException("Agreement not found"); } if (agreement.ErasmusUserId != userId) { throw new FormValidationException("Not allowed to change state for this agreement"); } db.Agreements.Remove(agreement); db.SaveChanges(); } }
public DrillDownViewModel GetDrillDownModel() { var model = new DrillDownViewModel(); using (var db = new ErasmusDbContext()) { var universities = db.Universities.ToList(); var countries = universities.Select(x => x.Country).Distinct().ToList(); foreach (var country in countries) { var countryDataList = new CountryDataList() { CountryName = country, Universities = universities.Where(x => x.Country == country).Select(x => new UniversityDataList() { UniversityName = x.Name, UniversityId = x.Id, }).ToList() }; //Will become a bottleneck for performance here, consider refactoring //TODO REFACTOR foreach (var university in countryDataList.Universities) { var uniInList = countryDataList.Universities.Single(x => x.UniversityId == university.UniversityId); var agreementsIn = db.Agreements.Where(x => x.TargetUniversityId == university.UniversityId).Include(x => x.ErasmusUser).ToList(); var agreementsOut = db.Agreements.Where(x => x.SourceUniversityId == university.UniversityId).Include(x => x.ErasmusUser).ToList(); uniInList.StudentsIn = agreementsIn.Select(x => new StudentInfoData() { LastName = x.ErasmusUser.LastName, FirstName = x.ErasmusUser.FirstName }).ToList(); uniInList.StudentsOut = agreementsOut.Select(x => new StudentInfoData() { LastName = x.ErasmusUser.LastName, FirstName = x.ErasmusUser.FirstName }).ToList(); uniInList.CountIn = uniInList.StudentsIn.Count; uniInList.CountOut = uniInList.StudentsOut.Count; } model.Countries.Add(countryDataList); } } return(model); }
public object GetFacultyDataByUniversityId(int universityId) { using (var db = new ErasmusDbContext()) { //Guard against unexisting/false tries var originalUniversity = db.Universities.SingleOrDefault(x => x.Id == universityId); if (originalUniversity == null) { return(null); } return(originalUniversity.Faculties.Select(x => new KeyValueIntStr() { Key = x.Id, Value = x.Name }).ToList()); } }
public object GetStudySubjectsByFosId(int fosId) { using (var db = new ErasmusDbContext()) { //Guard against unexisting/false tries var fos = db.FieldsOfStudy.SingleOrDefault(x => x.Id == fosId); if (fos == null) { return(null); } return(fos.StudySubjects.Select(x => new { Key = x.Id, Value = x.Name, Credits = x.Credits }).ToList()); } }