private async Task <bool> HandlePackagesAsync(DayHasBegun e) { Console.WriteLine($"Day Has Begun " + e); using (var db = GetShippingDb()) { try { var packageToShip = await db.Package.Where(p => p.TimeOfRecieve.Date == DateTime.Now.Date.AddDays(-1) && p.Shipped == false).ToListAsync();; var orders = await db.Order.ToListAsync(); if (packageToShip != null && orders != null) { //var shippedOrders = new List<Order>(); foreach (var pp in packageToShip) { var packageOrders = await db.Order.Where(o => o.PackageId == pp.PackageId).ToListAsync(); foreach (var ppOrder in packageOrders) { var trackingCode = _logisticsService.GenerateTrackingCode(); var ordersToShip = new Order { OrderId = ppOrder.OrderId, TrackingCode = trackingCode }; //shippedOrders.Add(ordersToShip); // send event await _messagePublisher.PublishMessageAsync(MessageTypes.OrderShipped, ordersToShip, ""); Console.WriteLine($"Order is shipped: " + ordersToShip); } var package = await db.Package.FirstOrDefaultAsync(t => t.PackageId == pp.PackageId); package.Shipped = true; db.Package.Update(package); await db.SaveChangesAsync(); } } } catch (DbUpdateException) { Console.WriteLine($"Failed to ship order"); } } return(true); }
private async void Worker() { while (true) { TimeSpan now = DateTime.Now.TimeOfDay; if (start == now) { Console.WriteLine($"Day has begun!"); DayHasBegun e = new DayHasBegun(Guid.NewGuid()); await _messagePublisher.PublishMessageAsync(MessageTypes.DayHasBegun, e, ""); } Thread.Sleep(10000); } }