You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

506 lines
23 KiB

using Swift.web.Library;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Threading.Tasks;
using System.Web.UI;
namespace Swift.web.DashboardV2
{
public partial class Dashboard2 : System.Web.UI.Page
{
private SwiftLibrary sl = new SwiftLibrary();
private RemittanceLibrary _remit = new RemittanceLibrary();
private static string TodaysSentPaidRole = "20221100";
private static string TransactionStaticsRole = "20221200";
private static string BranchTransactionRole = "20221300";
private static string CustomerOverviewRole = "20221400";
private static string ComplianceOfacRole = "20221500";
private static string AgentwiseNumberRole = "20221600";
//private static string UserwiseNumberRole = "20221700";
private static string customerKycStatus = "20221700";
private static string LawsonSummaryRole = "20221800";
protected void Page_Load(object sender, EventArgs e)
{
sl.CheckSession();
string methodName = Request.Form["MethodName"];
CheckRole();
if (!IsPostBack)
{
if (methodName == "GetDashboardData")
{
GetDashboardData();
// RegisterAsyncTask(new PageAsyncTask(GetDashboardDataAsync));
}
}
}
public async Task GetDashboardDataAsync()
{
Task.Factory.StartNew(() => GetDashboardData()).Wait();
}
private void CheckRole()
{
todaysSentPaidRoleDiv.Attributes.Remove("style");
transactionStaticsRoleDiv.Attributes.Remove("style");
branchTransactionRoleDiv.Attributes.Remove("style");
customerOverviewRoleDiv.Attributes.Remove("style");
complianceOfacRoleDiv.Attributes.Remove("style");
//agentWiseTxnRoleDiv.Attributes.Remove("style");
//userwiseDailyTxnRoleDiv.Attributes.Remove("style");
customerKycStatusList.Attributes.Remove("style");
//lawsonCardSummaryRoleDiv.Attributes.Remove("style");
//if (!sl.HasRight(TodaysSentPaidRole))
// todaysSentPaidRoleDiv.Attributes.Add("style", "display:none;");
//if (!sl.HasRight(TransactionStaticsRole))
// transactionStaticsRoleDiv.Attributes.Add("style", "display:none;");
//if (!sl.HasRight(BranchTransactionRole))
// branchTransactionRoleDiv.Attributes.Add("style", "display:none;");
//if (!sl.HasRight(CustomerOverviewRole))
// customerOverviewRoleDiv.Attributes.Add("style", "display:none;");
//if (!sl.HasRight(ComplianceOfacRole))
// complianceOfacRoleDiv.Attributes.Add("style", "display:none;");
////if (!sl.HasRight(AgentwiseNumberRole))
//// agentWiseTxnRoleDiv.Attributes.Add("style", "display:none;");
////if (!sl.HasRight(UserwiseNumberRole))
//// userwiseDailyTxnRoleDiv.Attributes.Add("style", "display:none;");
//if (!sl.HasRight(customerKycStatus))
// customerKycStatusList.Attributes.Add("style", "display:none;");
//if (!sl.HasRight(LawsonSummaryRole))
// lawsonCardSummaryRoleDiv.Attributes.Add("style", "display:none;");
}
private void GetDashboardData()
{
DashboardData data = new DashboardData();
string dateRange = Request.Form["DateRange"];
if (string.IsNullOrEmpty(dateRange))
{
data.Message = "Invalid Date Range!";
GetStatic.JsonResponse(data, this);
return;
}
if (!dateRange.Contains(" to "))
{
data.Message = "Invalid Date Range!";
GetStatic.JsonResponse(data, this);
return;
}
string fromDate = dateRange.Split(new string[] { " to " }, StringSplitOptions.None)[0];
string toDate = dateRange.Split(new string[] { " to " }, StringSplitOptions.None)[1];
string sql = "EXEC PROC_GET_DASHBOARD_DATA_V2 @Flag = 'Dashboard', @User = 'admin', @fromDate = " + sl.FilterString(fromDate) + ", @toDate = " + sl.FilterString(toDate);
DataSet ds = _remit.ExecuteDataset(sql);
if (ds.Tables == null || ds.Tables.Count <= 0)
{
data.Message = "Data is empty.";
GetStatic.JsonResponse(data, this);
return;
}
DataTable dt = ds.Tables[0];
//if (dt == null || dt.Rows.Count <= 0)
//{
// data.Message = "Data is empty.";
// GetStatic.JsonResponse(data, this);
// return;
//}
List<TxnData> txnData = new List<TxnData>();
//dt.AsEnumerable().Select(x => new TxnData()
//{
// cancelApprovedDate = (x["cancelApprovedDate"].ToString() ?? ""),
// createdDate = (x["createdDate"].ToString() ?? ""),
// id = (x["id"].ToString() ?? ""),
// monthNameTxn = x["monthNameTxn"].ToString(),
// paidDate = x["paidDate"].ToString(),
// payStatus = x["payStatus"].ToString(),
// pCountry = x["pCountry"].ToString(),
// sAgent = x["sAgent"].ToString(),
// sAgentName = x["sAgentName"].ToString(),
// tranStatus = x["tranStatus"].ToString(),
// tranType = x["tranType"].ToString(),
// createdBy = x["createdBy"].ToString(),
// actAsBranch = x["actAsBranch"].ToString(),
//}
// ).ToList();
foreach (DataRow item in dt.Rows)
{
txnData.Add(new TxnData
{
cancelApprovedDate = Convert.ToString(item["cancelApprovedDate"]),
createdDate = Convert.ToString(item["createdDate"]),
id = Convert.ToString(item["id"]),
monthNameTxn = Convert.ToString(item["monthNameTxn"]),
paidDate = Convert.ToString(item["paidDate"]),
payStatus = Convert.ToString(item["payStatus"]),
pCountry = Convert.ToString(item["pCountry"]),
sAgent = Convert.ToString(item["sAgent"]),
sAgentName = Convert.ToString(item["sAgentName"]),
tranStatus = Convert.ToString(item["tranStatus"]),
tranType = Convert.ToString(item["tranType"]),
createdBy = Convert.ToString(item["createdBy"]),
actAsBranch = Convert.ToString(item["actAsBranch"])
});
}
string todaysDate = DateTime.Now.ToString("MM-dd-yyyy");
//var listData = DataTableToList(dt).ToList();
data.TodaysSent = Convert.ToString(txnData.Where(x => x.createdDate == todaysDate).Count());
data.SevenDaysSent = txnData.Where(x => GetStatic.ParseDateTime(x.createdDate) < GetStatic.ParseDateTime(todaysDate)
&& GetStatic.ParseDateTime(x.createdDate) > GetStatic.ParseDateTime(todaysDate).Value.AddDays(-8))
.GroupBy(x => x.createdDate).Select(x => new { TxnCount = x.Count(), Day = x.Key })
.OrderBy(x => x.Day)
.ToList();
data.TodaysPaid = Convert.ToString(txnData.Where(x => x.paidDate == todaysDate
&& (x.tranStatus.ToLower() == "paid" || x.tranStatus.ToLower() == "paid")).Count());
data.SevenDaysPaid = txnData.Where(x => GetStatic.ParseDateTime(x.createdDate) < GetStatic.ParseDateTime(todaysDate)
&& GetStatic.ParseDateTime(x.createdDate) > GetStatic.ParseDateTime(todaysDate).Value.AddDays(-8)
&& (x.tranStatus.ToLower() == "paid" || x.tranStatus.ToLower() == "paid"))
.GroupBy(x => x.createdDate).Select(x => new { TxnCount = x.Count(), Day = x.Key })
.OrderBy(x => x.Day)
.ToList();
data.TodaysCancel = Convert.ToString(txnData.Where(x => x.cancelApprovedDate == todaysDate
&& (x.tranStatus.ToLower() == "cancel" || x.tranStatus.ToLower() == "cancel")).Count());
data.SevenDaysCancel = txnData.Where(x => GetStatic.ParseDateTime(x.createdDate) < GetStatic.ParseDateTime(todaysDate)
&& GetStatic.ParseDateTime(x.createdDate) > GetStatic.ParseDateTime(todaysDate).Value.AddDays(-8)
&& (x.tranStatus.ToLower() == "cancel" || x.tranStatus.ToLower() == "cancel"))
.GroupBy(x => x.createdDate).Select(x => new { TxnCount = x.Count(), Day = x.Key })
.OrderBy(x => x.Day)
.ToList();
data.MobileSent = Convert.ToString(txnData.Where(x => x.createdDate == todaysDate
&& x.tranType.ToLower() == "m").Count());
data.SevenDaysMobileSent = txnData.Where(x => GetStatic.ParseDateTime(x.createdDate) < GetStatic.ParseDateTime(todaysDate)
&& GetStatic.ParseDateTime(x.createdDate) > GetStatic.ParseDateTime(todaysDate).Value.AddDays(-8)
&& x.tranType.ToLower() == "m")
.GroupBy(x => x.createdDate).Select(x => new { TxnCount = x.Count(), Day = x.Key })
.OrderBy(x => x.Day)
.ToList();
data.TotalCounterTxn = Convert.ToString(txnData.Where(x => x.tranType.ToLower() == "m").Count());
data.TotalMobileTxn = Convert.ToString(txnData.Where(x => x.tranType.ToLower() == "i").Count());
//data.AgentWiseTxn = txnData.Where(x => x.tranStatus.ToLower() != "cancel" && x.actAsBranch.ToLower() != "y")
// .GroupBy(x => x.sAgentName)
// .Select(x => new { TxnCount = x.Count(), BranchName = x.Key })
// .OrderByDescending(x => x.TxnCount).ToList();
data.UserWiseTxn = txnData.Where(x => x.tranStatus.ToLower() != "cancel" && x.sAgentName != "JME Online"
&& GetStatic.ParseDateTime(x.createdDate) == GetStatic.ParseDateTime(todaysDate))
.GroupBy(x => x.createdBy)
.Select(x => new { TxnCount = x.Count(), UserName = x.Key })
.OrderByDescending(x => x.TxnCount).ToList();
data.BranchTxn = txnData.Where(x => x.tranStatus.ToLower() != "cancel" && x.actAsBranch.ToLower() == "y")
.GroupBy(x => x.sAgentName)
.Select(x => new { TxnCount = x.Count(), BranchName = x.Key })
.OrderByDescending(x => x.TxnCount).ToList();
//var countryTxn = txnData.Where(x => x.tranStatus.ToLower() != "cancel")
// .GroupBy(a => a.pCountry, x => x.monthNameTxn)
// .Select(x => new { TxnCount = x.Count(), CountryName = x.Key, MonthName = x.Key.ToList() }).ToList();
List<TransactionStatics> transactionStatics = new List<TransactionStatics>();
//while (txnData.Count > 0)
//{
// TransactionStatics statics = new TransactionStatics();
// statics.name = Convert.ToString(txnData.Select(x => x.pCountry).FirstOrDefault());
// //statics.dataOther = txnData.Where(x => x.pCountry.ToLower() == statics.name.ToLower() && x.tranStatus.ToLower() != "cancel")
// // .GroupBy(x => x.monthNameTxn)
// // .Select(x => new TransactionStaticsDetail { Month = x.Key, TxnCount = x.Count().ToString() }).ToList();
// statics.data = txnData.Where(x => x.pCountry.ToLower() == statics.name.ToLower() && x.tranStatus.ToLower() != "cancel")
// .GroupBy(x => x.monthNameTxn)
// .Select(x => x.Count().ToString()).ToList();
// txnData.RemoveAll(x => x.pCountry.ToLower() == statics.name.ToLower());
// transactionStatics.Add(statics);
//}
data.TransactionStatics = transactionStatics;
if (ds.Tables.Count > 1)
{
if (ds.Tables[1] != null && ds.Tables[1].Rows.Count > 0)
{
try
{
data.ComplianceData = new ComplianceData();
foreach (DataRow item in ds.Tables[1].Rows)
{
if(item["Head"].ToString().Contains("Mobile") || item["Head"].ToString().Contains("Web"))
{
data.ComplianceData.OFACComplianceMobileTxnsKycLater = Convert.ToString(item["Count"]);
}
else
{
data.ComplianceData.OFACComplianceTxns = Convert.ToString(item["Count"]);
}
}
}
catch (Exception ex)
{
data.ComplianceData = new ComplianceData();
}
}
}
if (ds.Tables.Count > 2)
{
if (ds.Tables[2] != null || ds.Tables[2].Rows.Count <= 0)
{
try
{
data.CustomerData = new CustomerData
{
TotalCustomers = GetStatic.ShowDecimalWithoutZero(Convert.ToString(ds.Tables[2].Rows[0]["TotalCustomers"])),
MobileCustomers = GetStatic.ShowDecimalWithoutZero(Convert.ToString(ds.Tables[2].Rows[0]["MobileCustomers"]))
};
data.TodaysRegistration = Convert.ToString(ds.Tables[2].Rows[0]["TodaysRegistration"]);
data.TodaysMobileRegistration = Convert.ToString(ds.Tables[2].Rows[0]["TodaysMobileRegistration"]);
data.TodaysMobileActivation = Convert.ToString(ds.Tables[2].Rows[0]["TodayMobileActivation"]);
}
catch (Exception ex)
{
data.CustomerData = new CustomerData();
}
}
}
if (ds.Tables.Count > 3)
{
if (ds.Tables[3] != null || ds.Tables[3].Rows.Count <= 0)
{
try
{
data.LawsonSummary = DataTableToList(ds.Tables[3]);
}
catch (Exception ex)
{
data.LawsonSummary = new object();
}
}
}
if (ds.Tables.Count > 4)
{
if (ds.Tables[4] != null || ds.Tables[4].Rows.Count <= 0)
{
try
{
var customerReglst = ds.Tables[4].AsEnumerable().ToList();
data.SevenDaysRegistration = customerReglst.Where(r => r.Field<string>("CustomerType").Equals("C"))
.Select(x => new { RegCount = x.Field<int>("RegCount").ToString(), Day = x.Field<string>("Day") }).ToList();
data.SevenDaysMobileRegistration = customerReglst.Where(r => r.Field<string>("CustomerType").Equals("M"))
.Select(x => new { RegCount = x.Field<int>("RegCount").ToString(), Day = x.Field<string>("Day") }).ToList();
data.SevenDaysMobileActivation = customerReglst.Where(r => r.Field<string>("CustomerType").Equals("A"))
.Select(x => new { RegCount = x.Field<int>("RegCount").ToString(), Day = x.Field<string>("Day") }).ToList();
}
catch (Exception ex)
{
data.LawsonSummary = new object();
}
}
}
if (ds.Tables.Count > 5)
{
if (ds.Tables[5] != null || ds.Tables[5].Rows.Count <= 0)
{
data.TransactionStatics1 = new Root();
data.Months = ds.Tables[5].AsEnumerable()
.Select(x => x.Field<string>("month_name")).ToList();
data.MonthsValues = ds.Tables[5].AsEnumerable()
.Select(x => x.Field<int>("Month_count").ToString()).ToList();
}
}
if (ds.Tables.Count > 6)
{
if (ds.Tables[6] != null || ds.Tables[6].Rows.Count <= 0)
{
data.AgentWiseTxn = ds.Tables[6].AsEnumerable()
.Select(x => new { BranchName= x.Field<string>("sAgentName"), CurrentMonth = (x.Field<int>("CurrentMonth")).ToString(), PreviousMonth = (x.Field<int>("PreviousMonth")).ToString() })
.ToList();
}
}
if (ds.Tables.Count > 7)
{
if (ds.Tables[7] != null || ds.Tables[7].Rows.Count <= 0)
{
try
{
data.KycStatus = new KycStatus
{
KycNotCompleted = Convert.ToString(ds.Tables[7].Rows[0]["kycNotCompleted"]),
KycProcessing = Convert.ToString(ds.Tables[7].Rows[0]["kycProcessing"]),
KycCompleted = Convert.ToString(ds.Tables[7].Rows[0]["kycCompleted"])
};
}
catch (Exception ex)
{
data.KycStatus = new KycStatus();
}
}
}
GetStatic.JsonResponse(data, this);
}
public List<Dictionary<string, object>> DataTableToList(DataTable table)
{
var list = new List<Dictionary<string, object>>();
if (table == null)
return list;
foreach (DataRow row in table.Rows)
{
var dict = new Dictionary<string, object>();
foreach (DataColumn col in table.Columns)
{
dict[col.ColumnName] = string.IsNullOrEmpty(row[col].ToString()) ? "" : row[col];
}
list.Add(dict);
}
return list;
}
public class TxnData
{
internal string actAsBranch;
public string createdDate { get; set; }
public string sAgent { get; set; }
public string sAgentName { get; set; }
public string pCountry { get; set; }
public string tranType { get; set; }
public string tranStatus { get; set; }
public string payStatus { get; set; }
public string paidDate { get; set; }
public string cancelApprovedDate { get; set; }
public string monthNameTxn { get; set; }
public string id { get; set; }
public string createdBy { get; set; }
}
public class DashboardData
{
public object UserWiseTxn { get; set; }
public object LawsonSummary { get; set; }
public string TodaysSent { get; set; }
public object SevenDaysSent { get; set; }
public string TodaysPaid { get; set; }
public object SevenDaysPaid { get; set; }
public string TodaysCancel { get; set; }
public string TodaysRegistration { get; set; }
public string TodaysMobileRegistration { get; set; }
public string TodaysMobileActivation { get; set; }
public object SevenDaysCancel { get; set; }
public string MobileSent { get; set; }
public object SevenDaysMobileSent { get; set; }
public object SevenDaysMobileRegistration { get; set; }
public object SevenDaysRegistration { get; set; }
public object SevenDaysMobileActivation { get; set; }
public List<TransactionStatics> TransactionStatics { get; set; }
public Root TransactionStatics1 { get; set; }
public List<string> Months { get; set; }
public List<string> MonthsValues { get; set; }
public object AgentWiseTxn { get; set; }
public string TotalCounterTxn { get; set; }
public string TotalMobileTxn { get; set; }
public object BranchTxn { get; set; }
public ComplianceData ComplianceData { get; set; }
public CustomerData CustomerData { get; set; }
public KycStatus KycStatus { get; set; }
public string Message { get; set; }
}
public class ComplianceData
{
public string OFACComplianceTxns { get; set; }
public string OFACComplianceMobileTxns { get; set; }
public string OFACComplianceMobileTxnsKycLater { get; set; }
//public string OFACComplianceMobileTxnsKycNow { get; set; }
}
public class CustomerData
{
public string TotalCustomers { get; set; }
public string MobileCustomers { get; set; }
}
public class TransactionStatics
{
public string name { get; set; }
public List<TransactionStaticsDetail> dataOther { get; set; }
public List<string> data { get; set; }
}
public class KeyValue
{
public string x { get; set; }
public string y { get; set; }
}
public class Root
{
public List<KeyValue> data { get; set; }
}
public class TransactionStaticsDetail
{
public string Month { get; set; }
public string TxnCount { get; set; }
}
public class BranchWiseTxn
{
public string BranchName { get; set; }
public string TxnCount { get; set; }
}
public class KycStatus
{
public string KycNotCompleted { get; set; }
public string KycProcessing { get; set; }
public string KycCompleted { get; set; }
}
}
}