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 OperationStatus SaveTeamMemberRequest(TeamMemberRequest teamMemberRequest)
 {
     try
     {
         if (teamMemberRequest.ID == 0)
         {
             teamMemberRequest.CreatedDate = DateTime.UtcNow;
             db.TeamMemberRequests.Add(teamMemberRequest);
         }
         else
         {
             db.Entry(teamMemberRequest).State = EntityState.Modified;
         }
         db.SaveChanges();
         return(new OperationStatus {
             Status = true
         });
     }
     catch (Exception ex)
     {
         return(OperationStatus.CreateFromException("Error in saving team member", ex));
     }
 }
 public ActionResult Add(AddTeamMemberRequestVM model)
 {
     // This method adds a user to the team
     // If user is new to the system, sends an email to user to signup and join, else add him to the team
     try
     {
         if (ModelState.IsValid)
         {
             var existingUser = repo.GetUser(model.EmailAddress);
             if (existingUser != null)
             {
                 TeamMember teamMember = new TeamMember { MemberID = existingUser.ID, TeamID = TeamID, CreatedByID = UserID };
                 var result = repo.SaveTeamMember(teamMember);
                 if (result.ID > 0)
                 {                            
                     return Json(new { Status = "Success",Message="Successfully added user to team" });
                 }
             }
             else
             {
                 var teamMemberRequest = new TeamMemberRequest { EmailAddress = model.EmailAddress, CreatedByID = UserID };
                 teamMemberRequest.TeamID = model.TeamID;
                 teamMemberRequest.ActivationCode = model.TeamID + "-" + Guid.NewGuid().ToString("n");
                 var resultNew = repo.SaveTeamMemberRequest(teamMemberRequest);
                 if (resultNew.Status)
                 {
                     new UserService(repo,SiteBaseURL).SendJoinMyTeamEmail(teamMemberRequest);
                     return Json(new { Status = "Success" });
                 }
                 else
                 {
                     log.Debug(resultNew);
                 }                        
             }
         }
     }
     catch (Exception ex)
     {
         log.Error(ex);                
     }
     return Json(new { Status = "Error", Message = "Error adding user to team" });
 }
        public void SendJoinMyTeamEmail(TeamMemberRequest teamMemberRequest)
        {    
            var emailTemplate = repo.GetEmailTemplate("JoinMyTeam");
            if (emailTemplate != null)
            {
                teamMemberRequest = repo.GetTeamMemberRequest(teamMemberRequest.ActivationCode);

                string emailSubject = emailTemplate.EmailSubject;
                string emailBody = emailTemplate.EmailBody;
                Email email = new Email();
                email.ToAddress.Add(teamMemberRequest.EmailAddress);

                
                string joinLink = String.Format("{0}Account/Join?returnurl={1}", SiteBaseURL, teamMemberRequest.ActivationCode);
                emailBody = emailBody.Replace("@teamName", teamMemberRequest.Team.Name);
                emailBody = emailBody.Replace("@joinUrl", joinLink);
                emailBody=emailBody.Replace("@inviter", teamMemberRequest.User.FirstName);
                email.Body = emailBody;
                email.Subject=emailSubject;
                email.Send();
            }


        }
        public OperationStatus SaveTeamMemberRequest(TeamMemberRequest teamMemberRequest)
        {
            try
            {
                if (teamMemberRequest.ID == 0)
                {

                    teamMemberRequest.CreatedDate = DateTime.UtcNow;
                    db.TeamMemberRequests.Add(teamMemberRequest);
                }
                else
                {
                    db.Entry(teamMemberRequest).State = EntityState.Modified;
                }
                db.SaveChanges();
                return new OperationStatus { Status = true };
            }
            catch (Exception ex)
            {
                return OperationStatus.CreateFromException("Error in saving team member" , ex);
            }
        }