示例#1
0
        /// <summary>
        /// Binds the currencies list.
        /// </summary>
        private void BindCurrenciesList()
        {
            CurrencyDto dto = CatalogContext.Current.GetCurrencyDto();

            CurrencyFilter.DataSource = dto.Currency;
            CurrencyFilter.DataBind();
        }
示例#2
0
        public async Task <int> Count(CurrencyFilter filter)
        {
            IQueryable <CurrencyDAO> Currencies = DataContext.Currency.AsNoTracking();

            Currencies = DynamicFilter(Currencies, filter);
            return(await Currencies.CountAsync());
        }
示例#3
0
        private IQueryable <CurrencyDAO> OrFilter(IQueryable <CurrencyDAO> query, CurrencyFilter filter)
        {
            if (filter.OrFilter == null || filter.OrFilter.Count == 0)
            {
                return(query);
            }
            IQueryable <CurrencyDAO> initQuery = query.Where(q => false);

            foreach (CurrencyFilter CurrencyFilter in filter.OrFilter)
            {
                IQueryable <CurrencyDAO> queryable = query;
                if (CurrencyFilter.Id != null && CurrencyFilter.Id.HasValue)
                {
                    queryable = queryable.Where(q => q.Id, CurrencyFilter.Id);
                }
                if (CurrencyFilter.Code != null && CurrencyFilter.Code.HasValue)
                {
                    queryable = queryable.Where(q => q.Code, CurrencyFilter.Code);
                }
                if (CurrencyFilter.Name != null && CurrencyFilter.Name.HasValue)
                {
                    queryable = queryable.Where(q => q.Name, CurrencyFilter.Name);
                }
                initQuery = initQuery.Union(queryable);
            }
            return(initQuery);
        }
        public async Task <ActionResult <List <Contract_CurrencyDTO> > > SingleListCurrency([FromBody] Contract_CurrencyFilterDTO Contract_CurrencyFilterDTO)
        {
            if (UnAuthorization)
            {
                return(Forbid());
            }
            if (!ModelState.IsValid)
            {
                throw new BindException(ModelState);
            }

            CurrencyFilter CurrencyFilter = new CurrencyFilter();

            CurrencyFilter.Skip      = 0;
            CurrencyFilter.Take      = 20;
            CurrencyFilter.OrderBy   = CurrencyOrder.Id;
            CurrencyFilter.OrderType = OrderType.ASC;
            CurrencyFilter.Selects   = CurrencySelect.ALL;
            CurrencyFilter.Id        = Contract_CurrencyFilterDTO.Id;
            CurrencyFilter.Code      = Contract_CurrencyFilterDTO.Code;
            CurrencyFilter.Name      = Contract_CurrencyFilterDTO.Name;

            List <Currency> Currencies = await CurrencyService.List(CurrencyFilter);

            List <Contract_CurrencyDTO> Contract_CurrencyDTOs = Currencies
                                                                .Select(x => new Contract_CurrencyDTO(x)).ToList();

            return(Contract_CurrencyDTOs);
        }
示例#5
0
        public async Task <List <Store_CurrencyDTO> > SingleListCurrency([FromBody] Store_CurrencyFilterDTO Store_CurrencyFilterDTO)
        {
            if (!ModelState.IsValid)
            {
                throw new BindException(ModelState);
            }

            CurrencyFilter CurrencyFilter = new CurrencyFilter();

            CurrencyFilter.Skip      = 0;
            CurrencyFilter.Take      = 20;
            CurrencyFilter.OrderBy   = CurrencyOrder.Id;
            CurrencyFilter.OrderType = OrderType.ASC;
            CurrencyFilter.Selects   = CurrencySelect.ALL;
            CurrencyFilter.Id        = Store_CurrencyFilterDTO.Id;
            CurrencyFilter.Code      = Store_CurrencyFilterDTO.Code;
            CurrencyFilter.Name      = Store_CurrencyFilterDTO.Name;

            List <Currency> Currencies = await CurrencyService.List(CurrencyFilter);

            List <Store_CurrencyDTO> Store_CurrencyDTOs = Currencies
                                                          .Select(x => new Store_CurrencyDTO(x)).ToList();

            return(Store_CurrencyDTOs);
        }
示例#6
0
        public void Get_Currencies_ArgumentExeption()
        {
            // arrage
            var paging = new Paging();
            var filter = new CurrencyFilter()
            {
                StartDate = new DateTime(2017, 4, 2), EndDate = new DateTime(2017, 4, 1)
            };

            // act & assert
            Assert.ThrowsExceptionAsync <ArgumentException>(() => rateService.GetCurrenciesAsync(paging, filter));
        }
示例#7
0
        public async Task <List <Currency> > List(CurrencyFilter CurrencyFilter)
        {
            try
            {
                List <Currency> Currencys = await UOW.CurrencyRepository.List(CurrencyFilter);

                return(Currencys);
            }
            catch (Exception ex)
            {
                await Logging.CreateSystemLog(ex, nameof(CurrencyService));
            }
            return(null);
        }
示例#8
0
        public async Task <int> Count(CurrencyFilter CurrencyFilter)
        {
            try
            {
                int result = await UOW.CurrencyRepository.Count(CurrencyFilter);

                return(result);
            }
            catch (Exception ex)
            {
                await Logging.CreateSystemLog(ex, nameof(CurrencyService));
            }
            return(0);
        }
示例#9
0
        public async Task <List <Currency> > List(CurrencyFilter filter)
        {
            if (filter == null)
            {
                return(new List <Currency>());
            }
            IQueryable <CurrencyDAO> CurrencyDAOs = DataContext.Currency.AsNoTracking();

            CurrencyDAOs = DynamicFilter(CurrencyDAOs, filter);
            CurrencyDAOs = DynamicOrder(CurrencyDAOs, filter);
            List <Currency> Currencies = await DynamicSelect(CurrencyDAOs, filter);

            return(Currencies);
        }
示例#10
0
        public async Task <ProcessResult <int> > CountAsync(CurrencyFilter filter)
        {
            IQueryable <Currency> q = context.Currencies;

            q = SetFilter(q, filter);

            Func <Task <int> > action = async() =>
            {
                var countItems = await q.CountAsync();

                return(countItems);
            };

            return(await Process.RunAsync(action));
        }
示例#11
0
 private IQueryable <Currency> SetFilter(IQueryable <Currency> q, CurrencyFilter f)
 {
     if (f == null)
     {
         return(q);
     }
     if (!String.IsNullOrEmpty(f.searchString))
     {
         q = q.Where(s => (
                         s.Name.Contains(f.searchString) ||
                         s.Symbol.Contains(f.searchString)
                         ));
     }
     return(q);
 }
示例#12
0
        public async Task <IActionResult> Count(CurrencyFilter filter)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var result = await _CurrencyService.CountAsync(filter);

            if (!result.Succeeded)
            {
                return(BadRequest(result.Errors));
            }

            return(Ok(result));
        }
示例#13
0
                public virtual XElement GenerateQueryRq()
                {
                    XElement xElement = new XElement(typeof(T).Name + "QueryRq");

                    xElement.Add(TxnID?.ToQBXML(nameof(TxnID)));
                    xElement.Add(RefNumber?.ToQBXML(nameof(RefNumber)));
                    xElement.Add(RefNumberCaseSensitive?.ToQBXML(nameof(RefNumberCaseSensitive)));
                    xElement.Add(MaxReturned?.ToQBXML(nameof(MaxReturned)));
                    xElement.Add(ModifiedDateRangeFilter?.ToQBXML(nameof(ModifiedDateRangeFilter)));
                    xElement.Add(TxnDateRangeFilter?.ToQBXML(nameof(TxnDateRangeFilter)));
                    xElement.Add(EntityFilter?.ToQBXML(nameof(EntityFilter)));
                    xElement.Add(AccountFilter?.ToQBXML(nameof(AccountFilter)));
                    xElement.Add(MatchFilter?.ToQBXML(nameof(MatchFilter)));
                    xElement.Add(MatchRangeFilter?.ToQBXML(nameof(MatchRangeFilter)));
                    xElement.Add(CurrencyFilter?.ToQBXML(nameof(CurrencyFilter)));
                    xElement.Add(OwnerID?.ToQBXML(nameof(OwnerID)));
                    return(xElement);
                }
示例#14
0
        public async Task <bool> ValidateId(Currency Currency)
        {
            CurrencyFilter CurrencyFilter = new CurrencyFilter
            {
                Skip = 0,
                Take = 10,
                Id   = new IdFilter {
                    Equal = Currency.Id
                },
                Selects = CurrencySelect.Id
            };

            int count = await UOW.CurrencyRepository.Count(CurrencyFilter);

            if (count == 0)
            {
                Currency.AddError(nameof(CurrencyValidator), nameof(Currency.Id), ErrorCode.IdNotExisted);
            }
            return(count == 1);
        }
示例#15
0
        public IEnumerable <Currency> GetCurrencies(Paging paging, CurrencyFilter filter)
        {
            if (filter != null && filter.StartDate != null && filter.EndDate != null && filter.StartDate > filter.EndDate)
            {
                throw new ArgumentException("Start date must be less than end date");
            }

            Func <IQueryable <Currency>, IQueryable <Currency> > query = q =>
            {
                if (filter?.Name != null)
                {
                    q = q.Where(x => x.Name.Contains(filter.Name));
                }

                if (filter?.StartDate != null)
                {
                    q = q.Where(x => x.DateCreate >= filter.StartDate);
                }

                if (filter?.EndDate != null)
                {
                    q = q.Where(x => x.DateCreate <= filter.EndDate);
                }

                if (filter?.OrderBy != null)
                {
                    q = q.OrderBy(x => x.PropValue <Currency>(filter.OrderBy));
                }

                if (paging?.Take > 0)
                {
                    q = q.Skip(paging.Skip).Take(paging.Take);
                }

                return(q);
            };

            return(currencyRepository.Get(query));
        }
示例#16
0
        public async Task <IActionResult> Get(Paging paging, CurrencyFilter filter)
        {
            try
            {
                var currencies = await rateService.GetCurrenciesAsync(paging, filter);

                if (!currencies.Any())
                {
                    return(StatusCode(204));
                }

                var result = mapper.Map <IEnumerable <Currency>, IEnumerable <CurrencyViewModel> >(currencies);

                return(Ok(result));
            }
            // If start date > end date
            catch (ArgumentException ex)
            {
                return(BadRequest(new ErrorResponse {
                    Message = ex.Message
                }));
            }
        }
示例#17
0
        private async Task <List <Currency> > DynamicSelect(IQueryable <CurrencyDAO> query, CurrencyFilter filter)
        {
            List <Currency> Currencies = await query.Select(q => new Currency()
            {
                Id   = filter.Selects.Contains(CurrencySelect.Id) ? q.Id : default(long),
                Code = filter.Selects.Contains(CurrencySelect.Code) ? q.Code : default(string),
                Name = filter.Selects.Contains(CurrencySelect.Name) ? q.Name : default(string),
            }).ToListAsync();

            return(Currencies);
        }
示例#18
0
 private IQueryable <CurrencyDAO> DynamicFilter(IQueryable <CurrencyDAO> query, CurrencyFilter filter)
 {
     if (filter == null)
     {
         return(query.Where(q => false));
     }
     if (filter.Id != null && filter.Id.HasValue)
     {
         query = query.Where(q => q.Id, filter.Id);
     }
     if (filter.Code != null && filter.Code.HasValue)
     {
         query = query.Where(q => q.Code, filter.Code);
     }
     if (filter.Name != null && filter.Name.HasValue)
     {
         query = query.Where(q => q.Name, filter.Name);
     }
     query = OrFilter(query, filter);
     return(query);
 }
示例#19
0
        private IQueryable <CurrencyDAO> DynamicOrder(IQueryable <CurrencyDAO> query, CurrencyFilter filter)
        {
            switch (filter.OrderType)
            {
            case OrderType.ASC:
                switch (filter.OrderBy)
                {
                case CurrencyOrder.Id:
                    query = query.OrderBy(q => q.Id);
                    break;

                case CurrencyOrder.Code:
                    query = query.OrderBy(q => q.Code);
                    break;

                case CurrencyOrder.Name:
                    query = query.OrderBy(q => q.Name);
                    break;
                }
                break;

            case OrderType.DESC:
                switch (filter.OrderBy)
                {
                case CurrencyOrder.Id:
                    query = query.OrderByDescending(q => q.Id);
                    break;

                case CurrencyOrder.Code:
                    query = query.OrderByDescending(q => q.Code);
                    break;

                case CurrencyOrder.Name:
                    query = query.OrderByDescending(q => q.Name);
                    break;
                }
                break;
            }
            query = query.Skip(filter.Skip).Take(filter.Take);
            return(query);
        }
示例#20
0
        static void GetCurrencies()
        {
            var currencies = new List <Currency>();

            var paging = new Paging();

            #region paging set
            Console.WriteLine();
            Console.ForegroundColor = ConsoleColor.Blue;
            Console.Write("new ");
            Console.ForegroundColor = ConsoleColor.DarkGreen;
            Console.Write("Paging");
            Console.WriteLine();
            Console.ForegroundColor = ConsoleColor.White;
            Console.Write("\tTake");
            Console.ForegroundColor = ConsoleColor.Blue;
            Console.Write(" int");
            Console.ForegroundColor = ConsoleColor.White;
            Console.Write(" = ");
            try
            {
                paging.Take = int.Parse(Console.ReadLine());
            }
            catch { }
            Console.ForegroundColor = ConsoleColor.White;
            Console.Write("\tSkip");
            Console.ForegroundColor = ConsoleColor.Blue;
            Console.Write(" int");
            Console.ForegroundColor = ConsoleColor.White;
            Console.Write(" = ");
            try
            {
                paging.Skip = int.Parse(Console.ReadLine());
            }
            catch { }
            #endregion

            var filter = new CurrencyFilter();

            #region filter set
            Console.WriteLine();
            Console.ForegroundColor = ConsoleColor.Blue;
            Console.Write("new ");
            Console.ForegroundColor = ConsoleColor.DarkGreen;
            Console.Write("CurrencyFilter");
            Console.WriteLine();
            Console.ForegroundColor = ConsoleColor.White;
            Console.Write("\tName");
            Console.ForegroundColor = ConsoleColor.Blue;
            Console.Write(" string(nullable)");
            Console.ForegroundColor = ConsoleColor.White;
            Console.Write(" = ");
            try
            {
                var name = Console.ReadLine();
                if (!string.IsNullOrEmpty(name))
                {
                    filter.Name = name;
                }
            }
            catch { }

            Console.ForegroundColor = ConsoleColor.White;
            Console.Write("\tOrderBy");
            Console.ForegroundColor = ConsoleColor.Blue;
            Console.Write(" string(nullable)");
            Console.ForegroundColor = ConsoleColor.White;
            Console.Write(" = ");
            try
            {
                var orderBy = Console.ReadLine();
                if (!string.IsNullOrEmpty(orderBy))
                {
                    filter.OrderBy = orderBy;
                }
            }
            catch { }

            Console.ForegroundColor = ConsoleColor.White;
            Console.Write("\tStartDate");
            Console.ForegroundColor = ConsoleColor.Blue;
            Console.Write(" DateTime(nullable)");
            Console.ForegroundColor = ConsoleColor.DarkRed;
            Console.Write(" format:yyyy-MM-dd");
            Console.ForegroundColor = ConsoleColor.White;
            Console.Write(" = ");
            try
            {
                filter.StartDate = DateTime.Parse(Console.ReadLine());
            }
            catch { }

            Console.ForegroundColor = ConsoleColor.White;
            Console.Write("\tEndDate");
            Console.ForegroundColor = ConsoleColor.Blue;
            Console.Write(" DateTime(nullable)");
            Console.ForegroundColor = ConsoleColor.DarkRed;
            Console.Write(" format:yyyy-MM-dd");
            Console.ForegroundColor = ConsoleColor.White;
            Console.Write(" = ");
            try
            {
                filter.EndDate = DateTime.Parse(Console.ReadLine());
            }
            catch { }
            #endregion


            using (var client = new RateServiceClient())
            {
                Task.Run(async() =>
                {
                    var result = await client.GetCurrenciesAsync(paging, filter);

                    currencies = result.ToList();
                }).GetAwaiter().GetResult();
            }

            foreach (var item in currencies)
            {
                Console.WriteLine("Currency name: {0}\t| Selling price: {1}\t| Purchase price: {2}\t| Date: {3}", item.Name, item.SellingPrice, item.PurchasePrice, item.DateCreate);
            }
        }
示例#21
0
        public void Get_Currencies()
        {
            // arrage
            var paging = new Paging();
            var filter = new CurrencyFilter {
                StartDate = new DateTime(2016, 1, 1), EndDate = new DateTime(2016, 4, 2)
            };

            var currencies = new[] {
                new Currency {
                    Id = 1, Name = "EUR", PurchasePrice = 10, SellingPrice = 11, DateCreate = new DateTime(2015, 1, 1)
                },
                new Currency {
                    Id = 2, Name = "USD", PurchasePrice = 9, SellingPrice = 10, DateCreate = new DateTime(2016, 2, 1)
                },
                new Currency {
                    Id = 3, Name = "USD", PurchasePrice = 9.1m, SellingPrice = 10.2m, DateCreate = new DateTime(2016, 3, 1)
                },
                new Currency {
                    Id = 4, Name = "EUR", PurchasePrice = 10.3m, SellingPrice = 11.6m, DateCreate = new DateTime(2016, 4, 1)
                },
                new Currency {
                    Id = 5, Name = "EUR", PurchasePrice = 9.9m, SellingPrice = 10.9m, DateCreate = new DateTime(2016, 5, 1)
                }
            }.AsQueryable();

            Func <IQueryable <Currency>, IQueryable <Currency> > query = q =>
            {
                if (filter?.Name != null)
                {
                    q = q.Where(x => x.Name.Contains(filter.Name));
                }

                if (filter?.StartDate != null)
                {
                    q = q.Where(x => x.DateCreate >= filter.StartDate);
                }

                if (filter?.EndDate != null)
                {
                    q = q.Where(x => x.DateCreate <= filter.EndDate);
                }

                if (filter?.OrderBy != null)
                {
                    q = q.OrderBy(x => x.PropValue <Currency>(filter.OrderBy));
                }

                q = q.Skip(paging.Skip).Take(paging.Take);

                return(q);
            };

            var resultCurrencies = query(currencies).ToList();

            currencyRepository.Setup(x => x.GetAsync(It.IsAny <Func <IQueryable <Currency>, IQueryable <Currency> > >()))
            .ReturnsAsync(resultCurrencies);

            // act
            var taskResult = rateService.GetCurrenciesAsync(paging, filter);

            // assert
            Assert.IsTrue(taskResult.IsCompleted);
            var model = taskResult.Result;

            Assert.IsInstanceOfType(model, typeof(IEnumerable <Currency>));
            Assert.AreEqual(resultCurrencies.Count(), model.Count());
        }