public IEnumerable <tblSchedule> GenerateSchedule(ScheduleParamsModel parameters)
        {
            var dateFrom = DateHelper.StringToDate(parameters.DateFrom);
            var dateTo   = DateHelper.StringToDate(parameters.DateTo);
            var schedule = new List <tblSchedule>();
            var fakeId   = 0;

            if (!dateFrom.HasValue || !dateTo.HasValue || string.IsNullOrEmpty(parameters.LinesIds))
            {
                return(null);
            }

            using (var logic = new LineLogic())
            {
                var lines = logic.GetLinesByPlan(parameters.LinesIds.Split(',').Select(int.Parse));

                foreach (var line in lines)
                {
                    var dates = GetScheduleLineDates(line, dateFrom.Value, dateTo.Value, parameters);
                    foreach (var date in dates)
                    {
                        var item = GenerateSingleSchedule(line, date, parameters.LeaveTime, parameters.ArriveTime);
                        item.Id = fakeId++;
                        schedule.Add(item);
                    }
                }
            }
            return(schedule);
        }
Exemple #2
0
        static void Test_GetLineColumnIndexFromCharIndex()
        {
            TextBuffer       text;
            SplitArray <int> lhi;
            int l, c;

            MakeTestData(out text, out lhi);

            LineLogic.GetLineColumnIndexFromCharIndex(text, lhi, 0, out l, out c);
            TestUtl.AssertEquals(0, l);
            TestUtl.AssertEquals(0, c);
            LineLogic.GetLineColumnIndexFromCharIndex(text, lhi, 2, out l, out c);
            TestUtl.AssertEquals(0, l);
            TestUtl.AssertEquals(2, c);
            LineLogic.GetLineColumnIndexFromCharIndex(text, lhi, 40, out l, out c);
            TestUtl.AssertEquals(4, l);
            TestUtl.AssertEquals(2, c);
            LineLogic.GetLineColumnIndexFromCharIndex(text, lhi, 71, out l, out c);               // 71 --> EOF
            TestUtl.AssertEquals(6, l);
            TestUtl.AssertEquals(18, c);
            try
            {
                LineLogic.GetLineColumnIndexFromCharIndex(text, lhi, 72, out l, out c);
                TestUtl.Fail("exception must be thrown here.");
            }
            catch (Exception ex)
            {
                TestUtl.AssertType <AssertException>(ex);
            }
        }
        public MapStateModel GetState()
        {
            var res = new MapStateModel();

            using (var logic = new LineLogic())
            {
                res.Lines = logic.GetList().Select(z => new LineModel(z)).ToList();
                foreach (var line in res.Lines)
                {
                    line.Stations = logic.GetStations(line.Id)
                                    .OrderBy(z => z.Position)
                                    .Select(z => new StationToLineModel(z))
                                    .ToList();
                }
            }
            using (var logic = new StationsLogic())
            {
                res.Stations = logic.GetList().Select(z => new StationModel(z)).ToList();
                foreach (var station in res.Stations)
                {
                    station.Students = logic.GetStudents(station.Id)
                                       .Select(z => new StudentToLineModel(z))
                                       .ToList();
                }
            }
            using (var logic = new tblStudentLogic())
            {
                res.Students = logic.GetActiveStudents()
                               .Select(z => new StudentShortInfo(z))
                               .ToList();
            }
            return(res);
        }
Exemple #4
0
        static void Test_GetCharIndexFromLineColumnIndex()
        {
            TextBuffer                  text;
            SplitArray <int>            lhi;
            SplitArray <LineDirtyState> lds;

            MakeTestData(out text, out lhi, out lds);

            TestUtl.AssertEquals(0, LineLogic.GetCharIndexFromLineColumnIndex(text, lhi, 0, 0));
            TestUtl.AssertEquals(34, LineLogic.GetCharIndexFromLineColumnIndex(text, lhi, 2, 1));
            TestUtl.AssertEquals(71, LineLogic.GetCharIndexFromLineColumnIndex(text, lhi, 6, 18));

            try
            {
                LineLogic.GetCharIndexFromLineColumnIndex(text, lhi, 6, 19);
                TestUtl.Fail("exception must be thrown here.");
            }
            catch (Exception ex)
            {
                TestUtl.AssertType <AssertException>(ex);
            }

            try
            {
                LineLogic.GetCharIndexFromLineColumnIndex(text, lhi, 0, 100);
                TestUtl.Fail("exception must be thrown here.");
            }
            catch (Exception ex)
            {
                TestUtl.AssertType <AssertException>(ex);
            }
        }
Exemple #5
0
        public JsonResult EditLine(GridLineBusModel model)
        {
            using (var logic = new LineLogic())
            {
                switch ((GridOperation)Enum.Parse(typeof(GridOperation), model.Oper, true))
                {
                //case GridOperation.add:
                //    logic.SaveLine(model.ToDbModel());
                //    break;
                case GridOperation.edit:
                    var existingLine = logic.GetLine(model.Id);
                    if (existingLine != null)
                    {
                        //model.UpdateDbModel(existingLine);
                        //logic.SaveChanges();
                        logic.UpdateBusToLine(model.Id, model.Bus);
                    }
                    break;

                case GridOperation.del:
                    logic.DeleteLine(model.Id);
                    break;
                }
            }
            return(new JsonResult {
                Data = true
            });
        }
Exemple #6
0
        static void Test_GetLineRange()
        {
            int                         head, end;
            TextBuffer                  text;
            SplitArray <int>            lhi;
            SplitArray <LineDirtyState> lds;

            MakeTestData(out text, out lhi, out lds);

            LineLogic.GetLineRange(text, lhi, 0, out head, out end);
            TestUtl.AssertEquals(0, head);
            TestUtl.AssertEquals(30, end);
            LineLogic.GetLineRange(text, lhi, 1, out head, out end);
            TestUtl.AssertEquals(32, head);
            TestUtl.AssertEquals(32, end);
            LineLogic.GetLineRange(text, lhi, 2, out head, out end);
            TestUtl.AssertEquals(33, head);
            TestUtl.AssertEquals(36, end);
            LineLogic.GetLineRange(text, lhi, 3, out head, out end);
            TestUtl.AssertEquals(37, head);
            TestUtl.AssertEquals(37, end);
            LineLogic.GetLineRange(text, lhi, 4, out head, out end);
            TestUtl.AssertEquals(38, head);
            TestUtl.AssertEquals(51, end);
            LineLogic.GetLineRange(text, lhi, 5, out head, out end);
            TestUtl.AssertEquals(52, head);
            TestUtl.AssertEquals(52, end);
            LineLogic.GetLineRange(text, lhi, 6, out head, out end);
            TestUtl.AssertEquals(53, head);
            TestUtl.AssertEquals(71, end);
        }
Exemple #7
0
 public JsonResult GetAllLinesPeriodStatistic(DateTime startDate, DateTime endDate)
 {
     using (var l = new LineLogic()) {
         var rows   = l.GetAllLinesPeriodActivities(startDate, endDate);
         var footer = l.GetLineTotalStatisticByDays(startDate, endDate);
         return(new JsonResult {
             Data = new { rows = rows, footer = footer }
         });
     }
 }
        public JsonResult GetTotal(bool _search, string nd, int rows, int page, string sidx, string sord, string filters = "")
        {
            TotalDto total;

            using (var logic = new LineLogic()) {
                total = logic.GetTotal(_search, rows, page, sidx, sord, filters);
            }
            return(new JsonResult {
                Data = total
            });
        }
Exemple #9
0
        static void MakeTestData(out TextBuffer text, out SplitArray <int> lhi, out SplitArray <LineDirtyState> lds)
        {
            text = new TextBuffer(1, 1);
            lhi  = new SplitArray <int>(1, 8);
            lds  = new SplitArray <LineDirtyState>(1);

            lhi.Add(0);
            lds.Add(LineDirtyState.Clean);

            LineLogic.LHI_Insert(lhi, lds, text, TestData, 0);
            text.Insert(0, TestData.ToCharArray());
        }
        public LineActiveSwitchModel PostLineActiveSwitch(LineActiveSwitchModel data)
        {
            var res = new LineActiveSwitchModel();

            using (var logic = new LineLogic())
            {
                res.Done   = logic.SwitchActive(data.LineId, data.Active);
                res.LineId = data.LineId;
                res.Active = data.Active;
            }
            return(res);
        }
        public EditLineResultModel PostDeleteLine(int id)
        {
            var res = new EditLineResultModel();

            using (var logic = new LineLogic())
            {
                res.Done = logic.DeleteLine(id);
            }
            res.Line = new LineModel {
                Id = id
            };
            return(res);
        }
        public GridLineModel[] GetPrint(bool _search, string nd, int rows, int page, string sidx, string sord, string filters = "")
        {
            var lines        = new GridLineModel[] { };
            var totalRecords = 0;

            using (var logic = new LineLogic()) {
                totalRecords = logic.Lines.Count();
                lines        = logic.GetPaged(_search, totalRecords, page, sidx, sord, filters)
                               .Select(z => new GridLineModel(z)).ToArray();
            }

            return(lines);
        }
Exemple #13
0
        public JsonResult GetLinesTotalStatistic(int year)
        {
            DateTime date   = new DateTime(year, 1, 1);
            var      result = new List <LinesTotalStatisticDto>();

            using (var logic = new LineLogic()) {
                for (int i = 0; i < 12; i++)
                {
                    result.Add(logic.GetLinesTotalStatistic(date.AddMonths(i), date.AddMonths(i + 1)));
                }
            }
            return(new JsonResult {
                Data = result
            });
        }
Exemple #14
0
        static void Test_NextLineHead()
        {
            TextBuffer text = new TextBuffer(1, 32);

            text.Insert(0, TestData.ToCharArray());

            try
            {
                LineLogic.NextLineHead(text, -1);
                TestUtl.Fail("exception must be thrown here.");
            }
            catch (Exception ex)
            {
                TestUtl.AssertType <AssertException>(ex);
            }

            int i = 0;

            for ( ; i < 32; i++)
            {
                TestUtl.AssertEquals(32, LineLogic.NextLineHead(text, i));
            }
            for ( ; i < 33; i++)
            {
                TestUtl.AssertEquals(33, LineLogic.NextLineHead(text, i));
            }
            for ( ; i < 37; i++)
            {
                TestUtl.AssertEquals(37, LineLogic.NextLineHead(text, i));
            }
            for ( ; i < 38; i++)
            {
                TestUtl.AssertEquals(38, LineLogic.NextLineHead(text, i));
            }
            for ( ; i < 52; i++)
            {
                TestUtl.AssertEquals(52, LineLogic.NextLineHead(text, i));
            }
            for ( ; i < 53; i++)
            {
                TestUtl.AssertEquals(53, LineLogic.NextLineHead(text, i));
            }
            for ( ; i < 71; i++)
            {
                TestUtl.AssertEquals(-1, LineLogic.NextLineHead(text, i));
            }
            TestUtl.AssertEquals(-1, LineLogic.NextLineHead(text, i));
        }
Exemple #15
0
        public JsonResult PostSave(StationModel model)
        {
            double lat = 0;
            double lng = 0;

            double.TryParse(StringHelper.FixDecimalSeparator(model.StrLat), out lat);
            double.TryParse(StringHelper.FixDecimalSeparator(model.StrLng), out lng);

            var station = new Station
            {
                Id          = model.Id,
                color       = model.Color,
                StationName = model.Name,
                Lattitude   = lat.ToString(CultureInfo.InvariantCulture),
                Longitude   = lng.ToString(CultureInfo.InvariantCulture),
                StationType = model.Type,
                Address     = model.Address
            };
            var res = new SaveStationResultModel();

            using (var logic = new StationsLogic())
            {
                var stRes = logic.Save(station);
                res.Station = stRes == null ? null : new StationModel(stRes);
                if (res.Station != null)
                {
                    res.Station.Students = logic.GetStudents(station.Id)
                                           .Select(z => new StudentToLineModel(z))
                                           .ToList();
                    using (var logic2 = new LineLogic())
                    {
                        res.Lines = logic2.GetLinesForStation(res.Station.Id)
                                    .Select(z => new LineModel(z)).ToList();
                        foreach (var line in res.Lines)
                        {
                            line.Stations = logic2.GetStations(line.Id)
                                            .OrderBy(z => z.Position)
                                            .Select(z => new StationToLineModel(z))
                                            .ToList();
                        }
                    }
                }
            }
            return(new JsonResult {
                Data = res
            });
        }
Exemple #16
0
        public SaveStationToLineResult PostAddToLine(AddStationToLineModel model)
        {
            var positionMode = 0;

            if (model.StrAlwaysFirst == "on")
            {
                positionMode = 1;
            }
            if (model.StrAlwaysLast == "on")
            {
                positionMode = 2;
            }

            var ts  = new TimeSpan(model.Hours, model.Minutes, 0);
            var res = new SaveStationToLineResult();

            using (var logic = new StationsLogic())
            {
                res.Done = logic.AddToLine(
                    model.StationId,
                    model.LineId,
                    ts,
                    model.Position,
                    positionMode,
                    model.ChangeColor);

                res.Station          = new StationModel(logic.GetStation(model.StationId));
                res.Station.Students = logic.GetStudents(model.StationId)
                                       .Select(z => new StudentToLineModel(z))
                                       .ToList();
            }
            using (var logic = new LineLogic())
            {
                res.Line          = new LineModel(logic.GetLine(model.LineId));
                res.Line.Stations = logic.GetStations(model.LineId)
                                    .OrderBy(z => z.Position)
                                    .Select(z => new StationToLineModel(z))
                                    .ToList();
            }
            using (var logic = new tblStudentLogic())
            {
                res.Students = logic.GetStudentsForStation(model.StationId)
                               .Select(z => new StudentShortInfo(z))
                               .ToList();
            }
            return(res);
        }
        public LineModel PostSaveDurations(SaveDurationsModel data)
        {
            LineModel res = null;

            using (var logic = new LineLogic())
            {
                var ln = logic.ReCalcTimeTable(data);
                if (ln != null)
                {
                    res = new LineModel(ln)
                    {
                        Stations = ln.StationsToLines.Select(z => new StationToLineModel(z)).ToList()
                    };
                }
            }
            return(res);
        }
Exemple #18
0
 //[Authorize]
 //public JsonResult regPay1(string h)
 //{
 //    return Json(JsonRequestBehavior.AllowGet);
 //}
 //------------------------------------//
 // GET: tblStudent
 public ActionResult Index()
 {
     using (var logic = new tblStudentLogic())
     {
         ViewBag.Classes       = logic.Classes();
         ViewBag.Shicvas       = logic.Shicvas();
         ViewBag.DefaultCityId = logic.DefaultCityId;
     }
     if (ViewBag.DefaultCityId > 0)
     {
         using (var logic5 = new tblStreetsLogic())
         {
             ViewBag.DefaultCity = logic5.GetCityById(ViewBag.DefaultCityId);
         }
     }
     using (var logic2 = new LineLogic())
     {
         ViewBag.Lines = logic2.GetList();
     }
     using (var logic3 = new StationsLogic())
     {
         ViewBag.Stations = logic3.GetList();
     }
     using (var logic4 = new tblFamilyLogic())
     {
         ViewBag.Families = JsonConvert.SerializeObject(logic4.GetAll().Select(z => new
         {
             Id   = z.familyId,
             Name = z.parent1FirstName + " " + z.parent1LastName +
                    (z.oneParentOnly ? "" : " / " + z.parent2FirstName + " " + z.parent2LastName)
         }));
     }
     using (var logic5 = new tblSchoolLogic())
     {
         ViewBag.Schools = JsonConvert.SerializeObject(logic5.GetList().Select(z => new
         {
             Id   = z.id,
             Name = z.name
         }));
     }
     return(View());
 }
        public HttpResponseMessage GetLines(bool _search, string nd, int rows, int page, string sidx, string sord, string filters = "")
        {
            var lines        = new List <GridLineModel>();
            var totalRecords = 0;

            using (var logic = new LineLogic()) {
                lines = logic.GetPaged(_search, rows, page, sidx, sord, filters)
                        .Select(z => new GridLineModel(z)).ToList();
                totalRecords = logic.Lines.Count();
            }
            return(Request.CreateResponse(
                       HttpStatusCode.OK,
                       new {
                total = (totalRecords + rows - 1) / rows,
                page,
                records = totalRecords
                ,
                rows = lines
            }));
        }
        public JsonResult GetCompaniesFilter()
        {
            var companies = new List <SelectItemModel>();

            companies.Add(new SelectItemModel {
                Value = "", Text = DictExpressionBuilderSystem.Translate("Search.All")
            });
            using (var logic = new LineLogic()) {
                var getCompanies = logic.GetCompaniesFilter();
                companies.AddRange(getCompanies
                                   .Where(w => w != null)
                                   .Select(z => new SelectItemModel {
                    Value = z.pk.ToString(),
                    Text  = z.companyName
                }).ToList());
            }

            return(new JsonResult {
                Data = companies
            });
        }
        public JsonResult GetAvailableBuses(int lineId)
        {
            var buses = new List <SelectItemModel>();

            buses.Add(new SelectItemModel {
                Value = "0", Text = string.Empty, Title = string.Empty
            });
            using (var logic = new LineLogic()) {
                buses.AddRange(logic.GetAvailableBuses(lineId)
                               .ToList()
                               .Select(z => new SelectItemModel {
                    Value = z.Id.ToString(),
                    Text  = DescriptionHelper.GetBusDescription(z),
                    Title = DescriptionHelper.GetBusDescription(z)
                }));
            }

            return(new JsonResult {
                Data = buses
            });
        }
Exemple #22
0
        static void Test_LineHeadIndexFromCharIndex()
        {
            TextBuffer       text;
            SplitArray <int> lhi;

            MakeTestData(out text, out lhi);

            int i = 0;

            for ( ; i < 32; i++)
            {
                TestUtl.AssertEquals(0, LineLogic.GetLineHeadIndexFromCharIndex(text, lhi, i));
            }
            for ( ; i < 33; i++)
            {
                TestUtl.AssertEquals(32, LineLogic.GetLineHeadIndexFromCharIndex(text, lhi, i));
            }
            for ( ; i < 37; i++)
            {
                TestUtl.AssertEquals(33, LineLogic.GetLineHeadIndexFromCharIndex(text, lhi, i));
            }
            for ( ; i < 38; i++)
            {
                TestUtl.AssertEquals(37, LineLogic.GetLineHeadIndexFromCharIndex(text, lhi, i));
            }
            for ( ; i < 52; i++)
            {
                TestUtl.AssertEquals(38, LineLogic.GetLineHeadIndexFromCharIndex(text, lhi, i));
            }
            for ( ; i < 53; i++)
            {
                TestUtl.AssertEquals(52, LineLogic.GetLineHeadIndexFromCharIndex(text, lhi, i));
            }
            for ( ; i <= 71; i++)
            {
                TestUtl.AssertEquals(53, LineLogic.GetLineHeadIndexFromCharIndex(text, lhi, i));
            }
            try{ LineLogic.GetLineHeadIndexFromCharIndex(text, lhi, i); TestUtl.Fail("exception must be thrown here."); }
            catch (Exception ex) { TestUtl.AssertType <AssertException>(ex); }
        }
Exemple #23
0
        static void Test_GetLineIndexFromCharIndex()
        {
            SplitArray <int> lhi = new SplitArray <int>(32, 32);

            lhi.Add(0);
            lhi.Add(32);
            lhi.Add(33);
            lhi.Add(37);
            lhi.Add(38);
            lhi.Add(52);
            lhi.Add(53);

            int i = 0;

            for ( ; i < 32; i++)
            {
                TestUtl.AssertEquals(0, LineLogic.GetLineIndexFromCharIndex(lhi, i));
            }
            for ( ; i < 33; i++)
            {
                TestUtl.AssertEquals(1, LineLogic.GetLineIndexFromCharIndex(lhi, i));
            }
            for ( ; i < 37; i++)
            {
                TestUtl.AssertEquals(2, LineLogic.GetLineIndexFromCharIndex(lhi, i));
            }
            for ( ; i < 38; i++)
            {
                TestUtl.AssertEquals(3, LineLogic.GetLineIndexFromCharIndex(lhi, i));
            }
            for ( ; i < 52; i++)
            {
                TestUtl.AssertEquals(4, LineLogic.GetLineIndexFromCharIndex(lhi, i));
            }
            for ( ; i < 53; i++)
            {
                TestUtl.AssertEquals(5, LineLogic.GetLineIndexFromCharIndex(lhi, i));
            }
            TestUtl.AssertEquals(6, LineLogic.GetLineIndexFromCharIndex(lhi, 54));
        }
        public JsonResult GetScheduleLines()
        {
            var lines = new List <SelectItemModel>();

            lines.Add(new SelectItemModel {
                Value = "0", Text = string.Empty, Title = string.Empty
            });
            using (var logic = new LineLogic())
            {
                lines.AddRange(logic.GetList()
                               .Select(z => new SelectItemModel
                {
                    Value = z.Id.ToString(),
                    Text  = string.Format("{0} - {1}", z.LineName, z.LineNumber),
                    Title = string.Format("{0} ({1} - {2})", z.LineName, z.LineNumber, DictExpressionBuilderSystem.Translate("General." + (LineDirection)z.Direction))
                }).ToList());
            }

            return(new JsonResult {
                Data = lines
            });
        }
        public EditLineResultModel PostSaveLine(LineModel data)
        {
            var res = new EditLineResultModel();

            using (var logic = new LineLogic())
            {
                res.Line = new LineModel(
                    logic.SaveLine(
                        data.Id,
                        data.LineNumber,
                        data.Name,
                        data.Color,
                        data.Direction));
                res.Line.Stations = logic.GetStations(res.Line.Id)
                                    .OrderBy(z => z.Position)
                                    .Select(z => new StationToLineModel(z))
                                    .ToList();
            }
            using (var logic = new StationsLogic())
            {
                res.Stations = logic.GetStationForLine(res.Line.Id)
                               .Select(z => new StationModel(z))
                               .ToList();
                foreach (var station in res.Stations)
                {
                    station.Students = logic.GetStudents(station.Id)
                                       .Select(z => new StudentToLineModel(z))
                                       .ToList();
                }
            }
            using (var logic = new tblStudentLogic())
            {
                res.Students = logic.GetStudentsForLine(res.Line.Id)
                               .Select(z => new StudentShortInfo(z))
                               .ToList();
            }
            return(res);
        }
        public bool PopulateLinesPlan()
        {
            var linesIds = new List <int>();
            var dateFrom = DateHelper.GetSunday(DateTime.Now); // DateTime.Now.AddDays(1).Date;
            var dateTo   = dateFrom.AddDays(7).Date;

            using (var logic = new LineLogic())
            {
                linesIds = logic.GetList().Select(x => x.Id).ToList();
            }
            var parameters = new ScheduleParamsModel
            {
                LinesIds   = string.Join(",", linesIds),
                DateFrom   = DateHelper.DateToString(dateFrom),
                DateTo     = DateHelper.DateToString(dateTo),
                ArriveTime = true,
                LeaveTime  = true,
                Sun        = true,
                Mon        = true,
                Tue        = true,
                Wed        = true,
                Thu        = true,
                Fri        = true,
                Sut        = true,
            };

            using (var logic = new tblLinesPlanLogic()) {
                // 0 Step - Remove all plans that has no line attached to it
                logic.DeleteAllUnbindedPlans();
                // 1 Step - Setting tblLines to LinesPlan state
                logic.SyncLinesToPlans();
            }
            // 2 Step - Generate new schedule sets by tblLines state
            var schedule = GenerateSchedule(parameters).ToList();

            // 3 Step - save new sets to tblSchedule
            return(SaveGeneratedShcedule(schedule, dateFrom, dateTo));
        }
Exemple #27
0
        public AttachStudentResultModel PostDeleteAttachStudent(int id)
        {
            var res = new AttachStudentResultModel {
                Stations = new List <StationModel>(), Lines = new List <LineModel>()
            };

            using (var logic = new StationsLogic())
            {
                var itm = logic.GetAttachInfo(id);
                if (itm != null)
                {
                    var stId = itm.StationId;
                    var lnId = itm.LineId;
                    res.Done = logic.DeleteAttach(id);
                    if (lnId != -1)
                    {
                        using (var logic2 = new LineLogic())
                        {
                            var ln = new LineModel(logic2.GetLine(lnId))
                            {
                                Stations = logic2.GetStations(lnId)
                                           .Select(z => new StationToLineModel(z))
                                           .ToList()
                            };
                            res.Lines.Add(ln);
                        }
                    }
                    var st = new StationModel(logic.GetStation(stId))
                    {
                        Students = logic.GetStudents(stId)
                                   .Select(z => new StudentToLineModel(z))
                                   .ToList()
                    };
                    res.Stations.Add(st);
                }
            }
            return(res);
        }
        public List <StationToLineModel> PostSaveGeometry(SaveGeometryModel model)
        {
            var res = new List <StationToLineModel>();

            using (var logic = new LineLogic())
            {
                var line = logic.GetLine(model.Id);
                if (line != null)
                {
                    line.PathGeometry = model.Data;
                    logic.SaveChanges();

                    string         fs = "0:0";
                    StationsToLine st = null;
                    st = line.Direction == 0 ? line.StationsToLines.OrderBy(s => s.Position).Last() : line.StationsToLines.OrderBy(s => s.Position).First();
                    if (line.StationsToLines.Select(l => l.ArrivalDate).Max() > st.ArrivalDate && line.Direction == 0)
                    {
                        st.ArrivalDate = line.StationsToLines.Select(l => l.ArrivalDate).Max();
                    }
                    fs = st.ArrivalDate.Hours + ":" + st.ArrivalDate.Minutes;
                    var data = new SaveDurationsModel
                    {
                        LineId       = model.Id,
                        Durations    = model.Durations,
                        FirstStation = fs
                    };
                    var ln = logic.ReCalcTimeTable(data);
                    if (ln != null)
                    {
                        res = ln.StationsToLines
                              .OrderBy(z => z.Position)
                              .Select(z => new StationToLineModel(z))
                              .ToList();
                    }
                }
            }
            return(res);
        }
        public JsonResult GetAvailableBuses(int?lineId = null, int?scheduleId = null)
        {
            var  buses        = new List <SelectItemModel>();
            Line scheduleLine = null;

            buses.Add(new SelectItemModel {
                Value = "0", Text = string.Empty, Title = string.Empty
            });
            if (scheduleId.HasValue)
            {
                using (var logic = new tblScheduleLogic())
                {
                    var scheduleItem = logic.GetItem(scheduleId.Value);
                    if (scheduleItem != null)
                    {
                        scheduleLine = scheduleItem.Line;
                    }
                }
            }
            var lineIdRes = scheduleLine != null ? scheduleLine.Id : lineId ?? 0;

            using (var logic = new LineLogic())
            {
                buses.AddRange(logic.GetAvailableBuses(lineIdRes)
                               .Select(z => new SelectItemModel
                {
                    Value    = z.Id.ToString(),
                    Text     = string.Format("{0} ({1} - {2})", z.Id, z.BusId, z.PlateNumber),
                    Title    = string.Format("{0} ({1} - {2} - {3} - {4})", z.Id, z.BusId, z.PlateNumber, z.BusCompany != null ? z.BusCompany.companyName : string.Empty, z.seats.HasValue ? z.seats.Value.ToString() : string.Empty),
                    Selected = z.BusesToLines.Any() && z.BusesToLines.First().LineId == lineIdRes
                }).ToList());
            }

            return(new JsonResult {
                Data = buses
            });
        }
Exemple #30
0
        static void Test_GetLineLengthByCharIndex()
        {
            TextBuffer text = new TextBuffer(1, 32);
            int        i    = 0;

            text.Insert(0, TestData.ToCharArray());

            for ( ; i < 32; i++)
            {
                TestUtl.AssertEquals(32, LineLogic.GetLineLengthByCharIndex(text, i));
            }
            for ( ; i < 33; i++)
            {
                TestUtl.AssertEquals(1, LineLogic.GetLineLengthByCharIndex(text, i));
            }
            for ( ; i < 37; i++)
            {
                TestUtl.AssertEquals(4, LineLogic.GetLineLengthByCharIndex(text, i));
            }
            for ( ; i < 38; i++)
            {
                TestUtl.AssertEquals(1, LineLogic.GetLineLengthByCharIndex(text, i));
            }
            for ( ; i < 52; i++)
            {
                TestUtl.AssertEquals(14, LineLogic.GetLineLengthByCharIndex(text, i));
            }
            for ( ; i < 53; i++)
            {
                TestUtl.AssertEquals(1, LineLogic.GetLineLengthByCharIndex(text, i));
            }
            for ( ; i < 71; i++)
            {
                TestUtl.AssertEquals(17, LineLogic.GetLineLengthByCharIndex(text, i));
            }
            TestUtl.AssertEquals(17, LineLogic.GetLineLengthByCharIndex(text, i));               // EOF
        }