public Dtos.GetMembersOutput GetRequestMembers(Dtos.GetMemberInput input)
        {
            if (input.RequestId != null && input.CompanyId != null)
            {
                CreditsHero.Subscribers.Dtos.GetSubscribersInput inputSubscriber =
                    new GetSubscribersInput()
                {
                    CompanyId = input.CompanyId
                };

                CreditsHero.Subscribers.Dtos.GetSubscribersOutput results = new GetSubscribersOutput();
                var membersCreditsHero = (GetSubscribersOutput)_creditsHeroConnect
                                         .CallCreditsHeroService <GetSubscribersOutput>(results, inputSubscriber,
                                                                                        "api/services/app/Subscriber/GetSubscribersByCompany");

                return(new Dtos.GetMembersOutput
                {
                    Members = Mapper.Map <List <Dtos.MemberDto> >(membersCreditsHero)
                });
            }
            else
            {
                return(new Dtos.GetMembersOutput
                {
                    Members = new List <MemberDto>()
                });
            }
        }
        public async Task<ActionResult> Index()
        {
            var identity = (ClaimsIdentity)User.Identity;
            IEnumerable<Claim> claims2 = identity.Claims;
            if (!identity.IsAuthenticated)
            {
                return View();
                //return RedirectToAction("PublicIndex", "Home");
            }
            else
            {
                var role = identity.FindFirst(ClaimTypes.Role).Value;

                if (role == "Member")
                {
                    //Get the subscribers email to pass into CreditsHero in order to retreive summary
                    var user = await _userManager.GetUserByIdAsync(AbpSession.UserId.Value);

                    CreditsHero.Subscribers.Dtos.GetSubscribersInput input = new CreditsHero.Subscribers.Dtos.GetSubscribersInput()
                    {
                        SubscribersId = Int32.Parse(user.Id.ToString()),
                        CompanyId = Guid.Parse(System.Web.Configuration.WebConfigurationManager.AppSettings["creditsHero:APIKey"]),
                        SubscribersEmail = user.EmailAddress,
                        SubscribersName = user.UserName
                    };

                    var creditsHeroSubscriber = _memberAppService.GetMember(input);
                    input.SubscribersId = creditsHeroSubscriber.Id;

                    Models.Member.MemberSummaryViewModel results = new Models.Member.MemberSummaryViewModel();
                    Models.Member.MemberQuotesViewModel resultsQuotes = new Models.Member.MemberQuotesViewModel();
                    List<SubscribersInquiryDto> subscriberInquiries = _memberAppService.GetMemberInquiries(input).SubscriberInquiryList;
                    List<SubscribersRequestDto> subscriberRequests = _memberAppService.GetMemberRequests(input).SubscriberRequestList;
                    List<SubscriberQuoteDto> subscriberQuotes = _memberAppService.GetMemberQuotes(input).SubscriberQuotesList;
                    SubscribersCreditsDto subscriberCredits = _memberAppService.GetMemberCredits(input);

                    results.SubscriberInquiries.SubscriberInquiryList = new List<SubscribersInquiryDto>();

                    results.CreditsRemainingCount = subscriberCredits.TotalCredits;
                    results.SubscriberInquiriesCount = subscriberInquiries.Count;
                    //Build Inquiry Model
                    results.SubscriberInquiries.SubscriberInquiryList = subscriberInquiries;
                    //Build Requests Model
                    results.SubscriberRequests = subscriberRequests;
                    foreach (var item in subscriberQuotes)
                    {
                        var subscriberRequestItem = results.SubscriberRequests.Find(x => x.RequestId == item.RequestId);
                        if (subscriberRequestItem != null)
                        {
                            results.SubscriberRequests.Remove(subscriberRequestItem);
                        }
                    }
                    //Build Quotes Model
                    resultsQuotes.SubscriberQuotes = subscriberQuotes;
                    results.SubscriberQuotes = resultsQuotes;

                    return RedirectToAction("PublicIndex", "Home", results);
                }
                else if (role == "Customer")
                {
                    return View();
                }
                else
                {
                    GetMemberInput memberInput = new GetMemberInput() { CompanyId = Guid.Parse(System.Web.Configuration.WebConfigurationManager.AppSettings["creditsHero:APIKey"]) };
                    GetMembersOutput subscribersOutput = _memberAppService.GetMembers(memberInput);
                    Models.Member.MemberSummaryViewModel member = new Models.Member.MemberSummaryViewModel();

                    Decimal totalSpend = 0.0M;
                    Decimal totalCredits = 0.0M;
                    foreach (var item in subscribersOutput.Members)
                    {
                        totalSpend += item.SubscriberExt.TotalSpend.HasValue ? item.SubscriberExt.TotalSpend.Value : 0.0M;
                        totalCredits += item.SubscriberExt.TotalCredits.HasValue ? item.SubscriberExt.TotalCredits.Value : 0.0M;
                    }

                    member.TotalCredits = totalCredits;
                    member.TotalSpend = totalSpend;
                    member.TotalMembers = subscribersOutput.Members.Count;

                    return RedirectToAction("PublicIndex", "Home", new Models.Member.MemberSummaryViewModel
                    {
                        TotalCredits = member.TotalCredits,
                        TotalSpend = member.TotalSpend,
                        TotalMembers = member.TotalMembers
                    });
                }
            }
        }
        public Dtos.GetMembersOutput GetMembers(Dtos.GetMemberInput input)
        {
            if (input.MemberId != null)
            {
                var members = _memberRepository.GetMembersWithCompany(input.MemberId.Value);

                return(new Dtos.GetMembersOutput
                {
                    Members = Mapper.Map <List <Dtos.MemberDto> >(members)
                });
            }
            else
            {
                if (input.CompanyId.HasValue)
                {
                    CreditsHero.Subscribers.Dtos.GetSubscribersInput inputSubscriber = new GetSubscribersInput()
                    {
                        CompanyId = input.CompanyId
                    };

                    CreditsHero.Subscribers.Dtos.GetSubscribersOutput results = new GetSubscribersOutput();
                    var membersCreditsHero = (GetSubscribersOutput)_creditsHeroConnect.CallCreditsHeroService <GetSubscribersOutput>(results, inputSubscriber,
                                                                                                                                     "api/services/app/Subscriber/GetSubscribers");

                    var membersLocal = _memberRepository.GetMembersWithCompany();

                    Dtos.GetMembersOutput members = new Dtos.GetMembersOutput();
                    members.Members = new List <Dtos.MemberDto>();

                    foreach (var item in membersCreditsHero.Subscribers)
                    {
                        SubscribersDto subscriberExt = new SubscribersDto()
                        {
                            Email        = item.Email,
                            FullName     = item.FullName,
                            Id           = item.Id,
                            SmsNumber    = item.SmsNumber,
                            SubscriberId = item.SubscriberId,
                            TotalCredits = item.TotalCredits,
                            TotalSpend   = item.TotalSpend
                        };
                        var member = membersLocal.Find(c => c.Email == item.Email);
                        if (member != null)
                        {
                            Dtos.MemberDto subscriber = new Dtos.MemberDto()
                            {
                                SubscriberExt = subscriberExt,
                                FullName      = member != null ? member.FullName : "",
                                Id            = member != null ? member.Id : 0,
                                CellPhone     = member != null ? member.CellPhone : "",
                                Company       = member.Company != null?Mapper.Map <Companies.Dtos.CompanyDto>(member.Company) : new Companies.Dtos.CompanyDto(),
                                                    CompanyRefId = member != null ? member.CompanyRefId : 0,
                                                    Email        = member != null ? member.Email : "",
                                                    Fax          = member != null ? member.Fax : "",
                                                    JobTitle     = member != null ? member.JobTitle : "",
                                                    Phone        = member != null ? member.Phone : "",
                                                    UserRefId    = member != null ? member.UserRefId : 0
                            };
                            members.Members.Add(subscriber);
                        }
                    }
                    return(members);
                }
                else
                {
                    var members = _memberRepository.GetMembersWithCompany();

                    return(new Dtos.GetMembersOutput
                    {
                        Members = Mapper.Map <List <Dtos.MemberDto> >(members)
                    });
                }
            }
        }