/// <summary> /// Inserts the winners into the ticket winner table and sends them an email. /// </summary> /// <param name="winners">a comma separated string of the usernames of ticket winners</param> /// <param name="eventId">the id of the event we are giving away tickets for</param> public void SubmitWinners(string winners, int eventId, string eventName) { SelectUserQuery currentUser = new SelectUserQuery(new CurrentUser(claimsHelper.GetUserNameFromClaim((ClaimsIdentity)User.Identity))); CurrentUser user = commandBus.ProcessQuery(currentUser); InsertTicketWinnerCommand insertWinner = new InsertTicketWinnerCommand(winners, eventId, user.LoginName); commandBus.Execute(insertWinner); //Query for the email template GetEmailTemplateQuery query = new GetEmailTemplateQuery(new EmailTemplate(Enumeration.TryFindById <EmailTemplateEnum>(4).DisplayValue)); EmailTemplate winnerEmail = commandBus.ProcessQuery(query); winnerEmail.EmailBody = winnerEmail.EmailBody.Replace("@@EventName@@", eventName); winnerEmail.EmailSubject = winnerEmail.EmailSubject.Replace("@@EventName@@", eventName); List <string> winnerList = winners.Split(',').ToList(); if (winnerList != null && winnerList.Any()) { foreach (string winner in winnerList) { SelectUserQuery winnerInformationQuery = new SelectUserQuery(new CurrentUser(winner)); CurrentUser winnerInformation = commandBus.ProcessQuery(winnerInformationQuery); SendEmailCommand emailCommand = new SendEmailCommand(new Email( Me2YouConstants.EmailProfile, winnerInformation.EmailAddress, winnerEmail.EmailSubject, winnerEmail.EmailBody)); commandBus.Execute(emailCommand); } } }
private async Task <EmailTemplateDto> _GetEmailTemplate(int id) { var templateMessage = new GetEmailTemplateQuery { EmailTemplateId = id }; var templatePartMessage = new GetEmailTemplatePartsQuery { EmailTemplateId = id }; var emailTemplateDtos = await _queryExecutor.ExecuteAsync <GetEmailTemplateQuery, EmailTemplateDto>(templateMessage); var emailTemplatePartDtos = await _queryExecutor.ExecuteAsync <GetEmailTemplatePartsQuery, EmailTemplatePartDto>(templatePartMessage); var emailTemplateDto = emailTemplateDtos.Single(); emailTemplateDto.Parts = emailTemplatePartDtos; return(emailTemplateDto); }
public JsonResult ClaimItem(int postId, string postedBy, string postTitle, string postEmail, string postPurpose) { String[] jsonResult = new String[2]; //Queries for the current user and their email address. - Chris SelectUserQuery currentUser = new SelectUserQuery(new CurrentUser(claimsHelper.GetUserNameFromClaim((ClaimsIdentity)User.Identity))); CurrentUser user = commandBus.ProcessQuery(currentUser); SelectAllPostClaimsByUserWithinThirtyDaysQuery postQuery = new SelectAllPostClaimsByUserWithinThirtyDaysQuery(user.LoginName); List <PostClaim> returnedClaims = commandBus.ProcessQuery(postQuery); if (returnedClaims.Count >= 2 && postPurpose == PostPurposeEnum.ItemPost.Id) { jsonResult[0] = "False"; jsonResult[1] = returnedClaims.OrderBy(x => x.DateClaimed).Select(x => x.DateClaimed).FirstOrDefault().AddDays(30).ToString("D"); return(Json(jsonResult, JsonRequestBehavior.AllowGet)); } else { InsertPostClaimCommand command = new InsertPostClaimCommand( new PostClaim(postId, claimsHelper.GetUserNameFromClaim((ClaimsIdentity)User.Identity), user.EmailAddress, DateTime.Now)); commandBus.Execute(command); if (postPurpose == PostPurposeEnum.ItemPost.Id) { //Query for the email template GetEmailTemplateQuery query = new GetEmailTemplateQuery(new EmailTemplate(Enumeration.TryFindById <EmailTemplateEnum>(1).DisplayValue)); EmailTemplate ClaimedEmail = commandBus.ProcessQuery(query); //Replace the email body/subject with the correct parameters ClaimedEmail.EmailBody = ClaimedEmail.EmailBody.Replace("@@PostOwner@@", postedBy); ClaimedEmail.EmailBody = ClaimedEmail.EmailBody.Replace("@@FullName@@", user.FullName); ClaimedEmail.EmailBody = ClaimedEmail.EmailBody.Replace("@@PostTitle@@", postTitle); ClaimedEmail.EmailSubject = ClaimedEmail.EmailSubject.Replace("@@PostTitle@@", postTitle); SendEmailCommand emailCommand = new SendEmailCommand(new Email( Me2YouConstants.EmailProfile, postEmail, ClaimedEmail.EmailSubject, ClaimedEmail.EmailBody)); commandBus.Execute(emailCommand); //Query for the email template GetEmailTemplateQuery claimerEmailQuery = new GetEmailTemplateQuery(new EmailTemplate(Enumeration.TryFindById <EmailTemplateEnum>(2).DisplayValue)); EmailTemplate ClaimerEmail = commandBus.ProcessQuery(claimerEmailQuery); //Replace the email body/subject with the correct parameters ClaimerEmail.EmailBody = ClaimerEmail.EmailBody.Replace("@@PostOwner@@", postedBy); ClaimerEmail.EmailBody = ClaimerEmail.EmailBody.Replace("@@PostTitle@@", postTitle); ClaimerEmail.EmailSubject = ClaimerEmail.EmailSubject.Replace("@@PostTitle@@", postTitle); SendEmailCommand claimerEmailCommand = new SendEmailCommand(new Email( Me2YouConstants.EmailProfile, user.EmailAddress, ClaimerEmail.EmailSubject, ClaimerEmail.EmailBody)); commandBus.Execute(claimerEmailCommand); } else if (postPurpose == PostPurposeEnum.ItemRequest.Id) { //Query for the email template GetEmailTemplateQuery postedItemRequestEmailQuery = new GetEmailTemplateQuery(new EmailTemplate(Enumeration.TryFindById <EmailTemplateEnum>(5).DisplayValue)); EmailTemplate postedItemRequestEmail = commandBus.ProcessQuery(postedItemRequestEmailQuery); postedItemRequestEmail.EmailBody = postedItemRequestEmail.EmailBody.Replace("@@PosterName@@", postedBy); postedItemRequestEmail.EmailBody = postedItemRequestEmail.EmailBody.Replace("@@ClaimerName@@", user.FullName); postedItemRequestEmail.EmailSubject = postedItemRequestEmail.EmailSubject.Replace("@@ItemTitle@@", postTitle); SendEmailCommand postedItemRequestEmailCommand = new SendEmailCommand(new Email( Me2YouConstants.EmailProfile, postEmail, postedItemRequestEmail.EmailSubject, postedItemRequestEmail.EmailBody)); commandBus.Execute(postedItemRequestEmailCommand); //Query for the email template GetEmailTemplateQuery claimedItemRequestEmailQuery = new GetEmailTemplateQuery(new EmailTemplate(Enumeration.TryFindById <EmailTemplateEnum>(6).DisplayValue)); EmailTemplate claimedItemRequestEmail = commandBus.ProcessQuery(claimedItemRequestEmailQuery); claimedItemRequestEmail.EmailBody = claimedItemRequestEmail.EmailBody.Replace("@@PosterName@@", postedBy); claimedItemRequestEmail.EmailSubject = claimedItemRequestEmail.EmailSubject.Replace("@@ItemTitle@@", postTitle); SendEmailCommand claimedItemRequestEmailCommand = new SendEmailCommand(new Email( Me2YouConstants.EmailProfile, user.EmailAddress, claimedItemRequestEmail.EmailSubject, claimedItemRequestEmail.EmailBody)); commandBus.Execute(claimedItemRequestEmailCommand); } jsonResult[0] = "True"; return(Json(jsonResult, JsonRequestBehavior.AllowGet)); } }