コード例 #1
0
        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);
        }