Exemplo n.º 1
0
        /// <summary>
        /// Gets the provider search URL.
        /// </summary>
        /// <param name="userId">The user identifier.</param>
        /// <param name="planType">Type of the plan.</param>
        /// <param name="auditLogBO">The audit log bo.</param>
        /// <returns></returns>
        public async Task <ProviderSearchBO> GetProviderSearchUrl(long userId, string planType, AuditLogBO auditLogBO)
        {
            var providerSearchBO = new ProviderSearchBO();
            var planTypeId       = 0;

            if (userId != 0)
            {
                var member = await _unitOfWork.GetRepository <Member>().GetFirstOrDefaultAsync(a => a, m => m.UserId == userId);

                if (member != null)
                {
                    if (planType.ToLower().Equals(MemberConstants.MedicalPlan))
                    {
                        planTypeId = 1;
                    }
                    else if (planType.ToLower().Equals(MemberConstants.DentalPlan) || planType.ToLower().Equals(MemberConstants.VisionPlan) || planType.ToLower().Equals(MemberConstants.DentalVisionPlan))
                    {
                        planTypeId = 2;
                    }
                    providerSearchBO = await GetProviderSearchUrl(planType, providerSearchBO, planTypeId, member);

                    //Log audit
                    //await AuditMapper.AuditLogging(auditLogBO, userId, AuditAction.Select, member);
                }
            }

            return(providerSearchBO);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Gets the provider search URL.
        /// </summary>
        /// <param name="planType">Type of the plan.</param>
        /// <param name="providerSearchBO">The provider search bo.</param>
        /// <param name="planTypeId">The plan type identifier.</param>
        /// <param name="member">The member.</param>
        /// <returns></returns>
        private async Task <ProviderSearchBO> GetProviderSearchUrl(string planType, ProviderSearchBO providerSearchBO, int planTypeId, Member member)
        {
            var memberSubscription = await _unitOfWork.GetRepository <MemberSubscription>().GetFirstOrDefaultAsync(a => a,
                                                                                                                   ms => ms.MemberId == member.MemberId);

            var memberSubscribedPlan = await _unitOfWork.GetRepository <MemberSubscribedPlan>().GetPagedListAsync(a => a,
                                                                                                                  msp => msp.MemberSubscriptionId == memberSubscription.MemberSubscriptionId && msp.PlanType == planTypeId,
                                                                                                                  pageIndex: BrokerConstants.PAGE_INDEX, pageSize: BrokerConstants.PAGE_SIZE);

            var planIds = memberSubscribedPlan.Items.Select(p => p.PlanId).ToList();

            var plans = await _unitOfWork.GetRepository <Plan>().GetPagedListAsync(a => a,
                                                                                   predicate: p => planIds.Contains(p.PlanId),
                                                                                   pageIndex: BrokerConstants.PAGE_INDEX, pageSize: BrokerConstants.PAGE_SIZE);

            var productIds = plans?.Items.Select(p => p.ProductId).ToList();

            if (productIds != null)
            {
                var productProviderNetworks = await _unitOfWork.GetRepository <ProductProviderNetwork>().GetPagedListAsync(a => a,
                                                                                                                           predicate: ppn => productIds.Contains(ppn.ProductId),
                                                                                                                           pageIndex: BrokerConstants.PAGE_INDEX, pageSize: BrokerConstants.PAGE_SIZE);

                if (productProviderNetworks != null)
                {
                    var networkIds = productProviderNetworks.Items.Select(item => item.ProviderNetworkId).ToList();
                    var planNames  = plans.Items.Select(p => p.Name).FirstOrDefault();

                    var providerNetworks = await _unitOfWork.GetRepository <ProviderNetwork>().GetPagedListAsync(a => a,
                                                                                                                 predicate: pn => networkIds.Contains(pn.ProviderNetworkId),
                                                                                                                 pageIndex: BrokerConstants.PAGE_INDEX, pageSize: BrokerConstants.PAGE_SIZE);

                    if (providerNetworks != null)
                    {
                        if (planNames.ToLower().Contains(MemberConstants.TrinityDentalVision) && planType.ToLower().Equals(MemberConstants.DentalPlan))
                        {
                            providerSearchBO = providerNetworks.Items.Where(i => i.ProviderNetworkId == 3).Select(item => new ProviderSearchBO
                            {
                                NetworkName = item.Name,
                                URL         = item.Url
                            }).FirstOrDefault();
                        }
                        else if (planNames.ToLower().Contains(MemberConstants.TrinityDentalVision) && planType.ToLower().Equals(MemberConstants.VisionPlan))
                        {
                            providerSearchBO = providerNetworks.Items.Where(i => i.ProviderNetworkId == 4).Select(item => new ProviderSearchBO
                            {
                                NetworkName = item.Name,
                                URL         = item.Url
                            }).FirstOrDefault();
                        }
                        else
                        {
                            providerSearchBO = providerNetworks.Items.Select(item => new ProviderSearchBO
                            {
                                NetworkName = item.Name,
                                URL         = item.Url
                            }).FirstOrDefault();
                        }
                    }
                }
            }

            return(providerSearchBO);
        }