public async Task <IActionResult> DIP(NetworkScanEvent networkScanEvent) { await this.eventStoreService.NetworkScan(networkScanEvent, PackageEventType.DepotInbound); this.messengerService.WarehouseScan(networkScanEvent, "dip"); return(this.Ok()); }
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); }
public void WarehouseScan(NetworkScanEvent networkScanEvent, string scan) { this.rabbitMessenger.SendMessage("package.warehouse-scan", networkScanEvent, scan); }
public async Task NetworkScan(NetworkScanEvent networkScanEvent, PackageEventType packageEventType) { await this.Insert(networkScanEvent.Barcode, packageEventType, networkScanEvent); }