diff --git a/Controllers/ReportController.cs b/Controllers/ReportController.cs index 402e8ba..64c2ff8 100644 --- a/Controllers/ReportController.cs +++ b/Controllers/ReportController.cs @@ -6,9 +6,9 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Identity; +using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Options; using Microsoft.Extensions.Logging; -using Microsoft.Extensions.Primitives; using CsvHelper; using CsvHelper.Configuration; using viafront3.Models; @@ -112,30 +112,28 @@ public IActionResult Index() return View(BaseViewModel()); } - public IActionResult Broker(int offset=0, int limit=20, DateTime? startDate=null, DateTime? endDate=null, string orderStatus=null, string notOrderStatus=null, bool csv=false) + public IActionResult Broker(int offset=0, int limit=20, DateTime? startDate=null, DateTime? endDate=null, string email=null, string orderStatus=null, string notOrderStatus=null, bool csv=false) { var user = GetUser(required: true).Result; - var orders = _context.BrokerOrders.AsEnumerable(); + long startUnixTimestamp = 0; if (startDate.HasValue) { startDate = StartOfDay(startDate.Value); - var unixTimestamp = DateTimeToUnix(startDate.Value); - orders = orders.Where(o => o.Date >= unixTimestamp); + startUnixTimestamp = DateTimeToUnix(startDate.Value); } + long endUnixTimestamp = 0; if (endDate.HasValue) { endDate = EndOfDay(endDate.Value); - var unixTimestamp = DateTimeToUnix(endDate.Value); - orders = orders.Where(o => o.Date <= unixTimestamp); + endUnixTimestamp = DateTimeToUnix(endDate.Value); } - if (orderStatus == "") - orderStatus = null; - if (orderStatus != null) - orders = orders.Where(o => o.Status == orderStatus); - if (notOrderStatus != null) - orders = orders.Where(o => o.Status != notOrderStatus); - orders = orders.OrderByDescending(o => o.Date); + var orders = _context.BrokerOrders.Include(o => o.User). + Where(o => (!startDate.HasValue || o.Date >= startUnixTimestamp) && (!endDate.HasValue || o.Date <= endUnixTimestamp) && + (string.IsNullOrEmpty(email) || o.User.Email == email) && + (string.IsNullOrEmpty(orderStatus) || o.Status == orderStatus) && + (string.IsNullOrEmpty(notOrderStatus) || o.Status != notOrderStatus)). + OrderByDescending(o => o.Date); if (csv) { @@ -145,21 +143,23 @@ public IActionResult Broker(int offset=0, int limit=20, DateTime? startDate=null using (var csvWriter = new CsvWriter(streamWriter, System.Globalization.CultureInfo.InvariantCulture)) { csvWriter.Configuration.RegisterClassMap(); - csvWriter.WriteRecords(orders); + csvWriter.WriteRecords(orders.AsEnumerable()); return File(stream.GetBuffer(), "application/octet-stream", "broker.csv"); } } else { + var count = orders.Count(); var model = new BrokerViewModel { User = user, - Orders = orders.Skip(offset).Take(limit), + Orders = orders.Skip(offset).Take(limit).AsEnumerable(), Offset = offset, Limit = limit, StartDate = startDate, EndDate = endDate, - Count = orders.Count(), + Email = email, + Count = count, OrderStatus = orderStatus, NotOrderStatus = notOrderStatus, AssetSettings = _settings.Assets, diff --git a/Models/ReportViewModels/BrokerViewModel.cs b/Models/ReportViewModels/BrokerViewModel.cs index 8302367..de385b1 100644 --- a/Models/ReportViewModels/BrokerViewModel.cs +++ b/Models/ReportViewModels/BrokerViewModel.cs @@ -12,6 +12,7 @@ public class BrokerViewModel : BaseViewModel public int Count { get; set; } public DateTime? StartDate { get; set; } public DateTime? EndDate { get; set; } + public string Email { get; set; } public string OrderStatus { get; set; } public string NotOrderStatus { get; set; } public Dictionary AssetSettings { get; set; } diff --git a/Views/Internal/UserInspect.cshtml b/Views/Internal/UserInspect.cshtml index 0c08fd7..67de954 100644 --- a/Views/Internal/UserInspect.cshtml +++ b/Views/Internal/UserInspect.cshtml @@ -64,7 +64,7 @@ @Model.KycLevel - @Model.KycRequestUrl + @Model.KycRequestUrl diff --git a/Views/Report/Broker.cshtml b/Views/Report/Broker.cshtml index caa9b65..b14a69f 100644 --- a/Views/Report/Broker.cshtml +++ b/Views/Report/Broker.cshtml @@ -5,6 +5,7 @@ ViewData["Title"] = "Broker Report"; var startDate = Model.StartDate.HasValue ? Model.StartDate.Value.ToString("yyyy/MM/dd") : ""; var endDate = Model.EndDate.HasValue ? Model.EndDate.Value.ToString("yyyy/MM/dd") : ""; + var email = Model.Email; }

@ViewData["Title"]

@@ -15,18 +16,23 @@ Broker Orders
-
+
Start date: - +
    
End date: - + +
+      +
+ Email: +
    
@@ -97,24 +103,30 @@ var limit = Model.Limit; if (offset >= limit) { - prev + prev } else if (offset > 0) { - prev + prev } if (count - offset > limit) { - next + next } -
- csv +
+ csv }
+
- @section Scripts { @await Html.PartialAsync("_PadDecimalsScriptsPartial") + + + + + + } diff --git a/Views/Report/BrokerOrder.cshtml b/Views/Report/BrokerOrder.cshtml index e4b1de7..8807a6d 100644 --- a/Views/Report/BrokerOrder.cshtml +++ b/Views/Report/BrokerOrder.cshtml @@ -71,7 +71,7 @@ - @Model.KycRequestUrl + @Model.KycRequestUrl diff --git a/Views/Report/_BrokerOrder.cshtml b/Views/Report/_BrokerOrder.cshtml index 9ab2d9e..7e71039 100644 --- a/Views/Report/_BrokerOrder.cshtml +++ b/Views/Report/_BrokerOrder.cshtml @@ -21,7 +21,7 @@ - + @order.User.Email diff --git a/wwwroot/js/set-email.js b/wwwroot/js/set-email.js new file mode 100644 index 0000000..a4c7446 --- /dev/null +++ b/wwwroot/js/set-email.js @@ -0,0 +1,24 @@ +function ready(fn) { + if (document.readyState != 'loading'){ + fn(); + } else if (document.addEventListener) { + document.addEventListener('DOMContentLoaded', fn); + } else { + document.attachEvent('onreadystatechange', function() { + if (document.readyState != 'loading') + fn(); + }); + } +} + +ready(function () { + var items = document.getElementsByClassName('set-email'); + for (var i = 0; i < items.length; i++) { + items[i].addEventListener('click', function () { + var email = this.textContent.trim(); + document.getElementById('Email').value = email; + document.getElementById('Offset').value = 0; + document.getElementById('search-form').submit(); + }); + } +}); diff --git a/wwwroot/js/site.js b/wwwroot/js/site.js index 5f4ab01..51c7a9d 100644 --- a/wwwroot/js/site.js +++ b/wwwroot/js/site.js @@ -14,7 +14,10 @@ ready(function() { // submit the form when element changes $(".onchange-submit").each(function(index) { - $(this).change(function() { + $(this).change(function () { + var offsetInput = this.form.querySelector("#Offset"); + if (offsetInput) + offsetInput.value = 0; this.form.submit(); }); }); @@ -23,6 +26,9 @@ ready(function() { $(".onenter-submit").each(function(index) { $(this).keypress(function(e) { if (e.which == 13) { + var offsetInput = this.form.querySelector("#Offset"); + if (offsetInput) + offsetInput.value = 0; this.form.submit(); } });