// GET: PaymentRequests/Create public ActionResult Create() { GenerateProjectsList(); PaymentRequestEditModel model = new PaymentRequestEditModel() { Sum_Add = new double[100], UserName_Add = new string[100], type_Add = new PaymentRequestType[100] }; model.DepartmentId = 0; return(View("Create", model)); }
public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } PaymentRequest r = db.PaymentRequests.Find(id); if (r == null) { return(HttpNotFound()); } int p = r.AttachedFileName.IndexOf('_'); string fn = p > 0 ? r.AttachedFileName.Substring(p + 1, r.AttachedFileName.Length - p - 1) : r.AttachedFileName; var q1 = db.RequestHistories.Where(x => x.Request.PaymentRequestId == r.PaymentRequestId).ToList(); string text = ""; foreach (var item in q1) { text += item.WhenPosted.ToString("dd.MM.yyyy HH:mm") + ", " + item.Author.ShortName + ": <br/>"; text += item.Comments; text += "<hr/>"; } PaymentRequestEditModel edit = new PaymentRequestEditModel() { AttachFileName = fn, HistoryComments = text, type = r.SumType, PaymentRequestId = r.PaymentRequestId, AgreedPM = r.AgreedPM, ProjectName = r.Project.Name, Sum = r.TimesOrSum, UserName = r.RecipientUser.FullName, ProjectCode = PaymentRequestEditModel.getProjectCode(r.Project.Name), ProjectShortName = PaymentRequestEditModel.getProjectShortName(r.Project.Name) }; GenerateProjectsList(); return(View(edit)); }
// GET: RegularPayments/Edit/5 public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } RegularPayment regularPayment = db.RegularPayments.Find(id); if (regularPayment == null) { return(HttpNotFound()); } RegularPaymentEditModel model = new RegularPaymentEditModel() { RegularPaymentId = regularPayment.RegularPaymentId, Sum = regularPayment.Sum, UserName = regularPayment.RecipientUser.FullName, PayoutFrom = regularPayment.PayoutFrom, PayoutTo = regularPayment.PayoutTo, ProjectCode = PaymentRequestEditModel.getProjectCode(regularPayment.Project.Name), ProjectShortName = PaymentRequestEditModel.getProjectShortName(regularPayment.Project.Name) }; return(View(model)); }
public ActionResult HistoryComments(int?id) { PaymentRequestEditModel edit = new PaymentRequestEditModel(); if (id == null) { edit.HistoryComments = "Нет комментариев"; } else { var q1 = db.RequestHistories.Where(x => x.Request.PaymentRequestId == id).ToList(); string text = ""; foreach (var item in q1) { text += item.WhenPosted.ToString("dd.MM.yyyy HH:mm") + ", " + item.Author.ShortName + ": <br/>"; text += item.Comments; text += "<hr/>"; } edit.HistoryComments = text == "" ? "Нет комментариев" : text; } return(PartialView("HistoryComments", edit)); //return View(edit); //return Json(edit, JsonRequestBehavior.AllowGet); }
public ActionResult Edit(PaymentRequestEditModel input) { if (ModelState.IsValid) { var currentUser = manager.FindById(User.Identity.GetUserId()); Project prj = db.Projects.SingleOrDefault(x => x.Name.Trim() == input.ProjectName.Trim()); ApplicationUser recipient = db.Users.SingleOrDefault(x => x.FullName == input.UserName); PaymentRequest request = db.PaymentRequests.Find(input.PaymentRequestId); if (request != null) { string pre_fileName = !String.IsNullOrEmpty(request.AttachedFileName) ? System.IO.Path.Combine(Server.MapPath("~/App_Data/Uploads"), request.AttachedFileName) : ""; if ((pre_fileName != "") && input.DeleteAttachedFile) { System.IO.File.Delete(pre_fileName); } string fileName = input.File != null ? Environment.TickCount + "_" + System.IO.Path.GetFileName(input.File.FileName) : ""; if (fileName != "") { try { if (pre_fileName != "") { System.IO.File.Delete(pre_fileName); } var path = System.IO.Path.Combine(Server.MapPath("~/App_Data/Uploads"), fileName); input.File.SaveAs(path); } catch (Exception e) { ModelState.AddModelError("", "Ошибка загрузки файла " + e.Message); GenerateProjectsList(); return(View(input)); } } if (recipient != null) { if (prj == null) { Department dept = db.Departments.SingleOrDefault(x => x.Boss.Id == currentUser.Id); if (dept == null) { ModelState.AddModelError("", "Пользователь не РП "); GenerateProjectsList(); return(View(input)); } prj = db.Projects.Add(new Project() { Department = dept, Name = input.ProjectName }); } request.AttachedFileName = fileName; request.SumType = input.type; request.RecipientUser = recipient; request.AgreedPM = input.AgreedPM; request.TimesOrSum = request.SumType == PaymentRequestType.Times ? input.Sum : PaymentRequest.RoundSum(input.Sum); request.Project = prj; if (!manager.IsInRole(currentUser.Id, SalaryRoles.Directors)) { request.RequestState = input.SetStateWaitConfirm ? PaymentRequestState.WaitConfirm : PaymentRequestState.InProcess; } else { request.RequestState = input.SetStateCredited ? PaymentRequestState.Confirmed : PaymentRequestState.WaitConfirm; } if (request.RequestState == PaymentRequestState.WaitConfirm) { SendMailToDirector(request.AppointedUser.ShortName, request.Project.Name); } if (!String.IsNullOrEmpty(input.Comments)) { db.RequestHistories.Add(new RequestHistory() { WhenPosted = DateTime.Now, Comments = input.Comments, Author = currentUser, Request = request }); } db.SaveChanges(); return(RedirectToAction("Index")); } } } GenerateProjectsList(); ModelState.AddModelError("", "Ошибка ввода"); return(View(input)); }
public ActionResult Create(PaymentRequestEditModel input) { if (ModelState.IsValid) { Project prj = ProjectFind(db, input.ProjectCode, input.ProjectShortName); if ((input.ProjectCode != null && input.ProjectShortName != null) || prj != null) { input.ProjectName = input.ProjectCode + "_" + input.ProjectShortName; var currentUser = manager.FindById(User.Identity.GetUserId()); ApplicationUser recipient = db.Users.SingleOrDefault(x => x.FullName == input.UserName); bool exists = System.IO.Directory.Exists(Server.MapPath("~/App_Data")); if (!exists) { System.IO.Directory.CreateDirectory(Server.MapPath("~/App_Data")); System.IO.Directory.CreateDirectory(Server.MapPath("~/App_Data/Uploads")); } else { if (!System.IO.Directory.Exists(Server.MapPath("~/App_Data/Uploads"))) { System.IO.Directory.CreateDirectory(Server.MapPath("~/App_Data/Uploads")); } } string fileName = input.File != null ? Environment.TickCount + "_" + System.IO.Path.GetFileName(input.File.FileName) : ""; if (fileName != "") { try { var path = System.IO.Path.Combine(Server.MapPath("~/App_Data/Uploads"), fileName); input.File.SaveAs(path); } catch (Exception e) { ModelState.AddModelError("", "Ошибка загрузки файла " + e.Message); GenerateProjectsList(); return(View(input)); } } if (recipient != null) { if (prj == null) { var res = (from d in db.Departments select d); if (!manager.IsInRole(currentUser.Id, SalaryRoles.Directors)) { res = res.Where(d => d.Boss.Id == currentUser.Id || d.Assistant.Id == currentUser.Id); } var depts = res.ToList(); Department dept = null; if (depts.Count == 0 && !manager.IsInRole(currentUser.Id, "Directors")) { ModelState.AddModelError("", "Пользователь не имеет прав добавлять проекты "); GenerateProjectsList(); return(View(input)); } else if (depts.Count == 0 && manager.IsInRole(currentUser.Id, "Directors")) { dept = db.Departments.SingleOrDefault(x => x.Name == "_Резерв"); if (dept == null) { dept = db.Departments.Add(new Department { Name = "_Резерв", Boss = currentUser }); db.SaveChanges(); dept = db.Departments.SingleOrDefault(x => x.Name == "_Резерв"); } } else if (depts.Count > 0) { dept = depts.FirstOrDefault(x => x.DepartmentId == input.DepartmentId); if (dept == null) { ModelState.AddModelError("", "Неверно задано направление "); GenerateProjectsList(); return(View(input)); } } prj = db.Projects.Add(new Project() { Department = dept, Name = input.ProjectName }); db.SaveChanges(); } PaymentRequest r = new PaymentRequest() { SumType = input.type, TimesOrSum = input.type == PaymentRequestType.Times ? input.Sum : PaymentRequest.RoundSum(input.Sum), AgreedPM = input.AgreedPM, Project = prj, AttachedFileName = fileName, AppointedUser = currentUser, RecipientUser = recipient, }; if (manager.IsInRole(currentUser.Id, SalaryRoles.Managers) || manager.IsInRole(currentUser.Id, SalaryRoles.Assistant)) { r.RequestState = input.SetStateWaitConfirm ? PaymentRequestState.WaitConfirm : PaymentRequestState.InProcess; // шлем почту если надо if (r.RequestState == PaymentRequestState.WaitConfirm) { SendMailToDirector(r.AppointedUser.ShortName, r.Project.Name); } } else if (manager.IsInRole(currentUser.Id, "Directors")) { r.RequestState = input.SetStateCredited ? PaymentRequestState.Confirmed : PaymentRequestState.WaitConfirm; } r = db.PaymentRequests.Add(r); if (!String.IsNullOrEmpty(input.Comments)) { db.RequestHistories.Add(new RequestHistory() { WhenPosted = DateTime.Now, Comments = input.Comments, Author = currentUser, Request = r }); } db.SaveChanges(); for (int i = 0; i < input.UserName_Add.Length; i++) { if (!string.IsNullOrEmpty(input.UserName_Add[i]) && input.Sum_Add[i] > 0) { string str = input.UserName_Add[i]; ApplicationUser recipient1 = db.Users.SingleOrDefault(x => x.FullName == str); if (recipient1 != null) { PaymentRequest r1 = new PaymentRequest() { AgreedPM = input.AgreedPM, Project = r.Project, AttachedFileName = r.AttachedFileName, AppointedUser = r.AppointedUser, RequestState = r.RequestState, RecipientUser = recipient1, SumType = input.type_Add[i], TimesOrSum = input.type_Add[i] == PaymentRequestType.Times ? input.Sum_Add[i] : PaymentRequest.RoundSum(input.Sum_Add[i]) }; db.PaymentRequests.Add(r1); db.SaveChanges(); } } } return(RedirectToAction("Index")); } else { ModelState.AddModelError("", "Сотрудник не найден или не задано поле Кому"); } } else { ModelState.AddModelError("", "Не задано поле Шифр и/или Название"); } } ModelState.AddModelError("", "Ошибка ввода"); GenerateProjectsList(); return(View(input)); }