Example #1
0
        public void RedeemParticipation(string loginEmail, int participationId, decimal amount)
        {
            ExecuteFaultHandledOperation(() =>
            {
                IAccountRepository accountRepository             = _DataRepositoryFactory.GetDataRepository <IAccountRepository>();
                IParticipationRepository ParticipationRepository = _DataRepositoryFactory.GetDataRepository <IParticipationRepository>();
                IParticipationEngine ParticipationEngine         = _BusinessEngineFactory.GetBusinessEngine <IParticipationEngine>();

                Account account = accountRepository.GetByLogin(loginEmail);
                if (account == null)
                {
                    NotFoundFault fault = new NotFoundFault(string.Format("No account found for login '{0}'.", loginEmail));
                    throw new FaultException <NotFoundFault>(fault, fault.Message);
                }
                ValidateAuthorization(account);

                Participation participation = ParticipationRepository.Get(participationId);
                if (participation == null)
                {
                    NotFoundFault fault = new NotFoundFault(string.Format("No participation record found for id '{0}'.", participationId));
                    throw new FaultException <NotFoundFault>(fault, fault.Message);
                }

                ParticipationEngine.RedeemFundsFromParticipation(participationId, amount);
            });
        }
Example #2
0
        public void ExecuteParticipationsFromReservation(int reservationId)
        {
            ExecuteFaultHandledOperation(() =>
            {
                IAccountRepository accountRepository         = _DataRepositoryFactory.GetDataRepository <IAccountRepository>();
                IReservationRepository reservationRepository = _DataRepositoryFactory.GetDataRepository <IReservationRepository>();
                IParticipationEngine ParticipationEngine     = _BusinessEngineFactory.GetBusinessEngine <IParticipationEngine>();

                Reservation reservation = reservationRepository.Get(reservationId);
                if (reservation == null)
                {
                    NotFoundFault fault = new NotFoundFault(string.Format("Reservation {0} was not found.", reservationId));
                    throw new FaultException <NotFoundFault>(fault, fault.Message);
                }

                Account account = accountRepository.Get(reservation.AccountID);
                if (account == null)
                {
                    NotFoundFault fault = new NotFoundFault(string.Format("No account found for account ID '{0}'.", reservation.AccountID));
                    throw new FaultException <NotFoundFault>(fault, fault.Message);
                }

                // create the new participations
                foreach (Allocation allocation in reservation.Allocations)
                {
                    try
                    {
                        Participation participation = ParticipationEngine.PushAllocationIntoParticipation(allocation);
                    }
                    catch (FaultException ex)
                    {
                        throw ex;
                    }
                }

                // close and save the reservation
                reservation.Open = false;
                reservationRepository.Update(reservation);
            });
        }