public async Task <ActionResult <string> > GetSignalsForCaller(string to, string from, WebRTCSignalTypesEnum type = WebRTCSignalTypesEnum.any) { if (string.IsNullOrEmpty(to) || string.IsNullOrEmpty(from)) { return(BadRequest()); } var query = _context.WebRTCSignals.Where(x => x.To.ToLower() == to.ToLower() && x.From.ToLower() == from.ToLower() && x.DeliveredAt == null); if (type != WebRTCSignalTypesEnum.any) { query = query.Where(x => x.SignalType == type.ToString()); } var nextSignal = await query .OrderBy(x => x.Inserted) .FirstOrDefaultAsync(); if (nextSignal != null) { nextSignal.DeliveredAt = DateTime.UtcNow.ToString("o"); await _context.SaveChangesAsync(); return(nextSignal.Signal); } else { return(NoContent()); } }