public ActionResult Edit(int id, Session updatedSession)
        {
            SessionModelContainer ctx = new SessionModelContainer();
            Session currentSession    = ctx.Sessions.First(s => s.Id == id);
            String  message           = currentSession.Code + ": ";
            bool    changed           = false;

            currentSession.Code = updatedSession.Code;

            if (currentSession.Title != updatedSession.Title)
            {
                currentSession.Title = updatedSession.Title;
                message += "Title changed to " + updatedSession.Title;
                changed  = true;
            }

            if (currentSession.Room != updatedSession.Room)
            {
                currentSession.Room = updatedSession.Room;
                message            += "Room changed to " + updatedSession.Room;
                changed             = true;
            }

            if (changed)
            {
                // send a push notification message to the device
                string host = "gateway.sandbox.push.apple.com";
                int    port = 2195;

                // load the certificate file
                string                     certPath       = @"c:\temp\teched_APN.p12";
                X509Certificate2           clientCert     = new X509Certificate2(certPath, "Password");
                X509Certificate2Collection certCollection = new X509Certificate2Collection(clientCert);

                // open connection and connect
                TcpClient client    = new TcpClient(host, port);
                SslStream sslStream = new SslStream(client.GetStream(), false);

                try
                {
                    sslStream.AuthenticateAsClient(host, certCollection, SslProtocols.Tls, false);
                }
                catch (AuthenticationException ex)
                {
                    Console.WriteLine(ex.InnerException.ToString());
                    Console.In.Read();
                    client.Close();
                    return(RedirectToAction("Index"));
                }

                MemoryStream memoryStream = new MemoryStream();
                BinaryWriter writer       = new BinaryWriter(memoryStream);

                // construct the message
                writer.Write((byte)0);                                                                // Command
                writer.Write((byte)0);                                                                // First byte of device ID length
                writer.Write((byte)32);                                                               // Device id length

                String deviceId = "e18ac3b8a408e4e972e171a05cdba8f046ff3724ef999093c2b479397b8c40fe"; //Simon's iPhone

                // convert to hex and write to message
                byte[] deviceToken = new byte[deviceId.Length / 2];
                for (int i = 0; i < deviceToken.Length; i++)
                {
                    deviceToken[i] = byte.Parse(deviceId.Substring(i * 2, 2), System.Globalization.NumberStyles.HexNumber);
                }
                writer.Write(deviceToken);

                // construct payload within JSON message framework
                String payload = "{\"aps\":{\"alert\":\"" + message + "\",\"badge\":1}}";

                // write payload data
                writer.Write((byte)0);                  // First byte of payload length
                writer.Write((byte)payload.Length);     // Actual payload length
                byte[] b1 = System.Text.Encoding.UTF8.GetBytes(payload);
                writer.Write(b1);
                writer.Flush();

                // send across the wire
                byte[] array = memoryStream.ToArray();
                sslStream.Write(array);
                sslStream.Flush();

                // Close the client connection.
                client.Close();

                // Success
                Console.WriteLine("Message has been sent!  Please check device.");
                Console.In.Read();
            }

            ctx.SaveChanges();
            return(RedirectToAction("Index"));
        }
Exemplo n.º 2
0
        public ActionResult Reset()
        {
            SessionModelContainer ctx = new SessionModelContainer();

            // First let's get rid of the old data
            List <Session> sessionsToBeDeleted = ctx.Sessions.ToList();

            foreach (Session session in sessionsToBeDeleted)
            {
                session.PrimarySpeakers.Clear();
                session.AssistantSpeakers.Clear();
                ctx.SaveChanges();
                ctx.DeleteObject(session);
            }
            ctx.SaveChanges();

            List <Speaker> speakersToBeDeleted = ctx.Speakers.ToList();

            foreach (Speaker speaker in speakersToBeDeleted)
            {
                ctx.DeleteObject(speaker);
            }
            ctx.SaveChanges();

            List <Timeslot> timeslotsToBeDeleted = ctx.Timeslots.ToList();

            foreach (Timeslot timeslot in timeslotsToBeDeleted)
            {
                ctx.DeleteObject(timeslot);
            }
            ctx.SaveChanges();

            // Create the new sample data for the demo
            Timeslot mySlot = new Timeslot()
            {
                Name = "Timeslot 15", Start = new DateTime(2011, 5, 17, 13, 30, 0), End = new DateTime(2011, 5, 17, 14, 45, 0)
            };

            mySlot.Sessions.Add(new Session()
            {
                Code            = "BOF06-DEV",
                Title           = "How on Earth Do I Keep Up with All the New Technologies That Come Along?",
                PrimarySpeakers = new EntityCollection <Speaker>()
                {
                    new Speaker("Peter Mourfield")
                },
                Room = "B209"
            });

            mySlot.Sessions.Add(new Session()
            {
                Code            = "BOF06-ITP",
                Title           = "When Is Cloud an Option?",
                PrimarySpeakers = new EntityCollection <Speaker>()
                {
                    new Speaker("Dmitry Sotnikov")
                },
                Room = "B210"
            });

            mySlot.Sessions.Add(new Session()
            {
                Code            = "COS315",
                Title           = "Building Windows Phone Applications with the Windows Azure Platform",
                PrimarySpeakers = new EntityCollection <Speaker>()
                {
                    new Speaker("Wade Wegner")
                },
                Room = "C211"
            });

            mySlot.Sessions.Add(new Session()
            {
                Code            = "DBI211",
                Title           = "What’s New in Microsoft SQL Server Code-Named Denali for Reporting Services",
                PrimarySpeakers = new EntityCollection <Speaker>()
                {
                    new Speaker("Ariel Netz")
                },
                Room = "C203"
            });

            mySlot.Sessions.Add(new Session()
            {
                Code            = "DBI304",
                Title           = "What's New in Manageability for Microsoft SQL Server Code- Named Denali",
                PrimarySpeakers = new EntityCollection <Speaker>()
                {
                    new Speaker("Denny Cherry")
                },
                Room = "B207"
            });

            mySlot.Sessions.Add(new Session()
            {
                Code            = "DBI323",
                Title           = "Using Cloud (Microsoft SQL Azure) and PowerPivot to Deliver Data and Self-Service BI at Microsoft",
                PrimarySpeakers = new EntityCollection <Speaker>()
                {
                    new Speaker("Diana Putnam")
                },
                Room = "C208"
            });

            mySlot.Sessions.Add(new Session()
            {
                Code            = "DEV209",
                Title           = "From Zero to Silverlight in 75 Minutes",
                PrimarySpeakers = new EntityCollection <Speaker>()
                {
                    new Speaker("Paul Sheriff")
                },
                Room = "C305"
            });

            mySlot.Sessions.Add(new Session()
            {
                Code            = "DEV304",
                Title           = "Advanced Programming Patterns for Windows 7",
                PrimarySpeakers = new EntityCollection <Speaker>()
                {
                    new Speaker("Kate Gregory")
                },
                Room = "B103"
            });

            mySlot.Sessions.Add(new Session()
            {
                Code            = "DEV306",
                Title           = "Branching and Merging for Parallel Development",
                PrimarySpeakers = new EntityCollection <Speaker>()
                {
                    new Speaker("Jeff Levinson")
                },
                Room = "B101"
            });

            mySlot.Sessions.Add(new Session()
            {
                Code            = "DEV345",
                Title           = "Writing an ASP.NET MVC View Engine",
                PrimarySpeakers = new EntityCollection <Speaker>()
                {
                    new Speaker("Louis DeJardin")
                },
                Room = "B211"
            });

            mySlot.Sessions.Add(new Session()
            {
                Code            = "DEV355",
                Title           = "Orchard 1.1: Build, Customize, Extend, Ship",
                PrimarySpeakers = new EntityCollection <Speaker>()
                {
                    new Speaker("Sebastien Ros")
                },
                Room = "C205"
            });

            mySlot.Sessions.Add(new Session()
            {
                Code            = "DPR209",
                Title           = "Fundamental Design Principles for UI Developers",
                PrimarySpeakers = new EntityCollection <Speaker>()
                {
                    new Speaker("Billy Hollis")
                },
                Room = "B406"
            });

            mySlot.Sessions.Add(new Session()
            {
                Code            = "DPR304",
                Title           = "My Customers Are Using iPhone/Android, but I'm a Microsoft Guy. Now What?",
                PrimarySpeakers = new EntityCollection <Speaker>()
                {
                    new Speaker("Simon Guest")
                },
                Room = "Georgia Ballroom 1"
            });

            mySlot.Sessions.Add(new Session()
            {
                Code            = "EXL307",
                Title           = "Load Balancing with Microsoft Exchange Server 2010",
                PrimarySpeakers = new EntityCollection <Speaker>()
                {
                    new Speaker("Andrew Ehrensing")
                },
                Room = "B206"
            });

            mySlot.Sessions.Add(new Session()
            {
                Code            = "MID201",
                Title           = "An Overview of the Microsoft Middleware Strategy",
                PrimarySpeakers = new EntityCollection <Speaker>()
                {
                    new Speaker("Robert Dimpsey")
                },
                Room = "B314"
            });

            mySlot.Sessions.Add(new Session()
            {
                Code            = "OSP213",
                Title           = "What Do Existing BPOS Customers Need to Do to Prepare for Microsoft Office 365?",
                PrimarySpeakers = new EntityCollection <Speaker>()
                {
                    new Speaker("Erik Ashby")
                },
                Room = "B314"
            });

            // create context and add
            ctx.AddToTimeslots(mySlot);
            ctx.SaveChanges();

            ViewBag.Message = "Sample data reset and loaded.";

            return(View("Index"));
        }