This commit is contained in:
@@ -231,7 +231,8 @@ namespace AyaNova.Api.Controllers
|
|||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Send direct SMTP message notification so single object / address
|
/// 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
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>Accepted on success or error</returns>
|
/// <returns>Accepted on success or error</returns>
|
||||||
[HttpPost("direct-smtp")]
|
[HttpPost("direct-smtp")]
|
||||||
@@ -270,13 +271,62 @@ namespace AyaNova.Api.Controllers
|
|||||||
case AyaType.NoType:
|
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"));
|
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:
|
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))
|
var o = await ct.Customer.AsNoTracking().Where(x => x.Id == notifyDirectSMTP.ObjectId).Select(x => new { x.Name, x.EmailAddress, x.Active }).FirstOrDefaultAsync();
|
||||||
return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_MISSING_PROPERTY, "EmailAddress", $"Customer {CustomerInfo.Name} doesn't have an email address no where to send this"));
|
if (o == null)
|
||||||
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"));
|
return BadRequest(new ApiErrorResponse(ApiErrorCode.NOT_FOUND, "ObjectId"));
|
||||||
notifyDirectSMTP.ToAddress = CustomerInfo.EmailAddress;
|
}
|
||||||
|
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;
|
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:
|
default:
|
||||||
return BadRequest(new ApiErrorResponse(ApiErrorCode.INVALID_OPERATION, "AType", "Specified Type not supported for 'on request' smtp"));
|
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;
|
IMailer m = AyaNova.Util.ServiceProviderProvider.Mailer;
|
||||||
try
|
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)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user