private async Task SendTeamMemberInvitationEmail(AddTeamMemberRequestVM teamMemberRequest) { try { var emailTemplate = await _emailRepository.GetEmailTemplate("JoinMyTeam"); if (emailTemplate != null) { var emailSubject = emailTemplate.Subject; var emailBody = emailTemplate.EmailBody; var email = new Email(); email.ToAddress.Add(teamMemberRequest.EmailAddress); var joinLink = String.Format("{0}Account/Join?returnurl={1}", this._settings.SiteUrl.AddTrailingSlash(), teamMemberRequest.ActivationCode); emailBody = emailBody.Replace("@teamName", teamMemberRequest.Team.Name); emailBody = emailBody.Replace("@joinUrl", joinLink); emailBody = emailBody.Replace("@inviter", teamMemberRequest.CreatedBy.Name); email.Body = emailBody; email.Subject = emailSubject; await this._emailManager.Send(email); } } catch (Exception) { // Silently fail. We will log this. But we do not want to show an error to user because of this } }
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 async Task<int> SaveTeamMemberRequest(AddTeamMemberRequestVM teamMemberRequest) { var q = @"INSERT INTO TeamMemberRequest(EmailAddress,TeamId,ActivationCode,CreatedByID,CreatedDate) VALUES(@email,@teamId,@a,@userId,@dt);;SELECT CAST(SCOPE_IDENTITY() as int)"; using (var con = new SqlConnection(ConnectionString)) { var a = Guid.NewGuid().ToString("n").Replace("-", ""); con.Open(); var p = await con.QueryAsync<int>(q, new { @teamId = teamMemberRequest.TeamId, @email = teamMemberRequest.EmailAddress, @a = a, @userId = teamMemberRequest.CreatedById, @dt = DateTime.Now }); return p.First(); } }
public async Task <int> SaveTeamMemberRequest(AddTeamMemberRequestVM teamMemberRequest) { var q = @"INSERT INTO TeamMemberRequest(EmailAddress,TeamId,ActivationCode,CreatedByID,CreatedDate) VALUES(@email,@teamId,@a,@userId,@dt);;SELECT CAST(SCOPE_IDENTITY() as int)"; using (var con = new SqlConnection(ConnectionString)) { var a = Guid.NewGuid().ToString("n").Replace("-", ""); con.Open(); var p = await con.QueryAsync <int>(q, new { @teamId = teamMemberRequest.TeamId, @email = teamMemberRequest.EmailAddress, @a = a, @userId = teamMemberRequest.CreatedById, @dt = DateTime.Now }); return(p.First()); } }
public async Task AddNewTeamMember(AddTeamMemberRequestVM teamMemberRequest) { var user = await userRepository.GetUser(teamMemberRequest.EmailAddress); if (user != null) { teamRepository.SaveTeamMember(this.userSessionHelper.TeamId, user.Id, this.userSessionHelper.UserId); } else { teamMemberRequest.TeamID = this.userSessionHelper.TeamId; teamMemberRequest.CreatedById = this.userSessionHelper.UserId; var id = await teamRepository.SaveTeamMemberRequest(teamMemberRequest); var requests = await teamRepository.GetTeamMemberInvitations(this.userSessionHelper.TeamId) ; var r = requests.FirstOrDefault(s => s.Id == id); await emailManager.SendTeamMemberInvitationEmail(r); } }
public async Task<ActionResult> Add(AddTeamMemberRequestVM model) { try { //if (ModelState.IsValid) { await _teamManager.AddNewTeamMember(model); return Json(new { Status = "Success", Message = "Successfully added user to team" }); } ////else //{ // var errors = ViewData.ModelState.Values.SelectMany(s => s.Errors.Select(g => g.ErrorMessage)); // return Json(new { Status = "Error", Message = "Error adding user to team", Errors= errors }); //} } catch (Exception ex) { //Log } return Json(new { Status = "Error", Message = "Error adding user to team" }); }
public async Task <ActionResult> Add(AddTeamMemberRequestVM model) { try { //if (ModelState.IsValid) { await _teamManager.AddNewTeamMember(model); return(Json(new { Status = "Success", Message = "Successfully added user to team" })); } ////else //{ // var errors = ViewData.ModelState.Values.SelectMany(s => s.Errors.Select(g => g.ErrorMessage)); // return Json(new { Status = "Error", Message = "Error adding user to team", Errors= errors }); //} } catch (Exception ex) { tc.TrackException(ex); } return(Json(new { Status = "Error", Message = "Error adding user to team" })); }
public async Task SendTeamMemberInvitationEmail(AddTeamMemberRequestVM teamMemberRequest) { var emailTemplate = await emailRepository.GetEmailTemplate("JoinMyTeam"); if (emailTemplate != null) { string emailSubject = emailTemplate.Subject; string emailBody = emailTemplate.EmailBody; Email email = new Email(); email.ToAddress.Add(teamMemberRequest.EmailAddress); string joinLink = String.Format("{0}Account/Join?returnurl={1}", teamMemberRequest.SiteBaseUrl, teamMemberRequest.ActivationCode); emailBody = emailBody.Replace("@teamName", teamMemberRequest.Team.Name); emailBody = emailBody.Replace("@joinUrl", joinLink); emailBody = emailBody.Replace("@inviter", teamMemberRequest.CreatedBy.Name); email.Body = emailBody; email.Subject = emailSubject; await Send(email); //} } }