コード例 #1
0
        public Result <Passenger> ChangePassanger(PassengerToAirPlane passengerToAirPlane)
        {
            var result = new Result <Passenger>(_passengerToAirPlaneValidador.Validate <PassengerToAirPlane>(passengerToAirPlane));

            if (!result.Success)
            {
                return(result);
            }

            var passenger = _repository.Get().Include(x => x.Airplane)
                            .Where(y => y.Id == passengerToAirPlane.PassengerId).FirstOrDefault();

            if (passenger == null)
            {
                throw new AirplaneControlException("Passenger not exist");
            }



            var airplane = _airplane.Get(passengerToAirPlane.AiplaneId);

            if (airplane == null || airplane?.ReservedSeats == airplane.QuantityOfSeats)
            {
                throw new AirplaneControlException("Airplane without seats avaliable");
            }

            var updateairplane = passenger.Airplane;

            updateairplane.ReservedSeats = updateairplane.ReservedSeats - 1;
            _airplane.Update(updateairplane);

            airplane.ReservedSeats = airplane.ReservedSeats + 1;
            passenger.Airplane     = airplane;

            _repository.Update(passenger);

            return(new Result <Passenger>(passenger));
        }
コード例 #2
0
        public Result <Passenger> PassengerToAirPlane(PassengerToAirPlane passengerToAirPlane)
        {
            var result = new Result <Passenger>(_passengerToAirPlaneValidador.Validate <PassengerToAirPlane>(passengerToAirPlane));

            if (!result.Success)
            {
                return(result);
            }

            lock (objlock)
            {
                var airplane = _airplane.Get(passengerToAirPlane.AiplaneId);

                if (airplane == null || airplane?.ReservedSeats == airplane.QuantityOfSeats)
                {
                    throw new AirplaneControlException("Airplane without seats avaliable");
                }

                var passenger = _repository.Get(passengerToAirPlane.PassengerId);
                if (passenger == null)
                {
                    throw new AirplaneControlException("Passenger not exist");
                }

                if (passenger.AirplaneId > 0)
                {
                    throw new AirplaneControlException("Passenger already have a seat");
                }

                airplane.ReservedSeats = airplane.ReservedSeats + 1;

                passenger.Airplane = airplane;

                _repository.Update(passenger);

                return(new Result <Passenger>(passenger));
            }
        }