예제 #1
0
        protected void btnStep2_Click(object sender, EventArgs e)
        {
            step11.Visible = false;
            step22.Visible = false;
            step33.Visible = true;
            expenseListHref1.Attributes["class"]  = "done";
            expenseListHref1.Attributes["isdone"] = "1";
            expenseListHref2.Attributes["class"]  = "done";
            expenseListHref3.Attributes["class"]  = "selected";

            int _month;
            int _year = Year().HasValue ? Year().Value : 2017;

            if (int.TryParse(drpExpenseMonth.SelectedValue, out _month))
            {
                var estate = (Associations)Session[SessionConstants.SelectedAssociation];
                if (estate != null)
                {
                    var existingAssociationExpenses = AssociationExpensesManager.GetByMonthAndYearNotDisabled(estate.Id, _year, _month);
                    var existingAssociationExpensesIncludingDisabled = AssociationExpensesManager.GetAllAssociationExpensesByMonthAndYearIncludingDisabled(estate.Id, _year, _month);

                    foreach (TableRow row in tblMonthlyExpenses.Rows)
                    {
                        if (row != null && row.Cells.Count > 2 &&
                            row.Cells[0] != null && row.Cells[0].Controls.Count > 0 &&
                            row.Cells[0].Controls[0] != null)
                        {
                            if (row.Cells[0].Controls[0] is CheckBox && row.Cells[2].Controls[0] is DropDownList)
                            {
                                bool?cbExpensePerStaircase = null;

                                if (row.Cells.Count > 3 && row.Cells[3].Controls[0] is CheckBox)
                                {
                                    CheckBox cbStairCase = (CheckBox)row.Cells[3].Controls[0];
                                    cbExpensePerStaircase = cbStairCase.Checked;
                                }

                                CheckBox     cbExpenseSelect = (CheckBox)row.Cells[0].Controls[0];
                                DropDownList dpExpenseType   = (DropDownList)row.Cells[2].Controls[0];
                                int          expenseId       = 0;
                                if (int.TryParse(cbExpenseSelect.ID.Replace("esateExpense", ""), out expenseId))
                                {
                                    bool existingAssociationExpensesContainsItem           = existingAssociationExpenses.Select(esex => esex.Id_Expense).Contains(expenseId);
                                    bool existingAssociationExpensesContainsItemAsDisabled = existingAssociationExpensesIncludingDisabled
                                                                                             .Where(es => es.WasDisabled).Select(esex => esex.Id_Expense).Contains(expenseId);
                                    AssociationExpenses ee = null;

                                    // if selected and non existing in the prev. config
                                    if (cbExpenseSelect.Checked && existingAssociationExpensesContainsItemAsDisabled)
                                    {
                                        // enables it
                                        ee = AssociationExpensesManager.GetAssociationExpensesByMonthAndYearAndDisabled(estate.Id, expenseId, _year, _month);
                                        AssociationExpensesManager.MarkAssociationExpensesDisableProperty(ee, false, cbExpensePerStaircase);
                                    }
                                    else if (!cbExpenseSelect.Checked && existingAssociationExpensesContainsItem)
                                    {
                                        // disables it
                                        ee = AssociationExpensesManager.GetAssociationExpensesByMonthAndYearAndDisabled(estate.Id, expenseId, _year, _month, false);
                                        AssociationExpensesManager.MarkAssociationExpensesDisableProperty(ee, true, cbExpensePerStaircase);
                                    }
                                    else if (cbExpenseSelect.Checked && !existingAssociationExpensesContainsItem)
                                    {
                                        ee = AssociationExpensesManager.GetAssociationExpensesByMonthAndYearAndDisabled(expenseId, estate.Id, _year, _month);
                                        if (ee != null)
                                        {
                                            // disables it
                                            AssociationExpensesManager.MarkAssociationExpensesDisableProperty(ee, true, cbExpensePerStaircase);
                                        }
                                        else
                                        {
                                            // adds it
                                            AssociationExpensesManager.Add(estate.Id, expenseId, _month, _year, dpExpenseType.SelectedValue, false);
                                        }
                                    }

                                    ExpenseType selectedExpenseType;
                                    if (Enum.TryParse <ExpenseType>(dpExpenseType.SelectedValue, out selectedExpenseType))
                                    {
                                        if (ee == null)
                                        {
                                            ee = AssociationExpensesManager.GetAssociationExpense(estate.Id, expenseId, _year, _month);
                                        }
                                        if (ee == null)
                                        {
                                            continue;
                                        }

                                        if ((ExpenseType)ee.ExpenseTypes.Id != selectedExpenseType)
                                        {
                                            AssociationExpensesManager.UpdateAssociationExpenseType(ee, selectedExpenseType);
                                        }

                                        if (!ee.SplitPerStairCase.HasValue || ee.SplitPerStairCase.Value != cbExpensePerStaircase)
                                        {
                                            AssociationExpensesManager.MarkAssociationExpensesDisableProperty(ee, !cbExpenseSelect.Checked, cbExpensePerStaircase);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }

            if (Year() != null && Month() != null && step33.Visible)
            {
                Response.Redirect("~/Expenses/Invoices.aspx?year=" + Year() + "&month=" + Month());
            }
        }