예제 #1
0
        public async Task Test_AddOrdersFromFile_ShouldAddOrdersSuccessfully()
        {
            //arrange
            var fileInfo = new OrderFromFileDto
            {
                FilePath = "TestPath"
            };

            //act
            var result = await subject.AddOrders(fileInfo);

            var codeResult = result as StatusCodeResult;

            //assert
            Assert.IsInstanceOf <StatusCodeResult>(codeResult);
            Assert.AreEqual(codeResult.StatusCode, 201);
            orderRepositoryMock.Verify(x => x.AddOrders(fileInfo), Times.Once);
        }
예제 #2
0
        public async Task AddOrders(OrderFromFileDto orderFromFileDto)
        {
            var rows = System.IO.File.ReadLines(orderFromFileDto.FilePath).ToList();

            var headers = new[] { "time_recived", "quantity", "brand_id" };

            var headersRow = rows[0].Split('\t').Select(x => x.ToLower()).ToArray();

            var timeRecivedId = Array.IndexOf(headers, "time_recived");
            var quantityId    = Array.IndexOf(headers, "quantity");
            var brandIdId     = Array.IndexOf(headers, "brand_id");

            var orders = new List <Order>();

            foreach (var row in rows)
            {
                var arr = row.Split('\t');

                if (string.IsNullOrEmpty(row))
                {
                    continue;
                }

                if (row == rows[0])
                {
                    continue;
                }

                var item = new Order();
                DateTime.TryParse(arr[timeRecivedId], out DateTime time);
                int.TryParse(arr[quantityId], out int quantity);
                int.TryParse(arr[brandIdId], out int brandId);

                item.TimeOrdered = time;
                item.Quantity    = quantity;
                item.BrandId     = brandId;

                orders.Add(item);
            }

            await context.Orders.AddRangeAsync(orders);

            context.SaveChanges();
        }
예제 #3
0
        public async Task <IActionResult> AddOrders(OrderFromFileDto orderFromFileDto)
        {
            await repo.AddOrders(orderFromFileDto);

            return(StatusCode(201));
        }