Здравствуйте!
Что бы доработать формирование одного из отчетов web-сервиса, исходников которого нет, возник вариант перенести код C# из файла .aspx.cs, который компилируется предварительно, в файл .aspx, который должен компилироваться динамически IIS.
В интернете нашел инфу с примерами, но примеры очень примитивные не используют объекты классов, а только методы.
Возник вопрос как перенести код, который использует объекты других классов?
Неужели нужно переносить коды всех классов, которые используются или можно как-то к ним обращаться из .aspx?
Можно ли вообще описывать классы в .aspx или только методы?
Вообще возможно ли это в моем случае?
Код класса, который пытаюсь перенести в .aspx:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
356.
357.
358.
359.
360.
361.
362.
363.
364.
365.
366.
367.
368.
369.
370.
371.
372.
373.
374.
375.
376.
377.
378.
379.
380.
381.
382.
383.
384.
385.
386.
387.
388.
389.
390.
using System;
using System.Collections;
using System.Web.UI.WebControls;
using ErrorBuilder;
using InMeta.Comparer.Estate;
using Integro.InMeta.Estate.Forms.EstateRent;
using Integro.InMeta.Runtime;
using Integro.InMeta.Web;
using Integro.MyTableRender;
public partial class EstateDebitorsListBySubRgnNew : WebPage
{
private class ItogByAllContract
{
public int DebitContractCount = 0;
public int CreditContractCount = 0;
public decimal DebitSum = 0;
public decimal CreditSum = 0;
public decimal FixedDebitSum = 0;
public decimal FixedCreditSum = 0;
}
private readonly ItogByAllContract itogsByAllContract = new ItogByAllContract();
private string SubRgnName
{
get{
string result;
if (ddSubRgnList.SelectedValue == "all"){
result = "по всем районам";
}
else{
result = string.Format("в {0} районе", ddSubRgnList.SelectedItem.Text.Replace("ий", "ом"));
}
return result;
}
}
private string ContractStateKindText
{
get { return ddContractStateKindList.SelectedItem.Text; }
}
private double FSumArea = 0;
private decimal FSumMonthPayment = 0;
private decimal FSumPaymentCharge = 0;
private decimal FSumPayment = 0;
private decimal FSumWriteOff = 0;
private decimal FSumTransfer = 0;
private decimal FSumBalance = 0;
private decimal FSumPenlaty = 0;
private decimal FSumPaymentTransferPrevPeriods = 0;
private int FDebtMonthCount = 0;
private decimal FDebtSum = 0;
private DateTime FCurrentDate;
private DateTime FStartDate = new DateTime(2008, 01,01);
private decimal FLastBalanceValue = 0;
private decimal FCorrectionBalanceValue = 0;
private int FActiveContract = 0;
private int FContractWithoutCharges = 0;
private decimal FSumPenaltyCharges = 0;
private decimal FSumPenaltyPayments = 0;
private decimal FSumPenaltyWriteOff = 0;
private decimal FSumPenaltyStartBalance = 0;
decimal FSumPenaltyStartBalancePrevSums = 0;
private decimal FSumPenaltyTransfered = 0;
private decimal FSumPaymentPenaltyTransferPrevPeriods = 0;
protected void Page_Load(object sender, EventArgs e)
{
ReportPanel.Visible = false;
PolicyFailedInfoPanel.Visible = false;
if (!Session.IsPolicyEnabled("UseEstateChargesAndPaymentsReports")){
PolicyFailedInfoPanel.Visible = true;
return;
}
ReportPanel.Visible = true;
if (IsPostBack){
FStartDate = new DateTime(Convert.ToDateTime(DateEditor.Text).Year, 01, 01);
}
else{
DateEditor.Text = DateTime.Today.ToShortDateString();
string RegionID = Session.Application.Settings.GetLocalSettings("RegionID", "00018019E1C5");
DataObjectList subRgnList = Session["General/SubRgn"].Query("<Name/>", "Region = '" + RegionID + "'");
foreach (DataObject subRgn in subRgnList){
ListItem item = new ListItem(subRgn.GetString("Name"), subRgn.Id.ToString());
ddSubRgnList.Items.Add(item);
}
}
}
protected void OKBtn_Click(object sender, EventArgs e)
{
FCurrentDate = Convert.ToDateTime(DateEditor.Text);
if (!ParamsFillIsCorrect()){
Response.Write("Неверно введен один из параметров");
return;
}
if (EdtMonthCount.Text != ""){
FDebtMonthCount = Convert.ToInt32(EdtMonthCount.Text);
}
if (EdtDebtSum.Text != ""){
FDebtSum = Convert.ToDecimal(EdtDebtSum.Text);
}
string SubRgnConditions = "";
if (ddSubRgnList.SelectedValue != "all"){
SubRgnConditions = " and BuildingID.General_PostAddr.SubRgn = '" + ddSubRgnList.SelectedValue+"'";
}
DataObjectList processList = Session[EstateRentClasses.Process].Query(
"<RentContractProcessKind>" +
"<Abbreviation/>" +
"</RentContractProcessKind>" +
"<Estate_RentContract>" +
"<ContractNo/>" +
"<ContractCode/>" +
"</Estate_RentContract>" +
"<Estate_RentPretender>" +
"<Subject>" +
"<query-view name='PostAddrView'/>" +
"<Inn/>"+
"<SocialNo/>"+
"</Subject>" +
"</Estate_RentPretender>" +
"<Estate_RentObject>" +
"<RentArea/>" +
"</Estate_RentObject>" +
"<Estate_RentCalculation>" +
"<RentCalculatedPayment/>" +
"</Estate_RentCalculation>" +
"<Estate_RentPayment>" +
"<RentPaymentValue/>" +
"</Estate_RentPayment>" +
"<Estate_RentPaymentCharge>" +
"<OwnerPayment/>" +
"</Estate_RentPaymentCharge>" +
"<BuildingID>" +
"<General_PostAddr>" +
"<SubRgn/>" +
"</General_PostAddr>" +
"</BuildingID>",
"RentContractProcessKind.Abbreviation = 'ДА' " + SubRgnConditions);
if (processList.Count == 0){
Response.Write("<font color='red'>По данному району договоров не найдено</font>");
return;
}
TableRender table = new TableRender(holder, "<h5>Привееет " + ContractStateKindText +
" договорам аренды помещений, расположенных " + SubRgnName + " г. Оренбурга по состоянию на " +
FCurrentDate.ToShortDateString() + "</h5>");
ReportErrorsBuilder errorsBuilder = new ReportErrorsBuilder("EstateDebitorsListBySubRgnNew");
FormingHeaderDataTable(table);
FormingDataTable(processList, table, errorsBuilder);
FillItogInformation(table);
FormingErrors(errorsBuilder);
btnExportToExcel.Enabled = true;
btnExportToWord.Enabled = true;
}
private void FormingErrors(ReportErrorsBuilder errorsBuilder)
{
if(errorsBuilder.ErrorIsExist) {
LblErrorCaption.Visible = true;
HyperLinkError.Visible = true;
string logfilePath = errorsBuilder.CreateErrorTableFile();
LblErrorCaption.Text = "<font color='red'>При формировании отчета возникли ошибки</font>";
HyperLinkError.Text = "Просмотреть ошибки";
HyperLinkError.NavigateUrl = logfilePath;
LblErrorCaption.Visible = true;
HyperLinkError.Visible = true;
}
}
private void GetSubRgnNameAndFillRow(string subRgnId, TableRender table)
{
if (ddSubRgnList.SelectedValue == "all"){
if (subRgnId != "000000000001"){
DataObject subRgn = Session["General/SubRgn"].GetObject(new DataId(subRgnId));
SetSubRgnRow(table, subRgn.GetString("Name"));
}
else{
SetSubRgnRow(table, "Район не задан");
}
}
}
private void SortProcessBySubRgn(DataObjectList processList, Hashtable ProcessBySubRgnList)
{
foreach (DataObject process in processList){
DataObject lastProcessInHierarchy = WorkUtils.GetEstateLastDSVI(process);
if (!ContractStateKindIsCorrect(lastProcessInHierarchy)){
continue;
}
SortingProcessBySubRgn(lastProcessInHierarchy, ProcessBySubRgnList);
}
}
private BalanceInfoForProcess FormingData(DataObject process)
{
BalanceInfoForProcess infoByRCP = FinishBalanceInfoCalculator.GetCalculatedBalance(process, FStartDate, FCurrentDate);
return infoByRCP;
}
private decimal GetPenaltyTransferedSum(BalanceInfoForProcess infoByRCP)
{
decimal penaltyTransferSum = 0;
foreach (TransferSumInfo transferSumInfo in infoByRCP.TransferSumInfos)
{
if (!transferSumInfo.IsPenalty) continue;
penaltyTransferSum += GetTransferSumByPayment(transferSumInfo);
penaltyTransferSum += GetTransferSumByDebt(transferSumInfo);
}
return penaltyTransferSum;
}
private decimal GetTransferSumByDebt(TransferSumInfo transferSumInfo)
{
decimal transferSum = 0;
if (transferSumInfo.TransferSumKind == TransferSumKind.Debt)
{
if (transferSumInfo.TransferSumLocation == TransferSumLocation.FromContract)
{
transferSum += transferSumInfo.TransferSum;
}
if (transferSumInfo.TransferSumLocation == TransferSumLocation.ToContract)
{
transferSum += transferSumInfo.TransferSum * -1;
}
}
return transferSum;
}
private decimal GetTransferSumByPayment(TransferSumInfo transferSumInfo)
{
decimal transferSum = 0;
if (transferSumInfo.TransferSumKind == TransferSumKind.Payment)
{
if (transferSumInfo.TransferSumLocation == TransferSumLocation.FromContract){
transferSum += transferSumInfo.TransferSum * -1;
}
if (transferSumInfo.TransferSumLocation == TransferSumLocation.ToContract){
transferSum += transferSumInfo.TransferSum;
}
}
return transferSum;
}
private void SetSubRgnRow(TableRender table, string subRgnName)
{
TableRow row = new TableRow();
table.AddReportCell(row, "<b>" + subRgnName + " район</b>", 13, HorizontalAlign.Center);
table.TableReport.Rows.Add(row);
}
private void SortingProcessBySubRgn(DataObject lastDsvi, Hashtable ProcessBySubRgnList)
{
DataObject building = lastDsvi.GetLink("BuildingID");
DataObject buildingAddr = building.GetChilds(EstateRentClasses.PostAddr).First;
string subRgnId;
if (!buildingAddr["SubRgn"].IsNull){
subRgnId = buildingAddr.GetLink("SubRgn").Id.ToString();
}
else{
subRgnId = "000000000001";
}
if (ProcessBySubRgnList.ContainsKey(subRgnId)){
ArrayList processList = (ArrayList)ProcessBySubRgnList[subRgnId];
processList.Add(lastDsvi);
}
else{
ArrayList processList = new ArrayList();
processList.Add(lastDsvi);
ProcessBySubRgnList.Add(subRgnId, processList);
}
}
private bool ParamsFillIsCorrect()
{
bool result = true;
if (EdtMonthCount.Text != ""){
try{
Convert.ToInt32(EdtMonthCount.Text);
}
catch { result = false; }
}
if (EdtDebtSum.Text != ""){
try{
Convert.ToDecimal(EdtDebtSum.Text);
}
catch { result = false; }
}
return result;
}
private bool ProcessIsRightConditions(DataObject process, BalanceInfoForProcess infoByRCP)
{
bool result = true;
if (ddDebtKindList.SelectedValue != "all"){
if (ddDebtKindList.SelectedValue == "debt" && infoByRCP.FinishBalanceValue <= 0){
result = false;
}
if ((ddDebtKindList.SelectedValue == "credit") && (infoByRCP.FinishBalanceValue >= 0)){
result = false;
}
}
if (FDebtMonthCount > 0 && FDebtMonthCount > GetMonthCountDebt(process, infoByRCP)){
result = false;
}
if (FDebtSum > 0 && FDebtSum > infoByRCP.FinishBalanceValue){
result = false;
}
return result;
}
private void FillDataTable(TableRender table, DataObject process, DataObject lastDsvi, BalanceInfoForProcess infoByRCP)
{
FActiveContract++;
TableRow dataRow = new TableRow();
table.AddReportCell(dataRow, GetContractNo(process));
table.AddReportCell(dataRow, GetContractCode(process));
table.AddReportCell(dataRow, GetPretenderName(lastDsvi));
table.TableReport.Rows.Add(dataRow);
}
private string GetPretenderName(DataObject process)
{
DataObjectChildList pretenderChildList = process.GetChilds(EstateRentClasses.Pretender);
if(pretenderChildList.Count == 0){
return string.Empty;
}
DataObject pretender = pretenderChildList.First;
if (pretender["Subject"].IsNull){
return string.Empty;
}
return pretender.GetLink("Subject").GetViewHtml("PostAddrView");
}
private string GetContractCode(DataObject process)
{
if(!process["RootRCP"].IsNull) {
process = process.GetLink("RootRCP");
}
return EstateUtils.GetContract(process).GetString("ContractCode", string.Empty);
}
private string GetContractNo(DataObject process)
{
if (!process["RootRCP"].IsNull){
process = process.GetLink("RootRCP");
}
return EstateUtils.GetContract(process).GetString("ContractNo", string.Empty);
}
private void FormingHeaderDataTable(TableRender table)
{
TableRow row = new TableRow();
table.AddReportCell(row, "<b>Номер договора</b>");
table.AddReportCell(row, "<b>Шифр</b>");
table.AddReportCell(row, "<b>Арендатор</b>");
table.TableReport.Rows.Add(row);
}
}