208 lines
10 KiB
C#
208 lines
10 KiB
C#
using brevo_csharp.Api;
|
|
using brevo_csharp.Model;
|
|
using Marco.Pms.Services.Service;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using System.Globalization;
|
|
using System.Text;
|
|
|
|
|
|
namespace MarcoBMS.Services.Controllers
|
|
{
|
|
[ApiController]
|
|
[Route("[controller]")]
|
|
public class WeatherForecastController : ControllerBase
|
|
{
|
|
private static readonly string[] Summaries = new[]
|
|
{
|
|
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
|
|
};
|
|
|
|
private readonly ILogger<WeatherForecastController> _logger;
|
|
private readonly S3UploadService _s3Service;
|
|
|
|
public WeatherForecastController(ILogger<WeatherForecastController> logger, S3UploadService s3Service)
|
|
{
|
|
_logger = logger;
|
|
_s3Service = s3Service;
|
|
}
|
|
|
|
[HttpGet(Name = "GetWeatherForecast")]
|
|
public IEnumerable<WeatherForecast> Get()
|
|
{
|
|
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
|
|
{
|
|
Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
|
|
TemperatureC = Random.Shared.Next(-20, 55),
|
|
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
|
|
})
|
|
.ToArray();
|
|
}
|
|
//[HttpPost("upload-image")]
|
|
//public async Task<IActionResult> SendToSThree([FromBody] FileUploadModel Image)
|
|
//{
|
|
// if (string.IsNullOrEmpty(Image.Base64Data))
|
|
// return BadRequest("Base64 data is missing");
|
|
// var objectKey = await _s3Service.UploadFileAsync(Image.Base64Data, 1, "Forum");
|
|
// //var objectKey = await _s3Service.UploadFileAsync(Image.FileName, Image.ContentType);
|
|
// var preSignedUrl = _s3Service.GeneratePreSignedUrl(objectKey);
|
|
|
|
// return Ok(new
|
|
// {
|
|
// objectKey,
|
|
// url = preSignedUrl
|
|
// });
|
|
|
|
//}
|
|
|
|
[HttpPost("send")]
|
|
public async Task<IActionResult> SendEmail()
|
|
{
|
|
var apiKey = "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";
|
|
// Configure API key authorization
|
|
var config = new brevo_csharp.Client.Configuration();
|
|
config.ApiKey.Add("api-key", apiKey);
|
|
var apiInstance = new TransactionalEmailsApi(config);
|
|
|
|
var recipient = new List<SendSmtpEmailTo>
|
|
{
|
|
new SendSmtpEmailTo("ashutosh.nehete@marcoaiot.com")
|
|
};
|
|
var sender = new SendSmtpEmailSender
|
|
{
|
|
Name = "Kartik Sharma",
|
|
Email = "kartik.sharma@marcoaiot.com"
|
|
};
|
|
|
|
var team = new StringBuilder();
|
|
team.Append("<tr style=\"vertical-align:middle\">");
|
|
team.AppendFormat(
|
|
"<td class=\"team\" style=\"text-align:center\">" +
|
|
"<div style=\"border: 1px solid #d5d5d5; border-radius: 10px; margin: 10px; padding: 10px;\">" +
|
|
"<div style=\"font-size: 15px; color: #525b75\">Admin</div>" +
|
|
"<div style=\"font-size: 20px; color: #003cc7; margin: 20px !important; font-weight: bold;\">1</div>" +
|
|
"</div></td>");
|
|
team.AppendFormat(
|
|
"<td class=\"team\" style=\"text-align:center\">" +
|
|
"<div style=\"border: 1px solid #d5d5d5; border-radius: 10px; margin: 10px; padding: 10px;\">" +
|
|
"<div style=\"font-size: 15px; color: #525b75\">Helper</div>" +
|
|
"<div style=\"font-size: 20px; color: #003cc7; margin: 20px !important; font-weight: bold;\">5</div>" +
|
|
"</div></td>");
|
|
team.AppendFormat(
|
|
"<td class=\"team\" style=\"text-align:center\">" +
|
|
"<div style=\"border: 1px solid #d5d5d5; border-radius: 10px; margin: 10px; padding: 10px;\">" +
|
|
"<div style=\"font-size: 15px; color: #525b75\">Welder</div>" +
|
|
"<div style=\"font-size: 20px; color: #003cc7; margin: 20px !important; font-weight: bold;\">8</div>" +
|
|
"</div></td>");
|
|
|
|
team.Append("</tr>");
|
|
|
|
var task = new StringBuilder();
|
|
|
|
task.AppendFormat("<tr>" +
|
|
"<td style=\"text-align:left;\"><span style=\"padding-left: 10px;\">Activity</span><br />" +
|
|
"<span style=\"color: gray; font-size: small; padding-left: 10px;\">Building > Floor > WorkArea > WorkItem</span></td>" +
|
|
"<td style=\"text-align:center\">30 / 16</td>" +
|
|
"<td style=\"text-align:center\">14</td>" +
|
|
"<td style=\"text-align:center\">{0}</td>" +
|
|
"<td style=\"padding-left: 10px; text-align: left;\">", DateTime.UtcNow.ToString("dd-MMM-yyyy"));
|
|
|
|
task.AppendFormat("Kartik Sharma <span style=\"color: gray; font-size: small; padding-left: 10px;\">(Welder)</span><br />");
|
|
task.AppendFormat("Kartik Sharma <span style=\"color: gray; font-size: small; padding-left: 10px;\">(Helper)</span><br />");
|
|
task.AppendFormat("Pramod Mahajan <span style=\"color: gray; font-size: small; padding-left: 10px;\">(Driver)</span><br />");
|
|
|
|
task.AppendFormat("</td><td style=\"padding-left: 10px; max-width: 150px; text-align: left;\">This is the test</td></tr>");
|
|
|
|
|
|
var attendance = new StringBuilder();
|
|
|
|
attendance.AppendFormat("<tr>" +
|
|
"<td style=\"text-align:left\"><span style=\"padding-left:10px;\">Kartik Sharma</span></td>" +
|
|
"<td style=\"text-align:center\">Welder</td>" +
|
|
"<td style=\"text-align:center\">{0}</td>" +
|
|
"<td style=\"text-align:center\">{1}</td>" +
|
|
"<td style=\"padding-left:10px; max-width:150px\">This is Test</td>" +
|
|
"</tr>",
|
|
DateTime.UtcNow.ToString("dd-MMM-yyyy h:mm tt", CultureInfo.InvariantCulture),
|
|
DateTime.UtcNow.ToString("dd-MMM-yyyy h:mm tt", CultureInfo.InvariantCulture));
|
|
|
|
attendance.AppendFormat("<tr>" +
|
|
"<td style=\"text-align:left\"><span style=\"padding-left:10px;\">Kartik Sharma</span></td>" +
|
|
"<td style=\"text-align:center\">Helper</td>" +
|
|
"<td style=\"text-align:center\">{0}</td>" +
|
|
"<td style=\"text-align:center\">{1}</td>" +
|
|
"<td style=\"padding-left:10px; max-width:150px\">This is Test</td>" +
|
|
"</tr>",
|
|
DateTime.UtcNow.ToString("dd-MMM-yyyy h:mm tt", CultureInfo.InvariantCulture),
|
|
DateTime.UtcNow.ToString("dd-MMM-yyyy h:mm tt", CultureInfo.InvariantCulture));
|
|
|
|
attendance.AppendFormat("<tr>" +
|
|
"<td style=\"text-align:left\"><span style=\"padding-left:10px;\">Pramod Mahajan</span></td>" +
|
|
"<td style=\"text-align:center\">Driveer</td>" +
|
|
"<td style=\"text-align:center\">{0}</td>" +
|
|
"<td style=\"text-align:center\">{1}</td>" +
|
|
"<td style=\"padding-left:10px; max-width:150px\">This is Test</td>" +
|
|
"</tr>",
|
|
DateTime.UtcNow.ToString("dd-MMM-yyyy h:mm tt", CultureInfo.InvariantCulture),
|
|
DateTime.UtcNow.ToString("dd-MMM-yyyy h:mm tt", CultureInfo.InvariantCulture));
|
|
|
|
var date = DateTime.UtcNow.Date.ToString("dd-MMM-yyyy", CultureInfo.InvariantCulture);
|
|
var prams = new
|
|
{
|
|
date = date,
|
|
project_name = "MarcoAIoT",
|
|
timestamp = DateTime.UtcNow,
|
|
todays_attendances = 1,
|
|
total_Employees = 26,
|
|
todays_planned = 1230,
|
|
todays_completed = 1200,
|
|
regularization_pernding = 3,
|
|
checkout_pending = 25,
|
|
total_planned = 1000000,
|
|
total_completed = 24003,
|
|
project_status = 70.44,
|
|
todays_assigned = 2,
|
|
report_pending = 10,
|
|
team_on_site = team,
|
|
performed_task = task,
|
|
performed_attendance = attendance
|
|
};
|
|
|
|
var sendSmtpEmail = new SendSmtpEmail
|
|
{
|
|
Sender = sender,
|
|
To = recipient,
|
|
TemplateId = 1, // Your Brevo template ID here
|
|
Params = prams,
|
|
Headers = new Dictionary<string, string>
|
|
{
|
|
{ "X-Mailin-custom", "custom_header_1:custom_value_1" }
|
|
}
|
|
//Subject = "Hello from Brevo this is test",
|
|
//HtmlContent = "<h1>This is a test email</h1><p>Sent via .NET controller</p>"
|
|
};
|
|
|
|
try
|
|
{
|
|
var result = apiInstance.SendTransacEmail(sendSmtpEmail);
|
|
var client = new HttpClient();
|
|
client.DefaultRequestHeaders.Add("api-key", apiKey);
|
|
var messageId = result.MessageId;
|
|
|
|
var response = await client.GetAsync($"https://api.brevo.com/v3/smtp/emails/{messageId}");
|
|
Console.WriteLine(response);
|
|
|
|
if (response.IsSuccessStatusCode)
|
|
{
|
|
var content = await response.Content.ReadAsStringAsync();
|
|
Console.WriteLine(content); // This includes status info
|
|
}
|
|
return Ok(Marco.Pms.Model.Utilities.ApiResponse<object>.SuccessResponse(result.MessageId, "Email sent successfully!", 200));
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return StatusCode(500, Marco.Pms.Model.Utilities.ApiResponse<object>.ErrorResponse(ex.Message, ex.StackTrace, 500));
|
|
}
|
|
}
|
|
|
|
}
|
|
} |