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));
            }
        }
Beispiel #3
0
        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));
            }
        }