Пример #1
0
        /// <summary>
        /// Ergänzt die Beschreibung der aktuellen Aufzeichnungen.
        /// </summary>
        /// <param name="info">Die Beschreibung der Gesamtaufgabe des aktuellen Aufzeichnungsprozesses.</param>
        /// <param name="finalCall">Gesetzt, wenn es sich um den abschließenden Aufruf handelt. Dieser
        /// wird ausschließlich für die Erstellung des Protokolleintrags verwendet.</param>
        /// <param name="state">Der aktuelle Zustand.</param>
        protected override void OnFillInformation(FullInfo info, bool finalCall, ServerInformation state)
        {
            // Set static data
            info.IsDynamic = true;
            info.CanStream = true;

            // Synchronize access
            lock (m_recordings)
            {
                // Load all files we've seen so far
                info.Recording.RecordingFiles.Clear();
                info.Recording.RecordingFiles.AddRange(m_files);

                // Create the file mapping
                var files =
                    m_files
                    .Where(file => !string.IsNullOrEmpty(file.ScheduleIdentifier))
                    .GroupBy(file => new Guid(file.ScheduleIdentifier), file => file.Path)
                    .ToDictionary(group => group.Key, group => group.ToArray());

                // Process all recordings
                info
                .Streams
                .AddRange((finalCall ? m_allRecordings : m_recordings)
                          .Select(recording =>
                {
                    // Collect the data
                    var streamInfo = (state == null) ? null : state.Streams.Find(recording.Match);
                    var target     = (streamInfo == null) ? null : streamInfo.StreamTarget;

                    // Create record
                    return(StreamInfo.Create(recording, target, files));
                }));
            }
        }
        public EditWindow(int id)
        {
            ID_Towaru = id;

            var sql = "SELECT * FROM Produkt";

            Produkt[] produkts      = _sqlConnection.Query <Produkt>(sql).ToArray();
            var       sqlProducenci = "SELECT * FROM Producenci";

            Producenci[] producencis = _sqlConnection.Query <Producenci>(sqlProducenci).ToArray();


            InitializeComponent();

            foreach (Producenci producenci in producencis)
            {
                comboProducer.Items.Add(producenci);
            }

            var    sqlEdit = "SELECT Produkt.ID_Produktu, ID_Towaru, Nazwa_Produktu, Nazwa_Producenta, Data, Ilosc, Cena FROM Produkt INNER JOIN Towary ON Produkt.ID_Produktu = Towary.ID_Produktu INNER JOIN Producenci ON Produkt.ID_Producenta = Producenci.ID_Producenta WHERE ID_Towaru = @SelectedTowarID";
            string ID      = ID_Towaru.ToString();

            FullInfo fullInfo = _sqlConnection.Query <FullInfo>(sqlEdit, new { SelectedTowarID = ID }).FirstOrDefault();

            txtPrice.Text      = fullInfo.Cena.ToString();
            txtQuantity.Text   = fullInfo.Ilosc.ToString();
            comboProducer.Text = fullInfo.Nazwa_Producenta;

            ID_Produktu = fullInfo.ID_Produktu;
        }
 private void InfoBtn(object sender, RoutedEventArgs e)
 {
     if (listbox.SelectedItem != null)
     {
         Result   selectedTowar   = listbox.SelectedItem as Result;
         var      selectedTowarID = selectedTowar.ID_Towaru;
         var      sql             = "SELECT ID_Towaru, Nazwa_Produktu, Nazwa_Producenta, Data, Ilosc, Cena FROM Produkt INNER JOIN Towary ON Produkt.ID_Produktu = Towary.ID_Produktu INNER JOIN Producenci ON Produkt.ID_Producenta = Producenci.ID_Producenta WHERE ID_Towaru = @SelectedTowarID";
         FullInfo fullInfo        = _sqlConnection.Query <FullInfo>(sql, new { SelectedTowarID = selectedTowarID }).FirstOrDefault();
         MessageBox.Show(fullInfo.ToString());
     }
 }
Пример #4
0
        static void Main6(string[] args)
        {
            // Attach to job manager
            VCRServer  server = new VCRServer(new DirectoryInfo(@"C:\temp\VCR.NET 3.9 Alpha\Jobs"));
            JobManager jobs   = server.JobManager;

            // Create EPG collection
            using (ZappingRequest request = ZappingRequest.CreateDefault("Nexus Scan", jobs))
                if (null != request)
                {
                    // Get the information
                    FullInfo info0 = request.CreateFullInformation();

                    // Report
                    Console.WriteLine(info0.Recording.JobType);

                    // Start it
                    request.BeginExecute(false);

                    // Go to ZDF
                    LiveModeStatus stat1 = request.SetSource(VCRProfiles.FindSource("Nexus Scan", "ZDF [ZDFvision]"), "localhost:5555");

                    // Report
                    Console.WriteLine("ZDF on");
                    Console.ReadLine();

                    // Get status
                    LiveModeStatus stat2 = request.CreateStatus();

                    // Go to PREMIERE
                    LiveModeStatus stat3 = request.SetSource(VCRProfiles.FindSource("Nexus Scan", "PREMIERE DIREKT [PREMIERE]"), "localhost:5555");

                    // Report
                    Console.WriteLine("PREMIERE on");
                    Console.ReadLine();

                    // Get status
                    LiveModeStatus stat4 = request.CreateStatus();

                    // Stop it
                    request.Stop();

                    // Get the information
                    FullInfo info1 = request.CreateFullInformation();
                }

            // Done
            Console.WriteLine("Done");
            Console.ReadLine();
        }
        /// <summary>
        /// Erzeugt eine Beschreibung der mit diesem Zugriff verbundenen Aufzeichnungen.
        /// </summary>
        /// <param name="finalCall">Es handelt sich hier um den abschliessenden Aufruf.</param>
        /// <returns>Die gewünschte Beschreibung.</returns>
        private FullInfo CreateFullInformation(bool finalCall)
        {
            // Create
            var info = new FullInfo {
                Recording = Representative.Clone(), CanStream = false
            };

            // Complete
            info.EndsAt = info.Recording.EndsAt;

            // Fill depending on the current task
            OnFillInformation(info, finalCall, m_state);

            // Report
            return(info);
        }
 /// <summary>
 /// Ergänzt den aktuellen Zustand des Suchlaufs.
 /// </summary>
 /// <param name="info">Die bereits vorbereitete Informationsstruktur.</param>
 /// <param name="finalCall">Gesetzt, wenn dieser Zustand als Protokoll verwendet wird.</param>
 /// <param name="state">Der zuletzt erhaltene Zustand.</param>
 protected override void OnFillInformation(FullInfo info, bool finalCall, ServerInformation state)
 {
     // Copy current result
     if (state == null)
     {
         info.Recording.TotalSize = 0;
     }
     else if (!state.UpdateProgress.HasValue)
     {
         info.Recording.TotalSize = 0;
     }
     else
     {
         info.Recording.TotalSize = (uint)state.UpdateSourceCount;
     }
 }
 /// <summary>
 /// Ermittelt eine Beschreibung der aktuellen Aufzeichnung.
 /// </summary>
 /// <param name="info">Vorabinformation der Basisklasse.</param>
 /// <param name="finalCall">Gesetzt, wenn das Ergebnis zum Protokolleintrag wird.</param>
 /// <param name="state">Die zuletzt erhaltenen Zustandsinformationen.</param>
 protected override void OnFillInformation(FullInfo info, bool finalCall, ServerInformation state)
 {
     // Just copy the progress
     if (state == null)
     {
         info.Recording.TotalSize = 0;
     }
     else if (!state.ProgramGuideProgress.HasValue)
     {
         info.Recording.TotalSize = 0;
     }
     else
     {
         info.Recording.TotalSize = (uint)state.CurrentProgramGuideItems;
     }
 }
Пример #8
0
        /// <summary>
        /// Ermittelt eine Beschreibung der aktuellen Nutzung.
        /// </summary>
        /// <param name="info">Von der Basisklasse bereits vorbereitete Daten.</param>
        /// <param name="finalCall">Gesetzt, wenn das Ergebnis ein Protokolleintrag werden soll.</param>
        /// <param name="state">Der zuletzt ermittelte Zustand des Aufzeichnungsprozesses.</param>
        protected override void OnFillInformation(FullInfo info, bool finalCall, ServerInformation state)
        {
            // Reset
            info.Recording.TotalSize = 0;

            // Attach to the current state
            if (state == null)
            {
                return;
            }

            // Get the first stream
            if (state.Streams.Count > 0)
            {
                info.Recording.TotalSize = (uint)(state.Streams[0].BytesReceived / 1024);
            }
        }
Пример #9
0
        static void Main5(string[] args)
        {
            // Attach to job manager
            VCRServer  server = new VCRServer(new DirectoryInfo(@"C:\temp\VCR.NET 3.9 Alpha\Jobs"));
            JobManager jobs   = server.JobManager;

            // Create EPG collection
            using (SourceScanRequest request = SourceScanRequest.CreateDefault("Nexus Scan", jobs))
                if (null != request)
                {
                    // Get the information
                    FullInfo info0 = request.CreateFullInformation();

                    // Report
                    Console.WriteLine(info0.Recording.JobType);

                    // Start it
                    request.BeginExecute(false);

                    // Wait for end
                    Console.WriteLine("Updateing...");

                    // Process
                    for (string line; !string.IsNullOrEmpty(line = Console.ReadLine());)
                    {
                        // Get the information
                        FullInfo info2 = request.CreateFullInformation();

                        // Report
                        Console.WriteLine(info2.Recording.TotalSize);
                    }

                    // Stop it
                    request.Stop();

                    // Get the information
                    FullInfo info1 = request.CreateFullInformation();
                }

            // Done
            Console.WriteLine("Done");
            Console.ReadLine();
        }
Пример #10
0
        /// <summary>
        /// Erstellt eine Beschreibung zu einer einzelnen Aufzeichnung auf einem Gerät.
        /// </summary>
        /// <param name="active">Beschreibt die gesamte Aufzeichnung.</param>
        /// <param name="stream">Die zu verwendende Teilaufzeichnung.</param>
        /// <param name="streamIndex">Die laufende Nummer dieses Datenstroms.</param>
        /// <param name="server">Der zugehörige Dienst.</param>
        /// <returns>Die gewünschte Beschreibung.</returns>
        private static IEnumerable <PlanCurrent> Create(FullInfo active, StreamInfo stream, int streamIndex, VCRServer server)
        {
            // Static data
            var recording   = active.Recording;
            var profileName = recording.Source.ProfileName;
            var sizeHint    = GetSizeHint(recording.TotalSize) + " (Gerät)";

            // Process all - beginning with VCR.NET 4.1 there is only one schedule per stream
            foreach (var scheduleInfo in stream.Schedules)
            {
                // Try to locate the context
                var job      = string.IsNullOrEmpty(scheduleInfo.JobUniqueID) ? null : server.JobManager[new Guid(scheduleInfo.JobUniqueID)];
                var schedule = ((job == null) || string.IsNullOrEmpty(scheduleInfo.ScheduleUniqueID)) ? null : job[new Guid(scheduleInfo.ScheduleUniqueID)];

                // Create
                var start   = RoundToSecond(scheduleInfo.StartsAt);
                var end     = RoundToSecond(scheduleInfo.EndsAt);
                var current =
                    new PlanCurrent
                {
                    Identifier     = (schedule == null) ? null : ServerRuntime.GetUniqueWebId(job, schedule),
                    PlanIdentifier = scheduleInfo.ScheduleUniqueID,
                    Files          = scheduleInfo.Files ?? _NoFiles,
                    StreamTarget   = stream.StreamsTo,
                    m_source       = scheduleInfo.Source,
                    ProfileName    = profileName,
                    Name           = scheduleInfo.Name,
                    Duration       = end - start,
                    Index          = streamIndex,
                    SizeHint       = sizeHint,
                    StartTime      = start,
                };

                // Finish
                current.Complete(server);

                // Report
                yield return(current);
            }
        }
Пример #11
0
        static void Main_EPGScan(string[] args)
        {
            // Create the server
            using (VCRServer server = new VCRServer(new DirectoryInfo(@"C:\temp\VCR.NET 3.9 Alpha\Jobs")))
            {
                // Attach to the profile state of interest
                ProfileState state = server.FindProfile("DVB-S2");

                // Report all
                Console.WriteLine(ProgramGuideManager.UpdateEnabled);
                Console.WriteLine(state.ProgramGuide.NextUpdateTime);

                // Create request
                using (ProgramGuideRequest request = state.CreateProgramGuideRequest())
                    if (null != request)
                    {
                        // Manipulate
                        request.Recording.EndsAt = DateTime.UtcNow.AddSeconds(30);

                        // Get the information
                        FullInfo info0 = request.CreateFullInformation();

                        // Start it
                        request.Start();

                        // Wait for end
                        for (; request.IsRunning; Thread.Sleep(2500))
                        {
                            Console.WriteLine("Collecting... {0}", DateTime.Now);
                        }

                        // Get the information
                        FullInfo info1 = request.CreateFullInformation();

                        // Report
                        Console.WriteLine(info1.Recording.TotalSize);
                    }
            }
        }
Пример #12
0
        static void Main3(string[] args)
        {
            // Attach to job manager
            VCRServer  server = new VCRServer(new DirectoryInfo(@"C:\temp\VCR.NET 3.9 Alpha\Jobs"));
            JobManager jobs   = server.JobManager;

            // Get the profile
            Profile nexus = VCRProfiles.FindProfile("Nexus");

            // Find the next recording
            VCRRecordingInfo rec = jobs.FindNextJob(new DateTime(2009, 2, 19, 20, 0, 0), null, nexus);

            if (null != rec)
            {
                if (rec.StartsAt.HasValue)
                {
                    using (RecordingRequest recording = jobs.CreateRecording(rec, rec.StartsAt.Value, nexus))
                    {
                        // Get the information
                        FullInfo info0 = recording.CreateFullInformation();

                        // Start it
                        recording.BeginExecute(false);

                        // Report
                        Console.WriteLine("Recording...");
                        Console.ReadLine();

                        // Get the information
                        FullInfo info1 = recording.CreateFullInformation();
                    }
                }
            }

            // Done
            Console.WriteLine("Done");
            Console.ReadLine();
        }
Пример #13
0
        static void Main_FindRecording(string[] args)
        {
            // Create the server
            using (VCRServer server = new VCRServer(new DirectoryInfo(@"C:\temp\VCR.NET 3.9 Alpha\Jobs")))
            {
                // Attach to the state of a profile
                ProfileState nexus = server.FindProfile("Nexus");

                // Get the next job to execute
                VCRRecordingInfo next = nexus.NextJob;

                // Get recording information for the next jon
                bool incomplete;
                VCRRecordingInfo[] hidden;
                FullInfo           full = nexus.FindNextRecording(DateTime.UtcNow, out incomplete, out hidden);

                // Prepare it
                using (HardwareRequest request = nexus.CreateRecordingRequest(next, DateTime.UtcNow))
                {
                    // Set end time
                    request.Recording.EndsAt = DateTime.UtcNow.AddSeconds(30);

                    // Report
                    Console.WriteLine("Recording {0}", request.Recording.FileName);

                    // Process it
                    request.Start();

                    // Wait
                    while (request.IsRunning)
                    {
                        Thread.Sleep(100);
                    }
                }
            }
        }
Пример #14
0
 public async Task AddInfo(FullInfo item)
 {
     await _context.Informations.InsertOneAsync(item);
 }
Пример #15
0
        /// <summary>
        /// Erstellt eine neue Liste von Beschreibungen für eine aktive Aufzeichnung.
        /// </summary>
        /// <param name="active">Die Daten zur aktiven Aufzeichnung.</param>
        /// <param name="server">Der zugehörige Dienst.</param>
        /// <returns>Die gewünschten Beschreibungen.</returns>
        public static PlanCurrent[] Create(FullInfo active, VCRServer server)
        {
            // Validate
            if (active == null)
            {
                throw new ArgumentNullException(nameof(active));
            }

            // Validate
            var recording = active.Recording;

            if (recording == null)
            {
                throw new ArgumentNullException("recording");
            }

            // Multiple recordings
            var streams = active.Streams;

            if (streams != null)
            {
                if (streams.Count > 0)
                {
                    return(streams.SelectMany((stream, index) => Create(active, stream, index, server)).ToArray());
                }
            }

            // Single recording - typically a task
            var start      = RoundToSecond(active.Recording.PhysicalStart.GetValueOrDefault(DateTime.UtcNow));
            var end        = RoundToSecond(recording.EndsAt);
            var source     = recording.Source;
            var sourceName = source.DisplayName;

            // Create
            var current =
                new PlanCurrent
            {
                PlanIdentifier = recording.ScheduleUniqueID.Value.ToString("N"),
                ProfileName    = source.ProfileName,
                Duration       = end - start,
                Name           = recording.Name,
                m_source       = source,
                StartTime      = start,
                Files          = _NoFiles,
                IsLate         = false,
                Index          = -1,
            };

            // Finish
            if (VCRJob.ProgramGuideName.Equals(sourceName))
            {
                current.SizeHint = $"{recording.TotalSize:N0} Einträge";
            }
            else if (VCRJob.SourceScanName.Equals(sourceName))
            {
                current.SizeHint = $"{recording.TotalSize:N0} Quellen";
            }
            else if (VCRJob.ZappingName.Equals(sourceName))
            {
                current.SizeHint = GetSizeHint(recording.TotalSize);
            }
            else
            {
                current.Complete(server);
            }

            // Report
            return(new[] { current });
        }
Пример #16
0
        static void Main1(string[] args)
        {
            // Attach to job manager
            VCRServer  server = new VCRServer(new DirectoryInfo(@"C:\temp\VCR.NET 3.9 Alpha\Jobs"));
            JobManager jobs   = server.JobManager;

            // Process all profiles
            foreach (Profile profile in VCRProfiles.Profiles)
            {
                // Report
                Console.WriteLine(profile.Name);

                // Start time
                DateTime start = DateTime.UtcNow;

                // Process a bit
                for (int i = 10; i-- > 0;)
                {
                    // Helper data
                    VCRRecordingInfo[] included;
                    bool inComplete;

                    // Find the recording
                    FullInfo         info  = jobs.FindNextRecording(start, profile, out inComplete, out included);
                    VCRRecordingInfo rec   = info.Recording;
                    VCRJob           job   = jobs[rec.JobUniqueID.Value];
                    VCRSchedule      sched = job[rec.ScheduleUniqueID.Value];

                    // Report
                    Console.WriteLine("\t{0} {1} {2} ({3}) {4} {5} {6} {7}", rec.StartsAt.Value.ToLocalTime(), rec.EndsAt.ToLocalTime().TimeOfDay, job.Name, sched.Name, inComplete, included.Length, rec.JobUniqueID, rec.ScheduleUniqueID);

                    // Report
                    foreach (VCRRecordingInfo include in included)
                    {
                        Console.WriteLine("\t\t{0} {1} {2} {3} {4}", include.Source.GetUniqueName(), include.StartsAt.Value.ToLocalTime(), include.EndsAt.ToLocalTime().TimeOfDay, include.JobUniqueID, include.ScheduleUniqueID);
                    }

                    // Report
                    foreach (StreamInfo stream in info.Streams)
                    {
                        foreach (ScheduleInfo schedule in stream.Schedules)
                        {
                            Console.WriteLine("\t\t{0} {1} {2} {3}", schedule.JobUniqueID, schedule.ScheduleUniqueID, schedule.StartsAt.ToLocalTime(), schedule.EndsAt.ToLocalTime().TimeOfDay);
                        }
                    }

                    // Advance
                    start = rec.EndsAt;
                }

                // Helper data
                VCRRecordingInfo[] incDummy;
                bool dummyFlag;

                // Start timer
                Stopwatch timer = Stopwatch.StartNew();

                // Measure
                for (int n = 0; ++n > 0;)
                {
                    // Find the recording
                    jobs.FindNextRecording(DateTime.UtcNow, profile, out dummyFlag, out incDummy);

                    // Get the time
                    TimeSpan delta = timer.Elapsed;
                    if (delta.TotalSeconds >= 5)
                    {
                        // Report
                        Console.WriteLine("{0}ms", delta.TotalMilliseconds / n);

                        // Done
                        break;
                    }
                }
            }

            // Get the profile
            Profile nexus = VCRProfiles.FindProfile("Nexus");

            // Find the next recording
            VCRRecordingInfo rec2 = jobs.FindNextJob(new DateTime(2009, 2, 19, 20, 0, 0), null, nexus);

            if (null != rec2)
            {
                if (rec2.StartsAt.HasValue)
                {
                    using (RecordingRequest recording = jobs.CreateRecording(rec2, rec2.StartsAt.Value, nexus))
                    {
                        // Get the information
                        FullInfo info0 = recording.CreateFullInformation();

#if EXEC
                        // Start it
                        recording.BeginExecute(false);

                        // Report
                        Console.WriteLine("Recording...");
                        Console.ReadLine();

                        // Get the information
                        FullInfo info1 = recording.CreateFullInformation();
#endif
                    }
                }
            }

            // Done
            Console.WriteLine("Done");
            Console.ReadLine();
        }
Пример #17
0
 /// <summary>
 /// Erzeugt eine Beschreibung der mit diesem Zugriff verbundenen Aufzeichnungen.
 /// </summary>
 /// <param name="finalCall">Es handelt sich hier um den abschliessenden Aufruf.</param>
 /// <param name="info">Die bereits erzeugte Beschreibung.</param>
 /// <param name="state">Der aktuelle Zustand.</param>
 protected abstract void OnFillInformation(FullInfo info, bool finalCall, ServerInformation state);