Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
 public void AssignUserForCandidate(CandidateAssignedUser candidateAssignedUser)
 {
     _context.CandidateAssignedUser.Add(candidateAssignedUser);
     _context.SaveChanges();
 }