public IResult InsertOrUpdateOpening(EntityAndApprovalViewModel entityAndApprovalViewModel)
        {
            var result = new Result
            {
                Operation = Operation.Create,
                Status    = Status.Success
            };

            try
            {
                var openingViewModel = entityAndApprovalViewModel.openingViewModel;
                if (openingViewModel.OpeningId != Guid.Empty)
                {
                    result.Body = UpdateOpening(entityAndApprovalViewModel);
                }
                else
                {
                    var openingModel = new Openings();
                    openingModel.MapFromViewModel(openingViewModel, (ClaimsIdentity)_principal.Identity);
                    var openingSkillList = new List <OpeningSkills>();
                    var openingSkills    = openingViewModel.PrimarySkillTypes.Union(openingViewModel.SecondarySkillTypes).ToList();

                    foreach (var item in openingSkills)
                    {
                        var openingSkill = new OpeningSkills
                        {
                            SkillId   = item.SkillId,
                            SkillType = item.OpeningSkillType
                        };
                        openingSkill.MapAuditColumns((ClaimsIdentity)_principal.Identity);
                        openingSkillList.Add(openingSkill);
                    }
                    _openingRepository.CreateOpening(openingModel, openingSkillList);

                    entityAndApprovalViewModel.openingViewModel.OpeningId = openingModel.OpeningId;
                    var approvalTransactionViewModel = _approvalManagerService.AddApprovalTransaction(entityAndApprovalViewModel);

                    // var users = _approvalRepository.GetUserForOpeningApproval(approvalTransactionViewModel);
                    //users.ForEach(user =>
                    //{
                    //    MailDetailModel mailDetail = new MailDetailModel();
                    //    mailDetail.EmailId = user.Email;
                    //    mailDetail.Subject = "Opening Approval";
                    //    mailDetail.Template = TemplateType.Appoval;
                    //    mailDetail.MessageBody = approvalTransactionViewModel;
                    //    GenericHelper.Send(mailDetail, _configuration);
                    //});
                    result.Body = approvalTransactionViewModel;
                }
            }
            catch (Exception e)
            {
                result.Message = e.Message;
                result.Status  = Status.Fail;
            }
            return(result);
        }
        public ApprovalTransactionViewModel UpdateOpening(EntityAndApprovalViewModel entityAndApprovalViewModel)
        {
            var openingViewModel = entityAndApprovalViewModel.openingViewModel;
            var openingModel     = new Openings();

            openingModel.MapFromViewModel(openingViewModel, (ClaimsIdentity)_principal.Identity);
            var openingDetail      = _openingRepository.GetByID(openingViewModel.OpeningId);
            var skillViewModelList = openingViewModel.PrimarySkillTypes.Union(openingViewModel.SecondarySkillTypes).ToList();
            var skillModelList     = openingDetail.OpeningSkills.Where(x => (x.IsActive && !x.IsDeleted)).Select(x => x.Skill).ToList();

            var existingSkills = skillViewModelList.Select(x => x.SkillId).Intersect(skillModelList.Select(x => x.SkillId)).ToList();
            var addingSkills   = skillViewModelList.Select(x => x.SkillId).Except(existingSkills).ToList();
            var removingSkills = skillModelList.Select(x => x.SkillId).Except(existingSkills).ToList();

            if (existingSkills.Any())
            {
                var openingSkills = openingDetail.OpeningSkills.Where(x => existingSkills.Contains(x.SkillId)).ToList();
                openingSkills.ForEach(x => x.MapAuditColumns((ClaimsIdentity)_principal.Identity));
            }

            if (removingSkills.Any())
            {
                var openingSkills = openingDetail.OpeningSkills.Where(x => removingSkills.Contains(x.SkillId)).ToList();
                openingSkills.ForEach(x => x.MapDeleteColumns((ClaimsIdentity)_principal.Identity));
            }

            var openingSkillList = new List <OpeningSkills>();

            if (addingSkills.Any())
            {
                var addingSkillList = skillViewModelList.Where(x => addingSkills.Contains(x.SkillId)).ToList();
                foreach (var item in addingSkillList)
                {
                    var openingSkill = new OpeningSkills()
                    {
                        OpeningId = openingDetail.OpeningId,
                        SkillId   = item.SkillId,
                        SkillType = item.OpeningSkillType
                    };
                    openingSkill.MapAuditColumns((ClaimsIdentity)_principal.Identity);
                    openingSkillList.Add(openingSkill);
                }
            }

            if (openingSkillList.Any())
            {
                _openingRepository.UpdateOpeningSkills(openingSkillList);
            }
            _openingRepository.Update(openingModel);
            entityAndApprovalViewModel.approvalTransactionViewModel.NextEventOrderNumber += 1;
            _approvalManagerService.ManageApprovalTransaction(entityAndApprovalViewModel);
            _openingRepository.SaveChanges();
            return(entityAndApprovalViewModel.approvalTransactionViewModel);
        }
        public ApprovalTransactionViewModel AddApprovalTransaction(EntityAndApprovalViewModel entityAndApprovalViewModel)
        {
            var approvalTransaction = new ApprovalTransactions();

            approvalTransaction.MapAuditColumns((ClaimsIdentity)_principal.Identity);

            var approvalTransactionViewModel = entityAndApprovalViewModel.approvalTransactionViewModel;

            approvalTransaction.ApprovalId       = approvalTransactionViewModel.ApprovalId;
            approvalTransaction.ApprovalActionId = approvalTransactionViewModel.ApprovalActionId;
            if (entityAndApprovalViewModel.openingViewModel != null)
            {
                approvalTransaction.EntityId = entityAndApprovalViewModel.openingViewModel.OpeningId;
            }
            else
            {
                approvalTransaction.EntityId = entityAndApprovalViewModel.candidateViewModel.CandidateId;
            }
            approvalTransaction.EntityType = 0;
            if (approvalTransactionViewModel.NextEventOrderNumber < 0)
            {
                approvalTransaction.NextEventOrderNumber = approvalTransactionViewModel.NextEventOrderNumber;
            }
            else
            {
                approvalTransaction.EventOrderNumber     = approvalTransactionViewModel.ApprovalEventOrder;
                approvalTransaction.NextEventOrderNumber = approvalTransaction.EventOrderNumber + 1;
            }

            var approvalTransactionDetail = new ApprovalTransactionDetails();

            approvalTransactionDetail.MapAuditColumns((ClaimsIdentity)_principal.Identity);
            approvalTransactionDetail.Comments         = approvalTransactionViewModel.Comments;
            approvalTransactionDetail.ApprovalActionId = approvalTransaction.ApprovalActionId;
            approvalTransactionDetail.EventOrderNumber = approvalTransaction.EventOrderNumber;
            approvalTransaction.ApprovalTransactionDetails.Add(approvalTransactionDetail);
            _approvalRepository.CreateApprovalTransaction(approvalTransaction);
            approvalTransactionViewModel.MapFromModel(approvalTransaction);
            var userId = GenericHelper.GetUserClaimDetails((ClaimsIdentity)_principal.Identity).UserId;

            if (entityAndApprovalViewModel.candidateViewModel != null)
            {
                _candidateRepository.OnInterviewFinished(approvalTransaction, userId);
            }

            return(approvalTransactionViewModel);
        }
Example #4
0
        public IResult InsertOrUpdateOpening([FromBody] EntityAndApprovalViewModel entityAndApprovalViewModel)
        {
            var createdOpening = _openingManagerService.InsertOrUpdateOpening(entityAndApprovalViewModel);

            return(createdOpening);
        }
        public IResult ManageApprovalTransaction([FromBody] EntityAndApprovalViewModel entityAndApprovalViewModel)
        {
            var createdEventRole = _approvalManager.ManageApprovalTransaction(entityAndApprovalViewModel);

            return(createdEventRole);
        }
        public IResult ManageApprovalTransaction(EntityAndApprovalViewModel entityAndApprovalViewModel)
        {
            var result = new Result
            {
                Operation = Operation.Read,
                Status    = Status.Success
            };

            try
            {
                var approvalTransactionViewModel = entityAndApprovalViewModel.approvalTransactionViewModel;
                if (approvalTransactionViewModel.ApprovalTransactionId == 0)
                {
                    result.Body = AddApprovalTransaction(entityAndApprovalViewModel);
                }
                else
                {
                    var approvalTransactionModel = _approvalRepository.GetApprovalTransactionByEntity(approvalTransactionViewModel.EntityId);

                    if (approvalTransactionViewModel.NextEventOrderNumber == 0)
                    {
                        approvalTransactionModel.IsApproved = true;
                        if (approvalTransactionViewModel.ApprovalId == (int)Approval.Candidate)
                        {
                            _candidateRepository.OnCandidateApproved(approvalTransactionModel);
                        }
                    }

                    if (approvalTransactionModel.NextEventOrderNumber == approvalTransactionViewModel.NextEventOrderNumber)
                    {
                        approvalTransactionModel.IsFurtherActionRequired = true;
                    }
                    else
                    {
                        approvalTransactionModel.IsFurtherActionRequired = false;
                    }

                    approvalTransactionModel.MapFromViewModel(approvalTransactionViewModel, (ClaimsIdentity)_principal.Identity);
                    approvalTransactionViewModel.Action = approvalTransactionModel.ApprovalAction.ApprovalActionName;
                    var approvalTransactionDetail = new ApprovalTransactionDetails();
                    approvalTransactionDetail.MapAuditColumns((ClaimsIdentity)_principal.Identity);
                    approvalTransactionDetail.ApprovalTransactionId = approvalTransactionViewModel.ApprovalTransactionId;
                    approvalTransactionDetail.ApprovalActionId      = approvalTransactionViewModel.ApprovalActionId;
                    approvalTransactionDetail.EventOrderNumber      = approvalTransactionViewModel.EventOrderNumber;
                    approvalTransactionDetail.Comments = approvalTransactionViewModel.Comments;
                    _approvalRepository.UpdateApprovalTransaction(approvalTransactionModel, approvalTransactionDetail);
                    var userId = GenericHelper.GetUserClaimDetails((ClaimsIdentity)_principal.Identity).UserId;
                    if (approvalTransactionViewModel.ApprovalId == (int)Approval.Candidate)
                    {
                        _candidateRepository.OnInterviewFinished(approvalTransactionModel, userId);
                    }

                    //if (approvalTransactionViewModel.ApprovalTransactionId != 0)
                    //{
                    //    if (approvalTransactionViewModel.ApprovalId == (int)Approval.Candidate)
                    //    {
                    //        UserViewModel userViewModel = new UserViewModel();
                    //        var user = _approvalRepository.GetUserForCandidateApproval(approvalTransactionViewModel.EntityId, approvalTransactionViewModel.NextEventOrderNumber);
                    //        userViewModel.MapFromModel(user);
                    //        approvalTransactionViewModel.User = userViewModel;
                    //        MailDetailModel mailDetail = new MailDetailModel();
                    //        mailDetail.EmailId = user.Email;
                    //        mailDetail.Subject = approvalTransactionViewModel.Action + " Candidate";
                    //        mailDetail.Template = TemplateType.Appoval;
                    //        mailDetail.MessageBody = approvalTransactionViewModel;
                    //        GenericHelper.Send(mailDetail, _configuration);
                    //    }
                    //    else
                    //    {
                    //        var users = _approvalRepository.GetUserForOpeningApproval(approvalTransactionViewModel);
                    //        users.ForEach(user =>
                    //        {
                    //            UserViewModel userViewModel = new UserViewModel();
                    //            MailDetailModel mailDetail = new MailDetailModel();
                    //            userViewModel.MapFromModel(user);
                    //            approvalTransactionViewModel.User = userViewModel;
                    //            mailDetail.EmailId = user.Email;
                    //            mailDetail.Subject = approvalTransactionViewModel.Action + " Opening";
                    //            mailDetail.Template = TemplateType.Appoval;
                    //            mailDetail.MessageBody = approvalTransactionViewModel;
                    //            GenericHelper.Send(mailDetail, _configuration);
                    //        });
                    //    }
                    //}
                    result.Body = approvalTransactionViewModel;
                }
            }
            catch (Exception e)
            {
                result.Message = e.Message;
                result.Status  = Status.Error;
            }
            return(result);
        }