コード例 #1
0
        public override List <HistoricalEvaluationDto> ExecuteWithResult()
        {
            IQueryable <EmployeeEvaluationHistory_Search.Projection> query = RavenSession
                                                                             .Query <EmployeeEvaluationHistory_Search.Projection, EmployeeEvaluationHistory_Search>()
                                                                             .Where(e => e.UserName == _userName);

            var employeesProjection = query.ToList()
                                      .Where(x => x.Period != null && 0 >= string.Compare(x.Period, _lastPeriod))
                                      .OrderByDescending(x => x.Period)
                                      .ToList();
            var mapper = new EmployeeEvaluationHelper(RavenSession, _userName);

            return(employeesProjection.Select(e =>
                                              new HistoricalEvaluationDto()
            {
                AverageCalification = e.Califications,
                ResponsibleId = e.ResponsibleId,
                FullName = e.FullName,
                UserName = e.UserName,
                Period = e.Period,
                Evaluators = e.Evaluators != null ? e.Evaluators.ToList() : new List <string>(),
                State = EvaluationStateHelper.GetEvaluationState(e.AutoEvaluationDone, e.ResponsibleEvaluationDone, e.CompanyEvaluationDone, e.OpenToDevolution, e.Finished),
                Id = e.Id,
            }).ToList());
        }
コード例 #2
0
        public ActionResult Calification(string period, string username, string sharedCode = null)
        {
            //1. If user is self
            //1.a. Check if it needs to be evaluated (if not, redirect or error)
            //1.b. If auto-evaluation is not done, show auto-evaluation to complete
            //1.c. If auto-evaluation is done, show auto-evaluation (no edit)
            //1.d. If auto-evaluation is done and company is done, show both

            //2. If not self
            //2.a. Check if it's responsible or evaluator of the user
            //2.a.1. If not, redirect or error
            //2.a.2. If it is, show the next point with the rest of evaluations
            //2.b. Evaluator/Responsible with no evaluation done, show standard evaluation to complete
            //2.c. Evaluator with evaluation done, show evaluation done
            //2.d. Responsible with evaluation done, show company evaluation to complete
            //2.e. Responsible with company evaluation done, show every evaluation including auto

            var loggedUser = DetectUser();

            RavenQueryStatistics stats;

            EmployeeToEvaluate_Search.Projection evaluation = RavenSession
                                                              .Query <EmployeeToEvaluate_Search.Projection, EmployeeToEvaluate_Search>()
                                                              .Statistics(out stats)
                                                              .Where(e => e.UserName == username && e.Period == period).FirstOrDefault();

            // The evaluation doesn't exist
            if (evaluation == null)
            {
                return(HttpNotFound());
            }

            var evaluationHelper   = new EmployeeEvaluationHelper(RavenSession, loggedUser);
            var isNewerResponsible = string.Compare(evaluationHelper.GetLastPeriodForResponisble(username), period) > 0;
            var hasValidSharedCode = evaluation.SharedLinks != null?
                                     evaluation.SharedLinks.Any(x => x.SharedCode == sharedCode && x.ExpirationDate >= DateTime.UtcNow) :
                                         false;

            var isManager             = IsEmployeeManager(loggedUser);
            var isLoggedUserEvaluator = IsEvaluator(loggedUser, username, evaluation.ResponsibleId, evaluation.Evaluators);
            var isLoggedUserEvaluated = loggedUser == username;

            if (!isLoggedUserEvaluated && !isLoggedUserEvaluator && !isManager && !hasValidSharedCode && !isNewerResponsible)
            {
                return(new HttpStatusCodeResult(403, "Access Denied"));
            }

            ViewBag.IsUserEvaluator = isLoggedUserEvaluator;

            ViewBag.Period = period;

            ViewBag.UserName       = username;
            ViewBag.IsCalification = true;
            if (sharedCode != null)
            {
                ViewBag.SharedCode = sharedCode;
            }
            return(View("Calification"));
        }
コード例 #3
0
        public JsonNetResult GetEmployeeEvaluationHistory(string username)
        {
            var loggedUser = DetectUser();
            var employeeEvaluationHelper      = new EmployeeEvaluationHelper(RavenSession, loggedUser);
            var responsibleOfEvaluationPeriod = employeeEvaluationHelper.GetLastPeriodForResponisble(username);

            if (responsibleOfEvaluationPeriod == null)
            {
                throw new ApplicationException($"Not responsible of {username}'s evaluation in any period");
            }
            var evaluationHistory = ExecuteCommand(new GetEmployeeEvaluationHistoryCommand(responsibleOfEvaluationPeriod, username));

            return(Json(evaluationHistory));
        }
コード例 #4
0
        public override List <EmployeeEvaluationDTO> ExecuteWithResult()
        {
            IRavenQueryable <EmployeeToEvaluate_Search.Projection> query = RavenSession
                                                                           .Query <EmployeeToEvaluate_Search.Projection, EmployeeToEvaluate_Search>();

            if (Period != null)
            {
                query = query.Where(e => e.Period == Period);
            }

            var employeesProjection = query.ToList();
            var mapper = new EmployeeEvaluationHelper(RavenSession, null);

            return(mapper.MapEmployeeEvaluation(employeesProjection));
        }
コード例 #5
0
        public override List <EmployeeEvaluationDTO> ExecuteWithResult()
        {
            RavenQueryStatistics stats;
            IQueryable <EmployeeToEvaluate_Search.Projection> query = RavenSession
                                                                      .Query <EmployeeToEvaluate_Search.Projection, EmployeeToEvaluate_Search>()
                                                                      .Statistics(out stats)
                                                                      .Where(e => (e.Period == _period) &&
                                                                             (e.UserName == _loggedUser ||
                                                                              e.ResponsibleId == _loggedUser ||
                                                                              e.Evaluators.Any(ev => ev == _loggedUser)));

            var employeesProjection = query.ToList();
            var mapper = new EmployeeEvaluationHelper(RavenSession, _loggedUser);

            return(mapper.MapEmployeeEvaluation(employeesProjection));
        }
コード例 #6
0
        public ActionResult HistoryDashboard(string username)
        {
            var loggedUser = DetectUser();
            var employeeEvaluationHelper = new EmployeeEvaluationHelper(RavenSession, loggedUser);
            var lastResponiblePeriod     = employeeEvaluationHelper.GetLastPeriodForResponisble(username);

            if (lastResponiblePeriod == null)
            {
                return(new HttpStatusCodeResult(403, "Access Denied"));
            }

            ScriptManager.RegisterGlobalJavascript(
                "ViewData",
                new
            {
                userName = username
            },
                500);

            return(View());
        }
コード例 #7
0
        public override CalificationsDto ExecuteWithResult()
        {
            var evId             = EmployeeEvaluation.GenerateEvaluationId(_period, _evaluatedUser);
            var evaluation       = RavenSession.Load <EmployeeEvaluation>(evId);
            var evaluationHelper = new EmployeeEvaluationHelper(RavenSession, _loggedUser);

            if (evaluation == null)
            {
                throw new ApplicationException(string.Format("Error: Evaluación inexistente: {0}.", evId));
            }

            var isVisitor = (evaluation.SharedLinks == null ? false : evaluation.SharedLinks.Any(x => x.SharedCode == _sharedCode && x.ExpirationDate > DateTime.UtcNow)) || //has SharedCode
                            (string.Compare(evaluationHelper.GetLastPeriodForResponisble(_evaluatedUser), _period) > 0); //is newer Responsible

            Employee_Search.Projection employee = RavenSession
                                                  .Query <Employee_Search.Projection, Employee_Search>()
                                                  .Where(x => x.IsActive && x.UserName == evaluation.UserName).FirstOrDefault();

            var califications = RavenSession.Advanced.LoadStartingWith <EvaluationCalification>(evId + "/").ToList();

            var evaluators                = califications.Where(c => c.Owner == CalificationType.Evaluator).Select(c => c.EvaluatorEmployee).ToList();
            var autoEvaluationDone        = califications.Any(c => c.Owner == CalificationType.Auto && c.Finished);
            var responsibleEvaluationDone = califications.Any(c => c.Owner == CalificationType.Responsible && c.Finished);
            var companyEvaluationDone     = califications.Any(c => c.Owner == CalificationType.Company && c.Finished);
            var state = EvaluationStateHelper.GetEvaluationState(autoEvaluationDone, responsibleEvaluationDone, companyEvaluationDone, evaluation.ReadyForDevolution, evaluation.Finished);

            var evaluationDto = CalificationsEvaluationDto.Create(evaluation, evaluators, evaluation.CurrentPosition ?? employee.CurrentPosition, evaluation.Seniority ?? employee.Seniority, companyEvaluationDone, state);

            if (!CanViewEvaluation(evaluationDto, califications, isVisitor))
            {
                throw new ApplicationException(string.Format("Error: Usuario {0} no tiene permiso para ver la evaluación {1}", _loggedUser, evId));
            }

            // If evaluation is finished
            // - Show ALWAYS company & auto

            if (evaluation.Finished)
            {
                return(GetFinishedEvaluation(evaluationDto, califications));
            }

            // If loggedUser is the evaluated
            // - Show auto-eval if not RFD
            // - Show auto-eval & company if RFD

            if (_loggedUser == _evaluatedUser)
            {
                return(GetAutoEvaluation(evaluationDto, califications));
            }

            // If loggedUser is responsible
            // - Show all

            if (_loggedUser == evaluationDto.ResponsibleId)
            {
                return(GetFullEvaluation(evaluationDto, califications));
            }

            // If loggedUser is evaluator
            // - Show evluator eval

            return(GetEvaluatorEvaluation(evaluationDto, califications));
        }