public string CreateReserva(PedidoReservaDTO reserva) { var eventName = EventName.ReservaRecebida.Value; var streamId = Guid.NewGuid().ToString(); var reservaEvent = new ReservaRecebidaEvent(reserva.utente, reserva.dataInicio, reserva.dataFim, reserva.obra, streamId); var json = JsonConvert.SerializeObject(reservaEvent); _eventHandler.SendEvent(_factory, ExchangeName, eventName, json, streamId); return(streamId); }
public void ValidateReserva(DateTime dataInicio, DateTime dataFim, string obra, string utente, string streamId, List <ObraDTO> obrasAutorizadas, List <ObraDTO> obrasSemEmprestimo) { var listaReservas = GetReservas(dataInicio, dataFim, obra); var routingKey = EventName.ReservaNaoAceite.Value; var reservaEvent = new ReservaRecebidaEvent(utente, dataInicio, dataFim, obra, streamId); var json = JsonConvert.SerializeObject(reservaEvent); _logger.LogDebug(" -- obrasAutorizadas {0} -- ", obrasAutorizadas.Count); _logger.LogDebug(" -- obrasSemEmprestimo {0} -- ", obrasSemEmprestimo.Count); if (listaReservas != null && listaReservas.Count > 0 && IsReservaOfUtente(listaReservas, utente)) { //Utente já tem o livro reservado _eventHandler.SendEvent(_factory, ExchangeName, routingKey, json, streamId); } else { var obrasComReservas = new List <ObraDTO>(); if (listaReservas != null) { foreach (var item in listaReservas) { obrasComReservas.Add(item.obra); } } _logger.LogDebug(" -- obrasComReservas {0} -- ", obrasComReservas.Count); var obrasAutorizadasSemEmprestimo = obrasAutorizadas.Intersect(obrasSemEmprestimo).ToList(); if (obrasAutorizadasSemEmprestimo == null || obrasAutorizadasSemEmprestimo.Count == 0) { _eventHandler.SendEvent(_factory, ExchangeName, routingKey, json, streamId); } else { _logger.LogDebug(" -- obrasAutorizadasSemEmprestimo {0} -- ", obrasAutorizadasSemEmprestimo.Count); var obrasAutorizadasSemEmprestimoSemReservas = obrasAutorizadasSemEmprestimo.Where(x => !obrasComReservas.Contains(x)).ToList(); if (obrasAutorizadasSemEmprestimoSemReservas == null || obrasAutorizadasSemEmprestimoSemReservas.Count == 0) { _eventHandler.SendEvent(_factory, ExchangeName, routingKey, json, streamId); } else { _logger.LogDebug(" -- obrasAutorizadasSemEmprestimoSemReservas {0} -- ", obrasAutorizadasSemEmprestimoSemReservas.Count); routingKey = EventName.ReservaAceite.Value; var obraReservar = obrasAutorizadasSemEmprestimoSemReservas[0]; json = JsonConvert.SerializeObject(new ReservaAceiteEvent(utente, dataInicio, dataFim, obraReservar, streamId)); _eventHandler.SendEvent(_factory, ExchangeName, routingKey, json, streamId); } } } }