Beispiel #1
0
        public ActionResult Index()
        {
            _logger.Log("Home-Index");
            var customDate = _customDateService.GetCustomDate(1);
            DashboardViewModel dashboardViewModel = new DashboardViewModel();

            dashboardViewModel.NominationList = GetWinnersList(customDate.Month, customDate.Year, 1);

            string utiltyName = WebConfigurationManager.AppSettings["ProductName"];

            var authorizationService = new Authorization(_commonDbService.GetCommonDataBaseContext());

            var commonRoles = authorizationService.GetRoleForUtility(User.Identity.Name, utiltyName);

            dashboardViewModel.UserRoles = commonRoles;
            var typesOfAwards = _encourageDatabaseContext.Query <Award>().ToList();
            var awardsList    = new List <AwardViewModel>();

            foreach (var award in typesOfAwards)
            {
                var awardDetails = new AwardViewModel
                {
                    AwardId    = award.Id,
                    AwardTitle = award.Name,
                    AwardCode  = award.Code
                };
                awardsList.Add(awardDetails);
            }
            dashboardViewModel.Awards     = awardsList;
            dashboardViewModel.CustomDate = customDate;
            return(View("Dashboard", dashboardViewModel));
        }
Beispiel #2
0
        public void SelectWinner(int nominationId, string winningComment, string hrAdminsFeedback, int adminId)
        {
            var shortlistedNomination = _encourageDatabaseContext.Query <Shortlist>().SingleOrDefault(model => model.NominationId == nominationId);
            var currentNomination     = shortlistedNomination != null?_encourageDatabaseContext.Query <Nomination>().FirstOrDefault(x => x.Id == shortlistedNomination.NominationId) : _encourageDatabaseContext
                                            .Query <Nomination>().FirstOrDefault(x => x.Id == nominationId);

            if (currentNomination != null)
            {
                var customDate = _customDateService.GetCustomDate(currentNomination.AwardId);

                if (shortlistedNomination != null)
                {
                    shortlistedNomination.IsWinner         = true;
                    shortlistedNomination.WinningDate      = customDate.Date;
                    shortlistedNomination.WinningComment   = winningComment;
                    shortlistedNomination.HrAdminsFeedback = hrAdminsFeedback;
                    shortlistedNomination.AdminId          = adminId;
                    _encourageDatabaseContext.Update <Shortlist>(shortlistedNomination);
                }
                else
                {
                    var winner = new Shortlist()
                    {
                        IsWinner     = true,
                        NominationId = nominationId,
                        //WinningDate = DateTime.Now.Date,
                        WinningDate      = customDate.Date,
                        WinningComment   = winningComment,
                        HrAdminsFeedback = hrAdminsFeedback,
                        AdminId          = adminId
                    };
                    _encourageDatabaseContext.Add <Shortlist>(winner);
                }
            }
        }
        public string GetAwardPeriod(int awardId)
        {
            var awardPeriod    = _customDateService.GetCustomDate(awardId);
            var month          = @System.Globalization.CultureInfo.InvariantCulture.DateTimeFormat.GetMonthName(awardPeriod.Month);
            var stringtoReturn = month + "-" + awardPeriod.Year;

            return(stringtoReturn);
        }
Beispiel #4
0
        public List <User> GetResourcesUnderDepartment(int DepartmentId, int userIdToExcept)
        {
            var resourcesUnderDept = (from user in _CommonDbContext.Query <User>()
                                      join resource in _CommonDbContext.Query <Resource>() on user.ID equals resource.UserID
                                      join resourceHistory in _CommonDbContext.Query <ResourceHistory>() on resource.ID equals resourceHistory.ResourceID
                                      join title in _CommonDbContext.Query <Title>() on resourceHistory.TitleID equals title.ID
                                      join department in _CommonDbContext.Query <Department>() on title.DepartmentID equals department.ID
                                      where department.ID == DepartmentId && resource.DirectManager1ID == userIdToExcept &&
                                      user.InactiveDate == null
                                      select user).Distinct();
            int awardId       = 1;
            var currentUserId = userIdToExcept;
            var recourcesInDepartmentUnderCurrentManger = _encourageDbcontext.Query <Nomination>().Where(n => n.DepartmentId == DepartmentId && n.ManagerId == currentUserId && n.AwardId == awardId).ToList();

            resourcesUnderDept = resourcesUnderDept.Where(u => u.ID != userIdToExcept);
            var userList = resourcesUnderDept.ToList();

            foreach (var item in recourcesInDepartmentUnderCurrentManger)
            {
                userList.RemoveAll(u => u.ID == item.UserId);
            }
            var winners = _encourageDbcontext.Query <Shortlist>().Where(w => w.IsWinner == true).ToList();
            var winnersWithin12Months           = new List <Shortlist>();
            var winnerNominationsWithin12Months = new List <Nomination>();

            foreach (var winner in winners)
            {
                var currentNomination             = _nominationService.GetNomination(winner.NominationId);
                var customDate                    = _customDateService.GetCustomDate(currentNomination.AwardId);
                var noOfMonthsFromLastWinningDate = (customDate.Year - winner.WinningDate.Value.Year) * 12 + (customDate.Month - winner.WinningDate.Value.Month);
                if (noOfMonthsFromLastWinningDate <= 12)
                {
                    winnersWithin12Months.Add(winner);
                    winnerNominationsWithin12Months.Add(_nominationService.GetNomination(winner.NominationId));
                }
            }

            foreach (var winnerNomination in winnerNominationsWithin12Months)
            {
                userList.RemoveAll(user => user.ID == winnerNomination.UserId);
            }

            return(userList);
        }
Beispiel #5
0
        public ActionResult AddNomination()
        {
            _logger.Log("Nomination-AddNomination-GET");

            var model            = new NominationViewModel();
            var userEmailAddress = User.Identity.Name;
            var projects         = _awardService.GetProjectsUnderCurrentUserAsManager(userEmailAddress);
            var listOfAwards     = _awardService.GetAllAwards();

            if (projects.Any())
            {
                model.ProjectsUnderCurrentUser = new SelectList(projects, "Id", "Name");
            }

            var depts = _awardService.GetDepartmentsUnderCurrentUserAsManager(userEmailAddress);

            if (depts.Count > 0)
            {
                model.DepartmentsUnderCurrentUser = new SelectList(depts, "Id", "Name");
            }

            foreach (var award in listOfAwards)
            {
                switch (award.Code)
                {
                default:
                case "SOM":
                    model.SomCustomDate = _customDateService.GetCustomDate(award.Id);
                    break;

                case "PINNACLE":
                    model.PinnacleCustomDate = _customDateService.GetCustomDate(award.Id);
                    break;
                }
            }

            model.Resources    = new SelectList(new List <User>(), "Id", "DisplayName");
            model.ListOfAwards = new SelectList(listOfAwards, "Id", "Name");
            model.ManagerId    = _awardService.GetUserIdFromEmail(userEmailAddress);

            return(View(model));
        }
        public List <Nomination> GetAllSubmitedNonreviewedNominations(int reviewerId)
        {
            var allNominations = new List <Nomination>();

            var awardsList = _encourageDatabaseContext.Query <Award>().ToList();

            var alreadyReviewedNominationIds = _encourageDatabaseContext.Query <Review>().Where(r => r.ReviewerId == reviewerId && r.IsSubmited == true).Select(r => r.NominationId);

            foreach (var award in awardsList)
            {
                var customDate = _customDateService.GetCustomDate(award.Id);
                switch (award.Code)
                {
                default:
                case "SOM":
                    var prevMonth      = customDate;
                    var somNominations = _encourageDatabaseContext.Query <Nomination>().Where(N =>
                                                                                              N.AwardId == award.Id &&
                                                                                              N.IsSubmitted == true &&
                                                                                              (!alreadyReviewedNominationIds.Contains(N.Id)) &&
                                                                                              N.NominationDate.Value.Month == prevMonth.Month &&
                                                                                              N.NominationDate.Value.Year == prevMonth.Year).ToList();
                    allNominations.AddRange(somNominations);
                    break;

                case "PINNACLE":
                    var pinnacleNominations = _encourageDatabaseContext.Query <Nomination>().Where(N =>
                                                                                                   N.AwardId == award.Id &&
                                                                                                   N.IsSubmitted == true &&
                                                                                                   (!alreadyReviewedNominationIds.Contains(N.Id)) &&
                                                                                                   N.NominationDate.Value.Year == (customDate.Year)).ToList();
                    allNominations.AddRange(pinnacleNominations);
                    break;
                }
            }
            return(allNominations);
        }
        private List <ReviewFeedbackListViewModel> ReviewFeedbackList(bool forCurrentMonth, int awardType)
        {
            _logger.Log("Review-ReviewFeedbackList-private-GET");

            var reviewFeedbacks = new List <ReviewFeedbackListViewModel>();
            var awardDetails    = _encourageDatabaseContext.Query <Award>().FirstOrDefault(x => x.Id == awardType);

            DateTime toBeComparedDate = DateTime.Now;

            List <Shortlist> shortlistedNominations = new List <Shortlist>();

            if (awardType != 0)
            {
                if (awardDetails != null)
                {
                    switch (awardDetails.Code)
                    {
                    case "SOM":
                        toBeComparedDate = _customDateService.GetCustomDate(awardType);

                        shortlistedNominations = _encourageDatabaseContext.Query <Shortlist>()
                                                 .Where(r =>
                                                        r.Nomination.AwardId == awardType &&
                                                        (forCurrentMonth ? (r.Nomination.NominationDate.Value.Month == toBeComparedDate.Month && r.Nomination.NominationDate.Value.Year == toBeComparedDate.Year) : (r.Nomination.NominationDate < toBeComparedDate)))
                                                 .GroupBy(x => x.NominationId)
                                                 .Select(group => @group.FirstOrDefault()).ToList();
                        break;

                    case "PINNACLE":
                        toBeComparedDate = _customDateService.GetCustomDate(awardType);

                        shortlistedNominations = _encourageDatabaseContext.Query <Shortlist>()
                                                 .Where(r =>
                                                        r.Nomination.AwardId == awardType &&
                                                        (forCurrentMonth ? (r.Nomination.NominationDate.Value.Year == toBeComparedDate.Year) : (r.Nomination.NominationDate.Value.Year < toBeComparedDate.Year)))
                                                 .GroupBy(x => x.NominationId)
                                                 .Select(group => @group.FirstOrDefault()).ToList();
                        break;

                    default:
                        break;
                    }
                }
            }
            else
            {
                var listOfAwards = _encourageDatabaseContext.Query <Award>().ToList();
                foreach (var award in listOfAwards)
                {
                    List <Shortlist> listOfNominations;
                    switch (award.Code)
                    {
                    default:
                    case "SOM":
                        toBeComparedDate  = _customDateService.GetCustomDate(award.Id);
                        listOfNominations = _encourageDatabaseContext.Query <Shortlist>()
                                            .Where(r =>
                                                   r.Nomination.AwardId == award.Id &&
                                                   (forCurrentMonth ? (r.Nomination.NominationDate.Value.Month == toBeComparedDate.Month && r.Nomination.NominationDate.Value.Year == toBeComparedDate.Year) : (r.Nomination.NominationDate < toBeComparedDate)))
                                            .GroupBy(x => x.NominationId)
                                            .Select(group => group.FirstOrDefault()).ToList();
                        break;

                    case "PINNACLE":
                        toBeComparedDate  = _customDateService.GetCustomDate(award.Id);
                        listOfNominations = _encourageDatabaseContext.Query <Shortlist>()
                                            .Where(r =>
                                                   r.Nomination.AwardId == award.Id &&
                                                   (forCurrentMonth ? (r.Nomination.NominationDate.Value.Year == toBeComparedDate.Year) : (r.Nomination.NominationDate.Value.Year < toBeComparedDate.Year)))
                                            .GroupBy(x => x.NominationId)
                                            .Select(group => group.FirstOrDefault()).ToList();
                        break;
                    }

                    shortlistedNominations.AddRange(listOfNominations);
                }
            }

            foreach (var shortlistedNomination in shortlistedNominations)
            {
                var isShortlisted = false;
                var isWinner      = false;
                var nomination    = _encourageDatabaseContext.Query <Nomination>().SingleOrDefault(x => x.Id == shortlistedNomination.NominationId);
                var award         = _encourageDatabaseContext.Query <Award>().SingleOrDefault(a => a.Id == nomination.AwardId);
                if (award != null && nomination != null)
                {
                    var    awardFrequency          = _nominationService.GetAwardFrequencyById(award.FrequencyId);
                    var    isHistorical            = IsHistoricalNomination(nomination);
                    var    isAwardLocked           = GetLockStatusOfAward(nomination.AwardId);
                    var    awardCode               = award.Code;
                    var    nominee                 = _commonDbContext.Query <User>().FirstOrDefault(u => u.ID == nomination.UserId);
                    var    nominationTime          = Convert.ToDateTime(nomination.NominationDate);
                    string nominationTimeToDisplay = CultureInfo.CurrentCulture.DateTimeFormat.GetAbbreviatedMonthName(nominationTime.Month) + "-" + nominationTime.Year.ToString();
                    var    totalReviews            = _reviewService.GetReviewsForNomination(shortlistedNomination.NominationId).Count();

                    var reviewerComments = _encourageDatabaseContext.Query <ReviewerComment>().Where(model => model.NominationId == nomination.Id).ToList();
                    var managerComments  = _encourageDatabaseContext.Query <ManagerComment>().Where(model => model.NominationId == nomination.Id).ToList();

                    decimal totalCreditPoints = 0;
                    decimal averageCredits;

                    foreach (var rc in reviewerComments)
                    {
                        var managerCommnet = managerComments.FirstOrDefault(mc => mc.CriteriaId == rc.CriteriaId);
                        totalCreditPoints += (Convert.ToInt32(rc.Credit) * (managerCommnet != null ? managerCommnet.Weightage : 0) / 100m);
                    }
                    averageCredits = totalCreditPoints / (totalReviews <= 0 ? 1 : totalReviews);
                    var checkResultStatus = _resultService.IsShortlistedOrWinner(nomination.Id);
                    if (checkResultStatus == 1)
                    {
                        isWinner = true;
                    }
                    else if (checkResultStatus == 2)
                    {
                        isShortlisted = true;
                    }

                    if (nominee != null)
                    {
                        reviewFeedbacks.Add(
                            new ReviewFeedbackListViewModel()
                        {
                            AwardName          = awardCode,
                            Credits            = totalCreditPoints,
                            DisplayName        = nominee.DisplayName,
                            Intials            = nominee.FirstName.Substring(0, 1) + "" + nominee.LastName.Substring(0, 1),
                            NominationTime     = nominationTimeToDisplay,
                            NominationId       = nomination.Id,
                            IsShortlisted      = isShortlisted,
                            IsWinner           = isWinner,
                            NumberOfReviews    = totalReviews,
                            AverageCredits     = averageCredits,
                            NominatedMonth     = nominationTime.Month,
                            AwardFrequencyCode = awardFrequency.Code,
                            IsHistorical       = isHistorical,
                            IsAwardLocked      = isAwardLocked,
                            EmployeeId         = nominee.EmployeeID,
                            UserId             = nominee.ID
                        }
                            );
                    }
                }
            }

            var reviewFeedbackList = reviewFeedbacks.OrderByDescending(o => o.NominatedMonth).ToList();

            return(reviewFeedbackList);
        }