Ejemplo n.º 1
0
        public async Task <IActionResult> DIP(NetworkScanEvent networkScanEvent)
        {
            await this.eventStoreService.NetworkScan(networkScanEvent, PackageEventType.DepotInbound);

            this.messengerService.WarehouseScan(networkScanEvent, "dip");
            return(this.Ok());
        }
Ejemplo n.º 2
0
        public async Task <bool> NetworkScan(NetworkScanEvent networkScanEvent, string scanType)
        {
            // NOTE : can do Find and Update/Replace - but this is better for concurrency (when applied with a model)
            // See comparison with DriverService.Service.ReadModelService.UpdateDriverWithStats

            // Below is like:
            // UPDATE Package
            // SET [State] = @State
            // ,   [Location] = @Location
            // WHERE Barcode = @Barcode

            var update = Builders <Package> .Update
                         .Set(t => t.State, PackageState.InNetwork)
                         // Because Location is "schema-less" we can set it to the following object: { depot: "<depot>" }
                         .Set(t => t.Location, new BsonDocument("depot", networkScanEvent.Depot));

            // Update based off matching barcode with update statement above
            var result = await this.collection.UpdateOneAsync(x => x.Barcode == networkScanEvent.Barcode, update);

            return(result.ModifiedCount == 1);
        }
Ejemplo n.º 3
0
 public void WarehouseScan(NetworkScanEvent networkScanEvent, string scan)
 {
     this.rabbitMessenger.SendMessage("package.warehouse-scan", networkScanEvent, scan);
 }
Ejemplo n.º 4
0
 public async Task NetworkScan(NetworkScanEvent networkScanEvent, PackageEventType packageEventType)
 {
     await this.Insert(networkScanEvent.Barcode, packageEventType, networkScanEvent);
 }