/// <summary> /// Method to assign scrum answers for a specific date to a particular employee /// </summary> /// <param name="scrum"></param> /// <param name="scrumDate"></param> /// <param name="user"></param> /// <returns>object with scrum answers for an employee</returns> private async Task <EmployeeScrumDetails> AssignAnswersAsync(Scrum scrum, DateTime scrumDate, User user) { _logger.Debug("Assign Answers Async: " + scrumDate); EmployeeScrumDetails employeeScrumDetail = new EmployeeScrumDetails(); //Fetch all the scrum answers for a particular employee List <ScrumAnswer> scrumAnswers = (await _scrumAnswerDataRepository.FetchAsync(x => x.EmployeeId == user.Id && DbFunctions.TruncateTime(x.AnswerDate) == DbFunctions.TruncateTime(scrumDate))).ToList(); _logger.Debug("scrum Answers: " + JsonConvert.SerializeObject(scrumAnswers)); _logger.Debug("scrum:" + JsonConvert.SerializeObject(scrum)); //Find scrum answers for a particular employee of a particular project on a specific date List <ScrumAnswer> todayScrumAnswers = new List <ScrumAnswer>(); if (scrum != null) { todayScrumAnswers = scrumAnswers.FindAll(x => x.ScrumId == scrum.Id).ToList(); foreach (var todayScrumAnswer in todayScrumAnswers) { if (todayScrumAnswer.Question.Type == BotQuestionType.Scrum && todayScrumAnswer.Question.OrderNumber == QuestionOrder.Yesterday) { employeeScrumDetail.Answer1 = SplitScrumAnswer(todayScrumAnswer.Answer); } if (todayScrumAnswer.Question.Type == BotQuestionType.Scrum && todayScrumAnswer.Question.OrderNumber == QuestionOrder.Today) { employeeScrumDetail.Answer2 = SplitScrumAnswer(todayScrumAnswer.Answer); } if (todayScrumAnswer.Question.Type == BotQuestionType.Scrum && todayScrumAnswer.Question.OrderNumber == QuestionOrder.RoadBlock) { employeeScrumDetail.Answer3 = SplitScrumAnswer(todayScrumAnswer.Answer); } } } _logger.Debug("today Scrum Answers:" + todayScrumAnswers.Count()); _logger.Debug("User First Name:" + JsonConvert.SerializeObject(user)); employeeScrumDetail.EmployeeName = string.Format("{0} {1}", user.FirstName, user.LastName); //Assigning answers to specific scrum questions if (!todayScrumAnswers.Any()) { employeeScrumDetail.Status = string.Format(_stringConstant.PersonNotAvailable, scrumDate.ToString(_stringConstant.FormatForDate)); } return(employeeScrumDetail); }
/// <summary> /// Method to return list of employees in the project with their scrum answers based on role of logged in user /// </summary> /// <param name="project"></param> /// <param name="scrum"></param> /// <param name="loginUser"></param> /// <param name="scrumDate"></param> /// <returns>Object with list of employees in project with answers to scrum questions</returns> private async Task <IList <EmployeeScrumDetails> > GetEmployeeScrumDetailsAsync(ProjectAc project, Scrum scrum, User loginUser, DateTime scrumDate) { List <EmployeeScrumDetails> employeeScrumDetails = new List <EmployeeScrumDetails>(); //Assigning answers of scrum to employees in the project based on their role //If logged user is an employee it will return only his scrum answers if (!(project.TeamLeaderId == loginUser.Id)) { employeeScrumDetails.Add((await AssignAnswersAsync(scrum, scrumDate, loginUser))); } else { foreach (var user in project.Users) { EmployeeScrumDetails employeeScrumDetail = await AssignAnswersAsync(scrum, scrumDate, user); employeeScrumDetails.Add(employeeScrumDetail); } } return(employeeScrumDetails); }