public override void Up()
        {
            using (var database = new VirtualNumberContext())
            {
                // Add default states
                database.States.Add(new Free());
                database.States.Add(new InUse());
                database.States.Add(new Expired());

                // Add default purposes
                database.Purposes.Add(new FreeJobApplication());
                database.Purposes.Add(new PaidJobApplication());

                // Add babajob user types
                database.BabajobUserTypes.Add(new BabajobUserType
                {
                    UserTypeId = 1,
                    UserType   = "Employer"
                });

                database.BabajobUserTypes.Add(new BabajobUserType
                {
                    UserTypeId = 2,
                    UserType   = "JobSeeker"
                });

                // Add exotel as a default provider
                database.Providers.Add(new Provider(1, "Exotel"));

                database.SaveChanges();
            }
        }
        public void TearDown()
        {
            using (var context = new VirtualNumberContext())
            {
                context.Database.ExecuteSqlCommand(
                    "delete from virtualnumbers.virtualnumberassociations");

                context.Database.ExecuteSqlCommand(
                    "delete from virtualnumbers.virtualnumbers");

                context.Database.ExecuteSqlCommand(
                    "delete from virtualnumbers.phonenumbers");

                context.Database.ExecuteSqlCommand(
                    "delete from virtualnumbers.users");
            }
        }
        public MigrateModule()
        {
            Post["/Database/Migrate"] = _ =>
            {
                Database.SetInitializer(
                    new MigrateDatabaseToLatestVersion
                    <VirtualNumberContext, Configuration>());

                using (var databaseContext = new VirtualNumberContext())
                {
                    var databaseStatus = databaseContext.Purposes.Any();

                    if (databaseStatus)
                    {
                        return(Response.AsText("Migration successful."));
                    }

                    return(Response.AsText("Something went wrong with the migrations."));
                }
            };
        }
        public void Setup()
        {
            _virtualNumberAssociationService = new VirtualNumberAssociationService(
                new Repository <VirtualNumberAssociation, VirtualNumberContext>(),
                new Repository <VirtualNumber, VirtualNumberContext>(),
                new Repository <User, VirtualNumberContext>());

            using (var context = new VirtualNumberContext())
            {
                context.VirtualNumbers.Add(new VirtualNumber
                {
                    PurposeId          = 1,
                    ProviderId         = 1,
                    VirtualPhoneNumber = new PhoneNumber("9722244076")
                });

                context.VirtualNumbers.Add(new VirtualNumber
                {
                    PurposeId          = 1,
                    ProviderId         = 1,
                    VirtualPhoneNumber = new PhoneNumber("9722244077")
                });

                context.VirtualNumbers.Add(new VirtualNumber
                {
                    PurposeId          = 2,
                    ProviderId         = 1,
                    VirtualPhoneNumber = new PhoneNumber("9722244078")
                });

                context.VirtualNumbers.Add(new VirtualNumber
                {
                    PurposeId          = 2,
                    ProviderId         = 1,
                    VirtualPhoneNumber = new PhoneNumber("9722244079")
                });

                context.SaveChanges();
            }
        }