public async Task PutCandidate(Guid id, IFormFile image, IFormFile cv, CandidateInputModel inputCandidate, string currentUsername) { var candidate = await _applicationDbContext.Candidates.Include(c => c.CandidateLanguages).Include(c => c.CandidateFrameworks).FirstOrDefaultAsync(c => c.Id == id); if (candidate != null) { candidate.FirstName = inputCandidate.FirstName; candidate.LastName = inputCandidate.LastName; candidate.University = inputCandidate.University; candidate.DOB = inputCandidate.DOB; candidate.Email = inputCandidate.Email; candidate.PhoneNumber = inputCandidate.PhoneNumber; candidate.LinkedIn = inputCandidate.LinkedIn; candidate.Facebook = inputCandidate.Facebook; candidate.Status = inputCandidate.StatusId; candidate.Note = inputCandidate.Note; candidate.ModifiedBy = currentUsername; candidate.ModifiedDate = DateTime.Now; if (image != null) { candidate.Avatar = await SaveFile(image); } if (cv != null) { candidate.CV = await SaveFile(cv); } var candidateLanguages = candidate.CandidateLanguages; foreach (var item in candidateLanguages) { item.IsActive = false; item.ModifiedBy = currentUsername; item.ModifiedDate = DateTime.Now; } foreach (var item in inputCandidate.LanguageIds) { if (candidateLanguages.Select(c => c.LanguageId).Contains(item)) { var cd = candidateLanguages.FirstOrDefault(c => c.LanguageId == item); cd.IsActive = true; cd.ModifiedBy = currentUsername; cd.ModifiedDate = DateTime.Now; } else if (!candidateLanguages.Select(c => c.LanguageId).Contains(item)) { var candidateLanguage = new CandidateLanguage { Id = Guid.NewGuid(), CandidateId = id, LanguageId = item, IsActive = true, CreatedBy = currentUsername, CreatedDate = DateTime.Now, ModifiedBy = currentUsername, ModifiedDate = DateTime.Now }; await _applicationDbContext.AddAsync(candidateLanguage); } } var candidateFrameworks = candidate.CandidateFrameworks; foreach (var item in candidateFrameworks) { item.IsActive = false; item.ModifiedBy = currentUsername; item.ModifiedDate = DateTime.Now; } foreach (var item in inputCandidate.FrameworkIds) { if (candidateFrameworks.Select(c => c.FrameworkId).Contains(item)) { var cd = candidateFrameworks.FirstOrDefault(c => c.FrameworkId == item); cd.IsActive = true; cd.ModifiedBy = currentUsername; cd.ModifiedDate = DateTime.Now; } else if (!candidateFrameworks.Select(c => c.FrameworkId).Contains(item)) { var candidateFramework = new CandidateFramework { Id = Guid.NewGuid(), CandidateId = id, FrameworkId = item, IsActive = true, CreatedBy = currentUsername, CreatedDate = DateTime.Now, ModifiedBy = currentUsername, ModifiedDate = DateTime.Now }; await _applicationDbContext.AddAsync(candidateFramework); } } } await _applicationDbContext.SaveChangesAsync(); }
public async Task AddCandidate(IFormFile image, IFormFile cv, CandidateInputModel inputCandidate, string currentUsername) { Guid id = Guid.NewGuid(); var candidate = new Candidate { Id = id, FirstName = inputCandidate.FirstName, LastName = inputCandidate.LastName, University = inputCandidate.University, DOB = inputCandidate.DOB, Status = inputCandidate.StatusId, Email = inputCandidate.Email, PhoneNumber = inputCandidate.PhoneNumber, LinkedIn = inputCandidate.LinkedIn, Facebook = inputCandidate.Facebook, Note = inputCandidate.Note, IsActive = true, CreatedBy = currentUsername, CreatedDate = DateTime.Now, ModifiedBy = currentUsername, ModifiedDate = DateTime.Now, }; if (image != null) { candidate.Avatar = await SaveFile(image); } if (cv != null) { candidate.CV = await SaveFile(cv); } await _applicationDbContext.AddAsync(candidate); foreach (var item in inputCandidate.LanguageIds) { var candidateLanguage = new CandidateLanguage { Id = Guid.NewGuid(), CandidateId = id, LanguageId = item, IsActive = true, CreatedBy = currentUsername, CreatedDate = DateTime.Now, ModifiedBy = currentUsername, ModifiedDate = DateTime.Now }; await _applicationDbContext.AddAsync(candidateLanguage); } foreach (var item in inputCandidate.FrameworkIds) { var candidateFramwork = new CandidateFramework { Id = Guid.NewGuid(), CandidateId = id, FrameworkId = item, IsActive = true, CreatedBy = currentUsername, CreatedDate = DateTime.Now, ModifiedBy = currentUsername, ModifiedDate = DateTime.Now }; await _applicationDbContext.AddAsync(candidateFramwork); } await _applicationDbContext.SaveChangesAsync(); }