// Server side handler for the setPreferredSupplierForProduct RPC public override async Task <Empty> setPreferredSupplierForProduct(setPreferredSupplierForProductRequest request, ServerCallContext context) { //var scoped = _serviceProvider.CreateScope(); //var supplierService = scoped.ServiceProvider.GetRequiredService<SupplierService>(); //var supplier = supplierService.findById(request.PrefSupplier.Id); //var product = supplierService.findProductById(request.ProductReq.Id); //supplierService.setPreferredSupplierForProduct(supplier, product, request.ProductReq.Id); //return null; if (!products.Contains(request.ProductReq)) { throw new UnknownProductException(); } if (!suppliers.Contains(request.PrefSupplier)) { throw new UnknownSupplierException(); } foreach (var product in products) { if (product.Id == request.ProductReq.Id) { lock (myLock) { Task.Run(() => product.Preferredsupplier = request.PrefSupplier.Id); } return(await Task.FromResult(new Empty { Info = 1 })); } } return(await Task.FromResult(new Empty { Info = 0 })); }
// Realisierung von setPreferredSupplierForProduct public async Task setPreferredSupplierForProduct(setPreferredSupplierForProductRequest x) { Console.WriteLine("***** Task setPreferredSupplierForProduct *****"); var result = await _client.setPreferredSupplierForProductAsync(x); // 0 ist der Defaultwert für int32 Felder if (result.Info != 1) { throw new Exception("An unknown error has occured. Please contact the developers for further help."); } }