Example #1
0
        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);
        }
Example #2
0
        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);
            }
        }
Example #3
0
        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);
        }
Example #4
0
        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);
            }
        }
Example #5
0
        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();
                }
            }
        }
Example #6
0
        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);
        }
Example #7
0
        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
                });
            }
        }
Example #8
0
        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();
                }
            }
        }
Example #9
0
 public List <University> GetUniversitiesList()
 {
     using (var db = new ErasmusDbContext())
     {
         var universities = db.Universities.ToList();
         return(universities);
     }
 }
Example #10
0
 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);
     }
 }
Example #11
0
 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());
     }
 }
Example #13
0
 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);
         }
     }
 }
Example #14
0
        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);
        }
Example #15
0
 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);
     }
 }
Example #16
0
        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);
        }
Example #17
0
        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);
        }
Example #18
0
        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);
        }
Example #19
0
        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);
        }
Example #20
0
        /// <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);
            }
        }
Example #21
0
        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);
        }
Example #22
0
        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);
        }
Example #23
0
        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();
            }
        }
Example #24
0
        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);
        }
Example #25
0
        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);
        }
Example #26
0
 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();
         }
     }
 }
Example #27
0
 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();
     }
 }
Example #28
0
        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);
        }
Example #29
0
        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());
            }
        }
Example #30
0
        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());
            }
        }