public static RestaurantDocument Haggis()
        {
            var order = new RestaurantDocument(GetNextId());

            order.Items.Add(new Item("Haggis"));
            return(order);
        }
        public static RestaurantDocument Kapsalon()
        {
            var order = new RestaurantDocument(GetNextId());

            order.Items.Add(new Item("Kapsalon"));
            return(order);
        }
        public static RestaurantDocument FishAndChips()
        {
            var order = new RestaurantDocument(GetNextId());

            order.Items.Add(new Item("Fish and Chips"));
            return(order);
        }
Beispiel #4
0
        public void CanCreateInstance()
        {
            var restaurantDocument = new RestaurantDocument("1");

            var sut = CreateSut(JsonConvert.SerializeObject(restaurantDocument));

            sut.Should().NotBeNull();
        }
        public void Handle(RestaurantDocument order)
        {
            order.Items.ForEach(x => x.Price = 100);
            order.Tax   = 3.5;
            order.Total = order.Items.Sum(x => x.Price);

            Thread.Sleep(500);
            _publisher.Publish(new OrderPriced(order));
        }
Beispiel #6
0
        public void ItemsGetter_ShouldReturnJson()
        {
            Item item = new Item("Pizza");
            var  restaurantDocument = new RestaurantDocument("1");

            restaurantDocument.Items.Add(item);

            var sut = CreateSut(JsonConvert.SerializeObject(restaurantDocument));

            sut.Items[0].Description.Should().Be("Pizza");
        }
Beispiel #7
0
        public void Handle(OrderPriced message)
        {
            RestaurantDocument order = message.Order;

            bool orderHandler = false;

            while (!orderHandler)
            {
                orderHandler = _unpaidOrders.TryAdd(order.Id, order);
            }
            _publisher.Publish(new OrderSpiked(order));
        }
Beispiel #8
0
        public void TimeToCookMsGetter_ShouldReturnFromJson()
        {
            int expectedTimeToCook = 300;
            var restaurantDocument = new RestaurantDocument("1")
            {
                TimeToCookMs = 300
            };

            var sut = CreateSut(JsonConvert.SerializeObject(restaurantDocument));

            sut.TimeToCookMs.Should().Be(expectedTimeToCook);
        }
Beispiel #9
0
        public void TaxGetter_ShouldReturnFromJson()
        {
            double expectedTax        = 2.00;
            var    restaurantDocument = new RestaurantDocument("1")
            {
                Tax = 2.00
            };

            var sut = CreateSut(JsonConvert.SerializeObject(restaurantDocument));

            sut.Tax.Should().Be(expectedTax);
        }
Beispiel #10
0
        public void Handle(OrderPlaced message)
        {
            RestaurantDocument order1 = message.Order;

            Console.WriteLine($"{Name} received order");
            order1.Ingredients.Add("Tomato");
            order1.TimeToCookMs = 500;

            WaitForMealToBeCooked();
            MealsCooked++;
            _publisher.Publish(new OrderCooked(order1));
        }
Beispiel #11
0
        public void TableNumberGetter_ShouldReturnValueFromJson()
        {
            int expectedTableNumber = 10;
            var restaurantDocument  = new RestaurantDocument("1")
            {
                TableNumber = expectedTableNumber
            };

            var sut = CreateSut(JsonConvert.SerializeObject(restaurantDocument));

            sut.TableNumber.Should().Be(expectedTableNumber);
        }
Beispiel #12
0
        public async Task <Result <IPagedList <RestaurantMinimalDto> > > Handle(GetRestaurantsQuery request,
                                                                                CancellationToken cancellationToken)
        {
            var restaurants = await _collection.RestaurantsCollection.Find(Filters.EmptyFilter <RestaurantDocument>())
                              .SortByDescending(RestaurantDocument.GetOrderBy(request.OrderBy))
                              .Skip(PaginationHelper.Skip(request.PageNumber, request.PageSize))
                              .Limit(request.PageSize)
                              .Project(Projections.MinimalRestaurantProjection())
                              .ToListAsync(cancellationToken);

            return(Result.Ok(restaurants.ToPagedList(request.PageNumber, request.PageSize)));
        }
Beispiel #13
0
        public void Handle(OrderSpiked message)
        {
            RestaurantDocument order = message.Order;

            foreach (var item in order.Items)
            {
                Console.WriteLine($"{item.Description}  ${item.Price}");
            }
            try
            {
                foreach (var ingredient in order.Ingredients)
                {
                    Console.WriteLine($"Ingredients: {ingredient}");
                }
            }
            catch (Exception ex)
            {
            }

            Console.WriteLine($"Tax: {order.Tax}");
            Console.WriteLine($"Total: {order.Total}");
        }
        public async Task Handle(RestaurantRegisteredEvent notification, CancellationToken cancellationToken)
        {
            var restaurant = await _tableDataProvider.GetRestaurant(notification.PhoneNumber);

            var geographicLocation = await _tableDataProvider.GetGeoGraphicLocation(restaurant.Id);

            var cuisines = await _tableDataProvider.GetCuisineList(notification.CuisineIds);

            var categories = await _tableDataProvider.GetCategoryList(notification.CategoryIds);

            var document = new RestaurantDocument(
                restaurant.Id,
                restaurant.Name,
                restaurant.PhoneNumber,
                restaurant.LocalityId,
                restaurant.State,
                restaurant.OpeningHour,
                restaurant.ClosingHour,
                restaurant.SubscriptionType,
                restaurant.ContractStatus,
                restaurant.ImageUrl,
                restaurant.Rating,
                restaurant.TotalRatingsCount,
                restaurant.ExpirationDate,
                restaurant.Description,
                restaurant.DescriptionEng,
                address: geographicLocation.Name,
                latitude: geographicLocation.Latitude,
                longitude: geographicLocation.Longitude
                );

            cuisines.ForEach(x => document.AddCuisine(x.ToRecord()));
            categories.ForEach(x => document.AddCategory(x.ToRecord()));


            await _documentCollection.RestaurantsCollection.InsertOneAsync(document, cancellationToken);
        }
Beispiel #15
0
 public void PlaceOrder(RestaurantDocument order)
 {
     _publisher.Publish(new OrderPlaced(order,
                                        DateTime.Now + TimeSpan.FromMilliseconds(5000)));
 }
 public OrderSpiked(RestaurantDocument order)
 {
     Order = order;
     Id    = order.Id;
 }
 public OrderPlaced(RestaurantDocument order, DateTime timeToLive)
 {
     Order      = order;
     TimeToLive = timeToLive;
     Id         = order.Id;
 }