marco.pms.api/Marco.Pms.Services/Controllers/WeatherForecastController.cs

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));
}
}
}
}