public SurveyViewModel(ClientSurveys clientSurvey) { IsComplete = clientSurvey.IsComplete; Title = clientSurvey.Survey.Title; Client = new ClientViewModel(clientSurvey.Client); CompanyName = clientSurvey.Survey.CompanyName; CompanySite = clientSurvey.Survey.CompanySite; Contact = $"{clientSurvey.Survey.ContactTitle} {clientSurvey.Survey.ContactPhone}"; DateOfQuestionnaire = clientSurvey.Survey.DateOfQuestionnaire.ToString("yyyy-MM-dd"); RequestedStartDate = clientSurvey.RequestedStartDate?.ToString("yyyy-MM-dd"); RequestedEndDate = clientSurvey.RequestedEndDate?.ToString("yyyy-MM-dd"); Steps = clientSurvey.Survey.SurveySteps.Select(surveyStep => new Step(surveyStep, clientSurvey.ClientQuestionReplies)).OrderBy(e => e.Order); }
public async Task <IActionResult> Send([FromBody] EmailSurveyToClient emailSurveyToClient) { var clientTask = _context.Clients.Where(e => e.Email == emailSurveyToClient.Email).FirstOrDefaultAsync(); var surveyTask = _context.Surveys.Where(e => e.Id == emailSurveyToClient.SurveyId).FirstOrDefaultAsync(); await Task.WhenAll(clientTask, surveyTask); var client = await clientTask; var survey = await surveyTask; var clientSurvey = new ClientSurveys { Client = client, Survey = survey, ClientSurveyKey = Guid.NewGuid() }; await _context.ClientSurveys.AddAsync(clientSurvey); await _context.SaveChangesAsync(); try { var email = new MailMessage( from: "*****@*****.**", to: clientSurvey.Client.Email, subject: "New Questionnaire!", body: $"Hello {clientSurvey.Client.FirstName} {clientSurvey.Client.LastName}, please complete the following survey: <a href='https://localhost:44331/{clientSurvey.Client.Email}/{clientSurvey.ClientSurveyKey}' target='_blank'>{clientSurvey.Survey.Title}</a>" ) { IsBodyHtml = true }; // TODO: add environment var for email await _smtp.SendMailAsync(email); } catch (Exception) { throw; } return(Ok()); }