public async Task <JsonResult> GetMemberDemographics(int userId) { var jwt = await HttpContext.GetTokenAsync(BrokerConstants.TokenScheme, BrokerConstants.AccessToken); var auditLogBO = new AuditLogBO(_appSettings.Value.ApplicationName, jwt, _httpContextAccessor); var tokenObject = UtilityHelper.ParseJwt(jwt); var rolesJson = tokenObject.Claims.FirstOrDefault(c => c.Type.ToLower() == MemberConstants.Roles.ToLower()).Value; var customRoles = JsonConvert.DeserializeObject <List <CustomRolesBO> >(rolesJson); var demographicsPermissionBO = new DemographicsPermissionBO { UserId = userId, AuditLogBO = auditLogBO }; if (customRoles != null) { demographicsPermissionBO.SubscriberInfoPermission = customRoles.Any(r => r.Privileges. Any(p => p.Name.ToLower() == MemberConstants.MemberSubscriberInfoPermission.ToLower() && p.Permission.Any(pe => (int)pe.CanRead == 1))) ? 1 : 0; demographicsPermissionBO.DependentInfoPermission = customRoles.Any(r => r.Privileges. Any(p => p.Name.ToLower() == MemberConstants.MemberDependentInfoPermission.ToLower() && p.Permission.Any(pe => (int)pe.CanRead == 1))) ? 1 : 0; demographicsPermissionBO.ServiceInfoPermission = customRoles.Any(r => r.Privileges. Any(p => p.Name.ToLower() == MemberConstants.MemberServiceInfoPermission.ToLower() && p.Permission.Any(pe => (int)pe.CanRead == 1))) ? 1 : 0; demographicsPermissionBO.DigitalIdCardPermission = customRoles.Any(r => r.Privileges. Any(p => p.Name.ToLower() == MemberConstants.MemberIdCardsPermission.ToLower() && p.Permission.Any(pe => (int)pe.CanRead == 1))) ? 1 : 0; } var memberDemographics = await _demographicsService.GetMemberDemographics(demographicsPermissionBO); return(new JsonResult(memberDemographics)); }
/// <summary> /// Gets the member demographics. /// </summary> /// <param name="demographicsPermissionBO">The demographics permission bo.</param> /// <returns></returns> public Task <MemberDemographicsBO> GetMemberDemographics(DemographicsPermissionBO demographicsPermissionBO) { if (demographicsPermissionBO.UserId <= 0) { throw new CustomException(nameof(MemberConstants.MemberUserIdForMemberDemographicsEmptyErrorCode)); } var memberDemographics = _demographicsDataAccess.GetMemberDemographics(demographicsPermissionBO); if (memberDemographics == null) { throw new CustomException(nameof(MemberConstants.MemberMemberDemographicsEmptyErrorCode)); } return(memberDemographics); }
/// <summary> /// Gets the member demographics. /// </summary> /// <param name="demographicsPermissionBO">The demographics permission bo.</param> /// <returns></returns> public async Task <MemberDemographicsBO> GetMemberDemographics(DemographicsPermissionBO demographicsPermissionBO) { //var memberRepo = _unitOfWork.GetRepository<Member>(); //var memberDependentRepo = _unitOfWork.GetRepository<MemberDependent>(); var member = await _unitOfWork.GetRepository <Member>().GetFirstOrDefaultAsync(a => a, b => b.UserId == demographicsPermissionBO.UserId); var dependents = await _unitOfWork.GetRepository <MemberDependent>().GetPagedListAsync(a => a, predicate: b => b.MemberId == member.MemberId, pageIndex: BrokerConstants.PAGE_INDEX, pageSize: BrokerConstants.PAGE_SIZE); var memberDependent = dependents.Items.ToList(); var memberDetails = await _unitOfWork.GetRepository <MemberDetail>().GetFirstOrDefaultAsync(a => a, s => s.MemberDetailId == member.MemberDetailId); var memberAddress = await _unitOfWork.GetRepository <MemberAddress>().GetFirstOrDefaultAsync(a => a, s => s.MemberId == member.MemberId); var memberSubscriptionPlan = await _unitOfWork.GetRepository <MemberSubscribedPlan>().GetPagedListAsync(a => a, s => s.MemberSubscription.MemberId == member.MemberId, pageIndex: BrokerConstants.PAGE_INDEX, pageSize: BrokerConstants.PAGE_SIZE); var memberSubscription = await _unitOfWork.GetRepository <MemberSubscription>().GetPagedListAsync(a => a, s => s.MemberId == member.MemberId, pageIndex: BrokerConstants.PAGE_INDEX, pageSize: BrokerConstants.PAGE_SIZE); var detailIds = dependents.Items.Select(d => d.MemberDetailId).ToList(); var memberDemographicsBO = new MemberDemographicsBO(); if (demographicsPermissionBO.SubscriberInfoPermission == MemberConstants.HasPermission) { memberDemographicsBO = MemberMapper.Map(member, memberAddress, memberDetails, memberSubscription.Items); } var dependentDetails = await _unitOfWork.GetRepository <MemberDetail>().GetPagedListAsync(a => a, predicate: md => detailIds.Contains(md.MemberDetailId), pageIndex: BrokerConstants.PAGE_INDEX, pageSize: BrokerConstants.PAGE_SIZE); if (dependentDetails != null && (demographicsPermissionBO.DependentInfoPermission == MemberConstants.HasPermission || demographicsPermissionBO.ServiceInfoPermission == MemberConstants.HasPermission || demographicsPermissionBO.DigitalIdCardPermission == MemberConstants.HasPermission)) { var planIds = memberSubscriptionPlan.Items.Select(d => d.PlanId).ToList(); var plans = await _unitOfWork.GetRepository <Plan>().GetPagedListAsync(a => a, s => planIds.Contains(s.PlanId), include: src => src.Include(e => e.Product), pageIndex: BrokerConstants.PAGE_INDEX, pageSize: BrokerConstants.PAGE_SIZE); var paidThroughDate = memberSubscription.Items.Select(j => j.EndDate).FirstOrDefault(); var levelOfCoverage = memberSubscriptionPlan.Items.Select(j => j.FamilyIndicator).FirstOrDefault(); var planNames = new List <string>(); var productNames = new List <string>(); planNames = plans.Items.Select(p => p.Name).ToList(); productNames = plans.Items.Select(p => p.Product.Name).ToList(); var products = new List <ProductInformationBO>(); foreach (var plan in plans.Items.OrderBy(p => p.Type)) { if (!string.IsNullOrEmpty(plan.Product.ProductLabel) && plan.Product.ProductLabel.ToLower().Equals(MemberConstants.DentalVisionPlan)) { var productDental = new ProductInformationBO { Name = plan.Product.Name, ProductCode = plan.Product.ProductCode.Value, ProductLabel = $"{MemberConstants.DentalPlan.Substring(0, 1).ToUpper()}{MemberConstants.DentalPlan.Substring(1)}" }; products.Add(productDental); var productVision = new ProductInformationBO { Name = plan.Product.Name, ProductCode = plan.Product.ProductCode.Value, ProductLabel = $"{MemberConstants.VisionPlan.Substring(0, 1).ToUpper()}{MemberConstants.VisionPlan.Substring(1)}" }; products.Add(productVision); } else { var productInformation = new ProductInformationBO { Name = plan.Product.Name, ProductCode = plan.Product.ProductCode.Value, ProductLabel = (plan.Type == (int)PlanType.Primary)? $"{MemberConstants.MedicalPlan.Substring(0, 1).ToUpper()}{MemberConstants.MedicalPlan.Substring(1)}" : plan.Product.ProductLabel }; products.Add(productInformation); } } if (products.Count(p => p.ProductLabel.ToLower() == MemberConstants.MedicalPlan) > 1) { products.RemoveAt(1); } memberDemographicsBO.DependentInformation = new List <DependentInformationBO>(); if (demographicsPermissionBO.ServiceInfoPermission == MemberConstants.HasPermission || demographicsPermissionBO.DigitalIdCardPermission == MemberConstants.HasPermission) { memberDemographicsBO.ServiceInformation = new List <ServiceInformationBO>(); var subscriberCoverageInfo = MemberMapper.Map(member, memberDetails, planNames, productNames, products, levelOfCoverage, paidThroughDate); memberDemographicsBO.ServiceInformation.Add(subscriberCoverageInfo); } foreach (var memDe in dependentDetails.Items) { var status = await SetDependentStatus(memDe.MemberDetailId); if (demographicsPermissionBO.DependentInfoPermission == MemberConstants.HasPermission) { var relationId = memberDependent.Where(a => a.MemberDetailId == memDe.MemberDetailId).Select(j => j.RelationshipId).FirstOrDefault(); var dependentInformation = new DependentInformationBO { DependentDetailId = memDe.MemberDetailId, FirstName = memDe.FirstName, LastName = memDe.LastName, MemberName = memDe.FirstName + memDe.LastName, DependentRelationship = ((Relationship)relationId).ToString(), DateOfBirth = memDe.DateOfBirth, DependentStatus = ((DependentStatus)status).ToString(), // DependentStatus = AvatarImageId = memDe.AvatarImageId, PaidThroughDate = paidThroughDate }; memberDemographicsBO.DependentInformation.Add(dependentInformation); } if (demographicsPermissionBO.ServiceInfoPermission == MemberConstants.HasPermission || demographicsPermissionBO.DigitalIdCardPermission == MemberConstants.HasPermission) { var serviceInformation = new ServiceInformationBO { DependentDetailId = memDe.MemberDetailId, FirstName = memDe.FirstName, LastName = memDe.LastName, MemberName = memDe.FirstName + memDe.LastName, MemberType = MemberConstants.Dependent, DigitalCardId = dependents.Items.Where(a => a.MemberDetailId == memDe.MemberDetailId).Select(a => a.DigitalIdcardId).FirstOrDefault() ?? 0, PaidThroughDate = paidThroughDate, PlanName = planNames, Product = productNames, ProductInformation = products, LevelOfCoverage = ((FamilyIndicator)levelOfCoverage).ToString(), DependentStatus = ((DependentStatus)status).ToString() }; memberDemographicsBO.ServiceInformation.Add(serviceInformation); } } memberDemographicsBO.DependentInformation = memberDemographicsBO.DependentInformation.OrderBy(a => a.DependentStatus).ToList(); } return(memberDemographicsBO); }