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 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)
                    };
                }
            }
        }
        public async Task<Dtos.GetSubscribersOutput> FindSubscribers(Dtos.GetSubscribersInput input)
        {
            Dtos.GetSubscribersOutput results = new Dtos.GetSubscribersOutput();
            List<Filter> filter = new List<Filter>();
            

            if (input.CompanyId.HasValue) filter.Add(
                new Filter { PropertyName = "ApiKey", Operation = Op.Equals, Value = input.CompanyId.Value });
            //if (input.TenantId.HasValue) filter.Add(
            //    new Filter { PropertyName = "TenantId", Operation = Op.Equals, Value = input.TenantId.Value });
            if (input.SubscribersEmail != null) filter.Add(
                new Filter { PropertyName = "Email", Operation = Op.Equals, Value = input.SubscribersEmail.ToLower() });
            if (input.SubscribersName != null) filter.Add(
                new Filter { PropertyName = "FullName", Operation = Op.Equals, Value = input.SubscribersName.ToLower() });
            if (input.SubscribersSms != null) filter.Add(
                new Filter { PropertyName = "SmsNumber", Operation = Op.Equals, Value = input.SubscribersSms.ToLower() });
            //if (input.TenantId.HasValue) filter.Add(
            //    new Filter { PropertyName = "TenantId", Operation = Op.Equals, Value = input.TenantId.Value });

            if (input.BeginSearchDate != null) filter.Add(
                 new Filter { PropertyName = "CreationTime", Operation = Op.GreaterThan, Value = input.BeginSearchDate.Value });
            if (input.EndSearchDate != null) filter.Add(
                 new Filter { PropertyName = "CreationTime", Operation = Op.LessThan, Value = input.EndSearchDate.Value });

            var deleg = ExpressionBuilder.GetExpression<Subscriber>(filter).Compile();

            if (input.TenantId.HasValue)
            {
                //using (CurrentUnitOfWork.SetFilterParameter(AbpDataFilters.MayHaveTenant, AbpDataFilters.Parameters.TenantId, input.TenantId))
                //{
                //CurrentUnitOfWork.SetFilterParameter(AbpDataFilters.MayHaveTenant, AbpDataFilters.Parameters.TenantId, input.TenantId);
                try
                {
                    var subscribers = _subscribersRepository.GetAll().Where(deleg).OrderByDescending(o => o.CreationTime).ToList();
                    var preSubscriberList = subscribers.MapTo<List<SubscribersDto>>();

                    //Get subscriber images from DocumentHero
                    foreach (var subscriber in preSubscriberList)
                    {
                        #region Get Subscriber Image
                        var inputFileExt = new List<FileExtDto>();
                        var inputFileExtValue = new FileExtDto() { Key = "SubscriberId", Value = subscriber.Id.ToString(), FileRefId = input.CompanyId.Value };
                        inputFileExt.Add(inputFileExtValue);
                        GetFileInput fileInput = new GetFileInput();
                        fileInput.ApiKey = input.CompanyId;
                        fileInput.FileMetadata = inputFileExt;
                        //var _fileExtRepository = _iocResolver.Resolve<IFileExtRepository>();
                        //var fileService = IocManager.Instance.Resolve<FileAppService>();
                        //var imageUri = fileService.GetFiles(fileInput);

                        //DocumentHero.Files.FileAppService fileAppService = new FileAppService();
                        var resultsImage = _documentHeroService.GetAllByKeyValue(fileInput);
                        if (resultsImage.Files != null)
                        {
                            subscriber.ImageUri = resultsImage.Files[0].Uri;
                        }
                        #endregion
                    }

                    return results = new Dtos.GetSubscribersOutput()
                    {
                        //Subscribers = subscribers.MapTo<List<SubscribersDto>>()
                        Subscribers = preSubscriberList
                    };
                }
                catch (System.Exception exc)
                {
                    throw exc;
                }
                //}
            }
            else
            {
                return results = new Dtos.GetSubscribersOutput()
                {
                    Subscribers = (await _subscribersRepository.GetAllListAsync()).MapTo<List<SubscribersDto>>()
                };
            }
        }