Skip to content

Commit

Permalink
-make kyc request urls links
Browse files Browse the repository at this point in the history
-allow to search by email in broker report
-make broker report sql more efficient
  • Loading branch information
djpnewton committed Oct 7, 2020
1 parent 502429a commit 21d9ad4
Show file tree
Hide file tree
Showing 8 changed files with 73 additions and 30 deletions.
34 changes: 17 additions & 17 deletions Controllers/ReportController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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)
{
Expand All @@ -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<BrokerOrderMap>();
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,
Expand Down
1 change: 1 addition & 0 deletions Models/ReportViewModels/BrokerViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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<string, AssetSettings> AssetSettings { get; set; }
Expand Down
2 changes: 1 addition & 1 deletion Views/Internal/UserInspect.cshtml
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@
@Model.KycLevel
</td>
<td>
@Model.KycRequestUrl
<a href="@Model.KycRequestUrl">@Model.KycRequestUrl</a>
</td>
</tr>
</tbody>
Expand Down
30 changes: 21 additions & 9 deletions Views/Report/Broker.cshtml
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
<h4>@ViewData["Title"]</h4>

Expand All @@ -15,18 +16,23 @@
Broker Orders
</div>
<div class="panel-body">
<form asp-action="Broker" method="get" class="form-group form-inline">
<form id="search-form" asp-action="Broker" method="get" class="form-group form-inline">
<div asp-validation-summary="All" class="text-danger"></div>
<input type="hidden" asp-for="Offset" value="@Model.Offset" />
<input type="hidden" asp-for="Limit" value="@Model.Limit" />
<div class="form-group">
Start date:
<input type="text" asp-for="StartDate" class="datepicker onchange-submit" autocomplete="off" value="@startDate"/>
<input type="text" asp-for="StartDate" class="datepicker onchange-submit" autocomplete="off" value="@startDate" />
</div>
&nbsp;&nbsp;&nbsp;&nbsp;
<div class="form-group">
End date:
<input type="text" asp-for="EndDate" class="datepicker onchange-submit" autocomplete="off" value="@endDate"/>
<input type="text" asp-for="EndDate" class="datepicker onchange-submit" autocomplete="off" value="@endDate" />
</div>
&nbsp;&nbsp;&nbsp;&nbsp;
<div class="form-group">
Email:
<input type="text" asp-for="Email" class="onchange-submit" autocomplete="off" value="@email" />
</div>
&nbsp;&nbsp;&nbsp;&nbsp;
<div class="form-group">
Expand Down Expand Up @@ -97,24 +103,30 @@
var limit = Model.Limit;
if (offset >= limit)
{
<a asp-action="Broker" asp-route-offset="@(offset-limit)" asp-route-limit="@limit" asp-route-startDate="@startDate" asp-route-endDate="@endDate" asp-route-orderStatus="@Model.OrderStatus" asp-route-notOrderStatus="@Model.NotOrderStatus">prev</a>
<a asp-action="Broker" asp-route-offset="@(offset-limit)" asp-route-limit="@limit" asp-route-startDate="@startDate" asp-route-endDate="@endDate" asp-route-email="@email" asp-route-orderStatus="@Model.OrderStatus" asp-route-notOrderStatus="@Model.NotOrderStatus">prev</a>
}
else if (offset > 0)
{
<a asp-action="Broker" asp-route-offset="0" asp-route-limit="@limit" asp-route-startDate="@startDate" asp-route-endDate="@endDate" asp-route-orderStatus="@Model.OrderStatus" asp-route-notOrderStatus="@Model.NotOrderStatus">prev</a>
<a asp-action="Broker" asp-route-offset="0" asp-route-limit="@limit" asp-route-startDate="@startDate" asp-route-endDate="@endDate" asp-route-email="@email" asp-route-orderStatus="@Model.OrderStatus" asp-route-notOrderStatus="@Model.NotOrderStatus">prev</a>
}
if (count - offset > limit)
{
<a asp-action="Broker" asp-route-offset="@(offset+limit)" asp-route-limit="@limit" asp-route-startDate="@startDate" asp-route-endDate="@endDate" asp-route-orderStatus="@Model.OrderStatus" asp-route-notOrderStatus="@Model.NotOrderStatus">next</a>
<a asp-action="Broker" asp-route-offset="@(offset+limit)" asp-route-limit="@limit" asp-route-startDate="@startDate" asp-route-endDate="@endDate" asp-route-email="@email" asp-route-orderStatus="@Model.OrderStatus" asp-route-notOrderStatus="@Model.NotOrderStatus">next</a>
}
<br/>
<a asp-action="Broker" asp-route-offset="-1" asp-route-limit="-1" asp-route-startDate="@startDate" asp-route-endDate="@endDate" asp-route-orderStatus="@Model.OrderStatus" asp-route-notOrderStatus="@Model.NotOrderStatus" asp-route-csv="true">csv</a>
<br />
<a asp-action="Broker" asp-route-offset="-1" asp-route-limit="-1" asp-route-startDate="@startDate" asp-route-endDate="@endDate" asp-route-email="@email" asp-route-orderStatus="@Model.OrderStatus" asp-route-notOrderStatus="@Model.NotOrderStatus" asp-route-csv="true">csv</a>
}
</div>
</div>
</div>
</div>
</div>

@section Scripts {
@await Html.PartialAsync("_PadDecimalsScriptsPartial")
<environment include="Development">
<script src="~/js/set-email.js" asp-append-version="true"></script>
</environment>
<environment exclude="Development">
<script src="~/js/set-email.min.js" asp-append-version="true"></script>
</environment>
}
2 changes: 1 addition & 1 deletion Views/Report/BrokerOrder.cshtml
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@
<tbody>
<tr>
<td>
@Model.KycRequestUrl
<a href="@Model.KycRequestUrl">@Model.KycRequestUrl</a>
</td>
</tr>
</tbody>
Expand Down
2 changes: 1 addition & 1 deletion Views/Report/_BrokerOrder.cshtml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
</a>
</td>
<td>
<a asp-controller="Internal" asp-action="UserInspect" asp-route-id="@order.ApplicationUserId">
<a href="#" class="set-email">
@order.User.Email
</a>
</td>
Expand Down
24 changes: 24 additions & 0 deletions wwwroot/js/set-email.js
Original file line number Diff line number Diff line change
@@ -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();
});
}
});
8 changes: 7 additions & 1 deletion wwwroot/js/site.js
Original file line number Diff line number Diff line change
Expand Up @@ -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();
});
});
Expand All @@ -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();
}
});
Expand Down

0 comments on commit 21d9ad4

Please sign in to comment.