public async Task <Result <EmployeeReview> > GetById(Request <long> id) { try { var searchData = _repo.GetById(id.Model); if (searchData == null) { return(new Result <EmployeeReview>("Record not found")); } var result = Mapper.Map <EmployeeReview>(searchData); var searchEmployee = new UserInfoDataRepository().GetById(result.EmployeeId); var searchSupervisor = new UserInfoDataRepository().GetById(result.SupervisorId); result.EmployeeName = searchEmployee.LastName + ", " + searchEmployee.FirstName; result.SupervisorName = searchSupervisor.LastName + ", " + searchSupervisor.FirstName; var searchAnswerItem = new AnswerItemDataRepository().Search(new SearchRequest <AnswerItemData>() { Filter = f => f.EmployeeReviewId == searchData.Id }); List <AnswerItem> data = new List <AnswerItem>(); var searchRatingList = new RatingDataRepository().Search(new SearchRequest <RatingData>() { Filter = f => f.ReviewTemplateId == result.ReviewTemplateId }); List <Rating> ratingList = new List <Rating>(); foreach (var rating in searchRatingList.Items) { ratingList.Add(Mapper.Map <Rating>(rating)); } result.RatingArray = ratingList.OrderBy(x => x.RangeFrom).ToList(); data = Mapper.Map <List <AnswerItem> >(searchAnswerItem.Items.ToList()); result.AnswerScore = data; return(new Result <EmployeeReview>() { Successful = true, Message = "Successfully retrieve records", Model = result }); } catch (Exception e) { return(new Result <EmployeeReview>(e.Message)); } }
public async Task <Result <EmployeeReview> > Answer(Request <EmployeeReview> request) { try { decimal ave = 0, total = 0; if (request.Model.Status == "Employee Review") { int cnt = 1; foreach (var item in request.Model.AnswerScore) { total = total + item.EmployeeScore; cnt++; new AnswerItemDataRepository().Update(Mapper.Map <AnswerItemData>(item)); } ave = total / cnt; request.Model.EmployeeAverageScore = ave; request.Model.Status = "Supervisor Review"; var res = _repo.Update(Mapper.Map <EmployeeReviewData>(request.Model)); if (!res) { return(new Result <EmployeeReview>("Unable to save review")); } } else if (request.Model.Status == "Supervisor Review") { int cnt = 1; foreach (var item in request.Model.AnswerScore) { total = total + item.SupervisorScore; cnt++; new AnswerItemDataRepository().Update(Mapper.Map <AnswerItemData>(item)); } ave = total / cnt; request.Model.SupervisorAverageScore = ave; var getRatings = new RatingDataRepository().GetDescription(request.Model.ReviewTemplateId, ave); request.Model.Rating = getRatings.FirstOrDefault().Description; request.Model.Status = "Reviewed"; var res = _repo.Update(Mapper.Map <EmployeeReviewData>(request.Model)); if (!res) { return(new Result <EmployeeReview>("Unable to save review")); } } return(new Result <EmployeeReview>() { Successful = true, Message = "Successfully recorded review", Model = request.Model }); } catch (Exception e) { return(new Result <EmployeeReview>(e.Message)); } }
public async Task <Result> CreateRating(int points, long id) { try { var searchData = new RatingDataRepository().Search(new SearchRequest <RatingData>() { Filter = f => f.ReviewTemplateId == id }); if (searchData.SearchTotal > 0) { foreach (var item in searchData.Items) { new RatingDataRepository().Delete(item.Id); } } var div = points / 5; int cnt = 1; for (decimal i = 0; i < points;) { Rating data = new Rating() { RangeFrom = i, ReviewTemplateId = id }; if (div <= 1) { if (cnt == 5) { data.RangeTo = points; } else { data.RangeTo = i + div - (decimal)0.01; } } else { data.RangeTo = i + div; } if (cnt == 1) { data.Description = "very poor"; } else if (cnt == 2) { data.Description = "poor"; } else if (cnt == 3) { data.Description = "Average"; } else if (cnt == 4) { data.Description = "Above Average"; } else if (cnt == 5) { data.Description = "Outstanding"; } var insertRes = new RatingDataRepository().Insert(Mapper.Map <RatingData>(data)); i = i + div; cnt++; } return(new Result() { Successful = true, Message = "Successfully created rating table" }); } catch (Exception e) { return(new Result(e.Message)); } }