public IResult GetApprovalEvents(int approvalId, Guid entityId) { var result = new Result { Operation = Operation.Read, Status = Status.Success }; try { var approvalEventAndTransactionDetail = new ApprovalEventAndTransactionDetail(); var data = _approvalRepository.GetApprovalEvents(approvalId); if (data.Any()) { approvalEventAndTransactionDetail.approvalEventViewModel = data.Select(t => { var eventViewModel = new ApprovalEventViewModel(); eventViewModel.MapFromModel(t); if (t.ApprovalActions.Any()) { var actionViewModel = new List <ApprovalActionViewModel>(); eventViewModel.ApprovalActions = actionViewModel .MapFromModel <ApprovalActions, ApprovalActionViewModel>(t.ApprovalActions.ToList()); var users = _approvalRepository.GetApprovedUsers(t.ApprovalEventId); var userModels = new List <UserViewModel>(); eventViewModel.Users = userModels.MapFromModel <Users, UserViewModel>(users); } return(eventViewModel); }).ToList(); } var userId = GetUserId(); var permissibleEvent = 0; if (entityId != Guid.Empty) { var approvalTransactionViewModel = new ApprovalTransactionViewModel(); var approvalTransactionModel = _approvalRepository.GetApprovalTransactionByEntity(entityId); if (approvalTransactionModel != null) { approvalEventAndTransactionDetail.approvalTransactionViewModel = (ApprovalTransactionViewModel)approvalTransactionViewModel.MapFromModel(approvalTransactionModel); } permissibleEvent = _approvalRepository.GetApprovalEventOrderOfUser(entityId, userId, approvalId); } if (permissibleEvent > 0 && approvalEventAndTransactionDetail.approvalTransactionViewModel != null) { approvalEventAndTransactionDetail.approvalTransactionViewModel.PermissibleEvent = permissibleEvent; } result.Body = approvalEventAndTransactionDetail; } catch (Exception e) { result.Message = e.Message; result.Status = Status.Error; } return(result); }
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); }