using System.Collections.Generic; using System.Linq; using xCommons.Extensions; using xPushService.Models; namespace xPushService.Extensions { public static class XWebRTCConnectionExtensions { /// /// Validate Connection ... /// /// /// public static bool IsValid (this XWebRTCConnectionDto source) { // var result = false; result = !source .IsNull () && !source.CallerConnectionId .IsNullOrEmpty () && ( source.Callees .HasChild () ? source.Callees .All (callee => !callee.ConnectionId.IsNullOrDefault ()) : true ); // return result; } /// /// Check a ConnectionId is Caller of a connection ... /// /// /// /// public static bool IsCaller ( this XWebRTCConnectionDto source, string connectionId ) { // var result = false; // // Validate Args ... if (!source.IsValid () || connectionId.IsNullOrEmpty () ) { return result; } // result = connectionId .ToNormalString () == source.CallerConnectionId .ToNormalString (); return result; } /// /// Check a ConnectionId is in Callees of a connection ... /// /// /// /// public static bool IsInCallees ( this XWebRTCConnectionDto source, string connectionId ) { // var result = false; // // Validate Args ... if (!source.IsValid () || !source.Callees.HasChild () || connectionId.IsNullOrEmpty () ) { return result; } // result = source.Callees.Any (callee => callee.ConnectionId .ToNormalString () == connectionId .ToNormalString ()); // return result; } /// /// Get Receivers ... /// /// /// public static IReadOnlyList GetReceivers (this XWebRTCConnectionDto source) { // var result = new List (); // // Validate Args ... if (!source.IsValid ()) { return result; } // // Add Caller ... result.Add (source.CallerConnectionId); // // Add Callees ... source.Callees .ToList () .ForEach (callee => { result.Add (callee.ConnectionId); }); // return result; } /// /// Retrieve Callee from Callees ... /// /// /// /// public static XWebRTCCalleeDto GetCallee ( this XWebRTCConnectionDto source, string connectionId ) { // // Validate Args ... if (!source.IsValid () || connectionId.IsNullOrEmpty () ) { return null; } // // Check Connection Id is In Callees or not ... var isInCallees = source.IsInCallees (connectionId); if (!isInCallees) { return null; } // // retrieve result ... var result = source.Callees .FirstOrDefault (callee => callee.ConnectionId .ToNormalString () == connectionId .ToNormalString () ); // // return result ... return result; } } }