public async Task <IActionResult> UpdateExistingAppraisalResult([FromQuery] AppraisalQueryParam configParam)
        {
            var configDetails = await appraisalResult.GetAppraisalConfiguration(configParam.Config);

            if (configDetails == null)
            {
                return(NotFound(new { message = "Appraisal configuration not found" }));
            }
            var result = await appraisalResult.UpdateKeyResultAreaForExistingResult(configParam.Cycle);

            if (result)
            {
                return(Ok(new { success = "Update completed" }));
            }

            return(BadRequest(new { message = "something went wrong" }));
        }
Esempio n. 2
0
        public async Task <IActionResult> ReCalculateAppraisal([FromQuery] AppraisalQueryParam configParam)
        {
            var configDetails = await appraisalResult.GetAppraisalConfiguration(configParam.Config);

            if (configDetails == null)
            {
                return(NotFound(new { message = "Appraisal configuration not found" }));
            }

            var result = await finalResultRepo.ReCalculateFinalAppraisalResult(ObjectId.Parse(configParam.Cycle));

            if (result)
            {
                return(Ok(result));
            }
            return(NoContent());
        }
        public async Task <IActionResult> SumbitApprisal(int employeeId, [FromQuery] AppraisalQueryParam configParam, [FromBody] IEnumerable <AppraisalResultForCreationDtoString> appraisalResultForCreation)
        {
            if (!appraisalResultForCreation.Any())
            {
                return(BadRequest(new { message = "No Result Sent" }));
            }

            var hasDoneAppraisal = await appraisalResult.HasPaticipatedInAppraisal(employeeId);

            if (hasDoneAppraisal)
            {
                return(BadRequest(new { message = "You have already participated in this appraisal" }));
            }

            var configExist = await appraisalResult.CheckAppraisalConfigurationDetails(configParam);

            if (!configExist)
            {
                return(BadRequest(new { message = "Invalid Configuration details" }));
            }

            var appraisalResultToSubmit = mapper.Map <IEnumerable <AppraisalResultForCreationDtoString>, IEnumerable <AppraisalResultForCreationDto> >(appraisalResultForCreation);

            var result = await appraisalResult.SubmitAppraisal(employeeId, appraisalResultToSubmit);

            if (result.Item1)
            {
                var appraisalResultToReturn = mapper.Map <IEnumerable <AppraisalResult> >(appraisalResultToSubmit);

                if (appraisalResultToReturn.Any())
                {
                    finalResultRepo.CalculateResult(employeeId, ObjectId.Parse(configParam.Cycle));
                }

                return(Ok(new { success = true }));
            }

            return(BadRequest(new { message = result.Item2 }));
        }
        public async Task <IActionResult> GetKraforAppraisal(int employeeId, [FromQuery] AppraisalQueryParam configParam)
        {
            var configDetails = await appraisalResult.GetAppraisalConfiguration(configParam.Config);

            if (configDetails == null)
            {
                return(NotFound(new { message = "Appraisal configuration not found" }));
            }

            var currentCycle = configDetails.Cycles.FirstOrDefault(x => x.Id == ObjectId.Parse(configParam.Cycle));

            if (currentCycle == null)
            {
                return(NotFound(new { message = "Appraisal cycle not found" }));
            }

            var resultFromMap = appraisalResult.GetAcceptedKRAForAppraisal(employeeId, currentCycle);
            var mapInstance   = mapper.Map <IEnumerable <KeyResultAreaForViewDto> >(resultFromMap).ToList();

            mapInstance.RemoveAll(x => !x.keyOutcomes.Any());
            return(Ok(mapInstance));
        }
        public async Task <IActionResult> GetEmployeesWithSubmittedAppraisal(int employeeid, string whoami, [FromQuery] AppraisalQueryParam model)
        {
            try
            {
                var configExist = await appraisalResult.CheckAppraisalConfigurationDetails(model);

                if (!configExist)
                {
                    return(NotFound(new { error = "Appraisal configuration details not found" }));
                }

                var result = await appraisalResult.GetEmployeesToAppraise(employeeid, model.Config, model.Cycle, whoami);

                var Dto = mapper.Map <IEnumerable <AppraisalForApprovalViewDto> >(result);
                //THIS COULD BE FIXED LATER WITH MONGO QUERY
                //rearrange object
                Dto.ToList().ForEach(x =>
                {
                    x.Kra_Details.ToList().ForEach(y =>
                    {
                        y.KeyResultArea.whoami = y.KeyResultArea.HeadOfDepartment.EmployeeId == employeeid ? "hod" : "appraiser";
                    });
                });
                return(Ok(Dto));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Esempio n. 6
0
        public async Task <IActionResult> AppraisalResultByGroup(string group, int pageNumber, int pageSize, [FromQuery] AppraisalQueryParam configParam)
        {
            var configDetails = await appraisalResult.GetAppraisalConfiguration(configParam.Config);

            if (configDetails == null)
            {
                return(NotFound(new { message = "Appraisal configuration not found" }));
            }

            var result = await finalResultRepo.GetAppraisalResultByGroup(group, pageNumber, pageSize, ObjectId.Parse(configParam.Cycle));

            if (result != null)
            {
                return(Ok(result));
            }
            return(NoContent());
        }
Esempio n. 7
0
 public async Task <bool> CheckAppraisalConfigurationDetails(AppraisalQueryParam model)
 {
     return(AppraisalConfigCollection.AsQueryable().Any(x => x.Id == ObjectId.Parse(model.Config) && x.Cycles.Any(y => y.Id == ObjectId.Parse(model.Cycle))));
 }