public static async Task <List <string> > FetchMerchantsAsync()
        {
            var data = await CommerceDal.FetchMerchantsAsync();

            List <string> uniqueMerchants = data.Select(x => x.Name).Distinct().ToList();

            return(uniqueMerchants);
        }
        public static async Task <List <Customer> > FindCustomers(string filter)
        {
            List <Customer> users = new List <Customer>();
            Guid            tmp;

            if (filter.Length == 4)
            {
                List <CardInfo> userCards = await CommerceDal.FetchCardInfo(filter);

                List <Guid> userIds = userCards.Select(x => x.GlobalUserId)
                                      .ToList();

                users = await LomoUserDal.FetchUsersByIds(userIds);
            }
            else if (filter.Contains("@"))
            {
                users = await LomoUserDal.FetchUsersByFilter(new CustomerFilter { Email = filter });
            }
            else if (Guid.TryParse(filter, out tmp))
            {
                users = await LomoUserDal.FetchUsersByFilter(new CustomerFilter { UserId = tmp });
            }
            else
            {
                users = await LomoUserDal.FetchUsersByFilter(new CustomerFilter { MSIDorPUID = filter });
            }

            foreach (var user in users)
            {
                user.Id = await CommerceDal.FetchUserIdByGlobalId(user.GlobalId);

                var userCards = await CommerceDal.FetchCardInfo(user.GlobalId);

                if (userCards != null && userCards.Any())
                {
                    user.Cards = userCards;
                }
                else
                {
                    user.Cards = new List <CardInfo>();
                }
            }

            return(users);
        }
        public static List <TransactionType> FetchTransactionTypes()
        {
            var data = CommerceDal.FetchTransactionTypes();

            return(data);
        }
        public static async Task <List <CardBrand> > FetchCardBrandsAsync()
        {
            var data = await CommerceDal.FetchCardBrandsAsync();

            return(data);
        }
        public static async Task <List <Settlement> > FetchSettlementsByFilter(TransactionsFilter filter)
        {
            var data = await CommerceDal.FetchSettlementsByFilter(filter);

            return(data);
        }
        public static async Task <List <UserReferral> > FetchReferrals(Guid userId)
        {
            var data = await CommerceDal.FetchReferrals(userId);

            return(data);
        }