Example #1
0
        public async Task PopulateRoomAsync <TDtoEntity>(int roomId, TDtoEntity populationDto)
        {
            // получаем комнату
            Room room = await repository.GetByIdAsync(roomId);

            // проверим, существует ли комната
            if (room == null)
            {
                // не существует
                throw new ArgumentOutOfRangeException();
            }
            else
            {
                ReserveDataDto reserveDataDto = mapper.Map <ReserveDataDto>(populationDto);
                RoomStatus     roomStatus     = null;
                // проверим, была ли комната зарезервирована
                if (room.Status != null)
                {
                    // запись уже есть, значит обновим ее под период проживания
                    roomStatus = room.Status;
                    roomStatus.ReserveStart = reserveDataDto.ReserveStart;
                    roomStatus.ReserveEnd   = reserveDataDto.ReserveEnd;
                    //обновляем
                    _roomStatusRepository.Update(roomStatus);
                }
                else
                {
                    // добавим новую запись
                    roomStatus = new RoomStatus
                    {
                        RoomId       = roomId,
                        ReserveStart = reserveDataDto.ReserveStart,
                        ReserveEnd   = reserveDataDto.ReserveEnd
                    };
                    //добавляем
                    _roomStatusRepository.Insert(roomStatus);
                }
                // сохраним запись о проживании
                await unitOfWork.SaveAsync();

                // теперь идем по клиентам
                // маппинг в доменные модели клиентов
                IEnumerable <Client> domainClients = mapper.Map <IEnumerable <Client> >(
                    mapper.Map <ClientsEnumerableDto>(populationDto).ClientsEnumerable);

                // заселяем клиентов
                foreach (var client in domainClients)
                {
                    client.RoomStatusId = roomStatus.Id;
                    _clientRepository.Insert(client);
                }
                // сохраняем контекст
                await unitOfWork.SaveAsync();
            }
        }
Example #2
0
 public async Task ReserveRoomAsync(int roomId, [FromBody] ReserveDataDto data)
 {
     if (ModelState.IsValid)
     {
         await _service.ReserveRoomAsync(roomId, data.ReserveStart, data.ReserveEnd);
     }
     else
     {
         throw new ArgumentException("Invalid DTO model");
     }
 }
Example #3
0
 /// <summary>
 /// Зарезервировать комнату
 /// </summary>
 /// <param name="roomDto">DTO комнаты</param>
 /// <param name="reserveDataDto">Данные резервирования</param>
 public void ReserveRoom(RoomDto roomDto, ReserveDataDto reserveDataDto)
 {
     _hotelProvider.ReserveRoom(roomDto.Id, reserveDataDto);
 }