public async Task <IActionResult> UpdatePakje([FromBody] Pakje pakje) { var entity = await _context.Pakjes.FirstOrDefaultAsync(p => p.PakjeId == pakje.PakjeId); if (entity == null) { return(new NotFoundResult()); } // determine update type PakjeMessage pakjeMessage = null; if (pakje.LeveringsStatus == LeveringsStatus.Geleverd) { pakjeMessage = new PakjeGeleverdMessage(); ((PakjeGeleverdMessage)pakjeMessage).GeleverdOp = pakje.GeleverdOp; } else if (pakje.LeveringsStatus != entity.LeveringsStatus) { pakjeMessage = new PakjeStatusGewijzigdMessage(); ((PakjeStatusGewijzigdMessage)pakjeMessage).VorigeStatus = entity.LeveringsStatus; ((PakjeStatusGewijzigdMessage)pakjeMessage).NieuweStatus = pakje.LeveringsStatus; } else if (pakje.VoorzieneLeveringOp != entity.VoorzieneLeveringOp) { pakjeMessage = new PakjeLeveringGewijzigdMessage(); ((PakjeLeveringGewijzigdMessage)pakjeMessage).VorigeVoorzieneLeveringOp = entity.VoorzieneLeveringOp; ((PakjeLeveringGewijzigdMessage)pakjeMessage).NieuweVoorzieneLeveringOp = pakje.VoorzieneLeveringOp; } else { pakjeMessage = new PakjeMessage(); } // save changes entity.LeveringsStatus = pakje.LeveringsStatus; entity.Bestemmeling = pakje.Bestemmeling ?? entity.Bestemmeling; entity.Inhoud = pakje.Inhoud ?? entity.Inhoud; entity.KoerierDienst = pakje.KoerierDienst ?? entity.KoerierDienst; entity.Verzender = pakje.Verzender ?? entity.Verzender; entity.VoorzieneLeveringOp = pakje.VoorzieneLeveringOp ?? entity.VoorzieneLeveringOp; entity.GeleverdOp = pakje.GeleverdOp ?? entity.GeleverdOp; await _context.SaveChangesAsync(); // send message pakjeMessage.Bestemmeling = entity.Bestemmeling; pakjeMessage.Inhoud = entity.Inhoud; pakjeMessage.KoerierDienst = entity.KoerierDienst; pakjeMessage.Verzender = entity.Verzender; pakjeMessage.VoorzieneLeveringOp = entity.VoorzieneLeveringOp; await _queueSender.SendMessage(pakjeMessage); return(new OkObjectResult(entity)); }
public async Task SendMessage(PakjeMessage pakjeMessage) { Address address = new Address(_settings.Address); Connection connection = await Connection.Factory.CreateAsync(address); Session session = new Session(connection); Message message = new Message() { BodySection = new AmqpValue <PakjeMessage>(pakjeMessage) }; SenderLink sender = new SenderLink(session, "sender-link", _settings.QueueName); await sender.SendAsync(message); await sender.CloseAsync(); await session.CloseAsync(); await connection.CloseAsync(); }