public async System.Threading.Tasks.Task GetFilterParameters_CallsApi()
        {
            // arrange
            string endpoint = "endPoint";

            configuration[EndPoints.Api.GetFilterParameters].Returns(endpoint);
            FilterParametersDto parameters = new FilterParametersDto()
            {
                Countries       = new List <CountryDto>(),
                ItemTypes       = new List <ItemTypeDto>(),
                OrderPriorities = new List <OrderPriorityDto>(),
                Regions         = new List <RegionDto>(),
                SalesChannels   = new List <SalesChannelDto>()
            };
            GetSalesRequestDto requestDto = GetSalesRequestDtoBuilder.Build();

            httpClient.GetAsync <FilterParametersDto>(endpoint).Returns(parameters);


            // act
            await saleService.GetFilterParameters(requestDto);

            // assert
            await httpClient.Received(1).GetAsync <FilterParametersDto>(endpoint);
        }
예제 #2
0
        public IEnumerable <Sale> GetFilteredSales(GetSalesRequestDto requestDto)
        {
            int skip       = (requestDto.PageIndex - 1) * requestDto.PageSize;
            var salesQuery = GetQueryFilteredSales(requestDto);
            var sales      = salesQuery.Skip(skip).Take(requestDto.PageSize).ToList();

            return(sales);
        }
예제 #3
0
        public int GetLastPageIndex(GetSalesRequestDto requestDto)
        {
            if (requestDto == null)
            {
                throw new ArgumentNullException(nameof(requestDto));
            }

            return(unitOfWork.Sales.GetLastPageIndex(requestDto));
        }
예제 #4
0
 private IQueryable <Sale> GetQueryFilteredSales(GetSalesRequestDto requestDto)
 {
     return(ApplicationDbContext.Sales.Where(x => x.OrderDate >= requestDto.OrderDate)
            .Where(x => x.OrderID == requestDto.OrderId || requestDto.OrderId == default(int))
            .Where(x => x.CountryId == requestDto.CountryId || requestDto.CountryId == default(int))
            .Where(x => x.ItemTypeId == requestDto.ItemTypeId || requestDto.ItemTypeId == default(int))
            .Where(x => x.OrderPriorityId == requestDto.OrderPriorityId || requestDto.OrderPriorityId == default(int))
            .Where(x => x.RegionId == requestDto.RegionId || requestDto.RegionId == default(int))
            .Where(x => x.SalesChannelId == requestDto.SalesChannelId || requestDto.SalesChannelId == default(int)));
 }
예제 #5
0
        public FilterParameters GetFilterParameters(GetSalesRequestDto requestDto)
        {
            FilterParameters parameters = new FilterParameters();

            parameters.Countries       = ApplicationDbContext.Countries.OrderBy(x => x.CountryName).ToList();
            parameters.ItemTypes       = ApplicationDbContext.ItemTypes.OrderBy(x => x.ItemTypeName).ToList();
            parameters.Regions         = ApplicationDbContext.Regions.OrderBy(x => x.RegionName).ToList();
            parameters.SalesChannels   = ApplicationDbContext.SalesChannels.OrderBy(x => x.SalesChannelName).ToList();
            parameters.OrderPriorities = ApplicationDbContext.OrderPriorities.OrderBy(x => x.OrderPriorityName).ToList();
            return(parameters);
        }
        public async Task <IActionResult> GetLastPageIndexAsync([FromQuery] GetSalesRequestDto requestDto)
        {
            if (requestDto == null)
            {
                return(BadRequest());
            }

            var lastIndex = await saleService.GetLastPageIndex(requestDto);

            return(Ok(lastIndex));
        }
        public async Task <IActionResult> GetFilterParameters([FromQuery] GetSalesRequestDto requestDto)
        {
            if (requestDto == null)
            {
                return(BadRequest());
            }

            var parameters = await saleService.GetFilterParameters(requestDto);

            return(Ok(parameters));
        }
        public async Task <IActionResult> GetSalesAsync([FromQuery] GetSalesRequestDto requestDto)
        {
            if (requestDto == null)
            {
                return(BadRequest());
            }

            var sales = await saleService.GetSalesAsync(requestDto);

            return(Ok(sales));
        }
예제 #9
0
        public void GetFilterParameters_ArgsOk_CallsRepository()
        {
            // arrange
            GetSalesRequestDto requestDto = GetSalesRequestDtoBuilder.Build();

            // act
            var result = saleService.GetFilterParameters(requestDto);

            // assert
            unitOfWork.Sales.Received(1).GetFilterParameters(requestDto);
        }
        public async System.Threading.Tasks.Task GetFilterParameters_ArgsOk_CallsService()
        {
            // arrange
            GetSalesRequestDto requestDto = GetSalesRequestDtoBuilder.Build();

            // act
            await saleController.GetFilterParameters(requestDto);

            // assert
            await saleService.Received(1).GetFilterParameters(requestDto);
        }
        public void GetFilterParameters_NoArgs_CallsService()
        {
            // arrange
            GetSalesRequestDto requestDto = GetSalesRequestDtoBuilder.Build();

            // act
            saleController.GetFilterParameters(requestDto);

            // assert
            saleService.Received(1).GetFilterParameters(requestDto);
        }
예제 #12
0
        public Task <int> GetLastPageIndex(GetSalesRequestDto requestDto)
        {
            if (requestDto == null)
            {
                throw new ArgumentNullException(nameof(requestDto));
            }

            string getSalesUrl = GetEndPointForGetSalesRequest(EndPoints.Api.GetLastPageIndex, requestDto);

            return(httpClient.GetAsync <int>(getSalesUrl));
        }
예제 #13
0
        public void GetLastPageIndex_ArgsOk_CallsRepository()
        {
            // arrange
            GetSalesRequestDto requestDto = GetSalesRequestDtoBuilder.Build();

            // act
            saleService.GetLastPageIndex(requestDto);

            // assert
            unitOfWork.Sales.Received(1).GetLastPageIndex(requestDto);
        }
예제 #14
0
        public IActionResult GetSales([FromQuery] GetSalesRequestDto requestDto)
        {
            if (requestDto == null)
            {
                return(BadRequest());
            }

            var sales = saleService.GetFilteredSales(requestDto);

            return(Ok(sales));
        }
        public async System.Threading.Tasks.Task GetLastPageIndexAsync_ArgsOk_CallsService()
        {
            // arrange
            GetSalesRequestDto requestDto = GetSalesRequestDtoBuilder.Build();

            // act
            await saleController.GetLastPageIndexAsync(requestDto);

            // assert
            await saleService.Received(1).GetLastPageIndex(requestDto);
        }
예제 #16
0
        public IActionResult GetFilterParameters([FromQuery] GetSalesRequestDto requestDto)
        {
            if (requestDto == null)
            {
                return(BadRequest());
            }

            FilterParametersDto parameters = saleService.GetFilterParameters(requestDto);

            return(Ok(parameters));
        }
예제 #17
0
        public IActionResult GetLastPageIndex([FromQuery] GetSalesRequestDto requestDto)
        {
            if (requestDto == null)
            {
                return(BadRequest());
            }

            int lastIndex = saleService.GetLastPageIndex(requestDto);

            return(Ok(lastIndex));
        }
        public void GetLastPageIndex_ArgsOk_CallsService()
        {
            // arrange
            GetSalesRequestDto requestDto = GetSalesRequestDtoBuilder.Build();

            // act
            saleController.GetLastPageIndex(requestDto);

            // assert
            saleService.Received(1).GetLastPageIndex(requestDto);
        }
예제 #19
0
        public async Task <IEnumerable <SaleDto> > GetSalesAsync(GetSalesRequestDto requestDto)
        {
            if (requestDto == null)
            {
                throw new ArgumentNullException(nameof(requestDto));
            }

            string getSalesUrl = GetEndPointForGetSalesRequest(EndPoints.Api.GetSales, requestDto);

            return(await httpClient.GetAsync <IEnumerable <SaleDto> >(getSalesUrl));
        }
예제 #20
0
        public FilterParametersDto GetFilterParameters(GetSalesRequestDto requestDto)
        {
            if (requestDto == null)
            {
                throw new ArgumentNullException(nameof(requestDto));
            }

            var parameters = unitOfWork.Sales.GetFilterParameters(requestDto);

            return(mapper.Map <FilterParametersDto>(parameters));
        }
예제 #21
0
        public IEnumerable <SaleDto> GetFilteredSales(GetSalesRequestDto requestDto)
        {
            if (requestDto == null)
            {
                throw new ArgumentNullException(nameof(requestDto));
            }

            var sales = unitOfWork.Sales.GetFilteredSales(requestDto);

            return(mapper.Map <IEnumerable <SaleDto> >(sales));
        }
예제 #22
0
        public void AddAllAsync_ArgsOk_CallsRepository()
        {
            // arrange
            GetSalesRequestDto    requestDto = GetSalesRequestDtoBuilder.Build();
            IEnumerable <SaleDto> salesDto   = SaleDtoBuilder.BuildList(2);

            // act
            saleService.AddAllAsync(salesDto);

            // assert
            unitOfWork.Sales.Received(1).AddAllAsync(Arg.Any <IEnumerable <Sale> >());
        }
        public async System.Threading.Tasks.Task GetSalesAsync_ArgsOk_CallsApi()
        {
            // arrange
            string endpoint = "endPoint";

            configuration[EndPoints.Api.GetSales].Returns(endpoint);
            GetSalesRequestDto requestDto = GetSalesRequestDtoBuilder.Build();

            // act
            await saleService.GetSalesAsync(requestDto);

            // assert
            await httpClient.Received(1).GetAsync <IEnumerable <SaleDto> >(endpoint);
        }
예제 #24
0
        public void GetFilteredSales_ArgsOk_CallsRepository()
        {
            // arrange
            GetSalesRequestDto    requestDto = GetSalesRequestDtoBuilder.Build();
            IEnumerable <SaleDto> salesDto   = SaleDtoBuilder.BuildList(2);
            List <Sale>           sales      = new List <Sale>()
            {
                new Sale()
            };

            mapper.Map <IEnumerable <SaleDto> >(Arg.Any <IEnumerable <Sale> >()).Returns(salesDto);
            unitOfWork.Sales.GetFilteredSales(requestDto).Returns(sales);

            // act
            saleService.GetFilteredSales(requestDto);

            // assert
            unitOfWork.Sales.Received(1).GetFilteredSales(requestDto);
        }
예제 #25
0
        public int GetLastPageIndex(GetSalesRequestDto requestDto)
        {
            int lastPageIndex = GetQueryFilteredSales(requestDto).Count() / requestDto.PageSize + 1;

            return(lastPageIndex);
        }
예제 #26
0
        public async Task <FilterParametersViewModel> GetFilterParameters(GetSalesRequestDto requestDto)
        {
            if (requestDto == null)
            {
                throw new ArgumentNullException(nameof(requestDto));
            }

            string getFilterParametersUrl     = GetEndPointForGetSalesRequest(EndPoints.Api.GetFilterParameters, requestDto);
            FilterParametersDto parametersDto = await httpClient.GetAsync <FilterParametersDto>(getFilterParametersUrl);

            FilterParametersViewModel parameters = new FilterParametersViewModel();

            parameters.Countries = new List <DropDownViewModel>();
            DropDownViewModel allItem = new DropDownViewModel()
            {
                Value = default(int).ToString(), Label = "All"
            };

            foreach (var item in parametersDto.Countries)
            {
                parameters.Countries.Add(
                    new DropDownViewModel()
                {
                    Label = item.CountryName,
                    Value = item.CountryId.ToString()
                });
            }
            parameters.Countries.Insert(0, allItem);

            parameters.ItemTypes = new List <DropDownViewModel>();
            foreach (var item in parametersDto.ItemTypes)
            {
                parameters.ItemTypes.Add(
                    new DropDownViewModel()
                {
                    Label = item.ItemTypeName,
                    Value = item.ItemTypeId.ToString()
                });
            }
            parameters.ItemTypes.Insert(0, allItem);

            parameters.OrderPriorities = new List <DropDownViewModel>();
            foreach (var item in parametersDto.OrderPriorities)
            {
                parameters.OrderPriorities.Add(
                    new DropDownViewModel()
                {
                    Label = item.OrderPriorityName,
                    Value = item.OrderPriorityId.ToString()
                });
            }
            parameters.OrderPriorities.Insert(0, allItem);

            parameters.Regions = new List <DropDownViewModel>();
            foreach (var item in parametersDto.Regions)
            {
                parameters.Regions.Add(
                    new DropDownViewModel()
                {
                    Label = item.RegionName,
                    Value = item.RegionId.ToString()
                });
            }
            parameters.Regions.Insert(0, allItem);

            parameters.SalesChannels = new List <DropDownViewModel>();
            foreach (var item in parametersDto.SalesChannels)
            {
                parameters.SalesChannels.Add(
                    new DropDownViewModel()
                {
                    Label = item.SalesChannelName,
                    Value = item.SalesChannelId.ToString()
                });
            }
            parameters.SalesChannels.Insert(0, allItem);
            return(parameters);
        }
예제 #27
0
 private string GetEndPointForGetSalesRequest(string endPointKey, GetSalesRequestDto requestDto)
 {
     return(string.Format(configuration[endPointKey], requestDto.CountryId, requestDto.SalesChannelId, requestDto.OrderPriorityId, requestDto.RegionId, requestDto.ItemTypeId, requestDto.OrderDate, requestDto.OrderId, requestDto.PageIndex, requestDto.PageSize));
 }