Exemplo n.º 1
0
        public ActionResult Delete(SalaryReviewAnalysis a, SalaryReviewAnalysisSearchParamsModel salaryReviewAnalysisSearchParamsModel)
        {
            var referenceNumber = a.ReferenceNumber;
            var salaryReviewAnalysisToDelete = _salaryReviewAnalysisRepository.Queryable
                                               .Where(x => x.ReferenceNumber == referenceNumber)
                                               .FirstOrDefault();

            if (salaryReviewAnalysisToDelete == null)
            {
                return(RedirectToAction("Index"));
            }

            _salaryReviewAnalysisRepository.Remove(salaryReviewAnalysisToDelete);

            Message = "Salary Review Analysis (ref #: " + referenceNumber + ") Successfully Removed";

            // This will return to the main Salary Review Analysis index page displaying the default search and sort order,
            // meaning display the page in the "newly visited" state as if the user was visiting it for the first time.
            return(RedirectToAction("Index"));

            // This will return to the main Salary Review Analysis index page displaying the
            // same search and TODO: add sort order and sort property
            // as the user selected prior to the delete:
            // Note that if the user deleted the only analysis listed in the search results, that the page will now display the "No Results Found" message.
            //return
            //    this.RedirectToAction<SalaryReviewAnalysisController>(
            //        b =>
            //        b.Index(salaryReviewAnalysisSearchParamsModel.SelectedReferenceNumber,
            //                salaryReviewAnalysisSearchParamsModel.SelectedEmployee.Id,
            //                salaryReviewAnalysisSearchParamsModel.SelectedUser.Id,
            //                salaryReviewAnalysisSearchParamsModel.CreationDateString));
        }
Exemplo n.º 2
0
        //
        // GET: /SalaryReviewAnalysis/
        public ActionResult Index(string selectedReferenceNumber, string selectedEmployee, int?selectedUser, string creationDateString)
        {
            var salaryReviewAnalysisSearchParamsModel = new SalaryReviewAnalysisSearchParamsModel
            {
                SelectedReferenceNumber = selectedReferenceNumber,
                SelectedEmployeeId      = selectedEmployee,
                SelectedUserId          = selectedUser,
                CreationDateString      =
                    (String.IsNullOrEmpty(creationDateString)
                                                                         ? DateTime.Now.ToString("MM/dd/yyyy")
                                                                         : creationDateString)
            };
            var salaryReviewAnalysisModel = SalaryReviewAnalysisViewModel.Create(Repository, IsDepartmentUser, Esra.Core.Domain.User.GetByLoginId(Repository, CurrentUser.Identity.Name), salaryReviewAnalysisSearchParamsModel);

            return(View(salaryReviewAnalysisModel));
        }
Exemplo n.º 3
0
        public static SalaryReviewAnalysisViewModel Create(IRepository repository, bool isDepartmentUser, User user, SalaryReviewAnalysisSearchParamsModel salaryReviewAnalysisSearchParamsModel)
        {
            Check.Require(repository != null, "Repository must be supplied");

            //bool isDepartmentUserBool =
            // Boolean.TryParse(isDepartmentUser, out isDepartmentUserBool) ? isDepartmentUserBool : false;

            var viewModel = new SalaryReviewAnalysisViewModel
                                {
                                    SalaryReviewAnalysisSearchParamsModel =
                                        SalaryReviewAnalysisSearchParamsModel.Create(repository,
                                                                                     salaryReviewAnalysisSearchParamsModel),
                                    SelectedEmployee = salaryReviewAnalysisSearchParamsModel.SelectedEmployee,
                                    SelectedUser = salaryReviewAnalysisSearchParamsModel.SelectedUser,
                                    SelectedReferenceNumber =
                                        salaryReviewAnalysisSearchParamsModel.SelectedReferenceNumber,
                                    CreationDateString = salaryReviewAnalysisSearchParamsModel.CreationDateString,
                                    SalaryReviewAnalysisSearchExpression =
                                        salaryReviewAnalysisSearchParamsModel.SalaryReviewAnalysisSearchExpression,

                                    SalaryReviewAnalysis = new SalaryReviewAnalysis(),

                                    IsDepartmentUser = isDepartmentUser,

                                    FilteredEmployees = new List<Employee>(),

                                    FilteredUsers = User.GetAll(repository, user, isDepartmentUser),

                                    ProposedTitles = repository.OfType<Title>()
                                    .Queryable
                                    .OrderBy(t => t.TitleCode)
                                    .ToList()
                                };

            var allSchoolDepartments = Department.GetAllForUser(repository, user, false, "Name", true);
            IList<String> usersDepartmentsList;

            if (isDepartmentUser)
            {
                var usersUnits = user.Units.Select(u => u.PPSCode).ToArray();

                usersDepartmentsList = allSchoolDepartments
                    .Where(x => usersUnits.Contains(x.Id))
                    .Select(u => u.Id)
                    .ToArray();
            }
            else
            {
                usersDepartmentsList = allSchoolDepartments.Select(x => x.Id).ToArray();
            }

            // This will return a list of employees with their IsDepartmentEmployee set appropriately if isDepartmentUser == true.
            var allSchoolEmployees = Employee.GetAllForEmployeeTable(repository, user, isDepartmentUser, "FullName", true, null, null, allSchoolDepartments.Select(x => x.Id).ToArray());

            // Assign only those with IsDepartmentEmployee == true to Employees select list or ALL school employees is non-department user, i.e. deans office.
            viewModel.FilteredEmployees = isDepartmentUser ? allSchoolEmployees.Where(x => x.IsDepartmentEmployee == true).ToList() : allSchoolEmployees;

            //------------------------------------------------------------------------------------
            // viewModel.FilteredSalaryReviewAnalysis should only contain reference numbers for
            // Analysis that are visible to the User, meaning created by someone in the user's units:

            // Returns a list of reviewers that are within the Catbert user's units:
            var reviewerNames = viewModel.FilteredUsers.Select(x => x.FullName).ToArray();

            // This query will get those salary review analysis created by anyone in the filtered users list,
            // but we probably want a list of those salary review analysis created that have an originating
            // department in the usersDepartmentsList
            //viewModel.FilteredSalaryReviewAnalysis = repository.OfType<SalaryReviewAnalysis>()
            //    .Queryable
            //    .Where(x => reviewerNames.Contains(x.InitiatedByReviewerName))
            //    .OrderBy(y => y.ReferenceNumber)
            //    .ToList();

            // This query will get those salary review analysis created that have an originating
            // department in the usersDepartmentsList
            viewModel.FilteredSalaryReviewAnalysis = repository.OfType<SalaryReviewAnalysis>()
                .Queryable
                .Where(x => usersDepartmentsList.Contains(x.OriginatingDepartment.Id))
                .OrderBy(y => y.ReferenceNumber)
                .ToList();

            //------------------------------------------------------------------------------------
            var searchParamsModel = viewModel.SalaryReviewAnalysisSearchParamsModel;

            if (searchParamsModel.SalaryReviewAnalysisSearchExpression == null
               || (searchParamsModel.HasCreateDateOnly && !searchParamsModel.HasCreateDate))
            {
                // Load all based on viewModel.FilteredSalaryReviewAnalysis reference numbers:
                var referenceNumbers = viewModel.FilteredSalaryReviewAnalysis.Select(x => x.ReferenceNumber).ToArray();

                //TODO: Figure out how to make this a Linq query that does an inner join instead calling the db SELECT N+1 times:  FIXED by adding .Fetch(y => y.Employee) and container.Register(Component.For<IQueryExtensionProvider>().ImplementedBy<NHibernateQueryExtensionProvider>().Named("queryExtensions")); to the ComponentRegstrar class.

                viewModel.SalaryReviewAnalysisResults = repository.OfType<SalaryReviewAnalysis>()
                    .Queryable.Fetch(y => y.Employee)
                    .Where(x => referenceNumbers.Contains(x.ReferenceNumber))
                    .OrderBy(t => t.Employee.FullName)
                    .ToList();
            }
            else
            {
                // Load all based on search criteria:
                viewModel.SalaryReviewAnalysisResults = repository.OfType<SalaryReviewAnalysis>()
                                                            .Queryable.Fetch(x => x.Employee)
                                                            .Where(viewModel.SalaryReviewAnalysisSearchParamsModel.SalaryReviewAnalysisSearchExpression)
                                                            .OrderBy(t => t.Employee.FullName)
                                                            .ToList();
            }

            return viewModel;
        }
Exemplo n.º 4
0
 public static SalaryReviewAnalysisViewModel Create(IRepository repository, bool isDepartmentUser, SalaryReviewAnalysisSearchParamsModel salaryReviewAnalysisSearchParamsModel)
 {
     return Create(repository, false, null, salaryReviewAnalysisSearchParamsModel);
 }