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.
442 lines
16 KiB
442 lines
16 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using Swift.web.Component.Grid;
|
|
using Swift.web.Component.Grid.gridHelper;
|
|
using Swift.web.Library;
|
|
using Swift.DAL.BL.Remit.BranchRating;
|
|
using System.Data;
|
|
using System.Web.UI.WebControls;
|
|
using System.Text;
|
|
using Swift.DAL.SwiftDAL;
|
|
using System.Web;
|
|
using System.Web.UI;
|
|
using System.Text.RegularExpressions;
|
|
|
|
namespace Swift.web.Remit.RiskBaseAnalysis.BranchRatingNEW
|
|
{
|
|
public partial class print : System.Web.UI.Page
|
|
{
|
|
protected const string GridName = "grid_branchRatingNEW";
|
|
private string ViewFunctionId = "20191600,40241200";
|
|
private string AddEditFunctionId = "20191610";
|
|
|
|
private readonly SwiftGrid _grid = new SwiftGrid();
|
|
private readonly RemittanceLibrary _sl = new RemittanceLibrary();
|
|
private readonly BranchRatingNEWDao obj = new BranchRatingNEWDao();
|
|
string type = "";
|
|
bool ctrlEnable;
|
|
|
|
protected void Page_Load(object sender, EventArgs e)
|
|
{
|
|
_sl.CheckSession();
|
|
type = GetStatic.ReadQueryString("type", "").ToLower();
|
|
|
|
if (!IsPostBack)
|
|
{
|
|
Authenticate();
|
|
printRatingDetails();
|
|
trratingDetails.Visible = true;
|
|
|
|
trRatingComment.Visible = true;
|
|
trReviewercomment.Visible = true;
|
|
trApproverComment.Visible = true;
|
|
|
|
loadgrid(type);
|
|
|
|
}
|
|
if (type == "rating" || type == "review" || type == "approve" || type == "print")
|
|
loadgrid(type, true);
|
|
}
|
|
|
|
void printRatingDetails()
|
|
{
|
|
Branch.Text = GetStatic.ReadQueryString("bName", "");
|
|
ReviewPeriod.Text = GetStatic.ReadQueryString("rPeriod", "");
|
|
Reviewedon.Text = GetStatic.ReadQueryString("ron", "");
|
|
Reviewer.Text = GetStatic.ReadQueryString("r", "");
|
|
|
|
ratedby.Text = GetStatic.ReadQueryString("ratedby", "");
|
|
ratedOn.Text = GetStatic.ReadQueryString("ratedon", "");
|
|
|
|
approvedBy.Text = GetStatic.ReadQueryString("appby", "");
|
|
approvedOn.Text = GetStatic.ReadQueryString("appon", "");
|
|
|
|
}
|
|
|
|
private void Authenticate()
|
|
{
|
|
_sl.CheckAuthentication(ViewFunctionId + "," + AddEditFunctionId);
|
|
}
|
|
|
|
void loadgrid(string actionType, bool isPagePostBack = false)
|
|
{
|
|
DataSet ds = null;
|
|
|
|
var brDetaildId = GetStatic.ReadQueryString("brId", "");
|
|
var branchId = GetStatic.ReadQueryString("bId", "");
|
|
|
|
ds = obj.ratingCriteria(GetStatic.GetUser(), branchId, brDetaildId);
|
|
|
|
ctrlEnable = (!isPagePostBack) ? true : ctrlEnable;
|
|
|
|
if (null != ds)
|
|
{
|
|
if (ds.Tables.Count > 2)
|
|
{
|
|
DataTable scoringCriteria = ds.Tables[2];
|
|
for (int i = 0; i < scoringCriteria.Rows.Count; i++)
|
|
{
|
|
hdnscoringCriteria.Value += scoringCriteria.Rows[i]["scoreTo"].ToString() + ":" + scoringCriteria.Rows[i]["rating"].ToString() + ":";
|
|
}
|
|
}
|
|
|
|
if (!isPagePostBack)
|
|
{
|
|
|
|
string expression = "type = 'C'";
|
|
DataRow[] drows;
|
|
drows = ds.Tables[0].Select(expression);
|
|
|
|
|
|
if (drows[0]["ratingDate"].ToString() != "")
|
|
{
|
|
ratingComment.InnerText = drows[0]["ratingComment"].ToString();
|
|
trRatingComment.Visible = true;
|
|
ctrlEnable = false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
WriteRow(ds, ctrlEnable);
|
|
PrintSummaryTable(ds);
|
|
}
|
|
if (actionType == "riskhistory" || actionType == "approve" || actionType == "print")
|
|
{
|
|
string expression = "type = 'C'";
|
|
DataRow[] drows;
|
|
drows = ds.Tables[0].Select(expression);
|
|
|
|
|
|
if (drows[0]["reviewedDate"].ToString() != "")
|
|
{
|
|
trReviewercomment.Visible = true;
|
|
reviewersComment.InnerText = drows[0]["reviewerComment"].ToString();
|
|
}
|
|
|
|
if (drows[0]["approvedDate"].ToString() != "")
|
|
{
|
|
trApproverComment.Visible = true;
|
|
|
|
approversComment.InnerText = drows[0]["approverComment"].ToString();
|
|
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|
|
void WriteRow(DataSet ds, bool ctrlEnable)
|
|
{
|
|
bool isControlReadOnly = true; //ctrlEnable; //(actionType == "rating") ? true : false;
|
|
|
|
myData.CssClass = "TBL";
|
|
myData.Rows.Clear();
|
|
|
|
// Header
|
|
var tr = new TableRow();
|
|
tr.Style.Add("background-color", "#cccccc");
|
|
|
|
var td = new TableCell();
|
|
td.ColumnSpan = 2;
|
|
td.Text = "Risk Category";
|
|
td.Style.Add(HtmlTextWriterStyle.TextAlign, "center");
|
|
tr.Cells.Add(td);
|
|
|
|
td = new TableCell();
|
|
td.ColumnSpan = 2;
|
|
td.Text = "Scoring";
|
|
td.Style.Add(HtmlTextWriterStyle.TextAlign, "center");
|
|
tr.Cells.Add(td);
|
|
|
|
myData.Rows.Add(tr);
|
|
|
|
tr = new TableRow();
|
|
tr.Style.Add("background-color", "#333333");
|
|
td = new TableCell();
|
|
td.ColumnSpan = 2;
|
|
td.Text = "";
|
|
tr.Cells.Add(td);
|
|
|
|
td = new TableCell();
|
|
td.Text = "Marks (1-5)";
|
|
td.Style.Add(HtmlTextWriterStyle.TextAlign, "center");
|
|
td.Style.Add(HtmlTextWriterStyle.Color, "white");
|
|
tr.Cells.Add(td);
|
|
|
|
td = new TableCell();
|
|
td.Text = "Remarks";
|
|
td.Style.Add(HtmlTextWriterStyle.TextAlign, "center");
|
|
td.Style.Add(HtmlTextWriterStyle.Color, "white");
|
|
tr.Cells.Add(td);
|
|
myData.Rows.Add(tr);
|
|
|
|
int index = 0;
|
|
int subCatIndex = 0;
|
|
var Category = "";
|
|
foreach (DataRow item in ds.Tables[0].Rows)
|
|
{
|
|
index++;
|
|
|
|
tr = new TableRow();
|
|
|
|
if (item["type"].ToString() == "A")
|
|
{
|
|
td = new TableCell();
|
|
td.ColumnSpan = 4;
|
|
td.Text = item["description"].ToString();
|
|
Category = item["summaryDescription"].ToString();
|
|
tr.Style.Add("background-color", "Red");
|
|
td.Style.Add(HtmlTextWriterStyle.TextAlign, "center");
|
|
td.Style.Add(HtmlTextWriterStyle.Color, "white");
|
|
td.Style.Add(HtmlTextWriterStyle.FontWeight, "bold");
|
|
tr.Cells.Add(td);
|
|
|
|
subCatIndex = 0;
|
|
}
|
|
else if (item["type"].ToString() == "B")
|
|
{
|
|
subCatIndex++;
|
|
|
|
|
|
string expression = "ParentId = '" + item["ParentId"] + "' and type = 'C'";
|
|
DataRow[] foundRows;
|
|
foundRows = ds.Tables[0].Select(expression); // Use the Select method to find all rows matching the filter.
|
|
|
|
td = new TableCell();
|
|
td.RowSpan = foundRows.Length + 1;
|
|
td.Text = subCatIndex.IntToLetter();
|
|
td.CssClass = "tdSubCatIndex";
|
|
tr.Cells.Add(td);
|
|
|
|
td = new TableCell();
|
|
td.CssClass = "tdContent";
|
|
td.Text = item["description"].ToString();
|
|
td.Style.Add("font-weight", "bold");
|
|
td.Width = 400;
|
|
tr.Cells.Add(td);
|
|
|
|
td = new TableCell();
|
|
td.Text = "";
|
|
td.ColumnSpan = 2;
|
|
td.Width = 200;
|
|
tr.Cells.Add(td);
|
|
|
|
}
|
|
else if (item["type"].ToString() == "C")
|
|
{
|
|
td = new TableCell();
|
|
td.CssClass = "tdContent";
|
|
|
|
HiddenField hdnId = new HiddenField();
|
|
hdnId.Value = item["rowId"].ToString();
|
|
hdnId.ID = "hdn_" + index.ToString();
|
|
td.Controls.Add(hdnId);
|
|
|
|
System.Web.UI.HtmlControls.HtmlGenericControl dvContent =
|
|
new System.Web.UI.HtmlControls.HtmlGenericControl("DIV");
|
|
dvContent.Style.Add(HtmlTextWriterStyle.Width, "500px");
|
|
dvContent.Attributes.Add("class", "tdContent");
|
|
dvContent.InnerHtml = "<i>(" + Convert.ToInt32(item["displayOrder"].ToString()).ToRomanNumeral() + ") " + item["description"].ToString() + "</i>";
|
|
|
|
td.Controls.Add(dvContent);
|
|
tr.Cells.Add(td);
|
|
|
|
td = new TableCell();
|
|
td.CssClass = "tdddl";
|
|
var ddl = new DropDownList();
|
|
ddl.ID = "ddl_" + index.ToString();
|
|
//ddl.Width = 100;
|
|
ddl.CssClass = "ddl";
|
|
ddl.Items.Insert(0, new ListItem("Select", ""));
|
|
for (int i = 0; i <= 5; i++)
|
|
{
|
|
ddl.Items.Insert(i + 1, new ListItem((i).ToString("0.00") + " - " + ((i == 0 || i == 1) ? "Low" : (i == 2 || i == 3) ? "Medium" : "High"), (i).ToString("0.00")));
|
|
}
|
|
|
|
ddl.SelectedValue = item["score"].ToString();
|
|
ddl.Enabled = false;
|
|
td.Controls.Add(ddl);
|
|
tr.Cells.Add(td);
|
|
|
|
td = new TableCell();
|
|
var txt = new System.Web.UI.HtmlControls.HtmlGenericControl("DIV"); //new TextBox();
|
|
txt.ID = "txt_" + index.ToString();
|
|
//txt.Width = 300;
|
|
//txt.CssClass = "RemarksTextBox";
|
|
//txt.TextMode = TextBoxMode.MultiLine;
|
|
//txt.Rows = 3;
|
|
txt.InnerText = item["remarks"].ToString();
|
|
td.Controls.Add(txt);
|
|
tr.Cells.Add(td);
|
|
}
|
|
|
|
|
|
myData.Rows.Add(tr);
|
|
|
|
}
|
|
hdnRowsCount.Value = index.ToString();
|
|
|
|
}
|
|
|
|
void PrintSummaryTable(DataSet ds)
|
|
{
|
|
|
|
Dictionary<string, decimal> CatTotalList = new Dictionary<string, decimal>();
|
|
|
|
//string[,] weight = new string[,] { {"","","","" }, { } };
|
|
|
|
var catWeightList = new ItemList<string, decimal>();
|
|
//ItemList<string, decimal> subCatTotalList;
|
|
|
|
var maxScore = 5;
|
|
var totalMaxScore = 0; // maxScore*itemCount
|
|
decimal totalScore = 0;
|
|
decimal Score = 0;
|
|
|
|
string strTable = @" <table runat='server' id='tblSummary' width='300px'>
|
|
<tr>
|
|
<th width='200px' style='text-align: left;'>
|
|
Risk Category
|
|
</th>
|
|
<th width='50px' style='text-align: left;'>
|
|
Score
|
|
</th>
|
|
<th width='50px' style='text-align: left;'>
|
|
Rating
|
|
</th>
|
|
</tr>";
|
|
|
|
|
|
if (ds.Tables.Count > 1 && ds.Tables[1].Rows.Count > 1)
|
|
{
|
|
DataTable dtSummary = ds.Tables[1];
|
|
if (dtSummary.Rows.Count > 1)
|
|
{
|
|
for (int i = 0; i < dtSummary.Rows.Count; i++)
|
|
{
|
|
decimal score;
|
|
decimal ratingScore = 0;
|
|
|
|
if (decimal.TryParse(dtSummary.Rows[i]["score"].ToString(), out score))
|
|
ratingScore = score;
|
|
|
|
strTable += "<tr class='" + rating(ratingScore).ToLower() + "'><td>";
|
|
strTable += dtSummary.Rows[i]["riskCategory"].ToString() + "</td><td>";
|
|
|
|
strTable += ratingScore.ToString("0.00") + "</td><td>" + rating(ratingScore) + "</td></tr>";
|
|
}
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
|
|
string expression = "type = 'A'";
|
|
DataRow[] Category;
|
|
Category = ds.Tables[0].Select(expression);
|
|
int index = 0;
|
|
|
|
|
|
foreach (var item in Category)
|
|
{
|
|
|
|
index++;
|
|
|
|
strTable += "<tr><td>";
|
|
strTable += item["summaryDescription"].ToString() + "</td><td>";
|
|
catWeightList.Add(item["summaryDescription"].ToString(), Convert.ToDecimal(item["weight"].ToString()));
|
|
|
|
string expression1 = "ParentId Like '" + index.ToString() + ".%' and type = 'B'";
|
|
DataRow[] SubCategory;
|
|
SubCategory = ds.Tables[0].Select(expression1);
|
|
|
|
decimal subCatWeight = Convert.ToDecimal(item["weight"].ToString()) / SubCategory.Length;
|
|
|
|
int subCatIndex = 0;
|
|
|
|
//subCatTotalList = new ItemList<string, decimal>();
|
|
|
|
Dictionary<string, decimal> subCatTotalList = new Dictionary<string, decimal>();
|
|
|
|
foreach (var subCat in SubCategory)
|
|
{
|
|
subCatIndex++;
|
|
|
|
expression = "ParentId Like '" + index.ToString() + "." + subCatIndex.ToString() + "' and type = 'C'";
|
|
DataRow[] foundRows;
|
|
foundRows = ds.Tables[0].Select(expression);
|
|
|
|
var itemCount = foundRows.Length;
|
|
totalMaxScore = maxScore * itemCount;
|
|
|
|
decimal subTotal = 0;
|
|
|
|
foreach (var row in foundRows)
|
|
{
|
|
|
|
if (decimal.TryParse(row["score"].ToString(), out Score))
|
|
subTotal += Score;
|
|
}
|
|
|
|
subCatTotalList.Add(subCatIndex.IntToLetter(), (subTotal / totalMaxScore) * subCatWeight);
|
|
|
|
}
|
|
|
|
decimal subCatTotal = 0;
|
|
|
|
foreach (KeyValuePair<string, decimal> kvp in subCatTotalList)
|
|
{
|
|
subCatTotal += kvp.Value;
|
|
}
|
|
|
|
var score = (subCatTotal / Convert.ToDecimal(item["weight"].ToString())) * maxScore;
|
|
|
|
strTable += (score).ToString("0.00") + "</td><td>" + rating(score) + "</td></tr>";
|
|
totalScore += score * Convert.ToDecimal(item["weight"].ToString()) / 100;
|
|
|
|
}
|
|
|
|
strTable += "<tr><td>";
|
|
strTable += "Overall " + "</td><td>";
|
|
|
|
strTable += (totalScore).ToString("0.00") + "</td><td>" + rating(totalScore) + "</td></tr>";
|
|
}
|
|
|
|
strTable += "</table>";
|
|
|
|
divSummary.InnerHtml = strTable;
|
|
|
|
}
|
|
|
|
string rating(decimal score)
|
|
{
|
|
string result = "";
|
|
|
|
string[] scoringCriteria = hdnscoringCriteria.Value.Split(':');
|
|
|
|
if (scoringCriteria.Length >= 3)
|
|
{
|
|
if (score <= Convert.ToDecimal(scoringCriteria[0]))
|
|
result = scoringCriteria[1];
|
|
else if (score <= Convert.ToDecimal(scoringCriteria[2]))
|
|
result = scoringCriteria[3];
|
|
else if (score > Convert.ToDecimal(scoringCriteria[2]))
|
|
result = scoringCriteria[5];
|
|
}
|
|
return result;
|
|
}
|
|
|
|
}
|
|
|
|
}
|