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" })); }
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; } }
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()); }
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)))); }