public IResult AssignUserForCandidate(List <CandidateAssignedUserModel> candidateAssignedUserList) { var result = new Result { Operation = Operation.Create, Status = Status.Success }; try { var assignedUserList = _candidateRepository.GetAssignedUsersByID(candidateAssignedUserList[0].CandidateId); var approvalEvents = _approvalRepository.GetApprovalEvents((int)Approval.Candidate); var addingAssignedUsers = new List <CandidateAssignedUserModel>(); if (assignedUserList.Any()) { foreach (var approvalEvent in approvalEvents) { var candidateAssignedUserModelsList = candidateAssignedUserList.Where(x => x.ApprovalEventId == approvalEvent.ApprovalEventId).Select(y => y.UserId).ToList(); var candidateAssignedUserModels = assignedUserList.Where(x => x.ApprovalEventId == approvalEvent.ApprovalEventId).Select(y => y.UserId).ToList(); if (candidateAssignedUserModelsList.Any() && candidateAssignedUserModels.Any()) { var existingAssignedUsers = candidateAssignedUserModelsList.Intersect(candidateAssignedUserModels).ToList(); var addAssignedUsers = candidateAssignedUserModelsList.Except(existingAssignedUsers).ToList(); var removingAssignedusers = candidateAssignedUserModels.Except(existingAssignedUsers).ToList(); if (existingAssignedUsers.Any()) { var assignedUsers = assignedUserList.Where(x => existingAssignedUsers.Contains(x.UserId) && x.ApprovalEventId == approvalEvent.ApprovalEventId).ToList(); assignedUsers.ForEach(x => x.MapAuditColumns((ClaimsIdentity)_principal.Identity)); } if (removingAssignedusers.Any()) { var assignedUsers = assignedUserList.Where(x => removingAssignedusers.Contains(x.UserId) && x.ApprovalEventId == approvalEvent.ApprovalEventId).ToList(); assignedUsers.ForEach(x => x.MapDeleteColumns((ClaimsIdentity)_principal.Identity)); } if (addAssignedUsers.Any()) { addingAssignedUsers = candidateAssignedUserList.Where(x => addAssignedUsers.Contains(x.UserId) && x.ApprovalEventId == approvalEvent.ApprovalEventId).ToList(); } } } } else { addingAssignedUsers = candidateAssignedUserList; } if (addingAssignedUsers.Any()) { foreach (var assignedUser in addingAssignedUsers) { var assignedUserForCandidate = new CandidateAssignedUser(); assignedUserForCandidate.MapFromViewModel(assignedUser, (ClaimsIdentity)_principal.Identity); _candidateRepository.AssignUserForCandidate(assignedUserForCandidate); MailDetailModel mailDetail = new MailDetailModel(); mailDetail.EmailId = assignedUser.User.Email; mailDetail.Subject = "Registration Confirmation"; mailDetail.Template = TemplateType.ScheduleUserForInterview; mailDetail.MessageBody = assignedUser; GenericHelper.Send(mailDetail, _configuration, _hostingEnvironment); } } result.Body = candidateAssignedUserList; } catch (Exception e) { result.Message = e.Message; result.Status = Status.Error; } return(result); }
public void AssignUserForCandidate(CandidateAssignedUser candidateAssignedUser) { _context.CandidateAssignedUser.Add(candidateAssignedUser); _context.SaveChanges(); }