public async Task <Guid> ChangeOfParty(ChangeOfPartyServiceRequest request) { var existingReservation = await _reservationRepository.GetById(request.ReservationId); if (existingReservation == null) { throw new EntityNotFoundException <Domain.Entities.Reservation>(); } if (existingReservation.Status != (short)ReservationStatus.Confirmed && existingReservation.Status != (short)ReservationStatus.Change) { throw new ArgumentException( "Reservation cannot be changed due to it's status.", nameof(ChangeOfPartyServiceRequest.ReservationId)); } var newReservation = new Domain.Entities.Reservation { Id = Guid.NewGuid(), CreatedDate = DateTime.UtcNow, ClonedReservationId = existingReservation.Id, Status = (short)ReservationStatus.Change, StartDate = existingReservation.StartDate, ExpiryDate = existingReservation.ExpiryDate, CourseId = existingReservation.CourseId, ProviderId = existingReservation.ProviderId, AccountId = existingReservation.AccountId, AccountLegalEntityId = existingReservation.AccountLegalEntityId, AccountLegalEntityName = existingReservation.AccountLegalEntityName, IsLevyAccount = existingReservation.IsLevyAccount, TransferSenderAccountId = existingReservation.TransferSenderAccountId, UserId = existingReservation.UserId }; if (request.AccountLegalEntityId.HasValue) { var newAccountLegalEntity = await _accountLegalEntitiesRepository.Get(request.AccountLegalEntityId.Value); newReservation.AccountId = newAccountLegalEntity.AccountId; newReservation.AccountLegalEntityId = newAccountLegalEntity.AccountLegalEntityId; newReservation.AccountLegalEntityName = newAccountLegalEntity.AccountLegalEntityName; newReservation.IsLevyAccount = newAccountLegalEntity.Account.IsLevy ? newAccountLegalEntity.Account.IsLevy : existingReservation.IsLevyAccount; } else if (request.ProviderId.HasValue) { newReservation.ProviderId = request.ProviderId; } await _reservationRepository.CreateAccountReservation(newReservation); return(newReservation.Id); }
private Reservation MapReservation(Domain.Entities.Reservation reservation) { var mapReservation = new Reservation(_ruleRepository.GetReservationRules, reservation.Id, reservation.AccountId, reservation.IsLevyAccount, reservation.CreatedDate, reservation.StartDate, reservation.ExpiryDate, (ReservationStatus)reservation.Status, reservation.Course, reservation.ProviderId, reservation.AccountLegalEntityId, reservation.AccountLegalEntityName, reservation.TransferSenderAccountId, reservation.UserId ); return(mapReservation); }