public LabourerProfileVM GetLabourer(int labourerID) { Labourer Labourer = _context.Labourer.FirstOrDefault(l => l.LabourerId == labourerID); var avgerageSafety = _context.JobLabourer .Where(j => j.LabourerId == labourerID && j.LabourerSafetyRating != null).Average(av => av.LabourerSafetyRating); var avgerageQuality = _context.LabourerAttendance .Where(l => l.LabourerId == labourerID && l.DailyQualityRating != null).Average(av => av.DailyQualityRating); LabourerProfileVM lp = new LabourerProfileVM() { Labourer = Labourer, Skills = _context.LabourerSkill.Where(ls => ls.LabourerId == labourerID).Select(ols => new Skill() { SkillId = ols.Skill.SkillId, SkillName = ols.Skill.SkillName, AdminReceives = ols.Skill.AdminReceives, LabourerReceives = ols.Skill.LabourerReceives }), AverageSafety = avgerageSafety, SafetyRatingNumber = _context.JobLabourer .Where(j => j.LabourerId == labourerID && j.LabourerSafetyRating != null).Count(), AverageQuality = avgerageQuality, QualityRatingNumber = _context.LabourerAttendance .Where(l => l.LabourerId == labourerID && l.DailyQualityRating != null).Count() }; return(lp); }
public IActionResult PutLabourerProfile(LabourerProfileVM labourerProfile) { var lp = _context.Labourer.SingleOrDefault(l => l.LabourerId == labourerProfile.Labourer.LabourerId); if (lp == null) { return(NotFound()); } else { lp.LabourerFirstName = labourerProfile.Labourer.LabourerFirstName; lp.LabourerLastName = labourerProfile.Labourer.LabourerLastName; lp.IsAvailable = labourerProfile.Labourer.IsAvailable; lp.LabourerEmail = labourerProfile.Labourer.LabourerEmail; } _context.LabourerSkill.RemoveRange(_context.LabourerSkill.Where(al => al.LabourerId == labourerProfile.Labourer.LabourerId)); foreach (string skillName in labourerProfile.Skills.Select(s => s.SkillName)) { Skill skill = _context.Skill.Where(s => s.SkillName == skillName).FirstOrDefault(); if (skill != null) { LabourerSkill labourerSkill = new LabourerSkill { SkillId = skill.SkillId, LabourerId = labourerProfile.Labourer.LabourerId }; _context.LabourerSkill.Add(labourerSkill); _context.SaveChanges(); } else { return(NotFound()); } } try { _context.SaveChanges(); } catch (DbUpdateException) { throw; } return(NoContent()); }