public async Task UpsertEmployeeIterationRating(bool isManagerRequested, EmployeeRatingRequestModel employeeRatingRequestModel) { var iterationRating = await _context.EmployeeIterationRatings.Where(x => x.Id == employeeRatingRequestModel.IterationRatingId) .SingleOrDefaultAsync(); if (null != iterationRating) { if (isManagerRequested) { iterationRating.ManagerRatingId = employeeRatingRequestModel.ManagerRatingId.Value; iterationRating.MAnagerComments = employeeRatingRequestModel.ManagerComments; } else { iterationRating.EmployeeRatingId = employeeRatingRequestModel.EmployeeRatingId; iterationRating.EmployeeComment = employeeRatingRequestModel.EmployeeComments; } } else { iterationRating = new EmployeeIterationRatings() { IterationGoalId = employeeRatingRequestModel.IterationGoalId, EmployeeRatingId = employeeRatingRequestModel.EmployeeRatingId, EmployeeComment = employeeRatingRequestModel.EmployeeComments, ManagerRatingId = null, MAnagerComments = null }; _context.EmployeeIterationRatings.Add(iterationRating); } await _context.SaveChangesAsync(); }
public async Task <IActionResult> SaveEmployeeIterationRating([FromBody] EmployeeRatingRequestModel employeeRatingRequestModel) { try { var userId = HttpContext.User.GetUserIdClaim(); var employee = await _userService.GetUserById(employeeRatingRequestModel.EmployeeId); if (null == employee) { return(BadRequest(new ApiResponseBadRequestResult() { ErrorMessage = $"User with Id {employeeRatingRequestModel.EmployeeId} does not exists" })); } bool isManagerRequestedDetails = (userId == employee.ReportingManagerId); await _employeeIterationRepository.UpsertEmployeeIterationRating(isManagerRequestedDetails, employeeRatingRequestModel); return(Ok(new ApiResponseOKResult() { Data = true })); } catch (Exception ex) { _logger.LogError(ex, "Failed to save iteration ratings"); return(StatusCode((int)HttpStatusCode.InternalServerError, new ApiResponseFailure() { ErrorMessage = "Failed to save iteration ratings" })); } }