public async Task <List <AverageScoreWiseTechLead> > GetExperiencedTechLeadByTechnology(string technologyName) { var techLeadTechnologyList = await context.TechLeadTechnology .Include(d => d.TechLead) .Include(n => n.Technology) .Where(t => t.Technology.Name == technologyName).OrderByDescending(e => e.ExpLevel).ToListAsync(); if (techLeadTechnologyList.Count == 0) { return(null); } var developerTechnologyList = await developerTechnologyRepository.GetDeveloperByTechnology(technologyName); List <AverageScoreWiseTechLead> averageScoreWiseTechLeadList = new List <AverageScoreWiseTechLead>(); foreach (var techLeadTechnology in techLeadTechnologyList) { var devList = context.DeveloperTechLead.Where(x => x.TechLeadId == techLeadTechnology.TechLeadId).ToList(); var exp = 0.00; var devCount = 0; foreach (var dev in devList) { var devtech = developerTechnologyList.Where(x => x.DeveloperId == dev.DeveloperId).FirstOrDefault(); if (devtech != null) { exp = exp + devtech.ExpLevel; devCount++; } } if (devList.Count > 0 && exp > 0) { AverageScoreWiseTechLead averageScoreWiseTechLead = new AverageScoreWiseTechLead() { TechLeadName = techLeadTechnology.TechLead.Name, AverageScore = (techLeadTechnology.ExpLevel + (exp / devCount)) / 2 }; averageScoreWiseTechLeadList.Add(averageScoreWiseTechLead); } else { AverageScoreWiseTechLead averageScoreWiseTechLead = new AverageScoreWiseTechLead() { TechLeadName = techLeadTechnology.TechLead.Name, AverageScore = techLeadTechnology.ExpLevel }; averageScoreWiseTechLeadList.Add(averageScoreWiseTechLead); } } return(averageScoreWiseTechLeadList.OrderByDescending(x => x.AverageScore).ToList()); }
public async Task <List <ExpLevelWiseDeveloper> > GetDeveloperByTechnology(string technologyName) { var result = await developerTechnologyRepository.GetDeveloperByTechnology(technologyName); List <ExpLevelWiseDeveloper> expLevelWiseDeveloperList = new List <ExpLevelWiseDeveloper>(); foreach (var item in result) { ExpLevelWiseDeveloper expLevelWiseDeveloper = new ExpLevelWiseDeveloper() { DeveloperName = item.Developer.Name, ExpLevel = item.ExpLevel }; expLevelWiseDeveloperList.Add(expLevelWiseDeveloper); } return(expLevelWiseDeveloperList); }