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