コード例 #1
0
        public async Task <bool> Post(string beerId, string upc)
        {
            var properties = new Dictionary <string, string>();

            properties.Add("BeerId", beerId);
            properties.Add("UPC", upc);
            telemetryClient.TrackEvent("SaveBarcode", properties);

            var beer = context.Beers.FirstOrDefault(x => x.Id == beerId);

            if (beer == null)
            {
                return(false);
            }

            try
            {
                beer.Upc = upc;
                context.Beers.Add(beer);
                context.SaveChanges();
                return(true);
            }
            catch (Exception ex)
            {
                telemetryClient.TrackException(ex);
                return(false);
            }
        }
コード例 #2
0
 public HttpResponseMessage Post(UserPrivateData privateData)
 {
     try
     {
         BeerDrinkinContext context = new BeerDrinkinContext();
         var old = context.UserPrivateItems.SingleOrDefault(f => f.Id == privateData.Id);
         if (old != null)
         {
             old.DateOfBirth = privateData.DateOfBirth;
         }
         else
         {
             context.UserPrivateItems.Add(privateData);
         }
         context.SaveChanges();
         return(this.Request.CreateResponse(HttpStatusCode.OK));
     }
     catch { }
     return(this.Request.CreateResponse(HttpStatusCode.Conflict,
                                        "Something wrong"));
 }
コード例 #3
0
        public override ProviderCredentials CreateCredentials(ClaimsIdentity claimsIdentity)
        {
            // grab any information from claimsIdentity which you would like to store

            // If you need the access token for use with the graph APIs, you can use the following
            //string providerAccessToken = claimsIdentity.GetClaimValueOrNull(ServiceClaimTypes.ProviderAccessToken);

            // use the access token with HttpClient to get graph information to store

            var accessToken  = string.Empty;
            var emailAddress = string.Empty;

            foreach (var claim in claimsIdentity.Claims)
            {
                if (claim.Type == "Zumo:ProviderAccessToken")
                {
                    accessToken = (string)claim.Value;
                }

                if (claim.Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress")
                {
                    emailAddress = (string)claim.Value;
                }
            }

            if (string.IsNullOrEmpty(accessToken))
            {
                return(null);
            }



            var     client = new FacebookClient(accessToken);
            dynamic user   = client.Get("me");

            DateTime dateOfBirth;

            DateTime.TryParse(user.birthday, out dateOfBirth);

            //Keeping userItem for the moment but may well kill it. I was going to seperate userItem into public info and accountItem into public
            var userItem = new UserItem
            {
                Id = user.id,
            };

            var accountItem = new AccountItem
            {
                Id          = userItem.Id,
                Email       = emailAddress,
                FirstName   = user.first_name,
                LastName    = user.last_name,
                IsMale      = user.gender == "male",
                DateOfBirth = dateOfBirth
            };

            accountItem.AvatarUrl = $"https://graph.facebook.com/{userItem.Id}/picture?type=large";

            var context = new BeerDrinkinContext();

            if (context.UserItems.FirstOrDefault(x => x.Id == userItem.Id) != null)
            {
                return(base.CreateCredentials(claimsIdentity));
            }

            context.AccountItems.Add(accountItem);
            context.UserItems.Add(userItem);
            context.SaveChanges();

            return(base.CreateCredentials(claimsIdentity));
        }