[HttpPost("ReturnsGetData"), DisableRequestSizeLimit]
[ProducesResponseType(typeof(ApiResponse), 200)]
[ProducesResponseType(typeof(ApiResponse), 400)]
public IActionResult ReturnsGetData()
{
try
{
var httpRequest = _httpAccessor.HttpContext.Request;
ReturnsModel.ReturnData returnData = null;
var settings = new JsonSerializerSettings
{
PreserveReferencesHandling = PreserveReferencesHandling.Objects,
Converters = { new StringOrArrayConverter() },
Error = (sender, args) =>
{
if (System.Diagnostics.Debugger.IsAttached)
{
System.Diagnostics.Debug.Write(args.CurrentObject.ToString());
System.Diagnostics.Debugger.Break();
}
}
};
var json = httpRequest.Form["returnData"];
returnData = JsonConvert.DeserializeObject<ReturnsModel.ReturnData>(json, settings);
List<Attachment> attachments = new List<Attachment>();
if (httpRequest.Form.Files.Count > 0)
{
foreach (var file in httpRequest.Form.Files)
{
if (file.Length > 0)
{
using (var ms = new MemoryStream())
{
file.CopyTo(ms);
var fileBytes = ms.ToArray();
Attachment att = new Attachment(new MemoryStream(fileBytes), file.FileName);
attachments.Add(att);
}
}
}
}
_dickerDataLogger.Add(LogType.Website, this.GetType().Name,
MethodBase.GetCurrentMethod().Name,
string.Format("Return data: {0}", JsonConvert.SerializeObject(returnData)),
_currentUser.AccountId, _currentUser.LoginId);
var isSent = SendReturns_Email(attachments, returnData);
if (isSent)
{
return Ok(new ApiResponse { Status = true, ResponseMessage = "Success" });
}
else
{
_dickerDataLogger.Add(LogType.WebsiteError, this.GetType().Name, MethodBase.GetCurrentMethod().Name, "Returns Get Data Failed", _currentUser.AccountId, _currentUser.LoginId);
return Ok(new ApiResponse { Status = false, ResponseMessage = "Failed" });
}
}
catch (Exception ex)
{
_dickerDataLogger.Add(LogType.WebsiteError, this.GetType().Name, "Returns Get Data Failed", ex.Message.ToString(), _currentUser.AccountId, _currentUser.LoginId);
return BadRequest(new ApiResponse { Status = false, ResponseMessage = ex.Message });
}
}
[NonAction]
private bool SendReturns_Email(List<Attachment> attachments, ReturnsModel.ReturnData returnData)
{
try
{
bool isEmailSent = false;
string emailTemplate = string.Empty;
string sendTo = string.Empty;
StringBuilder lineLevelRows = new StringBuilder();
try
{
emailTemplate = new WebClient().DownloadString(_tools.GetConfigKey("AppConfig", "ReturnForm_EmailTemplate"));
}
catch (Exception ex)
{
_dickerDataLogger.Add(LogType.WebsiteError, this.GetType().Name, "Get Returns Email Template Error", ex.Message.ToString(), _currentUser.AccountId, _currentUser.LoginId);
return isEmailSent;
}
GetLoginDetails.Out user = null;
var getLoginUserDetails = loginApplicationService.GetLoginInfo(_currentUser.LoginId, _currentUser.AccountId);
user = getLoginUserDetails.Output.FirstOrDefault();
emailTemplate = emailTemplate.Replace("#ORDERNUMBER", returnData.OrderNumber + returnData.OrderSuffix ?? "");
emailTemplate = emailTemplate.Replace("#FULLORPARTIAL", returnData.IsPartialReturn ? "PARTIAL" : "FULL");
emailTemplate = emailTemplate.Replace("#RESELLERACCOUNTCODE", _currentUser.AccountId);
emailTemplate = emailTemplate.Replace("#RESELLERACCOUNTNAME", _currentUser.AccountName);
emailTemplate = emailTemplate.Replace("#WEBLOGINUSERNAME", _currentUser.LoginId);
emailTemplate = emailTemplate.Replace("#WEBLOGINEMAIL", user.out_email);
emailTemplate = emailTemplate.Replace("#DATETIME", DateTime.Now.ToString("yyyy-MM-dd h:mm:ss tt"));
emailTemplate = emailTemplate.Replace("#REASON", returnData.Reason);
emailTemplate = emailTemplate.Replace("#VENDORREF", returnData.VenderRefNumber);
emailTemplate = emailTemplate.Replace("#CONDITION", returnData.ConditionOfGoods);
emailTemplate = emailTemplate.Replace("#COMMENTS", returnData.ReasonDetails);
emailTemplate = emailTemplate.Replace("#CONTACTNAME", _currentUser.FirstName);
emailTemplate = emailTemplate.Replace("#CONTACTPHONE", user.out_bus_phone_no ?? "");
emailTemplate = emailTemplate.Replace("#CONTACTEMAIL", user.out_email);
var orderDetails = orderApplicationService.GetOrderItemLists(returnData.OrderNumber, returnData.OrderSuffix ?? "", _currentUser.AccountId);
var returnTotalValue = 0.0;
foreach (var item in returnData.Items)
{
var unitPrice = "";
var linePrice = 0d;
if (orderDetails != null && orderDetails.Output.Count > 0)
{
unitPrice = orderDetails.Output.Where(x => x.out_stock_code == item.Stockcode).FirstOrDefault().out_line_price;
linePrice = ((double.Parse(unitPrice)) * (double.Parse(item.ReturnQty)));
returnTotalValue += linePrice;
unitPrice = "$" + unitPrice;
//linePrice = "$" + linePrice;
}
StringBuilder serials = new StringBuilder();
foreach (var serial in item.Serials)
{
serials.Append("<label>" + serial.SerialNumber + "</label></br>");
}
lineLevelRows.Append("<tr><td style='padding-top:20px;padding-left:20px;'>" + item.Stockcode + "</td><td style='padding-top:20px;'>" + item.Description + "</td><td style='padding-top:20px;' align='left'>" + serials +
"</td><td style='padding-top:20px;' align='right'>" + item.ReturnQty +
"</td><td style='padding-top:20px;' align='right'>" + unitPrice + "</td>" +
"</td><td style='padding-top:20px;padding-right:20px;' align='right'> $" + linePrice.ToString("0.00") +
"</td></tr>");
}
emailTemplate = emailTemplate.Replace("#LINELEVELROWS", lineLevelRows.ToString());
emailTemplate = emailTemplate.Replace("#RETURNTOTALVALUE", "$" + returnTotalValue.ToString("0.00"));
var sendFrom = _tools.GetConfigKey("AppConfig", "EmailFrom");
if (Global.IsAU())
{
emailTemplate = emailTemplate.Replace("#CONTACTBANNER", "https://portal.dickerdata.com.au/resourcefiles/contact-banner.png");
}
else
{
emailTemplate = emailTemplate.Replace("#CONTACTBANNER", "https://portal.dickerdata.com.au/resourcefiles/contact-banner-nz.png");
sendFrom = _tools.GetConfigKey("AppConfig", "EmailFromNZ");
}
string subject = "Dicker Data Returns Form, Account: " + _currentUser.AccountId + ", Account Name: " + _currentUser.AccountName + ", SO: " + returnData.OrderNumber + returnData.OrderSuffix ?? "";
//_tools.SendEmail("noreplay@dickerdata.com.au", toAddress, subject, emailTemplate, null, "ethan.wei@dickerdata.com.au", true, attachments);
sendTo = _tools.GetConfigKey("AppConfig", "ReturnForm_EmailSendTo");
isEmailSent = _tools.SendEmail(sendFrom, sendTo, subject, emailTemplate.ToString(), null, null, true, attachments);
return isEmailSent;
}
catch (Exception ex)
{
_dickerDataLogger.Add(LogType.WebsiteError, this.GetType().Name, "Send Returns Email Failed", ex.ToString(), _currentUser.AccountId, _currentUser.LoginId);
return false;
}
}