public async Task <IActionResult> CheckinGuest([FromBody] GuestStayForCheckInDto guestStayDto) { //TODOBLL try { await _guestStayService.CheckinGuest(guestStayDto); } catch (ArgumentException e) { ModelState.AddModelError("Exception", e.Message); return(BadRequest(ModelState)); } return(Ok()); }
public async Task <Stay> CheckinGuest(GuestStayForCheckInDto guestStayDto) { var guest = await _guestRepo.GetFirstOrDefault(g => g.DodId == guestStayDto.DodId); if (guest == null) { guest = _mapper.Map <Guest> (guestStayDto); } else { guestStayDto.GuestId = guest.Id; _mapper.Map(guestStayDto, guest); } if (await _guestRepo.IsGuestCheckedIn(guest.Id)) { throw new System.ArgumentException("Guest already checked in.", string.Empty); } if (guest.Id != 0) { await _guestRepo.SaveAsync(); } else { await _guestRepo.Insert(guest); await _guestRepo.SaveAsync(); } var room = await _roomsRepo.GetFirstOrDefault(r => r.Id == guestStayDto.RoomId); var stay = _mapper.Map <Stay> (guestStayDto); stay.GuestId = guest.Id; stay.BuildingId = room.BuildingId; stay.CheckedIn = true; await _staysRepo.Insert(stay); await _staysRepo.SaveAsync(); return(stay); }