public async Task <Reserve> Add(Reserve reserve) { Expression <Func <Reserve, bool> > pred = re => re.DateStart.CompareTo(reserve.DateStart) >= 0 && re.DateEnd.CompareTo(reserve.DateStart) <= 0; var r = await _reserveRepository.Find(pred); if (r.Any()) { Notify("Já exite uma Reserva nesse período!"); return(null); } var itemsIds = reserve.ReserveItem.Select(ri => ri.ItemId); var items = await _itemRepository .Find(i => itemsIds.Contains(i.Id) && i.DisabledAt == null); if (items.Count() != itemsIds.Count()) { Notify("Um ou mais itens não existem ou não estão disponíveis!"); return(null); } reserve = await _reserveRepository.Add(reserve); return(reserve); }