public async Task BlowVehicle(VehicleTripRegistrationDTO blowVehicleDetails)
        {
            var BlowBus = new VehicleTripRegistration
            {
                PhysicalBusRegistrationNumber = blowVehicleDetails.PhysicalBusRegistrationNumber,
                DepartureDate   = DateTime.UtcNow.Date,
                DriverCode      = blowVehicleDetails.DriverCode,
                IsBlownBus      = true,
                IsVirtualBus    = false,
                JourneyType     = JourneyType.Blown,
                ManifestPrinted = true,
                TripId          = blowVehicleDetails.TripId
            };

            _repo.Insert(BlowBus);

            //await _unitOfWork.SaveChangesAsync();

            //var vehicleTrip = await GetVehicleTripRegistrationDTO(blowVehicleDetails.TripId);
            //this is blow
            var journeyManagement = new JourneyManagement
            {
                VehicleTripRegistrationId = BlowBus.Id,
                JourneyStatus             = JourneyStatus.InTransit,
                JourneyType = JourneyType.Blown,
                JourneyDate = BlowBus?.DepartureDate ?? Clock.Now
            };

            _journeyManagementRepo.Insert(journeyManagement);

            await _unitOfWork.SaveChangesAsync();
        }
        public async Task CreatePhysicalBus(TerminalBookingDTO physicalbus)
        {
            var trip = await _tripSvc.GetTripById(physicalbus.TripId);

            var vehicle = await _vehicleSvc.GetVehicleById(physicalbus.VehicleId);

            DateTime departuredate = Clock.Now.Date;

            var asignedVehicleDto = await _vehicleSvc.GetVehiclesByRegNum(vehicle.RegistrationNumber);

            if (asignedVehicleDto == null)
            {
                throw await _serviceHelper.GetExceptionAsync(ErrorConstants.VEHICLE_NOT_EXIST);
            }
            var assignedVehicle = await _vehicleSvc.GetVehicleById(physicalbus.VehicleId);

            var email = await _userManagerSvc.FindByNameAsync(_serviceHelper.GetCurrentUserEmail());

            var employee = await _employeeSvc.GetEmployeesByemailAsync(email.Email);

            if (employee != null && employee.TerminalId != null && assignedVehicle.VehicleStatus != VehicleStatus.InWorkshop)
            {
                assignedVehicle.LocationId = employee.TerminalId;
            }
            //assignedVehicle.Location = null;
            if (assignedVehicle != null && assignedVehicle.VehicleStatus != VehicleStatus.InWorkshop)
            {
                assignedVehicle.VehicleStatus = VehicleStatus.TerminalUse;
            }
            if (assignedVehicle != null && assignedVehicle.VehicleStatus == VehicleStatus.InWorkshop)
            {
                assignedVehicle.VehicleStatus = VehicleStatus.InWorkshopAndAssigned;
            }
            //Get assigned Captain and Update
            var assignedCaptainDto = await _driverSvc.GetActiveDriverByCodeAsync(physicalbus.DriverCode);

            if (assignedCaptainDto == null)
            {
                throw await _serviceHelper.GetExceptionAsync(ErrorConstants.DRIVER_NOT_EXIST);
            }

            var assignedDrv = await _driverSvc.GetAsync(assignedCaptainDto.Id);

            var phyBus = new VehicleTripRegistration
            {
                PhysicalBusRegistrationNumber = vehicle.RegistrationNumber,
                DepartureDate  = departuredate,
                TripId         = physicalbus.TripId,
                DriverCode     = physicalbus.DriverCode,
                VehicleModelId = trip.VehicleModelId,
                IsVirtualBus   = false,
                JourneyType    = JourneyType.Loaded
            };


            if (assignedDrv.DriverType == DriverType.Virtual)
            {
                if (string.IsNullOrEmpty(physicalbus.OriginalDriverCode))
                {
                    throw new LMEGenericException("Could not create vehicle because you did not choose the original captain that will take the trip");
                }

                phyBus.OriginalDriverCode = physicalbus.OriginalDriverCode;
            }
            else
            {
                phyBus.OriginalDriverCode = "";
            }

            _repo.Insert(phyBus);

            await _unitOfWork.SaveChangesAsync();
        }
 public void Add(VehicleTripRegistration entity)
 {
     _repo.Insert(entity);
 }