public ActionResult AddPaymentLine(PG_ListViewModel input) { IsAddPaymentLine = true; PaymentsGroup g = db.PaymentsGroups.Find(input.Header.PaymentsGroupId); if (g != null) { if (!string.IsNullOrEmpty(input.NewUserPaymentName) && input.NewUserPaymentProject != null && input.NewUserPaymenSum != null) { var b = db.UserBalances.SingleOrDefault(x => x.User.FullName == input.NewUserPaymentName && x.Project.ProjectId == input.NewUserPaymentProject); if (b != null) { var pm = g.UsersPayments.FirstOrDefault(x => x.Project.ProjectId == input.NewUserPaymentProject); if (pm == null) { if (b.Sum >= (int)input.NewUserPaymenSum && (int)input.NewUserPaymenSum != 0) { UserPayment p = new UserPayment() { User = b.User, Project = b.Project, Sum = (double)input.NewUserPaymenSum, PaymentGroup = db.PaymentsGroups.Find(input.Header.PaymentsGroupId) }; db.UserPayments.Add(p); db.SaveChanges(); input = getPG_ListsViewModel(input.Header.PaymentsGroupId); } else { ModelState.AddModelError("", "Ошибка, сумма платежа превышает баланс или равна нулю"); input.NewUserPaymentName = ""; return(View("Edit", input)); } } else { ModelState.AddModelError("", "Ошибка, выплата по проекту уже есть в ведомости"); input.NewUserPaymentName = ""; return(View("Edit", input)); } } else { ModelState.AddModelError("", "Ошибка, нет выплат по проекту"); input.NewUserPaymentName = ""; return(View("Edit", input)); } } } input.NewUserPaymentName = ""; return(Edit(input)); }
// GET: PaymentsGroups/Delete/5 public ActionResult Delete(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } PG_ListViewModel model = getPG_ListsViewModel(id); if (model == null) { return(HttpNotFound()); } return(View(model)); }
public ActionResult Details(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } db.UserPayments.RemoveRange(db.UserPayments.Where(x => x.PaymentGroup.PaymentsGroupId == id && x.Sum == 0)); PG_ListViewModel model = getPG_ListsViewModel(id); if (model == null) { return(HttpNotFound()); } return(View(model)); }
PG_ListViewModel getPG_ListsViewModel(PaymentsGroup paymentsGroup) { PG_ListViewModel model = new PG_ListViewModel(); model.Header = getPG_HeaderViewModel(paymentsGroup); model.ProjectNames = new string[model.Header.UserIds.Length][]; model.ProjectIds = new int[model.Header.UserIds.Length][]; model.Header.Payments = new double[model.Header.UserIds.Length][]; model.Header.RegularPayments = new double[model.Header.UserIds.Length][]; model.Balances = new double[model.Header.UserIds.Length][]; for (int i = 0; i < model.Header.UserNames.Length; i++) { var list = paymentsGroup.UsersPayments.Where(x => x.User.Id == model.Header.UserIds[i]).ToList(); model.ProjectNames[i] = new string[list.Count]; model.ProjectIds[i] = new int[list.Count]; model.Header.Payments[i] = new double[list.Count]; model.Header.RegularPayments[i] = new double[list.Count]; model.Balances[i] = new double[list.Count]; for (int j = 0; j < list.Count; j++) { model.ProjectNames[i][j] = list[j].Project.Name; model.ProjectIds[i][j] = list[j].Project.ProjectId; model.Header.Payments[i][j] = list[j].Sum - list[j].RegularPaymentSum; model.Header.RegularPayments[i][j] = list[j].RegularPaymentSum; } for (int j = 0; j < model.ProjectIds[i].Length; j++) { string uid = model.Header.UserIds[i]; int pid = model.ProjectIds[i][j]; var b = db.UserBalances.FirstOrDefault(x => x.User.Id == uid && x.Project.ProjectId == pid); model.Balances[i][j] = b == null ? 0 : b.Sum; } } model.NewUserPaymentName = ""; model.NewUserPaymenSum = null; return(model); }
public ActionResult SaveEdit(PG_ListViewModel input) { if (input != null) { if (input.Header != null) { Edit(input); db.UserPayments.RemoveRange(db.UserPayments.Where(x => x.PaymentGroup.PaymentsGroupId == input.Header.PaymentsGroupId && x.Sum == 0)); db.SaveChanges(); if (PG_EditErrors.Count == 0 && input.Header.State == PaymentsGroupState.PaidOut) { return(RedirectToAction("Index")); } else { return(View(input)); } } } ModelState.AddModelError("", "Неверный запрос"); return(View("Edit", input)); }
// GET: PaymentsGroups/Edit/5 public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } db.UserPayments.RemoveRange(db.UserPayments.Where(x => x.PaymentGroup.PaymentsGroupId == id && x.Sum == 0)); db.SaveChanges(); PG_ListViewModel model = getPG_ListsViewModel(id); if (model == null) { return(HttpNotFound()); } if (PG_EditErrors == null) { PG_EditErrors = new List <string>(); } PG_EditErrors.Clear(); model.Header.ShowEditable = true; return(View("Edit", model)); }
public ActionResult Edit(PG_ListViewModel model) { PG_EditErrors.Clear(); bool was_apply = false; bool has_error = false; if (ModelState.IsValid) { PaymentsGroup paymentsGroup = db.PaymentsGroups.Find(model.Header.PaymentsGroupId); if (paymentsGroup != null) { for (int i = 0; i < model.Header.UserIds.Length; i++) { ApplicationUser user = db.Users.Find(model.Header.UserIds[i]); if (user != null) { for (int j = 0; j < model.ProjectIds[i].Length; j++) { UserBalance user_b = user.UserBalances.FirstOrDefault(x => x.Project.ProjectId == model.ProjectIds[i][j]); UserPayment user_p = paymentsGroup.UsersPayments.FirstOrDefault(x => x.Project.ProjectId == model.ProjectIds[i][j] && x.User.Id == model.Header.UserIds[i]); if (user_b == null) { user_b = db.UserBalances.Add(new UserBalance() { Project = db.Projects.Find(model.ProjectIds[i][j]), Sum = 0, User = user }); db.SaveChanges(); } if (user_b != null && user_p != null) { if (user_b.Sum >= model.Header.Payments[i][j]) { if (model.Header.State == PaymentsGroupState.PaidOut) { user_b.Sum -= model.Header.Payments[i][j]; } user_p.Sum = model.Header.Payments[i][j] + model.Header.RegularPayments[i][j]; user_p.RegularPaymentSum = model.Header.RegularPayments[i][j]; was_apply = true; } else { has_error = true; PG_EditErrors.Add("Сумма платежа первышает остаток, Пользователь " + model.Header.UserNames[i] + " Проект " + model.ProjectNames[i][j]); } } } } else { has_error = true; PG_EditErrors.Add("Пользователь " + model.Header.UserNames[i] + " не найден"); } } if (was_apply && !has_error) { var UserManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(db)); string uid = User.Identity.GetUserId(); ApplicationUser admin = db.Users.FirstOrDefault(x => x.Id == uid); if (model.Header.State == PaymentsGroupState.PaidOut) { paymentsGroup.UserClosed = admin; paymentsGroup.State = PaymentsGroupState.PaidOut; paymentsGroup.WhenPaidOut = DateTime.Now; // создаем список рассылки foreach (var p in paymentsGroup.UsersPayments) { db.JobForMailings.Add(new JobForMailing() { UserPayment = p }); } HostingEnvironment.QueueBackgroundWorkItem(cancellationToken => new MailSendWorker().SendPaidOut(cancellationToken)); } db.SaveChanges(); foreach (var err in PG_EditErrors) { ModelState.AddModelError("", err); } if (IsAddPaymentLine) { return(RedirectToAction("Edit/" + model.Header.PaymentsGroupId)); } else { return(RedirectToAction("Index")); } } else { if (!was_apply) { PG_EditErrors.Add("В счете не найдено корректных платежей"); } } } else { ModelState.AddModelError("", "Счет не найден, id=" + model.Header.PaymentsGroupId); } } else { ModelState.AddModelError("", "Ошибка ввода "); } if (!was_apply || has_error) { foreach (var err in PG_EditErrors) { ModelState.AddModelError("", err); } } return(View(model)); }