Пример #1
0
        // POST api/phones
        public void Post(NewPhone newPhone)
        {
            System.Diagnostics.Trace.WriteLine(string.Format("Adding {0}", newPhone));

            Manufacturer manufacturer = _db.Manufacturers.GetById(newPhone.ManufacturerId);
            if (manufacturer == null)
                throw new HttpResponseException(HttpStatusCode.NotFound);

            Phone phone = new Phone {
                Manufacturer = manufacturer,
                Model = newPhone.Model,
                Description = newPhone.Description,
                Price = newPhone.Price,
                ImageFile = newPhone.ImageFile
            };

            var plans = _db.Plans.GetAll();
            foreach (Plan plan in plans) {
                if (newPhone.PlanIds.Contains(plan.PlanId)) {
                    phone.Plans.Add(plan);
                }
            }

            var apps = _db.Apps.GetAll();
            foreach (App app in apps) {
                if (newPhone.AppIds.Contains(app.AppId)) {
                    phone.Apps.Add(app);
                }
            }

            _db.Phones.Add(phone);
            _db.Commit();

            System.Diagnostics.Trace.WriteLine(string.Format("Added {0}", phone));
        }
Пример #2
0
        public static void Seed(PhoneDb context)
        {
            System.Diagnostics.Trace.WriteLine("Seeding phone values");

            //Manufacurers
            var mercury = new Manufacturer { ManufacturerName = "Mercury" };
            var venus = new Manufacturer { ManufacturerName = "Venus" };
            var mars = new Manufacturer { ManufacturerName = "Mars" };
            var jupiter = new Manufacturer { ManufacturerName = "Jupiter" };
            var saturn = new Manufacturer { ManufacturerName = "Saturn" };
            var uranus = new Manufacturer { ManufacturerName = "Uranus" };
            var pluto = new Manufacturer { ManufacturerName = "Pluto" };
            context.Manufacturers.AddOrUpdate(m => m.ManufacturerName, mercury, venus, mars, jupiter, saturn, uranus);

            //Phones
            var global1000 = new Phone { Manufacturer = pluto, Model = "Global 1000", Price = 25.0m, Description = @"Capture more of the moment with a 41 megapixel camera sensor, Full HD video and Pluto's Great Recording for incredible sound quality.", ImageFile = "phone01.jpg" };
            var android200 = new Phone { Manufacturer = saturn, Model = "Android 200", Price = 75.0m, Description = @"Saturn's Android 200 sets the gold standard among Android phones.", ImageFile = "phone02.jpg" };
            var swift4 = new Phone { Manufacturer = mercury, Model = "Swift 4", Price = 175.0m, Description = @"The Swift 4 is Mercury's upgrade on the revolutionary Swift.  It features the touch-screen user interface that has set the standard in consumer smart phones.", ImageFile = "phone03.png" };
            var swift5 = new Phone { Manufacturer = mercury, Model = "Swift 5", Price = 50.0m, Description = @"Swifts's new top offering.  The Swift 5 comes with Merlin and a wealth of productivity apps making it the choice of todays savvy consumer.", ImageFile = "phone04.png" };
            var galaxy = new Phone { Manufacturer = venus, Model = "Universe", Price = 150.0m, Description = @"The wildly popular Universe features its iconic large screen and a wealth of apps from the legions of Android developers", ImageFile = "phone02.jpg" };
            var axis8 = new Phone { Manufacturer = uranus, Model = "Axis 8", Price = 125.0m, Description = @"The Axis 8 phone is Uranus's first entry into the smart phone market that is based on its new Cosmo-style user interface", ImageFile = "phone01.jpg" };
            var lgSlim = new Phone { Manufacturer = mars, Model = "Slimline", Price = 75.0m, Description = @"The original flip phone with its simple-to-use interface.", ImageFile = "phone01.jpg" };
            var starLight = new Phone { Manufacturer = jupiter, Model = "Star Light", Price = 175.0m, Description = @"Jupiters's top of the line phone.", ImageFile = "phone02.jpg" };
            context.Phones.AddOrUpdate(p => p.Model, global1000, android200, swift4, swift5, galaxy, axis8, lgSlim, starLight);
            context.SaveChanges();

            //Plans
            var plan1 = new Plan { PlanName = "Family Text and Talk", MonthlyCost = 100.0m, DataMegabytes = 1000, VoiceMinutes = 500, Phones = new List<Phone> { global1000, swift4, galaxy, axis8 } };
            var plan2 = new Plan { PlanName = "Yappers and Texters", MonthlyCost = 50.0m, DataMegabytes = 500, VoiceMinutes = 250, Phones = new List<Phone> { global1000, swift4, swift5, starLight } };
            var plan3 = new Plan { PlanName = "Teenage Text Special", MonthlyCost = 50.0m, DataMegabytes = 1000, VoiceMinutes = 150, Phones = new List<Phone> { android200, swift4, swift5, galaxy, starLight } };
            var plan4 = new Plan { PlanName = "Frugal Family", MonthlyCost = 25.0m, DataMegabytes = 250, VoiceMinutes = 250, Phones = new List<Phone> { global1000, swift4, axis8, lgSlim } };
            context.Plans.AddOrUpdate(p => p.PlanName, plan1, plan2, plan3, plan4);
            context.SaveChanges();

            //Apps
            var angryBirds = new App { Name = "Angry Birds", Price = 2.99m ,Description = "Get the evil pigs by launching the virtuous birds!", Phones = new List<Phone> { global1000, swift4, galaxy, axis8, lgSlim } };
            var tweetCaster = new App { Name = "Tweet Caster", Price = 1.99m, Description = "The top of the line twitter client.", Phones = new List<Phone> { global1000, starLight, galaxy, axis8 } };
            var calendar = new App { Name = "Calendar", Price = 0m, Description = "Keeps track of your appointments and more", Phones = new List<Phone> { global1000, starLight, swift4, galaxy, lgSlim } };
            var email = new App { Name = "Email", Price = 0m, Description = "The best smartphone email client around.", Phones = new List<Phone> { global1000, swift4, galaxy, axis8, starLight } };
            context.Apps.AddOrUpdate(a => a.Name, angryBirds, tweetCaster, calendar, email);
            context.SaveChanges();

            //People
            var howard = new Person { FullName = "Pinsley, Howard", ContactPhoneNumber = "914-424-0430", EmailAddress = "*****@*****.**" };
            var david = new Person { FullName = "Pinsley, David", ContactPhoneNumber = "914-424-0431", EmailAddress = "*****@*****.**" };
            context.People.AddOrUpdate(p => p.FullName, howard, david);
            context.SaveChanges();

            //PhoneInstance
            var howardPhone1 = new PhoneInstance { Phone = global1000, PhonePlan = plan1, SerialNumber = "1XGY765-FDRFG-34JFKEK", PhoneNumber = "111-424-0430", Apps = new List<App>{ email, calendar}};
            var howardPhone2 = new PhoneInstance { Phone = starLight, PhonePlan = plan2, SerialNumber = "2XGY765-FDRFG-34JFKEK", PhoneNumber = "222-424-0430", Apps = new List<App> { email, tweetCaster } };
            var davidPhone1 = new PhoneInstance { Phone = swift4, PhonePlan = plan3, SerialNumber = "3XGY765-FDRFG-34JFKEK", PhoneNumber = "333-424-0430", Apps = new List<App> { email, angryBirds } };
            var davidPhone2 = new PhoneInstance { Phone = lgSlim, PhonePlan = plan4, SerialNumber = "4XGY765-FDRFG-34JFKEK", PhoneNumber = "444-424-0430", Apps = new List<App> { angryBirds, calendar } };
            context.PhoneInstances.AddOrUpdate(pi => pi.SerialNumber, howardPhone1, howardPhone2, davidPhone1, davidPhone2);
            context.SaveChanges();

            //Accounts
            if (context.Accounts.Count() == 0) {
                var howardAcct = new Account { AccountHolder = howard };
                context.Accounts.Add(howardAcct);
                howardAcct.Phones.Add(howardPhone1);
                howardAcct.Phones.Add(howardPhone2);

                var davidAcct = new Account { AccountHolder = david };
                context.Accounts.Add(davidAcct);
                davidAcct.Phones.Add(davidPhone1);
                davidAcct.Phones.Add(davidPhone2);

                context.SaveChanges();
            }

            //Accessories

            var blueCase = new PhoneCase { Color = "Blue", Description = "Blue phone case", Price = 25.0m, Phones = new List<Phone> { global1000, swift4, galaxy, axis8 } };
            var redCase = new PhoneCase { Color = "Red", Description = "Red phone case", Price = 25.0m, Phones = new List<Phone> { global1000, swift4, galaxy, axis8, android200, swift5, starLight } };
            var greenCase = new PhoneCase { Color = "Green", Description = "Green phone case", Price = 30.0m, Phones = new List<Phone> { global1000, swift4, galaxy, axis8, android200, lgSlim } };
            var longCarCharger = new PhoneCharger { ChargerType = ChargerType.Car, CordLength = 5, Description = "Long Phone Charger", Price = 40.0m, Phones = new List<Phone> { global1000, swift4, galaxy, axis8, android200, lgSlim } };
            context.Accessories.AddOrUpdate(a => a.Description, blueCase, redCase, greenCase, longCarCharger);
            context.SaveChanges();

            System.Diagnostics.Trace.WriteLine("Seeded phone values");
        }