public void SaveActivityForNewUserJoinedTeam(TeamMemberRequest teamMemberRequest, User user,int currentUserId,int teamId)
        {
            var activity = new Activity { CreatedByID = currentUserId, TeamID = teamId };
            activity.ObjectID = user.ID;
            activity.ObjectType = "User";
            activity.ActivityDesc = "Joined team " + teamMemberRequest.Team.Name;
            activity.NewState = user.FirstName;

            var result = repo.SaveActivity(activity);
            if (!result.Status)
            {
                var log = new Logger("Email");
                log.Error(result);
            }
        }
        public ActivityVM GetActivityVM(Activity activity)
        {
            var activityVM = new ActivityVM() { Id = activity.ID, Author = activity.User.FirstName };
            activityVM.CreatedDate = activity.CreatedDate.ToJSONFriendlyDateTime();
            if (activity.ActivityDesc.ToUpper() == "COMMENTED")
            {
                activityVM.Activity = activity.ActivityDesc+" on";
                activityVM.ObjectTite = activity.OldState;
                var seoFriendlyIssueTitle = activity.OldState.Replace(" ", "-").Replace("/","-");
                if (seoFriendlyIssueTitle.Length > 40)
                    seoFriendlyIssueTitle = seoFriendlyIssueTitle.Substring(0, 39);

                activityVM.ObjectURL = String.Format("{0}issuecomment/{1}/"+seoFriendlyIssueTitle, SiteBaseURL, activity.ObjectID);
            }
            return activityVM;
        }
        public int Save(ActivityDto activity)
        {
            using (var db = new TeamEntitiesConn())
            {
                var a = new Activity
                {
                    OldState = activity.OldState,
                    NewState = activity.NewState,
                    ObjectID = activity.ObjectId,
                    ObjectType = activity.ObjectType,
                    ActivityDesc = activity.Description,
                    ObjectTitle = activity.ObjectTite,
                    CreatedByID = activity.Actor.Id,
                    TeamID = activity.TeamId,
                    CreatedDate = DateTime.Now
                };

                db.Activities.Add(a);
                db.SaveChanges();
                return a.ID;
            }
        }
 public ActivityVM GetActivityVM(Activity activity)
 {
     var activityVM = new ActivityVM() { Id = activity.ID, Author = activity.User.FirstName, CreatedDate = activity.CreatedDate.ToJSONFriendlyDateTime() };
     if (activity.ActivityDesc.ToUpper() == "CREATED")
     {
         activityVM.Activity = activity.ActivityDesc;
         activityVM.ObjectTite = activity.NewState;
     }
     else if (activity.ActivityDesc.ToUpper() == "CHANGED STATUS")
     {
         activityVM.Activity = "changed status of";
         activityVM.ObjectTite = activity.OldState;
         activityVM.NewState = "to " + activity.NewState;
     }
     else if (activity.ActivityDesc.ToUpper() == "DUE DATE UPDATED")
     {
         activityVM.Activity = "updated due date of";
         activityVM.ObjectTite = activity.OldState;
         activityVM.NewState = "to " + activity.NewState;
     }
     activityVM.ObjectURL = String.Format("{0}Issues/{1}", "", activity.ObjectID);
     return activityVM;
 }
        private Activity SaveActivity(CreateIssue model, Issue existingIssue, Issue issuePreviousVersion, Status currentIssueStatus, int issueId, bool isNewIssue = false)
        {
            bool isStateChanged = false;
            var activity = new Activity() { CreatedByID = UserID, ObjectID = issueId, ObjectType = "Issue" };

            if (isNewIssue)
            {
                activity.ActivityDesc = "Created";
                activity.NewState = model.Title;
                isStateChanged = true;
            }
            else
            {
                if (issuePreviousVersion.StatusID != existingIssue.StatusID)
                {
                    // status of issue updated
                    activity.OldState = model.Title;
                    activity.ActivityDesc = "Changed status";
                    activity.NewState = currentIssueStatus.Name;
                    isStateChanged = true;
                }

            }

            activity.TeamID = TeamID;

            if (isStateChanged)
            {
                var result = repo.SaveActivity(activity);
                if (!result.Status)
                {
                    log.Error(result);
                }
                return repo.GetActivity(activity.ID);


            }
            return null;
        }
        public Activity SaveActivityForDueDate(int issueId, int teamId,int currentUserId)
        {
            var issue = repo.GetIssue(issueId);

            Activity activity = new Activity();
            activity.CreatedByID = currentUserId;
            activity.OldState = issue.Title;
            activity.NewState = issue.DueDate.Value.ToShortDateString();
            activity.ObjectID = issueId;
            activity.ObjectType = "Issue";
            activity.ActivityDesc = "Due date updated";
            activity.TeamID = teamId;
            var result = repo.SaveActivity(activity);
            if (result.Status)
            {
                return repo.GetActivity(activity.ID);
            }
            return null;
        }
        public Activity SaveActivity(Comment comment,int teamId)
        {
            var issue = repo.GetIssue(comment.IssueID);

            Activity activity = new Activity();
            activity.CreatedByID = comment.CreatedByID;
            activity.OldState = issue.Title;
            activity.NewState = comment.CommentText;
            activity.ObjectID = comment.ID;
            activity.ObjectType = "IssueComment";
            activity.ActivityDesc = "Commented";
            activity.TeamID = teamId;
            var result = repo.SaveActivity(activity);
            if (result.Status)
            {
                return repo.GetActivity(activity.ID);
            }
            return null;
        }
 public OperationStatus SaveActivity(Activity activity)
 {
     try
     {
         activity.CreatedDate = DateTime.UtcNow;
         db.Activities.Add(activity);
         db.SaveChanges();
         return new OperationStatus { Status = true };
     }
     catch(Exception ex)
     {
         return OperationStatus.CreateFromException("error in saving", ex);
     }
 }