コード例 #1
0
        public async Task Create()
        {
            var booking = new BookingAM();

            await Suite.Controller.Create(booking);

            Suite.ApplicationServiceMock
            .Verify(m => m.CreateOrder(booking));
        }
コード例 #2
0
        public async Task <Order> CreateOrder(BookingAM booking)
        {
            using (var transaction = await TransactionService.BeginTransaction())
            {
                try
                {
                    var domainCustomer = await CustomerService.GetDomainCustomer(booking.Customer);

                    var domainCargo = await CargoService.CreateDomainCargo(booking.Cargo);

                    var domainBill = await BillService.CreateDomainBill(booking.BillInfo, booking.Basket);

                    var route = await RouteService.GetRoute(booking.RootAddress, booking.Waypoints);

                    var domainRoute = await RouteService.CreateDomainRoute(route);

                    var result = await DomainOrderService.Create(
                        booking.OrderTime,
                        domainCustomer.Id,
                        domainCargo.Id,
                        domainRoute.Id,
                        domainBill.Id);

                    await OrderStateService.New(result.Id);

                    transaction.Commit();

                    return(result);
                }
                catch
                {
                    transaction.Rollback();
                    throw;
                }
            }
        }
コード例 #3
0
        public async Task CreateOrder()
        {
            var commonId = 1;

            var booking = new BookingAM
            {
                OrderTime   = DateTime.MinValue,
                RootAddress = new AddressAM
                {
                    Latitude  = 11.2222,
                    Longitude = 22.3333
                },
                BillInfo = new BillInfoAM
                {
                    PriceId = commonId++,
                    CommissionPercentage = 10,
                    DegreeOfDifficulty   = 1
                },
                Customer = new CustomerAM
                {
                    PhoneNumber = "79101112233",
                    FirstName   = "Генадий"
                },
                Basket = new BasketAM
                {
                    KmValue             = 200,
                    DitchValue          = 0,
                    LoadingValue        = 1,
                    LockedWheelsValue   = 2,
                    LockedSteeringValue = 1,
                    OverturnedValue     = 0
                },
                Cargo = new CargoAM
                {
                    BrandCatalogItemId  = commonId++,
                    KindCatalogItemId   = commonId++,
                    WeightCatalogItemId = commonId++,
                    RegistrationNumber  = "в100вв76",
                    Comment             = "Не работает пневма"
                },
                Waypoints = new WaypointsAM
                {
                    Points = new List <AddressAM>
                    {
                        new AddressAM {
                            Country = "Россия", Area = "Ярославская область", Province = "Ярославский район", Locality = "Ярославль", Street = "пр-кт Революции", House = "120"
                        },
                        new AddressAM {
                            Country = "Россия", Area = "Ярославская область", Province = "Пошехонский район", Locality = "Пошехонье", Street = "Солнечная", House = "12"
                        }
                    },
                    Comment = "На закрытой парковке. Попросить охраника открыть шлагбаум"
                }
            };

            var route       = new RouteAM();
            var domainRoute = new Route {
                Id = commonId++
            };
            var domainCustomer = new Customer {
                Id = commonId++
            };
            var domainCargo = new Cargo {
                Id = commonId++
            };
            var domainBill = new Bill {
                Id = commonId++
            };
            var domainOrder = new Order {
                Id = commonId++
            };

            Suite.CustomerServiceMock
            .Setup(m => m.GetDomainCustomer(booking.Customer))
            .ReturnsAsync(domainCustomer);
            Suite.CargoServiceMock
            .Setup(m => m.CreateDomainCargo(booking.Cargo))
            .ReturnsAsync(domainCargo);
            Suite.RouteServiceMock
            .Setup(m => m.GetRoute(booking.RootAddress, booking.Waypoints))
            .ReturnsAsync(route);
            Suite.RouteServiceMock
            .Setup(m => m.CreateDomainRoute(route))
            .ReturnsAsync(domainRoute);
            Suite.BillServiceMock
            .Setup(m => m.CreateDomainBill(booking.BillInfo, booking.Basket))
            .ReturnsAsync(domainBill);
            Suite.DomainOrderServiceMock
            .Setup(m => m.Create(booking.OrderTime,
                                 domainCustomer.Id,
                                 domainCargo.Id,
                                 domainRoute.Id,
                                 domainBill.Id))
            .ReturnsAsync(domainOrder);

            var result = await Suite.OrderService.CreateOrder(booking);

            Suite.OrderStateServiceMock
            .Verify(m => m.New(domainOrder.Id));
            Assert.Equal(domainOrder, result);
        }
コード例 #4
0
        public async Task <IActionResult> Create([FromBody] BookingAM booking)
        {
            await Service.CreateOrder(booking);

            return(Ok());
        }