Пример #1
0
        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);
        }
Пример #2
0
        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);
        }