/// <summary>
 /// Returns arbitrary list of Transformers object to populate initial data
 /// </summary>
 /// <param name="context">TransformerDBContext</param>
 /// <returns>List<Transformer></returns>
 public static Task <List <Transformer> > getTransformers(TransformerDBContext context)
 {
     return(Task.Run(() => context
                     .TransformerAllegiances
                     .ToList <TransformerAllegiance>()
                     .Select((transformerAllegiance, index) =>
                             Enumerable
                             .Range(1, 5)
                             .Select(item =>
                                     new Transformer {
         AllegianceId = transformerAllegiance.TransformerAllegianceId
         , Name = $"{transformerAllegiance.AllegianceName} - {NumberToWords(item)}"
         , Strength = getRandomNumber(1, 10)
         , Intelligence = getRandomNumber(1, 10)
         , Speed = getRandomNumber(1, 10)
         , Endurance = getRandomNumber(1, 10)
         , Rank = getRandomNumber(1, 10)
         , Courage = getRandomNumber(1, 10)
         , Firepower = getRandomNumber(1, 10)
         , Skill = getRandomNumber(1, 10)
     }
                                     )
                             .ToList <Transformer>()
                             )
                     .SelectMany(items => items)
                     .ToList <Transformer>()
                     ));
 }
        /// <summary>
        /// Generate seed(initial) data for the application
        /// </summary>
        /// <param name="context"></param>
        /// <returns>TransformerDBContext</returns>
        public static Task SeedData(this TransformerDBContext context)
        {
            return(Task.Run(() =>
            {
                if (context.Database.IsSqlServer())
                {
                    context.Database.EnsureCreated();                                 // For MSSQL only
                }
                // To truncate tables and reseed the identities -- only required during odd cases
                //if (context.Transformers.Any())
                //{
                //    context.Transformers.RemoveRange(context.Transformers);
                //    context.TransformerAllegiances.RemoveRange(context.TransformerAllegiances);
                //    context.SaveChanges();
                //    if (context.Database.IsSqlServer()) // For MSSQL only
                //    {
                //        context.Database.ExecuteSqlCommand("DBCC CHECKIDENT('Transformers', RESEED, 0)");
                //        context.Database.ExecuteSqlCommand("DBCC CHECKIDENT('TransformerAllegiances', RESEED, 0)");
                //    }
                //}

                if (!context.TransformerAllegiances.Any())
                {
                    context.TransformerAllegiances.AddRange(TransformersEnums.TransformerAllegiancesList());
                    context.SaveChanges();
                }

                if (!context.Transformers.Any())
                {
                    context.Transformers.AddRange(getTransformers(context).GetAwaiter().GetResult());
                    context.SaveChanges();
                }
            }));
        }