diff --git a/server/AyaNova/Controllers/NotifyController.cs b/server/AyaNova/Controllers/NotifyController.cs
index cc765a41..cdbf5ba8 100644
--- a/server/AyaNova/Controllers/NotifyController.cs
+++ b/server/AyaNova/Controllers/NotifyController.cs
@@ -231,7 +231,8 @@ namespace AyaNova.Api.Controllers
///
/// Send direct SMTP message notification so single object / address
- /// Note: adds to queue, not instantly sent
+ /// Server notification settings must be set and active
+ /// Currently supported types are Customer, HeadOffice, Vendor, User
///
/// Accepted on success or error
[HttpPost("direct-smtp")]
@@ -270,13 +271,62 @@ namespace AyaNova.Api.Controllers
case AyaType.NoType:
return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_MISSING_PROPERTY, "ToAddress", "No address or object type and id specified no where to send this"));
case AyaType.Customer:
- var CustomerInfo = await ct.Customer.AsNoTracking().Where(x => x.Id == notifyDirectSMTP.ObjectId).Select(x => new { x.Name, x.EmailAddress, x.Active }).FirstAsync();
- if (string.IsNullOrWhiteSpace(CustomerInfo.EmailAddress))
- return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_MISSING_PROPERTY, "EmailAddress", $"Customer {CustomerInfo.Name} doesn't have an email address no where to send this"));
- if (CustomerInfo.Active == false)
- return BadRequest(new ApiErrorResponse(ApiErrorCode.INVALID_OPERATION, "Active", $"Customer {CustomerInfo.Name} is not active, only active customers can be emailed directly"));
- notifyDirectSMTP.ToAddress = CustomerInfo.EmailAddress;
+ {
+ var o = await ct.Customer.AsNoTracking().Where(x => x.Id == notifyDirectSMTP.ObjectId).Select(x => new { x.Name, x.EmailAddress, x.Active }).FirstOrDefaultAsync();
+ if (o == null)
+ {
+ return BadRequest(new ApiErrorResponse(ApiErrorCode.NOT_FOUND, "ObjectId"));
+ }
+ if (string.IsNullOrWhiteSpace(o.EmailAddress))
+ return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_MISSING_PROPERTY, "EmailAddress", $"Customer {o.Name} doesn't have an email address no where to send this"));
+ if (o.Active == false)
+ return BadRequest(new ApiErrorResponse(ApiErrorCode.INVALID_OPERATION, "Active", $"Customer {o.Name} is not active, only active customers can be emailed directly"));
+ notifyDirectSMTP.ToAddress = o.EmailAddress;
+ }
break;
+ case AyaType.HeadOffice:
+ {
+ var o = await ct.HeadOffice.AsNoTracking().Where(x => x.Id == notifyDirectSMTP.ObjectId).Select(x => new { x.Name, x.EmailAddress, x.Active }).FirstOrDefaultAsync();
+ if (o == null)
+ {
+ return BadRequest(new ApiErrorResponse(ApiErrorCode.NOT_FOUND, "ObjectId"));
+ }
+ if (string.IsNullOrWhiteSpace(o.EmailAddress))
+ return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_MISSING_PROPERTY, "EmailAddress", $"HeadOffice {o.Name} doesn't have an email address no where to send this"));
+ if (o.Active == false)
+ return BadRequest(new ApiErrorResponse(ApiErrorCode.INVALID_OPERATION, "Active", $"HeadOffice {o.Name} is not active, only active head offices can be emailed directly"));
+ notifyDirectSMTP.ToAddress = o.EmailAddress;
+ }
+ break;
+ case AyaType.Vendor:
+ {
+ var o = await ct.Vendor.AsNoTracking().Where(x => x.Id == notifyDirectSMTP.ObjectId).Select(x => new { x.Name, x.EmailAddress, x.Active }).FirstOrDefaultAsync();
+ if (o == null)
+ {
+ return BadRequest(new ApiErrorResponse(ApiErrorCode.NOT_FOUND, "ObjectId"));
+ }
+ if (string.IsNullOrWhiteSpace(o.EmailAddress))
+ return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_MISSING_PROPERTY, "EmailAddress", $"Vendor {o.Name} doesn't have an email address no where to send this"));
+ if (o.Active == false)
+ return BadRequest(new ApiErrorResponse(ApiErrorCode.INVALID_OPERATION, "Active", $"Vendor {o.Name} is not active, only active Vendors can be emailed directly"));
+ notifyDirectSMTP.ToAddress = o.EmailAddress;
+ }
+ break;
+ case AyaType.User:
+ {
+ var o = await ct.User.Include(z => z.UserOptions).AsNoTracking().Where(x => x.Id == notifyDirectSMTP.ObjectId).Select(x => new { x.Name, x.UserOptions.EmailAddress, x.Active }).FirstOrDefaultAsync();
+ if (o == null)
+ {
+ return BadRequest(new ApiErrorResponse(ApiErrorCode.NOT_FOUND, "ObjectId"));
+ }
+ if (string.IsNullOrWhiteSpace(o.EmailAddress))
+ return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_MISSING_PROPERTY, "EmailAddress", $"Vendor {o.Name} doesn't have an email address no where to send this"));
+ if (o.Active == false)
+ return BadRequest(new ApiErrorResponse(ApiErrorCode.INVALID_OPERATION, "Active", $"Vendor {o.Name} is not active, only active Vendors can be emailed directly"));
+ notifyDirectSMTP.ToAddress = o.EmailAddress;
+ }
+ break;
+
default:
return BadRequest(new ApiErrorResponse(ApiErrorCode.INVALID_OPERATION, "AType", "Specified Type not supported for 'on request' smtp"));
@@ -287,7 +337,7 @@ namespace AyaNova.Api.Controllers
IMailer m = AyaNova.Util.ServiceProviderProvider.Mailer;
try
{
- await m.SendEmailAsync(notifyDirectSMTP.ToAddress, notifyDirectSMTP.Subject, notifyDirectSMTP.TextBody, ServerGlobalOpsSettingsCache.Notify,null,null,notifyDirectSMTP.HTMLBody);
+ await m.SendEmailAsync(notifyDirectSMTP.ToAddress, notifyDirectSMTP.Subject, notifyDirectSMTP.TextBody, ServerGlobalOpsSettingsCache.Notify, null, null, notifyDirectSMTP.HTMLBody);
}
catch (Exception ex)
{