public async Task <ActionResult <ReserveViewModel> > Get(int id)
        {
            var reserve = await _reserveRepository.GetByIdWithItems(id);

            if (reserve == null)
            {
                return(NotFound());
            }

            return(CustomResponse(_mapper.Map <ReserveViewModel>(reserve)));
        }
Exemplo n.º 2
0
        public async Task Update(Reserve reserve)
        {
            Expression <Func <Reserve, bool> > pred = re =>
                                                      re.Id != reserve.Id &&
                                                      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;
            }

            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;
            }

            var reserveItems = await _reserveRepository.GetByIdWithItems(reserve.Id);

            var reserveItemsId = reserve.ReserveItem.Select(ri => ri.IdReserveItem);
            var itemsToRemove  = reserveItems
                                 .ReserveItem
                                 .Where(ri => !reserveItemsId.Contains(ri.IdReserveItem))
                                 .ToList();

            await _reserveItemRepository.ForceRemove(itemsToRemove);

            await _reserveRepository.Update(reserve);
        }