public ActionResult Index(int account, string session)
        {
            AppState.AccountID = account;
            AppState.SessionID = session == "" ? null : "";

            acc_id     = AppState.AccountID;
            session_id = AppState.SessionID;

            Models.TrackersListModel m = new Models.TrackersListModel();

            using (var client = new OltpLogicClient(session_id))
            {
                // Load Channels
                Oltp.ChannelDataTable channels = client.Service.Channel_Get();
                m.Channels = channels.OrderBy(x => x.DisplayName).ToDictionary(c => c.ID, c => c.DisplayName);

                // Load Segments
                Oltp.SegmentDataTable segments = client.Service.Segment_Get(acc_id, true);

                foreach (Oltp.SegmentRow segment in segments)
                {
                    bool is_tracker_segment = ((Auxilary.SegmentAssociationFlags)segment.Association).HasFlag(Auxilary.SegmentAssociationFlags.Gateyway);
                    if (is_tracker_segment)
                    {
                        Oltp.SegmentValueDataTable segment_values = client.Service.SegmentValue_Get(acc_id, segment.SegmentID);
                        m.Segments.Add(new Models.SegmentRowModel()
                        {
                            SegmentRow = segment, Values = segment_values.ToList()
                        });
                    }
                }
            }
            return(View(m));
        }
        public PartialViewResult BatchUpdate()
        {
            Models.TrackersBatchModel m = new Models.TrackersBatchModel();

            using (var client = new OltpLogicClient(session_id))
            {
                Oltp.SegmentDataTable segments = client.Service.Segment_Get(acc_id, true);
                foreach (Oltp.SegmentRow segment in segments)
                {
                    bool is_tracker_segment = ((Auxilary.SegmentAssociationFlags)segment.Association).HasFlag(Auxilary.SegmentAssociationFlags.Gateyway);
                    if (is_tracker_segment)
                    {
                        Oltp.SegmentValueDataTable segment_values = client.Service.SegmentValue_Get(acc_id, segment.SegmentID);
                        m.Segments.Add(new Models.SegmentRowModel()
                        {
                            SegmentRow = segment, Values = segment_values.ToList(), SelectedValue = -1
                        });
                    }
                }
                Oltp.ChannelDataTable channels = client.Service.Channel_Get();
                m.Channels     = channels.ToDictionary(c => c.ID, c => c.DisplayName);
                m.LandingPages = client.Service.Page_Get(acc_id, null, true, -1).ToDictionary(p => p.GK, p => p.DisplayName);
            }


            return(PartialView("BatchTrackers", m));
        }
        public PartialViewResult EditTracker(string identifier)
        {
            Models.TrackerModel m = new Models.TrackerModel();

            using (var client = OltpLogicClient.Open(session_id))
            {
                if (client == null)
                {
                    return(PartialView("~/Views/Shared/_SessionExpiredView.cshtml"));
                }

                m.Tracker = client.Service.Gateway_GetByIdentifier(acc_id, identifier)[0];

                Oltp.SegmentDataTable segments = client.Service.Segment_Get(acc_id, true);
                foreach (Oltp.SegmentRow segment in segments)
                {
                    bool is_tracker_segment = ((Auxilary.SegmentAssociationFlags)segment.Association).HasFlag(Auxilary.SegmentAssociationFlags.Gateyway);
                    if (is_tracker_segment)
                    {
                        Oltp.SegmentValueDataTable segment_values = client.Service.SegmentValue_Get(acc_id, segment.SegmentID);
                        int value;
                        switch (segment.SegmentID)
                        {
                        case 1: value = m.Tracker.Segment1; break;

                        case 2: value = m.Tracker.Segment2; break;

                        case 3: value = m.Tracker.Segment3; break;

                        case 4: value = m.Tracker.Segment4; break;

                        case 5: value = m.Tracker.Segment5; break;

                        default: value = m.Tracker.Segment1; break;
                        }
                        m.Segments.Add(new Models.SegmentRowModel()
                        {
                            SegmentRow = segment, Values = segment_values.ToList(), SelectedValue = value
                        });
                    }
                }
                Oltp.ChannelDataTable channels = client.Service.Channel_Get();
                m.Channels     = channels.ToDictionary(c => c.ID, c => c.DisplayName);
                m.LandingPages = client.Service.Page_Get(acc_id, null, true, -1).ToDictionary(p => p.GK, p => p.DisplayName);
                m.AppliedTo    = GetReferenceData(m.Tracker, client);
            }


            return(PartialView("TrackerDetails", m));
        }