コード例 #1
0
        public async Task AddFare(FareDTO fareDto)
        {
            if (await IsDefinedFareAsync(fareDto.RouteId, fareDto.VehicleModelId))
            {
                throw new LMEGenericException($"Fare already exist!");
            }

            if (!await IsValidRoute(fareDto.RouteId))
            {
                throw new LMEGenericException($"Route does not exist!");
            }

            if (!await IsValidVehicleModel(fareDto.VehicleModelId))
            {
                throw new LMEGenericException($"Route does not exist!");
            }

            _repo.Insert(new Fare
            {
                Amount                     = fareDto.Amount,
                CreatorUserId              = _serviceHelper.GetCurrentUserId(),
                RouteId                    = fareDto.RouteId,
                VehicleModelId             = fareDto.VehicleModelId,
                ChildrenDiscountPercentage = fareDto.ChildrenDiscountPercentage
            });

            await _unitOfWork.SaveChangesAsync();
        }
コード例 #2
0
        public async Task <decimal?> GetTripFare(int subrouteId, Guid vehicleTripRegistrationId)
        {
            var vehicleTrip = await GetVehicleTripRegistrationDTO(vehicleTripRegistrationId);

            var subRoute = await _subRouteRepo.GetAsync(subrouteId);

            if (vehicleTrip == null)
            {
                throw await _serviceHelper.GetExceptionAsync(ErrorConstants.VEHICLETRIP_NOT_EXIST);
            }

            var tripFare = new FareDTO();

            if (vehicleTrip.CurrentModelId != null)
            {
                tripFare = await _fareSvc.GetFareByVehicleTrip(
                    subRoute.NameId, vehicleTrip.CurrentModelId.GetValueOrDefault());
            }
            else
            {
                tripFare = await _fareSvc.GetFareByVehicleTrip(
                    subRoute.NameId, vehicleTrip.VehicleModelId.GetValueOrDefault());
            }

            return(tripFare?.Amount);
        }
コード例 #3
0
        public async Task <decimal?> GetPassengerFare(string passengerInfo)
        {
            PassengerType passengerType = PassengerType.Adult;
            decimal       childDisc     = 0;
            int?          subrouteId    = null;
            Guid          vehicleTripId = new Guid();

            if (passengerInfo != null)
            {
                var passInfo = passengerInfo.Split(',');
                passengerType = (PassengerType)Convert.ToInt32(passInfo[0]);
                subrouteId    = passInfo[1] != null && passInfo[1] != "Select Subroute" && passInfo[1] != "" ? Convert.ToInt32(passInfo[1]) : 0;
                vehicleTripId = Guid.Parse(passInfo[2]);
            }

            var vehicleTrip = await GetVehicleTripRegistrationDTO(vehicleTripId);

            if (vehicleTrip == null)
            {
                throw await _serviceHelper.GetExceptionAsync(ErrorConstants.VEHICLETRIP_NOT_EXIST);
            }
            if (subrouteId != 0)
            {
                var subRoute = await _subRouteRepo.GetAsync(subrouteId.GetValueOrDefault());

                var tripFare = new FareDTO();

                if (vehicleTrip.CurrentModelId != null)
                {
                    tripFare = await _fareSvc.GetFareByVehicleTrip(
                        subRoute.NameId, vehicleTrip.CurrentModelId.GetValueOrDefault());
                }
                else
                {
                    tripFare = await _fareSvc.GetFareByVehicleTrip(
                        subRoute.NameId, vehicleTrip.VehicleModelId.GetValueOrDefault());
                }


                childDisc = (decimal)tripFare.ChildrenDiscountPercentage.GetValueOrDefault() / 100;
                return(passengerType == PassengerType.Adult ? tripFare.Amount : tripFare.Amount - tripFare.Amount * childDisc);
            }

            var fare = new FareDTO();

            if (vehicleTrip.CurrentModelId != null)
            {
                fare = await _fareSvc.GetFareByVehicleTrip(
                    vehicleTrip.RouteId.GetValueOrDefault(), vehicleTrip.CurrentModelId.GetValueOrDefault());
            }
            else
            {
                fare = await _fareSvc.GetFareByVehicleTrip(
                    vehicleTrip.RouteId.GetValueOrDefault(), vehicleTrip.VehicleModelId.GetValueOrDefault());
            }

            childDisc = (decimal)fare.ChildrenDiscountPercentage.GetValueOrDefault() / 100;
            return(passengerType == PassengerType.Adult ? fare.Amount : fare.Amount - fare.Amount * childDisc);
        }
コード例 #4
0
        public async Task <IServiceResponse <bool> > UpateFare(int id, FareDTO fare)
        {
            return(await HandleApiOperationAsync(async() => {
                await _fareService.UpdateFare(id, fare);

                return new ServiceResponse <bool>(true);
            }));
        }
コード例 #5
0
        public async Task <IServiceResponse <bool> > AddFare(FareDTO fare)
        {
            return(await HandleApiOperationAsync(async() => {
                await _fareService.AddFare(fare);

                return new ServiceResponse <bool>(true);
            }));
        }
コード例 #6
0
        public async Task UpdateFare(int fareId, FareDTO dto)
        {
            var fare = await _repo.GetAsync(fareId);

            if (fare == null)
            {
                throw await _serviceHelper.GetExceptionAsync(ErrorConstants.FARE_NOT_EXIST);
            }

            if (fare.RouteId != dto.RouteId || fare.VehicleModelId != dto.VehicleModelId)
            {
                if (await IsDefinedFareAsync(dto.RouteId, dto.VehicleModelId))
                {
                    throw await _serviceHelper.GetExceptionAsync(ErrorConstants.FARE_EXIST);
                }
            }

            fare.Amount                     = dto.Amount;
            fare.RouteId                    = dto.RouteId;
            fare.VehicleModelId             = dto.VehicleModelId;
            fare.ChildrenDiscountPercentage = dto.ChildrenDiscountPercentage;

            await _unitOfWork.SaveChangesAsync();
        }