public async Task UpdateLabourer(LabourerVM labourerVM) { var labourer = _context.Labourers.Include(l => l.LabourerSkills).FirstOrDefault(l => l.Id == labourerVM.Id); if (labourer == null) { throw new KeyNotFoundException(); } if (labourer != null) { labourer.Id = labourer.Id; labourer.FirstName = labourerVM.FirstName; labourer.LastName = labourerVM.LastName; labourer.PersonalId = labourerVM.PersonalId; labourer.City = labourerVM.City; labourer.Province = labourerVM.Province; labourer.Country = labourerVM.Country; labourer.Address = labourerVM.Address; labourer.Phone = labourerVM.Phone; labourer.IsActive = labourerVM.IsActive; labourer.Availability = ConvertWeekdaysToEnum(labourerVM); } if (labourer.LabourerSkills != null) { var skillsToDelete = labourer.LabourerSkills.Where(s => !labourerVM.Skills.Any(ls => ls.Id == s.SkillId)).ToList(); if (skillsToDelete != null && skillsToDelete.Count > 0) { _context.LabourerSkills.RemoveRange(skillsToDelete); } } var newSkills = labourerVM.Skills.Where(s => !labourer.LabourerSkills.Any(ls => ls.SkillId == s.Id)).ToList(); if (newSkills != null && newSkills.Count > 0) { foreach (var skill in newSkills) { var newSkill = new LabourerSkill { LabourerId = labourer.Id, SkillId = skill.Id.Value }; _context.Add(newSkill); } } await UpdateUserEmail(labourer.UserId, labourerVM.Email); _context.Update(labourer); _context.SaveChanges(); }
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()); }
private static async Task CreateLabourer(string firstName, string lastName, string phone, string address, Weekdays availability, RecruitmentSystemContext context, UserManager <SystemUser> userManager, string role) { var email = firstName + "@" + lastName + ".com"; var user = await CreateUserWithRole(context, userManager, new SystemUser { Email = email, UserName = email }, role); var labourer = new Labourer { FirstName = firstName, LastName = lastName, Phone = phone, Address = address, City = "Vancouver", Province = "BC", Country = "Canada", IsActive = true, PersonalId = "123456789", User = user, Availability = availability }; context.Labourers.Add(labourer); //add skills var skills = context.Skills.ToList(); Random r = new Random(); var from = r.Next(0, 14); var to = r.Next(from, 14); var count = 1; for (var i = from; i <= to; i++) { if (count == 4) { break; } var labourerSkill = new LabourerSkill { Labourer = labourer, Skill = skills[i] }; context.LabourerSkills.Add(labourerSkill); count++; } context.SaveChanges(); }
public async Task <LabourerVM> AddLabourer(LabourerVM labourerVM, string userId) { var labourer = new Labourer { UserId = userId, FirstName = labourerVM.FirstName, LastName = labourerVM.LastName, PersonalId = labourerVM.PersonalId, City = labourerVM.City, Province = labourerVM.Province, Country = labourerVM.Country, Address = labourerVM.Address, Phone = labourerVM.Phone, IsActive = labourerVM.IsActive, Availability = ConvertWeekdaysToEnum(labourerVM) }; _context.Add(labourer); var labourerSkills = new List <LabourerSkill>(); foreach (var skill in labourerVM.Skills) { var newSkill = new LabourerSkill { Labourer = labourer, SkillId = skill.Id.Value }; labourerSkills.Add(newSkill); _context.LabourerSkills.Add(newSkill); } labourer.LabourerSkills = labourerSkills; await UpdateUserEmail(userId, labourerVM.Email); _context.SaveChanges(); labourerVM.Id = labourer.Id; return(labourerVM); }
public async Task <JsonResult> OnPostAsync([FromBody] LabourerRegisterVM input) { var user = new IdentityUser { UserName = input.User.Email.ToLower(), Email = input.User.Email }; var result = await _userManager.CreateAsync(user, input.User.Password); var errorList = new List <string>(); dynamic jsonResponse = new JObject(); if (result.Succeeded) { SystemUser sysUser = new SystemUser() { Email = input.User.Email, Role = "Labourer" }; Labourer labourer = new Labourer { LabourerFirstName = input.Labourer.LabourerFirstName, LabourerLastName = input.Labourer.LabourerLastName, LabourerSin = input.Labourer.LabourerSin, LabourerEmail = input.User.Email, IsAvailable = true, OnLeave = false }; _context.SystemUser.Add(sysUser); sysUser.Labourer.Add(labourer); _context.SaveChanges(); //if (input.AvailableDays != null) //{ // foreach (string day in input.AvailableDays) // { // Availability availability = _context.Availability.Where(a => a.AvailabilityDay == day).FirstOrDefault(); // AvailabilityLabourer availabilityLabourer = new AvailabilityLabourer // { // AvailabilityId = availability.AvailabilityId, // LabourerId = labourer.LabourerId // }; // _context.AvailabilityLabourer.Add(availabilityLabourer); // _context.SaveChanges(); // } //} //else //{ // await _userManager.DeleteAsync(user); // _context.Labourer.Remove(labourer); // _context.SystemUser.Remove(sysUser); // _context.SaveChanges(); // jsonResponse.status = "Available day is not valid"; // jsonResponse.token = " "; // return Json(jsonResponse); //} foreach (int skillId in input.Skills) { LabourerSkill labourerSkill = new LabourerSkill { SkillId = skillId, LabourerId = labourer.LabourerId }; _context.LabourerSkill.Add(labourerSkill); _context.SaveChanges(); } AuthRepo registerRepo = new AuthRepo(_signInManager, _config, _serviceProvider, _context); var tokenString = registerRepo.GenerateJSONWebToken(user); jsonResponse.token = tokenString; jsonResponse.status = "OK"; jsonResponse.role = "Labourer"; jsonResponse.email = sysUser.Email; jsonResponse.id = labourer.LabourerId; jsonResponse.name = labourer.LabourerFirstName + ' ' + labourer.LabourerLastName; return(Json(jsonResponse)); } foreach (IdentityError error in result.Errors) { errorList.Add(error.Description); } jsonResponse.status = 422; jsonResponse.description = errorList[0]; jsonResponse.token = ""; return(Json(jsonResponse)); }