示例#1
0
        protected void Application_Start()
        {
            try
            {
                log4net.Config.XmlConfigurator.Configure();
                AreaRegistration.RegisterAllAreas();
                GlobalConfiguration.Configure(WebApiConfig.Register);
                FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
                RouteConfig.RegisterRoutes(RouteTable.Routes);
                BundleConfig.RegisterBundles(BundleTable.Bundles);
                OrderDataServ = new OrderDataService();
                HttpContext.Current.Application["OrderDataServ"] = OrderDataServ;

                if (ConfigValues.SendAcknowledgement == "On")
                {
                    SetTimer();

                    //Util.AS2Acknowledge acknowledgeClass = new Util.AS2Acknowledge();
                    //acknowledgeClass.SendPOAcknowledgements();
                }
            }
            catch (Exception ex)
            {
                if (Log != null)
                {
                    Log.Error($"Application Init failed. {ex.Message}");
                }
            }


            Log.Info("Application Init.");
        }
示例#2
0
        public CartController()
        {
            var dataService = new Irbis.DataService.Init();

            _сartDataService  = dataService.СartDataService;
            _orderDataService = dataService.OrderDataService;
        }
示例#3
0
        //
        // GET: /Manage/Index
        public async Task <ActionResult> Index(ManageMessageId?message)
        {
            var userId = User.Identity.GetUserId();

            model.Orders = OrderDataService.UserOrders(userId);
            model.CustomerAccountInfo = CustomerDataService.GetCustomer(userId);
            //ViewBag.StatusMessage =
            //    message == ManageMessageId.ChangePasswordSuccess ? "Your password has been changed."
            //    : message == ManageMessageId.SetPasswordSuccess ? "Your password has been set."
            //    : message == ManageMessageId.SetTwoFactorSuccess ? "Your two-factor authentication provider has been set."
            //    : message == ManageMessageId.Error ? "An error has occurred."
            //    : message == ManageMessageId.AddPhoneSuccess ? "Your phone number was added."
            //    : message == ManageMessageId.RemovePhoneSuccess ? "Your phone number was removed."
            //    : "";

            //var userId = User.Identity.GetUserId();
            //var model = new IndexViewModel
            //{
            //    HasPassword = HasPassword(),
            //    PhoneNumber = await UserManager.GetPhoneNumberAsync(userId),
            //    TwoFactor = await UserManager.GetTwoFactorEnabledAsync(userId),
            //    Logins = await UserManager.GetLoginsAsync(userId),
            //    BrowserRemembered = await AuthenticationManager.TwoFactorBrowserRememberedAsync(userId)
            //};
            return(View(model));
        }
示例#4
0
        // FIXME: Disable for now. AsAsyncEnumerable issue.
        //[TestMethod]
        public void Get_Orders()
        {
            // Arrange
            var orderDataService = new OrderDataService(sourceService.Object, mockILoggerFactory.Object.CreateLogger <OrderDataService>());
            var rnd       = new Random();
            var ordersQty = 20;
            var currDate  = DateTime.UtcNow;

            var itms = Enumerable.Range(1, ordersQty).Select(x => new Order()
            {
                OrderId       = rnd.Next(x * 1000),
                OrderStatusId = rnd.Next(x * 1000),
                DateCreated   = currDate.AddDays(x)
            }.To <DbOrder>()).ToList();
            var idForCheck = itms[new Random().Next(ordersQty)].OrderId;

            var firstNum   = rnd.Next(ordersQty - 1);
            var firstDate  = itms[firstNum].DateCreated;
            var secondNum  = rnd.Next(firstNum, ordersQty);
            var secondDate = itms[secondNum].DateCreated;

            var ordersMock = TestHelper.ToDbSetMock(itms);

            sourceService.Setup(x => x.Orders).Returns(ordersMock.Object);
            sourceService.Setup(x => x.Set <DbOrder>()).Returns(ordersMock.Object);

            // Action
            var result = orderDataService.GetOrders().Result;

            // Assert
            ordersMock.Verify(x => x.Where(It.IsAny <Expression <Func <DbOrder, bool> > >()), Times.Exactly(1));
            sourceService.Verify(x => x.Set <DbOrder>(), Times.Exactly(4));

            Assert.AreEqual(ordersQty, result.Count);
        }
示例#5
0
        public void Update_Order()
        {
            // Arrange
            var orderDataService = new OrderDataService(sourceService.Object, iLoggerFactory.Object.CreateLogger <OrderDataService>());
            var requestOrder     = new Order()
            {
                Id          = 1,
                Amount      = 29.99M,
                DateCreated = DateTime.UtcNow
            };
            var itms = new List <DbOrder>()
            {
                requestOrder.OrderToDbOrder()
            };

            var ordersMock = TestHelper.ToDbSetMock(itms);

            ordersMock.Setup(d => d.UpdateRange(It.IsAny <DbOrder[]>())).Callback <DbOrder[]>((s) => {
                s.ToList().ForEach(fe => {
                    var fod = itms.FirstOrDefault(v => v.Id == fe.Id);
                    if (fod != null)
                    {
                        fod.DateCreated = fe.DateCreated;
                        fod.Amount      = fe.Amount;
                    }
                });
            });
            sourceService.Setup(x => x.Orders).Returns(ordersMock.Object);
            sourceService.Setup(x => x.Set <DbOrder>()).Returns(ordersMock.Object);

            var ord = new Order()
            {
                Id          = 1,
                Amount      = 77.77M,
                DateCreated = DateTime.UtcNow.AddDays(15)
            }.OrderToDbOrder();

            var badOrder = new Order()
            {
                Id          = Int32.MaxValue,
                Amount      = 1.1M,
                DateCreated = DateTime.UtcNow.AddDays(30)
            }.OrderToDbOrder();

            // Action
            orderDataService.Update(ord);
            orderDataService.Update(badOrder);

            // Assert
            ordersMock.Verify(x => x.UpdateRange(It.IsAny <DbOrder[]>()), Times.Exactly(2));
            Assert.AreEqual(1, itms.Count);
            var updatedItem = itms.First();

            Assert.AreEqual(ord.Amount, updatedItem.Amount);
            Assert.AreEqual(ord.DateCreated, updatedItem.DateCreated);
        }
示例#6
0
        protected async Task GetSales()
        {
            DateTime dt = new DateTime(int.Parse(SelectedYear), int.Parse(SelectedMonth), 1);

            var orders = await OrderDataService.GetPagedOrderForMonth(dt, pageNumber.Value, 5);

            paginatedList = new PaginatedList <OrdersForMonthListViewModel>(orders.OrdersForMonth.ToList(), orders.Count, pageNumber.Value, 5);
            ordersList    = paginatedList.Items;

            StateHasChanged();
        }
示例#7
0
        public void Remove_Order()
        {
            // Arrange
            var orderDataService = new OrderDataService(sourceService.Object, iLoggerFactory.Object.CreateLogger <OrderDataService>());
            var itms             = new List <DbOrder>()
            {
                new Order()
                {
                    Id          = 753,
                    Amount      = 555M,
                    DateCreated = DateTime.UtcNow
                }.OrderToDbOrder(),
                new Order()
                {
                    Id          = new Random().Next(),
                    Amount      = 666M,
                    DateCreated = DateTime.UtcNow
                }.OrderToDbOrder(),
                new Order()
                {
                    Id          = 1,
                    Amount      = 555M,
                    DateCreated = DateTime.UtcNow
                }.OrderToDbOrder(),
            };


            var ordersMock = TestHelper.ToDbSetMock(itms);

            ordersMock.Setup(x => x.RemoveRange(It.IsAny <DbOrder[]>())).Callback <DbOrder[]>((s) =>
            {
                s.ToList().ForEach(fe =>
                {
                    itms.RemoveAll(x => x.Id == fe.Id);
                });
            });
            sourceService.Setup(x => x.Orders).Returns(ordersMock.Object);
            sourceService.Setup(x => x.Set <DbOrder>()).Returns(ordersMock.Object);

            var ordersCount = itms.Count;

            for (var i = itms.Count - 1; i >= 0; i--)
            {
                var restCount      = itms.Count;
                var orderForDelete = itms[i];
                // Action
                orderDataService.Remove(orderForDelete.Id);

                // Assert
                ordersMock.Verify(x => x.RemoveRange(It.IsAny <DbOrder[]>()), Times.Exactly(ordersCount - i));
                Assert.AreEqual(restCount - 1, itms.Count);
                Assert.IsTrue(itms.TrueForAll(x => x.Id != orderForDelete.Id));
            }
        }
        public void Throws_When_Invalid_OrderAddressZipCode_Is_Passed(string addressZipCode)
        {
            var orderTotal = 123;
            var userId     = "o1";
            var orderId    = "o1";


            var orderAddressCity    = "City";
            var orderAddressNumber  = "Addr";
            var orderAddressStreet  = "Strt";
            var orderAddressZipCode = addressZipCode;

            var singlePie = PieListMock
                            .MockPieCatalog()
                            .ToList()
                            .FirstOrDefault();


            var pies = new List <Pie>()
            {
                singlePie
            };


            var orderAddress = new Address()
            {
                City    = orderAddressCity,
                Number  = orderAddressNumber,
                Street  = orderAddressStreet,
                ZipCode = orderAddressZipCode
            };

            var order = new Order()
            {
                Address    = orderAddress,
                OrderTotal = orderTotal,
                Pies       = pies,
                UserId     = userId,
                OrderId    = orderId
            };


            var requestProviderMock = new Mock <IRequestProvider>();

            requestProviderMock
            .Setup(e => e.PostAsync <Order>(It.IsAny <string>(), It.IsAny <Order>(), It.IsAny <string>()))
            .Returns(Task.FromResult <Order>(order));

            var orderDataService = new OrderDataService(requestProviderMock.Object);

            Assert.ThrowsAsync <OrderDataServiceException>(
                async() => await orderDataService.AddOrderAsync(order));
        }
示例#9
0
        public void Add_Order()
        {
            // Arrange
            var orderDataService = new OrderDataService(sourceService.Object, iLoggerFactory.Object.CreateLogger <OrderDataService>());
            var rnd       = new Random();
            var ordersQty = 20;
            var currDate  = DateTime.UtcNow;
            var orders    = Enumerable.Range(1, ordersQty).Select(x => new Order()
            {
                Amount      = rnd.Next(x * 1000) + new Random().Next(x) / 100,
                DateCreated = currDate.AddDays(x)
            }).ToList();

            var itms = new List <DbOrder>();

            var ordersMock = TestHelper.ToDbSetMock(itms);

            ordersMock.Setup(x => x.AddRangeAsync(It.IsAny <DbOrder[]>())).Callback <DbOrder[]>((s) =>
            {
                s.ToList().ForEach(fe =>
                {
                    itms.Add(fe);
                });
            }).Returns(Task.Run(() => { }));
            sourceService.Setup(x => x.Orders).Returns(ordersMock.Object);
            sourceService.Setup(x => x.Set <DbOrder>()).Returns(ordersMock.Object);

            var ord = new Order()
            {
                Id          = 1,
                Amount      = 77.77M,
                DateCreated = DateTime.UtcNow.AddDays(15)
            }.OrderToDbOrder();

            var badOrder = new Order()
            {
                Id          = Int32.MaxValue,
                Amount      = 1.1M,
                DateCreated = DateTime.UtcNow.AddDays(30)
            }.OrderToDbOrder();

            // Action
            orders.ForEach(o => { orderDataService.Add(o.OrderToDbOrder()).Wait(); });

            // Assert
            ordersMock.Verify(x => x.AddRangeAsync(It.IsAny <DbOrder[]>()), Times.Exactly(orders.Count));
            Assert.AreEqual(orders.Count, itms.Count);
            orders.ForEach(os =>
            {
                Assert.IsTrue(itms.Any(x => x.Amount == os.Amount && x.DateCreated == os.DateCreated));
            });
        }
示例#10
0
        public bool UpdateWebOrderSyncStatus(int webId, DateTime responseDate)
        {
            OrderDataService OrderDataServ = new OrderDataService();

            try
            {
                //OrderDataServ = HttpContext.Current.Application["OrderDataServ"] as OrderDataService;
                return(OrderDataServ.UpdateWebOrderSyncStatus(webId, responseDate));
            }
            catch (Exception ex)
            {
                Log.Error($"Order acknowledge status update failed. {ex.Message} + Inner Ex : {ex.InnerException.Message}");
                throw;
            }
        }
示例#11
0
        public List <WebOrderDetailModel> GetPOADetailList(int webId)
        {
            OrderDataService OrderDataServ = new OrderDataService();

            try
            {
                // OrderDataServ = HttpContext.Current.Application["OrderDataServ"] as OrderDataService;
                return(OrderDataServ.GetWebOrderDetailsForAck(webId));
            }
            catch (Exception ex)
            {
                Log.Error($"Order detail read failed. {ex.Message} + Inner Ex : {ex.InnerException.Message}");
                throw;
            }
        }
示例#12
0
        public List <WebOrderHeaderModel> GetPendingPOAckList()
        {
            OrderDataService OrderDataServ = new OrderDataService();

            try
            {
                // OrderDataServ = HttpContext.Current.Application["OrderDataServ"] as OrderDataService;
                return(OrderDataServ.GetPendingWebOrderAcknowledgments());
            }
            catch (Exception ex)
            {
                Log.Error($"Order header read failed. {ex.Message} + Inner Ex : {ex.InnerException.Message}");
                throw;
            }
        }
        public void Throws_When_Invalid_Order_Is_Passed()
        {
            Order order = null;

            var requestProviderMock = new Mock <IRequestProvider>();

            requestProviderMock
            .Setup(e => e.PostAsync <Order>(It.IsAny <string>(), It.IsAny <Order>(), It.IsAny <string>()))
            .Returns(Task.FromResult <Order>(order));

            var orderDataService = new OrderDataService(requestProviderMock.Object);

            Assert.ThrowsAsync <OrderDataServiceException>(
                async() => await orderDataService.AddOrderAsync(order));
        }
示例#14
0
        // FIXME: Disable for now. AsAsyncEnumerable issue.
        //[TestMethod]
        public void Get_Orders()
        {
            // Arrange
            var orderDataService = new OrderDataService(sourceService.Object, iLoggerFactory.Object.CreateLogger <OrderDataService>());
            var rnd       = new Random();
            var ordersQty = 40;
            var currDate  = DateTime.UtcNow;

            var itms = Enumerable.Range(1, ordersQty).Select(x => new Order()
            {
                Amount      = rnd.Next(x * 1000) + new Random().Next(x) / 100,
                DateCreated = currDate.AddDays(x)
            }.OrderToDbOrder()).ToList();
            var idForCheck    = itms[new Random().Next(ordersQty)].Id;
            var badIdForCheck = -10000;

            var firstNum   = rnd.Next(ordersQty - 1);
            var firstDate  = itms[firstNum].DateCreated;
            var secondNum  = rnd.Next(firstNum, ordersQty);
            var secondDate = itms[secondNum].DateCreated;

            var ordersMock = TestHelper.ToDbSetMock(itms);

            sourceService.Setup(x => x.Orders).Returns(ordersMock.Object);
            sourceService.Setup(x => x.Set <DbOrder>()).Returns(ordersMock.Object);

            // Action
            var result      = orderDataService.Get(null, null, null).Result;
            var resultId    = orderDataService.Get(idForCheck, null, null).Result;
            var resultbadId = orderDataService.Get(badIdForCheck, null, null).Result;
            var resultDates = orderDataService.Get(null, firstDate, secondDate).Result;

            // Assert
            ordersMock.Verify(x => x.Where(It.IsAny <Expression <Func <Order, bool> > >()), Times.Exactly(4));
            sourceService.Verify(x => x.Set <DbOrder>(), Times.Exactly(4));

            Assert.AreEqual(ordersQty, result.Count);
            Assert.AreEqual(1, resultId.Count);
            Assert.AreEqual(0, resultbadId.Count);
            resultDates.ForEach(os =>
            {
                Assert.IsTrue(os.DateCreated >= firstDate && os.DateCreated < secondDate);
            });
        }
        public void Throws_When_Order_Pies_Are_Missing()
        {
            var orderTotal = 123;
            var userId     = "U1";
            var orderId    = "O1";


            var orderAddressCity    = "City";
            var orderAddressNumber  = "+123456778";
            var orderAddressStreet  = "SampleStreet";
            var orderAddressZipCode = "5100";

            List <Pie> pies = new List <Pie>();

            var orderAddress = new Address()
            {
                City    = orderAddressCity,
                Number  = orderAddressNumber,
                Street  = orderAddressStreet,
                ZipCode = orderAddressZipCode
            };

            var order = new Order()
            {
                Address    = orderAddress,
                OrderTotal = orderTotal,
                Pies       = pies,
                UserId     = userId,
                OrderId    = orderId
            };


            var requestProviderMock = new Mock <IRequestProvider>();

            requestProviderMock
            .Setup(e => e.PostAsync <Order>(It.IsAny <string>(), It.IsAny <Order>(), It.IsAny <string>()))
            .Returns(Task.FromResult <Order>(order));

            var orderDataService = new OrderDataService(requestProviderMock.Object);

            Assert.ThrowsAsync <OrderDataServiceException>(
                async() => await orderDataService.AddOrderAsync(order));
        }
        public void Throws_When_Invalid_Order_Address_Is_Passed()
        {
            var orderTotal = 123;
            var userId     = "U1";
            var orderId    = "O1";
            var singlePie  = PieListMock
                             .MockPieCatalog()
                             .ToList()
                             .FirstOrDefault();


            var pies = new List <Pie>()
            {
                singlePie
            };

            Address orderAddress = null;

            var order = new Order()
            {
                Address    = orderAddress,
                OrderTotal = orderTotal,
                Pies       = pies,
                UserId     = userId,
                OrderId    = orderId
            };


            var requestProviderMock = new Mock <IRequestProvider>();

            requestProviderMock
            .Setup(e => e.PostAsync <Order>(It.IsAny <string>(), It.IsAny <Order>(), It.IsAny <string>()))
            .Returns(Task.FromResult <Order>(order));

            var orderDataService = new OrderDataService(requestProviderMock.Object);

            Assert.ThrowsAsync <OrderDataServiceException>(
                async() => await orderDataService.AddOrderAsync(order));
        }
示例#17
0
        private async void PlaceOrder(long StoreId, string SlotDate, string SlotTime)
        {
            var UserId = AppSettings.GetValueOrDefault(Resources.UserId, Resources.DefaultIntValue);
            OrderDataService orderData   = new OrderDataService();
            var formContent              = MakeFormContent(UserId, StoreId, SlotDate, SlotTime);
            HttpResponseMessage response = await orderData.ServicePlaceOrder(formContent);

            var    status = response.StatusCode;
            string result = await response.Content.ReadAsStringAsync();

            if (status == HttpStatusCode.OK)
            {
                QRText       = Slot;
                OrderIcon    = "OrderSuccess.svg";
                Message      = Resources.SlotSuccess;
                DisplayPopup = false;
            }
            else
            {
                OrderIcon = "OrderFailure.svg";
                Message   = Resources.SlotUnsuccess;
            }
        }
示例#18
0
        public async void FillOrders()
        {
            var orderDs = new OrderDataService();

            var rnd = new Random();
            var dt  = new DateTime(2019, 7, 5);

            while (true)
            {
                dt = dt.AddDays(rnd.Next(3, 8));
                if (dt >= DateTime.Now)
                {
                    break;
                }

                var order = new Order
                {
                    isOrder      = true,
                    report_date  = dt,
                    shop_id      = 2,
                    OrderDetails = new List <OrderDetail>
                    {
                        new OrderDetail {
                            prod_id = 1194, cost = rnd.Next(800, 1200), count = rnd.Next(2, 8)
                        },
                        new OrderDetail {
                            prod_id = 1201, cost = rnd.Next(1750, 2150), count = rnd.Next(2, 5)
                        },
                        new OrderDetail {
                            prod_id = 1212, cost = rnd.Next(2350, 2850), count = rnd.Next(2, 5)
                        }
                    }
                };

                var id = await orderDs.Insert(order);
            }
        }
示例#19
0
        public OrderController()
        {
            var dataService = new Irbis.DataService.Init();

            _orderDataService = dataService.OrderDataService;
        }
示例#20
0
        public HttpStatusCode SendMDN(HttpRequest request, int timeoutMs, string signingCertFilename, string signingCertPassword)
        {
            try
            {
                string fileData = "This is an automated MDN";
                byte[] content  = Encoding.ASCII.GetBytes(fileData);


                OrderDataService      OrderDataServ = new OrderDataService();
                AS2CommunicationModel commDetails   = OrderDataServ.GetAS2CommunicationDetials(request.Headers["AS2-From"]);

                //Initialise the request
                HttpWebRequest http = (HttpWebRequest)WebRequest.Create(commDetails.AS2MDNURL);
                string         recipientPubCertFilename = commDetails.CertificateName;

                //Define the standard request objects
                http.Method = "POST";

                http.AllowAutoRedirect = true;

                http.KeepAlive = true;

                http.PreAuthenticate = false; //Means there will be two requests sent if Authentication required.
                http.SendChunked     = false;

                //http.UserAgent = "PEERCORE AGENT";

                //These Headers are common to all transactions
                http.Headers.Add("Mime-Version", "1.0");
                http.Headers.Add("AS2-Version", "1.2");
                //http.Headers.Add("Date", DateTime.Now.ToString());

                http.Headers.Add("AS2-From", request.Headers["AS2-To"]);
                http.Headers.Add("AS2-To", request.Headers["AS2-From"]);
                http.Headers.Add("Subject", "PO MDN");
                http.Headers.Add("Message-Id", request.Headers["Message-Id"] != null? request.Headers["Message-Id"]:"0");
                http.Timeout = timeoutMs;

                string contentType = "message/disposition-notification";

                bool encrypt = !string.IsNullOrEmpty(recipientPubCertFilename);
                bool sign    = !string.IsNullOrEmpty(signingCertFilename);

                if (!sign && !encrypt)
                {
                    http.Headers.Add("Content-Transfer-Encoding", "binary");
                    http.Headers.Add("Content-Disposition", "inline");
                }
                if (sign)
                {
                    // Wrap the file data with a mime header
                    content = AS2MIMEUtilities.CreateMessage(contentType, "binary", "", content);

                    content = AS2MIMEUtilities.Sign(content, signingCertFilename, signingCertPassword, out contentType);

                    http.Headers.Add("EDIINT-Features", "multiple-attachments");
                }
                if (encrypt)
                {
                    string certificateFullPath = "";
                    if (string.IsNullOrEmpty(recipientPubCertFilename))
                    {
                        throw new ArgumentNullException(recipientPubCertFilename, "if encrytionAlgorithm is specified then recipientCertFilename must be specified");
                    }
                    else
                    {
                        certificateFullPath = ConfigValues.CertificateFilePath + recipientPubCertFilename;
                    }

                    byte[] signedContentTypeHeader           = System.Text.ASCIIEncoding.ASCII.GetBytes("Content-Type: " + contentType + Environment.NewLine);
                    byte[] contentWithContentTypeHeaderAdded = AS2MIMEUtilities.ConcatBytes(signedContentTypeHeader, content);

                    string ba2Str = System.Text.Encoding.Default.GetString(content);
                    string s1     = System.Text.Encoding.Default.GetString(signedContentTypeHeader);
                    string s2     = System.Text.Encoding.Default.GetString(contentWithContentTypeHeaderAdded);
                    content = AS2Encryption.EncryptMDN(contentWithContentTypeHeaderAdded, certificateFullPath, EncryptionAlgorithm.DES3);

                    //  contentType += "multipart/report; report-type=disposition-notification; boundary=\"fredi.boundary.mult.sig.mdn\"; charset=utf-8";
                }

                http.ContentType  += contentType;
                http.ContentLength = content.Length;

                SendWebRequest(http, content);

                return(HandleWebResponse(http));
            }
            catch (Exception ex)
            {
                Log.Error($"Exception during sending MDN :: {ex.Message}");
                throw;
            }
        }
        public async Task Returns_AddedOrder_When_Correct_Parrameters_Are_Passed()
        {
            var orderTotal = 123;
            var userId     = "U1";
            var orderId    = "O1";
            var singlePie  = PieListMock
                             .MockPieCatalog()
                             .ToList()
                             .FirstOrDefault();

            var orderAddressCity    = "AI";
            var orderAddressNumber  = "+123";
            var orderAddressStreet  = "Samp";
            var orderAddressZipCode = "5100";

            var pies = new List <Pie>()
            {
                singlePie
            };

            var orderAddress = new Address()
            {
                City    = orderAddressCity,
                Number  = orderAddressNumber,
                Street  = orderAddressStreet,
                ZipCode = orderAddressZipCode
            };

            var order = new Order()
            {
                Address    = orderAddress,
                OrderTotal = orderTotal,
                Pies       = pies,
                UserId     = userId,
                OrderId    = orderId
            };

            var requestProviderMock = new Mock <IRequestProvider>();

            requestProviderMock
            .Setup(e => e.PostAsync <Order>(It.IsAny <string>(), It.IsAny <Order>(), It.IsAny <string>()))
            .Returns(Task.FromResult <Order>(order));

            var orderDataService = new OrderDataService(requestProviderMock.Object);

            var addedOrderResult = await orderDataService.AddOrderAsync(order);

            Assert.NotNull(addedOrderResult);
            Assert.NotNull(addedOrderResult.Address);
            Assert.NotNull(addedOrderResult.Pies);

            Assert.AreEqual(addedOrderResult.OrderTotal, orderTotal);
            Assert.AreEqual(addedOrderResult.UserId, userId);
            Assert.AreEqual(addedOrderResult.OrderId, orderId);

            var orderAddedAddress = addedOrderResult.Address;

            Assert.AreEqual(orderAddedAddress.City, orderAddressCity);
            Assert.AreEqual(orderAddedAddress.Number, orderAddressNumber);
            Assert.AreEqual(orderAddedAddress.Street, orderAddressStreet);
            Assert.AreEqual(orderAddedAddress.ZipCode, orderAddressZipCode);

            var orderAddedPies = addedOrderResult.Pies;

            Assert.AreEqual(orderAddedPies.Count, 1);

            var orderAddedPie = orderAddedPies.FirstOrDefault();

            Assert.AreEqual(orderAddedPie.ImageThumbnailUrl, singlePie.ImageThumbnailUrl);
            Assert.AreEqual(orderAddedPie.ImageUrl, singlePie.ImageUrl);
            Assert.AreEqual(orderAddedPie.InStock, singlePie.InStock);
            Assert.AreEqual(orderAddedPie.IsPieOfTheWeek, singlePie.IsPieOfTheWeek);
            Assert.AreEqual(orderAddedPie.LongDescription, singlePie.LongDescription);
            Assert.AreEqual(orderAddedPie.Name, singlePie.Name);
            Assert.AreEqual(orderAddedPie.PieId, singlePie.PieId);
            Assert.AreEqual(orderAddedPie.Price, singlePie.Price);
            Assert.AreEqual(orderAddedPie.ShortDescription, singlePie.ShortDescription);
            Assert.AreEqual(orderAddedPie.AllergyInformation, singlePie.AllergyInformation);
        }
示例#22
0
 public OrdersController(CnamDbContext context, OrderDataService orderDataService)
 {
     _orderDataService = orderDataService;
     _context          = context;
 }
示例#23
0
        /// <summary>
        /// Inserts the order to database.
        /// </summary>
        /// <param name="webOrder">The web order.</param>
        private void InsertOrderToDB(WebOrderHeaderModel webOrder)
        {
            OrderDataService OrderDataServ = null;

            try
            {
                OrderDataServ = HttpContext.Current.Application["OrderDataServ"] as OrderDataService;
                OrderDataServ.IncrementPFDWebOrderID(); // Increment before fetch
                webOrder.WebId        = OrderDataServ.GetNextPFDWebOrderId();
                webOrder.CustomerCode = OrderDataServ.GetCustomerCodeById(webOrder.BillTo);

                string ackCustCode = OrderDataServ.GetAckCustCode(webOrder.CustomerCode);

                if (!string.IsNullOrEmpty(ackCustCode))
                {
                    webOrder.IsAckRequired = 1;
                }
                else
                {
                    webOrder.IsAckRequired = 0;
                }

                if (string.IsNullOrEmpty(webOrder.CustomerCode) == false)
                {
                    webOrder.OrderNote = " ";
                }
            }
            catch (QueryExecutionException ex)
            {
                Log.Error($"Query execution exception {ex.Message}");
                throw;
            }

            webOrder.Comments = " ";

            bool success = false;

            try
            {
                success = OrderDataServ.InsertWebOrderHeader(webOrder);
            }
            catch (QueryExecutionException ex)
            {
                Log.Error($"Order header insertion failed. {ex.Message} + Inner Ex : {ex.InnerException.Message}");
                throw;
            }

            if (false == success)
            {
                return;
            }


            foreach (WebOrderDetailModel wod in webOrder.WebOrderDetailList)
            {
                try
                {
                    wod.WebId = webOrder.WebId;

                    if (string.IsNullOrEmpty(wod.CatlogCode))
                    {
                        wod.CatlogCode  = OrderDataServ.GetCatlogCodeByGTIN(wod.GTINCode);
                        wod.ProductNote = wod.CatlogCode;
                    }
                    success = OrderDataServ.InsertWebOrderDetail(wod);
                }
                catch (QueryExecutionException ex)
                {
                    Log.Error($"Order detail insertion failed. {ex.Message} + Inner Ex : {ex.InnerException.Message}, rolling back.");
                    OrderDataServ.RollBackOrderReferences(webOrder.WebId);
                    throw;
                }
                if (success == false)
                {
                    Log.Error($"Order detail inserttion failed for web order id : {webOrder.WebId} , rolling back.");
                    OrderDataServ.RollBackOrderReferences(webOrder.WebId);
                    return;
                }
            }
        }
示例#24
0
        public HttpStatusCode SendAcknowledgment(byte[] fileData, string from, string to, ProxySettings proxySettings
                                                 , int timeoutMs, string signingCertFilename, string signingCertPassword)
        {
            try
            {
                byte[] content = fileData;


                OrderDataService      OrderDataServ = new OrderDataService();
                AS2CommunicationModel commDetails   = OrderDataServ.GetAS2CommunicationDetials(to);

                //  if (commDetails != null)
                //  {

                //Initialise the request
                HttpWebRequest http = (HttpWebRequest)WebRequest.Create(commDetails.AS2MDNURL);
                string         recipientPubCertFilename = commDetails.CertificateName;

                if (!String.IsNullOrEmpty(proxySettings.Name))
                {
                    WebProxy proxy = new WebProxy(proxySettings.Name);

                    NetworkCredential proxyCredential = new NetworkCredential();
                    proxyCredential.Domain   = proxySettings.Domain;
                    proxyCredential.UserName = proxySettings.Username;
                    proxyCredential.Password = proxySettings.Password;

                    proxy.Credentials = proxyCredential;

                    http.Proxy = proxy;
                }

                //Define the standard request objects
                http.Method = "POST";

                http.AllowAutoRedirect = true;

                http.KeepAlive = true;

                http.PreAuthenticate = false; //Means there will be two requests sent if Authentication required.
                http.SendChunked     = false;

                http.UserAgent = "PEERCORE AGENT";

                //These Headers are common to all transactions
                http.Headers.Add("Mime-Version", "1.0");
                http.Headers.Add("AS2-Version", "1.2");

                http.Headers.Add("AS2-From", from);
                http.Headers.Add("AS2-To", to);
                http.Headers.Add("Subject", "PO Acknowledgment");
                http.Headers.Add("Message-Id", "<AS2_" + DateTime.Now.ToString("hhmmssddd") + ">");
                http.Timeout = timeoutMs;

                string contentType = "application/EDIFACT";

                bool encrypt = !string.IsNullOrEmpty(recipientPubCertFilename);
                bool sign    = !string.IsNullOrEmpty(signingCertFilename);

                if (!sign && !encrypt)
                {
                    http.Headers.Add("Content-Transfer-Encoding", "binary");
                    http.Headers.Add("Content-Disposition", "inline");
                }
                if (sign)
                {
                    // Wrap the file data with a mime header
                    content = AS2MIMEUtilities.CreateMessage(contentType, "binary", "", content);

                    content = AS2MIMEUtilities.Sign(content, signingCertFilename, signingCertPassword, out contentType);

                    http.Headers.Add("EDIINT-Features", "multiple-attachments");
                }
                if (encrypt)
                {
                    if (string.IsNullOrEmpty(recipientPubCertFilename))
                    {
                        throw new ArgumentNullException(recipientPubCertFilename, "if encrytionAlgorithm is specified then recipientCertFilename must be specified");
                    }

                    byte[] signedContentTypeHeader           = System.Text.ASCIIEncoding.ASCII.GetBytes("Content-Type: " + contentType + Environment.NewLine);
                    byte[] contentWithContentTypeHeaderAdded = AS2MIMEUtilities.ConcatBytes(signedContentTypeHeader, content);

                    string ba2Str = System.Text.Encoding.Default.GetString(content);
                    string s1     = System.Text.Encoding.Default.GetString(signedContentTypeHeader);
                    string s2     = System.Text.Encoding.Default.GetString(contentWithContentTypeHeaderAdded);
                    content = AS2Encryption.Encrypt(contentWithContentTypeHeaderAdded, recipientPubCertFilename, EncryptionAlgorithm.DES3);


                    if (commDetails.MessageFormat == "SMIME")
                    {
                        contentType += "application/pkcs7-mime; smime-type=enveloped-data; name=\"smime.p7m\"";
                    }
                }

                http.ContentType  += contentType;
                http.ContentLength = content.Length;

                SendWebRequest(http, content);

                return(HandleWebResponse(http));
            }
            catch (Exception ex)
            {
                throw;
            }
        }