Example #1
0
        public async Task <IServiceResponse <bool> > UpateFareCalendar(int id, FareCalendarDTO FareCalendar)
        {
            return(await HandleApiOperationAsync(async() => {
                await _FareCalendarService.UpdateFareCalendar(id, FareCalendar);

                return new ServiceResponse <bool>(true);
            }));
        }
        public async Task AddFareCalendar(FareCalendarDTO calendar)
        {
            _repo.Insert(new FareCalendar
            {
                Name               = calendar.Name,
                StartDate          = calendar.StartDate,
                EndDate            = calendar.EndDate,
                RouteId            = calendar.RouteId,
                VehicleModelId     = calendar.VehicleModelId,
                TerminalId         = calendar.TerminalId,
                FareAdjustmentType = calendar.FareAdjustmentType,
                FareParameterType  = calendar.FareParameterType,
                FareType           = calendar.FareType,
                FareValue          = calendar.FareValue
            });

            await _unitOfWork.SaveChangesAsync();
        }
        public async Task UpdateFareCalendar(int Id, FareCalendarDTO fareCalendarDto)
        {
            var calendar = await _repo.GetAsync(Id);

            if (calendar == null)
            {
                throw await _serviceHelper.GetExceptionAsync(ErrorConstants.FareCalendar_NOT_EXIST);
            }



            calendar.Name               = fareCalendarDto.Name.Trim();
            calendar.StartDate          = fareCalendarDto.StartDate;
            calendar.EndDate            = fareCalendarDto.EndDate;
            calendar.RouteId            = fareCalendarDto.RouteId;
            calendar.TerminalId         = fareCalendarDto.TerminalId;
            calendar.FareParameterType  = fareCalendarDto.FareParameterType;
            calendar.FareAdjustmentType = fareCalendarDto.FareAdjustmentType;
            calendar.VehicleModelId     = fareCalendarDto.VehicleModelId;
            calendar.FareType           = fareCalendarDto.FareType;
            calendar.FareValue          = fareCalendarDto.FareValue;

            await _unitOfWork.SaveChangesAsync();
        }
Example #4
0
        public async Task <List <AvailableTripDetailDTO> > GetRouteVirtualBusesWithFareCalendar(int routeId)
        {
            var availabletrips = await GetRouteVirtualBuses(routeId);

            foreach (var trip in availabletrips)
            {
                var fareCalendar = new FareCalendarDTO();
                fareCalendar = null;
                var farecalendarList = new List <FareCalendarDTO>();

                farecalendarList = await _fareCalendarSvc.GetFareCalendaListByRoutesAsync(trip.RouteId, trip.DepartureDate);

                foreach (var calendar in farecalendarList)
                {
                    if (calendar.VehicleModelId != null)
                    {
                        if (trip.VehicleModelId == calendar.VehicleModelId)
                        {
                            fareCalendar = calendar;
                        }
                        break;
                    }

                    fareCalendar = calendar;
                }
                if (fareCalendar == null)
                {
                    var DepartureterminalId = await GetDepartureterminalIdFromRoute(trip.RouteId);

                    farecalendarList = await _fareCalendarSvc.GetFareCalendaListByTerminalsAsync(DepartureterminalId, trip.DepartureDate);

                    foreach (var calendar in farecalendarList)
                    {
                        if (calendar.VehicleModelId != null)
                        {
                            if (trip.VehicleModelId == calendar.VehicleModelId)
                            {
                                fareCalendar = calendar;
                            }
                            break;
                        }

                        fareCalendar = calendar;
                    }
                }


                decimal fareDifference = 0;
                if (fareCalendar != null)
                {
                    if (fareCalendar.FareAdjustmentType == FareAdjustmentType.Percentage)
                    {
                        fareDifference = (fareCalendar?.FareType == FareType.Increase ? 1 : -1) * ((fareCalendar?.FareValue).GetValueOrDefault(0.0m) * trip.FarePrice / 100);
                    }
                    else
                    {
                        fareDifference = (fareCalendar?.FareType == FareType.Increase ? 1 : -1) * (fareCalendar?.FareValue).GetValueOrDefault(0.0m);
                    }
                }


                trip.FarePrice += fareDifference;
            }
            return(availabletrips);
        }
Example #5
0
        public async Task <FareDTO> GetFareByVehicleTrip(int routeId, int vehicleModel)
        {
            var departureDate = Clock.Now.Date;

            //var fareCalendar = _fareCalendarRepo.FirstOrDefault(c => departureDate >= c.StartDate && c.EndDate >= departureDate && routeId == c.RouteId);

            //var fareDifference = (fareCalendar?.FareType == FareType.Increase ? 1 : -1) * (fareCalendar?.FareValue).GetValueOrDefault();

            var fares =
                from fare in GetAll()
                join route in _routeRepo.GetAll() on fare.RouteId equals route.Id
                join vehiclemodel in _vehicleModelRepo.GetAll() on fare.VehicleModelId equals vehiclemodel.Id
                where fare.RouteId == routeId && fare.VehicleModelId == vehicleModel
                select new FareDTO
            {
                Id                         = fare.Id,
                Name                       = fare.Name,
                Amount                     = fare.Amount,
                RouteId                    = route.Id,
                RouteName                  = route.Name,
                VehicleModelId             = vehiclemodel.Id,
                VehicleModelName           = vehiclemodel.Name,
                ChildrenDiscountPercentage = fare.ChildrenDiscountPercentage
            };

            var computedfare = await fares.AsNoTracking().FirstOrDefaultAsync();

            if (computedfare != null)
            {
                var fareCalendar = new FareCalendarDTO();
                fareCalendar = null;
                var farecalendarList = new List <FareCalendarDTO>();

                farecalendarList = await _fareCalendarSvc.GetFareCalendaListByRoutesAsync(routeId, departureDate);

                foreach (var calendar in farecalendarList)
                {
                    if (calendar.VehicleModelId != null)
                    {
                        if (vehicleModel == calendar.VehicleModelId)
                        {
                            fareCalendar = calendar;
                        }
                        break;
                    }

                    fareCalendar = calendar;
                }
                if (fareCalendar == null)
                {
                    var DepartureterminalId = await _routeSvc.GetDepartureterminalIdFromRoute(routeId);

                    farecalendarList = await _fareCalendarSvc.GetFareCalendaListByTerminalsAsync(DepartureterminalId, departureDate);

                    foreach (var calendar in farecalendarList)
                    {
                        if (calendar.VehicleModelId != null)
                        {
                            if (vehicleModel == calendar.VehicleModelId)
                            {
                                fareCalendar = calendar;
                            }
                            break;
                        }

                        fareCalendar = calendar;
                    }
                }


                decimal fareDifference = 0;
                if (fareCalendar != null)
                {
                    if (fareCalendar.FareAdjustmentType == FareAdjustmentType.Percentage)
                    {
                        fareDifference = (fareCalendar?.FareType == FareType.Increase ? 1 : -1) * ((fareCalendar?.FareValue).GetValueOrDefault(0.0m) * computedfare.Amount / 100);
                    }
                    else
                    {
                        fareDifference = (fareCalendar?.FareType == FareType.Increase ? 1 : -1) * (fareCalendar?.FareValue).GetValueOrDefault(0.0m);
                    }
                }

                computedfare.Amount += fareDifference;
            }

            return(computedfare);
        }