示例#1
0
        private async void bookBtn_Click(object sender, EventArgs e)
        {
            TruckType type = await db.GetTruckTypeById((int)slctTruckBox.SelectedValue);

            //List<Truck> trucks = await db.GetAvailiableTrucks(type);
            try
            {
                Truck truck = await db.GetNextAvailableTruck(type);

                List <User> users = await db.GetAvailibleDrivers();//[0];

                User  user  = users[0];
                Route route = await db.GetRouteByID((int)destinationBox.SelectedValue);

                TripStatus status = await db.GetTripStatusByID(0);

                Customer customer = await db.GetCustomerByID((int)cmbCustomers.SelectedValue);

                Trip trip = new Trip(truck, customer, (DateTime)dateTimePicker.Value, (DateTime)dateTimePicker.Value.AddDays(3), user, route, status);

                trip = await db.BookTrip(trip);

                MessageBox.Show($"Trip booked for {trip.Start} with Truck {trip.Truck.ID}");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                MessageBox.Show("Next availible date: " + await db.NextAvailibleDate(type));
                return;
            }



            this.Close();
        }
        internal TripInformation(Guid id, TimeSpan duration, double distance, int statusId)
        {
            if (statusId == default(int))
            {
                throw new InvoiceDomainArgumentNullException(nameof(statusId));
            }
            if (duration == default(TimeSpan))
            {
                throw new InvoiceDomainArgumentNullException(nameof(duration));
            }

            Id       = id;
            Duration = duration;
            Status   = TripStatus.From(statusId);

            if (!Equals(Status, TripStatus.Finished) && !Equals(Status, TripStatus.Cancelled))
            {
                throw new InvoiceDomainInvalidOperationException("Invalid trip status to create an invoice");
            }

            if (distance <= 0 && !Equals(Status, TripStatus.Cancelled))
            {
                throw new InvoiceDomainArgumentNullException(nameof(distance));
            }

            Distance = Equals(Status, TripStatus.Cancelled) ? 0 : distance;
        }
        public void AddTrip(TimeSpan departureTime, TimeSpan arrivalTime, TripStatus status, string busCompanyName,
                            string originBusStationName, string destinatonBusStationName)
        {
            var busCompany = this._busCompanyService
                             .GetBusCompanyByName(busCompanyName);

            var originBusStation = this._busStationService
                                   .GetBusStationByName(originBusStationName);

            var destinationBusStation = this._busStationService
                                        .GetBusStationByName(destinatonBusStationName);

            var trip = new Trip()
            {
                DepartureTime         = departureTime,
                ArrivalTime           = arrivalTime,
                Status                = status,
                BusCompany            = busCompany,
                OriginBusStation      = originBusStation,
                DestinationBusStation = destinationBusStation
            };

            this._dbContext
            .Trips.Add(trip);

            this._dbContext
            .SaveChanges();
        }
示例#4
0
 public void Edit(string name, string destination, TripStatus tripStatus,
                  DateTimeOffset startDate, DateTimeOffset endDate)
 {
     SetDataOrFail(name, destination);
     SetDatesOrFail(startDate.ToUniversalTime(), endDate.ToUniversalTime());
     TripStatus = tripStatus;
 }
        public static string ImportTrips(StationsDbContext context, string jsonString)
        {
            Dictionary <string, int> stations = context.Stations.ToDictionary(x => x.Name, y => y.Id);
            Dictionary <string, int> trains   = context.Trains.ToDictionary(x => x.TrainNumber, y => y.Id);

            List <TripImportDto> trips      = JsonConvert.DeserializeObject <List <TripImportDto> >(jsonString);
            List <Trip>          validTrips = new List <Trip>();
            StringBuilder        sb         = new StringBuilder();

            foreach (var trip in trips)
            {
                if (!IsValid(trip) ||
                    !stations.ContainsKey(trip.OriginStation) ||
                    !stations.ContainsKey(trip.DestinationStation) ||
                    !trains.ContainsKey(trip.Train))
                {
                    sb.AppendLine(FailureMessage);
                    continue;
                }

                TripStatus status = TripStatus.OnTime;
                if (trip.Status != null)
                {
                    status = Enum.Parse <TripStatus>(trip.Status);
                }

                TimeSpan?timeDiffernce = null;
                if (trip.TimeDifference != null)
                {
                    timeDiffernce = TimeSpan.ParseExact(trip.TimeDifference, @"hh\:mm", CultureInfo.InvariantCulture);
                }

                Trip validTrip = new Trip()
                {
                    OriginStationId      = stations[trip.OriginStation],
                    DestinationStationId = stations[trip.DestinationStation],
                    ArrivalTime          = DateTime.ParseExact(trip.ArrivalTime, @"dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture),
                    DepartureTime        = DateTime.ParseExact(trip.DepartureTime, @"dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture),
                    TrainId        = trains[trip.Train],
                    Status         = status,
                    TimeDifference = timeDiffernce
                };

                if (!IsValid(validTrip))
                {
                    sb.AppendLine(FailureMessage);
                    continue;
                }

                validTrips.Add(validTrip);
                sb.AppendLine($"Trip from {trip.OriginStation} to {trip.DestinationStation} imported.");
            }

            context.Trips.AddRange(validTrips);
            context.SaveChanges();
            return(sb.ToString().TrimEnd());
        }
示例#6
0
 public TripUpdatedIntegrationEvent(Guid tripId, Action action, TripStatus status, DateTime?started, DateTime?ended, Location currentLocation)
 {
     Action          = action;
     Status          = status;
     Started         = started;
     Ended           = ended;
     CurrentLocation = currentLocation;
     TripId          = tripId;
 }
 public TripUpdatedIntegrationEvent(Guid tripId, Action action, TripStatus status, DateTime?started, DateTime?ended, Location currentLocation, double?distance, TimeSpan?duration)
 {
     Action          = action;
     Status          = status;
     Started         = started;
     Ended           = ended;
     CurrentLocation = currentLocation;
     Distance        = distance;
     Duration        = duration;
     TripId          = tripId;
 }
示例#8
0
        public void UpdateTripStatus(int tripId, TripStatus status, int passportCode)
        {
            var trip = tripRepository.GetTrip(tripId);

            if (trip.Driver.PassportCode != passportCode)
            {
                throw new Exception("You cant do this!");
            }
            trip.status = status;
            tripRepository.UpdateTrip(trip, tripId);
        }
示例#9
0
 public Trip(string id, string bookingId, string cabId, GeoCoordinate startLocation, GeoCoordinate endLocation, DateTime startTime, DateTime endTime, TripStatus status)
 {
     Id            = id;
     BookingId     = bookingId;
     CabId         = cabId;
     StartLocation = startLocation;
     EndLocation   = endLocation;
     StartTime     = startTime;
     EndTime       = endTime;
     Status        = status;
 }
示例#10
0
 private void UpdateRP(TripStatus ts)
 {
     lock ( m_qTS )
     {
         if (m_bTSThreadPoolActive)
         {
             m_qTS.Enqueue(ts);
         }
         else
         {
             m_bTSThreadPoolActive = true;
             ThreadPool.QueueUserWorkItem(new WaitCallback(OnTripStatus), ts);
         }
     }
 }
        public ElevatorUser(int _userID,
                            int _sourceFloor,
                            int _targetFloor)
        {
            userID      = _userID;
            sourceFloor = _sourceFloor;
            targetFloor = _targetFloor;
            tripStatus  = new TripStatus(userID, sourceFloor, targetFloor);

            registeredElevatorBank = null;
            myElevator             = null;
            tripStatus             = new TripStatus(_userID, _sourceFloor, _targetFloor);
            registrationTime       = -1;
            pickupTime             = -1;
            dropoffTime            = -1;
        }
示例#12
0
        public BaseResult ChangeStatusTrip(int tripId, TripStatus status)
        {
            var result = new BaseResult();

            try
            {
                result.Success = UnitOfWork.TripDao.ChangeTripStatus(tripId, status.ToString()[0]);
                result.Message = GeneralSuccessMessage;
            }
            catch (Exception ex)
            {
                result.Success = false;
                result.Message = GeneralErrorMessage;
            }
            return(result);
        }
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);

            modelBuilder.Entity <Trip>()
            .HasIndex(p => p.SearchVector)
            .HasMethod("GIN");     // Index method on the search vector (GIN or GIST)

            modelBuilder.Entity <Student>()
            .Property(p => p.AccountType)
            .HasConversion(
                p => p.Value,
                p => AccountType.FromValue(p));

            modelBuilder.Entity <Trip>()
            .Property(p => p.Status)
            .HasConversion(
                p => p.Value,
                p => TripStatus.FromValue(p));

            modelBuilder.Entity <StudentTrip>().HasKey(x => new { x.TripId, x.StudentId });
        }
        public static string ImportTrips(StationsDbContext context, string jsonString)
        {
            TripDto[] deserializedTrip = JsonConvert.DeserializeObject <TripDto[]>(jsonString, new JsonSerializerSettings()
            {
                NullValueHandling = NullValueHandling.Ignore
            });

            StringBuilder sb = new StringBuilder();

            List <Trip> validTrips = new List <Trip>();

            foreach (var tripDto in deserializedTrip)
            {
                if (!IsValid(tripDto))
                {
                    sb.AppendLine(FailureMessage);
                    continue;
                }
                Train   train              = context.Trains.SingleOrDefault(t => t.TrainNumber == tripDto.Train);
                Station originStation      = context.Stations.SingleOrDefault(s => s.Name == tripDto.OriginStation);
                Station destinationStation = context.Stations.SingleOrDefault(s => s.Name == tripDto.DestinationStation);

                if (train == null || originStation == null || destinationStation == null)
                {
                    sb.AppendLine(FailureMessage);
                    continue;
                }

                DateTime departureTime = DateTime.ParseExact(tripDto.DepartureTime, "dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture);
                DateTime arrivalTime   = DateTime.ParseExact(tripDto.ArrivalTime, "dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture);
                TimeSpan timeDifference;
                if (tripDto.TimeDifference != null)
                {
                    timeDifference = TimeSpan.ParseExact(tripDto.TimeDifference, @"hh\:mm", CultureInfo.InvariantCulture);
                }

                if (departureTime > arrivalTime)
                {
                    sb.AppendLine(FailureMessage);
                    continue;
                }
                TripStatus tripStatus = Enum.Parse <TripStatus>(tripDto.Status);

                Trip trip = new Trip
                {
                    Train              = train,
                    OriginStation      = (Station)originStation,
                    DestinationStation = destinationStation,
                    DepartureTime      = departureTime,
                    ArrivalTime        = arrivalTime,
                    Status             = tripStatus,
                    TimeDifference     = timeDifference,
                };

                validTrips.Add(trip);
                sb.AppendLine($"Trip from {tripDto.OriginStation} to {tripDto.DestinationStation} imported.");
            }

            context.Trips.AddRange(validTrips);
            context.SaveChanges();
            string result = sb.ToString();

            return(result);
        }
        //Command: change-trip-status <Trip Id> <New Status>
        public static string Execute(string[] data)
        {
            var tripId    = int.Parse(data[1]);
            var newStatus = data[2].ToLower();

            using (var db = new BusTicketsDbContext())
            {
                var newTripStatus = new TripStatus();
                //change-trip-status 2 delayed
                switch (newStatus)
                {
                case "departed": newTripStatus = TripStatus.Departed; break;

                case "arrived": newTripStatus = TripStatus.Arrived; break;

                case "delayed": newTripStatus = TripStatus.Delayed; break;

                case "cancalled": newTripStatus = TripStatus.Cancelled; break;

                default: throw new ArgumentException("Wrong status input.");
                }

                var trip = db.Trips
                           .Where(t => t.TripId == tripId)
                           .Include(t => t.DestinationBusStation)
                           .ThenInclude(dbs => dbs.Town)
                           .Include(t => t.OriginBusStation)
                           .ThenInclude(obs => obs.Town)
                           .SingleOrDefault();

                string oldTripStatus = trip.Status.ToString();

                if (trip == null)
                {
                    throw new ArgumentException("Invalid Trip Number!");
                }

                if (trip.Status == newTripStatus)
                {
                    throw new ArgumentException($"The status of this trip is already {newTripStatus.ToString()}");
                }

                var builder = new StringBuilder();

                db.Trips.SingleOrDefault(t => t.TripId == trip.TripId).Status = newTripStatus;
                db.SaveChanges();

                builder.AppendLine($"Trip from {trip.OriginBusStation.Town.TownName} to {trip.DestinationBusStation.Town.TownName} on {trip.DepartureTime} Status changed from { oldTripStatus } to { newTripStatus.ToString() }");

                if (newTripStatus == TripStatus.Arrived)
                {
                    var passengersCount = db.Tickets.Where(t => t.TripId == trip.TripId).Count();

                    var arrivedTrip = new ArrivedTrip()
                    {
                        DateTimeArrived      = trip.ArrivalTime,
                        OriginArrivedId      = trip.OriginBusStation.BusStationId,
                        OriginArrived        = trip.OriginBusStation,
                        DestinationArrivedId = trip.DestinationBusStation.BusStationId,
                        DestinationArrived   = trip.DestinationBusStation,
                        PassangersCounted    = passengersCount
                    };
                    db.ArrivedTrips.Add(arrivedTrip);
                    db.SaveChanges();
                    builder.AppendLine($"On {arrivedTrip.DateTimeArrived.Date} - {arrivedTrip.PassangersCounted} passengers arrived at {arrivedTrip.DestinationArrived.BusStationName} " +
                                       $"from {arrivedTrip.OriginArrived.BusStationName}");
                }
                return(builder.ToString().Trim());
            }
        }
示例#16
0
        public void OnDeserialized(StreamingContext e)
        {
            TripStatus s;

            Status = Enum.TryParse <TripStatus>(status, true, out s) ? s : TripStatus.Unknown;
        }
示例#17
0
        public static string ImportTrips(StationsDbContext context, string jsonString)
        {
            StringBuilder sb = new StringBuilder();

            ImportDto.TripDto[] tripsDto = JsonConvert.DeserializeObject <ImportDto.TripDto[]>(jsonString, new JsonSerializerSettings
            {
                DefaultValueHandling = DefaultValueHandling.Ignore,
            });

            List <Trip> trips = new List <Trip>();

            foreach (var tripDto in tripsDto)
            {
                if (!IsValid(tripDto))
                {
                    sb.AppendLine(FailureMessage);
                    continue;
                }

                DateTime arrivalTime   = DateTime.ParseExact(tripDto.ArrivalTime, "dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture);
                DateTime departureTime = DateTime.ParseExact(tripDto.DepartureTime, "dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture);

                Train   train              = context.Trains.SingleOrDefault(x => x.TrainNumber == tripDto.Train);
                Station originStation      = context.Stations.SingleOrDefault(x => x.Name == tripDto.OriginStation);
                Station destinationStation = context.Stations.SingleOrDefault(x => x.Name == tripDto.DestinationStation);

                if (train == null || originStation == null || destinationStation == null)
                {
                    sb.AppendLine(FailureMessage);
                    continue;
                }

                if (arrivalTime < departureTime)
                {
                    sb.AppendLine(FailureMessage);
                    continue;
                }

                TripStatus tripStatus = TripStatus.OnTime;
                if (tripDto.Status != null)
                {
                    tripStatus = tripDto.Status.Value;
                }

                TimeSpan?timeDifference = null;
                if (tripDto.TimeDifference != null)
                {
                    timeDifference = TimeSpan.ParseExact(tripDto.TimeDifference, @"hh\:mm", CultureInfo.InvariantCulture);
                }

                Trip trip = new Trip
                {
                    Train              = train,
                    OriginStation      = originStation,
                    DestinationStation = destinationStation,
                    ArrivalTime        = arrivalTime,
                    DepartureTime      = departureTime,
                    Status             = tripStatus,
                    TimeDifference     = timeDifference,
                };

                trips.Add(trip);
                sb.AppendLine(string.Format($"Trip from {tripDto.OriginStation} to {tripDto.DestinationStation} imported."));
            }

            context.AddRange(trips);
            context.SaveChanges();
            return(sb.ToString().Trim());
        }
示例#18
0
 public static string ToString(this TripStatus tripStatus)
 {
     return(StatusNames[tripStatus]);
 }
 public void UpdateTripStatus(int tripId, TripStatus status, int passportCode)
 {
     service.UpdateTripStatus(tripId, status, passportCode);
 }
示例#20
0
        public static string ImportTrips(StationsDbContext context, string jsonString)
        {
            TripDto[]     tripsFromJson = ImportFromJson <TripDto>(jsonString, true);
            StringBuilder sb            = new StringBuilder();
            List <Trip>   resultTrips   = new List <Trip>();

            foreach (TripDto tripDto in tripsFromJson)
            {
                if (!IsValid(tripDto))
                {
                    sb.AppendLine(FailureMessage);
                    continue;
                }

                Train   train              = context.Trains.SingleOrDefault(t => t.TrainNumber == tripDto.Train);
                Station originStation      = context.Stations.SingleOrDefault(s => s.Name == tripDto.OriginStation);
                Station destinationStation = context.Stations.SingleOrDefault(s => s.Name == tripDto.DestinationStation);

                if (train == null || originStation == null || destinationStation == null)
                {
                    sb.AppendLine(FailureMessage);
                    continue;
                }

                DateTime departureTime = DateTime.ParseExact(tripDto.DepartureTime, "dd/MM/yyyy HH:mm",
                                                             CultureInfo.InvariantCulture);
                DateTime arrivalTime = DateTime.ParseExact(tripDto.ArrivalTime, "dd/MM/yyyy HH:mm",
                                                           CultureInfo.InvariantCulture);

                if (departureTime > arrivalTime)
                {
                    sb.AppendLine(FailureMessage);
                    continue;
                }

                TripStatus status = Enum.Parse <TripStatus>(tripDto.Status);

                TimeSpan?timeDifference = null;
                if (tripDto.TimeDifference != null)
                {
                    timeDifference =
                        TimeSpan.ParseExact(tripDto.TimeDifference, @"hh\:mm", CultureInfo.InvariantCulture);
                }

                Trip currentTrip = new Trip
                {
                    ArrivalTime        = arrivalTime,
                    DepartureTime      = departureTime,
                    Train              = train,
                    Status             = status,
                    OriginStation      = originStation,
                    DestinationStation = destinationStation,
                    TimeDifference     = timeDifference
                };

                resultTrips.Add(currentTrip);
                sb.AppendLine($"Trip from {currentTrip.OriginStation.Name} to {currentTrip.DestinationStation.Name} imported.");
            }

            context.Trips.AddRange(resultTrips);
            context.SaveChanges();

            string result = sb.ToString().Trim();

            return(result);
        }
示例#21
0
 public void EndTrip()
 {
     _tripStatus = TripStatus.FINISHED;
 }
示例#22
0
        private void OnTripStatus(object parm)
        {
            Debug.WriteLine(string.Format("{0} {1}", DateTime.Now.ToString("HH:mm:ss.fff"), "OnTripStatus"));

            RoutePatternConfig configRP = null;
            ServiceAlertConfig configSA = null;
            VehicleConfig      configV  = null;

            Interlocked.Exchange <RoutePatternConfig>(ref configRP, m_configRP);
            Interlocked.Exchange <ServiceAlertConfig>(ref configSA, m_configSA);
            Interlocked.Exchange <VehicleConfig>(ref configV, m_configV);

            bool       bContinue = true, bDispose = false;
            Trip       trip = null;
            TripStatus ts = (TripStatus)parm;
            Timeout    timeoutFix = new Timeout(TimeSpan.FromMinutes(2)), timeoutOnRoute = new Timeout(TimeSpan.FromSeconds(500));

            do
            {
                if (ts != null)
                {
                    if (ts.NoTrip)
                    {
                        trip = null;
                    }
                    else if (!ts.OffRoute)
                    {
                        timeoutOnRoute.Reset();
                        if (trip == null || ts.RouteTag != trip.RouteTag || ts.RP < trip.RP || ts.TripNo != trip.TripNo || ts.ServiceStart != trip.ServiceStart)
                        {
                            trip = Trip.Create(this, ts.RouteTag, ts.RP, ts.TripNo, ts.ServiceStart, m_configRP, m_configSA, m_configV, m_fFerry);
                        }
                        else
                        {
                            trip.ProgressRP(ts.RP);
                        }

                        EnableSignalPriority(ts.SignalPriority);
                    }
                    else if (trip != null)
                    {
                        trip.OffRoute = true;
                        EnableSignalPriority(false);
                    }
                }

                if (trip != null)
                {
                    GPSFix fix = m_Fix;

                    bool bEndTrip = false;
                    if (timeoutOnRoute.HasExpired)
                    {
                        bEndTrip = true;
                    }
                    else if (fix == null || !UTM.IsValidLL4Zone(configV.UTMZoneNo, configV.UTMZoneLetter, fix.Lat, fix.Long))
                    {
                        bEndTrip = timeoutFix.HasExpired;
                    }
                    else
                    {
                        timeoutFix.Reset();
                        //if( m_fFerry || !trip.OffRoute )
                        //	bEndTrip = !trip.UpdatePosition( UTM.LL2UTM( configV.UTMZoneNo, fix.Lat, fix.Long ), fix.Speed, fix.SpeedWeighted );
                    }

                    if (bEndTrip)
                    {
                        trip = null;
                    }
                    else
                    {
                        Thread.Sleep(999);
                    }
                }

                lock ( m_qTS )
                {
                    if (m_qTS.Count == 0)
                    {
                        ts = null;
                    }
                    else
                    {
                        ts = m_qTS.Dequeue();
                        if (ts == null)
                        {
                            bDispose = true;
                        }
                    }

                    if (bDispose || (trip == null && ts == null))
                    {
                        bContinue = m_bTSThreadPoolActive = false;
                    }
                }
            }while(bContinue);

            if (!bDispose)
            {
                QueueRequest(new RequestEventArgs(RequestType.DisplayNextStop, null));
                QueueRequest(new RequestEventArgs(RequestType.DisplayNextStopExtra, null));
                if (configV.HeadSignDefault != null)
                {
                    QueueRequest(new RequestEventArgs(RequestType.HeadSign, configV.HeadSignDefault));
                }
                EnableSignalPriority(false);
            }
        }
示例#23
0
 public void SetStatus(TripStatus status)
 {
     Status = status;
 }