示例#1
0
        private static NetworkLineViewModel AdaptNetworkLineViewModel(NetworkLine line)
        {
            NetworkLineViewModel model = new NetworkLineViewModel();

            model.LineNumber = line.LineNumber;

            switch (model.Type)
            {
            case "Gradska":
            {
                model.Type = "Gradska";
                break;
            }

            case "Prigradska":
            {
                model.Type = "Prigradska";
                break;
            }

            default:
            {
                model.Type = "Gradska";
                break;
            }
            }

            if (line.Departures == null)
            {
                line.Departures = new List <Departures>();
            }

            foreach (var d in line.Departures)
            {
                model.Departures.Add(d.Time);
            }

            if (line.Stations == null)
            {
                line.Stations = new List <Station>();
            }

            foreach (var s in line.Stations)
            {
                model.Stations.Add(Convert.ToInt32(s.Name));
            }

            if (line.ScheduleDays == null)
            {
                line.ScheduleDays = new List <Schedule>();
            }

            foreach (var s in line.ScheduleDays)
            {
                model.ScheduleDays.Add(s.ToString());
            }

            return(model);
        }
示例#2
0
        public IHttpActionResult AddLine(NetworkLineViewModel model)
        {
            NetworkLine networkLine = AdaptNetworkLine(model, 0);

            UnitOfWork.NetworkLines.Add(networkLine);
            UnitOfWork.Complete();

            return(Ok($"Line {model.LineNumber} successfully added!"));
        }
示例#3
0
        public IHttpActionResult UpdateLine(NetworkLineViewModel model)
        {//model is null fix it
            try
            {
                NetworkLine line = AdaptNetworkLine(model, 1);

                UnitOfWork.NetworkLines.Update(line);
                UnitOfWork.Complete();
                return(Ok($"Line {model.LineNumber} successfully updated!"));
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }
示例#4
0
        //COMMAND - add == 0, update == 1
        private NetworkLine AdaptNetworkLine(NetworkLineViewModel model, int command)
        {
            NetworkLine networkLine;

            if (command == 0)
            {
                networkLine = new NetworkLine();
            }

            else
            {
                networkLine = UnitOfWork.NetworkLines.Get(model.Id);

                int cntDepartures = networkLine.Departures.Count;
                for (int item = 0; item < cntDepartures; item++)
                {
                    UnitOfWork.Departures.Remove(networkLine.Departures.ToList()[0]);
                }

                int cntSchedule = networkLine.ScheduleDays.Count;
                for (int item = 0; item < cntSchedule; item++)
                {
                    UnitOfWork.Schedules.Remove(networkLine.ScheduleDays.ToList()[0]);
                    //networkLine.ScheduleDays.Remove(networkLine.ScheduleDays.ToList()[item]);
                }

                int cntStations = networkLine.Stations.Count;
                for (int item = 0; item < cntStations; item++)
                {
                    var station = networkLine.Stations.ToList()[0];
                    station.NLine.Remove(networkLine);
                    networkLine.Stations.Remove(station);
                }

                UnitOfWork.Complete();
            }

            if (UnitOfWork.NetworkLines.GetAll().ToList().Exists(x => x.LineNumber == model.LineNumber) &&
                networkLine.LineNumber != model.LineNumber)
            {
                return(null);
            }

            networkLine.LineNumber = model.LineNumber;

            switch (model.Type)
            {
            case "Gradska":
            {
                networkLine.Type = LineType.Gradska;
                break;
            }

            case "Prigradska":
            {
                networkLine.Type = LineType.Prigradska;
                break;
            }

            default:
            {
                networkLine.Type = LineType.Gradska;
                break;
            }
            }


            if (model.Departures == null)
            {
                model.Departures = new List <DateTime>();
            }

            foreach (var d in model.Departures)
            {
                networkLine.Departures.Add(new Departures()
                {
                    Time = d, NetworkLine = networkLine
                });
            }

            if (model.Stations == null)
            {
                model.Stations = new List <int>();
            }

            foreach (var s in model.Stations)
            {
                var station = UnitOfWork.Stations.Find(
                    x => x.Name == s.ToString()).First();
                station.NLine.Add(networkLine);
                networkLine.Stations.Add(station);
            }

            if (model.ScheduleDays == null)
            {
                model.ScheduleDays = new List <string>();
            }

            foreach (var s in model.ScheduleDays)
            {
                if (s == "RadniDan")
                {
                    networkLine.ScheduleDays.Add(new Schedule()
                    {
                        Type = TimetableType.RadniDan, NetworkLine = networkLine
                    });
                }
                else if (s == "Praznik")
                {
                    networkLine.ScheduleDays.Add(new Schedule()
                    {
                        Type = TimetableType.Praznik, NetworkLine = networkLine
                    });
                }
                else if (s == "Vikend")
                {
                    networkLine.ScheduleDays.Add(new Schedule()
                    {
                        Type = TimetableType.Vikend, NetworkLine = networkLine
                    });
                }
            }

            return(networkLine);
        }