public override void ExecutePropertySetBase(
            AudibleMediaItem @this,
            object value)
        {
            if (value.GetType() != typeof(TProperty))
            {
                throw new NotSupportedException(
                          $"{value.GetType().FormatName().SQuote()} is not supported. " +
                          $"Expected type was {typeof(TProperty).FormatName().SQuote()}.");
            }

            ExecutePropertySet(
                @this,
                (TProperty)value);
        }
        public void ExecutePropertySet(
            AudibleMediaItem @this,
            TProperty value)
        {
            var lambda = PropertyExpression.Body.As <MemberExpression>();

            var param = Expression.Parameter(value.GetType(), "value");

            var assignment = Expression.Assign(lambda, param);


            var setterExpression = Expression.Lambda <
                Action <AudibleMediaItem, TProperty> >(
                assignment,
                PropertyExpression.Parameters[0],
                param);

            var action = setterExpression.Compile();

            action(@this, value);
        }
Exemple #3
0
 public abstract void ExecutePropertySetBase(
     AudibleMediaItem @this,
     object value);
        public static void Analyze(
            AudibleMediaItem metadata)
        {
            var airDate = metadata
                          .ReleaseDate
                          .ToString("MMMM d, yyyy");

            var airDate2 = metadata
                           .ReleaseDate
                           .ToString("MMMM DD, yyyy");

            var title = metadata.Title;

            const string opieAndAnthony = "Opie & Anthony";
            const string ronAndFez      = "Ron & Fez";

            if (title.Contains(opieAndAnthony))
            {
                Debug.Write("[O&A] ");
                title = title
                        .Replace(opieAndAnthony, "")
                        .Trim(' ', ',');
            }
            else if (title.Contains(ronAndFez))
            {
                Debug.Write("[O&A] ");
                title = title
                        .Replace(ronAndFez, "")
                        .Trim(' ', ',');
            }
            else
            {
                Debug.Write("[???] ");
            }
            if (title.Contains(airDate))
            {
                Debug.Write(airDate);

                title = title
                        .Replace(airDate, "")
                        .Trim(' ', ',');
            }
            else if (title.Contains(airDate2))
            {
                Debug.Write(airDate);

                title = title
                        .Replace(airDate, "")
                        .Trim(' ', ',');
            }
            else
            {
            }
            var guestStr = title.Replace("and", ",");

            var guestsArr = guestStr.Split(',', ';');

            Debug.WriteLine("");

            var optionsBuilder = new DbContextOptionsBuilder <CoreContext>();

            optionsBuilder.UseSqlServer(
                "Server=(localdb)\\mssqllocaldb;Database=opieandanthonylive8;Trusted_Connection=true;MultipleActiveResultSets=true");

            using (var context = new CoreContext(optionsBuilder.Options))
            {
                foreach (var guestFullName in guestsArr)
                {
                    var matchedGuest = guests
                                       .FirstOrDefault(t => t.FullName == guestFullName);

                    if (matchedGuest == null)
                    {
                        matchedGuest = new Guest(guestFullName);
                        context.Guests.Add(matchedGuest);

                        context.SaveChanges();
                    }
                    //context.GuestAppearances
                    //  .Add(new GuestAppearance(
                    //    matchedGuest,
                    //    new ShowMediaEntry()
                    //    {

                    //    }
                    //    ))
                    Debug.WriteLine($"    Guest Appearanace: {matchedGuest.GuestID}: {matchedGuest.FullName}");
                }
            }

            //yield return new ShowMetadata()
            //{

            //}
            //Debug.WriteLine(title);
        }