public IActionResult GetBudgetLimitData([FromQuery] int costSubItemtID, [FromQuery()] int departmentID, [FromQuery] int year, [FromQuery] int month, [FromQuery] int?projectID = null) { var data = _budgetLimitService.GetLimitData(costSubItemtID, departmentID, projectID, year, month); return(Ok(new ServiceResultDTO <Limit> { Result = data })); }
public ActionResult Create(BudgetLimit budgetLimit) { if (ModelState.IsValid) { try { var limitDto = _budgetLimitService.GetLimitData(budgetLimit.CostSubItemID.Value, budgetLimit.DepartmentID.Value, budgetLimit.ProjectID, budgetLimit.Year.Value, budgetLimit.Month.Value); budgetLimit.LimitAmountApproved = limitDto.LimitAmountReserved; budgetLimit.FundsExpendedAmount = limitDto.LimitAmountActuallySpent; } catch (Exception ex) { budgetLimit.LimitAmountApproved = null; budgetLimit.FundsExpendedAmount = null; } _budgetLimitService.Add(budgetLimit); return(RedirectToAction("Index")); } SetViewBag(budgetLimit); return(View(budgetLimit)); }
private LongRunningTaskReport ImportBudgetLimitRecords(DataTable budgetLimitTable, int year, bool onlyValidate, string[] execludedColumns) { LongRunningTaskReport report = new LongRunningTaskReport("Отчет о загрузке данных о лимитах за месяц", ""); Dictionary <string, int> mounthDict = GetMounth(); double countRow = budgetLimitTable.Rows.Count; for (int i = 0; i < budgetLimitTable.Rows.Count; i++) { int percent = i == 0 ? 1 : (int)((i / countRow) * 100); SetStatus(percent, "Обработано данных"); var row = budgetLimitTable.Rows[i]; var section = row["Section"].ToString(); if (!section.Trim().ToLower().Equals("цфо", StringComparison.OrdinalIgnoreCase)) { continue; } var costSubItemShortName = row["CostSubItemShortName"].ToString(); var departmentShortTitle = row["DepartmentShortTitle"].ToString(); BudgetLimit[] budgetLimitArrayFromDataTable = Deserialize(row, mounthDict, year); foreach (var budgetLimit in budgetLimitArrayFromDataTable) { var results = _budgetLimitService .Get(query => query .Where(b => b.Month == budgetLimit.Month && b.Year == budgetLimit.Year && b.CostSubItem.ShortName.Equals(costSubItemShortName.Trim(), StringComparison.OrdinalIgnoreCase) && b.Department.ShortTitle.Equals(departmentShortTitle.Trim(), StringComparison.OrdinalIgnoreCase)) .ToList()); if (results.Count == 0) // добавляем { var costSubItem = _costSubItemService.Get(query => query.Where(c => c.ShortName.Equals(costSubItemShortName.Trim(), StringComparison.OrdinalIgnoreCase)).ToList()).FirstOrDefault(); if (costSubItem == null) { if (!onlyValidate) { report.AddReportEvent($"Не удалось добавить лимит: {budgetLimit.LimitAmount}, на месяц: {CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(budgetLimit.Month.Value)}, не найдена подстатья: {costSubItemShortName}"); } else { report.AddReportEvent($"Не найдена подстатья: {costSubItemShortName}, для лимита: {budgetLimit.LimitAmount}, на месяц: {CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(budgetLimit.Month.Value)}"); } continue; } var department = _departmentService.Get(query => query.Where(d => d.ShortTitle.Equals(departmentShortTitle.Trim(), StringComparison.OrdinalIgnoreCase)).ToList()).FirstOrDefault(); if (department == null) { if (!onlyValidate) { report.AddReportEvent($"Не удалось добавить лимит: {budgetLimit.LimitAmount}, на месяц: {CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(budgetLimit.Month.Value)}, не найдено подразделение: {departmentShortTitle}"); } else { report.AddReportEvent($"Не найдено подразделение: {departmentShortTitle}, для лимита: {budgetLimit.LimitAmount}, на месяц: {CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(budgetLimit.Month.Value)}"); } continue; } budgetLimit.CostSubItemID = costSubItem.ID; budgetLimit.DepartmentID = department.ID; if (!onlyValidate) { var limitDto = _budgetLimitService.GetLimitData(budgetLimit.CostSubItemID.Value, budgetLimit.DepartmentID.Value, budgetLimit.ProjectID, budgetLimit.Year.Value, budgetLimit.Month.Value); if (limitDto != null) { budgetLimit.LimitAmountApproved = limitDto.LimitAmountReserved; budgetLimit.FundsExpendedAmount = limitDto.LimitAmountActuallySpent; } else { budgetLimit.LimitAmountApproved = 0; budgetLimit.FundsExpendedAmount = 0; } _budgetLimitService.Add(budgetLimit); report.AddReportEvent($"Добавлен лимит: {budgetLimit.LimitAmount}, на месяц: {CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(budgetLimit.Month.Value)}, подстатья: {costSubItemShortName}, подразделение: {departmentShortTitle}"); } else { report.AddReportEvent($"Лимит еще не создан: {budgetLimit.LimitAmount}, на месяц: {CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(budgetLimit.Month.Value)}, подстатья: {costSubItemShortName}, подразделение: {departmentShortTitle}"); } } else // обновляем { if (!onlyValidate) { var budgetLimitFromDB = results.FirstOrDefault(); decimal?limitAmountOldValue = budgetLimitFromDB.LimitAmount; if (budgetLimitFromDB.LimitAmount != budgetLimit.LimitAmount.Value) { budgetLimitFromDB.LimitAmount = budgetLimit.LimitAmount.Value; _budgetLimitService.Update(budgetLimitFromDB); report.AddReportEvent($"Обновлен лимит: {budgetLimit.LimitAmount}, (старое значение: {limitAmountOldValue}), месяц: {CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(budgetLimit.Month.Value)}, подстатья: {costSubItemShortName}, подразделение: {departmentShortTitle}"); } else { report.AddReportEvent($"Не изменилось значение лимита: {budgetLimit.LimitAmount}, месяц: {CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(budgetLimit.Month.Value)}, подстатья: {costSubItemShortName}, подразделение: {departmentShortTitle}"); } } else { report.AddReportEvent($"Найден лимит: {results.FirstOrDefault().LimitAmount}, (новое значение: {budgetLimit.LimitAmount}), месяц: {CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(budgetLimit.Month.Value)}, подстатья: {costSubItemShortName}, подразделение: {departmentShortTitle}"); } } } } return(report); }