Пример #1
0
        private void PopulateActivities()
        {
            ActionsPanel.Visibility = Visibility.Visible;
            ActivityType.Visibility = Visibility.Visible;

            ActivitySummaries.Add(new ActivitySummary
            {
                FullName = "Justin",
                ProfileMediumFormatted = "../Assets/Avatars/justin.jpg",
                TypeImage        = "",
                Name             = "Morning Ride",
                StartDate        = "34 minutes ago",
                Distance         = 12.3,
                ElevationGain    = 37,
                CommentCount     = 1,
                KudosCount       = 0,
                AchievementCount = 0
            });

            ActivitySummaries.Add(new ActivitySummary
            {
                FullName = "Bart",
                ProfileMediumFormatted = "../Assets/Avatars/bart.jpg",
                TypeImage        = "",
                Name             = "Morning Ride",
                StartDate        = "6 hours ago",
                Distance         = 16.1,
                ElevationGain    = 44,
                CommentCount     = 3,
                KudosCount       = 5,
                AchievementCount = 3
            });

            ActivitySummaries.Add(new ActivitySummary
            {
                FullName = "Glenn",
                ProfileMediumFormatted = "../Assets/Avatars/glenn.jpg",
                TypeImage        = "",
                Name             = "Night Ride",
                StartDate        = "1 day ago",
                Distance         = 72.9,
                ElevationGain    = 121,
                CommentCount     = 13,
                KudosCount       = 27,
                AchievementCount = 51
            });

            ActivitySummaries.Add(new ActivitySummary
            {
                FullName = "Glenn",
                ProfileMediumFormatted = "../Assets/Avatars/glenn.jpg",
                TypeImage        = "",
                Name             = "Night Ride",
                StartDate        = "1 day ago",
                Distance         = 2.9,
                ElevationGain    = 77,
                CommentCount     = 2,
                KudosCount       = 33,
                AchievementCount = 0
            });

            ActivitySummaries.Add(new ActivitySummary
            {
                FullName = "Bart",
                ProfileMediumFormatted = "../Assets/Avatars/bart.jpg",
                TypeImage        = "",
                Name             = "Night Ride",
                StartDate        = "1 day ago",
                Distance         = 67.8,
                ElevationGain    = 99,
                CommentCount     = 12,
                KudosCount       = 7,
                AchievementCount = 0
            });

            ActivitySummaries.Add(new ActivitySummary
            {
                FullName = "Justin",
                ProfileMediumFormatted = "../Assets/Avatars/justin.jpg",
                TypeImage        = "",
                Name             = "Night Ride",
                StartDate        = "2 days ago",
                Distance         = 7.9,
                ElevationGain    = 23,
                CommentCount     = 55,
                KudosCount       = 12,
                AchievementCount = 0
            });

            ActivitySummaries.Add(new ActivitySummary
            {
                FullName = "Bart",
                ProfileMediumFormatted = "../Assets/Avatars/bart.jpg",
                TypeImage        = "",
                Name             = "Night Ride",
                StartDate        = "4 days ago",
                Distance         = 143.8,
                ElevationGain    = 212,
                CommentCount     = 1,
                KudosCount       = 3,
                AchievementCount = 121
            });

            ActivitySummaries.Add(new ActivitySummary
            {
                FullName = "Glenn",
                ProfileMediumFormatted = "../Assets/Avatars/glenn.jpg",
                TypeImage        = "",
                Name             = "Afternoon Ride",
                StartDate        = "1 day ago",
                Distance         = 0.6,
                ElevationGain    = 12,
                CommentCount     = 0,
                KudosCount       = 1,
                AchievementCount = 0
            });

            ActivitySummaries.Add(new ActivitySummary
            {
                FullName = "Glenn",
                ProfileMediumFormatted = "../Assets/Avatars/glenn.jpg",
                TypeImage        = "",
                Name             = "Night Ride",
                StartDate        = "1 day ago",
                Distance         = 12,
                ElevationGain    = 50,
                CommentCount     = 2,
                KudosCount       = 7,
                AchievementCount = 2
            });
        }
        public IHttpActionResult Post(ActivitySummaries value)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (value.source == null || value.humanId == null)
            {
                return(BadRequest());
            }

            using (var dbContextTransaction = db.Database.BeginTransaction())
            {
                try
                {
                    tSourceService sourceServiceObj = db.tSourceServices
                                                      .SingleOrDefault(x => x.ServiceName == value.source && x.SourceID == 5);

                    if (sourceServiceObj == null)
                    {
                        sourceServiceObj             = new tSourceService();
                        sourceServiceObj.ServiceName = value.source;
                        sourceServiceObj.TypeID      = 2; //Wellness
                        sourceServiceObj.SourceID    = 5; //HumanAPI

                        db.tSourceServices.Add(sourceServiceObj);
                    }

                    tUserSourceService userSourceServiceObj = null;

                    //Get credentials
                    tCredential credentialObj =
                        db.tCredentials.SingleOrDefault(x => x.SourceID == 5 && x.SourceUserID == value.humanId &&
                                                        x.SystemStatusID == 1);
                    if (credentialObj == null)
                    {
                        throw new NoUserCredentialsException("Unable to find any matching HAPI user credentials");
                    }
                    else
                    {
                        userSourceServiceObj = db.tUserSourceServices.SingleOrDefault(
                            x => x.SourceServiceID == sourceServiceObj.ID &&
                            x.CredentialID == credentialObj.ID &&
                            x.SystemStatusID == 1);

                        if (userSourceServiceObj == null)
                        {
                            userSourceServiceObj = new tUserSourceService();
                            userSourceServiceObj.SourceServiceID     = sourceServiceObj.ID;
                            userSourceServiceObj.UserID              = credentialObj.UserID;
                            userSourceServiceObj.CredentialID        = credentialObj.ID;
                            userSourceServiceObj.ConnectedOnDateTime = DateTime.Now;
                            userSourceServiceObj.LastSyncDateTime    = DateTime.Now;
                            userSourceServiceObj.LatestDateTime      = value.updatedAt;
                            userSourceServiceObj.StatusID            = 3; //connected
                            userSourceServiceObj.SystemStatusID      = 1; //valid
                            userSourceServiceObj.tCredential         = credentialObj;

                            db.tUserSourceServices.Add(userSourceServiceObj);
                        }
                        else
                        {
                            //update LatestDateTime to the most recent datetime
                            if (userSourceServiceObj.LatestDateTime == null ||
                                userSourceServiceObj.LatestDateTime < value.updatedAt)
                            {
                                userSourceServiceObj.LatestDateTime = value.updatedAt;
                            }
                        }
                    }

                    tUserActivity userActivity = null;
                    userActivity = db.tUserActivities
                                   .SingleOrDefault(x => x.SourceObjectID == value.id);

                    if (userActivity == null)
                    {
                        userActivity                     = new tUserActivity();
                        userActivity.UserID              = credentialObj.UserID;
                        userActivity.SourceObjectID      = value.id;
                        userActivity.UserSourceServiceID = sourceServiceObj.ID;
                        userActivity.ActivityID          = 7; //General Activity
                        userActivity.StartDateTime       = value.date;
                        userActivity.EndDateTime         = value.date;
                        userActivity.Duration            = value.duration;
                        if (value.duration != null)
                        {
                            userActivity.DurationUOMID = 8;
                        }
                        userActivity.Distance = value.distance;
                        if (value.distance != null)
                        {
                            userActivity.DistanceUOMID = 9;
                        }
                        userActivity.Steps = value.steps;
                        userActivity.VigorousActivityMin  = value.vigorous;
                        userActivity.ModerateActivityMin  = value.moderate;
                        userActivity.LightActivityMin     = value.light;
                        userActivity.SedentaryActivityMin = value.sedentary;
                        userActivity.Calories             = value.calories;
                        userActivity.SystemStatusID       = 1;
                        userActivity.tUserSourceService   = userSourceServiceObj;

                        db.tUserActivities.Add(userActivity);
                    }
                    else
                    {
                        userActivity.StartDateTime = value.date;
                        userActivity.EndDateTime   = value.date;
                        userActivity.Duration      = value.duration;
                        if (value.duration != null)
                        {
                            userActivity.DurationUOMID = 8;
                        }
                        userActivity.Distance = value.distance;
                        if (value.distance != null)
                        {
                            userActivity.DistanceUOMID = 9;
                        }
                        userActivity.Steps = value.steps;
                        userActivity.VigorousActivityMin  = value.vigorous;
                        userActivity.ModerateActivityMin  = value.moderate;
                        userActivity.LightActivityMin     = value.light;
                        userActivity.SedentaryActivityMin = value.sedentary;
                        userActivity.Calories             = value.calories;
                        userActivity.tUserSourceService   = userSourceServiceObj;
                        userActivity.LastUpdatedDateTime  = DateTime.Now;
                    }

                    db.SaveChanges();

                    dbContextTransaction.Commit();

                    return(Ok(userActivity));
                }
                catch (Exception ex)
                {
                    dbContextTransaction.Rollback();

                    //Insert Error Log
                    tUserDataErrLog userErrorLog = new tUserDataErrLog();

                    userErrorLog.ErrTypeID   = (int)ErrorLogging.enumErrorType.Application;
                    userErrorLog.ErrSourceID = (int)AuditLogging.enumApplication.SFCBAL;
                    userErrorLog.Code        = ex.HResult.ToString();
                    userErrorLog.Description = ex.Message;
                    userErrorLog.Trace       = ex.StackTrace;

                    dbErr.tUserDataErrLogs.Add(userErrorLog);
                    dbErr.SaveChanges();

                    string ErrMsg = "An error occured and we have logged the error. Please try again later.";

                    Exception Err = new Exception(ErrMsg, ex);

                    return(InternalServerError(Err));
                }
            }
        }