示例#1
0
        /// <summary>
        /// add new userTravel to database
        /// </summary>
        /// <param name="userTravel"></param>
        public void CreateUserTravel(UserTravel userTravel)
        {
            List <UserTravel> UserTravelList = XMLTools.LoadListFromXMLSerializer <UserTravel>(userTravelPath);

            userTravel.Valid = true;

            try
            {
                GetUserTravel(userTravel.IdTravel);
            }
            catch (Exception ex)
            {
                if (ex.Message == "no user with such license number!!")
                {
                    UserTravelList.Add(userTravel);
                }
                else if (ex.Message == "bus is not valid!!")
                {
                    UserTravelList.Find(ut => ut.IdTravel == userTravel.IdTravel).Valid = true;
                }
                XMLTools.SaveListToXMLSerializer(UserTravelList, userTravelPath);
                return;
            }

            throw new Exception("user already exists!!!");
        }
 public void DeleteUserTravel(UserTravel userTravel)
 {
     if (userTravel.lineID != null)
     {
         DataSource.User_TravelList.Remove(userTravel);
     }
     else
     {
         throw new Exception("userTravel doesn't exist!!");
     }
 }
示例#3
0
        /// <summary>
        /// request a UserTravel according to a predicate
        /// </summary>
        /// <param name="Id"></param>
        /// <returns></returns>
        public UserTravel RequestUserTravel(Predicate <UserTravel> pr = null)
        {
            UserTravel ret = DataSource.UserTravelList.Find(userTravel => pr(userTravel));

            if (ret == null)
            {
                throw new DOBusException("no userTravel that meets these conditions!");
            }
            if (ret.Valid == false)
            {
                throw new DOBusException("userTravel that meets these conditions is not valid");
            }
            return(ret.GetPropertiesFrom <UserTravel, UserTravel>());
        }
        public void UpdateUserTravel(UserTravel userTravel)
        {
            int indLine;

            if (userTravel.lineID != null)
            {
                indLine = DataSource.User_TravelList.FindIndex(l => l.lineID == userTravel.lineID);
                DataSource.User_TravelList[indLine] = userTravel;
            }
            else
            {
                throw new Exception("userTravel doesn't exist!!");
            }
        }
示例#5
0
        /// <summary>
        /// add new userTravel to database
        /// </summary>
        /// <param name="userTravel"></param>
        public void CreateUserTravel(UserTravel userTravel)
        {
            userTravel.Valid = true;
            UserTravel a = new UserTravel();

            try
            {
                a = GetUserTravel(userTravel.IdTravel);
            }
            catch (DOBadBusIdException ex)
            {
                if (ex.Message == "no userTravel with such license number!!")
                {
                    DataSource.UserTravelList.Add(userTravel);
                }
                else if (ex.Message == "bus is not valid!!")
                {
                    DataSource.UserTravelList.Add(userTravel);
                }
                return;
            }
            throw new DOBadBusIdException(userTravel.IdTravel, "userTravel already exists!!!");
        }
        public void CreateUserTravel(string userName, long lineNumber, DateTime onStopTime, DateTime offStopTime)
        {
            string exception      = "";
            bool   foundException = false;

            try
            {
                //userName
            }
            catch (BOBadBusIdException ex)
            {
                exception     += ex.Message;
                foundException = true;
            }
            try
            {
                //validate lineNumber
            }
            catch (BOBadBusIdException ex)
            {
                if (!foundException)
                {
                    exception     += ex.Message;
                    foundException = true;
                }
            }
            try
            {
                //onStopTime
            }
            catch (BOBadBusIdException ex)
            {
                if (!foundException)
                {
                    exception     += ex.Message;
                    foundException = true;
                }
            }
            try
            {
                //OffStopTime
            }
            catch (BOBusException ex)
            {
                exception     += ex.Message;
                foundException = true;
            }
            if (foundException)
            {
                throw new BOBusException("There is something wrong with your input." + "Please Check these things :\n" + exception);  //להוסיף את האינפוט שלו עם דולר
            }
            UserTravel userTravelBO = new UserTravel(userName, lineNumber, onStopTime, offStopTime);

            DO.UserTravel userTravelDO = userTravelBO.GetPropertiesFrom <DO.UserTravel, BO.UserTravel>();
            try
            {
                dal.CreateUserTravel(userTravelDO);
            }
            catch (DO.DOBadBusIdException ex)
            {
                throw new BODOBadBusIdException("cant create this userTravel", ex);
            }
        }
 public void CreateUserTravel(UserTravel userTravel)
 {
     DataSource.User_TravelList.Add(userTravel);
 }
示例#8
0
        private void DoWorkLine(object sender, DoWorkEventArgs e)
        {
            var custom = e.Argument as CustomClass;


            var line     = GetLine(custom.LD.Id);
            var timeLine = TravelTimeCalculate(line.Number, line.FirstStop, line.LastStop);

            BackgroundWorker bwDigital = custom.BW as BackgroundWorker;

            var timeStart         = custom.LD.TimeStart;
            var timeSpanTimeStart = new TimeSpan(timeStart.Hour, timeStart.Minute, timeStart.Second);

            var timeEnd         = custom.LD.TimeEnd;
            var timeSpanTimeEnd = new TimeSpan(timeEnd.TimeOfDay.Hours, timeEnd.TimeOfDay.Minutes, timeEnd.TimeOfDay.Seconds);

            DateTime dateTime;

            DateTime.TryParse(timeStart.Year + "/" + timeStart.Month + "/" + timeStart.Day + " " + 0 + ":" + 0 + ":" + 0, out dateTime);


            int counterProgress = 0;
            int lowerBound      = 0;

            TimeSpan timeFrequency = new TimeSpan((custom.LD.TimeEnd - custom.LD.TimeStart).Ticks / custom.LD.Frequency);

            while (GetCurrentTime() < timeSpanTimeEnd)
            {
                for (; counterProgress < custom.LD.Frequency; counterProgress++)
                {
                    if (GetCurrentTime() > timeSpanTimeStart + TimeSpan.FromTicks(timeFrequency.Ticks * counterProgress) &&
                        GetCurrentTime() < timeSpanTimeStart + TimeSpan.FromTicks(timeFrequency.Ticks * counterProgress) + timeLine)
                    {
                        var allBusTravels = GetAllBusTravels();
                        if (allBusTravels.Count() == 0 || GetAllBusTravels().ToList().
                            Find(bt => bt.FormalDepartureTime == (dateTime + timeSpanTimeStart + TimeSpan.FromTicks(timeFrequency.Ticks * counterProgress))) != null)
                        {
                            Bus  bus  = GetAllBussesReadyForDrive().First();
                            User user = GetAllDrivers().First();
                            UpdateBusStatus(0, bus.LicenseNumber);
                            CreateBusTravel(bus.LicenseNumber, custom.LD.Id, dateTime + timeSpanTimeStart + TimeSpan.FromTicks(timeFrequency.Ticks * counterProgress),
                                            dateTime + timeSpanTimeStart + TimeSpan.FromTicks(timeFrequency.Ticks * counterProgress),
                                            GetStationByTime(timeSpanTimeStart + TimeSpan.FromTicks(timeFrequency.Ticks * counterProgress), GetCurrentTime(), line.Id).Code,
                                            dateTime + GetPassedStopTime(timeSpanTimeStart + TimeSpan.FromTicks(timeFrequency.Ticks * counterProgress), GetCurrentTime(), line.Id),
                                            dateTime + GetNextStopTime(timeSpanTimeStart + TimeSpan.FromTicks(timeFrequency.Ticks * counterProgress), GetCurrentTime(), line.Id), user.UserName);
                            CreateUserTravel(user.UserName, line.Number, dateTime + timeSpanTimeStart + TimeSpan.FromTicks(timeFrequency.Ticks * counterProgress), dateTime + timeSpanTimeStart + TimeSpan.FromTicks(timeFrequency.Ticks * counterProgress) + timeLine);
                        }
                    }
                    else if (GetCurrentTime() < timeSpanTimeStart + TimeSpan.FromTicks(timeFrequency.Ticks * counterProgress))
                    {
                        break;
                    }
                }
                for (; lowerBound < counterProgress; lowerBound++)
                {
                    if (timeSpanTimeStart + TimeSpan.FromTicks(timeFrequency.Ticks * lowerBound) + timeLine < GetCurrentTime())
                    {
                        BusTravel bt;
                        try
                        {
                            bt = FindBusTravelWithLineNumberAndDepartureTime(line.Id, timeStart + TimeSpan.FromTicks(timeFrequency.Ticks * lowerBound));
                        }
                        catch { continue; }
                        UserTravel ut = GetDriverTravel(line.Number, timeStart + TimeSpan.FromTicks(timeFrequency.Ticks * lowerBound));
                        DeleteBusTravel(bt.Id);
                        UpdateBusStatus(1, bt.LicenseNumber);
                        DeleteUserTravel(ut.ID);
                    }
                    else
                    {
                        break;
                    }
                }
                var aaaa = GetAllBusTravels();

                for (int i = lowerBound; i < counterProgress; i++)
                {
                    BusTravel bt = new BusTravel();
                    bt = FindBusTravelWithLineNumberAndDepartureTime(line.Id, timeStart + TimeSpan.FromTicks(timeFrequency.Ticks * i));
                    UpdateLastPassedStop((GetStationByTime(timeSpanTimeStart + TimeSpan.FromTicks(timeFrequency.Ticks * i), GetCurrentTime(), line.Id).Code), bt.Id);
                    UpdateNextStopTime(dateTime + GetNextStopTime(timeSpanTimeStart + TimeSpan.FromTicks(timeFrequency.Ticks * i), GetCurrentTime(), line.Id), bt.Id);
                    UpdateLastPassedStopTime(dateTime + GetPassedStopTime(timeSpanTimeStart + TimeSpan.FromTicks(timeFrequency.Ticks * i), GetCurrentTime(), line.Id), bt.Id);
                }
                Thread.Sleep(500);
            }
        }