示例#1
0
        public void View_UploadJson_File_Is_Null()
        {
            //Arrange
            var testVM = new OrderUploadVM
            {
                File = null
            };

            // Act
            var result = _jsonFileController.UploadJson(testVM) as ViewResult;

            // Assert
            Assert.AreEqual("", result.ViewName);
        }
示例#2
0
        public ActionResult UploadJson(OrderUploadVM model)
        {
            byte[] data;

            if (model.File == null)
            {
                ModelState.AddModelError("NullFile", "Inget filnamn angivet");
                return(View());
            }

            using (MemoryStream ms = new MemoryStream())
            {
                model.File.InputStream.CopyTo(ms);
                data = ms.ToArray();
            }

            var json = Encoding.Default.GetString(data);

            JObject jCustomerOrder = JObject.Parse(json);

            var items = customerAddressRepo.GetItems();

            var cid = (string)jCustomerOrder["customerid"];
            var aid = (string)jCustomerOrder["addressid"];

            var customerAddress = customerAddressRepo.GetItems().Where(
                a => a.AddressType == AddressType.Leverans &&
                a.Address.AddressOrderId == aid &&
                a.Customer.CustomerOrderId == cid).SingleOrDefault();

            if (customerAddress == null)
            {
                ModelState.AddModelError("", $"Kundorderid: '{cid}' eller Adressorderid: '{aid}' är felaktigt.");
                return(View());
            }

            var customer = customerAddress.Customer;

            var allProducts = productRepo.GetItems();

            string   dStr = (string)jCustomerOrder["date"];
            DateTime dDate;

            if (dStr.Length < 1)
            {
                dDate = DateTime.Now;
            }
            else if (!DateTime.TryParse(dStr, out dDate))
            {
                ModelState.AddModelError("", $"Önskad leveransdatum: '{dStr}' är felaktigt.");
                return(View());
            }

            var order = new Order
            {
                CustomerId          = customerAddress.Customer.Id,
                AddressId           = customerAddress.Address.Id,
                OrderDate           = DateTime.Today,
                DesiredDeliveryDate = dDate,
                Comment             = (string)jCustomerOrder["comment"]
            };

            if (customer != null)
            {
                var firstPossibleDate = DateTime.Today.AddDays(customer.DaysToDelievery);
                order.PlannedDeliveryDate = (order.DesiredDeliveryDate.CompareTo(firstPossibleDate) <= 0) ? firstPossibleDate : order.DesiredDeliveryDate;
            }

            var jProducts = jCustomerOrder["products"].ToArray();

            foreach (var jProduct in jProducts)
            {
                var prodString = (string)jProduct["pno"];
                var product    = productRepo.GetItem(prodString);
                if (product == null)
                {
                    ModelState.AddModelError("", $"Produktorderid: '{prodString}' finns inte.");
                    return(View());
                }

                var  aStr = (string)jProduct["amount"];
                uint oa;
                if (!uint.TryParse(aStr, out oa))
                {
                    ModelState.AddModelError("", $"Beställt antal: '{aStr}' är felaktigt.");
                    return(View());
                }
                if (oa < 1)
                {
                    ModelState.AddModelError("", $"Beställt antal: '{aStr}' mindre än 1.");
                    return(View());
                }
                var orderProduct = new OrderProduct
                {
                    OrderId       = order.Id,
                    Comment       = (string)jProduct["comment"],
                    ProductId     = productRepo.GetItem((string)jProduct["pno"]).Id,
                    OrderedAmount = (int)oa
                };
                order.OrderProducts.Add(orderProduct);
            }

            var existingOrders = orderRepo.GetItems().Where(o => o.AddressId == order.AddressId && o.CustomerId == order.CustomerId);

            foreach (var item in existingOrders)
            {
                if (item.DesiredDeliveryDate.Equals(order.DesiredDeliveryDate) && item.Comment.Equals(order.Comment))
                {
                    ModelState.AddModelError("", "En order med samma kundorderid, adressorderid och önskat leveransdatum är redan registrerad.");
                    return(View());
                }
            }

            orderRepo.CreateItem(order);
            //foreach (var item in order.OrderProducts)
            //{
            //    orderProductRepo.CreateItem(item);
            //}
            //orderRepo.HandleOrder(order);
            return(RedirectToAction("Index", "Orders"));
        }